المسرد

الملفات والتنزيل والنقل

معظم ما يبدو تعسفيًا بشأن الملفات على iPhone ينبع من قاعدة واحدة عن العزل، ومعظم ما يجعل التنزيلات موثوقة ينبع من ميزة واحدة في HTTP. هذان الأمران، بالإضافة إلى طرق انتقال الملفات من جهاز إلى آخر.

العزل

sandbox

القاعدة التي تجعل كل تطبيق يرى تخزينه الخاص فقط. هذا سبب عدم قدرة تطبيق على فتح تنزيلات تطبيق آخر، وسبب أن "الملف بجانب الفيديو" ليس شيئًا موجودًا على iOS.

يحصل كل تطبيق على دليل خاص ولا رؤية لما يخص أي أحد آخر. تنتقل الملفات بين التطبيقات فقط عبر أفعال متعمَّدة — قائمة مشاركة، أو منتقي مستندات، أو سحب — كل منها قرار اتخذه الشخص بدلًا من أن يساعد تطبيق نفسه به.

تقع التكلفة في أماكن صغيرة. تجد مشغّلات الحاسوب المكتبي film.srt بجانب film.mkv تلقائيًا؛ على iOS لا يوجد "بجانب"، فيجب تسليم ملف ترجمة عمدًا ويجب أن يكون التطبيق هو من يتذكر الإقران.

انظر أيضًا: مجموعة التطبيقاتالإشارة المرجعية محدودة النطاق الأمني

مجموعة التطبيقات

app group

حاوية مشتركة يمكن لتطبيقين من المطوّر نفسه فتحها كلاهما — الشق الوحيد المسموح به في العزل. هكذا يسلّم امتداد مشاركة ملفًا إلى التطبيق الذي ينتمي إليه.

امتداد المشاركة برنامج منفصل عن التطبيق الذي يبدو جزءًا منه، بعزله الخاص وحياة قصيرة جدًا. لا يستطيع الكتابة في تخزين التطبيق الرئيسي.

فيكتب بدلًا من ذلك في حاوية يُسمَح لكليهما برؤيتها، ويستنزف التطبيق تلك الحاوية في المرة التالية التي يُفتَح فيها. لا شيء يعبر حدود مطوّر، ولا شيء يعبر من دون نقرة صريحة.

انظر أيضًا: العزل

الإشارة المرجعية محدودة النطاق الأمني

security-scoped bookmark

رمز يتذكر إذن الوصول إلى مجلد خارج العزل — قرص خارجي، أو مجلد في iCloud — كي يستطيع التطبيق إعادة فتحه لاحقًا من دون سؤال مجددًا.

حين تختار موقعًا عبر منتقي ملفات النظام، يكون الإذن الممنوح لتلك اللحظة فقط. تحافظ الإشارة المرجعية عليه عبر عمليات الإطلاق، ويجب أن يبدأ التطبيق ويوقف صراحة استخدام الوصول الذي تمثّله.

هذا ما يجعل تصفح قرص SSD خارجي ممكنًا من دون نسخ أي شيء إلى الداخل، وهو محدود بدقة بما اخترته — إشارة مرجعية إلى مجلد واحد لا تمنح شيئًا عن مجاوره.

انظر أيضًا: العزل

طلب النطاق

range request

طلب شريحة محددة من ملف من خادم — من البايت 5,000,000 إلى 5,999,999 — بدلًا من الملف كاملًا. هذا ما يجعل التنزيل قابلًا للاستئناف وما يتيح لعدة اتصالات جلب ملف واحد في آن.

خادم يدعم النطاقات يجيب بـ206 Partial Content والشريحة المطلوبة. أما الذي لا يدعمها فيجيب بـ200 ويرسل كل شيء من البداية، وهذا الفرق بين استئناف تنزيل وإعادة بدئه.

يرتكز كل ما هو مثير للاهتمام في محرك تنزيل على ميزة HTTP الواحدة هذه. من دونها لا يوجد استئناف بعد انقطاع اتصال، ولا استئناف بعد إعادة تشغيل، ولا طريقة لاستخدام أكثر من اتصال واحد.

انظر أيضًا: التنزيل القابل للاستئنافالاتصالات المتوازية

التنزيل القابل للاستئناف

resumable download

نقل يستمر من حيث توقف بالضبط بدلًا من البدء مجددًا، بتسجيل عدد البايتات المُلتزَم بها وطلب الباقي.

الشرط أن الرقم المسجَّل ليس متفائلًا أبدًا. بايت مُحتسَب مكتوبًا لكنه ما زال يجلس في مخزن مؤقت يصبح ثقبًا في الملف حين يُنهى التطبيق — وثقب في منتصف فيديو تلف لا يظهر إلا بعد ساعة من مشاهدته.

ولهذا يجب أن يتبع العدد الكتابة إلى القرص لا القراءة من الشبكة، وأن يتفق كل تسليم بين النقل في المقدمة والخلفية على رقم واحد.

انظر أيضًا: طلب النطاقالنقل في الخلفية

الاتصالات المتوازية

parallel connections, multi-connection

