4 puan yazan GN⁺ 2023-11-12 | 1 yorum | WhatsApp'ta paylaş
  • Unix zaman damgasının 1,7 milyar aralığına girmesi, 1 Ocak 1970 UTC’den bu yana biriken saniye sayısının bu seviyeye ulaştığı anlamına gelir; örnek değer 1782553539 olarak gösterilir
  • Dönüştürme aracı zaman damgasını GMT, kullanıcının saat dilimi ve göreli zamana çevirir; saniye, milisaniye, mikrosaniye ve nanosaniye birimlerini destekler
  • Aynı zamanı ISO 8601 ve çeşitli RFC biçimleriyle birlikte göstererek sistemler arasındaki tarih gösterimi farklarını kontrol etmeyi kolaylaştırır
  • Unix zaman damgası konumdan bağımsız olarak aynı anı işaret ettiğinden, dağıtık uygulamalarda tarih bilgisinin izlenmesi ve sıralanması için kullanışlıdır
  • 19 Ocak 2038’de 32 bit taşma sorun yaratacağından, uygulamaların yeni zaman damgası uygulamalarını benimsemesi veya 64 bit sistemlere geçmesi gerekir

Unix zaman damgasının temeli ve dönüştürme yöntemi

  • Unix zaman damgası, zamanı saniye cinsinden birikimli değer olarak ele alan bir yöntemdir
    • Başlangıç noktası, 1 Ocak 1970 UTC’deki Unix Epoch’tur
    • Belirli bir tarih ile Unix Epoch arasında geçen saniye sayısı zaman damgası değeri olur
    • Bu değer, kullanıcı dünyanın neresinde olursa olsun aynı anı işaret eder
  • Sayfadaki dönüştürme aracı hem zaman damgası girişini hem de tarih/saat girişini destekler
    • Zaman damgası saniye, milisaniye, mikrosaniye ve nanosaniye birimlerinde girilebilir
    • Tarih/saat; yıl, ay, gün, 24 saat formatında saat, dakika ve saniye girilerek Unix zaman damgasına dönüştürülür
    • Sonuçlar GMT, kullanıcının saat dilimi ve göreli zaman biçiminde görülebilir

Birlikte gösterilen standart zaman biçimleri

  • Geçerli epoch örneği, çeşitli standart zaman biçimleriyle birlikte sunulur

Zaman birimi dönüşümleri ve 2038 sorunu

  • Sayfa, insanların okuyabildiği zaman birimlerini Unix zaman damgasındaki saniye sayısına çevirerek gösterir
    • 1 saat: 3600 saniye
    • 1 gün: 86400 saniye
    • 1 hafta: 604800 saniye
    • 1 ay, 30,44 gün esas alınarak: 2629743 saniye
    • 1 yıl, 365,24 gün esas alınarak: 31556926 saniye
  • 19 Ocak 2038’de Unix zaman damgası 32 bit taşma nedeniyle çalışmayı durdurur
    • O tarihten önce milyonlarca uygulamanın yeni zaman damgası uygulamalarını benimsemesi gerekir
    • Ya da zaman damgasının kullanılabileceği süreyi daha da uzatmak için 64 bit sistemlere geçilmelidir

