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”

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.

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

Projedeki formları tespit etmek

Program projede yer alan formları çalışma anında tespit etmek ve onlara erişmeyi gösteren deneysel bir çalışma. Application.ComponentCount özelliği projede yer alan tüm nesnelerin sayısını verir. Application.Compnents dizisi ise bu nesnelerin veri yapısına işaret eden Tcomponent sınıfını içerir. Projedeki tüm nesneler taranarak is işleci ile TForm sınıfından olup olmadığına bakılır. as işleci ise dinamik olarak erişilen component’in istenilen sınıf gibi yorumlatılması için kullanılıyor.

Program projede yer alan formları çalışma anında tespit etmek ve onlara erişmeyi gösteren deneysel bir çalışma. Application.ComponentCount özelliği projede yer alan tüm nesnelerin sayısını verir. Application.Compnents dizisi ise bu nesnelerin veri yapısına işaret eden Tcomponent sınıfını içerir. Projedeki tüm nesneler taranarak is işleci ile TForm sınıfından olup olmadığına bakılır. as işleci ise dinamik olarak erişilen component’in istenilen sınıf gibi yorumlatılması için kullanılıyor.

Okumaya devam et “Projedeki formları tespit etmek”

Delphi’de düşük boyutlu program yazmak

Derlendiğinde 3.5KB ‘lık çalıştırılabilir kod üreten deneysel bir çalışma. Program delphi IDE’si veya doğrudan Delphi kod derleyicisi (dcc32) kullanılarak derleniyor. Ana program kodunu ve üniteleri derlemek için bat dosyaları kullanılıyor.

Küçük boyutları elde etmek için IDE aracılığyla derlemekten kaçınılabilir, Delphi IDE si varsayılan derleme seçenekleri ile programa fazladan kod ve kontrol blokları ekler. Bu özellik programın çevikliğini artırırken diğer yandan çalıştırılabilir kodun belli ölçüde büyümesine ve yavaşlamasına neden olur.

Çoğu zaman programa dahil edilen yerel Delphi üniteleri de programın boyutunu artırır. Bir nesnenin kullanılmayan bazı özellik ve yordamlari da ana koda dahil olur. Birbirinden türeyen bazı nesnelerin yapısı  türedikleri sınıfa bağlı olarak uzun bir zincir oluşturabilir ve bu durum doğal olarak programın boyutunun artmasına neden olur. Bunun yerine örnek programda olduğu gibi en sade sınıfları ve nesneleri kendiniz hazırlayabilirsiniz. Aslında bu yöntem kalın uygulamalar hazırlarken pek uygulanabilir değildir.

Programın bellek kullanımını da derleyici direktiflerini kullanarak sınırlandırabilirsiniz.

Derlendiğinde 3.5KB ‘lık çalıştırılabilir kod üreten deneysel bir çalışma. Program delphi IDE’si veya doğrudan Delphi kod derleyicisi (dcc32) kullanılarak derleniyor. Ana program kodunu ve üniteleri derlemek için bat dosyaları kullanılıyor.

Küçük boyutları elde etmek için IDE aracılığyla derlemekten kaçınılabilir, Delphi IDE si varsayılan derleme seçenekleri ile programa fazladan kod ve kontrol blokları ekler. Bu özellik programın çevikliğini artırırken diğer yandan çalıştırılabilir kodun belli ölçüde büyümesine ve yavaşlamasına neden olur.

Çoğu zaman programa dahil edilen yerel Delphi üniteleri de programın boyutunu artırır. Bir nesnenin kullanılmayan bazı özellik ve yordamlari da ana koda dahil olur. Birbirinden türeyen bazı nesnelerin yapısı  türedikleri sınıfa bağlı olarak uzun bir zincir oluşturabilir ve bu durum doğal olarak programın boyutunun artmasına neden olur. Bunun yerine örnek programda olduğu gibi en sade sınıfları ve nesneleri kendiniz hazırlayabilirsiniz. Aslında bu yöntem kalın uygulamalar hazırlarken pek uygulanabilir değildir.

Programın bellek kullanımını da derleyici direktiflerini kullanarak sınırlandırabilirsiniz.

