'Hayat-Yaşam' Kategorisi için belgelik

Pardus’ta staj - 3′üncü Hafta

Not: Bu bir yazı dizisidir. 1′inci ve 2′inci hafta’da yaptıklarımı okumak isteyebilirsiniz

  • 11.gün : Kod temizlemesi ile başladım. Proje’ye başlarken aniden giriş yaparak başladığım için modüler,fonksiyonlar hepsi birbirine girmişti. Kod’ları biraz daha düzgün bir hale getirdikten sonra, avahi’nin yolladığı verileri parse etmeye başladım. Daha önce sadece sunucu’yu alıyordum. Fakat artık seçtiğimiz bilgisayarın pozisyonu da yolluyorum. Fakat yollarken verilerde hata oluşuyor. Verileri sadece “string” türünde yollayabiliyorum. O yüzden kolay edilebilecek bir şekilde yollamaya çalıştım. Öğlenden sonra Faik abi gelip bir bakmıştı, avahi ile yollanan verilerde sorun çıktığını neden olduğunu da bilmediğimi anlattım, sonra kendisi ile bunu bir şekilde çözmeye başardık. Bunun dışında subprocess ile oluşturduğum süreçleri, uygulama kapatırken öldürmem gerekiyordu. Oluşan süreçlerin pid numalarını bir şekilde alma ve öldürme işlemlerine baktım kısaca. Günün sonuna doğru ise avahi ile yolladığım verileri parse etme fonksiyonu ile geçirdim
  • 12.gün: Sinerji’nin kullanabilir sürümü çıktı. Avahi ile yollanan verileri parse edebiliyorum artık. Ayrıca QSystemTray de ekledim, yani artık Sinerji bir tray uygulaması ve doğrudan sistem erişilebilinecek. Ayrıca arayüz’deki iki tane radio butonun da sildik. Sunucudan yollanan istekler bundan sonra istemcisinin arayüzüne yansımayacak, onun yerine oluşturduğum QSystemTray’ın kendi metodu olan showMessage() ile gösterilecek. Yani kısaca bir balon çıkacak ve ona tıkladığımızda kabul etmiş olacağız.
  • 13.gün ve 14.gün: Bu günleri günlüğüme tek bir yazı olarak yazmışım. İki gündür tray işi ile uğraşıyormuşum. showMessage() metodu yerine DBus’un kendi bilgilendirme balonlarını kullanacağız. Çünkü Qt’nin balonlarına buton ekleyemiyoruz, DBus’un kendi balonlarına ise buton ekleyebiliriz, böylelikle istemci tarafında çıkan balonlar’da “kabul” ve “iptal” gibi buton çıkacak ayrıca. Sunucu tarafı synergy’i başlatıktan sonra, diğer bilgisayarda arka planda çalışan _sinerji._tcp arama servisi bizim sunucuyu bulacak. Sonra da bu balon çıkacak. O yüzden belirli aralıklarda sinerji servisi araması lazım uygulama. Bunu da QTimer ile halletmişim. Kendisi belirli aralıklarda _sinerji._tcp servisini arıyor. Uygulama bitmiş(böyle demişim :)). Yarın Faik abi’ye gösterip, projenin bittiğini söyleme niyetim olmuş. (Fakat bitmediğini sonraki gün anlayacağım)
  • 15.gün: Faik abi’ye gösterim ve kendisi ile yaklaşık 7-8 tane yapılması gereken iş bulduk(uygulama bitmemiş yanı :)). İlk önce uygulamadaki bazı hataları düzeltim. Neler olduğunu yazmamışım günlüğüme. Ardından “Disconnect” adında bir QDialog oluşturmuşum. Yani bir tane bilgilendirme arayüzü. Örneğin istemci, sunucun yolladığı isteği kabul ettikten sonra ne durumda olduğunu kullanıcıyı bildirmesi lazımdı. Arayüzün kaybolup, onun yerine sistem çekmecesindeki simgeye tıkladığımızda bu bilgilendirme arayüzü çıkması gerekiyordu. QDialog yerine ilk başta QMessageBox kullandım, fakat onun sinyal yollamadığını, bu yüzden kullanıcının tıkladığı butonları belirli fonksiyonlara bağlayamayacağımı öğrendiğim için günün sonuna doğru QDialog ile yeni bir arayüz oluşturdum.

Pardus’ta staj - 2′inci hafta

Not: Bu bir yazı dizisidir. 1′inci hafta’da yaptıklarımı okumak isteyebilirsiniz

  • 6.gün: Bugün avahi ile hem servis oluşturma hem de servise arama işiyle uğraştım. Sonrasında ise arama ve bulma işlemlerini halletikten sonra bunları birer fonksiyon haline getirdim. Böylelikle istediğim her servis için ayrı ayrı modül yazmak zorunda kalmadım. Bunun dışında PyQt4 kullandığım için DBusGmainLoop yerine DbusQtMainLoop kullanmam gerektiğini öğrendim. İnternet’te bu konuda pek bilgi bulamamıştım, fakat sonra Google Codesearch’de bir şeyler buldum ve entegre etmeye başarmıştım.(Blog’a da bir yazı yazmışım bu aralar)
  • 7.gün: Bugün tüm gün createsynergy.py adlı modülü oluşturma ile uğraşmışım. Bu biraz kafamı kurcalıyordu nasıl yaparım ederim diye. Synergy’nin ayarların kaydedildiği bir dosya var ve biz Synergy’i çalıştırdığımızda bu dosyadan verileri okuyarak başlıyor. Sinerji’de ise ayarladıktan sonra bu dosya oluşması lazım ki Synergy bu dosyayı okusun. İlk başlarda zor gelmişti, yapamamıştım. Hatta o gün bu konuda mesai bitimine kadar da bir şey yapamadığımı hatırlıyorum. Akşam odamda düşünürken birden dank etti ve yazmaya başlamıştım ve bitirmiştim.
  • 8.gün: synergy.conf dosyasını oluşturmayı yapabiliyordum. Fakat parse etmeyi bilmiyordum. Yani parse işini halleden modülü yazmamıştım. Onu da bugün bitirdim. Kullanıcı sinerji’yi çalıştırdığında ilk önce bu dosya’yı okuyarak daha önceki ayarları arayüze yansıtacak. Yani her zaman her seferinde aynı işleri yapmaktan kurtaracaktı. Bunun dışında _sinerji._tcp servisini oluşturma ve bulma koduyla ilgilendim. Henüz bilmediğim bir nedenle iki tane servisi ayna arattığımda uygulama çöküyordu. Ya da aynı anda arama ve bulma yapınca da çöküyordu. Bunun nedenini bulamamıştım bugün(Sonraki günler çözüme ulaştım ama)
  • 9.gün: Günlüğümde bu gün için 2-3 satırlık çok kısa bir şey yazmışım. Hala aynı anda arama ve bulma işi ile uğraşıyormuşum bu gün. Fakat henüz çözememişim olayı. Birde sinerji.py yani bizim ana betiğimizdeki avahi ile olan kısımları ayırıp modül olarak ayrı bir dosya olarak yazmışım. Galiba bir iş bitmeden başka bir işe başlayamıyorum. 2 gündür uğraştım bu konu üzerinde.
  • 10.gün: Bugün 2 gündür uğraştığım çökme problemini çözmüşüm. Sorun DBusQtMainLoop olayının her seferinde çalışmasından kaynaklanıyormuş. Ben bu çalıştırma işini avahi’deki arama ve oluşturma fonksiyonların başına koymuştum. Fakat sadece bir kere çalıştırmam yeterliymiş. Bunu main() altına koyduktan sonra sorunsuz bir şekilde iki tane aramayı aynı anda çalıştırmaya başardım. Yani artık hem _workstation._tcp hem de _sinerji._tcp servislerini ağ’da arayabiliyordum. Ayrıca bunun dışında artık sunucu’yu başlatıktan sonra, verileri yollamaya da başardım. Yani oluşturduğum _sinerji._tcp servisi ile verileri de yollayabiliyordum. Birde son olarak os.system yerine subprocess kullanmaya başladım. Normalde os.system ile bash üzerinden istediğimiz komutları çalıştırabiliyorduk. Fakat sonra Gökçen bunun iyi bir fikir olmadığını söyledi bana. Çünkü kullanıcı ayarlarda “rm -rf /” gibi bir isim girebilir ve biz bunu çalıştırabiliriz. Subprocess’de bu olay yok, ön tanımlı olarak bash kapalı geliyor. Kendi içinde çalıştırıyor.

Pardus’ta staj - 1′inci hafta

Bildiğiniz gibi Pardus’ta staja başlamıştım ve 4 haftalık süre sonunda Türkiye’de yaptığım ilk stajımı bitirmiş bulunmaktayım. Bu 4 hafta içinde bir çok şey öğrendim, hatalarımı da gördüm ve ileride ne yapabilirim sorusuna da az olsa cevabımı buldum. Hayatımda bir dönüm noktası olduğu kesin, en azından benim için, çünkü bundan sonra yapmak istediklerimi daha sağlam temeler ile yapabileceğim. Bu benim için çok önemliydi. Staj döneminde bana yardımlarını esirgemeyen herkese çokça teşekkür ederim, ne kadar teşekkür etsem azdır.

