iphone - জনক - বাংলাদেশে আইফোনের দাম কত




কিভাবে ওয়েব সার্ভারের সাথে আইফোন কোর ডেটা সিঙ্ক করবেন এবং তারপরে অন্য ডিভাইসগুলিতে ধাক্কা দেবেন? (6)

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

  1. একটি স্থানীয় কোর তথ্য দোকান পরিবর্তন করা হয়, এবং পরিবর্তন সংরক্ষিত হয়। (ক) ডিভাইসটি অনলাইনে থাকলে, এটি পরিবর্তনশীল পাঠানো ডিভাইসের ডিভাইস আইডি সহ সার্ভারে পরিবর্তনগুলি পাঠানোর চেষ্টা করে। (বি) যদি পরিবর্তনগুলি সার্ভারে না পৌঁছায়, বা ডিভাইসটি অনলাইনে না হয় তবে অ্যাপ্লিকেশনটি অনলাইনে আসার সময় পাঠানোর জন্য একটি সারিতে সেট সেট যুক্ত করবে।
  2. ক্লাউডটিতে বসা সার্ভার, এটির মাস্টার ডেটাবেস দ্বারা প্রাপ্ত নির্দিষ্ট পরিবর্তন সেটগুলি মার্জ করে।
  3. একটি পরিবর্তনের সেটের পরে (বা পরিবর্তন সেটের একটি সারির) ক্লাউড সার্ভারে মার্জ করা হয়, সার্ভারটি কোনও ধরণের ভোটদান পদ্ধতি ব্যবহার করে সার্ভারের সাথে নিবন্ধিত অন্যান্য ডিভাইসগুলিতে সেই সমস্ত পরিবর্তন সেটগুলিকে push করে। (আমি অ্যাপল এর push পরিষেবা ব্যবহার করতে ভেবেছিলাম, কিন্তু আপাতদৃষ্টিতে মন্তব্য অনুসারে এটি একটি কার্যকর সিস্টেম নয়।)

আমার কি কিছু ভাবনা আছে যা সম্পর্কে ভাবতে হবে? আমি ObjectiveResource রিসোর্স , কোর রিসোর্স , এবং RestfulCoreData হিসাবে REST কাঠামো তাকিয়ে আছে। অবশ্যই, এই সব রুবি রুবিতে কাজ করছে, যা আমি বাঁধা নই, তবে এটি শুরু করার জায়গা। আমার সমাধানগুলির জন্য আমার প্রধান প্রয়োজনীয়তাগুলি হল:

  1. কোনও পরিবর্তন প্রধান থ্রেড বিরতি ছাড়াই পটভূমিতে পাঠানো উচিত।
  2. এটি সম্ভব হিসাবে সামান্য ব্যান্ডউইথ হিসাবে ব্যবহার করা উচিত।

আমি বেশ কয়েকটি চ্যালেঞ্জ নিয়ে চিন্তা করেছি:

  1. সার্ভারে সংযুক্ত বিভিন্ন ডিভাইসগুলিতে বিভিন্ন ডেটা স্টোরগুলির জন্য বস্তু আইডিগুলি নিশ্চিত করা হচ্ছে তা নিশ্চিত করা। অর্থাৎ, আমার কাছে বস্তু আইডি এবং ডিভাইস আইডিগুলির একটি টেবিল থাকবে, যা ডাটাবেসের মধ্যে সংরক্ষিত বস্তুর একটি রেফারেন্সের মাধ্যমে আবদ্ধ করা হবে। আমার কাছে একটি রেকর্ড থাকবে (ডাটাবেস আইডি [এই টেবিলের জন্য অনন্য], ObjectId [সম্পূর্ণ ডাটাবেসের আইটেমটির জন্য অনন্য], ডেটাফিল্ড 1, ডেটাফিল্ড 2), বস্তু আইডি ফিল্ডটি অন্য টেবিলের উল্লেখ করবে, AllObjects: (ObjectId, DeviceId, DeviceObjectId)। তারপরে, যখন ডিভাইসটি একটি পরিবর্তন সেটটিকে push করে, তখন এটি ডিভাইস আইডি এবং বস্তুর পাশাপাশি স্থানীয় ডাটা স্টোরের মূল ডাটা অবজেক্ট থেকেও প্রেরিত হবে। তারপরে আমার ক্লাউড সার্ভার AllObjects টেবিলের বস্তু আইডি এবং ডিভাইস আইডি বিরুদ্ধে চেক করবে, এবং প্রাথমিক টেবিলে পরিবর্তন করার রেকর্ডটি খুঁজে পাবে।
  2. সমস্ত পরিবর্তন timestamped করা উচিত, যাতে তারা একত্রিত করা যাবে।
  3. ডিভাইসটি খুব বেশি ব্যাটারি ব্যবহার না করে সার্ভারকে পোল করতে হবে।
  4. সার্ভার থেকে পরিবর্তনগুলি পাওয়া গেলে স্থানীয় ডিভাইসগুলিকে মেমরিতে রাখা কিছু আপডেট করতে হবে।

আমি এখানে অনুপস্থিত অন্য কিছু আছে কি? এটিকে সম্ভব করার জন্য আমি কী ধরণের কাঠামো দেখব?


2017

এই অবিশ্বাস্য পুরানো প্রশ্ন সম্পর্কে।

এটা জিজ্ঞাসা মত অনেক হবে

"আমি এমন একটি ডিভাইস কিনতে চাই যা আমি আমার সাথে বহন করতে পারি - তবে WWW ব্রাউজ করতে এমনকি অনেক কম্পিউটিং কাজগুলির জন্যও এটি ব্যবহার করতে পারে!"

স্পষ্টতই, আপনি যদি মঙ্গলে থাকেন তবে তার উত্তরটি সম্প্রতি "স্মার্ট ফোনের" একটি প্রধান প্রযুক্তিগুলির মধ্যে একটি ছিল, এটি একটি কিনেছিল।

এই দিন, স্ক্র্যাচ থেকে একটি OCC সিস্টেম তৈরি করা স্ক্র্যাচ থেকে একটি SQL ডাটাবেস তৈরি হিসাবে উন্মাদ হিসাবে হবে।

স্পষ্টতই, OCC এর জন্য, যা এখন সমস্ত অ-তুচ্ছ অ্যাপ্লিকেশনের বেস প্যাডিজম, আপনি ব্যবহার করেন

  • Firebase
  • PubNub
  • Couchbase

এবং তাই, যা বেশ সহজভাবে, গত কয়েক বছরের মানব প্রযুক্তির অগ্রিম অগ্রগতি

আজ, আপনি আর আপনার চেয়ে স্ক্র্যাচ থেকে ওসিসি তৈরি করবে না

  • স্ক্র্যাচ থেকে আপনার নিজের অপারেটিং সিস্টেম লিখুন

  • স্ক্র্যাচ থেকে আপনার নিজের এসকিউএল ডাটাবেস লিখুন

  • স্ক্র্যাচ থেকে আপনার নিজস্ব ফন্ট-রেন্ডারিং লিখুন

প্রকৃতপক্ষে, একটি পেশাদার অর্থে আপনি যে কোনও "আইওএস প্রোগ্রামার" বা "অ্যানড্রইড প্রোগ্রামার" হতে পারেন না।

কে লেআউট টেবিল এবং বোতাম কিভাবে বুদ্ধিমান সম্পর্কে কেয়ার?

আপনি একটি ফায়ারबेस / যাই হোক বিশেষজ্ঞ, এবং একটি আনুষঙ্গিক পার্শ্ব সমস্যা হিসাবে আপনি iOS বা Android এ লেআউট বোতাম ইত্যাদি কীভাবে জানেন।

একমাত্র সমস্যা যা BAAS ব্যবহার করতে পারে - উদাহরণস্বরূপ, PlayFab যদি এটি গেম ভিত্তিক হয়, সম্ভবত PubNub যদি এটি সত্যিই বার্তা চালিত হয়, সম্ভবত ably.io, সম্ভবত আপনি যদি কর্পোরেট হন তবে - কিন্ত কী।


আইফোন ২009 কনফারেন্সে ড্যান গ্রোভারের দ্বারা আলোচনা করা সিঙ্ক কৌশলটি সাবধানে পড়ার এবং বাস্তবায়ন করার পরামর্শ দিচ্ছি, এটি here একটি পিডিএফ নথি হিসাবে পাওয়া যায়।

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

ভেক্টর টাইম জোড়া সঙ্গে ফাইল সিঙ্ক্রোনাইজেশন

যা কিছু সুস্পষ্ট সংশোধন সঙ্গে কোর তথ্য সমানভাবে ভাল প্রযোজ্য। এটি সামগ্রিকভাবে আরো শক্তিশালী এবং নির্ভরযোগ্য সিঙ্ক কৌশল সরবরাহ করে, তবে সঠিকভাবে প্রয়োগ করার জন্য আরও বেশি প্রচেষ্টা প্রয়োজন।

সম্পাদনা করুন:

মনে হচ্ছে গ্রোভারের পিডিএফ ফাইল আর উপলব্ধ নেই (ভাঙা লিঙ্ক, মার্চ 2015)। আপডেট: লিঙ্ক here ওয়ে ব্যাক মেশিনের মাধ্যমে পাওয়া যায়