Okumaya devam et “Delphi’de düşük boyutlu program yazmak”

Delphi 2007 for PHP

Delphi for PHP (DPHP), Delphi benzeri görsel uygulama geliştirme ortamı ile PHP’de web projesi gelistirme konusunda bir devrim yaratıyor. DPHP, PHP’de sağlam web uygulamaları geliştirmek için hızlı ve kolay bir yol sunuyor. 

Web geliştiricileri arasında PHP kullananların oranı oldukça fazla. Hatta ilk sırada diyebiliriz. PHP için yazılmış açık kaynak kodlu proje ve bileşenleri de hesaba katarsak PHP’nin önemi iyice netleşecektir. Ancak yaygın kullanımına ve popülaritesine rağmen bu güne kadar aşırı gelişmiş kod editörlerinin dışında ciddi bir RAD (Rapid Application Development) aracına sahip olamamış. Delphi for PHP, Delphi arayüzüne aşina olanlara PHP’de hızlı bir geliştirme ortamı sunuyor.

Delphi for PHP (DPHP), Delphi benzeri görsel uygulama geliştirme ortamı ile PHP’de web projesi gelistirme konusunda bir devrim yaratıyor. DPHP, PHP’de sağlam web uygulamaları geliştirmek için hızlı ve kolay bir yol sunuyor.

Web geliştiricileri arasında PHP kullananların oranı oldukça fazla. Hatta ilk sırada diyebiliriz. PHP için yazılmış açık kaynak kodlu proje ve bileşenleri de hesaba katarsak PHP’nin önemi iyice netleşecektir. Ancak yaygın kullanımına ve popülaritesine rağmen bu güne kadar aşırı gelişmiş kod editörlerinin dışında ciddi bir RAD (Rapid Application Development) aracına sahip olamamış. Delphi for PHP, Delphi arayüzüne aşina olanlara PHP’de hızlı bir geliştirme ortamı sunuyor.

Okumaya devam et “Delphi 2007 for PHP”

Sanal Klavyeler Ne Kadar Güvenli?

Artık hemen hemen tüm interaktif bankacılık şubelerinde sanal klavye seçeneği mevcut. Keylogger adı verilen programlardan haberi olanlar sanal klavyelere neden ihtiyaç duyulduğu hakkında fikir yürütebilirler. Keylogger adı verilen programlar arka planda çalışarak kullanıcının bastığı tuşları kaydederler ve sahiplerine ulaştırılar.

Bu yazıda sanal klavyelerin keylogger ve benzeri tehditlere karşı neden yeterli olamayacağını kanıtlarıyla beraber açıklamaya çalışacağım. Yazımda bu tezi kanıtlamak için hazırladığım bir programın kaynak kodlarını da bulabilirsiniz. Program ile sanal klavye gibi popüler bir güvenlik katmanının ne kadar basit bir yolla atlatılabileceğini görmenizi istedim. Umarım suistimal edilmez.

Sanal Klavyelerin Gelişim Evreleri

Sanal klavyeler kullanıcı bilgilerini çalmak için tasarlanmış turuva yazılımlarına karşı bazı mutastyon evreleri geçirmek zorunda kalmışlardır. Aslında bu evreler turuva yazılımlarınkileri ile birebir aynıdır. Şöyleki;

  • Fare kordinatlarının kaydedilmesine karşı her tuş girişinden sonra sanal klavyedeki tuşlar rasgele karıştırılarak kordinatların kaydedilememesi sağlandı.
  • Turuva yazılımları tuşların karıştırıldığı klavyeler için fare imlecinin belli bir çapındaki bölgeyi her fare tıklamasında kaydederek tuş karıştırma önlemenin üstesinde geldi.
  • Buna karşı sanal klavyeler tuş basımı esnasında tuş etiketini * gibi semboller ile gizlemeye başladılar. Böylece tuş basımı esnasında kaydedilen resimdeki tuş gizlenmiş oldu.
  • Tuş karıştırma ve tuş gizleme yöntemleri beraber kullanılarak daha güvenli klavyeler oluşturulmaya çalışıldı. Buraya tıklayarak görebileceğiniz güvenlik incelemesinde açıklandığı gibi, turuva yazılımları çözümü ekran görüntüsünü avi (hareketli görüntü) formatında kaydederek buldu.

    (Bu incelemede turuva yazılımı bankanın sayfası açıldığında farenin yakın çevresini bir dizine avi olarak kaydediyor ve sahibinin dinamik (no-ip.com) adresli FTP sunucusundaki bir dizine yüklüyor. Bu konunun ayrıntılı olarak ele alındığı "New Technique Against Virtual Keyboards" isimli makale okunmaya değer)

