Şub062010

Sizce hata nerede?

Yazan : Zafer    06.02.2010 | Yazılım

Hepimiz kodlamalar esnasında fark edemediğimiz durumlar için önlem almayı unuturuz. Bu çok normal bir durumdur, çünkü oluşacağını bildiğimiz bir durum için elbette hepimiz bir şekilde bir önlem alabiliriz. Bir diğeri ise istisna olarak oluşabilecek durumlardır ki bunlara da programlama dillerinin sunduğu istisna yakalama yöntemlerini kullanarak engel olmaya çalışırız. Ancak bazı hatalar vardır ki bunlar en tehlikeli olanlardır. Ben bunlara sinsi hatalar diyorum, programlamada ise mantık hataları olarak biliriz. Gerçekte bir hata uyarısı verip kendilerini göstermezler ama bizim istediğimiz sonuç yerine farklı bir sonuç üreterek herşey yolundaymış gibi gösterirler, oysa hata oradadır ve işlem hatalıdır.

Biliyoruz ki bilgisayar programlama tarihinde kod yazan geliştiriciler bazen gerçekten çok büyük sorunlara yol açan küçük hatalar yapmışlardır. Hatta bu hataların derlendiği bir listeyi daha önceki yazılarımda bu site üzerinden sizlere sunmuştum. Bu arada bu küçük hataları gördüğünüzde bu hataları ben yapmam diye düşünebilirsiniz ama emin olun hepimiz bir şekilde bu basit ve küçük hataları yapıyoruz. Okumak isterseniz işte size o yazımın bağlantısı buradan buyurun.

Bugün bu kadar büyük olmamakla birlikte kendi kodladığım bir fonksiyonda meydana gelen hatayı sizlerle paylaşmak istedim. Amacım bu basit hatanın belkide herkesin karşısına bir gün çıkabileceği gerçeğini göstermek. Sizden ricam bu fonksiyonda yer alan hatayı sizlerin bulması ve telafi edilmesi için gerekli yöntemide yorumlarınızda paylaşmanız. Fonksiyonumuzu kısaca tanıtmak gerekirse, fonksiyonun amacı sayısal bir değer içinde bulunan virgülden (,)  sonraki basamakları kaldırmak. Örnek vermek gekerkirse 120,55 sayısı fonksiyonumuzdan çıktığında 120 olmalıdır. Yani virgülden sonraki kısmı atıp kalan kısmı fonksiyonu çağrıran yere veriyoruz. Fonksiyonumuz ise aşağıda, fonksiyon c# ile kodlanmıştır.

private string TutarTemizle(string ToplamTutar)
{
   string Tutar = "0";

   if (ToplamTutar != null)
   {
      if (ToplamTutar.IndexOf(',') > 0)
         Tutar = ToplamTutar.Substring(0, ToplamTutar.IndexOf(','));
   }
   
   return Tutar;
}

Peki, hata nerede? Bu fonksiyon gayet başarılı çalışıyor ama bazı değerler için hatalı sonuç döndürüyor. Siz hatalı sonuç döndürdüğü örnek bir değeri, neden sonucun hatalı olduğunu ve tasarımdaki hatayı bulabilecek misiniz?



[KickIt] [Dzone] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Etiketler: ,

E-mail | Permalink | Trackback | Post RSSRSS comment feed 0 Yorum

Ara232009

ThunderBird 3

Yazan : Zafer    23.12.2009 | Yazılım

Başarılı e-posta istemcisi Thunderbird'ün yeni sürümü kullanıcılara sunuldu. Birçok yenilik içeren Thunderbird 3'te, sekmeli gezinti ve gelişmiş Gmail entegrasyonu gibi özellikler bulunuyor. Windows, Linux ve Macintosh için yayınlanan programın yeni sürümünde Windows Vista araması ile entegrasyon sağlanmış, MacOS X adres defterine erişim sağlanmış, sekmeli arayüz geliştirilmiş, entegre eklenti yöneticisi eklenmiş, IMAP yönetimi ileri derecede hızlandırılmış. Thunderbird 3'te artık bir mesaja çift tıklayarak, yeni bir sekmede açmanız mümkün. Üstelik program çıkış yaptığınızda açık sekmelerinizi kaydediyor.
Gmail ile de çok daha uyumlu hale gelen Thunderbird, artık Gmail'in gönderilen ve çöp kutusu gibi özel klasörlerini sorunsuz tanıyarak, ayarları ve hesap kurulumunu da çok daha kolay hale getiriyor.

Thunderbird 3 Yenilikleri

Thunderbird'ün yeni özelliklerinden zevk aldığınızı umuyoruz. Thunderbird 3 her şeyi ile sizin olması için yeni arama araçları, sekmeli e-posta, ileti arşivleme ve yüzlerce eklentisi mevcut.

Gelişmiş Süzgeçlerle Arama
Global arama çubuğunda aranacak ifadeyi girin ve arama sonuçları yeni sekmede açılacaktır. Thunderbird süzgeçleri ve zaman çizelgesi ile aramayı kesinleştirebilirsiniz.

Sekmeli E-Posta
Firefox'un sekmeli taramayı beğeniyorsanız sekmeli e-postayı da seveceksiniz. İletiyi yeni sekmede açmak için iletiye çift tıklayın veya Enter tuşuna basın. Sekmeyi arka planda açmak için iletinin veya dizinin üstünde sağ tıklayabilirsiniz.

İleti Arşivleme
Arşivle düğmesini veya 'A' tuşuna bastığınızda ileti arşivlenecektir. İletileri arşivlediğinizde e-postalarınız yeni arşiv dizin sistemine taşınıyor.
Keşfedilecek Daha Fazla Özellik:

* Akıllı dizinler
* Aktivite yöneticisi
* Tık tıklama adres defteri
* Ek hatırlatıcı
* Yeni eklenti yöneticisi ve yüzlerce kullanılabilecek eklenti

