Pazartesi, Kasım 24, 2008

Yoğun Hafta ve nVidia

Evet oldukça uzun bir zamandır yazamıyorum bir şeyler farkındayım ama öyle feci bir iki hafta geçirdim ki. Arka arkaya olan sınavlara çalışma stresinin yanında gayet aynı güne dizilmiş ödevler ve sos olarak bir adet de lab raporum vardı. Afiyetle yedim hepsini maşallah hatta yarınki Makina Teorisi vizesine bile yer kaldı.

Giriş sayılamayacak, mazeret sıralama paragrafını geride bırakırken neler yazmalıyım diye düşünmeye devam ediyorum, hatta bu satırlar da yazacaklarımı toparlamak için süre kazanma çabaları. Tabi "yazı" dediğimiz olgu gerçek zamanlı bir sunum olmadığından böyle nafile çabalara gerek yol elbet ama bunları yazıp ilginç şeyler düşünmek ve düşündürmek hoşuma da gitmiyor değil.

Geçen hafta, çıktığı günden beri aklımı kurcalayan "nVidia'nın CUDA teknolojisini nerede ve nasıl mantıklı bir amaç için kullanabilirim" sorusunun cevabının burnumun dibinde olduğunu farkettim. Sen git o kadar fizik simülasyonu vs. gibi şeylere ilgi duy, nasıl yaparız ederiz diye öğrenmek için makine mühendisliği bölümüne gir ama oradaki sonlu eleman analizi vs. gibi tam paralel hesaplamaya elverişli alanlar için biçilmiş kaftan olan bu teknolojiyi kullanmayı akıl edeme!

Isı transferi dersinde 2 boyutlu bir nesneyi(daha doğrusu bir nesne kesitini) küçük noktalara ayırıp bunlar için ısı denklemlerini çıkartırken kafamda çakan şimşek dersin kalan 30 dakikasını heyecandan yerimde zıplamamaya çalışarak geçirmeme sebep oldu. Ders çıkışında konuyu anlatmak için yanına koşarak gittiğim dersimin hocası ve aynı zamanda danışmanım olan Abdullah Ulaş sayısal analiz ve bilgisayar destekli analiz çalışmaları konusuna çok yakın olmadığı için sistemin getireceği inanılmaz hız artışını kendisine net olarak anlatmakta biraz zorlandım. Bu sebeple konuşmamız sırasında bu konularda oldukça tecrübeli olan Cüney Sert'le görüşmemin daha doğru olacağına karar verdik.

Koşa koşa Cüneyt Hoca'nın G bloktaki odasına gittim, kapıyı tıklattım ve... *trrk*, kilitli! Saat 12:30 civarı olduğu için odasında olmaması çok da şaşırtıcı değildi aslında. Öğlen arasından hemen sonra kendisini yakalyabilmek adına öğlen yemeği olarak G blok kantininden aldığım patatesli gözlemeye razı oldum. Robot Topluluğu odasında bir yandan topluluğun yeni sunucusunda kullanılmak üzere Linux destekli ağ kartları seçip bir yandan Cüneyt Hoca'nın blogunu okudum. Yaklaşık 45 dakika sonra odasına telefon ettim, telefonu açınca "Hocam müsaitseniz bir şey konuşmak istiyorum." dedim. "Müsaitim" cevabını aldıktan 5 dakika sonra odasındaydım. Hikayenin kalanını Cüneyt Hoca'nın blogunda, "İşimi Seviyorum" başlıklı 19.10.2008 tarihli yazıda bulabilirsiniz. Okuyup gelin, ben bekliyorum.

Evet okuduysanız şu anda bu teknoloji ve paralelleştirmeyle uğraştığımı tahmin edebiliyorsunuzdur. Uzun zamandan sonra programcılık konusunda beni gerçekten zorlayan, kağıt kalem kullanarak bir şeyler çizmeden kafamda canlandırmakta, hesaplamakta zorlandığım bir problem ve sistemle karşı karşıyayım resmen. Tüm spesifikasyonları okuduktan sonra açtığım basit "paralel matris çarpma" programını tam olarak anlamak için fazladan çaba sarfediyorum resmen. Yine de inanılmaz eğlenceli ve heyecan verici bir iş. Sanırım bölüme tutunmak için bir sebep buldum sonunda. Bu konuda hevesimi kırmak/beni ciddiye almamak bir yana daha ilk andan dikkatle dinleyip heyecanımı paylaşan Cüneyt Hoca'ya Türkiye'deki akademik çevrelerde yeniliklerin olabileceğine ve tren kaçmadan bir şeyler yapılabileceğine dair umutlarımı güçlendirdiği için büyük bir teşekkür borçluyum sanırım :)

