Bahasa Melayu

Alat pembangun · Penukar cap masa Unix

Sebab masa Unix bermula pada 1 Januari 1970: sejarah singkat zaman

· Latar belakang

cap masa masa unix format data

Garis masa yang terpancar dari titik sifar pada zaman Unix
Ilustrasi vektor ToolAcre asal

Tiada apa-apa berlaku pada 1 Januari 1970; tarikh itu dipilih untuk kemudahan selepas jam asal Unix mengancam untuk melimpah. Siaran ini menceritakan kisah jam awal Unix, pertukaran kepada saat, dan cara konvensyen itu tersebar di mana-mana.

Tarikh yang tiada siapa yang meraikan — mengapa 1970 terus muncul dalam pepijat, lalai dan papan pemuka setengah abad kemudian

Januari 1970 muncul apabila perisian tersilap dalam tempoh yang kecil atau kiraan saat untuk milisaat. Ia bukan hari lahir sandaran yang dijana oleh ToolAcre; ia adalah titik sifar dari mana input ditafsirkan. Ujian untuk epoch zero mengembalikan `1970-01-01T00:00:00.000Z` dan Khamis.

Oleh itu, melihat tarikh itu adalah diagnostik. Nilai menghampiri sifar, medan hilang dipaksa kepada sifar atau ketidakpadanan skala semuanya boleh mendarat berdekatan. Tangkap nilai mentah sebelum menyalahkan pemformatan. Output kalendar mendedahkan aritmetik yang diterimanya.

Jadual zaman ketara ToolAcre memberikan sifar label yang disengajakan, mengukuhkan bahawa 1970 ialah rujukan yang ditentukan dan bukannya halaman ralat yang dipilih oleh pelayar.

Jam pertama Unix — mengira enam puluh saat dari permulaan 1971 dan kehabisan bilik 32-bit dalam masa kurang dari tiga tahun

Buku kerja membekalkan akaun terperinci tentang jam awal mengira enam puluh daripada 1971. Tiada satu pun daripada sumber repositori yang diperlukan mendokumenkan sejarah itu. Mengulanginya dari ingatan akan melanggar kontrak pengarangan walaupun sejarah luaran mungkin menyokongnya kemudian.

Apa yang boleh ditunjukkan ialah paksi semasa: sifar pada zaman itu, saat positif selepasnya dan saat negatif sebelum itu. Mekanisme itu mencukupi untuk menggunakan perisian penukar dan mendiagnosis. Artikel sejarah masa hadapan harus menambah sumber utama atau ilmiah yang disemak dan bukannya menganggap kod sebagai bukti mesyuarat reka bentuk.

Repositori tidak memperoleh reka bentuk jam pertama Unix, jadi tiada pembinaan semula sejarah ditegaskan

ToolAcre menamakan cap masa Unix inputnya dan mentakrifkannya dalam panduan ralat sebagai saat atau milisaat sejak 1970-01-01 UTC. Sumber itu tidak menjelaskan mengapa tahun itu dipilih, sama ada kebulatan itu penting atau pereka ufuk mana yang dikehendaki. Motif tersebut tetap ditinggalkan.

Aritmetik memang menerangkan utiliti berkekalan bagi asalan tetap: penolakan menghasilkan jarak berlalu, pesanan perbandingan serta-merta, dan tanda menunjukkan sisi mana nilai sifar terletak. Pilihan sifar adalah konvensional; ketekalan di kalangan pengeluar dan pengguna adalah yang menjadikan nombor itu saling beroperasi.

Perbezaan ini memisahkan konvensyen dan akibat. Perisian boleh bergantung dengan yakin pada akibatnya sementara ahli sejarah terus menilai bukti tentang asal usul konvensyen.

Takrifan yang dilaksanakan menggunakan 1970; motif untuk memilihnya memerlukan sumber sejarah yang tidak terdapat di sini

Model ujian setiap hari seperti yang dilakukan oleh penukaran POSIX dan secara eksplisit melompat daripada `2016-12-31T23:59:59Z` kepada `2017-01-01T00:00:00Z`. Itu adalah bukti boleh laku untuk tingkah laku alat ini. Ia bukan petikan untuk perkataan atau skop penuh mana-mana standard luaran.

Pastikan tuntutan standard berbeza daripada ujian pelaksanaan. Ujian membuktikan apa yang dilakukan oleh keluaran di bawah lekapannya; dokumen piawaian mentakrifkan apa yang perlu dilakukan oleh sistem pematuhan. Di sini kontrak praktikal cukup jelas untuk meramalkan output tanpa mencipta sejarah pemformalkan.

