Gnome etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Gnome etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

25 Nisan 2015 Cumartesi

Linux Stajı Sonucunda


12 Mart sonunda Outreachy (OPW) kış dönemi stajları sona erdi. Ben bu süreçte bellek yönetiminde, THP (transparent huge page) kodları üzerinde çalıştım. Birlikte çalıştığım danışmanımın istersen bir süre daha birlikte çalışmaya devam edebiliriz demesiyle şimdi hala devam ediyorum :).

Staj sürecinde sadece okunur sayfalar, sıfır içerikli sayfalar (zero page, bellekte henüz eşleme yapılmamış sadece okuma isteği almış ve veri içermeyen sayfa) ve swap cache üzerinde çalıştım. Swapteki veriler için birini stajdayken diğeri stajdan sonra olmak üzere iki yama hazırladım. İkisininde ortak yanı do_swap_page kısmında takılıyor olmaları ^_^. Sistem bazen askıda kalıyor, bazen boot aşamasında bile bir panik oluyor gibi problemleri var hala. Koddaki sayaçların değerini daha iyi görebilmek için tracepoint yazdım. Tracepointi de ayrı bir yama olarak göndereceğiz. Askıda kalma problemleri için en iyi yöntemler ise serial console ya da netconsole kullanmak. Geçen gün Sarah Sharp'ın günlüğüne bakarken burada bir netconsole yazısı gördüm :). Askıda kalma olayı genelde spinlocklarda bir hata yaptıysak oluşuyor.

Outreachy'de, Linux Vakfı kendi stajerlerini 5 dakikalık kısa konuşma yapmak için Linuxcon'a davet ediyor. Ben Dublin'de olana katılacağım, Seattle'da olan biraz fazla uzak. Zaten bu ara hangi etkinliğe gitmek istesem hep Dublin'e denk geliyor, aslında ben mümkün olduğunca başka şehirler seçmeye çalışıyorum :).

Nisan başında lwn.net'te stajımla ilgili bir yazı yayınlayacaktık, yazının taslağı hazır, sanırım swaplerle olan işler bittikten sonra onları da ekleyip yayınlayacağız.

Bu staja alınmam benim için biraz sürpriz gibi oldu. Necdet hocanın hadi Ebru başvursana demesiyle başvurdum ve çok iyi oldu, çok da güzel oldu :).

Mezuniyetimden beri evden çalışıyorum, bu biraz değişik oldu. Muhtemelen bir ay daha evdeyim, sonra bir süre çekirdeğe ara verip başka işlere bakıp, sonrasında tekrar döneceğim :). Çekirdek üzerinde çalışmanın diğer alanlara göre daha fazla dikkat gerektirdiğini düşünüyorum. Çünkü bir yerde hata yaparsam o değişikliği geri almak daha uzun sürüyor, daha fazla şeyi kontrol etmem gerekiyor.

Staj sürecimde işini çok iyi yapan insanlarla birlikte çalıştım. Rik, 12 senedir Linux üzerinde çalışıyor. Bunun ilk duyduğumda bir yutkunma .. :).

Aslında üniversiteye başladığımdan beri hep işini çok iyi yapan, hayran olduğum insanlarla bir aradayım. "Harika insanlarla birlikte çalıştım" diyebilmek, bu hayattaki en güzel şeyler arasında ilk sıralarda yer alır. Çomü'de bilgi işleme gitmeye başladığımdan beri ben de bu sözü söyleyebiliyorum ve iş hayatında da böyle devam eder diye ümit ediyorum :).

25 Kasım 2014 Salı

Linux Kernel Internship

Last month I've applied Gnome Outreach Program for Women and sent patches for Linux Kernel. I've applied it because wanted to learn low level things. I also really like computer design and architecture topics. Actually, I have not enough knowledge about them but like to learn them.

Linux Kernel Community accepted to me as an intern. I'll study on Khugepaged swap readahead project. Working with Linux Kernel team will be great experience for me. They really want to help kernel newbies :).

Actually, studying on Linux Kernel needs a lot reading. Just for writing a few code lines needs to read one chapter from one book, a few blog posts about topic and ask something to developers :).

Nowadays, I've started to read about memory management issues like TLB, Huge Pages, Page Fault from one operating system book and also examine do_page_fault() function.

8 Kasım 2013 Cuma

Linux Çekirdeğine Nasıl Katkı Verilir?

