ওয়ানড্রাইভ বিজনেস / অফিস 365 লিনাক্সে কীভাবে সিঙ্ক করবেন?


24

মাইক্রোসফ্ট ওয়ানড্রাইভ বিজনেস / অফিস 365 প্রো 1 টিবি ক্লাউড স্টোরেজ সরবরাহ করে তবে দুর্ভাগ্যক্রমে লিনাক্সে এটি সিঙ্ক করার কোনও পদ্ধতি কখনও হয়নি।


2
উবুন্টুকে জিজ্ঞাসা করুন স্বাগতম ! আমরা একটি প্রশ্নোত্তর সাইট, কোনও ফোরাম নয়। বর্তমানে আপনার মনোনীত প্রশ্ন বিভাগে একটি প্রশ্ন এবং উত্তর উভয়ই রয়েছে। দয়া করে সম্পাদনা উত্তর এবং পোস্ট যে নীচে উত্তর বিভাগে (সেখানে পৃষ্ঠার নীচের অংশে অবস্থিত কাছাকাছি একটি বাটন হওয়া উচিত) মুছে দেবার জন্য আপনার পোস্ট। ধন্যবাদ!
শেঠ

উত্তর:


7

বর্তমানে পরীক্ষামূলক অনড্রাইভ-ডি হ'ল একটি ওপেন সোর্স প্রোগ্রাম যা মাইক্রোসফ্ট শেয়ারপয়েন্ট লিঙ্কগুলি গ্রহণ না করে কেবল ব্যক্তিগত ওয়ানড্রাইভ অ্যাকাউন্টগুলিকে সিঙ্ক করতে পারে। লিনাক্সের জন্য গুডসাইঙ্ক ব্যবহার করে ওয়ানড্রাইভ বিজনেস / অফিস 365 সিঙ্ক করার একটি পদ্ধতি এখানে দেওয়া হয়েছে , যা ব্যক্তিগত ব্যবহারের জন্য বিনামূল্যে।

  1. আপনার লিনাক্স মেশিনে উপযুক্ত সংস্করণ ইনস্টল করুন যেমন:

    ./goodsync-linux-x86_64-release.run
    

    গুডসাইঙ্ক সংযোগ সেটআপ এবং জিএস সার্ভার ওয়েব ইউআই উভয়ের জন্য এন ও দ্বারা উত্তর দিন ।

  2. একটি ওয়েব ব্রাউজারে ওয়ানড্রাইভ খুলুন। ডান নীচের দিকে "ক্লাসিক ওয়ানড্রাইভ এ ফিরে" নির্বাচন করুন।
  3. আপনার ব্রাউজারে ওয়েব ঠিকানাটি এখন দেখতে কেমন হবে: https://xxxxxxx.sharepoint.com/xxxxxxxxxxx/Documents/Forms/All.aspxএবং ভিত্তি করে এটি আপনার পেতে সিঙ্ক লিংক যা হবে office365://xxxxxxx.sharepoint.com/xxxxxxxxxxx/Documents
  4. আপনার বাড়িতে .goodsync সাবফোল্ডারে একটি নতুন ফাইল তৈরি করুন:

    gedit ~/.goodsync/jobs.tix
    
  5. ফাইলটিতে নিম্নলিখিত কোডটি প্রবেশ করান এবং এটি সংরক্ষণ করুন:

    <Job>
    Name = "OneDrive_Sync"
    Side1 = <SideOptions>
    Dir = <Connect>
        Url = "put_your_syncing_link_here"
        UserID = "put_your_OneDrive/Office365_Bussiness_email_here"
    </Connect>
    </SideOptions>
    Side2 = <SideOptions>
    Dir = <Connect>
        Url = "file:///your_home_folder/one_drive_folder"
    </Connect>
    </SideOptions>
    Direction = 0
    ExcludeHidden = No
    ExcludeSystem = No
    DetectMovesAndRenames = Yes
    LinksOption = 1
    ExcludeEmptyFolders = No
    LimitChangesPercent = 100
    AutoResolveConflicts = 3
    DetectMovesAndRenames = Yes
    </Job>
    
  6. সিঙ্ক প্রক্রিয়া শুরু করুন:

    gsync sync "OneDrive_Sync"
    
  7. এই পদক্ষেপে আপনার ওয়েব ব্রাউজার ওয়ানড্রাইভ / অফিস 365 পৃষ্ঠা খুলবে এবং আপনার অ্যাকাউন্টে অ্যাক্সেসের অনুমতি দেয়ার জন্য আপনার অনুমোদনের জন্য বলবে। আপনার শংসাপত্র প্রবেশের পরে সিঙ্কিং শুরু হবে।

