UNIX’çi Birisi İçin Windows’ta Uygulama Geliştirme
12 Temmuz 2008Geçenlerde Pro-G olarak bir iş aldık. AES-256-CBC algoritması ile simetrik şifreleme ve şifrelenmişi geri açma yazılımı.
Müşteri PGP ve asimetrik şifreleme ile bu işi yaptıklarında bir DVD boyundaki verinin donanımdan donanıma fark etmekle birlikte 10-24 saat arasında sürdüğünden şikayet ediyordu. Bu uzun sürecin iş süreçlerini yavaşlattığından yakınıyordu.
OpenSSL ile yaptığımız teorik testlerde 1 DVD boyutundaki veri AES-256-CBC ile yaklaşık olarak 7-20 dakika arasında değişen bir sürede şifreleniyor veya şifrelenmiş veri açılabiliyordu. Bu sürede kullanılan donanım, ortalama dosya büyüklükleri gibi etkenler önemli rol oynuyordu.
İşi resmi olarak aldıktan sonra kendisine verilen bir klasörü belirtilen türde dosyalar için tarayan ve hedef klasöre aynı hiyerarşide şifrelenmişini veya şifreli ise açılmışını oluşturabilecek, openssl’in crypto kütüphanesini kullanan özel bir kütüphane geliştirdim. Tabii ki Linux ortamında. 😉
Hazırladığım test çalıştırılabilirleri ile yaptığım testlerde sürelerin aynen openssl’in komut satırından kullandığımda elde ettiğim süreler ile örtüştüğünü teyid ettim.
Sıra geldi müşterinin kullanabileceği görsellere. Kendim ezelden beri UNIX adamı olduğum için Windows ortamındaki geliştirme araçları ve teknolojileri bana oldukça uzak gelmekte. Bu nedenle platform bağımsız (ing. cross-platform) derlenerek, ilgili hedef sistemde doğal olarak (ing. native) çalışabilecek, ancak ana geliştirme ortamının Linux olacağı bir çözüme ihtiyacım vardı.
GTK ve Qt arasında gidip geldim. Qt ve python ile geliştiren Likya‘lı arkadaşlarım olması nedeni ile Qt’de daha hızlı başlangıç yapabileceğime ve C++’ın avantajlarından yararlanabileceğime karar vererek Qt’yi kurcalamaya başladım. Hız artırmak için Likya’lı Mustafa kardeşimden randevu aldım. Kendisi de beni kırmayıp qt-designer ile GUI oluşturulduktan sonra nasıl C++’a çevrilir, nasıl bir proje haline getirilir konusunda 2-3 saatlik bir vaktini bana harcadı. Kendisine çok teşekkür ederim.
Zaman içinde proje tamamiyle GUI olarak kullanılabilir duruma gelince sıra geldi Windows ortamında derlemeye. Windows sanal makinama mingw, g++, Qt kurulumu gerçekleştirdim. Linux’te geliştirmiş olduğum GUI programım aynı Linux’teki gibi başarıyla derlendi ve çalıştı. Hem de aynı Linux’teki gibi “make” ile. Tabii ki Windows’a özgü bazı davranış bozuklukları ve API değişiklikleri oldu. Onları da zaman içinde yaşadıkça çözdüm. Her birisi ayrı bir gönderi konusu olabilir. Vakit bulabilirsem onlardan da bahsederim.
Ancak benim vurgulamak istediğim UNIX’ci birisi içim Windows ortamında uygulama geliştirmek oldukça zor. Eliniz kolunuz bağlı kalıyor. Bu nedenle UNIX benzeri bir ortamın cygwin, mingw gibi araçlarla MS-Windows ortamında da sağlanıyor olması, GTK ve Qt gibi platformlar arası taşınmış görsel kütüphanelerin bulunuyor olması benim gibi UNIX adamlarının Windows üstünde de işlevsel olmasına oldukça yüksek katkısı oluyor.
Özet olarak şifreleme yazılımı Windows üstünde çalışıyor olmasına rağmen vi, make, g++, openssl ve Qt kullanılarak geliştirilmiş oldu. En güzel yanı da aynı yazılımı aynı görsellik ve işlevsellik ile Linux, Mac OSX, Solaris, AIX gibi sürümlerini de doğal olarak sağlayabiliyor olmak.