11 Aralık 2012 Salı

OPW Başvuru Süreci

Bu ara aslında vizelerin hemen sonrasında hatalarını kapatmak için bir proje seçsem, bugzillalara baksam diye düşünürken Tuğçe(sınıftan arkadaşım) Outreach For Women programı için gruba link atmıştı. Bu program nedir diye sorarsanız Gnome'un sadece kadınların katılabilmesi için düzenlediği kış staj programı. İstenilen projeyi tamamladığınızda 5000 dolarlık ödül de var. Benim de zaten bir yerlere başvurma gibi bir düşünce içerisindeyken bunu öğrenmiş olmamda iyi olmuştu. Tabi hemen linkten projelerin ne olduğuna bakmaya başladım.

Gnome ile ilgili projlerden birini seçmeye karar verdim. Gnome sevdiğim de bir ortamdı açıkçası. Gnome projelerinden Flickr İntegration'a başvurdum. Proje tanımının yapıldığı yerde C, GTK kullanılacağı yazıyordu. Proje içeriğine açıklama olarak arka plan ayarları yaparken kullanıcıların resimlerini Flickr hesaplarına attıkları yerden de çekebilmelerini sağlamak yazıyordu. Bunun benim başvurabileceğim bir proje olduğunu düşündüm. Projede bize yön gösterecek olan geliştirici arkadaşın ismi, mail adresi de yazılıydı. Projelere başvurabilmek için önce bir katkıda bulunmak gerekliydi. Bunun için mentore mail attım. Aslında önce vazgeçtim nasıl ingilizce mail yazacağım diye düşündüm. Sonra mezun olduktan sonra ne olacak, o zaman böyle şeyler gerekme ihtimali çok daha yüksek, şimdiden tecrübem olsun diyerek mail attım. Akşama doğru cevap geldi. Ben katkıda bulunmak için tavsiye istemiştim. Çünkü bugzillaya girip o kadar şeyden hangisi seçsem, nasıl yapsam demektense mentore sormak daha kestirme bir yoldu. O da hemen şurada şöyle bir eksiklik var diye cevap atmış. İlk başlarda C ile GTK'da bocaladım. Daha önce Ruby, Python kullandığımdan C garip geldi. Sonra ben yapamıyorum sanırım diyerek vazgeçtim. Aslında yapamamaktan değilde biraz güvensizlikten kaynaklanıyordu. Sonra Necdet hoca ne yaptın bakalım dedi o gün. Ben de vazgeçtim demeye kalmadan "Nasıl yapabiliriz?, senden ne istemişler?, Cevap attın mı?" kısmına geldi konu:). Hafta sonu C, GTK ile nasıl kullanılır diye bakmıştım ama istenen bugzilladaki eksikliği yapmamıştım. Bir de benden istedikleri uygulamaya ek yapabilmem için kaynak kodu indirip, derleyip çalıştırmam gerekliydi. Bende Ubuntu Unity vardı. Bu yüzden diğer dağıtımlardaki Gnome uygulamalarıyla her şey bire bir aynı gitmiyordu. Sonra ben mentore hangi dağıtımı kullandığını sordum, o da zaten OPW(Outreach Program For Women) için de gerekli olabileceğini düşünerek Fedora kullanmamı tavsiye etti. Fedorayı kendi bilgisayarımda sanala kurdum çok verimsiz oldu. Sonra Necddet hocanın bilgisayarlarından birini alarak onda sanala kurduk. Orada bendeki sanalda çalıştığından daha iyi haldeydi. Aslında orda da kötü çalışıyordu.