Gnome'un düzenlemiş olduğu Outreach for Women etkinliğine başvuru süreci 11 Kasım'da bitiyor. Ben bu süreçte Linux Kernel için hazırlandım. Geçen yıl Gnome'un kendi araçlarına başvuruyordum ama sürekli bir şeyler derlemek, kütüphane sürümlerini uyuşturmaya çalışmak bir miktar sıkıcı olabiliyor. Bunun için jhbuild ya da Fedora'nın bir sonraki, henüz çıkmamış sürümünü kullanmak tavsiye ediliyor :) Çünkü katkı vereceğimiz Gnome aracının depodaki son hali üzerine değişiklik yapmalıyız. Çekirdek üzerinde çalışmanın nasıl olduğunu bilmediğimden bu sefer çekirdeğe başvurmaya karar verdim.

Opw Kernel sayfasında tüm yapılması gerekenler, okumak için önerilen bir kaç kitap var. Öncelikle örnek olarak ethernet kodu içine printk("..") ile bir şeyler yazdırıp, çıktısını dmesg logunda görmek var. Burada Greg Kroah-Hartman ilk yamanın nasıl yapılacağından bahsetmiş. Temel olarak yama göndermeye kernel.org'dan aldığımız çekirdek kodları dizini içerisindeki drivers/staging'den başlayabiliriz. Buradaki kodların yazılış biçimini düzeltmeyle işe başlayabiliriz. Greg'de linkini verdiğim sunumunda bundan bahsetmiş. Çok temel kodlama biçimi düzeltmeleri yapabileceğimiz gibi, daha karma düzeltmeler de yapabiliriz. Bir de yama gönderirken e-posta konu satırına uyarı çıktısının tam halini yazmamız gerekiyor. Kendimiz uyarıyı yorumlayıp "bu yama bunu düzeltiyor" şeklinde yazdıklarımız genelde kabul edilmeyebiliyor. Bu yüzden tekrar göndermemiz gerekiyor.

Opw Kernel'a başvurmak için bu temel yamalardan göndermek yeterli. Hatta bu yılki Opw projelerinden birisi de kodlama biçimi düzeltme ve Todo dosyalarındaki eksikleri kapatma. Todo dosyalarındaki eksikleri kapatmak biraz daha alt seviye, aslında baya bir alt seviye :). Çünkü yapılması istenenler de o kadar açık belirtilmemiş dosyada. Ben de çekirdek uyarı mesajlarını analiz etme ve iyileştirme projesine başvurdum.

Başlangıç olarak Linux Kernel'a kodlama biçimi düzeltme dışında Sparse ve Coccinelle araçlarını kullanarak katkı verebiliriz. Bu araçlarla drivers/staging altındaki kodları derlediğimizde aldığımız uyarı mesajlarına göre düzeltmeler yapabiliriz. Bir de kodlar içerisinde yer alan Fixme etiketlerinden yararlanarak katkı vermek de yapabileceğimiz seçeneklerden birisi. Katkı verirken zorlanabileceğimiz yanlardan birisi, Linux Kernel ekibi kodlama biçimine oldukça önem veriyor. Bu yüzden aynı yamayı defalarca göndermek gerekebiliyor. Hatta kodlama biçimini test etmek için yazdıkları bir Perl betiği var. Zaten kodlama biçimi düzeltme yamalarını gönderebilmek için bu betiği kullanmalıyız.

Sparse aracı ile fonksiyon tiplerinin ya da değişken tiplerinin doğruluğu, gereksiz fonksiyonları kaldırma, tip dönüşüm işlemlerinin doğruluğu gibi uyarıları analiz edebiliriz. Bu düzeltmeleri yapmak için koddaki fonksiyonları okuyup, çağırılma sıralarını kontrol etmek, kzallac, kmalloc, volatile gibi tiplere, tip dönüşümlerine bakmak gerekli. Çeşitli tiplerin ne olduğunu öğrenmek için burayı okumak faydalı olabilir.

Coccinelle aracını ise ben henüz kullanmadım. Ancak önümüzdeki günlerde onu da denemeyi düşünüyorum. Bir de daha karmaşık hataları çözebilmek için bir kitap bulup okumayı düşünüyorum.