সীমাবদ্ধতা: মাইক্রোসফ্ট 270 অক্ষরের বেশি দৈর্ঘ্যের ইউআরএল অনুরোধগুলিকে অনুমতি দেয় না এবং তাই গুডসাইঙ্ক দীর্ঘ পথের নামের সাথে ফাইলগুলি সিঙ্ক করতে পারে না।

উপভোগ করুন!


3
আমার ওয়েব ব্রাউজারটি step ধাপে অনুমোদনের পৃষ্ঠাটি খুলবে না এটি ম্যানুয়ালি কীভাবে করবেন তা সম্পর্কে কোনও ধারণা?
প্যাট-এস

3
আমার ওয়েব ব্রাউজারটি লগইন করতেও খোলা নেই
হাহা টিটিপ্রো

2
Office365 এ ফাইল সিস্টেম: /.../ ডকুমেন্টগুলি নতুন ওয়ানড্রাইভ ভি 2 এপিআই দ্বারা প্রতিস্থাপিত হয়েছে। আপনার ওয়ানড্রাইভ সিঙ্ক ফোল্ডারে পুনরায় ব্রাউজ করতে ব্রাউজ বোতামটি ক্লিক করুন, যেহেতু নতুন ওয়ানড্রাইভের জন্য ব্রাউজার-ভিত্তিক প্রমাণীকরণ প্রয়োজন (OAuth2)
ফেরোও

6

উবুন্টু 18.04 এবং তারপরে

উবুন্টু 18.04 এর পরে ডিফল্ট উবুন্টু সংগ্রহস্থলে ওয়ানড্রাইভ ক্লায়েন্ট রয়েছে। ওয়ানড্রাইভ হ'ল মাইক্রোসফ্টের ক্লাউড স্টোরেজ সিস্টেম। এই প্যাকেজটি কমান্ড লাইন ক্লায়েন্টকে ওয়ানড্রাইভ ক্লাউড স্টোরেজের সাথে সিঙ্ক্রোনাইজ করার ক্ষেত্রে বিশেষীকরণ সরবরাহ করে।

এটি দিয়ে এটি ইনস্টল করুন:

sudo apt install onedrive

প্রথম দৌড়ে, এটি আপনাকে একটি লিঙ্কের সাথে প্রমাণীকরণ করতে বলে। প্রমাণীকরণের পরে আপনি systemctl --user enable onedriveএবং এর সাথে ডিমনটি সক্ষম করতে পারেন systemctl --user start onedrive। ম্যানপেজে আরও ব্যাখ্যা পাওয়া যাবে man onedrive। এটি সেটআপ করা খুব সহজ, এবং এটি প্রায় পাঁচ মিনিট সময় নেয়।


4
এটি ওয়ানড্রাইভ ফর
বিজনেসের

1
@ ত্রিকাশ এটি অফিস 365 প্রো
ম্যাটটিয়া_98

2

যদিও onedrivedজাইবু দ্বারা মূল এবং সাধারণভাবে ব্যবহৃত সরঞ্জাম এখনও ব্যবসায়ের জন্য ওয়ানড্রাইভ সমর্থন করে না, তবে কেবল ব্যক্তিগত ওয়ানড্রাইভগুলি। যাইহোক, গিটহাবের ডেরিক্স060 দ্বারা এই প্রকল্পের একটি কাঁটাচামচ রয়েছে যা ব্যবসায় ক্লায়েন্টের জন্য কোনওভাবে কাজ করছে (তবে এখনও বগি) বাস্তবায়ন করেছে।

