7 Ağustos 2012 Salı

Node.js nedir?

Node.js, Chrome'un Javascript motorunun üzerine kurulmuş, ölçeklenebilir, yazması kolay kurması kolay network uygulamalarıdır. Node.js olay güdümlü (event-driven) , bloklaman I/O (input output) modelini kullanır ki, bu da onu hafif ve etkili olmasına sebep olur. Canlı uygulamalar için bire birdir. Node.js Github üzerinden çatallayabileceğiniz bir projedir ve tam olarak şuradan çatallanabilir. Node.js Microsoft, Yahoo, Ebay ve bir çok güçlü referansa sahiptir. Bu noktada ya asli uygulamalar, ya da uygulamalarını destekleyecek yan uygulamalar için node.js kullandıklarını belirtmektedirler. Etraftan node.js ile ilgili topladığım küçük-büyük bilgileri de derleyip toplayıp, bir başka node.js yazısında sizlere aktaracağım. Devamı için : Node.js nedir?

6 Ağustos 2012 Pazartesi

Java 7 - switch İfadelerinde String Nesnesi Kullanımı

Java'nın 7 versiyonundan önce switch ifadelerinde sadece primitive tipler (char, int, byte, short), bunların wrapper sınıfları (Character, Integer, Byte, Short) ve enumareted tipler (enum) kullanılabiliyordu. Java 7 ile birlikte switch ifadelerinde artık String nesneleri de kullanılabiliyor. Eski usül bir örnek verecek olursak;
public static final int MONTH_JAN = 1;  public static final int MONTH_FEB = 2;  // ...    public void monthProcess (int month)  {      switch (month) {          case MONTH_JAN:          // ...          break;          case MONTH_FEB:          // ...          break;          // ...      }  }
Şimdi de aynı örneğin Java 7'de String nesneleriyle kullanımına bakalım;
public void monthProcess(String month) {      switch (month) {          case "Jan":          // ...          break;          case "Feb":          // ...          break;          // ...      }  }
Java 7'den önce bu örneği if-else if yapısıyla kullanıyorduk.
public void monthProcessWithIf(String month) {      if (month.equals("Jan")) {          // ...      }       else if (month.equals("Feb")) {          // ...      }      // ...  }
Artık doğrudan switch ifadelerinde kullanabiliyoruz. Ayrıca burada belirtildiğine göre Java derleyicisi switch ifadelerinde String kullanınca if-else if yapısına göre daha efektif byte-code üretiyor. Son olarak, switch ifadelerinde kullandığımız String ifadeleri büyük küçük harf duyarlı. Gözden kaçmasın. Ayrıca, Netbeans ve Eclipse (kullanıyorsanız) IDE'lerinin son versiyonlarını yüklemeyi unutmayın. Eski versiyonlar Java 7 desteği vermiyor.  Doğrudan java derleyicisi kullananlar için bu açıdan sorun yok. Devamı için : Java 7 - switch İfadelerinde String Nesnesi Kullanımı

5 Ağustos 2012 Pazar

web hata ayıklama (debug) metodolojileri ve teknikleri

Herkes bir yerlerde elbet bir hata ile karşılaşmıştır. Düşünsenize, o hatayı nasıl giderdiniz? Bir şekilde gidermişsinizdir değil mi? Hata ayıklamanın da yöntemleri mevcut. Bunları, kendim tecrübe ettiğim kadarını (genelde web ile ilgili) sizlerle paylaşmak istiyorum. Bunlardan bazılarını mecbur yapacağız, bazılarını ise alternatifleri arasından tercih edip yapacağız. Örnek Senaryo : Sitenizde bir kısmında hata meydana geldiği, bir tuşun işlevini yerine getirmediği belirtilmiş. Mecburen siteye girip, hatayı kendimiz elde etmeye çalışırız. Bu çok önemlidir. Elde edemiyorsak, hatayı raporlayan kişiyle iletişime geçmemiz gerekiyor. * Bir log yapısı ile bu hata loglanmış mı diye kontrol ederiz. hata loglanmış ise, logda yeterli bilgi muhtemelen vardır, buna göre aşağıdaki yöntemlere geçeriz.

Hata ayıklama için çalışma Şekilleri

  • Canlıda Çalışma : İnsan mecburda kalınca bazen canlıda çalışması gerekebiliyor diyebilirsiniz. Ancak benim bu konudaki tavrım net, canlıda bir şey çalışacak hale getirmeyin kendinizi. Yine de çalışmanız gerekiyorsa bu noktada, Sitenin hizmetini $_SERVER["REMOTE_ADDR"] yardımıyla sizin IP niz dışındakilere kapatınız. Sizin IP'niz dışındakilere güncelleme çalışması yapıldığını belirtiniz.
  • Test ortamında çalışma : Gerçek Projenin aynısını kendi bilgisayarınıza veya test ortamınıza aktararak hatayı orada elde edip, düzeltmeye başlayın.
  1. Yayını Durdurun : Eğer hatanın nüksetmesi kritik önem arz ediyorsa, yayını ivedilikle durdurun. Ziyaretçilere bakım çalışması bilgisi verin. Bu müşterilerinize veya ziyaretçilerinize sizin hatadan haberdar olduğunuzu ve üzerinde çalıştığınızı göstererek, size çalışmak için zaman sağlayacaktır.
  2. Mevcut durumu Garanti altına alın : Hem dosyaları hem de veritabanını daha kötü bir senaryo için yedek alın. Yedek aldığınız veriler, önceki yedeklerin üzerine yazmamasına özen gösterin. Sıkışırsanız, veya daha kötü bir senaryo oluşursa en son state'e (hatanın oluştuğu ilk noktaya) geri döneceksiniz.
  3. Hata mesajlarını artırın , kapalıysa açın : Php hata mesajlarını ve Loglama hizmetlerini yazılım katmanından artırabiliyorsanız artırın. Kapalıysa açın.
  4. Sistemi kurtarmayı aşamalandırın : Hatayı tespit ettikten sonra ne yapacağınızı düşünmeniz gerekir. Madde madde bunları çıkarın. Mümkünse her maddeden sonra yedek alıp, durumu garanti altına alın.
  5. Yazılım hizmetlerini durdurun : Örneğin, yazılımınızda bir mail atma servii var. Siz hatayı tespit ederken sistem herkese mail atıyor olabilir. Bunun önüne geçmek için bu tarz hizmetleri durdurun veya sadece kendinizi ilgilendirecek şekilde düzenleyin.
  6. Log ekleyin : Hatayı tespit etmek için loglama yapın, varsa eğer, loglanan veri miktarını artırıp, logu detaylandırın.
  7. Çözümü Uygulayın : Bazı hatalar barizdir. Bazı hatalar ise bazen oluşur ki en beter hatalar bu şekilde ara-sıra oluşan hatalardır. Çözümü uygulayıp durum değerlendirmesi yapın.
  8. Sorunun çözüldüğünü Teyid edip, siteyi ayağa kaldırın : Artık işlemler bittiğinde, hatanın tekrar oluşmaması için tedbirinizi de alın. Ve siteyi tekrar yayına alın.
  9. Fazladan almış olduğunuz yedekler ile ilgilenin. (Dilerseniz silin, dilerseniz bir kaç gün sonra silmek üzere bir cronjob oluşturun)
Devamı için : web hata ayıklama (debug) metodolojileri ve teknikleri

dubluve.net guncel isletim sistemi oranlari

Dubluve.net in istatistiklerine dayanarak insanların hangi browser'i kullandığını merak etmiştim, yanıtı da paylaşmak istedim.

Birinci Windows!

Google analytics'ten edindiğim verilere göre, dubluve.net'i ziyaret eden kullanıcıların neredeyse %90 ı Windows işletim sistemi kullanıyor. Bunda %95 türkiye ağırlık ziyaretçimizin olmasının etkisinin büyük olduğunu düşünüyorum. İlk 3 veriyi de aşağıda paylaşmak istiyorum. Güncelleme : 05.08.2012  
Browser 4 Ağustos 2012 % Ziyaret
1. Windows
87.95%
2. Linux
8.96%
3. Macintosh
2.45%
Dubluve.net in yazılım ve araştırma ağırlıklı içeriğinin hitap ettiği kesime benzer kesim için bilgiye ihtiyacınız olursa faydalanılabilir diye düşündüm. Devamı için : dubluve.net guncel isletim sistemi oranlari

2 Ağustos 2012 Perşembe

MySQL Table is marked as crashed and last (automatic?) repair failed hatasi

Bu hatayı repair table komutu çalışmayı bitiremedikten sonra tekrar repair etmeye kalktığınızda alırsınız. Normalde Mysql tablonuz crash olduysa;
  repair table tablo_adi;   
komutuyla tablonuzu tamir etmeye çalışabilirsiniz. Ancak gelin görün ki bu işe yaramıyor diyorsanız, en azından MyIsam tablolarda çalışabilecek bir yöntem daha var. /var/lib/mysql/database_adi yoluna gidin. (veya veritabanınızın dosyaları her neredeyse..)
  myisamchk -r -v -f --sort_buffer_size=128M --key_buffer_size=128M /var/lib/mysql/database_adi /tablo_adi.MYI  
şeklinde crash edilmiş bir myIsam motorlu tablonuzu kurtarabilirsiniz.

Tavsiye

Tabi ki bu hale gelip de bu yazıyı gördüyseniz, yedek alma sisteminiz henüz mevcut olmayabilir. Eğer kendinize ait bir sunucunuz var ise, Veritabanı yedekleme cronjobu eklemenizi tavsiye ederim. Buradan mysqldump ile yedek almayı öğrenin. Kendinize ait bir sunucunuz yok ise de hosting hizmeti aldığınız firmadan ISRARLA talep ediniz. Devamı için : MySQL Table is marked as crashed and last (automatic?) repair failed hatasi

yazılımcı adayına tavsiyeler #2

Bu yazıda, yazılımcı olmak isteyen genç arkadaşlarımıza bazı tavsiyelerim olacak. Önceki tavsiyelerime şuradan ulaşabilirsiniz. Tabi belirtmek gerekir ki yine nacizane görüşlerimi paylaşıyorum. Bana katılan veya katılmayan olabilir.

Diğer yazının başında da belirttiğim gibi olmazsa olmaz bir madde söylemek istiyorum : İngilizce MUTLAKA Öğrenin!

1 - Şimdi ne yapsam deme, listeye bak!

Elinde her zaman bir @todo listen olsun ki, mevcut işin bittiğinde veya elinde bir iş olmadığında neler yapacağın konusunda kararsız kalma. Bunu ister bilgisayar ortamında tut, ister çok sevdiğin defterinde. Fakat tut!

2 - Community ve stackoverflow.com

Dünyada yazılımla ilgilienen çooook fazla kişi var. Türkiyede kulaktan dolma bilgiler biraz daha ön planda olsa da, yurtdışında hem kalite olarak hem de sayıca çok fazla kişi bulabilirsiniz sizin yaptığınız şey ile ilgilenen. Yardım isteyin. Fikir isteyin. Community dediğimiz şey, açık kaynak veya ücretsiz yazılımlarda özellikle ayrıca faydalanılması gereken bir konu. Bu kişileri (doğru kişileri) ve bu siteleri (doğru siteleri) takip etmeniz çok iyi olacaktır. stackoverflow.com da bunlardan birisi. Arkadaşlarınızla yarışma yapın. Örneğin stackoverflow.com da 1 ay içinde kim en yüksek puana ulaşırsa, ona kendi içinizde bir ödül alın. Bu 2 açıdan önemli. * 1. si başkalarının kodlarında veya sorunlarında, onların deneyimlerini görüp, tecrübelerini edinebiliyorsunuz. * 2.si başkaları da sizin kodlarınıza veya sorunlarınıza yönelik çözüm önerileri sunuyorlar. Siz probleminizi çözmeye uğraşırken bilin ki başkaları da bunla ilgileniyor.

3 - Dünya Web'de buluşuyor.

Arkadaşlarınız ile bir yerde buluşackasanız bu cafe veya bir lokanta olabiliyor. Veya bir çay bahçesinde görüşebiliyorsunuz. Ancak ölçeği büyütürsek, tüm dünyanın bir araya gelebileceği tek yer Web (www).

Masaüstü yazılım devri azalıyor. İşletim sistemlerinin bile internetten açılması tasarlanan günümüzde, buna göre ya entgere sistemler üzerine ya da web üzerine çalışmanızı tavsiye ederim.

4 - Doğru çalışma ortamınızı (workbench) kurun

Bir işle ilgilenirken , o iş ile ilgili gereksinimler her ne ise, onu çalışma ortamınızda aynen simule etmeniz gerekiyor. Aksi takdirde canlı sistemde çalışmak ve hata üstüne hata yapmak zorunda kalabilrsiniz.

Örneğin facebook eklentisi geliştiriyorsunuz. Kendinize facebook ortamını simule edecek bir yapı kurun. Facebook api'sinden bir array bekliyorsanız, o array'i ilgili metodlarınıza siz gönderin. Facebook'a gerçekten bağlanma ihtiyacını local ortamınızda simule etmiş olursunuz.

5 - Hata loglama

Her ne geliştiriyorsanız geliştirin, kodunuzun bir yerinde hata olma olasılığını bilin. Ancak bu hatayı bize sadece geliştirici araçları raporlamaz. Bir şekilde canlıda çalışan kodlarınızda da hata meydana gelecektir.

Doğru bir hata loglama sistemi kurmanız gerekir demeden önce, sizi bunu önemini idrak etmeye davet ediyorum. ÇOK ÖNEMLİDİR.

Hataları doğru veya yanlış , bir şekilde loglamayı prensip haline getiriniz. Bir hata olduğunda ilk bakacağınız yerler buralar olması lazım. Daha sonra doğru loglamayı kendi ihtiyacınıza göre yaparsınız zaten.

Devamı için : yazılımcı adayına tavsiyeler #2

31 Temmuz 2012 Salı

cpanel eximstatsi otomatik bosaltmak - python

Eximstats tablonuz zaman zaman şişip, makinanızın diskinde gereksiz yer kaplıyorsa, aşağıdaki python kodu ile bu veritabanınızı boşaltabilirsiniz. Bu dosyayı da cronjob'a eklerseniz, her gün otomatik olarak bu işlem gerçekleşmiş olur.
  import MySQLdb as sql  import sys    connection = sql.connect('localhost','root','mysqlrootsifresi','eximstats')  cursor = connection.cursor()  cursor.execute("show tables")  result=cursor.fetchall()  for x in result:          cursor.execute("truncate %s" % str(x[0]))
Not : python 2.4 üzerinde geliştirilmiştir. 2.7 de veya 3.x te çalışacğaının garantisini veremeyiz. * python-mysql eklentsinin yüklenmiş olması gerekmektedir. Devamı için : cpanel eximstatsi otomatik bosaltmak - python