eniXma: Online özgür ve açık kaynak yazılım dergisi

eniXma isminde yeni bir linux dergisinin varlığını büyük bir sevinç ve heyecan içinde haber veriyorum. Bazıları günaydın diyebilir, haklılar ;) IBM’in çıkarttığı Özgür Yazılım ve Haber dergilerinden sonra Türkçe olarak hazırlanan bu güzel derginin mevcut açığı kapatmada, özgür yazılım hareketinin daha geniş kitlelere yayılması ve özgür yazılımın ülkemize sağlayacağı faydaya katkıda bulunması açısından sevinç verici. Umarım daimi olur. eniXma’nın bu ayki sayısının içeriğinde şunlar varmış:

  • Basket
  • Ekran Kaydediciler
  • Katapult
  • Firefox 3.0
  • GPG Nedir?
  • OTR Şifreleme
  • Mandriva’da Disk Yönetimi
  • Size Özel Fedora
  • Linpus Linux Lite
  • OpenSUSE 11.0

eniXma isminde yeni bir linux dergisinin varlığını büyük bir sevinç ve heyecan içinde haber veriyorum. Bazıları günaydın diyebilir, haklılar ;) IBM’in çıkarttığı Özgür Yazılım ve Haber dergisinden sonra Türkçe olarak hazırlanan bu güzel derginin mevcut açığı kapatmada, özgür yazılım hareketinin daha geniş kitlelere yayılması ve özgür yazılımın ülkemize sağlayacağı faydaya katkıda bulunması açısından sevinç verici. Umarım daimi olur. eniXma’nın bu ayki sayısının içeriğinde şunlar varmış:

  • Basket
  • Ekran Kaydediciler
  • Katapult
  • Firefox 3.0
  • GPG Nedir?
  • OTR Şifreleme
  • Mandriva’da Disk Yönetimi
  • Size Özel Fedora
  • Linpus Linux Lite
  • OpenSUSE 11.0

Okumaya devam et “eniXma: Online özgür ve açık kaynak yazılım dergisi”

Delphi: "Invalid argument to date encode" hatasını gidermek

TIdHttp içinde aniden peydahlanan bu sorun kodun ele aldığı tarih bilgisinin, daha doğrusu tarih formatının önceden varsayıldığı gibi olmamasından kaynaklanıyor. Aslında bu sorunun çözümü için google‘da birkaç farklı yol bulunsa da kod yamalamayı gerektirdiği için bunları tavsiye edemiyorum.

Belirsiz bir nedenden dolayı süpriz olarak ortaya çıkan bu sorunu kütüphaneleri yamalayarak çözmek pek mantıklı değil. Delphi’nin kütüphaneleri eğer güncel bir versiyonunu kullanıyorsanız muhtemelen böcek/kod satırı oranı iyi bir düzeydedir ve sizin yapacağınız müdahalelerin bu oranı artırma potansiyeli yüksek.

Çözüm olarak bilgisayarınızı yeniden başlatıp hatayı tekrar kontrol edin. Sorun muhtemelen yüklediğiniz bir programın windows’un kararlılığını bozduğu geçici bir durumdur.

Başka bir çözüm de Windows’un denetim masasındaki Bölge ve Dil Seçenekleri simgesinden geçerli tarih formatı ayarlarınızın normal olup olmadığına bakın.

Google Summer of Code: PHP-Based Docbook renderer

Burada PhD adındaki,  Docbook formatlı dökümanları chm ve pdf gibi daha taşınabilir ve yaygın formatlara çeviren bir proje yer alıyor. Şimdiden PHP için oldukça kapsamlı bir başvuru klavuzu chm formatına çevrilmiş ve indirilmeye hazır. PHP programcılarının mutlaka elinin altında hazır olması gereken bir klavuz. Siteden indirirken sorun olursa buradan da indirebilirsiniz.

Hertürlü projeniz için: EmbededMySQL

Projelerinizde gömülü olarak kolayca kullanabileceğiniz bir MySQL paketi hazırladım. Google’un bile kullandığı MySQL,herzaman performansı ve rahat kullanımıyla dikkat çeker. Ticari olmayan projelerdeki kullanımında herhangi bir kısıtlama olmayan MySQL veri tabanı sunucusunu, kolay bir şekilde her türlü projenizde kullanabilirsiniz.