ZSync নামক উদ্দেশ্য-সি ফ্রেমওয়ার্ক এবং মার্কাস জারার দ্বারা উন্নত করা হয়েছে, অবশেষে ZSync সঠিক কোর ডেটা সিঙ্ক্রোনাইজেশন সমর্থন করে বলে মনে হচ্ছে।


আমি GUID সমস্যা একটি ভাল সমাধান "বিতরণ আইডি সিস্টেম" মনে হয়। আমি নিশ্চিত নই যে সঠিক শব্দটি কী, তবে আমি মনে করি MS MS SQL সার্ভার ডক্স এটি কল করার জন্য ব্যবহৃত হয় (SQL ব্যবহার / সিঙ্কড ডেটাবেসের জন্য এই পদ্ধতিটি ব্যবহার / ব্যবহার করে)। এটা বেশ সহজ:

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

আমি মনে করি এটি এলোমেলো GUID ব্যবহার করার চেয়ে আরও ভাল কারণ এলোমেলো GUIDs 100% নিরাপদ নয়, এবং সাধারণত একটি আদর্শ আইডি (128-বিট বনাম 32-বিট) চেয়ে অনেক বেশি হওয়া দরকার। আপনি সাধারণত আইডি দ্বারা সূচী আছে এবং প্রায়ই আইডি নম্বর মেমরি রাখা, তাই তাদের ছোট রাখা গুরুত্বপূর্ণ।

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


আমি আমার নতুন কোর ডেটা ক্লাউড সিঙ্কিং API এর প্রথম সংস্করণটি পোস্ট করেছি, যা SynCloud নামে পরিচিত। SynCloud আইক্লাউড সঙ্গে অনেক পার্থক্য আছে কারণ এটি মাল্টি-ব্যবহারকারী সিঙ্ক ইন্টারফেসের জন্য অনুমতি দেয়। এটি অন্য সিঙ্কিং API এর থেকেও ভিন্ন কারণ এটি মাল্টি-টেবিল, সম্পর্কযুক্ত ডেটায়ের জন্য অনুমতি দেয়।

Http://www.syncloudapi.com এ আরও জানতে দয়া করে

IOS 6 SDK দিয়ে তৈরি করুন, এটি 9/27/2012 তারিখ পর্যন্ত খুব আপ টু ডেট।


একই রকম @ ক্রিস আমি ক্লায়েন্ট এবং সার্ভারের মধ্যে সিঙ্ক্রোনাইজেশনের জন্য ক্লাস প্রয়োগ করেছি এবং এখন পর্যন্ত সমস্ত জ্ঞাত সমস্যা সমাধান করেছি (সার্ভার থেকে / বার্তা থেকে ডেটা প্রেরণ / গ্রহণ, টাইমস্ট্যাম্পের উপর ভিত্তি করে দ্বন্দ্বগুলি মেলাতে, অবিশ্বস্ত নেটওয়ার্ক অবস্থানে ডুপ্লিকেট এন্ট্রি সরানো, নেস্টেড ডেটা সিঙ্ক্রোনাইজ করে এবং ফাইল ইত্যাদি ..)

আপনি কেবল কোন শ্রেণীটি সত্তা এবং কোন কলামগুলি সিঙ্ক হওয়া উচিত এবং আপনার সার্ভার কোথায় তা বলবেন।

M3Synchronization * syncEntity = [[M3Synchronization alloc] initForClass: @"Car"
                                                              andContext: context
                                                            andServerUrl: kWebsiteUrl
                                             andServerReceiverScriptName: kServerReceiverScript
                                              andServerFetcherScriptName: kServerFetcherScript
                                                    ansSyncedTableFields:@[@"licenceNumber", @"manufacturer", @"model"]
                                                    andUniqueTableFields:@[@"licenceNumber"]];


syncEntity.delegate = self; // delegate should implement onComplete and onError methods
syncEntity.additionalPostParamsDictionary = ... // add some POST params to authenticate current user

[syncEntity sync];

আপনি উৎস, কাজ উদাহরণ এবং আরও নির্দেশাবলী এখানে খুঁজে পেতে পারেন: github.com/knagode/M3Synchronization


ধাক্কা বিজ্ঞপ্তি মাধ্যমে তথ্য আপডেট ব্যবহারকারীদের লক্ষ্য করুন। স্থানীয় ডেটা এবং ক্লাউড সার্ভারের ডেটা পরীক্ষা করার জন্য অ্যাপ্লিকেশানে একটি ব্যাকগ্রাউন্ড থ্রেড ব্যবহার করুন, যখন সার্ভারে পরিবর্তন ঘটে, স্থানীয় ডেটা পরিবর্তন করুন, বিপরীতভাবে।

তাই আমি মনে করি সবচেয়ে কঠিন অংশটি কোন উপায়ে অবৈধ হয় তা অনুমান করা।

এই আপনি সাহায্য করতে পারেন আশা করি