Yazılımın ilk 250 günü - Part 22

6 dk okuma

211. Gün

Bugün ilk iş olarak sizin de daha önce değinmiş olduğunuz landing page durumunu istenen duruma getirdim. Bu durumu tamamlarken oluşan iki küçük hatalı kısmı düzelttim. Sonrasında ise kişinin bir sohbeti silip tekrar aynı kişi ile sohbet oluşturması sırasında oluşan bir hatayı giderdim. Cuma günü ise gruptan çıkma sırasında oluşan hatalı bir kısmı da giderebilirsem cumartesi günü sunuma hazır ve yeterli seviyede olacağını düşünüyorum.

212. Gün

Bugün teslimden önce son düzenlemeleri yapmak istedim. Bulduğum hataları düzelttim. Birincisi gruptan çıkma ve gruba ekleme kısmı front tarafında sorunluydu. Tamamlandı. İkinci olarak ise yüklenen dosyalar kısıtlanmıştı. Bu kısıt kaldırıldı. Mime type’lar backend tarafında control edilip kullanıcıya iletildi. Buradaki sorun da ortadan kalktı. Mime type’I ne ise o dosya uzantısı ile beraber dosya sunulmakta.

213. Gün

Bugün electron’un dokümanına bakarken hem node.js hem de google chrome ile ilgili iki ayrı linki sayfalarında gördüm. Bu linkteki karikatür sadece chrome’u anlatıyordu. Okudum. Bundan önce ise son kez daha kodu düzenleyip size gönderdim.

Sonrasında ise tekrar node.js dokümantasyonuna göz gezdirirken bir haberle karşılaştım doküman içindeki linklerden birinde. 2016 da bir Türk’ün dünya çapında web geliştirmeyi kısa bir süreliğine aksatması üzerine . Daha doğrusu npm’in buna sebep olması dolayısı ile.

Sadece 11 satır ve içeriği basit olan bir kodun npm’den kaldırılması ile react ve babel kullanan geliştiricilerin birçoğu sorunlar yaşamış ve bunu görünce çok şaşırdım.

Evet bugün sakin bir gündü. Chrome geliştiricilerinin karikatür halinde fikirlerinin ve yaptıklarının özetini okumak çok keyif Verdi açıkçası. Yıllardır bir web tarayıcısı kullanmıştım fakat şimdiye dek bilinçli bi şekilde üzerine bu kadar düşünmemiştim nasıl çalıştığı üzerine. Her ayrı bir sekmenin ayrı bir process olarak düşünülmesi, sandboxing ile zararlı yazılımları engelleme fikri, asenkron yapının nasıl bir ihtiyaçtan kaynaklanıp yazıldığını (evet bunları zaten ya biliyordum ya da farkındalığına varmadan öğrenmiştim aslında). V8 js motorunun yazılma sebebi ve iyi bir garbage collector’un yoksunluğu ile ilgili kısım da oldukça keyifli bir okuma sunmuştu. Atatürk yaşasaydı bence okunmasını genel manada önerebilirdi.

Aylar önce hatta şimdi bile (çok sık olmasa da artık) size anlamak için aşırı çaba sarfediyordum. Anlattıklarınızı kavramayı, öğrenmeyi, kullanabilmeyi, o dili Türkçe’ye çevirmeden konuşabilmeyi öğrenmeye çalışıyordum. Bence ilerledim ama bir junior’ın junior’ı olarak daha çok yolum var.

214. Gün

Bugün tamamen electron dokümanına bakarak uygulama örneklerini kendim de yapmaya çalıştım. Tarayıcılarda olduğu gibi Electron’da da farklı api’ler bulunuyor. Örneğin clipboard api’si için çok benzer şekilde electron’da da ayrı bir api olarak sunuluyor. Uyumsuzlukların olacağı kısımlar tahmin edilebilir ve electron’a da çok zorlanmadan geçirilebilir diye düşünüyorum. Yarın eğer farklı bir görev verilmezse electron’a geçişe başlayacağım.

Bugün ayrıca yazılan kodlar ile ilgili sizin söylediklerinizi de not aldım. İlgili kısımları değiştireceğim ve hafızama sebeplerini kazıdım.

215. Gün

Bugün uygulamayı direkt electron’a geçirdim aslında. Eskiden çalışan her yer normal olarak hâlâ çalışıyordu. Inter Process Communication kısmı benim anladığım kadarı ile şu (tekrar yazıyorum çünkü ileriki zamanlarda bu notlara bakabilirim): Chrome veya herhangi bir tarayıcı çalışırken kullanıcı birden fazla sekme açabilir. En ilkel tarayıcılar tek bir sekme olarak düşünülmüş anladığım kadarı ile. Birden fazla sekme olma durumunda her sekmenin javascript işlemlerini, bellek işlemlerini ayırma gereği duyulmuş. Çünkü bir sekmede eğer bir site patlarsa diğer tüm sekmeler etkileniyormuş ve bu yüzden tarayıcı çöküyormuş (Çok uzak bir zamanda olduğu için zor hatırlıyorum ama evet böyle bir şey vardı). Her sekmeye ayrı bir process denilmiş ve tüm bu küçük process’ler main bir process ile yönetilmiş. Bu yöntem diğer tüm tarayıcılarda da sonrasında benimsenmiş. Electron’da buradaki mantığı uygulayarak main process ve rendering process olarak ikiye ayırmış. İki ayrı context olarak da düşünülebilir gibi geldi.

Henüz session/cookie kısmına çok detaylı bakamadım. Orada bir sorun olup olmadığına yarın bakacağım.