Bu da böyle uzun ve fazlaca kişisel bir yazı oldu ama çok yakında tablet PC'me Ubuntu kurma maceralarımı anlatan teknik bir yazıyla baş başa bırakacağım sizleri, hoş görün beni. Görüşmek üzere...

Pazartesi, Kasım 10, 2008

Sevmek

Bir insanı sevmek hem çok güzel hem de çok ilginç bir olgu:
  • Fotoğrafını gördüğünde imkansız olduğunu bildiğin halde o fotoğrafa sarılmak istemek,
  • Durduk yerde "seni seviyorum" diye bağırmayı istemek,
  • Onun yanındayken, normalde asla olamayacağın kadar çocukça ve rahat davranmak,
  • Arkaplanda Metallica'nın en sert şarkılarından biri çalarken "o"nun için romantik bir yazı yazmak
  • Yaptığın neredeyse her şeyde yanında olmasını istemek,
  • Başın sıkıştığında, stresten ölmek üzere olduğunda yumuşak sesini duyup kendine gelmek,
  • Ne yaparsan yap konuşmayı başardığında hep yanında olacağını bildiğinden kendini şu koca dünyada daha güvende hissetmek
gibi değişik şeyler hissetmenize/yaşamanıza sebep olabiliyor. Tabi bunlar benim ve şu an sayabildiklerim. Daha başka bir çok boyutu var ama şu an bunlardan bahsetmek istiyor canım. Belki bir başka yazıda başka şeyler de yazarım.

Seni seviyorum hayatım...

Pazar, Kasım 09, 2008

Bir pazar günü

Bugünün pazar olması, yani gün içerisinde hiç bir şey yapmak zorunda olmadan kendi özgür irademe göre hareket edebileceğim bir gün olması, ayrıca beni strese boğan diferansiyel denklemler sınavımın da önceki gün geçmiş olması sebepleriyle gayet güzel uyandım.

Kahvaltımı takiben Starbucks Home Blend kahve ilaç gibi geldi 1 haftadır adam gibi kahve içememiş bünyeme(evet Nescafe ve Jacobs'un çözünen kahvelerini çok ciddiye almıyorum ama hiç yoktan iyiler tabi :)). Babamın önceki haftadan beri rica ettiği diz üstü bilgisayarına yeni Linux kurma maceramıza atılmak için uygun zamandı.

Daha önceden KDE masaüstü yöneticisi tabanlı Pardus kullanıyordu ancak güncelleme yapılırken bilgisayarını kapattığı için(acelesi varmış :D) sistem açılmaz hale gelmişti. Yeni sistemini, kişisel olarak daha çok beğendiğim, Ubuntu yapmaya karar verdim. Ancak yabancılık çekmemesi için ve biraz da KDE 4 ile ilgili kişisel merakımı gidermek için Kubuntu sürümünü indirdim.

Eski dosyalarını kurtarmak için direk kurmak yerine önce çalışan CD1 üzerinden açtık. Daha önceki Windows oturumunda sistem düzgün kapatılmadığı için Windows'un kurulu olduğu sürücüyü sisteme bağlamak2 biraz uğraştırdı3 ancak sonrasında gerekli yedeklemeyi yapmayı başardık.

Sistemi kurmak için ilgili kısayolu kullandığımda sabit disk sisteme bağlı olduğu için bölümleme sihirbazı kendisini göstermeyi reddetti. Bu yüzden tekrar yüce konsola4 başvurduk. O da güzel komutumuzu5 kırmayıp sisteme bağlı tüm diskleri çıkartarak bölümleme sihirbazına gerekli kıyağı yaptı. Devamında sistemi sorunsuzca kurduk ve KDE 4'ün o enfes masaüstüne ulaştık. Şu ana kadar hep Ubuntu - Gnome ikilisini kullanmış biri olarak gördüğüm masaüstü karşısında dibim düştü desem yeridir. Henüz KDE 4'lü bir sistemi denememiş olanlara acilen denemelerini öneriyorum çünkü anlatmak yerine tecrübe etmek çok daha açıklayıcı olacak. :)