تقسيم ملف واحد إلى نطاقات وجلب عدة منها في آن. تساعد حين يُحَد اتصال واحد، ولا تفعل شيئًا حين يكون العنق ضيقًا في خطك أنت.

خادم يحدّ سرعة كل اتصال يمكن إقناعه غالبًا بتسليم المزيد إجمالًا عبر عدة اتصالات. هنا يكتسب التنزيل متعدد الاتصالات سمعته.

ليس سحرًا ويُساء فهمه كثيرًا. إن كان اتصالك مشبعًا أصلًا، تقسّم الاتصالات الإضافية السعة نفسها إلى قطع أصغر وتضيف تكلفة إضافية. كما ترفض بعض الخوادم أو تُبطئ طلبات متعددة من عنوان واحد.

انظر أيضًا: طلب النطاقالتنزيل القابل للاستئناف

النقل في الخلفية

background transfer

تنزيل يُسلَّم إلى نظام التشغيل كي يستمر بعد إغلاق التطبيق. يقرر النظام التوقيت، وهذا الثمن مقابل استمراره أصلًا.

يتوقف تطبيق iOS عن العمل بعد مغادرتك إياه بوقت قصير. ينجو نقل مُسلَّم إلى خدمة الخلفية في النظام من ذلك، وينجو من إنهاء التطبيق، ويستأنف بعد إعادة تشغيل.

ما يتخلى عنه هو التحكم. يجمِّع النظام هذه العمليات وفق رؤيته الخاصة للطاقة وظروف الشبكة، فقد يتوقف تنزيل في الخلفية ويستأنف بطرق لن يفعلها تنزيل داخل التطبيق — وسينتهي.

انظر أيضًا: التنزيل القابل للاستئنافالعزل

WebDAV

امتداد لـHTTP يحوّل خادم ويب إلى خادم ملفات: سرد، وقراءة، وكتابة، ونقل، وحذف. هذا ما يتحدثه Nextcloud وownCloud، وما تقدّمه معظم أجهزة NAS.

ولأنه HTTP في الأساس، يعمل WebDAV عبر البنية التحتية نفسها التي يستخدمها أي شيء آخر على الويب — لا منافذ خاصة، ولا بروتوكول عميل خاص — وهذا سبب نجاته بينما لم تنجُ بروتوكولات ملفات أكثر تعقيدًا.

لمن يفضل عدم وضع ملفاته في سحابة شركة، هو البديل العملي: خادمك الخاص، وبيانات اعتمادك الخاصة، ومعايير عادية.

انظر أيضًا: التخزين السحابي

التخزين السحابي

cloud storage

ملفات محفوظة على خادم جهة أخرى، يُصَل إليها عبر واجهة تلك الشركة — Dropbox، وOneDrive، وBox، وpCloud. لكل منها واجهته الخاصة، وهذا سبب دعم التطبيقات لها واحدة تلو الأخرى.

لا يوجد بروتوكول سحابي عالمي. صمّم كل مزوّد واجهته الخاصة وتدفق تسجيل دخوله الخاص، فإضافة مزوّد إلى تطبيق عمل حقيقي بدلًا من إدخال إعداد.

تسجيل الدخول عادة OAuth، ما يعني أن التطبيق لا يرى كلمة المرور أبدًا: يوثّق المزوّد الشخص ويعيد رمزًا يمكن إبطاله من إعدادات المزوّد نفسه في أي وقت.

انظر أيضًا: WebDAV

WebRTC

معيار لتوصيل جهازين مباشرة، من دون خادم بينهما بمجرد وجود الاتصال. هذا ما يستخدمه النقل من جهاز إلى جهاز لنقل ملف عبر الغرفة.

يعرّف خادم إشارة صغير الجهازين ببعضهما — لهذا الغرض الرمز المكوَّن من ستة أرقام — ثم ينسحب. ينتقل الملف مباشرة بين الجهازين ولا يُخزَّن في أي مكان بينهما.

على الشبكة نفسها، هو بسرعة ما تسمح به تلك الشبكة. عبر الإنترنت، يعتمد على إمكانية الوصول إلى كلا الطرفين مباشرة، وهنا تفشل الاتصالات أحيانًا لأسباب لا يستطيع أي جهاز رؤيتها.

انظر أيضًا: خادم HTTP المحلي

خادم HTTP المحلي

local HTTP server

تطبيق يجيب على طلبات ويب على شبكتك الخاصة، كي يستطيع متصفح ويب على حاسوبك فتح صفحة يقدّمها هاتفك. هكذا يعمل نقل Wi-Fi، من دون كابل ومن دون حساب.

يُظهِر الهاتف عنوانًا؛ ويفتحه الحاسوب؛ والصفحة التي يحصل عليها يقدّمها الهاتف نفسه. تنتقل الملفات مباشرة عبر الشبكة المحلية ولا تغادرها أبدًا.

ولأن أي شخص على الشبكة نفسها يستطيع الوصول إلى ذلك العنوان، يحتاج إلى قفل — رمز يُدخَل، وأذونات تُمنَح لكل عملية على حدة، والعمليات المدمِّرة مُعطَّلة ما لم تُفعَّل عمدًا.

انظر أيضًا: WebRTC

المواضيع الأخرى