Biz Anıtları Pek Sevmeyiz

2012 yılında “Wiki Anıtları Sever” (Wiki Loves Monuments) fotoğraf yarışmasından söz eden bir yazı yazmıştım. 2010 yılında ilk kez Hollanda’da, 2011 yılında sadece Avrupa’da, ondan sonra ise tüm dünya çapında düzenlenen bu yarışma 2015 yılında da Eylül ayı içinde düzenleniyor. Bu bilgileri şuradan aldım. Aynı sayfada her yıl hangi ülkeden kaç fotoğrafın eklendiği bilgisini de görebilirsiniz. Dikkatinizi çekti mi? Türkiye listede bile değil. Wiki anıtları seviyor ama biz pek sevmiyoruz sanırım milletçe. 🙂

Bu sene Wiki Anıtları Sever fotoğraf yarışmasına katılan ülkeler ve yerel yarışma sayfalarına bağlantıları şöyle: Albania & KosovoAlgeriaArmenia & Nagorno-KarabakhAustriaAzerbaijanBrazilBulgariaEgyptEstoniaFranceGermanyIranIrelandIsraelItalyLatviaMacedoniaMalaysiaMexicoNepalNetherlandsNorwayPakistanPalestineRomaniaRussiaSlovakiaSouth AfricaSpainSwedenThailandTunisiaUkraine

Elinizde bu ülkelerden birinde çekilmiş tarihi ya da kültürel bir anıtın fotoğrafı varsa yarışmaya hemen katılabilirsiniz. Yüklediğiniz fotoğrafları sizin çekmiş olmanız ve daha önce Commons‘a yüklememiş olmanız gerekiyor. Fotoğraflarınız burada Creative Commons Attribution-Share Alike 4.0 International lisansı ile lisanslanmış oluyor ve Wikipedia gibi sitelerde kullanıma açık hale geliyor.

Olur da bizim ülkemizden de organize etmek isteyen birileri çıkarsa şurada neyin nasıl yapılması gerektiği anlatılmış.

1 Eylül 2015

Posted In: Açık Veri, linux, Özgür yazılım

Red Hat’te Linux Çekirdeği Geliştiriciliği

Geçtiğimiz kış Outreachy'de Linux çekirdeği üzerinde, Red Hat'te çalışan Rik van Riel'in danışmanlığında staj yaptım.

Staj bitiminde Rik istersen Red Hat'te birkaç pozisyona başvur, ileride seninle birlikte çalışmak isterim dedi. Aslında birkaç sene daha Türkiye'de kalma kararımı Google görüşmesinden sonra vermiştim ama Red Hat'te çalışma düşüncesi de geri çevirilemez bir şeydi, o yüzden kabul ettim.

İlk önce jobs.redhat.com adresinde ilgimi çekebilecek olan işlere baktım. Rik deneyimli çalışan aradıklarını söyleseler bile, yeni başlayan pozisyonunda da iş bulabiliriz dedi. Open Stack, Sanallaştırma ve Arm işlemciler için çekirdek geliştirimi olarak 3 farklı pozisyona başvurdum. Bu üç pozisyon üzerinde de hiç deneyimim yok ancak daha uygun pozisyonlar bulamadım. Zaten onlar da deneyimi olmayan eleman alacaklarını biliyorlardı.

Open Stack ekibi İstanbul'dan taşınman gerekir, bu gibi durumlarda deneyimsiz geliştriciler yerine kıdemli olanları tercih ediyoruz ama sen şansını deneyip mülakatlara gir dedi. Sonrasında kıdemli elemana daha çok ihtiyaçları olduğunu belirttiler, diğer görüşmeleri yapmadık.

