obenplus.com | oben+ | Hikayesi bol bir yazılımcının kaleminden, teknoloji dünyasını en önemli ve en ince ayrıntısına kadar takip etmek, bir yazılımcının hayatını, yaşantısını gözlemlemek isteneyenler için...

Archive for Ağustos, 2015

Belki çok basit gözükebilir ama, hayatınız boyunca ara sıra bu sorulara kendi kendinize yanıtlar verirseniz, kendinizi daha rahat hissettiğinizi göreceksiniz. Bu soruların hiç biri için hatalı ya da doğru bir cevap yok. Sadece yapmanız gereken üzerinde çok kısa düşünerek bu sorulara yanıt vermek. Uzun düşünmemelisiniz.

Kendime göre daha önemli gördüklerimi, bazılarınızın okumayı pek sevmeyip özet sevdiğinden ötürü kalın işaretledim. 🙂

  1. Eğer kendi yaşınızı bilmiyor olsaydınız, kendinizin kaç yaşında olduğunuzu düşünürdünüz ?
  2. Sizin için hangisi daha kötü ? Başarısızlığı tecrübe etmek mi yoksa mücadeleye hiç girmemek mi ?
  3. Eğer zaman bu kadar kısa ise, yapmaktan hoşlanmadığımız şeyler için neden bu kadar zaman harcarız, neden en çok sevdiklerimizi daha az yaparız ?
  4. Eğer dünya üzerindeki tek bir şeyi değiştirme hakkınız olsaydı, o şey ne olurdu?
  5. Eğer mutluluk para olsaydı, sizi nasıl bir iş zengin ederdi ?
  6. İnandığınız bir şeyi mi yapıyorsunuz yoksa yaptığınız şeye inanmaya mı çalışıyorsunuz ?
  7. Eğer şimdiden 40 yaşına kadar yaşayabileceğinizi biliyor olsaydınız, hayatınızın geri kalanını çok daha iyi yaşayabilmek için şu anki yaşamınızda ilk neyi değiştirmek isterdiniz ?
  8. Hayatınızda meydana gelen şeyleri ne oranda kontrol altında tutabildiğinizi düşünüyorsunuz ?
  9. Diyelim ki saygı duyduğunuz ve değer verdiğiniz üç kişi ile bir öğle yemeğindesiniz. Sizin çok yakın bir arkadaşınız hakkında, sizin onu tanıdığınızı bilmeden yorumlar yapmaya başladılar. Yaptıkları yorumlar, adaletsiz ve saldırgan. Ne yapardınız ?
  10. Karşınıza çıkan ufak bir çocuğa yaşamla ilgili tek bir taviyede bulunma şansınız olsaydı, o tavsiye ne olurdu?
  11. Aşık olduğunuz birisi için kanunları delip geçebilir miydiniz?
  12. Hayatında hiç, aslında dahi olan bir tanıdığınızı, onu tanımadan önce deli olarak nitelendirdiniz mi ?
  13. Sizi diğer insanlardan ayıran hiç bir şey yapıyor musunuz ?
  14. What have you ever really wanted to do which you’ve never done? What stops you from doing it?
  15. Hayatınızda gerçekten hep yapmak istediğiniz hangi şeyi yapamadınız ? Sizi alıkoyan neydi ?
  16. Asansördeki kat butonuna bir den çok basıyor musunuz ? Bunun gerçekten işleri hızlandırdığına inanıyor musunuz?
  17. Hangisini tercih ederdiniz ? sorunlu bir dahi mi yoksa mutlu bir aptal mı ?
  18. Ne için siz, sizsiniz ?
  19. Eğer kendiniz ile arkadaş olabilme şansınız olsaydı, böyle bir arkadaşınız olmasını ister miydiniz?
  20. En çok neyin değerini biliyorsunuz ?
  21. Hangisini tercih ederdiniz ? Bütün hafızanızdaki anılarınızı mı yoksa hiç bir yeni anı olmamasını mı ?
  22. Hiç bir zaman en çok korktuğunuz şey gerçekleşti mi ?
  23. Çocukluğunuzdan aklınızda kalan en mutlu anınız nedir? Neden en mutlusu o ?
  24. Eğer şimdi değilse, ne zaman ?
  25. Sizce bir şeyin yüzde yüz ihtimalle doğru ya da yanlış olduğunu bilmek mümkün müdür ?
  26. Eğer size milyon dolar verilseydi, işinizi bırakır mıydınız?
  27. En son ne zaman, hiç bir açık planınız olmadığı halde bir aksiyon aldınız ? (Sadece kalbinizde bunu başaracağınıza inanç varken)
  28. Eğer tanıdığınız herkesin yarın öleceğini bilseydiniz, son kez kimi ziyaret ederdiniz?
  29. Sizce yaşamak ile var olmak arasındaki fark nedir ?
  30. Eğer sizi hiç bir kimsenin yargılamayacağını bilseydiniz, neyi daha farklı yapmak isterdiniz ?
  31. Kendinize verdiğiniz en önemli söz nedir?

 