Adresi : http://tr.www.mozillamessaging.com/tr/

 



[KickIt] [Dzone] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Etiketler:

E-mail | Permalink | Trackback | Post RSSRSS comment feed 0 Yorum

Tem182009

D derleyicisi kurulum programı (el yapımı)

Yazan : Zafer    18.07.2009 | Yazılım

Malum bu aralar D dili ile tanışma fırsatı buldum bunu güzel işler yapan bir takım arkadaşlarımıza borçluyum. Bu kişileri sizde tanımak isterseniz eğer şu adresi ziyaret edebilirsiniz. Bir diğer konu ise benimde birşeyler yaparak destek olmak istemem idi, D programlama sitesi forum bölümünde geçen şu konudan fikir alarak böyle bir program hazırlamaya karar verdim,.


Program hakkında kısaca bir şeyler söylemek gerekirse, bu kurulum programının amacı, D dili ile yeni tanışan ve bu dilde çalışmak isteyenler için Windows ortamında kolay bir şekilde D derleyicisini kurmak ve derleyicinin sorunsuz çalışabilmesi için gerekli olan sistem değişkenlerini ayarlamaktır. Bunun yanında kullanıcı isteğine bırakılan ve D dilinde yapacağınız çalışmalarınızda kullanmak üzere D dili ile DWT ortamı kullanılarak yazılmış olan "Poseidon-v0.23" isimli uygulama programıda bu kurulum içerisinde yer almaktadır.

Genel olarak bakıldığında kurulum programı dosyaları kopyalar ve sistem değişkenlerini gerekli degere ayarlar. Bu basit işlemleri sizlerde çok rahat yapabilsiniz. Bu kurulum programı ile amaç bu tür ortamlara uzak olan programlama meraklılarına hızlı bir şekilde D tecrübesi yaşatmaktır. Umuyorum birilerinin işine yarar. Tüm okuyucularıma sağlık ve mutluluk dilerim.

İndirme bağlantısı : http://rapidshare.com/files/299559090/d_kur.exe.html (29.10.2009)
(SciTE IDE ve D derleyici v2.031 içerir) (16.7 MB)



[KickIt] [Dzone] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Etiketler: ,

E-mail | Permalink | Trackback | Post RSSRSS comment feed 32 Yorum

Tem072009

Birileri güzel işler yapıyor

Yazan : Zafer    07.07.2009 | Yazılım

D Programlama Dili nesne tabanlı, çok örnekli diye çevirebileceğimiz multiparadigm sistem programlama dilidir. Walter Bright tarafından Digital Mars isimli ufak bir Amerikan şirkette geliştiriliyor. D dili C++ dilini temel alarak C++ dilinin eksik ve yavaş taraflarını kaldırıp daha gelişmiş bir dil oluşturmaya çalışmışlar. C++ dilini temel alsa da C, C# ve Java dillerinden de güzel yanlarını almış. Kararlı sürümü 1.0, 2 Ocak 2007 de yayınlanmış, deneysel bir sürüm de 2.0, 17 Haziran 2007 da yayınlanmış.

D dili hakkında bu kısa açıklamadan sonra şunu da belirtelim, D dili henüz çok yeni bir dil ve daha çok yolu var ama bu yolda çok hızlı ilerlediğini söylemek yalan olmaz diye düşünüyorum. Bu yazımda aslında amacım siz değerli okuyucularıma D dilini tanıtmaktan ziyade, gerçekten güzel işler yapan bir insandan bahsetmek. Sayın Ali Çehreli kendisi başka bir ülkede (Amerika) bilgisayar uygulamaları geliştiriyor ama çok özenli kullandığı güzel Türkçesiyle Türkiye’de programlamayla ilgilenen (özellikle C/C++) bir çok kişiye forumlar üzerinden yardımcı oluyor.

Bugün bilginin çok hızlı eskidiği bir çağda bilgiye herkes den önce ve hızlı erişmek ek bir fayda sağlıyor. Bilgi tabi ki kim tarafından üretilirse ilk elden o dilde dünyaya yayılıyor. Bugün bilginin dili ingilizce, eğer bilgiyi en yakından takip edenlerden olmak istiyorsanız iyi bir ingilizce okur-yazarı olmak kaçınılmaz bir durum. Ancak bu sizi şöyle bir yanılgıya da götürmemeli, bu da şudur ki tamamen ingilizce okumak ve sadece ingilizce yazmak gibi. Ne yazık ki internette karşılaştığım bazı çok değerli bilgi sahibi Türkiye insanlarının bu bilgileri yine ingilizce aktarma çabasında olduklarını görüyorum. Oysa güzel Türkçemiz ve öğrenme şevki ile Türkçe kaynak arayan bir çok genç arkadaşımız varken neden o güzel bilgilerini içinde yetiştikleri kültürün dili olan kendi dillerinde insanlarla paylaşmak yerine başka yollar kullanıyorlar.

Sayın Ali Çehreli'ye bu yazımda yer vermemin sebeplerinden biriside sanırım yukarıda yazdığım konulardan duyduğum hüzün. Kendisi yukarıda bahsettiğim D dili hakkında oldukça güzel bir site hazırlamış ve gerçekten içerik olarak dolu dolu bir içeriğe sahip. Umarım Sayın Ali Çehreli ve onun gibi arkadaşların sayısı giderek artar ve bilgiler ortaya çıktıktan 5-6 ay sonra değil, anında haberdar oluruz. Hatta bu bilgiyi kendimiz üretip kendi dilimizde dünyaya yayacağımız zamanlara ulaşırız. Tüm okuyucularıma sağlık ve mutluluk dilerim.

D dili sitesinin adresi : http://ddili.org/



[KickIt] [Dzone] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Etiketler: , , ,

E-mail | Permalink | Trackback | Post RSSRSS comment feed 3 Yorum

May202009