Opw ekibi projede çalışmak için kişi seçerken genelde öğrenci olmamasını tercih ediyor :( . Okul dönemi içerisinde olan bir öğrenci seçmektense herhangi bir işte çalışmayan birisini seçmenin daha verimli olacağı düşüncesindeler. Bu yüzden öğrencilerin Opw yaz dönemine başvurunca seçilme ihtimali daha yüksek. Çünkü proje sürecinde bir işin var mı sorusuna, sınav haftalarını yazmaktansa hiç işim yok yazmak, şansımızı artıran bir etken. Eğer ben de bu dönem kabul edilmezsem, yaz dönemi tekrar başvuracağım.

17 Eylül 2013 Salı

Kadın Geliştiriciler İçin Gnome Etkinliği

Gnome'un kadınlar için düzenlediği Outreach Program for Women (OPW) etkinlik süreci yaklaşıyor. Bu etkinlik yılda iki kez düzenleniyor. Her hangi bir akademik kısıtlaması olmamakla birlikte 18 yaşından büyük kadınlar katılabilir. Bu etkinlik GSOC gibi, belirli bir süre, bir danışman yardımı ile uzaktan çalışma gerçekleştiriliyor. Eğer projeyi başarılı bir şekilde tamamlarsak karşılığında $5,000 dolar gibi bir burs da alabiliriz.

OPW 2013 yaz döneminde ise Linux Kernel Gnome'un düzenlediği bu etkinliğe katılmaya başladı. Linux Kernel'a katkı vermeye yeni başlayanlar için güzel bir yazı hazırlamışlar. 2013 yaz dönemi Linux Kernel için çok az bakabilme fırsatı bulduğumdan yama gönderemedim. Bu etkinlikler genel olarak sınav dönemine çok yakın bir zamana denk geliyor :) Diğer projelerle birlikte bu etkinliklere katılmak biraz zor olabiliyor. Eğer bu yıl katılırsam Linux Kernel'a kaldığım yerden devam ederim muhtemelen.

Aslında geçen yıl kış dönemi etkinliğine projelere katkı verip katılmıştım. Ancak seçtiğim proje OPW tarafından geliştirilmek için seçilmedi. Yaz döneminde ise çekirdekle ilgili projeler görünce, o daha çok ilgimi çektiğinden ona katkı vermek istedim.

Gnome'un bu staj etkinliğine GSOC kadar geniş ölçüde organizasyon katılmıyor. Bu yüzden proje seçmek için daha az bir alan var. Etkinliğe katılan organizasyonları görmek için buraya bakabilirsiniz.


21 Ekim 2012 Pazar

Gtk,Qt


Merhaba, bu dönem Gtk ile terminal emülatörü yapmaya çalışıyorum. Geçen yıl Qt üzerinde çalışmış olmam bu dönem yapmaya çalıştıklarıma oldukça yardımcı oluyor aslında. Qt daha çok KDE masaüstü ortamında kullanılmakta(Qt Skype'ta da kullanılıyormuş bugün öğrendim), GTK ise Gnome 'da. Yakuake kullansamda Gnome çok sevdiğim bir masaüstü ortamı olduğunu da söylemeden geçmeyeyim. Gtk ile uygulama yapmak güzel. Kendisi C ile yazılmış ve LGPL ile lisanslanmış. Ben de Gtk'yı Python ile bağlayarak kullanıyorum. Çalıştığım uygulamada henüz terminalimiz çok temel özelliklere sahip. Bugün uygulamaya kaydırma çubuğu ekledim. Bir de uygulamayı çalıştırdığımda o an hangi dizinde çalışıyorsa Bash'te konumu çalıştığı dizin olarak alıyordu. Bunun yerine nereye kurulu olursa olsun o anki kullanıcının ev dizininden başlatılacak şekilde olmasını yaptım. Terminal üzerinde kopyalama yapıştırma gibi işlemlerden de biraz bahsedeyim. Öncelikle "item2.connect("activate",self.copy)" diyerek kopyalama seçeneği aktif olduğunda çalışacak copy adında bir fonksiyon tanımlamış oldum.
def copy(self, widget=None, data=None):
                if self.terminal.get_has_selection():
                        self.terminal.copy_clipboard()
diyerek copy fonksiyonunun içeriğini yazdım. Bu şekide kopyalama işlemimiz tamamlanmış oldu. Sonraki yazılarımda bu iş hakkında daha ayrıntılı bahsetmek üzere görüşürüz :)