Okumaya devam et “Hertürlü projeniz için: EmbededMySQL”

max_user_connections hatası almak için güzel bir yol söyleyebilirim

PHP kodlarken veritabanı sorgularında kolaylık sağlasın diye SQL cümlemizi alıp sorgu sonucunu döndüren execSQL, execQuery vs gibi fonksiyonlar tanımlayıp kullanırız.  Böylece her seferinde sunucu bağlantısı ve veritabanı seçimi ile uğraşmaktan kurtulmuş oluruz. Tabi kurallara uyan tertipli her programcı gibi fonksiyonun sonunda da mysql_close ile açtığımız bağlantıyı sonlandırmayı unutmayız. Aslında bazen unutmalıyız. Peki neden?

PHP kodlarken veritabanı sorgularında kolaylık sağlasın diye SQL cümlemizi alıp sorgu sonucunu döndüren execSQL, execQuery vs gibi fonksiyonlar tanımlayıp kullanırız.  Böylece her seferinde sunucu bağlantısı ve veritabanı seçimi ile uğraşmaktan kurtulmuş oluruz. Tabi kurallara uyan tertipli her programcı gibi fonksiyonun sonunda da mysql_close ile açtığımız bağlantıyı sonlandırmayı unutmayız. Aslında bazen unutmalıyız. Peki neden?
Okumaya devam et “max_user_connections hatası almak için güzel bir yol söyleyebilirim”

Delphi ile web sayfasının ekran görüntüsünü almak

About.com birçok konuda olduğu gibi Delphi‘de yazılım geliştirme konularıyla ilgili yazılar yayınlıyor. Makaleler ve çeşitli kod örneklerinden oluşan yazılar ele aldığı konuların kullanışlılığı ve anlatımındaki yalınlık ile akılda kalıyor. Aşağıda, benim de zamanında çok aradığım ve bazılarının işine yarayabilecek, web sitelerinin ekran görüntüsünü çekmek için bir kod yer alıyor. Kod TWebBrowser nesnesi ile taranan sayfaların ekran görüntüsünü kaydetmek için kullanılıyor.

About.com birçok konuda olduğu gibi Delphi‘de yazılım geliştirme konularıyla ilgili yazılar yayınlıyor. Makaleler ve çeşitli kod örneklerinden oluşan yazılar ele aldığı konuların kullanışlılığı ve anlatımındaki yalınlık ile akılda kalıyor. Aşağıda, benim de zamanında çok aradığım ve bazılarının işine yarayabilecek, web sitelerinin ekran görüntüsünü çekmek için bir kod yer alıyor. Kod TWebBrowser nesnesi ile taranan sayfaların ekran görüntüsünü kaydetmek için kullanılıyor.
Okumaya devam et “Delphi ile web sayfasının ekran görüntüsünü almak”

Delphi’de access violation hatalarını gidermek

Access violation hatası belleğin işlem yapılan konumunun okunamamasından veya yazılamamasından kaynaklanır. Hata mesajında hataya neden olan kodun segment ve ofset adresleri bildirildiğinden programcının hatanın yerini tespit etmesi zordur. Benzer sorunlar sıfıra bölme (zero division) ve yığın taşması (stack overflow) gerçekleştiğinde de olur.

Delphi programlarında bu tür sorunlara neden olan kod satırlarını tespit münkündür. Bunun için Project->Options…->Linker ekranındaki Map file ayarı Detailed olarak ayarlanır. Bundan sonra her derleme işleminde uzantısı map olan bir bellek harita dosyası oluşturur.

Bu dosyada program  kod satırlarınıa karşılık gelen makina kodlarının ofset adresleri yer alır. Böylece hatanın oluştuğu bellek adresinin hangi kod satırına karşılık geldiği bulunabilir.

Hatalı kod satırını daha düzgün ve ayrıntılı olarak raporlayabilmek için uLkStackTrace class’ını kullanabiliriz. uLkStackTrace Mozilla lisansıyla dağıtılan bir SourceForge.net projesi.

uLkStackTrace sınıfınınkullanıldığı örnek proje dosyasını aşağıdaki bağlantı ile indirebilirsiniz:

UnhandledExceptions_DelphiSourceCode.rar (~241KB)<