Şimdi bu satırları yazarken aklıma günlük yazılan raporlarla ilgili bir template oluşturma fikri geldi ama benim zihnimdeki template çok sade olduğu için ve yazarken de uğraştırmadığı için vazgeçtim.

216. Gün

Bugün öncelikle Electron uygulamasının üst barında yer alan uygulama ikonu ve ismi kısımlarını güncelledim. Üst barın rengini değiştirmekte problem yaşadığım için üst barı tamamen gizleyip rendering process kısmında tekrar yazdım istediğim şekilde. Yazarken minimizing, maximizing, unmaximizing, closing işlevlerini de bu kısma ekledim. Normalde gelen bildirimler sadece uygulama içerisinde görünüyor. Fakat uygulamayı kullanan kişinin sayfası minimize edilmişse masaüstü bildirimi gelmesini sağlamalıyım. Yarın bu kısmı ekleyeceğim. Tabii ki electron’un sağladığı api ile bunu yapacağım. Bugün ayrıca sayfa boyutlandırma kısmını da electron kullanılması durumuna göre düzenledim. Genel olarak electron’a özel rendering işlemlerini ayrı bir dosya olarak ilgili dosyalara vereceğim sadece. Yarın o kısmı da tamamlayacağım.

217. Gün

Input alanı içeren bir bildirim kutusunu windows os’ta göstermeye çalışmak, pire için yorgan yakmak gibi geldi. İlgili modülü kullanabilmek için birçok ayrı yazılımı da eklemek gerekiyor. Neden electron.js’in içine eklenmemiş ya da neden daha kolay kullanıma hazır hale getirilmemiş anlamadım ama bu biraz daha aşırı detay bir kısım olarak kalmış gibi geldi.

Bu akşam ofiste tekrar deneyeceğim. Ama büyük ihtimalle yarın hiç bu kadar ayrıntıya girmeden normal bir bildirim gösterteceğim aksi gerekmediği sürece. Sonrasında uygulamayı paketleyip kullanıma hazır hale getirmeye çalışacağım. Uygulamanın sonrasındaki sürümlerinde eklenebilir diye düşünüyorum.

Tekrar bu projeyi verdiğiniz için çok teşekkür ederim. İş başa düşünce o kadar çok şey öğrendim ve yaptım ki (bence). İyi geceler.

218. Gün

Geç saate kalan bir rapor oldu öncelikle özür dilerim. Yine de yazmak istedim.

Bugün bildirim kısmını electron’un verdiği özellikler dahilinde tamamladım. Sonrasında yeni bildirim geldiğinde ve uygulama ilk açıldığı sırada görev çubuğundaki simgede flash tarzı bir görüntü yarattım. Sonrasında electron builder kütüphanesi ile uygulamayı paketledim. Çalıştı. Fakat bir problem vardı. Çerez verileri uygulama kapandığında kayboluyordu. Electron’da çalışırken de kayboluyordu fakat build edilince düzelir diye düşünmüştüm. Düzelmedi. Sonrasında araştırdım nasıl yapabilirim diye. Henüz bu sorunu çözemedim. Fakat tıpkı bildirimlerde olduğu gibi, session konusunda da electron’un sağladığı bir native api’yi kullanabilirim. Kullanmadan da yapılabilirdi diye düşünüyorum fakat denesem de yapamadım. Yarın ilk iş farklı bir çözüm yolu denenecek.

219. Gün

Bu sabah aklımda olan düşünceyi netleştirdikten sonra ufak bir google araması ile sorunumu çözdüm. Basitçe, halihazırda çerez bilgileri electron uygulamasına geliyordu. Fakat kalıcı olarak bir yerde bu verileri tutmuyordu (modern tarayıcıların yaptığı gibi). Çerezlerdeki değişimler için “changed” event’i dinlendi. Çerezlerde değişim olduğunda Electron’un kendi belirlediği default bir lokasyona oturum bilgileri kaydedildi. Sonrasında da uygulama paketlenip kullanıma hazır hâle getirildi. Şu aşamada uygulama beni tatmin ediyor. Fakat daha da geliştirilmesi gerekli (Webrtc, notification kısmının düzeltilmesi, front-end iyileştirmeleri, ve tabii ki ölçeklendirilebilir bir uygulama olması için chat verilerinin backend’den çekilmesi işleminin optimize edilmesi gibi).

Sonrasında daha önce okumaya başladığım fonksiyonel programlama ile ilgili kitabı okumaya devam ettim. Yeni ufuklar keşfetmek, bakış açımı genişletmek ve kendimi daha güçlü hissetmek için sanırım. Şimdi baktığım kısımlar tamamen matematik, mantık, temel Haskell veri yapıları üzerineydi. Hobi olarak ve boş zamanlarda okuyup bitirmek istiyorum sadece.

220. Gün

Bugün sadece PHP dokümanını okudum. Başlangıçta hızlıca bir tekrar yapıp siz görev verdiğinizde hazır olmak istemiştim. Unuttuğum şeyler varsa pekiştireyim dedim. Ama her baktığım konuda bakar bakmaz hafızam hemen canlandı gibi hissettim. Biraz fazla gaza gelip, ben neden kendi dilimi geliştirmiyorum ki aslında çok da zor değiller gibi bir fikre kapıldım (Yine cahil cesareti olabilir). Sizin “algoritmayı yazıp, programlama dilinde çıktısını sağlama” fikrinizin tüm dillere uygulanma ihtimalini düşündüm. Güzel olurdu (Tabii böyle bir şey open source ve herkesin geliştirmesine açık olursa anlamlı ve gelişmiş olurdu). Bugün kısaca PHP bilgimi tazelemekle geçti.