Sanallaştırma ekibi aynı zamanda Rik'in çalıştığı ekip. KVM ve Qemu'yu geliştiriyorlar. Sanallaştırma pozisyonu için öncelikle başlangıç görüşmesi yaptık. 2 hafta sonrasına gün belirleyip ilk mülakata girdim. En fazla teknik soruyu ilk mülakatta aldım, sorular zor değildi. Glassador'dan okuduğum kadarıyla Red Hat için soruları zor olmuyor yazıyordu. İlk görüşmede spinlock, zamanlama gibi temel çekirdek kavramlarından sordu. Yeni bir konu olsa da gerçek zamanlı algoritmalar üzerinde yorum yapmamı istedi. Üniversitede en sevdiğim dersler, staj projemde neler yaptığım, bir yamayı kabul ettirene kadar en fazla kaç sürüm gönderdiğim, stajda kabul edilen yamaların çekirdeğin kaçıncı sürümünde olduğu, Rik'le nasıl çalıştığım, kodlamaya nasıl başladığım .. şeklinde devam eden staj sürecimin her evresinden sorular aldım. Görüşme sonunda bir sonraki adıma geçtiğimi öğrendim \0/.

Sonraki adım 5 farklı mühendisle görüşmeyi içeren bir paket gibi. Bu görüşmelerin hepsi aynı günde olmak zorunda değil ve her biri yaklaşık 50 dk sürüyor.

Red Hat görüşmeleri Google'ınki kadar zor değil ve görüşme zamanlarını istediğimiz kadar geniş bir süreye yayamıyoruz. İki görüşme arasındaki süreyi Google pek önemsemezken, Red Hat'teki arkadaş senin yerine başka birini işe alabilirler, bu yüzden görüşmelere ne kadar erken girsen o kadar iyi demişti.

Diğer görüşmeler çok az teknik soru içeriyordu. Genelde stajda neler yaptığım üzerine konuştuk. Bir gün iki görüşmeye birden girdim. O akşam pek yorucuydu diyebilirim. Birde Google görüşmelerinde bu kadar heyecanlanmadım. Sanırım 3. görüşmeden sonra normal heyecanda konuşabildim.

Son görüşmeyi Rik'in içinde bulunduğu takımın yöneticisi olan bir kadınla yaptık. Tüm görüşmeler içindeki tek kadındı. Görüşebileceğim en yüksek mercideki kişiydi.

Son görüşme çok eğlenceli geçti. Bir iş görüşmesinden ziyade bir arkadaşımla konuşuyormuşum gibiydi. Teknik sorular yok denecek kadar azdı. Çanakkale'den, şimdiki işimden, neden çekirdek üzerinde çalıştığımdan, Türkiye'den taşınma durumumdan konuştuk.

Bu görüşmeden bir iki hafta sonra Red Hat'te işe alındığımı öğrendim, Brno'da çekirdek geliştiricisi olarak çalışacaktım.

Birkaç aydır pek iyi değildim, rahatsızlığım zirveye ulaştığında doktora gittim. Şimdilik çok ciddi bir rahatsızlığım yok ancak İstanbul'dan taşınmaya yetecek kadar da iyi değilim, ülkeyi değiştirmek zaten zor bir durum .. Ben bu kararsızlıklar içerisindeyken Red Hat'e de bunu söyledim, taşınmam 4 ay sürer, ben birkaç ay daha geciktirsem gitmeyi derken Red Hat'ten gelen maaş teklifi çok az oldu. Birde taşınma masraflarını zaten karşılamıyorlar. Bir iki firmadan duyduğum kadarıyla taşınma konusunda çok yardımcı olan yerler de var ..

Brno netten gördüğüm kadarıyla pahalı bir yer değil, ancak Red Hat'in €1k'nın biraz altında maaş teklif etmesine şaşırdım. Mezuniyetten sonra bir seneye yakın bir zaman evden çalıştım ve bu zamanı çok da fazla karşılık almayarak geçirdim. Başarılı projelere bu şekilde katkı vermek bir süreliğine benim için kabul edilebilir bir şey. Ancak bunu yurtdışındayken ve sağlığım da şuan için çok iyi değilken kabul etmedim.