Örnek projede de görüleceği üzere, sınıfın kullanılmasından kısaca bahsetmek  gerekirse;

  • Uses bloğuna uLkStackTrace unit ismini ekleyin.
  • İstisnaları ekrana veya bir dosyaya rapor edecek bir prosedür hazırlayın.
  • LkExceptionReporter yordamına bu prosedürü atayın.
  • Rapor prosedürünü Form.Create‘in başına yazmayı unutmayın.

Access violation hatası belleğin işlem yapılan konumunun okunamamasından veya yazılamamasından kaynaklanır. Hata mesajında hataya neden olan kodun segment ve ofset adresleri bildirildiğinden programcının hatanın yerini tespit etmesi zordur. Benzer sorunlar sıfıra bölme (zero division) ve yığın taşması (stack overflow) gerçekleştiğinde de olur.

Delphi programlarında bu tür sorunlara neden olan kod satırlarını tespit münkündür. Bunun için Project->Options…->Linker ekranındaki Map file ayarı Detailed olarak ayarlanır. Bundan sonra her derleme işleminde uzantısı map olan bir bellek harita dosyası oluşturur.

Bu dosyada program  kod satırlarınıa karşılık gelen makina kodlarının ofset adresleri yer alır. Böylece hatanın oluştuğu bellek adresinin hangi kod satırına karşılık geldiği bulunabilir.

Hatalı kod satırını daha düzgün ve ayrıntılı olarak raporlayabilmek için uLkStackTrace class’ını kullanabiliriz. uLkStackTrace Mozilla lisansıyla dağıtılan bir SourceForge.net projesi.

uLkStackTrace sınıfınınkullanıldığı örnek proje dosyasını aşağıdaki bağlantı ile indirebilirsiniz:

UnhandledExceptions_DelphiSourceCode.rar (~241KB)<

Örnek projede de görüleceği üzere, sınıfın kullanılmasından kısaca bahsetmek  gerekirse;

  • Uses bloğuna uLkStackTrace unit ismini ekleyin.
  • İstisnaları ekrana veya bir dosyaya rapor edecek bir prosedür hazırlayın.
  • LkExceptionReporter yordamına bu prosedürü atayın.
  • Rapor prosedürünü Form.Create‘in başına yazmayı unutmayın.

Okumaya devam et “Delphi’de access violation hatalarını gidermek”

İndir: Flow Chart Visual Programming Language [Türkçe]

 

Programlama öğretiminde kullanılan Flow Chart Visual Programming Language adlı programı Türkçeye çevirdim. Çizilen bir akış diyagramını adım adım çalıştırıp  çıktısını sanal bir konsol ekranında görüntüleyen program, programlamayı yeni başlayanların, hazırladıkları algoritmalarını sınamak için kullanabilecekleri faydalı bir yazılım. Aşağıdaki bağlantıyı kullanarak programı ve örnek program dosyalarını bilgisayarınıza indirip ücretsiz olarak kullanmaya başlayabilirsiniz.

FlowProgramming.exe dosyasına sağ tıklayıp “Yönetici olarak çalıştır” seçeneğini seçiniz.

 

İyi yazılım 10 yıl alır, buna alışın.

Şu tabloya bir göz atın:

İyi yazılım On Yıl Alır, Buna Alışın

Bu tablo, Lotus Notes workgroup yazılımının piyasaya ilk çıkarıldığı tarih olan 1989’dan 2000 yılına kadar kaç yerde kurulu olduğunu göstermektedir. Aslında Notes 1.0 sürümü çıkarıldığında beş yıldan beri geliştirilmekte idi. Notes’un yeterli kaliteye erişmesi ve kullanıcıların satın almaya başlaması için geçen sürenin uzunluğuna dikkatinizi çekmek isterim. Gerçekten de 1984 yılında ilk kod satırının yazılmaya başlaması ile yukarıdaki eğrinin yükselen kısmına erişmesi için tam 11 yıl geçmesi gerekmiştir. Bu süre boyunca Ray Ozzie ve kadrosu St Barts’da buzlu viski içmiyorlardı. Nefes almaksızın kod yazıyorlardı.

Şu tabloya bir göz atın:

İyi yazılım On Yıl Alır, Buna Alışın