Debian ve Windows NTFS Bölümü

Yazan : Admin    20.05.2009 | Yazılım

Debian GNOME kullanıyorsanız ve sisteminizde bulunan Windows yüklü bölümler NTFS olarak biçimlendirilmiş ise Debian üzerinden Windows bölümlerine bağlanırken benim gibi sorunlar yaşayabilirsiniz. Bu sorunlarınıza yardımcı olabilmek amacıyla yapılması gerekenleri adım adım anlatmaya çalışacağım umarım işinize yarar.

Öncelikle eğer NTFS bölümlere yazabilmek, yani Debian'daki dosyamızı Windows bölümüne aktarabilmek istiyorsanız ntfs-3g isimli programı sistemimize kurmamız gerekiyor, bu işlemi konsolu kullanarak aşağıdaki komutla yapabilirsiniz.

apt-get install ntfs-3g

Bu işlemin ardından ntfs-3g programı sisteminize kurulacak. Şimdi bağlayacağımız Windows bölümü için bir dosya oluşturmamız gerekiyor. Bunun için /mnt klasörüün altında bir dosya oluşturalım. Klasör ismi önemli değil ama ben Windows sisteminde bulunan D bölümünü bağlayacağım için windowsd ismini vermeyi uygun buldum. Sizde bu şekilde anlamlı isimler kullanırsanız bu bölümlerle çalışırken daha rahat çalışırsınız. Bu işlem için yine konsoldan şu komutu girebiliriz.

mkdir /mnt/windowsd

Bu işlemden sonra sıra geldi oluşturmuş olduğumuz bu dosyaya Windows D bölümümüzü bağlamaya, bunun için konsoldan aşağıdaki komutu vermemiz gerekiyor.

mount -t ntfs-3g /dev/sda2 /mnt/windowsd

Burada /dev/sda2 benim sabit diskimdeki Windows D sürücüsüne karşılık geliyor. Sizde sisteminizde bulunan sürücü haritasını görmek için konsoldan aşağıdaki komutu girebilirsiniz.

fdisk -l

Mount işlemin ardından GNOME masaüstünde bağladığınız bölümün simgesini görebilirsiniz. Simgeye çift tıklayıp bölümün içeriğini görebilir veya dosya ekleyebilirsiniz. Ancak bu şekilde Windows D bölümüne ulaşmak için her defasında mount işlemini elle yapmanız gerekir. Bunun yerine açılışta otomatik olarak bu bölümlere bağlanmak isterseniz /etc/fstab yolunda bulunan dosyada bazı değişiklikler yapmanız gerekecek. Örnek olması için benim kullandığım fstab dosyasını aşağıda veriyorum.

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev/sdb2       /               ext3    errors=remount-ro 0       1
/dev/sdb5       none            swap    sw              0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0
/dev/sda2    /mnt/windowsd    ntfs-3g    defaults    0    0

Son satırda gördüğünüz gibi yukarıda elle yaptığımız Windows D bölümü ekleme işlemini yapıyoruz ve böylece artık açılışta bu bölüm bizim dosya sistemimize bağlanacak ve bizde kendi dosya sistemimiz gibi kullanabileceğiz. Umarım bu yazı böyle sorunlar yaşayanlara yol gösterici olur. Sormak istediklerinizi bana iletebilrsiniz.



[KickIt] [Dzone] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Etiketler: , , ,

E-mail | Permalink | Trackback | Post RSSRSS comment feed 2 Yorum

Nis252009

Development Package (DevPak) nedir?

Yazan : Admin    25.04.2009 | Yazılım

Devpak Dev-C++ geliştiricileri tarafından ortaya çıkarılmış bir paket yönetim programıdır. Burada paketten kasıt aslında C/C++ ile kullandığımız kütüphanelerdir. Bildiğiniz üzere C/C++ ile bir gerçek hayat uygulaması geliştirmek istediğimizde bir çok ek özelliğe sahip olmamız gerekir. Diğer bazı dillerin tersine C/C++ ile bir çok işi oldukça aşağı seviyelerden başlayarak sizlerin inşa etmesi gerekir. Örneğin Delphi, C#, Visual Basic v.b. dillerde yeni bir proje başlattığınızda bir windows formu hazır olarak karşınızda yerini alacaktır. Size kalan gerekli kontrolleri forma sürükleyip form görüntüsünü ve ardından işlevselliği sağlayan kodları projeye ekleyerek işinizi tamamlamak olacaktır.

Ancak C/C++ dünyasında bu basmaktan önce bir kaç basamak daha tırmanmanız gerekir. Bunun için örneğin kullanıcı arayüzü içeren bir uygulama geliştirmek isterseniz bir GUI kütüphanesini sisteminize yükleyip ayarlarını yapmalı ve bunu C/C++ derleyicinize tanıtmalısınız. Bundan sonra gerekli kodları yazıp uygulamanızı derleyerek kullandığınız kütüphaneninde yardımıyla güzel kullanıcı arayüzleri hazırlayabilirsiniz. Daha başka bir örnek ise, xml dosyaları ile uğraşıyorsanız yine C/C++ için yazılmış bir XML kütüphanesi işlerinizi çok kolaylaştıracaktır. C/C++ ile çalışmalarınız ilerlerdikçe daha bir çok kütüphane ile tanışacaksınız.

Kütüphaneler bu tür özel konularda bize oldukça yardımcı olsalarda, kaynak kodları ile dağıtılmaları, bazen derlenmeye ihtiyaç duymaları veya bazı durumlardada özel ayarlarla kurulmaları gerektiğinden kurulumları genellikle zaman alan ve uğraştırıcı bir iş haline gelmektedir. Tamda bu noktada Dev-C++ geliştiricileri Linux'da kullanılan paket mantığı ile benzer şekilde bazı kütüphaneleri paket haline getirip, kütüphane paketleri oluşturdular. Kütüphaneleri paketleyerek oluşturdukları bu paketler sistemine ise Development Package (DevPak) adını verdiler. Bu  sistem ve paketlerle ilgili daha geniş bilgiyi http://devpaks.org/ adresinden elde edebilirsiniz.