Aslında Red Hat kabul etmediğimde evden çalışmayı teklif etti, kabul ettim ancak sonrasında yeni başlayanların bir sene boyunca ofiste çalışması gerektiğini ve ilk yıldan sonra evden çalışma izinlerinin olduğunu söyledi. Neticede maaş ve rahatsızlığım nedeniyle kabul etmemiş oldum. İk'daki arkadaşa Brno'da çalışmayı İstanbul'da birkaç sene çalıştıktan sonra olsaydı kabul ederdim, dedim. Daha sonraki bir zamanda eğer çalışmak istersem kendisiyle iletişime geçmemi istedi.

Bugünlerde kendime iyi bakıp, daha sağlıklı yaşayarak hayatımı düzene oturtmaya çalışıyorum. Zaten öğrenciyken de yaşama şeklimi değiştireceğim diyerek kendime bu sözü vermiştim. Ben bu sözü tutmaya başlamadan önce, vücudum bana uyarıyı verdi :p. Aslında çok önemli şeyler değil ama çok geç saatlere kadar uyanık kalmamak, az tuzlu yemek, sağlıklı beslenmeye çalışmak gibi okul temposundan sonra daha normal koşullarda çalışmayı düşünüyorum :).

Yurtdışına yine giderim, sonraki zamanlarda karşıma daha iyi koşullarda başka fırsatlar çıkar diye ümit ediyorum.

5 Ağustos 2015

Posted In: çekirdek, Gezegen, iş görüşmesi, linux, mülakat, opw, outreachy, Özgür yazılım, red hat, sanallaştırma

Etkileşimli tahtalarda GNU/Linux

Fatih projesi ülkemizin eğitim hayatını çokça değiştirdi. Etkileşimli tahtalar ve tabletler neredeyse bütün sınıflara girdi. Hem bir bilişimci hem de bir baba olarak projede benim de eleştirdiğim çok şey var ama şimdi yazmak istediğim konu başka.

Hepimizin malumu fatih projesinde kullanılan işletim sistemi çok önemli. Bir kısmı hayatlarındaki ilk bilgisayarı görecek olan çocukların karşısına özgür olmayan bir işletim sistemi çıkarmak ve bütün eğitim hayatları boyunca onu karşılarında tutmak onları "lisans bedeli, krekli yazılım, kırılmış yazılım, izinsiz kullanım, virüs, antivirüs" kavramlarıyla büyütmek demek olacaktır. Debian, Pardus veya Android ise sunacağı teknik olanakların yanında çocuklarımızın "özgürlük, sınırsız kullanım, özelleştirebilme, paylaşım" gibi kavramlarla büyümelerine imkan verecektir.

Her ne kadar etkileşimli tahtalarda windows ve linux yüklü olsa da açılış ekranında işletim sistemini dokunarak seçmek mümkün olmadığından pratikte sadece windows kullanılıyor. İşin doğrusu bir usb klavye takarak linux tarafı seçilse bile üzerinde neredeyse hiç bir eğitim uygulaması bulunmadığından kullanılacak halde de değildi.

Geçen ay TÜBİTAK'ta katıldığım bir toplantıda etkileşimli tahtalar için hazırlanan KDE arayüzünü inceleme fırsatı buldum. Hiç kolay beğenmeyen biri olarak Pardus ekibinin üzerinde çalıştığı bu arayüzü çok başarılı bulduğumu söylemeliyim. Milli Eğitim Bakanlığının etkileşimli tahtalarda GNU/Linux kullanmayı tercih etmesi ülkemizin önünü açacak büyük bir hamle olacaktır diye düşünüyorum.





12 Temmuz 2015

Posted In: Debian, fatih, Gezegen, kde, linux, pardus, tahta

CryptoParty 2015

İnternette kişisel gizlilik ve güvenliğin öneminden uzun uzun bahsetmeyeceğim. Bu konu tabii ki çok önemli. Bu farklındalığa sahip olan kişiler az da olsa gizlilik ve güvenliklerini korumak için birşeyler yapıyorlar. Ancak maalesef çok büyük bir kesim bu konuda farklındalığa sahip değil. Daha değişik bir başka kesim ise farkında olmasına rağmen birşey yapmıyor.