সতর্কতা: আপনি যখন এই পদ্ধতিটি ব্যবহার করেন তখন আমি সর্বদা https://www.office.com এ অনলাইনে পরীক্ষা করে ফাইলগুলি সঠিকভাবে সিঙ্ক্রোনাইজ হয়ে গেছে এবং / অথবা এই পৃষ্ঠার শেষে প্রদর্শিত আমার মোড়ক স্ক্রিপ্টটি ব্যবহার করে যাচাই করার পরামর্শ দিচ্ছি always কমপক্ষে ডেস্কটপ বিজ্ঞপ্তিগুলি ব্যবহার করে কোনও ত্রুটি সম্পর্কে অবহিত হতে!

কখনও কখনও অ্যানড্রাইভ করা আপনার ওয়ানড্রাইভকে একটি (আংশিক) অযৌক্তিক অবস্থায় ফেলে রেখে কিছু পরিবর্তন বাছাই করতে বা সঠিকভাবে আপলোড করতে ব্যর্থ হয়। এটি এমনও হতে পারে যে এটি কোনও কারণে নিজের সাথে মার্জ সংঘাত তৈরি করে এবং স্থানীয়ভাবে আপনার হোস্টের নাম বন্ধনীতে এবং বিকল্পভাবে একটি সংখ্যায় যুক্ত করে আপনার ফাইলগুলির নাম পরিবর্তন করে name দুর্ভাগ্যক্রমে ত্রুটি সম্পর্কে কোনও বিজ্ঞপ্তি নেই, তবে আপনি আপনার লগফাইলে প্রবেশগুলি দেখতে পাবেন।

যদি এটি ঘটে থাকে তবে আপনি এটিকে আবার স্পর্শ করে বা তাদের নাম পরিবর্তন করে বা তারা যে ফোল্ডারে রয়েছেন তা পুনরায় সংযুক্ত করার চেষ্টা করতে পারেন।

টিপ: মনে হচ্ছে অন্ড্রিভড লাইব্রেরিতে প্রায়শই ওয়ানড্রাইভ রুটে সরাসরি সংরক্ষণ করা ফাইলগুলির ক্ষেত্রে সমস্যা হয় has সমস্ত ফাইলগুলি সরাসরি ওয়ানড্রাইভ ফোল্ডারে ডাম্প করার পরিবর্তে সাব-ডিরেক্টরিতে রেখে দেওয়া ভাল।

যদিও এটি নির্বোধ শোনায়, আমি এটিও লক্ষ্য করেছি যে এটি ওয়ানড্রাইভ ওয়েব ক্লায়েন্টের মাধ্যমে ফাইলগুলি আপলোড করতে কম সমস্যার সৃষ্টি করেছে এবং সেগুলি তৈরি বা অনুলিপি / সরিয়ে নিয়ে আপনার স্থানীয় ফোল্ডারে (যা বেশ কয়েক মিনিট সময় নিতে পারে) সিক্রোনাইজ না হওয়া পর্যন্ত অপেক্ষা করুন seems স্থানীয়ভাবে। এটি বাস্তব বা সম্পূর্ণরূপে ওয়ানড্রাইভের উদ্দেশ্যটিকে বাতিল করে দেয় তা আপনার নিজের সিদ্ধান্ত অবধি ...

সম্পূর্ণ ইনস্টলেশন নির্দেশাবলীর জন্য প্রকল্পের রিডমি ফাইলটি দেখুন তবে এখানে একটি সংক্ষিপ্তসার দেওয়া হল:

স্থাপন

  1. আপনার onedrived(বা onedrive-d) এর অন্য কোনও সংস্করণ ইনস্টল করা নেই তা নিশ্চিত করুন ।

  2. নির্ভরতা প্যাকেজ ইনস্টল করুন:

    sudo apt install build-essential python3-dev libssl-dev inotify-tools python3-dbus libdbus-1-dev libdbus-glib-1-dev
    
  3. ngrokলিনাক্সের জন্য সর্বশেষতম ক্লায়েন্টটি https://ngrok.com/download এ অফিসিয়াল ওয়েবসাইট থেকে ডাউনলোড করুন । ngrok-clientউবুন্টু ভান্ডার থেকে প্যাকেজ খুব বেশি পুরানো এবং প্রয়োজনীয়তা পূরণ করে না।
    ডাউনলোড করা ngrok-stable-linux-amd64.zipসংরক্ষণাগারটি আনপ্যাক করুন । এটি একটি একক রয়েছে ngrokযা আপনি আপনার টি স্থানের রাখা উচিত বাইনারি, $PATHমধ্যে, যেমন /usr/local/bin/
    এনগ্রোক-এ সাইন আপ করা সম্ভবত প্রয়োজনীয় নয়।

  4. onedrivedগিটহাব থেকে পাইথন 3 অ্যাপ্লিকেশনটি ইনস্টল করুন pip3:

    sudo -H pip3 install git+https://github.com/derrix060/onedriveClient.git
    
  5. Logচ্ছিকভাবে একটি লগফিলের অবস্থান কনফিগার করুন onedrived, যেখানে কোনও সমস্যা সঠিকভাবে কাজ না করা উচিত যদি আপনি সমস্যাগুলি পরীক্ষা করতে পারেন, যেমন:

    onedrived-pref config set logfile_path ~/.config/onedrived/onedrived.log
    

অ্যাকাউন্ট সেটআপ এবং ড্রাইভ কনফিগারেশন

ইনস্টলেশন সফল হওয়ার পরে, আপনাকে আপনার অ্যাকাউন্ট এবং ড্রাইভগুলি কনফিগার করতে হবে:

  1. চালিয়ে ইন্টারেক্টিভ মোড ব্যবহার করে আপনার ওয়ানড্রাইভ ফর বিজনেস অ্যাকাউন্ট যুক্ত করুন:

    onedrived-pref account add -b
    

    ইন্টারেক্টিভ উইজার্ড আপনাকে আপনার ব্রাউজারে একটি লিঙ্ক খোলার জন্য দুবার জিজ্ঞাসা করবে, যেখানে আপনাকে আপনার মাইক্রোসফ্ট ব্যবসায় অ্যাকাউন্টের মাধ্যমে অ্যাপ্লিকেশনটি অনুমোদন করতে হবে।
    এটি আপনাকে ইন্টারেক্টিভ উইজার্ডে অনুমোদনের বিষয়টি নিশ্চিত করার পরে আপনাকে যে URL টি পুনঃনির্দেশিত করা হবে তা আটকানোর জন্য জিজ্ঞাসা করবে। কমান্ড আপনাকে যা বলেছে ঠিক তেমন করুন এবং অনুসরণ করুন।

  2. নীচের কমান্ডের আউটপুট পরীক্ষা করে অ্যাকাউন্টটি সফলভাবে যুক্ত হয়েছে যাচাই করুন। এটি দেখতে দেখতে অনুরূপ দেখতে হবে এবং আপনি যে অ্যাকাউন্টটি দিয়ে লগ ইন করেছেন তা তালিকাবদ্ধ করা উচিত:

    $ onedrived-pref account list
    
    All OneDrive accounts associated with user "YOUR_UBUNTU_USERNAME":
    
      #  Account ID                 Owner Name     Email Address         Profile Type
    ---  -------------------------  -------------  --------------------  --------------
      0  YOUR_PERSONAL_ACCOUNT_ID   YOUR_NAME      YOUR_BUSINESS_EMAIL   Business
    
  3. আপনার ড্রাইভগুলি ইন্টারেক্টিভ কমান্ড মোডে চালিয়ে কনফিগার করুন:

    onedrived-pref drive set
    

    আপনি আপনার সমস্ত ড্রাইভের একটি তালিকা দেখতে পাবেন এবং আপনার স্থানীয় কনফিগারেশনে আপনি যে ড্রাইভ যুক্ত করতে চান তার সারি নম্বর লিখতে বলা হবে।
    তারপরে আপনাকে একটি স্থানীয় ডিরেক্টরি নির্দিষ্ট করতে হবে যা আপনি নিজের ড্রাইভের সাথে সিঙ্ক্রোনাইজ করার জন্য রুট ফোল্ডার হিসাবে ব্যবহার করতে চান। আপনি কেবল আঘাত করতে পারেন Enterএবং এটি ডিফল্ট ব্যবহার করবে ~/OneDrive। পথটি না থাকলে এটি তৈরি করা হবে be আপনি যে ফাইলটি ব্যবহার করতে চান তা উপেক্ষা করার পথে একই জিনিস, আপনি কেবল আঘাত করতে পারেন Enterএবং এটি ডিফল্টটি ব্যবহার করবে ~/.config/onedrived/ignore_v2.txtএবং প্রয়োজনে এটি তৈরি করবে।

  4. সমস্ত উপলব্ধ এবং কনফিগার করা ড্রাইভের তথ্য প্রদর্শন করতে নীচের কমান্ডের আউটপুট পরীক্ষা করুন। এটি শিরোনামের নীচে সঠিক ড্রাইভগুলি সহ আপনি যে ড্রাইভটি সেট আপ করেছেন তা প্রদর্শিত হবে Drives that have been set up:

    onedrived-pref drive list
    

