কীভাবে "টাইপিং পূর্বাবস্থায় ফেরাতে হবে"?


12

আমি একটি জাভা অ্যাপ্লিকেশন বাস্তবায়ন করছি যা একটি পূর্বাবস্থায় / পুনরায় স্ট্যাক অন্তর্ভুক্ত। আমি লক্ষ্য করেছি যে কিছু অ্যাপ্লিকেশন (যেমন ম্যাক ওএস এক্সের টেক্সটএডিট) আপনাকে কিছু পাঠ্য টাইপ করার পরে সম্পাদনা মেনু থেকে "পূর্বাবস্থা ফিরিয়ে আনুন" বেছে নিতে দেয়। আমি আমার অ্যাপ্লিকেশনটিতেও এই ধরণের জিনিসটি প্রয়োগ করতে চাই তবে এটি কীভাবে আচরণ করা উচিত সে সম্পর্কে গাইডলাইনগুলি খুঁজে পেতে আমার খুব কষ্ট হচ্ছে।

কিছু পরীক্ষা এবং ত্রুটি সহ, টেক্সটএডিটের পূর্বাবস্থা টাইপিং কীভাবে আচরণ করে সে সম্পর্কে আমার সেরা অনুমান:

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

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

সম্পাদনা: কেবল স্পষ্ট করে বলার জন্য, আমি এখনই বাস্তবায়নের বিবরণে আগ্রহী নই। আমি বিশেষত কৌতূহলী যে কোনও অনুমোদনমূলক রেফারেন্স (যেমন সেরা অনুশীলন বা ব্যবহারকারী ইন্টারফেস ডকুমেন্ট) বিদ্যমান রয়েছে বা না এটি একাধিক পণ্য জুড়ে কীভাবে এটি প্রয়োগ করা হয় তার বিবরণ বর্ণনা করে exists


আমার পরামর্শ: পরিবর্তনগুলি এমন বিন্দুতে সংকুচিত করুন যেখানে পূর্বাবস্থায় ফেরানো তথ্য থেকে চাপিত কীগুলির যথাযথ ক্রমটি পুনর্গঠন করা এখনও সম্ভব এবং আরও কিছু নয়। উদাহরণস্বরূপ, এর অর্থ হ'ল ব্যবহারকারী যদি কিছু টাইপ করে এবং তা মুছে ফেলার জন্য অবিলম্বে ব্যাকস্পেস ব্যবহার করে তবে এর মধ্যে একটি পূর্বাবস্থা থাকা উচিত।
আম্বোজ বিজ্জাক

ব্যবহারকারী যখনই একটি নতুন লাইন তৈরি করবেন এবং সম্ভবত প্রতিবার অক্ষরগুলির ইনপুট দেওয়ার পরে স্পেস বারটি ব্যবহার করা হবে ততবার আপনি একটি নতুন "পূর্বাবস্থায় ফিরুন আইটেম" যুক্ত করতে পারেন। নতুন "পূর্বাবস্থায় ফিরিয়ে আনার আইটেম" এর আগে অপেক্ষা করার 15 সেকেন্ডের আইএমও কিছুটা দীর্ঘ হতে পারে তবে এটি কেবল আমার। (আমি প্রায় 5 সেকেন্ডের জন্য যাব)
ব্যবহারকারী 82529

অথবা হতে পারে "চাপযুক্ত কীগুলির যথাযথ ক্রম "টিকে" প্রতিটি সংশোধনের পরে পাঠ্যের স্থিতিতে "শিথিল করা উচিত। ধারণাটি হ'ল সংকোচনের কারণে কোনও পাঠ্য হারিয়ে যাওয়া থেকে রোধ করা।
আম্বোজ বিজ্জাক

এটি আমার কাছে টেক্সটএডিট স্পেসগুলিতে একত্রিত হয়ে সর্বশেষ পূর্বাবস্থা টাইপিং আইটেমটির সাথে মুছে ফেলার মতো শর্ত দেয় তবে অন্য শর্ত পূরণ না হয়। সুতরাং 124<delete>3, তারপরে এটি পূর্বাবস্থায় ফেরানো এবং পুনরায় করা ফলাফল 123। আমি এর সুবিধাটি অনুমান করি যে এটি ব্যবহারকারীর পাঠ্যটির চূড়ান্ত স্থিতির ফলস্বরূপ, কিছুটা উপরের পরামর্শের মতো।
থান্ডারফোরে

আপনি কি পেটেন্টগুলি অনুসন্ধান করার চেষ্টা করেছেন? (নিয়মগুলি সাধারণত গ্রন্থাগারের স্তরে এনকোড থাকে, ব্যবহারকারী কোডের সাথে প্রকাশিত হয় না))
ডোনাল ফেলো ২

উত্তর:


5

আপনি যদি কোনও প্রামাণ্য উত্স খুঁজছেন তবে আমি মনে করি সেরা ম্যাক-সম্পর্কিত উপাদানটি অ্যাপল থেকে পূর্বাবস্থায় আর্কিটেকচার নথিতে পাওয়া যাবে ।