CryptoParty etkinliği, tıpkı Belge Özgürlüğü Günü (Tr.) ve Yazılım Özgürlüğü Günü (İng.) gibi belirli bir konuda toplumdaki farkındalığı arttırmaya yönelik bir girişim. Dünyanın pek çok farklı noktasında, internetteki kişisel gizlilik ve güvenlik konularına dikkat çekmek için, sadece bilgisayarla çokça haşır neşir olan kişileri değil, toplumun her kesimini bu konuda bilinçlendirmek için etkinlikler düzenleniyor. Belge ve yazılım özgürlüğü günlerinden farklı olarak CryptoParty yılın belli günlerinde değil, ilgili kişiler olduğu sürece her zaman düzenlenebilen bir etkinlik.

cryptoparty_logo_vector

16 Mayıs 2015 günü Norveç’in Trondheim şehrinde 20 kadar kişi CryptoParty Trondheim etkinliğinde bir araya geldi. Etkinlikte daha çok kişisel gizlilik ve güvenliğimizi korumaya yardımcı araçlardan (internet tarayıcıları, parola yöneticileri, anlık mesajlaşma uygulamaları, arama motorları vs.), nasıl kullanıldıklarından söz edildi. Ben de özgür yazılımların ne olduğundan ve güvenlik konusundaki öneminden söz ederek katkıda bulundum. Sunum dosyasına (İngilizce) şuradan ulaşılabilir (Bazı slaytlar için geçmiş LKD seminer notlarını kullandım, buradan teşekkür etmeden geçmeyeyim). Sunumların ardından da OTR (Off the record – kayıt altına alınamayan) anlık mesajlaşma yazılımını deneyerek, birbirimize mesajlar gönderdik. Daha fazlası için zamanımız kalmadığından bu etkinliği arada tekrarlamak üzere vedalaştık. Etkinlikteki tartışmalardan çıkan güzel sonuçlardan birisi ise şöyleydi: “Bu araçları kullanan birkaç kişiden birisi olmak sizin kişisel gizliliğinizi arttırmaz, hatta tam tersi etki bile yaratabilir. Bu araçlar, onları kullanan belli bir sayıda insan (mümkünse çoğunluk) olduğunda anlam kazanır ve gerçekten işe yararlar.” O yüzden daha çok CryptoParty! 🙂

 

28 Mayıs 2015

Posted In: linux, Özgür yazılım

Metasploit Framework Giriş

Metasploit Framework, güvenlik açıklarının bulunmasını ve bulunan açıkların kullanılmasını sağlayan bir araçtır. Ruby ile sıfırdan tekrar yazılmıştır.(öncesinde Perl ile yazılmış) Kullanılan terimlerin anlamlarını öğrenip birşeyler denemeye başlayınca ne olduğu insanın aklında daha çok şekilleniyor :) 

Terminoloji:

Exploit: Bir sistemin ya da programın zayıflığından faydalanarak sisteme girişi sağlayabilen ya da zarar veren yöntemlerin tamamıdır.

Local Exploit: Oturum açılmış halde olan sistemde bulunan servis veya yazılımların zayıflıklarını sömüren exploit türüdür.

Remote Exploit: Ağ üzerinden uzaktaki sistemin zayıflıklarını sömüren exploit türüdür.

Payload: Hedef sistemde istenilen eylemi gerçekleştiren bileşendir. Exploitten sonra çalışır.

Auxiliary: Modüller için geliştirilen ek programlar, yardımcı araçlardır. Exploit öncesi sistem hakkında bilgi toplama amaçlı kullanılırlar.

MsfConsole, içinde pek çok hazır exploit bulunduran aynı zamanda bu exploitleri yerel ve uzak erişim için yapılandırabilen bir yazılımdır.

Ubuntu'ya Msfconsole kurulumu için buraya bakabilirsiniz.

MsfConsole:


help: Kullanabileceğimiz komutları ve ne işe yaradıklarını görebiliriz.