main() methodu string array’den farklı input alabilir mi ?

Hayır. main() metodunun input argumanı sadece ve sadece string array olabilir.

main() metodunun dönüş tipini void den farklı bir tip yapabilir miyiz?

Hayır yapamayız. main() metodunun dönüş tipi sadece ve sadece void olabilir. Void haricindeki hiç bir tip kabul edilemez, sistem main metodunu bulamaz.

main() metodu neden static olmak zorunda? Olmasa olmaz mı ?

Main metodu static olmak zorundadır. Çünkü eğer static olmasaydı, JVM başlangıçtaclass ın bir instenceına sahip olmadığı için ilgili class ı instentiate edemezdi. Instentiate etmek için static metod kullanmasaydık, constructor a ihtiyaç olacaktı. Bu durumda da default constructor değil de custom constructor sahibi olan class ların inputuna karar verilemeyeceği için başlatmak da mümkün olmayacaktı.

main() metodunu private ya da protected olarak tanımlayabilir miyiz?

Hayır, main() metodu sadece public olmalıdır. private ya da protected olarak tabiki overload ederek main metodu tanımlayabilirsiniz fakat JVM tarafından accecible olmaz bu metodlar.

main() metodu override edilebilir mi ?

Hayır edemezsiniz. Çünkü main() metodu compile time da bound edilir. Java’da zaten hiç bir static metodu override edemezsiniz.

main() metodu syncronized edilebilir mi ?

Evet edebilirsiniz. Buna engel bir durum yoktur. main() metodunun süslü parantezleri içersinde java nın sunduğu her kodu yazabilirsiniz.


Java’da SimpleDateFormat ile uğraşırken dikkatli olmak gerekiyor. Çünkü eğer gerçekten çok şanssız biriyseniz her an bir heisenbug ile karşılaşabilirsiniz. (HeisenBug nedir merak ediyorsanız buraya tıklayın)

İlk olarak JavaDoc da SimpleDateFormat nasıl tarif ediliyor inceleyelim;

SimpleDateFormat allows you to start by choosing any user-defined patterns for date-time formatting. However, you are encouraged to create a date-time formatter with either getTimeInstance, getDateInstance, or getDateTimeInstance in DateFormat. Each of these class methods can return a date/time formatter initialized with a default format pattern. You may modify the format pattern using the applyPattern methods as desired. For more information on using these methods, see DateFormat.

Yani elinizde kullanıcı tanımlı bir pattern var, bu patterni kullanarak date-time formatlama yapıyorsunuz. Peki, SimpleDateFormat, thread-safe midir ? Maalesef.

Bu konuda java doc da alt kısımlarda aşağıdaki gibi bir açıklama var;

Date formats are not synchronized. It is recommended to create separate format instances for each thread. If multiple threads access a format concurrently, it must be synchronized externally.

Yani thread-safe olmadığı için aynı anda farklı iki thread date formatlama işlemi yaparken, birbirlerinin formatlarını kullanma riski ile karşı karşıyadırlar. Yani aşağıdaki masum görünümlü kod, pek de masum bir kod değil 🙂

Diyelim ki yukarıdaki gibi bir dateformatter değişkenine sahipsiniz ve bu static instance ı kullanarak farklı threadler üzerinden işlemler yapıyorsunuz. Muhtemelen denemelerin çok büyük çoğunluğunda sorun yaşamazsınız fakat yüzlerce yıl geriden gelen hatalı bir date sonucu almamanız imkansız da değil. 🙂

Bu tarz sorunları yaşama riskini ortadan kaldırmak için ne gibi çözümler var diyecek olursanız da;

1. syncronized Kullanımı

2. FastDateFormat Kullanımı

Apache Commons’un FastDateFormat class ı thread-safe işlem yapmak üzere uygundur.

3. Joda Time Kütüphanesi