ডেমন চালু করা হচ্ছে

এখন আপনার ড্রাইভটি কনফিগার করা হয়েছে, আপনার চেষ্টা করে onedrivedডিমনটি শুরু করতে হবে । আমি প্রথমে এটি ডিবাগ মোডে লঞ্চ করার পরামর্শ দিচ্ছি, যদি অন্যথায় কোনও সমস্যা থেকে থাকে তবে আপনি যদি মিস হন। এটি onedrivedঅগ্রভাগে শুরু হবে :

onedrived start --debug

যদি সবকিছু ঠিকঠাক হয় এবং কমান্ডটি ক্রাশ এবং প্রস্থান না হয়, আপনার স্থানীয় ওয়ানড্রাইভ ফোল্ডারে কিছু ফাইল রাখার চেষ্টা করুন এবং এটি সিঙ্ক্রোনাইজ হয়েছে কিনা তা দেখুন। আপনার সম্ভবত https: //www.office.com- এ ওয়ানড্রাইভ ওয়েব অ্যাপ্লিকেশন পরিদর্শন করে এবং স্থানীয়ভাবে আপনার যুক্ত করা ফাইলগুলি সেখানে উপস্থিত রয়েছে কিনা তা যাচাই করে আপনি যাচাই করতে সক্ষম হবেন ।

আপনি + onedrivedটিপে আবার আপনার টার্মিনালে প্রক্রিয়াটি বন্ধ করতে পারেন ।CtrlC

onedrivedব্যাকগ্রাউন্ড ডেমন হিসাবে সাধারণত চালু করতে , এটি দিয়ে চালান:

onedrived start

আপনি সম্ভবত আপনার প্রারম্ভ অ্যাপ্লিকেশন এই কমান্ডের যোগ করা উচিত, যাতে এটি প্রত্যেক সময় আপনি লগ ইন স্বয়ংক্রিয় শুরু হয়। দয়া করে উল্লেখ করতে আমি কিভাবে লগইন স্বয়ংক্রিয়ভাবে অ্যাপ্লিকেশন শুরু করব? যে জন্য.

ত্রুটি বিজ্ঞপ্তিগুলির জন্য মোড়ক

আপনি যদি ডেস্কটপ বিজ্ঞপ্তিগুলি পেতে চান যখনই onedrivedকোনও ত্রুটি লগ করে (যেমন ব্যর্থ ফাইল সিঙ্ক্রোনাইজেশন), এখানে একটি মোড়ক স্ক্রিপ্ট যা লগ ফাইলটিকে রিয়েল-টাইমে পার্স করে এবং সেগুলি আপনাকে প্রদর্শন করার জন্য বিজ্ঞপ্তি-প্রেরণ ব্যবহার করে।

onedrived startকমান্ডের পরিবর্তে আপনি আর্গুমেন্ট ছাড়াই মোড়ক স্ক্রিপ্ট শুরু করতে পারেন (বা এটি আপনার অটো-স্টার্ট অ্যাপ্লিকেশনগুলিতে রেখে দিতে পারেন) ।

#!/bin/bash
LOGFILE=~/.config/onedrived/onedrived.log
ICON_START=weather-overcast
ICON_STOP=weather-few-clouds
ICON_ERROR=weather-severe-alert

