Tarihte Bugün / Today in History

Vikipedi (Wikipedia) ile günün önemli olaylarını, doğum günlerini ve ölüm yıldönümlerini gösteren uygulama.

Vikipedi (Wikipedia)’nın tarihte bugün bilgilerini bir dosyaya kayıt edip sitemizde istediğimiz tarzda paylaşabileceğimiz bir uygulama yazalım. Sitenin Türkçe adresi burası olup İngilizce adresi de burasıdır. Bu adreslerde istediğiniz güne ait günün önemli olaylarına ulaşabileceğiniz sayfalara gidebilirsiniz. Kodları hem İngilizce hem Türkçe için yapacağım. Diğer dillerde yazmak isteyen aradaki şu iki temel farkı göz önüne alarak yazabilir. Birincisi tarih formatı , ikincisi veri çekilecek xml dosyasına ait adres.

Vikipedi (Wikipedia) sayfalarının dışa aktarılabilmesi için

adreslerini vermektedir. Bu adreslerin sonuna tarih değerini eklediğimde xml formatında ilgili sayfanın verilerini alabiliyorum. Çalışma için tarihte-bugun adlı bir klasör açıp içinde index.php dosyası oluşturuyorum. Dosyanın başında da kendime bir cache klasörü tanımlıyorum. Verimi bu klasöre js formatında kayıt edeceğim.

Bu kodla cache klasörü var mı diye bakıyorum yoksa oluşturuyorum. Böylece tarihte-bugun/cache/ klasörüm veri kaydı için hazır oluyor.

İkinci adımda tarihte bugün sayfasından veri alacağım için Vikipedi (Wikipedia) sayfasına uygun tarih yazısını yazmalıyım. Yukarıdaki adreslerde herhangi bir güne gittiğinizde url kısmanda tarih formatını görebilirsiniz. Örneğin 1 Ocak için Türkçe 1_Ocak English January_1 şeklindedir. Türkçe için gereken kodu (setlocale , date_default_timezone_set) dosyamın başına ekledim yoksa tarihi İngilizce yazabiliyor.

Veri çekerken kullanacağım tarih formatını şu şekilde hallediyorum.

Tarih olayını hallettikten sonra cache dosyamı belirliyorum.

Bu kodun ardına cache dosyam var mı yok mu kontrol ediyorum.

Eğer dosya yoksa ki daha yeni başladığımdan yok, veriyi çekip js dosyasına yazacağım. Bu işlem günde bir kere tekrar edecek, bir tane tarih adını taşıyan js dosyam olduğu için o gün tekrar veri çekme yapmayacak. Ancak ertesi gün yeni dosya kayıt edecek ve bu dosyalar gereksiz yer kaplayacak. Bunu istemediğimden önce cache klasörünü temizliyorum. Temizlerken güncel tr ve en dosyalarımı hariç tutuyorum

Klasör kel kalmasın diye boş bir index.html oluşturuyorum.

Ve şimdi kayıt işlemine başlıyorum. Veriyi çekip xml değişkenine atıyorum.

Bu aşamadan sonra iki xml dosyasından (tr ve en) alacağım verileri ayrı ayrı yazacağım. Verileri istediğim şekilde kayıt etmek için kullanacağım kes, parçal, al vs gibi manipülasyonlar (lafa bak) aynı olduğundan işlemi döngü içinde yapacağım.

Bundan sonraki işlemleri döngüyü kapatacağım yere kadar önce tr için sonra en için tekrar yapacak.

Dosyadaki title bilgisi alıyorum (kullanmadım ama alıyorum işte). Güne ait olayları alacağımız kısım text tagında, orayı da alıyorum.

Dosyayı, örneğin şunu veya şunu açıp text kısmına baktığınızda verilerin tekrarlı formatta belli bir düzende  yazılı olduğunu göreceksiniz. Bundan sonrası bu veriyi nasıl işleyeceğinize bağlı. Daha basit daha güzel fikriniz muhakkak vardır, uygulayın. Ben yaptığımı anlatayım. Önce tagları temizliyorum.

Üç eşittir arasında ekstra açıklamalar vs oluyor, hepsini siliyorum, istemiyorum kardeşim.

Veriyi satır satır bölmek için tek yıldızları kullanıyorum. Bu durumda çift yıldızlı yerler ayarımı bozuyor, onları da siliyorum.

Çift süslü parantezler arasında detay bilgi gibisinden farklı şeyler yazıyor, onları sup içine alıp cite yazısı ile paylaşıyorum.

Sonra süslü süssüz tüm parantezleri , satır atlamaları, tırnakları vs alayını siliyorum.

Oh, biraz temiz oldu. Şimdi kalan veriler 3 kısım, Olaylar ,Doğumlar, Ölümler. Bunlar çift eşittir içinde, bunları bir arraya alıyorum.

Aldığım arrayları biliyorum. Her belli arraylar içinde her bir madde yıldız ile ayrıldığından onları da ayrıca arraya alıyorum.

Her maddede satır atlamak istiyorum o yüzden <br> ile ayırıyorum. p olur, başka şekilde tasarlarsanız başka şey olur, serbest.

O kadar kod yazdık, kendimide ekleyeyim 🙂

Artık veriler yazılmaya hazır. Javascript kullanmak istediğim için veriyi javascript değişkenlerine atamalıyım. Döngüde iki ayrı dosya yazdığımdan ona göre muamele yapmak lazım 🙂

Yukarıda javascript için değişken adları belirledim. Artık yazabilirim.

EN-TR döngüsi bitti, kapatabiliriz.

Betiğin başında dosya yoksa demiştik ve yoksa yapılacakları yaptık. Kapatalım.

Bu index.php yi açtığımda dosya yoksa veriyi çekip yazacak, varsa her hangi bir işlem yapmayacak. Her halükarda beyaz sayfa 🙂

Oluşan js dosyalarının adı ya Türkçe ya İngilizce tarih.

Hem verilerin güncel kalması için hem siteme ekleyebilmek için index.php dosyamı javascript dosyasına çevirebileceğim kodumu yazıyorum.

Aşağıdaki gibi get ile scripti eklediğimde verilerimi alırım, yeni güne girildiyse cache klasörünü temizler, veriyi çeker, yazar ve görüntülemeye hazır olur, dosya varsa bir şey yapmaz.

Bunu eklediğimde veriler basılmaya hazır olur sadece, ekranda bir değişiklik olmaz. Verdiği özgürlükten dolayı böyle tasarlamayı seviyorum. Ekrana basmak için javascript değişkenlerini document.getElementById ile istediğimiz alanda paylaşabilirim.

Örneğin

×
×
×

için

Veya

Today in History

için

gibi.

Değişik örnekler için demolar sayfama bakabilirsiniz.
Hazır dosyaları indirmek isterseniz :
Dosyalar üyelere özeldir: Giriş Yap
Yeni misin? Kayıt ol

You may also like...

1 Response

  1. 23 Eylül 2022

    […]  Tarihte Bugün uygulamasında yaptığım gibi cache klasörünü temizlerim […]

Bir yanıt yazın