Komut          Açıklama
banner        MsfConsole açılış ekranını gösterir.
info             Bir veya daha fazla modül hakkında bilgi verir.
irb               İrb scripting modunu getirir.
jobs            Yapılan işleri gösterir ve düzenler.
load            Eklenti yüklenmesi için kullanılır.
loadpath     Belirtilen yoldan istenilen modülü/exploiti yükler.
route           Oturum trafiğinin yönlendirilmesini sağlar.
save            Etkin veriyi kaydeder.
search         Modül ismi veya açıklamalarda arama yapar.
sessions      Aktif oturumları gösterir ve oturum bilgisi verir.
set               Payload seçiminde bir verinin atamasını yapar.
show           Belirtilen modülü veya tüm modlleri listeler.
sleep           Belirtilen zaman zarfında hiçbir işlem yapılmaması gerektiğini belirtir.
use              Modül seçer.
version        Konsol uygulamasının versiyonunu gösterir.

show exploits: MsfConsole platformundaki exploitleri listeler.
use <exploit>: Exploit seçmek için kullanılır.
show targets: Seçilen exploitin hangi sistemleri etkilediğini görmek içn kullanılır.











set targets <hedefno>: Hedefi seçmek için kullanılır. 
show payloads: Msf’de bulunan payloadları listelemek için kullanılır.


info <payload_adi>: İstenilen payload hakkında detaylı bilgi döndürür.
set PAYLOAD <payload_adi>: Payload seçmek için kullanılır.
show options: Yapılacak saldırı için seçeneklerin görülmesinde kullanılır. "Required" sütununda yes ile belirtilmiş olan seçeneklerin ayarlanması gerekir.


set <RHOST, RPORT, LHOST, LPORT>: Required kısmındaki bilgileri girmek için kullanılır.
exploit:  Gerekli tüm yapılandırma bittikten sonra saldırı başlatmak için kullanılır.

Güvenlik yeni yeni ilgimi çeken bir konu. Öğrendikçe daha fazla yazmaya çalışacağım. Kolay gelsin :)

9 Mayıs 2015

Posted In: giriş, güvenlik, linux, metasploit, msfconsole

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

26 Nisan 2015

Posted In: bellek yönetimi, çekirdek, comu, Gezegen, Gnome, linux, opw, outreachy, staj

wait.h

Birden fazla process ile çalışan kod yazarken bazen wait() / waitpid() sistem çağrılarını kullanmak gerekebilir, bu sistem çağrıları child process yaratan parent process’lerin child’ların bitmelerini beklemek için kullanılır. Örneğin bir child process bir dosyaya yazma yapıyorsa ve parent process daha sonra bu dosyadan okuma yapacaksa önce child’ın tamamen sonlanmasını beklemesi gerekir çünkü child henüz daha dosyaya yazmayı bitirmemişken parent’ın bu dosyadan okuması hatalı sonuçlara yol açabilir.

wait()’in kullanılabilmesi için yazılan kodun en üstüne “#include <sys/wait.h>” satırının eklenmesi gerekir. Ancak bazı kodlarda bu satırın “#include <wait.h>” şeklinde yazıldığını da gördüm. Peki hangisi doğru? diye /usr/include dizini altına bakınırken aslında iki dosyanın da sistemde varolduğunu öğrendim:

$ find /usr -iname 'wait.h'
/usr/include/wait.h
/usr/include/x86_64-linux-gnu/sys/wait.h

Birbirinin sembolik linki olmayan bu iki farklı dosyanın içeriklerine baktığımda ise sys/wait.h olanı içersinde bir .h dosyasından bekleyebileceğim tanımlarla karşılaşmışken ilk wait.h dosyasının içeriğinin güldürecek kadar basit tutulduğunu gördüm:

$ cat /usr/include/wait.h
#include <sys/wait.h>

Muhtemelen BSD, Solaris, Linux vs gibi farklı platformlar arasındaki kod uyumluluğu artırmak için alınmış bir önlem olsa gerek.

20 Nisan 2015

Posted In: Gezegen Yazıları, linux, process, programlama, wait

Linux Çekirdeğine Tracepoint Eklemek