Ben kendi uygulamalarımda genel olarak JodaTime kullanmayı tercih ediyorum. Çünkü sadece date formatlamasının thread-safe olması değil, bir çok özelliği de beraberinde getirmesi benim için oldukça avantaj.

4. Java 8 ile gelen DateTimeFormatter Classı

Java8 ile thread safe bir class geldi. Adı da DateTimeFormatter. Eğer Java8 ile geliştirme yapıyorsanız SimpleDateFormat classının yerine terih etmenizi öneririm.

 

Bir de StackOverFlow da ThreadLocal kullanımının önerildiğini gördüm fakat, ThreadLocal memory leak problemlerine yol açabileceği için bence kullanımı pek de doğru olmayan bir çözüm. Bu nedenle önermiyorum.


QWDQWDQD

 

Bugün benim için oldukça önemli bir gün. Çünkü basılı ve online olarak yayımlanan Türkiye Bilgisayar Mühendisleri Odası’nın dergisinde REST yazım yayımlandı. Dergiye buradan, yazıma buradan ulaşabilirsiniz.


    “Success is 99% failure.” – Soichiro Honda

Ben başarısız oldum.

Sen de başarısız oldun.

Hepimiz başarısız olduk…

Size kendi başarısızlıklarımdan biriyle ilgili örnek vermek istiyorum.

Herşey 2006 yılında başladı. Halkalı’da %90 ı düz lise, %10 u süper lise olan bir lisede eğitimimi sürdürüyorum. Lise 2.sınıftayım ve birileri bana ÖSS denilen bir sınavdan bahsediyor. Üniversite sınavının hayatım için önemli bir etkisinin olabileceğini o zamanlarda idrak etmeye başlıyorum. Hiç bir şekilde geç mi kaldım yoksa zamanında mı farkına vardım bilmiyorum. Günler ayları, aylar da yılları kovalıyor ve 2007 yılında sınava giriyorum. Sonuç ise başarısızlık, emekler boşa gidiyor ve Türkiye genelinde 11 binincilikle yetiniyorum. Karşındaki etrafındaki insanların yorumlarını dinlemekten kendini bile dinleyemiyorsun, bir anlık toparlanma oldu ve tekrar sınava hazırlanmaya karar verdim. Sonucunda da 1.600 lerde bir sıralama ile 2008 yılındaki sınavı sonlandırdım.

Aslında anlatmak istediğim şu; hepimizin hayatında sağlam başarısızlıklar yok mu ? Var. Aslında hayatın çoğunda başarısızlıklarımız bizi başarıya götürüyor. Bir konuda başarısız oldukça tecrübemiz artıyor ve ikinci bir konuda başarılı olabilme ihtimalimiz artıyor. Peki nedir başarıyı oluşturan faktörler ? Bence en önemli iki sır her türlü başarı için yol gösterici, hiç öyle düzinelerce liste yapmaya gerek yok 🙂

Sır 1 : Mutlaka Ama Mutlaka Öğrenmeye Devam Etmelisin

Öğrenmenin yaşı yoktur diye klişe bir laf var değil mi ? O laf her ne kadar artık ezberlediğimiz için bize pek de etkileyici gelmese de, aslında çok ama çok önemli. Hiç bir şeyi en iyi bilen olduğunuzu düşünmeyin ve size göre kat ve kat tecrübeli insandan ne kadar çok şey öğrenebilecekseniz, kat be kat tecrübesiz insanlardan da bir o kadar çok şey öğrenebilirsiniz bunu unutmayın. Mesela, şu anda türev, integral sorusu gelse, üniversiteye ilk başladığınız MAT101 günlerinizin kaç katı daha yavaş çözersiniz soruyu eminim tahmin bile edemiyorsunuzdur 🙂 Bu nedenle birileri aslında sizin eskiden çok iyi bildiğiniz şeyleri daha yeni öğrendiği için size bir bilgi tazeleme kaynağı olabilir, bunu aklınızdan çıkarmayın.

Sır 2 : Bir An Önce Başarısız Ol

Aslında sistem oldukça basit : Create It -> Launch It -> Learn From It and Fail Fast

Bir fikriniz var, hızlıca bir prototip derecesinde ve beğenmeyeceğiniz bir örneğini oluşturun, hemen yayınlayın, dersler çıkarın ve batırıyorsanız çabucak batırın. Bu size ikinci denemeniz için zaman kazandırır.

Sizleri güzel bir videoyla başbaşa bırakmak istiyorum;

Sevgiler,

Oben