Sonra ben istedikleri yamayı hazırlayıp gönderdim. Cevap olarak kullandığım fonksiyonları değilde, aynı işi daha kısa yaptıran başka fonksiyon kullanmam gerektiğini aldım. Daha sonra yeni yama hazırlayıp gönderdim. Akşamında ise bugzilladan aldığım cevap "It works" oldu ;) Sonra geriye başvuru formunda hazırlamam gereken kısım kalmıştı. Ben forma her şeyi çok kısa yazmıştım. Bilgi işlemden aldığım tavsiyelerle biraz daha ayrıntılı bilgi vermem gerektiğini düşündüm. Formda kaç yıldır özgür yazılım projeleriyle ilgileniyorsunuz, bu tür projelere daha önceden başvuruda bulundunuz mu gibi sorular vardı. Onları da cevapladıktan sonra formu gönderdim.

Başvurunun bana kattıkları bir projeye katkı vermek için geliştiricisinden fikir istediğinizde aslında gayet yardımcı olduklarını gördüm. Her ne kadar yanlış dil bilgisiyle ingilizce mail atmaya çalışırken bu durumu gayet normal karşıladıklarını gördüm. Sonradan bakıp kendi fark ettiğim hatalarım için bile uyarı almamıştım. Gerçi farklı anlama gelen şeyler değildi yanlış yazdıklarım, yazarken dikkatsiz davrandığım içindi.

Bundan sonra da dönem içersinde yapacağım işlerin yanında Gnome sayfasından uygulama seçip geliştiricisiyle iletişime geçerek katkı vermeye sürekli devam etmeye karar verdim. Bunun nedeni ise bir hata kapatmaya çalışırken, bir çok başka şey öğreniyor insan. Belki bir dönem üzerinde çalıştığı projeden daha fazla şey öğreniyor bile olabilir. Çünkü katkıda bulunmak istediğiniz araçlarıda çalıştırıp yaptığım ek oldu mu, olmadı mı derken bir çok farklı araç da kullanıyor olmanız gerekebiliyor. Ayrıca büyük projelerdeki büyük insanlarla çalışırken de bir çok tecrübe elde ediliyor açıkçası.

Size tavsiyem eğer katkı vermek aynı zamanda bir şeyler öğrenmek gibi bir düşünceniz varsa sadece proje seçip gereken yerlere mail atmak :)

10 Aralık 2012 Pazartesi

Git Kullanarak Yama Dosyası Hazırlama

Yama  dosyalarını elimizdeki bir dosyanın orjinal hali ile bizim değiştirdiğmiz hali arasındaki farkları kolayca görmek istiyorsak oluştururuz. Peki bunu neden isteriz? Örneğin herhangi bir kodda değişiklik yaparak üzerine yeni özellikler eklediysek kodun orjinal halini yazan kişiye orjinal dosya ve yeni dosya arasındaki farkları göstermede kolaylık sağlar.

Bu işi bir de git format-patch kullanarak da yapabiliriz. Bu, yaptığımız eklemeler arasındaki farkları görmeyi daha da kolaylaştırır. Nasıl oluyor derseniz şu şekilde; örneğin bir kaynak kodu git deposundan aldığımızı düşünelim. Üzerinde bir çok kez değişiklikler yapıyoruz. Yaptığımız değişikliği commit ettikten sonra yama dosyalarını oluşturmak için git format-patch'i kullanırsak kendisi değiştirilmiş dosyaları bulur ve bir önceki committeki haliyle arasındaki farkları gösteren bir yama dosyası oluşturur. Eğer bunun için diff aracını kullanırsak dosyanın orjinal halini başka bir yere almak gibi bir kaç işlem daha gerekecekti. Bu işlemi örneklendirelim, uygulamamızın üzerinde değişiklik yaptıktan sonra aşağıdaki komutları verelim:
git commit -m"Test1"
git format-patch -1
Burada önce commit ettik, sonra yama 1 numaralı olması gerektiğini de belirterek yama dosyası oluşturduk. Oluşan dosya ismi şuna benzer olmalı "0001-Test1.patch" buradaki 0001 bizim -1 olarak yazdığımız kısımı belirtir. Yama dosyasının adını Test1 vermesi ise commit mesajımızla benzer bir dosya ismi olacağı için. Yama dosyasını açıp bakarsak içerisinde "+" simgeleri eklenen satırları, "-" simgeleri ise çıkarılan satırları belirtir. Ben de git format-patch'i daha çok beğendiğimden öğrendikten sonra onu kullanmaya başladım. Şimdilik söyleyeceklerim  bu kadar görüşmek üzere :)