Linux kaynak kodunda değişiklik yaptıktan sonra, bunları izlemek için farklı yollar var. Ben henüz çok değişik bir şey kullanmadım. Bu zamana kadar hep printk ile kern.log'a aktarıp, sonra grep, wc, tailsplit gibi komutlarla inceleme yapıyordum. Aslında çok farklı şeyler kullanırım sanmıştım :) ama danışmanım ilk olarak bu yöntemi önerdi.

kern.log'u incelemek sandığım kadar rahat olmuyor, her adımda kodun patlamadığından emin olmalıyım. Bu yüzden bir sürü şey yazdırıyorum, gerçi panik olduğunda otomatik olarak loglara düşüyor ama bazı askıda kalma durumlarında düşmeyedebilir. Birde her testten sonra log dosyasını boşaltıyorum sonra içinden bir şeyler parse etmek zorlaşıyor, sadece 1 test için dosya boyutunun 15M olduğunu hatırlıyorum. kern.log'u boşaltmak için bir yöntem olarak "sudo tee /var/log/kern.log < /dev/null", bunu kullanabiliriz. Hiç boşaltmadan test yapmaya devam ettiğimde dosya boyutu .. ^_^. Elbette inceleme yapılamayacak kadar büyük oluyor diye bir düşüncem yok ama zorlaştırmasak iyi olur.

Uzunca bir süredir yaptığım değişikliklerde beklenmedik sonuçlar görüyorum, aslında beklenmedik sonuçlar görmek elbette en beklendik şey :P, ilk zamanlar test yaparken her testte farklı bir sonuç görürdüm. Danışmanımın emin misin bunu gördüğüne, o zaman şunu da ekle demesine neden olmuşumdur, sonra başka bir testte ben yanlış bakmışım problem o değilmiş şeklinde döndüğüm çok olmuştur :). Ancak bu sefer öyle olmadı, ben uzunca bir süre hep aynı beklenmedik sonucu aldım. Bu durumda oluşabilecek ihtimaller, 1- ben yanlış bakıyorum, 2- pteleri swapten çektiğim halde hala bir şeyler onların swapte gibi loglanmasına neden oluyor, bunun nedeni belleği mantıklı kullanmak ya da tekrar swape gitmesi gerekirse daha az işlem yapmak istemeleri olabilir.

Test yaparken 800M'lık verinin üzerindeki değişimlere bakıyorum, büyük sayfalar 2M olarak tutuluyor. Tek bir büyük sayfa için 512 kere (normal sayfalar 4kB) döngü yapılıyor, benim de her döngüde 15 satıra yakın yazdırdığımı düşünürsek, bu durumda loglarda gözümden bir şey kaçmamıştır demek pek mümkün değil :). İşte tam bu gibi problemler için tracepoint'ler var.  Tracepoint eklediğimiz her fonksiyon için bir kez çalışıyor, aslında değişkenlerin son değerini, kodun sonuna printk ekleyerek de yazdırabiliriz. Ancak bu yöntem boş yere kern.log'u dolduruyor ve kendi testlerimiz için eklediğimiz printk'lar ile birlikte upstream'e yama gönderemeyiz zaten, yani göndermesek iyi olur :). Tracepointler; printk ekledim, eklemeyi unuttum (bir daha derle), upstreame göndermeden önce printk'ları kaldır bir daha derle - test et gibi şeyleri önlüyor. Tracepoint kodu yazıyoruz ve bir kere derliyoruz, sonra eğer o değişkenlerin değerine bakmak istersek perf aracı ile testleri çalıştırıyoruz ve değerleri görüyoruz :).

Tracepoint Nasıl Tanımlanır?

Daha önceden tanımlanmış tracepoint kodlarını inceleyebiliriz. Birde lwn.net'te çok açık anlatan yazılar var. Örneğin vmscan.c'deki birkaç fonksiyon için tracepoint ekleyeceğiz. Bunun için  include/trace/events/'de vmscan.h dosyası oluşturmalıyız. Tracepoint yazmak için yapmamız gerekenler: 1) temel tanımlamaları yapmak, 2) TRACE_EVENT() tanımlamak, 3) TRACE_EVENT içerisinde belirttiğimiz fonksiyonu kaynak kodda çağırmak.