Evet haftalık sistem kurma dozumu babamın diz üstü bilgisayarında aldıktan sonra biraz odama çekildim. Audiosurf'te Engin'in "Metallica - The End of The Line" rekorunu(163 bin küsür) kırmayı denedim ancak malesef başaramadım.

Tüm bunlar olurken arada Utku ve Engin'le yaptığımız görüşmeler sonucunda bu akşamki Galatasaray - Fenerbahçe derbisini Utku'larda izlemeye karar verdik ve ben şu an ısı transferi 1. deney raporumu hazırlayıp duş almak yerine bu yazıyı yazıyorum, aferim bana! :D

[1] Bu kavram için Pardus ekibine teşekkürler.
[2] Orj. İng: mount
[3] sudo mount -w -t ntfs-3g /dev/sda1 /media/disk -o force
[4] Orj. İng: console, terminal
[5] sudo umount -fa

Salı, Kasım 04, 2008

Apache2, VirualHost ve SSL

Evet yıllar sonraki ilk "teknik" blog yazımla karşınızdayım. :) Bu gece ODTÜ Robot Topluluğu için hazırladığımız yeni sunucuya SVN ve Trac sistemleri kuruyordum ve bunu yaparken SSL ile güvenli iletişim desteğini de aradan çıkartayım dedim. Demez olaydım. Gerçekten çok ilginç problemlerle karşılaşabiliyorsunuz. Edindiğim tecrübeleri bu işle uğraşacakların Amerika'yı yeniden keşfetmekle zaman kaybetmemeleri açısından burada paylaşmaya karar verdim.

Öncelikle kullandığımız sunucu Ubuntu 8.04 kurulu sıradan bir bilgisayar. Bu yüzden yazı büyük ihtimalle sadece Debian tabanlı sistemler için geçerli olacak(örn. Ubuntu). Ancak ayar dosyalarının kendi sisteminizdeki yolunu bulabilirseniz(ki çok zor değil) mantık ve yazılan değerler aynı sayılır.

Öncelikle Apache2 için ssl modunun kurulu ve etkin durumda olduğundan emin olun. Eğer etkin olmadığını düşünüyorsanız
sudo a2enmod ssl
komutuyla etkinleştirebilirsiniz.

Bu işlemin devamında sanal sunucularınızı port 80'i dinleyenler ve port 443'ü(SSL portu) dinleyenler olarak ikiye ayırmak için /etc/apache2/sites-enabled/default dosyasının başındaki NameVirtualHost satır(lar)ının aşağıdaki satırları içerdiğine emin oluyoruz(tavsiyem silip aşağıdaki satırları yazmanız):
NameVirtualHost *:80
NameVirtualHost *:443
Not: Eğere sunucunuz özel bir IP adresini dinleyecek şekilde yapılandırıldıysa * yazan yerlere bu IP adresini yazmanız gerekiyor.

Bunları yaptıktan sonra ilgili alan adımızın tanım dosyasına gidiyoruz(örn: /etc/apache2/sites-enabled/ssl-sitesi.conf) ve ilk satırındaki tanımın sonuna port numarasını 443 olarak belirtiyoruz. Örnek:
<VirtualHost *:443>
Bu işlemi yaptıktan sonra alan adımız 443 numaralı portu dinlemeye başlayacak. Bu durumda http bağlantılarının artık çalışmayacağını unutmayın.