Gelelim Devpak'ın bizim için önemine C/C++ kodlama ile yeni yeni ilgilenmeye başladıysanız ve Unix kültürünüz pek yoksa eminim sizlerde C/C++ kütüphanelerini kurup üzerinde çalışmaya başlayana kadar kütüphanalerle bir kaç saat boğuşuyorsunuz. Aslında sebebi basit çoğu açık kaynak kütüphaneleri windowstan alışık olduğumuz ileri-ileri-kur döngüsü içinde çalışan kurulum programlarına sahip değiller, hatta bir çoğu size sadece kaynak kodlarını sunuyor. Bizler ise kodun bağımlılıklarını bulup gerekli derleme ortamını oluşturup kaynak kodu derleyerek .lib (windows için) uzantılı kütüphane dosyalarımızı oluşturuyoruz. Tabi bu esnada bir çoğumuz telef oluyor veya pes ediyoruz :) DevPak tüm bu kütüphane kurulum işlemlerini otomatikleştirmek ve kullanıcının geliştirme ortamına entegrasyonunu sağlamak amacıyla geliştirilmiş bir arayüz ile bizi bir çok dertten kurtarıyor.

DevPak aslen bir Dev-C++ eklentisi olarak ortaya çıktı. Bugün bir çok C/C++ geliştirme ortamı mevcut, Dev-C++ bunlardan biri ve oldukça başarılı, buna rağmen ben başka bir alternatifi CodeBlocks geliştirme ortamını kullanmayı tercih ediyorum. Devpak oldukça kullanışlı bir sistem, bundan dolayı olsa gerek CodeBlocks'da bir eklenti (plugin) aracılığı ile Devpak paketlerinin indirilmesi, kurulması ve kaldırılmasında size yardımcı olacak bir eklenti ile Devpak paketlerini kullanma imkanı tanıyor. Bu eklentiye CodeBlocks>Plugins>Devpak Updater/Installer menüsü ile ulaşabiliyoruz.

Buraya kadar gelmişken küçük bir örnekle konuyu daha iyi anlamaya çalışalım. Ben örnek olarak bir GUI kütüphanesi olan Fast Light Toolkit (FLTK) kütüphanesini Devpak sistemini kullanarak geliştirme ortamıma entegre bir şekilde kurmak istiyorum. Bunun için öncelikle CodeBlocks>Plugins>Devpak Updater/Installer yolu ile Devpak paketlerini yönetmemi sağlayan eklentiyi çalıştırıyorum. Karşıma Devpak paketlerini yöneteceğim arayüz açılıyor.

Bu arayüz sayesinde http://devpaks.org/ adresinde bulunan paketleri kategoriler altında ayrılmış olarak görüyor, ayrıca herhangi birini seçerek hakkında detaylı bilgiye ulaşabiliyorum. Şimdi biz GUI kategorisinde bulunan fltk paketinin 1.1.8 versiyonunu seçelim ve sağ tuşa basarak Download&Install seçeneğini seçelim. Ardından paketimiz http://devpaks.org/ adresinden indirilmeye başlıyor.

Paketin indirilmesi tamamlandıktan sonra indirilen bu paketi kurmak isteyip istemediğimizi soran mesaja evet diyerek devam ediyoruz. Ardından kurulum işlemi başlıyor. Devpak indirilen paketi ilgili ayarları ile sisteme kurmaya başlıyor.

Kurulum işlemi tamamlandıktan sonra Devpak arayüzünede bulunan Installed sütünuna dikkat edin, kurmuş olduğunuz paketin sürüm numarası eklenmiş durumda, bu bize fltk paketinin kurulu olduğunu ve kurulu olan bu paketin versiyon numarasının 1.1.8 olduğunu göstermekte.

Devpak ile fltk kütüphanesinin internetten indirilmesi ve kurulması işlemini tamamlamış olduk. Bundan sonra CodeBlocks ortamını açıp projeler bölümünden FLTK projesini seçip kodlamaya geçebiliriz. Umuyorum bu yazı Devpak hakkında size yardımcı olmuştur. Sorularınız olursa iletişim bölümünden bana ulaşabilirsiniz. Tüm okuyucularıma sağlık ve başarı dilerim.



[KickIt] [Dzone] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Etiketler: , , ,

E-mail | Permalink | Trackback | Post RSSRSS comment feed 0 Yorum

Nis142009

Nullsoft Scriptable Install System (NSIS)

Yazan : Zafer    14.04.2009 | Yazılım

Çalıştığınız şirkette veya kendi özel uğraşınız olarak bir program geliştirdiniz ve şimdi bunu kullanıcılara sunmak istiyorsunuz. Programınız haliyle bir takım ekstra dosyalara ihtiyaç duymakta ve tabi ki bu dosyalar sizin uygulamayı geliştirdiğiniz ortamda mevcut ancak bu uygulamayı kuracak kullanıcılarında bu dosyalara sahip olması gerekiyor. İşte bu noktada programları kuran başka programlara ihtiyaç duyuluyor ve bu programlar uygulamanın çalışması için gerekli ayarları otomatik olarak yapmakta ve uygulama kurmayı sadece "İleri" tuşuna basmak kadar kolay bir hale getirmektedir.

Günümüzde çok gelişmiş kurulum (Setup) programları mevcut bunlardan bazıları InstallShield, InstallAware, Wise v.b. gibi programlar özellikle grafik arayüzleri ve işlemler sırasında kullanıcıya yardımcı olmak için hazırlanmış olan sihirbazları ile oldukça kullanışlı ve hızlı bir şekilde kurulum programı hazırlamamıza yardımcı oluyorlar. Ücretli olan bu programlar sadece kurulum hazırlama dışında bir çok ekstra araçlada yazılım geliştiricilere yardımcı oluyorlar.

