5 Kasım 2012 Pazartesi

Geçtiğimiz 6 ay

İyi günler,

Yaklaşık altı ay önce sistem admini olarak çalıştığım iş yerimden sistem programlama alanında çalışmak istediğim için ayrıldım. (eski işyerimde çalıştığım alanlar için Mayıs ayında hazırladığım eski CV’me bakabilirsiniz.) Bu sürenin bilgisayar ile ilgili olmayan işlerle ilgilendiğim iki buçuk ayı haricinde yazılım konusunda kendimi yetiştirmeye çalıştım. Aşağıda daha detaylı aktaracağım gibi temel bazı konuları öğrenebildiğimi düşünüyorum.
  1. Önceki işyerimde çalışırken network ve işletim sistemleri konusunda detaylı bilgi edinmiştim. Bu dönemde ayrıca “C Programming Language” kitabını okuma ve C bilgilerimi güncelleme fırsatı buldum. Yine bu dönemde “Reversing - Secrets of Reverse Engineering” kitabını okudum ve genel olarak CPU’ların çalışma şekli hakkında bilgi sahibi oldum. Disassembler kullanarak 32-bit x86 için derlenmiş basit kodları inceleyerek pratik yaptım. 
  2. Linux Program Development” kitabı ile memory ve dosya işlemlerine ek olarak Linux işletim sisteminin sağladığı olanakları kullanarak yazılım geliştirmeyi öğrendim. Burada öğrendiklerimle basit bir concurrent (her connection’a özel thread açan) chat server uygulaması yazdım. 
  3. Web programlama yaparken OOP konusunda deneyim sahibi olmuştum. Ama C++ ve özellikle STL konusunda bilgim olmadığı için “ADTs, Data Structures and Problem Solving with C++” kitabını okudum. Kitabı okurken yazdığım küçük programcıklardan birkaçını GitHub'da bulabilirsiniz. 
  4. Daha önce Python ile PyQt kullanarak GUI geliştirmiştim. C++ ile Qt kullanarak komut satırından çalışan bir program için arayüz yazdım. 
  5. Linux Device Drivers 3rd edition” kitabını okudum. ARP paketlerine sahte yanıtlar üreterek kendisini başka network cihazları ile iletişimde gibi gösteren basit bir network driver yazdım. Bir de basit bir char driver yazdım. Henüz gerçek bir donanım için driver yazmadım.
Örnek uygulamalar hakkında daha detaylı bilgiye ve kaynak kodlarına Kod Örnekleri bölümünden ulaşabilirsiniz. Bu örneklerin küçük olduğunun ve ancak giriş seviyesinde bilgi sahibi olduğumu gösterdiklerinin farkındayım. Daha kapsamlı uygulamalar geliştirmek için zamanım olmadı.

Orta ölçekli projelerde deneyim kazanabilmek için zod-engine isimli open-source bir proje ile bir süre uğraştım. Ama proje şu anda aktif olarak geliştirilmiyor. Proje kodunu kullanarak kendim bazı şeyler yaptıysam da şu anda paylaşabileceğim somut bir örnek yok.

Hiç yorum yok:

Yorum Gönder