#undef TRACE_SYSTEM
#define TRACE_SYSTEM vmscan

#if !defined(_TRACE_VMSCAN_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_VMSCAN_H

TRACE_EVENT(....
                             .....
);

#endif /* _TRACE_VMSCAN_H */
#include <trace/define_trace.h>

Şimdi TRACE_EVENT() içeriğini tanımlayalım:
TRACE_EVENT(name, proto, args, struct, assign, print)
name: Kaynak kod içerisinde çağırılacak fonksiyonun adı.
proto: Fonksiyon için prototip.
arg: Fonksiyonun alacağı değişkenler.
struct: Tracepoint içine geçen verilerin depolanması için yapı.
assign: Değişken ataması yapmak için kullanılıyor.
print: Değişkenleri yazdırmak için kullanılıyor.

Yazdırmak istediğimiz değişkenler sadece struct shrinker *shr ve unsigned long lru_pgs değişkenleri olsun:

TRACE_EVENT(mm_shrink_slab_start,
    /* proto */
    TP_PROTO(struct shrinker *shr, unsigned long lru_pgs),
    
    /* arg */
    TP_ARGS(shr, lru_pgs),

   /* struct */
    TP_STRUCT__entry(
        __field(struct shrinker *, shr)
        __field(unsigned long, lru_pgs)
    ),

    /* assign */
    TP_fast_assign(
        __entry->shr = shr;
        __entry->lru_pgs = lru_pgs;
     ),

     /* print */
     TP_printk("shr = %p,  lru_pgs = %ld",
                       __entry->shrink,
                       __entry->lru_pgs)
);

TRACE_EVENT içerisinde mm_shrink_slab_start şeklinde belirttiğimiz fonksiyonu, vmscan.c dosyasından, önüne trace_ ekleyerek bu şekilde çağırıyoruz: trace_mm_shrink_slab_start(shr, lru_pgs); Bu değişkenler için sırasıyla proto, arg, struct ve assing'ı tanımladık. Daha sonrasında print ile yazdırma kısmını ekledik.

vmscan.h dosyasının tüm içeriğine buradan bakabilirsiniz. Dosya içerisinde event_class, define_event gibi tracepoint'leri gruplayarak tekrara düşmeyi önleyen makrolar kullanılmış. Ben henüz bunlara gerek duymadım. Tracepoint kullanmak için yukarıda belirttiğim 3 temel maddeyi yapmak yeterli.

                   http://lwn.net/Articles/379903/

17 Nisan 2015

Posted In: çekirdek, Gezegen, linux, test etme, tracepoint

Başka Bir Teknoloji Mümkün

2012 yılında Ege Üniversitesi’nde düzenlenen, enerji, bilişim ve tarım alanındaki alternatifler üzerine bir çalıştayda yanıtlamıştık “Başka bir teknoloji mümkün mü?” sorusunu.  O dönemde çalıştay hakkında yazdıklarıma şuradan ulaşılabilir. Tayfun Özkaya hocanın önayak olduğu ve oldukça güzel geçen bu çalıştayın ardından, çalıştayda konuşulup tartışılanları kitap haline getirme fikri doğdu. Uzun çabalardan sonra 2015 yılının Mart ayında nihayet “Başka Bir Teknoloji Mümkün” kitabımız daha da zenginleştirilmiş olarak raflardaki yerini aldı. 