Staj dönemimde her akşam ne yaptıklarımı günlüğüme yazmıştım. Hem neler yaptığımı unutmamak için hem de ileride geriye dönüp neler yaptığımı ve nasıl bir gelişme yaptığımı gördüm. İyi ki de yazmışım. Ayrıca açık kaynak kodlu bir proje olduğu için yaptığım tüm kod değişiklikleri de kayıt altına alındı, yani hangi gün ne yaptığımı svn sunucusundan görebileceğiz. Sırayla hangi günler neler yaptığımı anlatayım:

  • 1.gün: İlk gün proje herkes kendini tanıttı. Daha önce neler yaptığımız ve Pardus hakkında neler bildiğimizi sordular. Ardından tahta’ya çeşitli projeleri yazdılar ve yaktın olduğumuz alanlara yönelik bize projeleri verdiler. Yaklaşık 1-2 saat boyunca bunu tartıştık tabi, kim ne yapmak istiyor, ne yapmak istemiyor bunların hepsi Pardus ekibi için çok önemliydi. Onların tek amacı bize 4 hafta boyunca en verimli zamanı yaşatmaktı. Bu günün sonunda “Synergy” projesini seçtim. Danışmanım ise Pınar’dı(Sonra değişti gerçi).Ardından tüm gün boyunca Synergy hakkında dokümanlar topladım, nedir ne değildir bunları öğrendim. Synergy ağ üzerinden çalışan bir program olduğu için en az iki tane bilgisayara ihtiyacım vardı. Bu yüzden ana bilgisayarım dışında bir tane de laptop verdiler. Sonrasında ise bu iki bilgisayara Synergy kurup çalıştırmaya çalıştım. Çalışırken takılıyordu, biraz araştırdım ve 2-3 tane patch buldum, ardından Faik abi ile bunlardan bir tanesini uyguladık.
  • 2.gün: Synergy için arayüz yazmaya başladım. Uygulamanın adına da Sinerji koydum. Türkçe ismi olsun dedim. İlk önce Kitaptan okuyarak PyQt ile denemeler yapmaya başladım, amacım biraz ısınmak ve bir şeyler öğrenmekti. Pınar Qt-Designer ile yapmamı istedi(Daha mantıklı çünkü, arayüz Qt-designer ile yapılacaktı, sonrası ise kendimiz elle yapacaktık) . Bu yüzden kitaptaki 7′inci bölümü okudum ve bir taslak oluşturdum. .ui dosyasını oluşturdum ve bunu mkpyqt.py ile python dosyasına çevirdim
  • 3.gün: Arayüz fikrinden vazgeçtik. Tasma için bir modül yazalım dedik. Ayrıca istemci tarafı otomatik olarak sunucun isteklerini kabul etsin dedik, yani biz Synergy’i çalıştırdıktan sonra diğer bilgisayar sadece kabul etsin, başka bir şey yapmasın dedik. Faik abi ağ’daki bilgisayarlar arasında bağlantı kurmak için avahi’yi söyledi bana. Avahi ile uygulamaları ağ üzerinden birbirleri ile iletişime geçmesini sağlayabiliyoruz. Örneğin Pidgin avahi kullanıyor, bu sayede hiç bir IM servisi gerekmeden, yani Msn, Jabber gibi bir protokoller gerekmeden avahi üzerinden de konuşabilirsiniz. Neyse bugün tüm günümü avahi’ye adadım, nedir ne değildir bunları öğrendim ve python ile nasıl kullanabileceğime baktım. Sitesindeki python bindingleri inceledim, Faik abi’nin yanına 3-4 kere gitmişimdir çünkü anlamadığım çok şey vardı(başını ağrıttım biraz yani). Günün sonunda ise bir servis oluşturabildim. Yani kısaca _sinerji._tcp altında bir servis tüm ağ’ya yayınlanıyordu. Herkes sinerjiyi görebiliyordu. (Not bundan sonra danışmanım Faik abi olacaktı)
  • 4.gün: Bugün hiç bir şey yapmadım. Çünkü ne yapacağımı tam bilmiyordum. Ayrıca tasma modülü yazamayacağımı öğrendim. Tasma Qt3 ile yazılmıştı, ben ise sadece PyQt4 biliyordum yani Qt4 biliyordum sadece. O yüzden tekrar arayüzü oluşturmaya başladım.
  • 5.gün: Faik abi ile tekrar projeyinin gidişatını değiştirdik. Arayüz farklı olsun dedik. Aslında Synergy’de sunucu ve istemci bilgilerini kendimiz yazıyorduk, sonra dedik ki, neden kendimiz yazıyoruz? Neden ağdaki bilgisayarları sinerji kendisi bulup bize göstermiyor. Yani sunucu tarafı da otomatik olacaktı. Ağdaki tüm bilgisayarları görüp, yönetmek istediklerimizi seçecektik. Kısaca bir ileri noktaya çıkartıp daha kullanışlı ve otomatik hale getirmeye başladık. 4 tane combobox(Her yönde bir tane) olsun dedik, ve buradan seçilsin dedik. Seçip programı başlatıktan sonra , karşı tarafta da combobox’larda istek yollayan bilgisayarlar görüntülensin dedik (bu benim fikrimdi). Fakat sonra bu fikirden de vazgeçip daha da kullanışlı bir hale getirecektik