4 Aralık 2012 Salı

İngilizce Önemli

Merhabalar, yazının başlığından da anlaşıldığı gibi biraz İngilizce ve faidelerinden bahsetmek istedim. Aslında günümüzde İngilizce bilmek çok da ayrıcalık sayılımıyor. Ama biz nasıl yapıp ediyorsak okullarda bu kadar yıl "i go to school" dan fazla bir şey öğrenemiyoruz.

Benim şuan lisansta okuduğum bölümde de İngilizce bilmek ciddi anlamda önemli. Çünkü Türkçe kaynak sıkıntısı oluyor. Bu derslerde bir şekilde geçiştirilmiş olsa bile bilişim sektörünün kalbi Türkçe ile atmıyor ne yazık ki. Okulda gördüğümüz derslerde bu yıla kadar(3. sınıf) hocalar pek dilin üzerinde durmamışlardı açıkçası ya da ben öyle gördüm. Ben de 1. sınıfın 2. dönemindeyken(bilgi işlem sayesinde) yuh her şey İngilizce yahu demiştim. Benim dilim çok kötüydü gerçi hala çok iyi değil. Ama en azından bilmediğim bir konuyu okuduğumda anlayabiliyorum şuan, tabi bu okuduğum konunun ağırlığına ve kitabın dili kullanımına göre değişebiliyor.

Tavsiyem açıkçası çalışmaktan başka bir şey değil :) Eğer düz liseyseniz(benim gibi) önce bir sürü kelime ezberlemek gerekli ben 1'in yazında öyle yapmıştım. Kelime ezberleme kartlarınında etkili olacağını düşünüyorum. Ama yazarakta kelimenin tam yazımını öğrenmeniz için çok etkili olur bence. Kelime ezberleme işlemi tabiki sözlükten bakarak hangi kelimeler varmış şeklinde değil de bir şeyler okumaya çalışırken karşımıza çıkan bilmediğimiz kelimeleri not alarak olmalı diye düşünüyorum. Biraz dil bilgisi kuralı da bilsek iyi olur hani. Onun için çok özet olmayan ama anlatırken de baymayan içinde bir çok dil bilgisi kuralı özelliği barındıran kitaplar var. Ben bu yaz bir tane almıştım. Takılınca oradan bakıyorum iyi oluyor. 1'den beri yazları 2 aylık falan kurslara gidiyorum. Çok yardımcı oluyor diyemem ama en azından insan kelimeleri unutmuyor. Okunuşları öğreniyor. Hem bütün yaz evde otursam ne yapacağım zaten. Yabancı müzik dinlemek bence çok etkili oluyor. Eğer müziğin sözlerini bir yerlerden okuyup bilmediğiniz kelimelerin anlamlarına bakıyorsanız tabi.

Bunu bizim okul için(COMU) söylüyorum belki 2. sınıfta  ya da sonraki yıllarda çok mümkün olmuyor(biraz sınavlar biraz da kaytarmaktan) ama 1 olsam daha fazla İngilizce çalışırdım. İngilizce çalışmak çok sıkıcı biliyorum :( Ama her şey sıkıcıya konuyu bağlamadan :) 1. sinif olan arkadaşlara tavsiyem daha fazla İngilizce :)

6 Kasım 2012 Salı

Ne Durumdayız?