Artık hemen hemen tüm interaktif bankacılık şubelerinde sanal klavye seçeneği mevcut. Keylogger adı verilen programlardan haberi olanlar sanal klavyelere neden ihtiyaç duyulduğu hakkında fikir yürütebilirler. Keylogger adı verilen programlar arka planda çalışarak kullanıcının bastığı tuşları kaydederler ve sahiplerine ulaştırılar.Bu yazıda sanal klavyelerin keylogger ve benzeri tehditlere karşı neden yeterli olamayacağını kanıtlarıyla beraber açıklamaya çalışacağım. Yazımda bu tezi kanıtlamak için hazırladığım bir programın kaynak kodlarını da bulabilirsiniz. Program ile sanal klavye gibi popüler bir güvenlik katmanının ne kadar basit bir yolla atlatılabileceğini görmenizi istedim. Umarım suistimal edilmez.
Sanal Klavyelerin Gelişim Evreleri 
Sanal klavyeler kullanıcı bilgilerini çalmak için tasarlanmış turuva yazılımlarına karşı bazı mutastyon evreleri geçirmek zorunda kalmışlardır. Aslında bu evreler turuva yazılımlarınkileri ile birebir aynıdır. Şöyleki;

  • Fare kordinatlarının kaydedilmesine karşı her tuş girişinden sonra sanal klavyedeki tuşlar rasgele karıştırılarak kordinatların kaydedilememesi sağlandı.
  • Turuva yazılımları tuşların karıştırıldığı klavyeler için fare imlecinin belli bir çapındaki bölgeyi her fare tıklamasında kaydederek tuş karıştırma önlemenin üstesinde geldi.
  • Buna karşı sanal klavyeler tuş basımı esnasında tuş etiketini * gibi semboller ile gizlemeye başladılar. Böylece tuş basımı esnasında kaydedilen resimdeki tuş gizlenmiş oldu.
  • Tuş karıştırma ve tuş gizleme yöntemleri beraber kullanılarak daha güvenli klavyeler oluşturulmaya çalışıldı. Buraya tıklayarak görebileceğiniz güvenlik incelemesinde açıklandığı gibi, turuva yazılımları çözümü ekran görüntüsünü avi (hareketli görüntü) formatında kaydederek buldu.(Bu incelemede turuva yazılımı bankanın sayfası açıldığında farenin yakın çevresini bir dizine avi olarak kaydediyor ve sahibinin dinamik (no-ip.com) adresli FTP sunucusundaki bir dizine yüklüyor. Bu konunun ayrıntılı olarak ele alındığı “New Technique Against Virtual Keyboards” isimli makale okunmaya değer)

Okumaya devam et “Sanal Klavyeler Ne Kadar Güvenli?”

Thumbnailer

Daha önce yapılmış programları yazmak adetim değildir ama her zaman da programların deneme sürümlerine ulaşamıyorum. Bu küçük programı hazırlama nedenim de buydu. Program listesi verilen web sitelerini tarıyor, tam boy fotografını çekiyor ve çektiği fotoğrafı belirtilen boyutta jpeg olarak kaydediyor.

Daha önce yapılmış programları yazmak adetim değildir ama her zaman da programların deneme sürümlerine ulaşamıyorum. Bu küçük programı hazırlama nedenim de buydu. Program listesi verilen web sitelerini tarıyor, tam boy fotografını çekiyor ve çektiği fotoğrafı belirtilen boyutta jpeg olarak kaydediyor.

Okumaya devam et “Thumbnailer”