আমার মনে হয় না যে আপনি কখন পূর্বাবস্থায় ফিরে যাওয়া ইভেন্টগুলি একত্রিত করতে হবে বা করা উচিত নয় সে সম্পর্কে নিয়মের একটি তালিকা পেয়ে যাচ্ছেন। এক অ্যাপ্লিকেশনটির জন্য যা সঠিক মনে হচ্ছে তা অপরিহার্যভাবে অন্য কোনওটির জন্য অর্থবোধ করে না। উদাহরণস্বরূপ, কী-স্ট্রোকসকে একটি পাঠ্য সম্পাদকের মধ্যে বোঝার কারণ ব্যবহারকারী সম্ভবত একটি অনুচ্ছেদে টাইপ করতে দেখবেন একক ক্রিয়া হিসাবে এবং 539 পৃথক ক্রিয়াকলাপ হিসাবেও নয়, এবং আপনি চান না যে ব্যবহারকারীকে পেতে কেবল 539 বার পূর্বাবস্থায় ফিরে আসতে হবে তারা যে অনুচ্ছেদটি টাইপ করার আগে তারা ছিল সেই বিন্দুতে। তবে কোনও অঙ্কন প্রোগ্রামে কোনও আকারে মুভ অপারেশন সম্পর্কে কী বলা যায়? বা ভরাট রঙের ক্রমক্রমিক সামঞ্জস্য? আপনার প্রোগ্রামের প্রকৃতির উপর নির্ভর করে এগুলি একত্রিত করা বা না হওয়ার জন্য আপনি একটি ভাল কেস তৈরি করতে পারেন।

ব্যবহারকারী বর্ধিত সময়ের জন্য টাইপ করার পরে এবং কিছু শর্ত পূরণ হওয়ার পরে সর্বদা একটি নতুন পূর্বাবস্থা টাইপিং আইটেম তৈরি করুন (এটি সময় ভিত্তিক বা চরিত্রের গণনার উপর ভিত্তি করে ছিল কিনা তা বুঝতে পারি না)।

এটি অটোসোভের উপর ভিত্তি করে। আপনার জন্য ভাগ্যবান, টেক্সটএডিট উত্স কোড উপলব্ধ এবং ভাল মন্তব্য করেছে। আমি মনে করি আপনি যদি এটি একবার দেখুন, আপনি কী চলছে এবং কী করছে তার একটি ভাল ধারণা পাবেন। উদাহরণ স্বরূপ:

- (void)saveToURL:(NSURL *)absoluteURL ofType:(NSString *)typeName forSaveOperation:(NSSaveOperationType)saveOperation completionHandler:(void (^)(NSError *error))handler {
    // Note that we do the breakUndoCoalescing call even during autosave, which 
    // means the user's undo of long typing will take them back to the last spot an 
    // autosave occured. This might seem confusing, and a more elaborate solution may 
    // be possible (cause an autosave without having to breakUndoCoalescing), but since 
    // this change is coming late in Leopard, we decided to go with the lower risk fix.
    [[self windowControllers] makeObjectsPerformSelector:@selector(breakUndoCoalescing)];
 ...

আমি জানি আপনি বলেছেন যে আপনি এখনও প্রয়োগের বিবরণে আগ্রহী নন, তবে অ্যাপল যেভাবে টেক্সটএডিট প্রয়োগ করেছেন তা আপনার নিজের প্রয়োগের জন্য নেওয়া সিদ্ধান্তগুলি অবহিত করতে পারে।


1
আমি মনে করি যে আমি এটি সেরা উত্তর ঘোষণা করব। আমি আপনাকে যে নির্দিষ্ট উদাহরণটি দিয়েছি তার জন্য অ্যাপলের বাস্তবায়নের পাশাপাশি কিছু কোড দেওয়ার জন্য আপনার প্রশংসা করি। আমি মনে করি আপনি ঠিক বলেছেন, এটি সাধারণত অ্যাপ্লিকেশনগুলির প্রয়োজনগুলির উপর ভিত্তি করে হয় এবং সেই চাহিদাগুলি কী এবং কীভাবে সেগুলি সমাধান করা যায় তা মানক করার জন্য কেউ সত্যই চেষ্টা করেনি।
থান্ডারফোরে

1

কীডাউন -> টাইমার আপনার নিষ্ক্রিয় প্রতিনিধিত্ব শুরু হয়

কীডাউন / টাইমার-চলমান -> টাইমার পুনরায় সেট করুন

কীডাউন অন / টাইমার-চলমান নয় -> অবস্থান পরিবর্তন হিসাবে নতুন সংরক্ষিত রাষ্ট্রের জন্য প্রস্তুত সেল ব্লকগুলি পুনরায় সমন্বয় করুন

অলস-টাইমার নিচে চলে যায় -> একটি নতুন পূর্বাবস্থায় রাষ্ট্র প্রতিষ্ঠা করুন

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

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