1 yorum

 
GN⁺ 2023-11-12
Hacker News yorumları
  • 100 milyon saniye çok çabuk geçiyor
    Bu arada Unix timestamp 1600000034 anındaki New York Times birinci sayfası şuradaydı:
    https://web.archive.org/web/20200913122714/https://www.nytim...
    1500000301, 1400000634, 1300007806 anları da sırasıyla burada:
    https://web.archive.org/web/20170714024501/http://www.nytime...
    https://web.archive.org/web/20140513170354/http://www.nytime...
    https://web.archive.org/web/20110313091646/http://www.nytime...

    • 3,17 yıl demek
  • Unix timestamp 1 600 000 000 da çok eski sayılmazdı; 2020-09-13 12:26:40 UTC idi
    O zamanki HN tartışması burada: https://news.ycombinator.com/item?id=24452885
    O etkinliği anmak için yazdığım blog yazım burada: https://susam.net/maze/unix-timestamp-1600000000.html
    100 000 000 saniye kabaca 3 yıl 2 ay ettiği için bu tür olayları birkaç yılda bir görüyoruz
    Bence en görkemli olay, hâlâ 9 buçuk yıl uzakta olan Unix timestamp 2 000 000 000 olacak: 2033-05-18 03:33:20 UTC. Böyle bir şey yaklaşık 33 yıl 8 ayda yalnızca bir kez oluyor
    Python'da 1700000000 şöyle görünüyor:
    $ python3 -q

    from datetime import datetime
    datetime.utcfromtimestamp(1_700_000_000)
    datetime.datetime(2023, 11, 14, 22, 13, 20)

    GNU date (Linux):
    $ date -ud @1700000000
    Tue Nov 14 22:13:20 UTC 2023
    BSD date (macOS, FreeBSD, OpenBSD vb.):
    $ date -ur 1700000000
    Tue 14 Nov 2023 22:13:20 UTC

    • 33 yıl ha! 90'ların sonlarında vaktimi MUD oynayarak geçiriyordum ve nedense epoch timestamp'i dosya adı olarak kullanan çok sayıda kayıt dosyası vardı
      Kod tabanının bir kısmını üstlenince bu dosyalarla çok uğraştım; hepsi 800-900 milyon aralığında sayılardı
      Bir noktadan sonra o aralıktaki sayıları görür görmez, birkaç haftalık yanılma payıyla yaklaşık hangi yılın hangi ayı olduğunu hemen kestirebiliyordum
      Tuhaf ortamlar tuhaf süper güçler geliştiriyor
      [0] https://en.wikipedia.org/wiki/Multi-user_dungeon
    • Daha görkemli olay, Ocak 2038'de 2,147,483,648 gibi tertemiz bir sayıya ulaştığında olacak
    • Bence 2222222222 daha özel: Sat Jun 02 2040 03:57:02 GMT+0000
      Şansım yaver giderse 3333333333'ü de bizzat görebilirim. Harika bir gün olur
  • Mükemmel tişörtü yakalamak için https://datetime.store/ sitesini açmanın tam zamanı

    • O web sitesi Salı günü fena çökecek gibi…
      “Patron! DDoS yiyoruz!”
      “Hayır evlat, sadece Salı”
    • İstatistiksel olarak ne zaman öleceğini hesaplayan ölüm saati gibi bir şey kullanabilirsin ya
      Üzerinde o zamanı gösteren bir tişört de bulunabilir mi merak ediyorum
    • Eskiden aklıma gelen 1BTC kahve kupası fikrini hatırlattı. Bitcoin'in ilk kez 20 bin dolara çıktığı erken dönemlerdi
  • 999,999,999'dan 1 milyara geçişi görmek için geç saate kadar uyanık kalmıştım ve “bu haftayı hayatım boyunca hatırlayacağım” diye düşünmüştüm
    60 saat sonra tüm dünyanın o haftayı hatırlayacağını bilmiyordum

    • Timestamp 1000000000 (Sat 2001-09-08 18:46:40 PDT), o zaman kullandığımız hata raporlama sistemi Remedy'de bir bug'a yol açmıştı
      Sistem, epoch'tan bu yana geçen saniyeleri string olarak saklıyordu ama 9 haneye sığacağını varsayıyordu
      1000000000 olunca son haneyi kesmeye başladı; bu yüzden Sat 1973-03-03 01:46:40 PST'ye geri dönüp gerçek zamanın %10 hızıyla ilerlemeye başladı. Oldukça hızlı düzeltildi
    • Bu kadar yakın olduğunu hatırlamıyordum ama o dönemde Slashdot'ı takıntılı gibi okuyordum ve 11 Eylül'de de faydası olmuştu
      Epoch olayını da mutlaka işlemişlerdir
  • 2009'da Boston'da bir otel lobisinde yapılan 1234567890 buluşmasına gitmiştim

    • Büyük bir bankanın trading floor'unda gece vardiyasındaydım
      Türev ürünler teknik destek ekibinin lideri o anın yaklaştığını haber verdi; ben de shell'i açıp watch komutuyla epoch saniyesi yazdıran date komutunu çalıştırarak o anı izledim
      Sonra tekrar işe döndüm
    • O anı hatırlıyorum! O sırada sanırım bir bardaydım ama hazırlıklıydım, laptop yanımdaydı
      Kaçırmamak için yukarı ok tuşuna ve Enter'a durmadan basıp durdum
  • Vinge’in A Deepness in the Sky kitabında en sevdiğim kısımlardan biri ondalık zaman kullanımı: ksec, Msec gibi birimler
    Dünya zamanı ile ondalık zaman arasındaki dönüşümü gösteren harika bir logaritmik ölçek var

    • Aynen! O kitap sayesinde artık ksec’in yaklaşık 15 dakika, Msec’in de yaklaşık 2 hafta olduğunu bakmadan biliyorum
      Kabaca hesap yaparken beklediğimden daha sık işe yarıyor
      Gsec’in bir yüzyılın yaklaşık üçte biri olduğunu Tom Duff’ın gözlemi sayesinde zaten biliyordum
      Yakın zamanda genel olarak böyle bir sisteme geçeceğimizi sanmıyorum. Biyolojik ritimlerle bağlantılı birimler fazla kullanışlı
      Yine de uzaydaki insanlardan söz ederken daha sık görülmemesi biraz şaşırtıcı
      [0] "Bir yılda kaç saniye vardır? Size 3.155 x 10^7 olduğunu söylesem, bunu hatırlamaya bile çalışmazsınız. Öte yandan, yüzde yarım hata payı içinde pi saniyenin bir nanosantury olduğunu kim unutabilir ki." --Tom Duff
    • O kitaptaki yazılım arkeologları, time_t epoch’unun yalnızca 1970 yılı değil, Ay’a inişi işaret ettiğini sanarak yanılıyordu :)
    • Emergents da iyiydi. Liberal ilericilerin bir ütopya kurduğu; %100 istihdam oranı ve herkese elmas saraylar verilen bir dünyaydı
  • 19 Ocak 2038’e 5.148 gün kaldı
    O zamana kadar yaşarsam, ertesi gün 65. doğum günüm olacak. Dijital Armageddon’a tam zamanında varmış olacağım

  • Ondalık gösterimin değiştiği anı kutlamaktansa, görece yüksek basamaktaki bir bitin 0’dan 1’e geçtiği anı anmak daha mantıklı

  • 100 milyon saniye birimi hoşuma gidiyor
    1 yıldan uzun, 10 yıldan kısa. 1.6e8 dönemi pandemiydi. 1.7e8 ne getirecek?

  • Başkalarının da böyle şeylere heyecanlanması hoşuma gidiyor. UNIX Timeval meraklıları bu tf aracını deneyebilir [1]
    Bir arkadaşımın C/Lex/Yacc ile yaptığı şeyi 15 buçuk yıl boyunca her gün kullandım; sonra bu keyfi paylaşmak için Golang + Homebrew’e port ettim
    [1] https://github.com/neomantra/tf
    brew tap neomantra/homebrew-tap
    brew install tf
    Böyle yuvarlak sayıları yazdırmayı denedim. tf 10 basamakta otomatik algıladığı için seqe de oradan başladım

    for TV in $(seq -f %.f 1000000000 100000000 2000000000); do echo $TV $TV | tf -d ; done
    2001-09-08 18:46:40 1000000000
    2004-11-09 03:33:20 1100000000
    2008-01-10 13:20:00 1200000000
    2011-03-12 23:06:40 1300000000
    2014-05-13 09:53:20 1400000000
    2017-07-13 19:40:00 1500000000
    2020-09-13 05:26:40 1600000000
    2023-11-14 14:13:20 1700000000
    2027-01-15 00:00:00 1800000000
    2030-03-17 10:46:40 1900000000
    2033-05-17 20:33:20 2000000000
    İlginç tarihler de var. -g tek satırda birden fazla değeri algılar, -d ise tarihi dahil eder
    echo 1234567890 __ 3141592653 | tf -gd
    2009-02-13 15:31:30 __ 2069-07-20 17:37:33
    Keyifle kullanın. Zamanı öğrenmek için harcadığınız zamanı kazandırsın!