Bu tablo, Lotus Notes workgroup yazılımının piyasaya ilk çıkarıldığı tarih olan 1989’dan 2000 yılına kadar kaç yerde kurulu olduğunu göstermektedir. Aslında Notes 1.0 sürümü çıkarıldığında beş yıldan beri geliştirilmekte idi. Notes’un yeterli kaliteye erişmesi ve kullanıcıların satın almaya başlaması için geçen sürenin uzunluğuna dikkatinizi çekmek isterim. Gerçekten de 1984 yılında ilk kod satırının yazılmaya başlaması ile yukarıdaki eğrinin yükselen kısmına erişmesi için tam 11 yıl geçmesi gerekmiştir. Bu süre boyunca Ray Ozzie ve kadrosu St Barts’da buzlu viski içmiyorlardı. Nefes almaksızın kod yazıyorlardı.
Okumaya devam et “İyi yazılım 10 yıl alır, buna alışın.”

ZEOSDBO Select * from hatasını gidermek

ZEOSDBO-6.6.2-rc ile ZQuery1.SQL.Add(‘select * from links’); sorgusunu çalıştırıp  ZQuery1.FieldbyName(‘title’).AsVariant; ile veriyi almaya calıştığımda aşağıdaki hata mesajını alıyordum;

Application raised an exception class EZSQLException with mesage ‘Column with name “Extra” was not found”

Okumaya devam et “ZEOSDBO Select * from hatasını gidermek”

PHP ile garantili mail göndermek

PHP’nin resmi sayfasında mail komutunun kullanımı hakkında şu bilgiler yer alıyor:

Kullanımı:

bool mail  ( string $to  , string $subject  , string $message  [, string $additional_headers  [, string $additional_parameters  ]] )

Mail komutunda kullanılması zorunlu parametreler:

  • $to: PHP ile mail göndereceğiniz kişinin adresi. Tipi string’dir.
  • $subject: Mail’in konusu. Tipi string’dir.
  • $message: Göndermek istediğiniz mail’in içeriği. Tipi string’dir.

Not: String tipine Türkçe’mizde bazen katar bazen de karakter dizgesi adı verilmektedir.

Dördüncü ve beşinci parametrelerin kullanılması zorunlu olmamakla birlikte görevlerini kısaca söyle açıklayabiliriz.

  • $additional_headers: Bu kısımda, gönderen adresi, karbon kopya (CC) adresi ve gizli karbon kopya (BCC) adresi gibi adresler belirtilebilir. CC adresi, gönderilen mailin bir kopyasının da (karbon kopya) başka bir adrese gönderilmesini sağlar. CC alıcısı gelen mail’in başlık bilgilerinden mail’in asıl alıcısının kim olduğunu görebilir.  BCC, CC ye benzemekle birlikte, tek farkı, asıl alıcı ile CC alıcısının mail’in bir kopyasının da BCC adresine gönderildiğini bilememesidir. Mail sunucusu başlık bilgilerine bu adresi dahil etmez. Bu kısımın da veri tipi String’dir.
  • $additional_parameters: SendMail yazılımına parametre yollamak için kullanılıyormuş. Ayrıntısını şimdilik bilemeyeceğim.

PHP’nin resmi sayfasında mail komutunun kullanımı hakkında şu bilgiler yer alıyor:

Kullanımı:

bool mail ( string $to  , string $subject  , string $message  [, string $additional_headers  [, string $additional_parameters  ]] )

Mail komutunda kullanılması zorunlu parametreler:

  • $to: PHP ile mail göndereceğiniz kişinin adresi. Tipi string’dir.
  • $subject: Mail’in konusu. Tipi string’dir.
  • $message: Göndermek istediğiniz mail’in içeriği. Tipi string’dir.

Not: String tipine Türkçe’mizde bazen katar bazen de karakter dizgesi adı verilmektedir.