Benim bugün size bahsetmek istediğim kurulum programı ise Nullsoft firması tarafından geliştirilen açık kaynak kodlu bir kurulum programı olan NSIS (Nullsoft Scriptable Install System) programı, aslında programdan ziyade derleyici (compiler) dersek sanırım daha doğru olur, çünkü bizim anladığımız anlamda bir IDE gelmiyor karşımıza sadece bizim yazdığımız kodları derleyip, bundan kurulum.exe dosyasını oluşturan bir derleyici ile karşılaşıyoruz. Bazıları zor olanı sever diyorum başka bir açıklamada gelmiyor aklıma diğer tarafta harika kullanıcı arayüzüne sahip programlar varken bazıları bu şekilde herşeyi satır satır yazarak kurulum programı oluşturmayı seçiyor. Onlardan biriside benim ve bu konuda çok az Türkçe kaynak olduğunuda görünce bu yazıyı siteme eklemeyi uygun buldum. Bilmiyorum kaç kişi bir kurulum programını kodlayarak hazırlamak ister ama eğer isteyen olursa burda küçük bir başlangıç yapmayı amaçlıyorum.


"NSIS", "HM NIS Edit" ve ilk adımlar

NSIS programını bilgisayarınıza kurduktan sonra herhangi bir metin düzenleyici ile kodlarınızı yazıp NSIS ile derleyebilirsiniz.Yazdığınız kodları uzantısı ".nsi" olan bir dosyaya kaydetmeniz gerekli, işlerinizi biraz daha kolaylaştırmak yada kodu yazarken sadece yazdıklarınıza odaklanmak isterseniz. NSIS kodlarını yazmak için kullanılan editörlerden birini edinebilirsiniz. Ben bu yazıda "HM NIS" editörünü kullanacağım siz istediğiniz bir editörde yazabilirsiniz.

Öncelikle http://nsis.sourceforge.net/Docs/ adresinden NSIS kullanıcı kılavuzunu takip etmenizi tavsiye ederim. Aradığınız bir çok şey zaten orada mevcut. Şimdi gelin birlikte basit bir kurulum dosyası olan "basit.nsi" dosyasının kodlarını birlikte inceleyelim;

; basit.nsi
;
; Bu kod dosyası NSIS ile yapılabilecek en basit kod dosyası sizler çok
; daha fazla özellik ekleyerek istediğiniz kurulum dosyalarını oluşturabilirsiniz.
; Bu program "NSIS_Setup" dosyasını kullanıcının gösterdiği dizine kopyalar.

;--------------------------------

; Kurulum programının adı
Name "Ornek1"

; Oluşturulacak dosyanın adı
OutFile "ornek1.exe"

; Varsayılan kurulum dizini
InstallDir $PROGRAMFILES\Ornek1

; Bu metin kullanıcının kurulacak dizini seçecği pencerede görünecek
DirText "Ornek1 programı bilgisayarınıza kurulacak. Bir dizin seçiniz."

;--------------------------------

; Kurulumla ilgili tüm bölümler
Section "" ;Herhangi bir birleşen eklenmedi

; Dosyanın kopyalanacağı dizin kurulum dizini olarak belirleniyor.
SetOutPath $INSTDIR

; Dosyayı belirtilen kurulum dizinene kopyala
File MyProg.exe

SectionEnd ; bölüm sonu

Kodlardan da anlaşılacağı üzere ";" karekteri açıklama satırlarını temsil ediyor. Bu projede ben bir kurulum dosyası oluşturuyorum, bu kurulum paketinin içinde sadece NSIS_Setup.exe isimli dosya var bu deneme amaçlı kullandığım NSIS programı kurulum dosyasının ta kendisi, kurulum programım bu dosyayı benim belirlediğim veya varsayılan olarak verilen dizine kopyalıyor hepsi bu kadar. Sizinde göreceğiniz gibi kodların içinde "$PROGRAMFILES", "$INSTDIR" gibi değişkenler var bunlar sistemde tanımlı olan ve bizim kullanabileceğimiz değişkenler birisi Windows sisteminde "Program Files" klasörünü gösterirken diğeri "InstallDir" değişkeni ile tanımlanan kurulum dizinini ifade ediyor. Bu kodları HM NIS programı ile derleyip yine HM NIS ile çalıştırdığınız zaman karşınıza aşağıdaki iki ekran gelecek ve program seçilen dizine kopyalanacaktır.


Kurulum işleminde daha bir sürü özellik var, bunları kullanım kılavuzunu kullanarak öğrenebilir ve kodlarınızda kullanabilirsiniz. Son olarak program kaldırma (uninstall) seçeneğinide kurulum programımıza eklemek istiyorum. Bunun için kodumuzu aşağıdaki gibi düzenliyoruz;

; basit.nsi
;
; Bu kod dosyası NSIS ile yapılabilecek en basit kod dosyası sizler çok
; daha fazla özellik ekleyerek istediğiniz kurulum dosyalarını oluşturabilirsiniz.
; Bu program "NSIS_Setup" dosyasını kullanıcının gösterdiği dizine kopyalar.

;--------------------------------

; Kurulum programının adı
Name "Ornek1"

; Oluşturulacak dosyanın adı
OutFile "ornek1.exe"

; Varsayılan kurulum dizini
InstallDir $PROGRAMFILES\Ornek1

; Bu metin kullanıcının kurulacak dizini seçecği pencerede görünecek
DirText "Ornek1 programı bilgisayarınıza kurulacak. Bir dizin seçiniz."

;--------------------------------

; Kurulumla ilgili tüm bölümler
Section "" ;Herhangi bir birleşen eklenmedi

; Dosyanın kopyalanacağı dizin kurulum dizini olarak belirleniyor.
SetOutPath $INSTDIR