(Not: Bu bir yazı dizisi, uzun olduğu için haftalara ayırdım her hafta için bir yazı, bu yazi birinci hafta’da yaptığım işler ile ilgili)

Host ve Godaddy ile ilgili fikirlerinizi merak ediyorum

Yakın zaman içinde Dreamhost hesabımı tekrar uzatmam gerekecek. Dramhost tarafından aldığım hizmet beni hep memnun etti, yani bu konuda herhangi bir sıkıntım yok. Fakat tek kişilik bir ekip olmam, ve sadece orta hali bir blog barındırmam benim yıllık 120 dollar ödememe engel teşkil ediyor.

Bu kadar ödemek gerçekten istemiyorum, çünkü 120 dolarlık bir iş yok ortada. Bu yüzden godaddy.com üzerinden bir domain alıp, ardından blogspot.com ve google apps uygulamaları ile devam etmek geçiyor aklımdan. Yani blog.arsln.org, mail.arsln.org gibi adresler olacak, fakat hepsi google üzerinde barındırılacak. Bu bana sadece yıllık 10 dolara mal olacak.

Sizde değer mi ? Tavsiye eder misiniz ?

Pardus stajı ve Gebze’ye varış

Herkese selamlar, şu an bunları UEKAE misafirhanesi bilgisayarından yazıyorum. Bana tahsil edilen odasında ethernet girişi var fakat bende kablo olmadığından kendi bilgisayarımı kullanamıyorum. O yüzden şimdilik bu bilgisayarı kullanıyorum.

Dün öğlen Gebze’ye varmıştım. KamilKoç otobüsü ile geldim, fakat gelmem farklı oldu biraz. KamilKoç müşteri hizmetleri Ankara-İstanbul seferinin Gebze’de duracağını sölyemişti, bende buna güvenerek biletimi aldım. Tabi ki bu otobüs dün Gebze’de durmadı ve onun yerine Istanbul-Atasehir’de durdu. Oradan Pendik servisine binerek pendik civarlarında indim, ve Gebze-Harem otobüsü ile buraya geldim. Gelir gelmez buradaki bir aile dostunu aradım ve beni aldılar. Bir gün onlarda kaldım ve sonra da buraya yerleştim.

Pazartesi günü de staj başlayacak. Staj ile ilgili izlenimlerimi sizlere ileriki günlerde aktaracağım.

Yaz okulun bitmesi ve bir türlü bulunamayan profesörler

Sonunda 1.5 aylık yaz okulu dönemim bitti. Özellikle 2 ay boyunca hiç bir şey yapamadım, bu blog’da yazmak ve bazı başka şeyler de dahil. Yazmak isteyip de yazamamanın buruk bir hissi diyelim. Hala içimden bir şeyler yazmak veya yapmak gelmiyor, en kısa zamanda geçecek inşallah. Ayrıca daha Pardus stajım da var önümde yani güzel günler beni bekliyor.

Yaz okulunda matematik dersini tekrar almıştım ve vizelerden birinin sonucunu beğenmediğim için hocamla tekrar görüşmek istemiştim. Fakat nasip olmadı bir türlü. Bugün de yanına gitmek yerine kendisini aradım ve cuma’ya sarktı buluşma, hal böyle olunca daha önceler phd-comics’de gördüğüm şu iki güzel çizgi aklıma geldi(devamı var):

« Previous PageNext Page »