Ujian ini juga menghalang refactor masa depan daripada memasukkan label lonjakan khas ke dalam output secara senyap. Keserasian yang boleh diperhatikan dijaga tanpa menyatakan secara berlebihan mengapa konvensyen itu wujud.

ToolAcre menguji model gaya POSIX tetapi tidak berfungsi sebagai petikan piawai

JavaScript Tarikh mewakili kiraan zamannya dalam milisaat, manakala ToolAcre menerima saat Unix dan menukarnya dengan mendarab dengan 1,000. Laluan itu juga mengembalikan kedua-dua borang. Sempadan itu menerangkan sebab aplikasi web kerap mendedahkan segera yang sama dengan tiga sifar perpuluhan tambahan.

Repositori tidak dapat menetapkan kronologi yang mana pangkalan data, perpustakaan C dan ekosistem lain menggunakan perwakilan zaman. Daripada menceritakan sebaran tanpa sumber, ia menunjukkan jahitan kebolehoperasian semasa dan melabelkan unit yang digunakan. Itulah bukti yang boleh diambil tindakan untuk pembangun yang bekerja hari ini.

Sekatan itu mengelakkan kegagalan kandungan biasa: urutan peristiwa penting yang munasabah diulang tanpa petikan sehingga pembaca kemudiannya tersilap pengulangan terkumpul untuk bukti dokumentari.

Bukti repositori menunjukkan perwakilan milisaat JavaScript, bukan sejarah penyebaran penuh

Zaman tetap tidak membawa zon tempatan. ToolAcre memformatkan Tarikh yang terhasil dalam UTC dan secara berasingan dalam zon setempat pelayar. Nilai negatif dilanjutkan sebelum sifar, seperti yang ditunjukkan oleh ujian −1. Akibat tersebut mengikuti terus dari paksi berangka dan lapisan pemformatan.

Pelaksanaan juga mempunyai julat Tarikh ±8.64×10¹⁵ milisaat. Itu adalah had perwakilan yang dipilih, bukan had yang wujud dalam idea abstrak suatu zaman. Sentiasa kenal pasti julat dan unit yang sedang dibincangkan sebelum membuat generalisasi daripada hasil penukar.

Pemformat tempatan boleh menggunakan tarikh sebelum atau selepas sempadan UTC bergantung pada ofset. Itu tidak bergerak sifar; ia sahaja mengubah unjuran kalendar manusia.

Perkara ini tidak meliputi — zaman sistem lain, seperti 1900, 1601 dan 1980, yang mempunyai sejarahnya sendiri

Sistem lain boleh memilih sifar dan skala lain, itulah sebabnya integer yang besar mungkin kekal tidak masuk akal di bawah kedua-dua unit ToolAcre. Artikel ini tidak menceritakan sejarah asal usul 1900, 1601 atau 1980. Artikel 340 sebaliknya memfokuskan pada mengiktiraf ketidakpadanan itu dan memperoleh penukaran daripada takrifan yang didokumenkan.

Apabila asalnya tidak diketahui, bandingkan dengan dokumentasi sumber dan bukannya mengalihkan sifar berulang kali. Penukar Unix dengan sengaja menganggap 1970; ia tidak boleh mengenal pasti zaman asing secara automatik daripada satu nombor. Mengekalkan asal di samping unit menghalang kejayaan aritmetik daripada menjadi kesilapan semantik.

Asal-usul zaman lain dibandingkan secara berasingan tanpa menuntut sejarah mereka di sini

Pelajaran yang boleh dipercayai adalah mekanikal: Unix peta sifar ke permulaan 1970 UTC, tanda-tanda meluas di sekelilingnya dan beberapa saat menjadi JavaScript milisaat sebelum pemformatan Tarikh. ToolAcre menjadikan setiap fakta tersebut boleh diperhatikan dengan nilai 0, −1 dan jadual zaman ketara.

Sebab orang memilih konvensyen itu tergolong dalam sejarah bersumber, bukan kesimpulan daripada kod moden. Menghormati sempadan itu menghasilkan akaun yang lebih pendek tetapi lebih benar. Gunakan penukar untuk aritmetik; gunakan bahan sejarah yang sesuai sebelum mengaitkan motif atau peristiwa penting.

Disiplin bukti adalah sebahagian daripada ketepatan teknikal. Peninggalan yang tepat memberitahu penyelenggara dengan tepat tentang sumber baharu yang diperlukan sebelum akaun sejarah boleh berkembang secara bertanggungjawab.