; Dosyayı belirtilen kurulum dizinene kopyala
File MyProg.exe

; Kurulan programı kaldıracak olan "Uninstall.exe" programını nereye yerleştireceğimizi belirliyoruz.
WriteUninstaller $INSTDIR\Uninstall.exe

SectionEnd ; bölüm sonu

; Program kaldırma ile ilgili bölüm, dosyalar ve dizin siliniyor.
Section "Uninstall"

Delete $INSTDIR\Uninstall.exe
Delete $INSTDIR\NSIS_Setup.exe
RMDir $INSTDIR

SectionEnd ; bölüm sonu

Program kaldırma esnasında da  "Uninstall.exe" programı NSIS tarafından oluşturuluyor bizde bu programı kopyalacağımız yeri sisteme gösteriyoruz. Bu program çağrıldığında Section "Uninstall" bölümü çalışmaya başlıyor ve buradaki işlemler uygulanarak program sistemden kaldırılıyor.

Buraya kadar NSIS ve HM NIS ile basit bir kurulum dosyasının hazırlanma aşamasını anlatmaya çalıştım. Sadece konuya giriş niteliği taşıyan bu basit örnek umarım ilgilenen arkadaşlar için bir başlangıç olmuştur. Daha çok bilgiye NSIS kullanım kılavuzu ve NSIS forumları üzerinden ulaşabilirsiniz. Ayrıca yardımcı olabileceğim konuda bende elimden geleni yapmaya çalışırım, bunun için iletişim bölümünden bana ulaşabilrisiniz. Tüm okuyucularıma sağlık ve sıhhat dilerim. Keyifli günler.



[KickIt] [Dzone] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Etiketler: , , ,

E-mail | Permalink | Trackback | Post RSSRSS comment feed 0 Yorum

Şub282009

Tarihin en vahim 10 yazılım hatası

Yazan : Zafer    28.02.2009 | Yazılım

Teknolojik yazılım hataları bazen ölümcül olabiliyor. İşte, dünden bugüne kronolojik sırayla, Wired News tarafından listelenen tüm zamanların en kötü yazılım hataları.

 

BİLİNEN ÜNLÜ YAZILIM SORUNLARI

Birçok insan en önemli yazılım sorununun ölüme yol açan sorun olduğunu söyleyecektir. Böyle şeylerin tekrarlanmaması için Therac-25 olayını anımsamakta yarar var. Therac-25 olayı yazılımın kritik uygulamalarda kullanılmasına karşı bir uyarı olarak görülmektedir. Bu tür sistemleri inceleyen uzmanlar, yazılım bir kaç kişiyi öldürse de, bu tür ölümcül hatalara odaklanmanın teknolojinin daha akıllı işlem sürecinin çok gerekli olduğu alanlarına uygulanmasını önleyebileceğini söylüyorlar.

Onlara göre bazı durumlarda bir yazılım eksikliği, kaçınılmaz olan hatalarla ölenlerden daha fazla insanın ölmesine yol açabilir. Bu çok tartışmalı bir konudur. İşte, kronolojik sırayla, Wired News tarafından listelenen tüm zamanların 10 en kötü yazılım hatası:

28 Temmuz 1962 -- Mariner 1 Uzay Roketi: Mariner 1'in uçuş yazılımındaki bir hata fırlatma sırasında roketin istenen yörüngeden ayrılmasına yol açtı. Kontrol yönetimi tarafından roket Atlantik Okyanusu'nda yok edildi. Kazayla ilgili inceleme yapıldığında, bir kâğıda kurşun kalemle yazılmış bir formülün bilgisayara yanlış geçirilmiş olduğu ortaya çıktı. Böylece bilgisayar roketin yörüngesini yanlış hesaplamıştı.

1982 -- Sovyet Gaz Hattı: Söylentiye göre, CIA'e bağlı çalışan operatörler Sibirya gaz hattını kontrol etmek üzere satın alınan Kanada bilgisayar sistemine bir böcek yerleştirdiler. Sovyetler Birliği'nin bu sistemi hassas ABD teknolojisini gizlice satın alma ya da çalma çabalarının bir parçası olarak aldığı iddia ediliyorduı. Yine söylentiye göre, CIA, programı keşfetti ve onun geri tepmesini sağlamaya karar verdi. Bunun için Sovyet incelemesinden geçecek, ama sonunda işletme anında başarısız kalacak bir ekipmanı araç olarak kullandı. Böylece gezegenin tarihinde en büyük nükleeer olmayan patlama meydana geldi.

1985-1987 -- Therac-25 Tıp Kazası: Bir radyasyon terapi cihazı hatalı çalıştı ve çeşitli tıbbi tesislerde ölümcül düzeyde radyasyon verdi. Daha önceki bir tasarım geliştirilerek yaratılmuş bulunan Therac-25 iki farklı tür radyasyon verilen "ileri" bir terapi sistemi idi. Ya düşük güçlü elektron ışını (beta parçacıklar) veya X-ışınları veriyordu. Therac-25'in X-ışınları yüksek güçlü elektronların elektron silahı ile hasta arasına yerleştirilmiş bir metal hedefe çarptırılmaları ile yaratılıyordu. İkinci bir "ilerleme" de eski Therac-20 nin elektromekanik güvenlik bağlantılarının yazılım kontrolüyle yapılmasıydı. Bu karara yazılımın daha güvenli olduğu düşüncesiyle varılmıştı. Mühendislerin bilmediği şey hem 20 hem 25'in hiçbir resmi eğitimi olmayan bir programcı tarafından yazılmış olduklarıydı. Bir görünmez hata nedeniyle, hızlı yazan bir klavye kullanıcısı kaza yaparak Therac-25'in elektron ışınını yüksek enerjili modda, fakat metal hedef yerinde olmadan, hastaya gönderecek şekilde çalışmasına yol açabilirdi. Böyle oldu ve en az 5 hasta öldü başkaları ciddi şekilde yaralandı.