Dördüncü ve beşinci parametrelerin kullanılması zorunlu olmamakla birlikte görevlerini kısaca söyle açıklayabiliriz.

  • $additional_headers: Bu kısımda, gönderen adresi, karbon kopya (CC) adresi ve gizli karbon kopya (BCC) adresi gibi adresler belirtilebilir. CC adresi, gönderilen mailin bir kopyasının da (karbon kopya) başka bir adrese gönderilmesini sağlar. CC alıcısı gelen mail’in başlık bilgilerinden mail’in asıl alıcısının kim olduğunu görebilir.  BCC, CC ye benzemekle birlikte, tek farkı, asıl alıcı ile CC alıcısının mail’in bir kopyasının da BCC adresine gönderildiğini bilememesidir. Mail sunucusu başlık bilgilerine bu adresi dahil etmez. Bu kısımın da veri tipi String’dir.
  • $additional_parameters: SendMail yazılımına parametre yollamak için kullanılıyormuş. Ayrıntısını şimdilik bilemeyeceğim.

Okumaya devam et “PHP ile garantili mail göndermek”

Rusya programcı yetiştirme atağında

Yazının sonunda bulabileceğiniz habere göre, Rusya‘nın eğitimden sorumlu kurumu (bizdeki milli eğitim bakanlığı) CodeGear’dan 1 milyon adet yazılım geliştirme programı lisansı satın almış. Satın alınan lisanslar CodeGear’in Delphi®, Delphi for .NET, and C++ Builder® yazılımlarının, birinci(primary) ve ikinci(secondery) seviyedeki öğrencilere programlama ve uygulama geliştirme eğitimi vermek için kullanılacak.

Haberde CEO Jim Douglas’in soylediğine göre Rus öğrencilerin Delphi ve Pascal kullanımında uzun bir geçmişi var. Satın alınan yeni nesil geliştirme araçlarıyla yeni nesil yazılımların üretilebileceğini söylüyor.

Adres http://www.codegear.com/article/37605

İmrenmemek elde değil dostlar.Yazılım teknolojilerine yapılan yatırımların hakkını ancak gerekli donanıma ve formasyona sahip eğitimciler verebilirler. Yapılan yatırımın karşılığının alınacağına eminim. Microsoft geliştirme araçlarının (.Net IDE’leri) dışında da bir tecih yapılması iyi ve güçlü alternatiflerin de olduğunu gösteriyor.

Ne söyleyelim ki.. Darısı başımıza.

Revolution OS: Linux, Gnu ve OpenSource

 GNU/Linux’un ve GNU felsefesinin nasıl çıktığını, nasıl geliştiğini ve bu gelişim süreci esnasında yaşanan olayları GNU dünyasının efsaneleri kendi ağızlarından anlatıyorlar. Pek fazla teknik bilgi gerektirmeden izlenebilecek bir film olan Revolution OS Linux, GNU ve Open Source konusunda  güzel bilgiler veriyor.

Oyuncular: Linus Torvalds, Richard M. Stallman, Eric Raymond, Bruce Perens, Larry Augustin, Michael Tiemann, Brian Behlendorf, Frank Hecker, Chris DiBona, Nick Moffitt, Rob Malda, Donnie Barnes

GNU/Linux’un ve GNU felsefesinin nasıl çıktığını, nasıl geliştiğini ve bu gelişim süreci esnasında yaşanan olayları GNU dünyasının efsaneleri kendi ağızlarından anlatıyorlar. Pek fazla teknik bilgi gerektirmeden izlenebilecek bir film olan Revolution OS Linux, GNU ve Open Source konusunda  güzel bilgiler veriyor.

Oyuncular: Linus Torvalds, Richard M. Stallman, Eric Raymond, Bruce Perens, Larry Augustin, Michael Tiemann, Brian Behlendorf, Frank Hecker, Chris DiBona, Nick Moffitt, Rob Malda, Donnie Barnes

Okumaya devam et “Revolution OS: Linux, Gnu ve OpenSource”

Borland Kodlama Standartları

Bu doküman Delphi kod yazma standartlarını anlatmaktadır. Borland tarafından oluşturulan ve birçok Delphi programcısı tarafından benimsenen standartlar. Object Pascal çok güzel dizayn edilmiş bir dildir, bu standartların temel amacı da kodu daha okunabilir kılmaktır. Daha sonra yazdığınız bir koda baktığınız zaman kolayca okuyabilmelisiniz veya birlikte proje geliştirdiğiniz bir takım arkadaşınız kodlarınızı kolayca anlayabilmelidir.

