‘programlama’ etiketli içerik
Bu güne kadar genellikle Linux ortamına hep uzak kalmıştım, staj bahanesiyle Ubuntu ile biraz haşır neşir olmaya başladım. Öncelikle Ubuntu 10.04 LTS sürümünün yeni logosunu ve kullanıcı arayüzünü beğendim, patlıcan rengi yeni tema oldukça modern ve estetik olmuş.
Özellikle benim gibi yıllarca Windows üzerinde çalışmış Linux dağıtımlarıyla pek alakası olmamış kişilerin işine yarayabilecek bir kaç uygulamadan bahsetmek istiyorum:
WUBI: Windows UBuntu Installer
Windows ve Ubuntu’yu birlikte kullanmak istediğimizde çeşitli disk bölümleme veya başlangıç ayarlama sorunları ile karşılaşabiliyorduk. WUBI ile Ubuntu kurulumu sıradan bir yazılım kurulumu basitliğine indirgenmiş. Kurulum sihirbazını indirip çalıştırdıktan sonra disk bölümleme veya boot dosyalarını düzenleme gibi işlemlere gerek kalmadan Ubuntu’nun son sürümü kuruluyor.
Mono Project: Linux üzerinde .NET uygulamalarınızı çalıştırın
C# ve Asp.NET’in kullanım rahatlığından vazgeçemeyenler için oldukça faydalı bir proje. Microsoft yazılım geliştirme ortamlarında geliştirilen uygulamaların diğer platformlarda çalışmaması, MS Visual Studio’nun kullanım rahatlığına gölge düşürüyordu. Ancak Mono Project sayesinde uygulamalarımızı diğer platformlarda da çalıştırabilmekteyiz. MS Visual Studio ile oldukça benzerlik gösteren Mono ile Ubuntu üzerinde yaptığım denemelerin çoğu başarılı oldu. C# konsol uygulamalarını derlediğimde sorunsuz çalıştılar. Ancak MS SQL bağlantısı içeren Asp.NET projemi Ubuntu’da MS SQL Server kurulu olmadığı için doğal olarak çalıştıramadım. Sorunsuz bir sistem olduğunu söyleyemem ancak oldukça başarılı.
Wine Development HQ: Windows uygulamaları Linux’ta
Wine için her ne kadar “Wine Is Not an Emulator” denilse de, gözlemlediğim kadarıyla Wine, Windows’un kütüphanelerini taklit eden bir Windows emulatörü. Wine sayesinde Windows’ta çalışan çoğu uygulamayı Linux ortamında çalıştırabilmekteyiz. Ayrıca Wine’ın Uygulama Veritabanında (AppDB) birçok programın incelemesi, düzgün çalışıp çalışmadığı ve nasıl kurulacağı hakkında detaylı bilgi mevcut.
Videolardan alınan örneklerden oluşan görüntü dizilerinin birleştirilerek özet kare elde edilmesi basit bir işlem olmakla birlikte çeşitli ileri uygulamaların temeli olabilir. Fizikte bir eylemin özetlenmesi, örneğin belirli açılarla fırlatılan bir topun bu eğik atış hareketindeki yörüngesinin gözlenmesi görüntü dizisi birleştirme ile sağlanabilir. Daha sonraki aşamalarda görüntü dizilerinden hareket vektörleri çıkarılarak trafik yönünün ve akış hızının belirlenmesi gibi benzer uygulamalar yapılabilir. Ancak proje konumuz kapsamında olmadığı için bu uygulama ile ilgilenmedik.
Geliştirme Aşaması
Proje kapsamında bir videodan alınan 50 karenin C ile yazılmış program ile birleştirilmesi gerekiyordu. Görüntü dosyaları üzerinde işlem yapabilmek için öncelikle yardımcı c kütüphanelerini araştırdık. Sonrasında bitmap dosyasının yapısını incelediğimizde bu işlemi yardımcı görüntü işleme kütüphaneleri olmadan da kolaylıkla yapabileceğimizi gördük. Gri tonlamalı bir bitmap dosyası 14 byte dosya başlık bilgisi, 40 byte görüntü başlık bilgisi ve her biri bir byte olan piksel değerlerinden oluşuyordu. Görüntülerin tutulacağı 2 boyutlu dizinin boyutunu dinamik olarak belirlerken bu başlık bilgisinden faydalandık. Programda kullandığımız değişkenleri çoğunlukla unsigned char türünde tanımladık. Bir byte boyutunda olan bu değişken tipi, görüntü üzerinde byte bazında yapılan işlemlerde kolaylık sağladı.
Örneklenen karelerin belirgin olması için videoları saniyede yaklaşık 8 kare çekebilen bir fotoğraf makinesiyle timelapse yöntemini kullanarak çektik. Birleştirilmiş görüntüyü elde etmede kullanılan fotoğraf sayısı arttıkça görüntünün netliğini yitirdiğini gördük. Örneğin 50 kare ile çalıştığımızda en açık beyaz piksel olan 255 bile örnek sayısı olan 50 ye bölündüğünde 5 e düşüyor ve elde edilecek görüntüde aynı konumdaki pikselle toplandığında sonuca etkisi çok büyük olmuyor. Çalıştırma örnekleri bölümünde de örnekleri bulunan elde ettiğimiz görüntüler bu durumu destekler nitelikte.
Çalışma hakkında bilgi ve çalıştırma örneklerine aşağıdaki linkten ulaşabilirsiniz:
Hareket Özetleme
Kaynak kodlar için:
Kodlamasını az önce tamamladığım basit bir oyun “Adam Kurtarmaca”. Adam asmaca oyununa iyimser bir bakış açısı… Artık kendimizi kötü hissetmeden, vicdan azabı çekmeden adam asmaca oynayabileceğiz.
Aslında oynanış olarak adam asmacadan pek farkı yok. Tek fark adam asmacada oyuncu katil,zalim,acımasız bir karakteri oynarken, adam kurtarmacada masumu kurtaran iyi adam rolünde oynuyor.
Kaynak Kodlar:
Okul kantinlerinin işine yarayabilecek basit bir yazılımcık. Programın ilk hali CSE200 dersi ödeviydi, yazdığım program boşa gitmesin diye bir kaç yeni özellik ekledim ve program yazılımcıklarım arasında yerini aldı.
- İşte programın özellikleri:
- Hesapları rasgele erişimli dosyada saklama
- Hesap ekleme – Hesap silme
- Kredi yükleme – Alışveriş (Kredi Silme)
- Hesap arama – Hesap bilgilerini görüntüleme
Kaynak Kodlar:
‘Yazılımcıklar’ olarak nitelediğim basit çalışmalarımdan biri olan Öğrenci Otomasyonu’nun özelliklerinden bazıları:
- Öğrenci verilerini txt uzantılı dosyada saklayabilme
- Txt dosyasından hazır öğrenci listesi yükleyebilme
- Not ortalamasına göre sıralama, basit istatistikler
- Final ve vize puanına göre sıralama
- En yüksek final ve vize notlarını alan öğrencileri görüntüleme
- Geçme-kalma durumu, geçen ve kalan öğrenci sayıları
Kaynak Kodlar:
C programlama dili ile pratik yapma amaçlı yazdığım basit yazılımcıklar. Yenilikçi ve kompleks bir yapıya sahip değiller baştan söyleyeyim, sonra “bunu nenem de yazar”, “bunu yazmak da iş mi” gibi tepkiler vermeyin

Pakettekiler:
- Zar tutmaya, şans oyunlarında hileye son: Zar At
- Çarpım tablosunu hiç sevmemiştim bari yeni nesil severek öğrensin: Çarpım Tablosu Oyunu
- Birleşik faiz uygulanan kredilerinizde vade ve taksit mitarı hesabı için: Borç-Kredi Otomasyonu
- Matrislerde çarpma, toplama ve çıkarma yapan yazılımcık: Matris İşlem
Kaynak Kodlar:
