Olay
Bugün sahibine güvendiğim ve saygı duyduğum, sağlık ürünleri satan bir siteden sipariş verdim. Saygımdan dolayı da sitenin adını vermiyorum. Kredi kartı bilgilerimi yazdım ve Onayla tuşuna bastım. Veriler gönderilirken fark ettim ki adres çubuğunda HTTPS yerine HTTP yazıyor ve pencerenin altında kilit işareti yok. Hemen dur tuşuna bastıysam da sipariş alınmıştı. Hemen siteye bir e-posta yazarak sistemlerinde SSL olmadığını, bu işlerin doğrudan müşteriyle banka arasında şifreli bir iletim olan SSL üzerinden yapıldığını, SSL olmadığı zaman ise kart bilgilerimin ağdaki insanlar tarafından okunabileceğini ve bu yüzden kartımı iptal etmek zorunda kalacağımı belirttim. Telefonla geri dönüş yaptılar, “hayır SSL var ve kart bilgilerinizi saklamıyoruz” dediler. Şaşırdım, HTTPS’i göremediğimi söylesem de “hayır var” dediler. Dedim 2 kere baktım ama belki yanılmışımdır. Telefonu kapattıktan sonra tekrar baktım, HTTPS yoktu! Ekran görüntüsü gönderdim, “gördüğünüz üzere SSL yok ancak adresi elimle HTTP’den HTTPS’e çevirirsem SSL üzerinden iletim sağlayabiliyorum. Bir arıza olabilir, teknik ekibinize iletmeyi düşünebilirsiniz.” dedim. Gelen cevap:
“SSL siparişinizi tamamladığınız anda kredi kart bilgilerinizi gireceğiniz ekranda çıkar. Arzu ederseniz https://www.abcdefg.com adresine de girebilirsiniz. Sitemize yönlendirileceksiniz.”
Yani görünüşe göre her alışverişte insanların http’nin yanına bir s koyarak girmeleri gerekiyor siteye. Web programcıları bu soruna “kart bilgilerinin girileceği sayfaya gelindiği zaman https’e yönlendir” diyerek bir çözüm bulabilirler ancak onlara ulaşabilmek için müşteri hizmetlerini geçebilmek gerekiyor ki geçemedim. Kredi kartımı da iptal ettirip yenisini istemeyi de ihmal etmedim.
SSL (Secure Socket Layer)
SSL, iki bilgisayar arasında şifreli veri aktarımına imkan tanıyan bir protokoldür. SSL destekli sayfaların adresleri https ile başlar ve pencerenin altında bir kilit işareti görünür. Eğer SSL desteğinin süresi dolmuşsa bir uyarı mesajı verilir. SSL site sahiplerine bir maliyet getirir, bu sebeple alışveriş siteleri ve e-posta hizmetleri (örn: gmail) dışında çokça kullanılmaz. Bu demektir ki SSL’i olmayan bir siteye erişmek istediğinizde gönderdiğiniz verileri ağınızdaki başka insanlar okuyabilir. Sadece web siteleriyle kısıtlı değil, sohbet programlarınızı kullanarak gerçekleştirdiğiniz yazışmalar da öyle.
Güvenliğiniz için alışveriş yapacağınız sitelerin SSL desteğinin olduğuna emin olun. Bunu kredi kartı bilgilerinizi girdiğiniz sayfada denetlemelisiniz. Bir formdaki bilgilerin şifreli bir şekilde aktarılması için o formun bulunduğu sayfanın adresinin https olması gerekmektedir. Gönderimin öncesi de sonrası da şifreli olmalıdır (en sonda ek bir yönlendirme yapılmadıysa):
Güvensiz: http – GÖNDERİM – https
Güvenli: https – GÖNDERİM – https
Internet Kafeler & Kablosuz Ağlar
Internet Kafelerde / şifresi olmayan kablosuz ağlarda gezinirken SSL’siz trafiğinizin başkaları (internet kafe sahibi / ortamda bulunan herhangi birisi) tarafından okunabileceğini unutmayın. Bu sebeple eğer bu tür ağlarda trafiğinizin izlenmesini istemiyorsanız güvenli Internet erişimi olduğundan emin olduğunuz bir başka bilgisayara/sunucuya SSH tünel üzerinden ulaşabilirsiniz. Sistem şu şekilde işliyor.
BİLGİSAYARINIZ – şifreli bağlantı – GÜVENLİ SUNUCU – şifresiz bağlantı – INTERNET
Araya bir aracı girdiği için trafiğiniz biraz yavaşlayacaktır ama güvensiz bir ortamda trafiğinizi izlemek isteyen kişi bilgilerinizi değil, şifrelenmiş anlamsız bilgiler görecektir. Eğer SSL desteği olan bir siteye bağlanıyorsanız SSH tünellemeye gerek yok tabii ki.
Konunun uzmanı olmasam da aklımda kalan bilgileri paylaşmaya çalıştım. Hatam varsa lütfen düzeltin.
![]()
Makale
Bugün makale çalışmamızı bir dergiye yolladık. 1.5 aya yakın süredir işlerim baya yoğunlaşmıştı, siteme yazamaz olmuştum. Bu süreçte Robinviz sistemimiz baya bir genişledi. 1.0 beta sürümünü yayınladık. Yayın yapana kadar kurulum sihirbazı oluşturma, bağımlılıklar vs. birçok durumla ilgilenmek durumunda kaldım. Birçok şey öğrendim. Visual Studio’da derleme ve kurulum yapmayla bile uğraştım. Dikkatimi çeken şey Linux, Windows XP ve Vista’da Python farklı çalışabiliyor. Hepsine uyumlu bir şeyler yazmak gerekli. Qt kütüphanesinin sürümleri de bir hayli şeyi değiştirebiliyor. 4.7 sürümünde yazılan bir şey 4.6 sürümünde çalışmayabiliyor. Şimdi birtakım hata düzeltmeleri, video biçiminde kullanım kılavuzu hazırlamak gibi işler var. Umarım gönderimiz kabul alır.
Proje Sunumu
İş çalışmalarına ek olarak bu ay fakültemize projemizi sundum. 5-6 hocamız ve bir o kadar da yüksek lisans öğrencileri vardı. Hem biyolojik, hem de algoritmik bilgi vermek durumundaydım ancak 1 yıllık çalışmayı 1 saatte anlatmak zordu tabi. Her yüksek lisans seminerinde olduğu gibi çok iyi anladıklarını söyleyemesem de bir izlenim edinmiş oldular. Bir dahaki sunumlarda bazı kavramları anlatmak için video kullanmaya karar verdim. Özellikle Gene Expression ve Biclustering kavramlarını durağan resimler üzerinden anlatmak çok iyi olmadı. Lisans tez sunumumdan sonra yaptığım ikinci ingilizce sunum olmuş oldu. Neyse ki dil aşırı zorlamadı.
Python Sunumu
Veri Madenciliği yüksek lisans dersinin hocası sınıfına Python anlatmamı rica etti. Ben de bir cumartesi günü durmaksızın 2.5 saatte Python anlattım. Nasıl bu kadar kaptırabildim bilmiyorum. Zamanın geçtiğini fark edemedim. Neyse ki bu sunumum daha iyi anlaşıldı.
Okul
Ders olarak İstemci ve sunucu taraflı programlama dilleri dersine devam etmekteyim. Güzel gitmekte. Bildiğim şeyler de olsa tekrar etmiş hatırlamış oluyorum. Dersin ürünü olarak “kendinizi ne kadar seviyorsunuz?” anketim burada. Asistanlık işleri bu dönem pek yoktu. Algoritma ödevleri var elimde ancak proje yoğunluğu, “makale ha bitti ha bitecek” derken kaynadı. Bugünlerde ona başlayacağım. Biraz ağır bir ödev gibi umarım çok zorlamaz.
Çift Monitör
Bugün bir de Samsung E220NW monitör alıp dizüstümün yanına koydum. Masaüstünü de ikisine yaydım mı oldukça geniş bir çalışma alanına kavuşmuş oldum. Pencereler arasında git gel yapmaktan kurtuldum denilebilir. Özellikle sanal makina çalıştırırken sanal pencereyi bir ekrana koyup diğer işlerimi diğer ekranda yapabiliyorum. Bir videomu çalarken bilgisayarın kilitlenmesi üzerine “acaba ekran kartı aynı anda iki erkana çıkış yapmakta zorlanıyor mu?” sorusunu aklıma getirdi. Bilemiyorum, bundan mıydı.
Monitörün standı ise biraz zayıf gibi geldi. Bacağın altını standa vidayla sabitlesem de üstünü monitöre sadece taktım. Vidalama gibi bir imkan yoktu. O yüzden masa sallandıkça monitör de sallanıyor sağa sola. Hem de bir hayli. Bir de çok parlak, bembeyaz geldi bana. Dizüstümün renkleri daha soluk.
Ebru Çalışmalarım
Ebru kursum devam ediyor, güzel ürünler ortaya çıkmaya başladı. Battal, öbek, serpme, neftli, gelgit, şal, tarak, çok renkli ebrulara giriştik şu ana kadar. Keşke evde de bir tekne açabilsem de çalışabilsem diyorum ancak malzemelerin buzdolabında saklanması gerekiyor ve yer kaplıyorlar. Battal yaparken bir de etrafa çok boya sıçrıyor, uygun ortam gerekli. Şimdilik kursta yaparak idare ediyorum.
![]() |
| Ebrularım |
If you are doing protein research, you’ll eventually need to use protein databases. There lots of them. Querying these databases on the web might take some time and Firefox search engine plugins makes it easier. I found a web site where various search plugins can be found. I found one plugin for Uniprot database and one for PDB but not for “The Biogrid“. So I’ve generated one for it. You can install it here by clicking on the Biogrid link.
Bilgisayar-cep telefonu iletişimini sağlayan gnokii uygulamasının smsd adlı yan programcığı varmış, bugün keşfettim. Nasıl mı keşfettim? gnokii ile çok sayıda SMS göndermeye kalktığınızda her bir gönderim için cep telefonundan izin vermek zorundasınız. Bu ise insanı çıldırtıyor. Bir kere izin versem, hepsini gönderse diyordum ki freenode #gnokii IRC kanalında pkot adlı gnokii geliştiricisi imdadıma yetişti ve smsd programını yahut gnokii’nin –shell parametresini kullanabileceğimi söyledi.
Bu smsd programcığı bir sms sunucusu görevi görüyor. Çalıştırdığınız zaman cep telefonunuzdaki mesajları alıyor, bilgisayara aktarıyor, gönderilecek mesaj varsa cep telefonu vasıtasıyla gönderiyor.Öncelikle sisteminizde gnokii kurulu ve ayarları yapılı olmalı. Ardından boş bir klasöre geçip aşağıdaki komudu vermeniz yeterli olacak:
smsd -m file -c .
Cep telefonunuzun gelen kutusunun içi temizlenecek, olduğu gibi bilgisayarınıza aktarılacak, aman dikkat! Bundan sonra gelen mesajlar doğrudan bilgisayar ekranında görüntülenecek. Ekrana basmak yerine -u parametresiyle başka bir programa da yönlendirebilirsiniz.
Bu komutu çalıştırdığınız klasörün içerisine herhangi bir dosya girdiği anda o dosyanın içeriğini sms olarak göndermeye çalışıyor. Dosyanın biçemi ise şöyle olmalı (iki satır arasında boşluk olup olmadığından emin değilim):
05*********
Bu bir mesajdır
Bu şekilde göndereceğiniz her bir mesajı ayrı bir dosyaya koyun. Dosya adı önemli değil. Dosyalar konduğu anda sunucu bunu fark edecek ve göndermeye teşebbüs edecektir. Benim karşılaştığım bir sorun Segfault hatası idi. Dosyaların sonuna yeni satır koymadığım için olduğunu düşünüyorum. Ama bazı dosyaları yeni satır olmasına rağmen göndermedi. Kullandığım sürüm 0.6.27 ve oldukça eski bir sürümmüş. Ondan olabilir.
Ben kolay olsun diye dosya bazlı yaptım ancak MySQL, PostgreSQL gibi veritabanlarını da kullanabiliyor. Daha detaylı bilgilere buradan ve şuradan ulaşabilirsiniz.
Here is the English version.
Nesne yönelimli kod yazarken sınıf özelliklerine (değişkenlerine) sıklıkla verilen argüman değerlerini atarız. Her bir argüman için bu işi yapmak büyük satır kalabalığı demektir. Bakalım:
class Test: def __init__(self, x, y, z, t): self.x = x self.y = y self.z = z self.t = t print self.x,self.y,self.z,self.t
Buradaki tekrar eden benzer satırları yok etmek için bir decorator çözümü geliştirdim:
def injectArguments(inFunction): def outFunction(*args,**kwargs): _self = args[0] _self.__dict__.update(kwargs) inFunction(*args,**kwargs) return outFunction class Test: @injectArguments def __init__(self, x, y, z, t): print self.x,self.y,self.z,self.t @injectArguments def fonksiyon(self, ad): print "Ad:",self.ad t = Test(x=4, y=5, z=6, t=7) t.fonksiyon(ad="Emre")
args, argümanları içeren bir sözlük iken kwargs anahtar kelimeli argümanları içeren bir sözlük. arg[0] self’e karşılık geliyor. Yapacağımız şey self.__dict__’i yani t nesnesinin değişkenlerin değerlerini tutan bu sözlüğü verilen anahtar kelimeli argümanlarla ( {‘x’:4, ‘y’:5,’z':6,’t':7} ) genişletmek/güncellemek olacak. Bu sayede self.x = x vb. kodlardan kurtulmuş olacağız.
Python’un kütüphanelerinde bunun için hazır bir çözüm var mı (varsa söyleyin lütfen) bilmiyorum ama bu kodu bir hayli kullanacağım gibi. ActiveState Recipies sitesine koyduğum bu koda yeni bir yorum geldi, keyword kullanmadan (ad=”Emre” yerine “Emre” diyerek) bu iş yapılabiliyormuş. Nasıl mı? fonksiyonadi.func_code.co_varnames dediğinizde o fonksiyonun parametrelerinin adlarını öğrenebiliyormuşsunuz. Çok önemli bir bilgi.