Bu doküman Delphi kod yazma standartlarını anlatmaktadır. Borland tarafından oluşturulan ve birçok Delphi programcısı tarafından benimsenen standartlar. Object Pascal çok güzel dizayn edilmiş bir dildir, bu standartların temel amacı da kodu daha okunabilir kılmaktır. Daha sonra yazdığınız bir koda baktığınız zaman kolayca okuyabilmelisiniz veya birlikte proje geliştirdiğiniz bir takım arkadaşınız kodlarınızı kolayca anlayabilmelidir.
Okumaya devam et “Borland Kodlama Standartları”

get_string_between: İki ifadenin arasındaki ifadeyi getirmek

Aşağıdaki basit PHP fonksiyonu iki ifade arasında yer alan başka bir string ifadeyi getirmek için kullanılıyor. Dikkat edilirse fonksiyon her zaman doğru çalışmasını strpos fonksiyonunun üçüncü parametresi olan offset ‘e borçlu.

function get_string_between($string, $start, $end){
$string = ” “.$string
;
$ini = strpos($string,$start
);
if (
$ini == 0) return “”
;
$ini += strlen($start
);
$len = strpos($string,$end,$ini) – $ini
;
return
substr($string,$ini,$len
);
}$string = “this [custom] function is useless!!”;
echo
get_string_between($string,“[“,“]”
);
// must return “custom”;Kaynak: http://php.oregonstate.edu/manual/en/ref.strings.php

3B Linux çekirdek animayonu

Üstteki resimler Linux çekirdek kaynak kodlarının 3-boyutlu animasyonuna ait. Kaynak kod bağımlılıklarının hareketli bir animasyonla gösterildiği filmde çekirdeğin ne kadar kompleks olduğunu daha iyi görülebiliyor. Görüntüyü daha iyi anlamak için animayon hakkında şu açıklamaları yapmakta fayda var;

Yeşil kutular dosyaları temsil ediyor.
Yeşil ağaç, işletim sisteminin dizin yapısını temsil ediyor.
Mavi hatlar fonksiyonların bağımlılıklarını,
Kırmızı hatlar değişken bağımlılıklarını,
Sarı parlak kutular dosya boyut değişikliklerini,
Yeşil parlak kutular dizinler arasında taşınmış dosyaları,
Kırmısı parlark kutular yeni dosyaları temsil ediyor.

Animasyonlar:
http://www.pabr.org/kernel3d/245.mpg (384×288, 2000 frames)
http://www.pabr.org/kernel3d/120-241.mpg (384×288, 1400 frames)
http://www.pabr.org/kernel3d/120-241s.mpg (320×240, 1200 frames, low motion)

Kaynak: http://www.pabr.org/kernel3d/kernel3d.html

Script çalışırken çıktı vermek

Bir PHP script’inin çıktısı script’in çalışması tamamlandıktan sonra gönderilir. Scrip çalışmaya devam ederken sayfada/ekranda bir çıktı gözükmez. Script’in oluşturduğu tüm çıktılar Output Buffer (ob) adı verilen tamponda tutulur. Programcı isterse bu tamponu ob_ fonksiyonlarıyla kontrol edebilir. Tampondaki içeriği istenildiği anda çıktı vermek için için ob_flush() komutu kullanılabilir. ob_flush cağrıldığında o ana kadar çıktı tamponuna biriktirilen tüm içerik tarayıcıya bir header yardımıyla gönderilir ve görüntülenmiş olur.

Çıktının zamanlamasını ayarlayarak göze hoş gözüken sayfa yüklemeleri elde edilebilir. Yine ob_flush ile uzun bir işlemi yerine getiren script’in, kullanıcıyı  o anda yağtığı iş hakkında bilgilendirmesi için faydalıdır. Gerektiğinde bu özellik kullanılırsa ziyaretçinin sayfa izleme kalitesi artacaktır.

Aşağıdaki kodda  ob_imlicit_flush komutunun kullanımına örnek yer alıyor. Bu komut çıktı tamponunu devre dışı bırakır ve echo gibi her çıktı komutunun ardından çıktının anında tarayıcıya gönderilmesini sağlar. Aşağıdaki kodun çalışan halini buraya tıklayarak izleyebilirsiniz.

Dikkat edilmesi gereken bir nokta, ob_flush komutundan hemen sonra flush() komutunun da kullanılması gerektiğidir.