Merhaba,bir önceki yazımda üzerinde çalıştığım projeden bahsetmiştim. Şu an ne konumdayız daha neleri yapmam gerekli bu yazımda da ondan bahsedeyim. Terminalde yeni sekme açma yatay dikey bölme renk değiştirme gibi özellikler ve birkaç kısayol eklendi. Ancak bunları henüz tam birleştirmedim. Eski kodu biraz bozup yatay böldükten sonra bu hafta vizelere çalışmam gerekli diye biraktım çünkü :). Bu iki haftalık sınav arasından sonra kodları biraz daha düzenleyip terminali yukarından aşağı inen pencere şeklinde açtırma kısmına bakmam gerekli. Hafta sonu biraz nette aradım ancak nedir nasıl yapılır tarzı bir şey henüz bulamadım. Stackoverflow'a bakmadım gerçi orda belki bulabilirdim ;). Şimdilik anlatıcaklarım bu kadar görüşmek üzere :)

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 :)

3 Eylül 2012 Pazartesi

Konsoldan Nasıl Tweet Atılır?

Merhaba,
internette bloglarda, orda burda gezinirken konsoldan tweet atılabileceğini duydum. Sonra bakalım nasılmış bu bir de ben deniyim eksik kalmıyım diye düşünüp araştırmaya koyuldum. Şu şekilde yapılabileceğini öğrendim adım adım şimdi birlikte yapalım. Önce terminalden
$ sudo vim /etc/apt/sources.list
ile sources.list dosyasını açıp aşağıdaki satırı ekliyoruz.
deb http://ftp.de.debian.org/debian squeeze main
Sonra aşağıdaki komutları veriyoruz.
$ sudo apt-get update
$ sudo apt-get install twidge
Daha sonra bu uygulamayı etkinleştirebilmek için "twidge setup" komutunu veriyoruz. Twitter uygulamasına izin vermek için konsolda çıkan url'yi alıp tarayıcıya yapıştırıyoruz. Bu komutun konsoldaki çıktısı bunun gibi olmalı
----------------------------------------------------------------------------------------------------------

https://api.twitter.com/oauth/authorize?oauth_token.......

Click Allow when prompted.  You will be given a numeric
key in your browser window.  Copy and paste it here.
(NOTE: some non-Twitter services supply no key; just leave this blank
if you don't get one.)

Authorization key:

----------------------------------------------------------------------------------------------------------
Sonra tarayıcıda kullanıcı adı ve parolamızı girip uygulamaya izin veriyoruz. Bize geri dönen pini konsolda "Authorization key" yazan yere girip onayladıktan sonra artık tweet atmaya başlayabiliriz. Benim ilk tweetim şu şekildeydi:
ebru@ubuntu:~$ twidge update
test
:) ben test yazıp yollamıştım. Twidge ile konsoldan kişileri takip etmek, takibi bırakmak, cevap atmak .. vb. şeyleri yapabilirsiniz. Ayrıntılı bilgi için tabiki "man twidge" hoşçakalın :)


21 Haziran 2012 Perşembe

Django Nedir

Django Python ile kodlanan bir web frameworktür. Öğrenilmesi sırasında biraz zorluk yaşansada aslında işleri kolaylaştırır. Django'nun amacı kod yazarken fazlaca ortaya çıkan tekrarları önemektir. Django yazılım mimarisi olarak MVC yi kullanır.

Django nun Sunduğu Yararlar Nelerdir

Django Cache yapısına sahiptir. Cache yapısı sayfanın bir kısmının bellekte tutulmasını sağlar. Bu nedenle yogun web trafigine sahip web uygulamalarında avantaj sağlar.

Django da template sistemi vardır. Asıl bu sayede kodların istenen kısımları alınır baska bir sayfa icin . Sadece etiketler yazılır ve kod tekrarlamalarından kurtulunmuş olunur.

Django yerelleştirme işlemlerine olanak verir. Uygulamanızda herhagi bi degisiklik yapmadan sadece çeviri dosylarını ekleyerek dil desteği vermenizi sağlar.

Django url tanımlamalarda kolaylık sağlar url.py de olusturdugumuz isim uzayına etki edecek fonksiyonu view da tanımlamamız yeterli olur.

Django da bir diger özellikte admin sayfaları otomatik olarak yüklenir.

Baska bi yazımda da django kurulumu yazmayı düsünüyorum .. Görüsmek üzere :)