أدوات المطور · محول الطابع الزمني يونكس
لماذا يبدأ وقت يونكس في 1 يناير 1970: تاريخ قصير لهذه الحقبة
· خلفية
الطوابع الزمنية وقت يونكس تنسيقات البيانات
لم يحدث شيء في 1 يناير 1970؛ تم اختيار التاريخ للملاءمة بعد أن هددت ساعة Unix الأصلية بالفيضان. يحكي هذا المنشور قصة ساعة يونكس المبكرة، والتحول إلى الثواني، وكيف انتشرت الاتفاقية في كل مكان.
تاريخ لا يحتفل به أحد - لماذا يستمر 1970 في الظهور في الأخطاء والافتراضيات ولوحات المعلومات بعد نصف قرن
يظهر يناير 1970 عندما يخطئ البرنامج في مدة صغيرة أو يتم احتساب الثواني بالمللي ثانية. إنه ليس عيد ميلاد احتياطي تم إنشاؤه بواسطة ToolAcre؛ إنها نقطة الصفر التي تم تفسير المدخلات منها. يعود اختبار العصر الصفري `1970-01-01T00:00:00.000Z` ويوم الخميس.
وبالتالي فإن رؤية هذا التاريخ تعتبر تشخيصية. يمكن أن تكون القيمة القريبة من الصفر أو الحقل المفقود الذي تم إجباره على الصفر أو عدم تطابق المقياس كلها في مكان قريب. التقط القيمة الأولية قبل إلقاء اللوم على التنسيق. يكشف ناتج التقويم عن العمليات الحسابية التي تلقاها.
يعطي جدول العصور البارزة في ToolAcre الصفر تسمية متعمدة، مما يعزز أن 1970 هو مرجع محدد وليس صفحة خطأ يختارها المتصفح.
ساعة يونكس الأولى — تحسب أجزاء من الثانية من بداية 1971 وتنفد مساحة 32 بت في أقل من ثلاث سنوات
قدم المصنف حسابًا تفصيليًا لساعة مبكرة تحسب الستين من 1971. لا يوثق أي من مصادر المستودع المطلوبة هذا التاريخ. إن تكرارها من الذاكرة من شأنه أن ينتهك عقد التأليف حتى لو كان التاريخ الخارجي قد يدعمه لاحقًا.
ما يمكن إثباته هو محور التيار: صفر عند العصر، وثواني موجبة بعده، وثواني سالبة قبله. هذه الآلية كافية لاستخدام برنامج المحول والتشخيص. يجب أن تضيف المقالة التاريخية المستقبلية مصادر أولية أو علمية تمت مراجعتها بدلاً من التعامل مع الكود كدليل على اجتماعات التصميم.
لا يعتمد المستودع على التصميم الأول لساعة يونكس، لذلك لم يتم التأكيد على إعادة البناء التاريخي
ToolAcre يقوم بتسمية الطابع الزمني لنظام Unix المدخل الخاص به ويحدده في توجيه الخطأ بالثواني أو المللي ثانية منذ 1970-01-01 UTC. ولا يشرح المصدر سبب اختيار ذلك العام، وما إذا كانت الاستدارة مهمة أو ما الذي أراده مصممو الأفق. وتظل هذه الدوافع محذوفة.
يشرح الحساب المنفعة الدائمة للأصل الثابت: فالطرح يؤدي إلى المسافة المنقضية، ولحظات أوامر المقارنة، والعلامة تشير إلى أي جانب من الصفر تقع القيمة. اختيار الصفر هو أمر تقليدي؛ والاتساق بين المنتجين والمستهلكين هو ما يجعل الأرقام قابلة للتشغيل المتبادل.
هذا التمييز يبقي الاتفاقية والنتيجة منفصلة. ويمكن للبرمجيات أن تعتمد بثقة على العواقب بينما يواصل المؤرخون تقييم الأدلة حول أصل الاتفاقية.
يستخدم التعريف المطبق 1970؛ ودوافع اختياره تتطلب مصادر تاريخية غير موجودة هنا
نموذج الاختبارات كل يوم كما يفعل التحويل POSIX ويقفز بشكل صريح من `2016-12-31T23:59:59Z` إلى `2017-01-01T00:00:00Z`. وهذا دليل قابل للتنفيذ على سلوك هذه الأداة. إنه ليس اقتباسًا للصياغة أو النطاق الكامل لأي معيار خارجي.
اجعل مطالبات المعايير متميزة عن اختبارات التنفيذ. يُثبت الاختبار ما يفعله الإصدار تحت تركيباته؛ تحدد وثيقة المعايير ما يجب أن تفعله الأنظمة المطابقة. هنا يكون العقد العملي واضحًا بدرجة كافية للتنبؤ بالناتج دون اختراع تاريخ إضفاء الطابع الرسمي.
يمنع الاختبار أيضًا معيد التصنيع المستقبلي من إدراج علامة قفزة خاصة في المخرجات بهدوء. يتم حماية التوافق الملحوظ دون المبالغة في سبب وجود الاتفاقية.
ToolAcre يختبر نموذج النمط POSIX ولكنه لا يعمل كمرجع للمعايير
JavaScript يمثل التاريخ عدد الحقبة بالمللي ثانية، بينما يقبل ToolAcre ثواني Unix ويحولها عن طريق الضرب في 1,000. يُرجع المسار أيضًا كلا النموذجين. يفسر هذا الحد سبب تعرض تطبيقات الويب بشكل متكرر لنفس اللحظة مع ثلاثة أصفار عشرية إضافية.
لا يمكن للمستودع إنشاء التسلسل الزمني الذي من خلاله اعتمدت قواعد البيانات ومكتبات C والأنظمة البيئية الأخرى تمثيلات العصر. بدلاً من سرد انتشار غير مصدر، فإنه يُظهر خط قابلية التشغيل البيني الحالي ويسمي الوحدة المستخدمة. وهذا دليل عملي للمطورين الذين يعملون اليوم.
يتجنب هذا التقييد فشل المحتوى المألوف: سلسلة من المعالم المعقولة التي تتكرر دون اقتباسات حتى يخطئ القراء اللاحقون في التكرار المتراكم على أنه دليل وثائقي.
يُظهر دليل المستودع تمثيل JavaScript بالمللي ثانية، وليس سجل الانتشار الكامل
العصر الثابت لا يحمل أي منطقة محلية. ToolAcre يقوم بتنسيق التاريخ الناتج في UTC وبشكل منفصل في المنطقة المحلية للمتصفح. تمتد القيم السالبة قبل الصفر، كما يوضح اختبار −1. تتبع هذه العواقب مباشرة من المحور الرقمي وطبقة التنسيق.
يحتوي التطبيق أيضًا على نطاق زمني يبلغ ±8.64×10¹⁵ مللي ثانية. وهذا هو حد التمثيل المختار، وليس حدًا متأصلًا في الفكرة المجردة لعصر ما. حدد دائمًا النطاق والوحدة التي تتم مناقشتها قبل التعميم من نتيجة المحول.
قد يقوم المنسق المحلي بتطبيق تاريخ قبل أو بعد حد UTC اعتمادًا على الإزاحة. وهذا لا يتحرك صفرًا؛ فهو يغير فقط إسقاط التقويم البشري.
ما لا يغطيه هذا — عصور الأنظمة الأخرى، مثل 1900، و1601، و1980، والتي لها تاريخها الخاص
يمكن للأنظمة الأخرى اختيار صفر آخر ومقياس آخر، ولهذا السبب قد يظل العدد الصحيح الكبير غير منطقي تحت كلتا الوحدتين ToolAcre. لا تسرد هذه المقالة تاريخ أصول 1900 أو 1601 أو 1980. تركز المادة 340 بدلاً من ذلك على التعرف على عدم التطابق واستخلاص التحويلات من التعريفات الموثقة.
عندما يكون الأصل غير معروف، قارنه بالوثائق المصدرية بدلاً من تغيير الأصفار بشكل متكرر. يفترض محول Unix عمدًا أن 1970; لا يمكنه التعرف تلقائيًا على حقبة أجنبية من رقم واحد. إن إبقاء الأصل بجانب الوحدة يمنع النجاح الحسابي من أن يصبح خطأ دلاليًا.
تتم مقارنة أصول العصر الأخرى بشكل منفصل دون المطالبة بتاريخها هنا
الدرس الموثوق به ميكانيكي: يونكس صفر يرسم بداية 1970 UTC، وتمتد العلامات حوله، وتصبح الثواني JavaScript مللي ثانية قبل تنسيق التاريخ. ToolAcre يجعل كل من هذه الحقائق قابلة للملاحظة بالقيم 0، −1 وجدول العصور البارزة.
تعود أسباب اختيار الأشخاص لهذه الاتفاقية إلى تاريخ المصدر، وليس الاستدلال من الكود الحديث. إن احترام هذه الحدود ينتج عنه وصف أقصر ولكنه أكثر صدقًا. استخدام المحول للحساب. استخدم المواد التاريخية المناسبة قبل إسناد الدوافع أو المعالم.
انضباط الأدلة هو جزء من الدقة الفنية. إن الحذف الدقيق يخبر المشرفين بالضبط بالمصادر الجديدة المطلوبة قبل أن يتمكن الحساب التاريخي من التوسع بشكل مسؤول.