Kitapta çalıştayın takipçisi olarak sürdürülebilir enerji politikaları, yerel tohum ve GDO, özgür bilgisayar yazılımları gibi konular ele alınmakta. Buna ek olarak Adrian Smith, Jean Robert ve Philip J. Vergragt’ın Türkçe’ye çevrilmiş yazıları bulunmakta. Bazen insanların doğayı nasıl tahrip ettiğine, uygulanan yanlış enerji politikalarına, insan sağlığını hiçe sayan tarım ürünlerine, tekelleşmiş yazılım firmalarına bakıp da iç geçirdiğiniz oluyorsa ve kendi kendinize “Bu böyle ne kadar daha gidecek, yok mu bir çözümü?” diye soruyorsanız bu kitabı beğenebilirsiniz. Çünkü yanıtlamaya çalıştığımız “Başka bir teknoloji mümkün mü?” sorusunun yanıtını en baştan veriyoruz: “Evet, başka bir teknoloji mümkün!”

kitap_baskateknolojiKitabın içindeki bölümler ise şöyle:

1- “Başka Bir Teknoloji Mümkün mü?” Sorusu Üzerine Kısa Bir Deneme
Duygu Kaşdoğan

2-Teknoloji Sürdürülebilir Hayata Nasıl Katkıda Bulunabilir?
Philip J.Vergragt

3- Teknoloji ve Mühendislik Bilimlerinin Kavramsal Tarihi Üzerine
Prof. Dr. Beno Kuryel

4- Bilgisayar ve Özgürlük: Özgür Yazılımlar
Özlem Özgöbek

5-Teknolojik Determinizm ve Teknolojinin Toplumsal Denetimi
Dr. Baha Kuban

6- Özgür Tohumlar ve Tarım
Prof. Dr. Tayfun Özkaya

7-Alternatif Teknoloji
Jean Robert

8-Biyolojik Mücadele, Şirketlere mi Topluma ve Doğaya mı Hizmet Edecek?
Prof. Dr. Tayfun Özkaya

9- Alternatif Teknoloji Hareketi: Çerçeve Analizi ve
Teknoloji Geliştirme Üzerine Müzakereler
Adrian Smith

10- İklim Değişikliği ve Karbon Kilitlenmesi
Dr. Baha Kuban

11-Satılık Bilim İnsanları Aranıyor
Prof. Dr. Tayfun Özkaya

12- SORU VE CEVAPLAR

13 Nisan 2015

Posted In: linux, Özgür yazılım

Half-Life 3 Hakkında Bazı Tahminler

Okuduğum bazı haberlerde Valve’in Half-Life 3’ü kendi oyun konsolunun (Steam Machine) tanıtımını yapabilmek için SteamOS ile aynı anda ilk önce SteamOS’a özel olarak çıkartması, daha sonra bunu takip eden birkaç ay sonra ise Mac ve Windows platformlarına getirmesi olasılığına değiniliyor.

Tux_Freeman_by_EnPsyane

Konuyu takip eden herkes SteamOS işletim sisteminin temellerinde GNU/Linux’un yattığını bilir; yani Half-Life 3’ü ilk önce Ubuntu, Mint gibi Linux kullanıcılarının oynayacak olması anlamına geliyor bu. Bundan on sene önce, bilemedin hadi beş sene önce tüm dünya “Linux’ta oyun oynanmaz” diyip geçerken artık günümüzde dünyada oyuncuların neredeyse GTA5 heyecanıyla beklediği Half-Life 3’ün ilk önce Linux’ta oynanabilecek olması olasılığı gayet sevindirici. Tamam Half-Life 3 çok büyük olasılıkla bir özgür yazılım olmayacaktır ama yine de Linux’un tanınırlığını artırmak için gayet mantıklı bir hamle olacaktır.

“Half-Life 3 mü geliyormuş?” demeyin bu arada; Rockstar’ın GTA5’i duyurduğu ilk günden bu yana PC’ye de getireceği ne kadar belliydiyse HL3’ün şu an geliştirilmekte olduğu ve gelecek bir tarihte oyuncularla buluşacağı da o kadar net, sadece henüz anons etmiyorlar tarihini.

Resim kaynağı: http://enpsyane.deviantart.com/art/Tux-Freeman-14014474

13 Nisan 2015

Posted In: Gezegen Yazıları, half-life 3, linux, linux oyunları, steam, steam machine, valve

WP Twitter Auto Publish Powered By : XYZScripts.com