1988 -- Berkeley Unix Sisteminde Tampon Bellek Taşması: Adına Morris Worm denen ilk İnternet solucanı bir tampon bellek yetersizliği sorunundan yararlanıp, bir günden az bir zaman içinde, 2000-6000 arası bilgisayara bulaştı. Bu konuyla ilgili kod gets() olarak ifade edilen bir standart girdi-çıktı kütüphanesi fonksiyonuydu. Bu fonksiyon ağ üzerinde bir metin satırı okur. Maalesef gets() fonksiyonunun girdiyi sınırlamayla ilgili bir kontrolü yoktur ve çok büyük bir girdi solucanın bağlanabildiği makinayı kontrolüne almasını sağlayabilir. Programcılar çalışan koddaki gets() fonksiyonunu kullanım dışı bıraktılar; ama onu C programlama dilinin standart girdi-çıktı kütüphanesinden çıkarmayı kabul etmediler.

1988-1996 -- Kerberos Rasgele Sayı Üreticisi Kazası: Kerberos güvenlik sisteminin yazarları, programın rasgele sayı üreticisini uygun bir parametreyle beslemeyi ihmal edince, yetkilendirme için Kerberos'a dayanan bir bilgisayara izinsiz giriş yapmak mümkün hale geldi.

15 ocak 1990 -- AT&T Bilgisayar Ağı Kazası: AT&T'nin #4ESS uzun mesafe şalterlerini kontrol eden yazılımının yeni sürümündeki bir görünmez hata, bu dev bilgisayarların komşu makinaların birinden belirli bir mesaj almaları durumunda çökmelerine neden oldu. Bu mesaj çevre makinaların çökme durumundan kurtulduklarında gönderdikleri mesajdı. Bir gün bir şalter sistemi çöktü ve yeniden çalışmaya başladı. Komşu şalterler ve onlara komşu başka şalterler de çöktü. Kısa süre sonra, her 6 saniyede 114 şalter çöküp yeniden çalışmaya başlar hale geldi. Böylece 9 saat boyunca 60 bin kadar kişi uzun mesafeli servis kullanamaz hale geldi. Sonuçta mühendisler yazılımın eski sürümünü yüklediler.

1993 -- Intel Pentium İşlemcide Sorun: Bir silikon hatası Intel Pentium bilgisayar yongasının belli bir büyüklük aralığındaki ondalıklı sayıları bölerken hata yapmasına yol açıyordu. Örneğin 4195835.0 / 3145727.0 sonucu 1.33382 yerine 1.33374 olyordu. Bu yüzde 0.006 lık bir hataydı. Bu görünmez hata az sayıda kullanıcıyı etkiledi, ama halkla ilişkiler kâbusu yarattı. Piyasaya sürülmüş 3- 5 milyon arası yonga vardı. Başlangıçta Intel daha hassas hesaplamalara ihtiyacı olduğunu kanıtlayanlar için yonga değişişkliği yapmayı önerdi; ama sonunda teslim oldu, şikâyet eden herkesin yongasını değiştirmeyi kabul etti. Sonunda bu görünmez hata Intel'e 475 milyon dolara maloldu.

1995/1996 -- Bilgisayar Ağı Kontrol Komutlarında Sorun: İnternet Bağlantı Noktası numaraları (IP) ile ilgili bir koddaki hata, doğru yazılmamış bir "Ping" komutunun İnternet üzerinde herhangi bir yerden gönderilmesi sonucunda, çeşitli işletim sistemlerindeki bilgisayarların çökmesine yol açıyordu. En çok etkilenenler Windows kullanan bilgisayarlardı. Bu bilgisayarlar iletişimde Ping paketi aldıklarında kilitleniyor ve "mavi ölüm ekranını" getiriyorlardı. Sorun birçok Macintosh ve Unix sistemini de etkiledi.

4 Haziran 1996 -- Ariane 5 Flight 501: Ariane 4 roketinin çalışma kodu Ariane 5'te yeniden kullanılmıştı. Fakat Ariane 5'in daha hızlı olan motoru, roketin uçuş bilgisayarındaki bir aritmetik işlemde bir hatanın ortaya çıkmasına yol açıyordu. Hata, bilgisayar ifadeleriyle, 64 bitlik ondalıklı sayıyı 16 bitlik işaretli tam sayıya dönüştüren kodda idi. Daha hızlı motor 64 bitlik sayıların Ariane 5'te, Ariane 4 de olduğundan daha büyük olmasına yol açıyor ve böylece sayısal taşma durumu yaratıyor, o da uçuş bilgisayarının çökmesini getiriyordu. Flight 501'in destek bilgisayarı çöktü, 0.05 saniye sonra da ana bilgisayar çöktü. Çöken bilgisayarlar sonucu, roketin ana işlemcisi motorlara aşırı güç yüklenmesine yol açtı ve roket, fırlatıldıktan 40 saniye sonra, parçalandı.

Kasım 2000 -- National Cancer Institute, Panama: Bir dizi kaza sonucu bir ABD firması olan Multidata Systems International tarafından yazılmış olan terapi planlama yazılımı, radyasyon terapisine girecek hastaya yollanacak uygun radyasyon dozunu yanlış hesapladı. Multidata'nın yazılımı bir radyasyon terapistinin, "blok" denen, sağlam dokuların radyasyondan korunmasını sağlayan metal kalkanın yerini bilgisayar ekranında belirlemesine olanak veriyordu.

Ancak yazılım teknisyenin yalnızca 4 koruyucu blok kullanmasına izin veriyor, Panamalı doktorlar ise 5 koruyucu blok kullanmak istiyorlardı. Doktorlar 5 blokun hepsini ortada bir deliği olan tek bir büyük blok gibi çizerek yazılımı kandırabileceklerini keşfettiler. Doktorların kavramadıkları şey, bu kurulumda Multidata yazılımının, deliğin nasıl çizildiğine bağlı olarak, farklı yanıtlar verdiği idi.