SSL için bir sertifikaya ihtiyacımız olduğundan bu noktada Apache'ye biraz ara verip kendimize ait SSL sertifikalarını oluşturmaya geçiyoruz. Bu kısım için http://www.xenocafe.com/tutorials/linux/centos/openssl/self_signed_certificates/index.php adresindeki yazından faydalandım. Herşeyden önce sistemimizde openssl'in kurulu olduğundan emin oluyoruz:
sudo apt-get update
sudo apt-get install openssl
Devamında sertifikaları yerleştireceğimiz dizine gidiyoruz. Ben /etc/apache2/ssl şeklinde bir dizin oluşturup burayı kullanmayı tercih ettim. Önce bir anahtar oluşturmalıyız. Anahtarı oluştururken bizden bir parola oluşturmamız istenecek. Bu parola en az 12 haneli ve güvenli bir şey olmalı. Devam eden kısımlarda bu parolaya ihtiyacımız olacak o yüzden not almayı unutmayın.
sudo openssl genrsa -des3 -out ssl-sitesi.key 1024
Buradaki "ssl-sitesi.key" anahtar dosyamızın adı. Karışıklık olmaması için site adıyla aynı adı kullanmayı tercih ediyorum. ".key" uzantısının aynı kalması ise yine karmaşayı engellemek adına önemli.

Anahtarımızı yaptıktan sonra anahtarımızın bizimle ilişkilendirilmesi için:
sudo openssl req -new -key ssl-sitesi.key -out ssl-sitesi.csr
komutunu çalıştırıyoruz. Az önce seçtiğimiz parolanın istenmesini takiben çeşitli bilgiler sorulmaya başlanıyor. Ülke kodu olarak TR girip, Province-State ve devamındaki soruyu bulunduğumuz şehri yazarak cevaplıyoruz. Bir sonraki soruda organizasyon adı ve devamında sertifikayı alan kişinin hangi departmanda olduğu soruluyor(bu bilgi seçimlik/opsiyonel). Bu noktada referans aldığım yazı isimleri girerken "&" işaretinden kaçınmamızı öğütlüyor, aklınızda bulunsun.

Tüm bu bilgileri de girdikten sonra "common name" diye bir bilgi sorulacak ki asıl önemli kısım burası. Buraya alan adınızı düzgün ve tam olarak yazmanız çok önemli(örn: robot.metu.edu.tr). Bunu da yaptıktan sonra iki ek soru sorulacak ki bunları basitçe enter'a basarak boş geçebiliriniz. Evet sonunda bizimle ilişkili bir anahtarımız oldu.

Sıra anahtarımızı imzalamaya geldi. Eğer çok ciddi bir site işletiyorsanız az önceki işlemden çıkan "csr" uzantılı dosyayı uygun ve güvenilir bir sertifika onaylayıcısına onaylatmanız gerekiyor ki bu işlem paralı olduğundan yazımızın konusu da sertifikayı kendi kendimize imzalamak yönünde ilerleyecek.

Sertifikamızı imzalamak için
sudo openssl x509 -req -days 365 -in ssl-sitesi.csr -signkey ssl-sitesi.key -out ssl-sitesi.crt
komutunu çalıştırıyoruz. Burada 365 sayısı sertifikanın geçerli olacağı gün sayısını belirtiyor. Ben 1 yılı tercih ettim ancak sizin 10-15 yıl gibi uzun bir zaman dilimi seçmenizde de çok bir sakınca yok.

Evet son olarak her işlemde girmemiz istenen sertifika şifresini kaldırmamız gerekiyor. Aksi takdirde Apache her açılışta konsoldan bu şifreleri girmemizi bekleyecek ki genelde başında olmadığımız bir sunucunun yeniden başlaması gibi durumlarda pek istenen bir şey değil bu. Peki bunu yapmanın bir dezavantajı var mı? Malesef var. Böyle yaptığımızda özel anahtarımızı(private key) herkesin okuyabileceği bir biçime getirmiş oluyoruz. Bu yüzden önlem olarak işimiz bittiğinde dosyaların sahibini root kullanıcısı yapıp izinlerini de 400 olarak değiştireceğiz yani sahibi olan kullanıcı sadece okuyabilecek, başka kimse hiç bir şey yapamayacak. Bu işlemi yaparken son bir kez daha şifreyi girmemiz gerektiğini de eklemeliyim.
sudo cp ssl-sitesi.key ssl-sitesi.key.secure
sudo openssl rsa -in ssl-sitesi.key.secure -out ssl-sitesi.key
Evet sonunda sertifikamız hazır. Şimdi son hamle olarak bunu Apache ayarlarından alan adımıza bağlıyoruz ve sonrasında kendimizi SSL'in güvenli sularına bırakabiliriz. Bunu yapmak için sitemizin ayar dosyasını açıyoruz(örn: /etc/apache2/sites-available/ssl-sitesi.conf) ve </VirtualHost> kapanışından önce şu satırları ekliyoruz:
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/ssl-sitesi.crt
SSLCertificateKeyFile /etc/apache2/ssl/ssl-sitesi.key
Dosyayı kaydedip Apache'yi tekrar başlattığımızda SSL'li sitemiz çalışıyor olmalı.
sudo /etc/init.d/apache2 restart
Eğer bir sorununuz ya da düzeltmeniz olursa yorum sistemiyle bana bildirebilirsiniz. Kolay gelsin.