onexit () {
    onedrived stop
    notify-send -i "$ICON_STOP" "OneDrive" "Wrapper stopped"
    echo "onedrived-wrapper stopped"
}

trap onexit EXIT

onedrived stop
echo "---" >> "$LOGFILE"

onedrived start || {
    echo "Failed to start onedrived!"
    exit 1
}
notify-send -i "$ICON_START" "OneDrive" "Wrapper started"

echo "Monitoring onedrived.log for error messages..."
tail -n 1 -F --pid="$(pgrep -f "onedrived start")" "$LOGFILE" |
    while read LINE ; do
        echo "$LINE"
        if MESSAGE="$(grep -Pio '(?<=ERROR: ).*' <<< "$LINE")" ; then
            notify-send -i "$ICON_ERROR" "OneDrive Error" "$MESSAGE"
        fi
    done

আমি এখনও বার্তাটি পেয়েছি "অনড্রাইভড অনুমোদিত করতে ব্যর্থ: মিথস্ক্রিয়া_প্রয়োজনীয়"। আমি ওডিএফবি অ্যাকাউন্টটি প্রমাণীকরণের জন্য দ্বিতীয় লিঙ্কটি প্রবেশ করার পরে। কোনও ধারণা কেন এমন হতে পারে?
জিমাকোস

@ জিমাকোস দুঃখিত, আমি কখনই এই বার্তার মুখোমুখি হইনি। দুর্ভাগ্যক্রমে কোন ধারণা নেই।
বাইট কমান্ডার

1

rclone ব্যবসায়ের জন্য ওয়ানড্রাইভ সমর্থন করে। রিক্লোন ব্যবহার করে লিনাক্সে ওয়ানড্রাইভ কীভাবে মাউন্ট করবেন (ব্যবসায় এবং ব্যক্তিগত অ্যাকাউন্ট সমর্থন করে) - লিনাক্স উত্থাপন ব্লগ ব্যবহারের জন্য একটি নিবন্ধ দেখুন ।

onedrive1রক্লোন 1.48.0 (ফেডোরার 30 এ) সহ একটি নতুন রিমোট সেটআপ করার জন্য আমার উদাহরণটি এখানে :

$ rclone config
2019/10/10 06:35:56 NOTICE: Config file ".config/rclone/rclone.conf" not found - using defaults
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> onedrive1
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
⋮
19 / Microsoft OneDrive
   \ "onedrive"
⋮
Storage> 19      
** See help for onedrive backend at: https://rclone.org/onedrive/ **

Microsoft App Client Id
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_id> 
Microsoft App Client Secret
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_secret> 
Edit advanced config? (y/n)
y) Yes
n) No
y/n> n

Remote config
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine
y) Yes
n) No
y/n> y
If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
Log in and authorize rclone for access
Waiting for code...
Got code
Choose a number from below, or type in an existing value
 1 / OneDrive Personal or Business
   \ "onedrive"
 2 / Root Sharepoint site
   \ "sharepoint"
 3 / Type in driveID
   \ "driveid"
 4 / Type in SiteID
   \ "siteid"
 5 / Search a Sharepoint site
   \ "search"
Your choice> 1
Found 2 drives, please select the one you want to use:
0: OneDrive - Example Inc (business) id=b!gFLg-RRe****-T9B****
1: OneDrive - Example Inc (business) id=b!gFLg-RRe****-T-H****
Chose drive to use:> 1
Found drive 'root' of type 'business', URL: https://example-my.sharepoint.com/personal/myname_example_com/Documents
Is that okay?
y) Yes
n) No
y/n> y
Current remotes:

Name                 Type
====                 ====
onedrive1            onedrive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q

ড্রাইভ 0 এর URL এর সাথে শেষ হয় /ElementinnerHTMLএবং আমার ক্ষেত্রে ফাইলগুলি থাকে না।

তারপরে v1.49 সাল থেকে কমান্ড লাইন, rclone- ব্রাউজার বা ওয়েব জিইউআইয়ের মাধ্যমে এটি একটি স্থানীয় ডিরেক্টরিতে মাউন্ট করুন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.