Deliği bir yönde çizdiğinizde doğru doz hesaplanıyor, başka yönde çizdiğinizde yazılım gerekli dozun iki katını tavsiye ediyordu. En az 8 hasta öldü, 20 başka hasta da önemli sağlık sorunları yaratacak ölçüde aşırı dozda radyasyon aldı. Yasal olarak, bilgisayarın hesaplarını elle yapacakları hesapla çift kontrolden geçirmeleri gereken doktorlar cinayetle suçlandı.



[KickIt] [Dzone] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Etiketler: , , ,

E-mail | Permalink | Trackback | Post RSSRSS comment feed 2 Yorum

Oca292009

Windows 7 Beta izlenimlerim

Yazan : Zafer    29.01.2009 | Yazılım

Merhaba,

Windows Vista işletim sistemine yeni yeni alışırken Microsot Windows 7 Beta sürümünü yayınladı. Windows Vistaya ısınamadığım için halen Windows XP Pro. kullanmakta olduğumdan beta sürümü indirip bende denemek istedim. Öncelikle test amacıyla Sanal PC (Virtual PC) üzerinde kurulum yaptım. Daha sonra kullandığım bir kaç programıda sisteme kurarak denemeler yaptım.

Windows 7'de bir çok değişiklik olacağı kesin görünüyor. Öncelikle, kullandığımız programların yerleştiği panel (Taskbar) oldukça değişmiş. Eskisi gibi ince bir panel yerine linux KDE sistemini andıran biraz daha geniş bir panel bizleri karşılıyor. Ayrıca panel üzerinde sadece uygulamalrın simgeleri görünüyor. Yine masaüstünü göster butonu panelin en sonuna alınmış bence aslında çokta hoş olmuş diyebilirim.

Bunların dışında Delphi ve CodeBlocks kurulumunda ve çalışmasında bir sorun yoktu. Her iki programda rahatça kuruluyor ve çalışmalarınızı yapabiliyorsunuz. Bunların dışında sistem sanal PC üzerinde kurulu olduğu için çok detaylı inceleyemedim ama sanırım hafta sonu kendi sistemimi kaldırıp bilgisayarıma Windows 7 Beta yükleyip daha detaylı inceleme şansı bulacağım. Merak edenler için bir kaç ekran görüntüsünü aşağıda bulablirsiniz.
Windows 7 Beta indirmek isterseniz işte adresi : http://www.microsoft.com/windows/windows-7/











[KickIt] [Dzone] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Etiketler: , ,

E-mail | Permalink | Trackback | Post RSSRSS comment feed 0 Yorum

Oca222009

BlogEngine için Last.fm Widget

Yazan : Zafer    22.01.2009 | Yazılım

Merhaba,

Site altyapısında ASP.NET ile yazılmış, açık kaynak kodlu bir blog yazılımı olan BlogEngine kullanıyorum. BlogEngine' i çok sevdim sade ve şık umuyorum ilerleyen zamanlarda adı daha çok kişi tarafından duyulacak. Bu bağlamda bende hem kullandığım ve memnun kaldığım bu güzel blog yazılımına destek vermek hemde hep tüketen değil birazda üreten olmak adına BlogEngine için uzun süredir bir şeyler yapmak niyetindeydim. Kısmet bugüneymiş meğer.

Bilenler bilir, bilmeyenlerde bir zahmet google ile biraz haşır neşir olarak öğrenebilirler. Bahsettiğim konu last.fm, kısaca internet üzerinden erişebileceğiniz bir radyo ama biraz daha farklı şöyle ki, müzik aralarında reklam yok veya dinlediğinin bir şarkının başını veya sonunu gasp eden bir dj'de yok, üstelik sevmediğiniz bir şarkı çıkarsa bir başkasına geçme gibi bir lükse sahipsiniz ve daha bir çok şey. Merak edenler için site adresi burada, böyle buyrun efem :)

Neyse efenim, farklı bloglarda last.fm eklentileri görünce bende bloguma eklemek için böyle bişey aramaya başladım. Sonunda Hakan Çosar'ın sitesindeki eklentiyi buldum ama beni biraz uğraştırdı. Bunun yanı sıra bir ayar menüsü felanda yoktu. Bende çekirdek kodları alıp sıvadım kolları ve bu kodlardan faydalanarak BlogEngine için bir last.fm widgeti hazırladım. Bu widget oldukça hoşuma gitti ve bende sizlerle paylaşmaya karar verdim umarım ilgilenen arkadaşların işine yarar. Kurulum ve kullanımla ilgili her türlü açıklama sıkıştırılmış (.rar) dosya içindeki beni oku dosyasında mevcuttur. Bu rağmen çözemediğiniz sorununuz olursa iletişim bölümünden bana ulaşabilirsiniz.

Not: Yapmış olduğum bu widgetin BlogEngine kullanan kişilere daha çabuk ulaşması açısından BlogEngineTR sitesine bir mesaj bıraktım. Mesajın içeriğinde, yaptığım widget hakkında bilgi verip ilgilenenler için bu sayfanında adresini bıraktım. Ancak mesajım yayınlanmadı banada hiçbir şekilde dönüş yapılmadı. BlogEngine'e Türkçe destek veriyoruz diye ortaya çıkan bu sitenin amacının destek vermekten ziyade başka hususlar olduğu şüphesindeyim. Bu davranışları sebebiyle kendilerini kınıyorum. 

 

   Last.fm widget : LastFm Widget.rar (95,30 kb)

 

 

 

 

 

 

 

 

 

 

 



[KickIt] [Dzone] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Etiketler: ,

E-mail | Permalink | Trackback | Post RSSRSS comment feed 0 Yorum