Ekleme: Bugün(2008-11-07) Ferruh Mavituna'nın "SSL Sorunları" adlı çok güzel bir yazısına rastladım. SSL kullanmayı düşünüyorsanız mutlaka okumanızı öneriyorum.

Sabah Telaşları

Aklımda milyon tane şeyle ve zorla(alarm) uyandırıldığım bir sabahla daha birlikteyiz sayın seyirciler. Bugünün gündemi oldukça ilginç. Bir taraftan evde filtre kahvemi yudumlamak istiyorum, öte yandan okula direkt giden EGO otobüsüyle gitmek istiyorum -ki gönderi saatine bakarak ilk şıkkı tercih ettiğimi anlayabilirsiniz. Hatta erken gidip yeni Oyungezer'i alıp deli gibi okumak istiyorum. Bununla birlikte 10.40'ta olan pek sevgili ve güzel dersim Makine Elemanları düşündükçe canımı sıkıyor içimi bayıyor, bir de Perşembeye ödevi var...

Evet sonra her yerde Fallout 3 incelemelerini okuyup duruyorum, oyunu oynamak için sabırsızlanıyorum ancak şu an elimde bitirmek istediğim bir adet Hitman: Blood Money olduğundan kendimi tutuyorum. Cüzdanımız da yazınki kadar kabarık değil zaten :D Ama bunları yaparken beynimin arkaplanında Cumartesi günü olan Diferansiyel Denklemler sınavım için endişeleniyorum, bulduğum her fırsatta çalışmaya çalışıyorum ama o da bir yere kadar tabi.

Yine beynimin arkalarına ittiğim bir yerlerden JSLib için sesler yükseliyor "uzun süredir ihmal ediyorsun şöyle bir göz at, en azından dökümantasyonuna katkıda bulun" diye ama nafile. Eve geldiğimde biraz dinlenip ders çalışıyorum(evet BEN ders çalışıyorum :)).

BYK ile Sabah Sabah'ta gündem başlıklarını dinlediniz, bir sonraki programda ya da akşamki ana haber bülteninde görüşmek üzere şimdilik hoşçakalın.

Pazartesi, Kasım 03, 2008

Yeniden başlamak

Bu aralar bir çok şeye yeniden başlanıyor. Bazı şeylere de sıfırdan başlanıyor elbette. Örneğin ben bir çok derse yeniden başlarken Şenol bir blog yazmaya yeni başladı.

Adam akıllı bir şeyler yazmayalı epey oldu sanıyorum. Uzunca bir süredir bir sürü şey yazmak aklımda olsa da bir türlü içimden gelmiyordu başlamak. "Başlarsam devamını getirmek gerekir ve vakit bulamam buna" diyerek korkuyordum, kaçıyordum. Ama işte bir çok insanın yazdığını görünce sonunda bugün ben de yeniden başlamaya karar verdim.

Burada zaman zaman teknik yazılar, zaman zaman da tamamen kişisel yazılar göreceksiniz. O an aklımda Twitter'a sığmayacak uzunlukta ne varsa yazmak amacım. Bazı yazılar İngilizce de olabilir, artık o kadar idare edersiniz beni :)

Hoşbuldum ve işte yine bir şeye yeniden başlıyorum...