Delphi’den Win32.Induc.A zararlısını temizliyoruz

Daha önce burada delphi‘ye bulaşan Induc isimli virüsten bahsetmiştik. Virüs, eğer Delphi IDE‘si yüklü ise kendini delphi’nin lib dizinindeki sysconst.dcu dosyasına ekliyor. Bu dosya tüm delphi projelerine otomatik olarak dahil edildiği için geliştirdiğiniz tüm uygulamaların exe dosyaların enfekte olmuş oluyor.

Delphi IDE’sine bulaşan bu zararlıdan kurtulmak için aşağıdaki adımları uygulayabilirsiniz:

1) C:\Program Files (x86)\Borland\Delphi7\Source\Rtl\Sys\SysConst.pas dosyasını C:\Program Files (x86)\Borland\Delphi7\Lib dizine kopyalayın.

2) C:\Program Files (x86)\Borland\Delphi7\Lib\SysConst.dcu dosyasını silin.

3) Win32Induc bulaşan uygulamanızın exe’sini silin ve yeniden derleyin.

Dikkat: bu işlemlerden sonra yeni derlenen uygulamalarda Induc yer almayacak fakat Induc’ın bulaştığı bir uygulamayı çalıştırdığınızda Delphi IDE’niz yeniden enfekte olacak. Bu yüzden Delphi çalışmalarınızı bir antivirüs yazılımı ile taratarak temizletmeniz gerekiyor.

Basit bir önlem alalım

Ne olur ne olmaz diyerek SysConst.dcu dosyanızı değişikliklere karşı korumaya almak isteyebilirsiniz, bunun için aşağıdaki adımları uygulayın.

1) C:\Program Files (x86)\Borland\Delphi7\Lib\SysConst.dcu sağ tıklayıp özellikler seçeneğine tıklayın.

2) Özellikler penceresinden salt okunur (readonly) öznetiliğini işaretleyin ve uygulayın.

Bir önlem daha alalım (gözümüz çıkmaz umarım)

Dosyayı Saltokunur yaptık ama virüs yine de bu izni kaldırıp üzerine  yazabilir diyorsanız çok sağlıklı düşünüyorsunuz demektir.  Windows kullanıcı hesabınızın bu dosya üzerindeki öznitelikleri değiştirme yetkisini de kaldırabilirsiniz. Bunun için aşağıdaki adımları uygulayın.

1) C:\Program Files (x86)\Borland\Delphi7\Lib\SysConst.dcu sağ tıklayıp özellikler seçeneğine tıklayın.

2) Güvenlik sekmesine gelin, Administrators (hesabınızın üye olduğu gurup)’ı seçip Gelişmiş düğmesine tıklayın.

3) Açılan Gelişmiş Güvenlik Ayarları penceresinden, Administrators‘i seçip İzinleri Değiştir düğmesine tıklayın.

4) Açılan yeni pencereden, Administrators‘i seçip Düzenle düğmesine tıklayın.

5) Açılan İzin Girdisi penceresindeki izinler listesinden, Öznitelikleri yaz isimli izine ait İzin Verme onay kutusunu işaretleyin.

6) Açık olan tüm pencerelerin Tamam düğmelerine tıklayarak kapatın.


Bu son adımda yaptığımız ayarlara ait ekran görüntüsü aşağıdaki gibi bir şey:

SysConst.dcu dosyasının izinlerini ayarlamak

Light-Bot ile programlama yeteneğinizi sınayın

light-bot

Light-bot programcılık yeteneklerini sınamak veya geliştirmek isteyenlerin hoşuna gidecek bir oyun. Oyun 12 aşamadan oluşuyor, son seviyeler oldukça zorlu diyebilirim. Oyunun amacı verilen komutlar ile robotu hareket ettirmek ve mavi kutuların üzerine gelerek onları sarıya dönüştürmek.

Robotumuzun anlayacağı komutları biri ana metod olan toplam 3 metodun içerisinde kullanıyorsunuz. Program ana metod’dan çalışmaya başlıyor. Ana metod’da ençok 12, alt metodlarda (Func-1 ve Func-2) 8’er komut kullanabiliyorsunuz. Yani kullanılabilecek komutların sayısı sınırlı. Komutlar robotu ileri yürüten, sağa ve sola çeviren, zıplatan ve sarı ışığı yakmasını sağlayan simgelerden oluşuyor. İlgili simgeleri metodların için sürükleyerek çözüm proramınızı oluşturuyorsunuz.

Aşamaları geçebilmek için size verilen sınırlı sayıdaki alt program ve komut ile tüm mavi kutuları sarıya dönüştürmelisiniz.

Oyun özellikle modüler programlama ile alt-program kullanım mantığının oturması açısında çok faydalı. Ayrıca oyun kısa programlar yazmaya zorladığı için çözüm yollarını programatik açıdan daha etkin hale getirmeyi ve programcılık açısından çözümleme yeteneğinin geliştime ve kısa programlar yazmak açısından fayda sağlıyor.

Programcılığa yeni başlayanlar ve daha etkin ve kısa programlar yazmak isteyenlere yeni bakış açıları kazandırabilecek faydalı bir oyun. Son aşamaları oldukça zorlayıcı ve zaman alıyor, birkaç aşamasının çözümünü ve oyunun kendisini sayfanın devamında bulabilirsiniz.

Bu arada oyunu hazırlayan bacaksız Danny Yaroslavski daha 17 yaşındaymış.

Oyunu tam ekran oynamak için tıklatın.

Okumaya devam et “Light-Bot ile programlama yeteneğinizi sınayın”

Sourceforge Top 25

Bu ay açık kaynak proje deposu sf.net (sourceforge.net)’den 10 milyon 600 bin sayfa sunumu ve 2 milyon 600 bin dosya indirme gerçekleşmiş. Bu ay 171 yeni proje daha sf.net’e kabul edilmiş.

En son istatisiklere göre en çok rağbet gören 25 proje aşağıdaki gibi listelenmiş. PhpMyAdmin, MinGW, KeePass, 7-Zip, Notepad++ ve TinMCE gibi projeler toplist’de çoğu zaman yer almayı başaran projeler. Projelerin çeşitliliği içinde ençok ERP projelerinin fazlalılığı dikkat çekiyor.

TopList’e 21. sıradan dahil olan OCVL (Open Computer Vision Library) görüntü işleme konusunda 500’den fazla algoritmanın bulunduğu açık kaynak kodlu bir kütüphane. Proje derlenmiş uygulamalar ile C++ ve Phyton kodları olarak iyi sayılabilecek bir dökümantasyon ile sunulmuş.

Okumaya devam et “Sourceforge Top 25”

Delphi for PHP’de PageControl nesnesi sorunu

sm_phphello.png

Sıradaki ilk projemi Delphi for PHP (D4PHP) ile yapmaya karar vermiştim. Daha önce de söz ettiğim bu RAD‘ı geliştiriciler arasında sevenlerin sayısı çok. Hem bu düşünceye özgür iradem ile hak vermek hem de fazla bilgi göz çıkartmaz düşüncesiyle D4PHP’nin 2.1.0 sürümünü kurup kurcalamaya başladım.

İnternetteki eğitim videolarını ve d4php’nin samples klasöründeki örnekleri görünce işlerin nekadar kolaylaştığını anlayabiliyorsunuz fakat grafik ve flash yoğunluklu site tasarımlarında d4php ile nasıl entegre çalışılabilir, kod yapısına nasıl müdahale edilir gibi soru işaretleri de hafiften beyninizde belirmeye başlıyor. Macromedia’nın sunduğu studio ortamı kadar konfor yaşayabilirmiyiz yoksa d4php daha farklı projeler için mi daha uygun olur emin değilim.

Yalnız d4php ile advanced nesneler ve ajax’ı kullanarak yerel uyglama (native application) kıvamında, web tabanlı projeleri rahatlıkla ve kısa sürelerde hazırlayabilirsiniz. Zaten böyle bir proje yapacaksanız kesinlikle d4php kullanmanızı öneririm. Henuz d4php deneyimim az ve şimdilik düşüncelerim böyle.

Okumaya devam et “Delphi for PHP’de PageControl nesnesi sorunu”

e-Okul PHP Script’i ve Delphi Programı

Daha önce PHP’de yazdığım yarım kalmış bir e-okul projesinden bahsetmiş ve kodlarını paylaşmıştım. Paylaşımın delphi ayağına ait programı henuz bulabildim. Onuda buradan paylaşacağım. Program kısca; Bilsa Karma programının mdb biçimindeki veritabanlarından not ve devamsızlık bilgilerini alarak script’in kullanabileceği MySQL veribanına aktarıyor. Program temel görevleri yerine getiriyor fakat üzerinden bir hayli zaman geçtiği için eksiklikleri/hataları nelerdi konusunu hatırlayamıyorum.

Okumaya devam et “e-Okul PHP Script’i ve Delphi Programı”

Nesne yönelimli JavaScript öğreniyoruz

Javascript’te object oriented nedir ne değildir iyice öğrenmek isterseniz, Douglas Crawford’un 4 serilik eğitim videosunu yahoo’da izlemenizi tavsiye ederim. Onu mutlaka izleyin, izletin. Object oriented javascript çok güçlü bir dildir, inanamayacaksınız.

Part 1 – http://video.yahoo.com/watch/111593
Part 2 – http://video.yahoo.com/watch/111594/1710553
Part 3 – http://video.yahoo.com/watch/111595/1710607
Part 4 – http://video.yahoo.com/watch/111596/1710658

WordPress.org’da eklenti yayınlamak

WordPress.org’da eklenti yayınlamayı olabildiğince kısa ve basit anlatmaya çalışacağım. Rahat uygulanabilmesi için işlem basamakları şeklinde anlatmanın faydalı olacağını düşündüm. Basamaklara geçelim.

  1. Readme.txt dosyasını buradaki örneğe göre hazırlayın.
  2. Hazırladığınız readme.txt dosyasının doğruluğunu burayı kullanarak teyit edin.
  3. Buradan WordPress.org’a hesap açarak üye olun.
  4. WordPress.org’a oturum açın.
  5. Buradaki eklenti yayınlama başvuru formu doldurun ve gönderin.
  6. Başvurunuz onaylandığında bir eposta alacaksınız.
  7. Eklenti başvurunuz onaylandıktan sonra TortiseSVN programını indirin ve kurun.
  8. Bilgisayarınızda eklenti dosyalarınızı koyacağınız klasörlerin depolanacağı bir klasör oluşturun. (ör:Eklentilerim)
  9. Eklenti klasörlerinin bulunduğu klasörü açarak sağ tıklayın ve “SVN Checkout” komutu verin.
  10. Ekrana gelen Checkout penceresindeki “URL of repository” kutusuna epostadaki SVN repository adresini yapıştırın.
  11. Checkout penceresindeki “Checkout directory” kutusunda eklenti dosyalarınızı içerecek klasörün adı yer alacak.
  12. “Ok” dümesine tıklayın. Eklenti klasöründe “branches“, “trank” ve “tags” isminde klasörler oluşacak.
  13. Readme.txt dahil tüm eklenti dosyalarınızı “trank” klasörün içine kopyalayın.
  14. Trank” klasörüne sağ tıklayın ve “SVN Commit…” komutu verin.
  15. Commint penceresinde listelenen dosyaların solundaki işaret kutularını seçin veya “Select / deselect all” komutunu verin.
  16. Commint penceresini “Ok” düğmesine tıklayarak onaylayın.
  17. Ekrana gelecek olan kimlik doğrulama kutusuna WordPress.org’a üye olurken kullandığınız kullanıcı adı ve parolanızı yazın.
  18. Tebrikler eklentiniz WordPress.org’da yayınlandı.

Eklentinizin SVN deposuna gittiğini görmek için gelen e-postadaki “SVN repository” adresinizin sonuna “trunk” dizinini ekleyerek gözatabilirsiniz. Eklentiler sayfasına giderek en yeni eklentiler (Newest plugins) kısmında eklentinizi görebilirsiniz.

Eğer anlaşılmayan bir nokta olursa diye; buraya ve buraya bakabilirsiniz hatta yorum alanı ile tankado’ya da sorabilirsiniz.

WordPress erişim izni hatasını gidermek

Bu sayfaya erişmek için yeterli izniniz yok” veya ingilizce “You do not have sufficient permissions to access this page” hata mesajını alıyorsanız aşağıda tarif ettiğim işlemleri uygulayarak sorunu çözebilirsiniz.
Bu sayfaya erişmek için yeterli izniniz yok ” hatası çoğunlukla wordpress veritabanınızın bazı badireleri atlatamadığı durumlarda oluşuyor. Bir eklenti kurarken veya WordPress’inizi güncellerken böyle bir hata ile karşılaşabilirsiniz.  Bu hatanın olduğu durumlarda bazen ekleti sayfalarına bazen de WordPress’in yönetim paneline giremiyorsunuz.

Okumaya devam et “WordPress erişim izni hatasını gidermek”

W32/Induc virüsü Delphi’ye bulaşıyor

Delphi’nin Syscons.dcu veya sysconst.pas dosyasına bulaşan bir virüs peydah oldu.

Kaspersky’da adlandırması Win32.Induc.a olarak geçiyor, kendisini sysconst.pas’a include etmek sureti ile bulaşıyor.

Böylelikle her derlemede exe içerisinde virüscük de yaşamaya devam ediyor.

Bu durumda önce virüs temizliği sonra mutlaka delphi’ı kaldırıp tekrar kurmak lazım (ben öyle yaptım).

Evet ne yazıkki sisteminizde hiç virüs olmasa da kullandığınız ücretsiz full open source komponentler de ne yazıkki virüse neden olabiliyor.

Her yüklediğimiz yeni komponeneti bir de kod kontrolünden geçirmek lazım sanırım.

Virüslü olup olmadığınız anlamak için sysconst.pas içinde aşağıdaki kodlar var mı yok mu bakmak gerekiyor. Tabi bu sadece bu türün bir türevi ise dışarıdan aldığımız her komponenti incelemek de şart.

Delphi 4-7 geliştirme ortamına bulaşan virüs varyantının kodları aşağıdaki gibi.

Okumaya devam et “W32/Induc virüsü Delphi’ye bulaşıyor”

tinyMy ve DBKiss: single PHP file db browser

tinyMy, MySQL veritabanlarını yönetmek için hazırlanmış küçük bir PHP betiğidir. tinyMy tek bir PHP dosyasından oluşan çok küçük ve basit bir betik.

Genellikle web üzerinden MySQL veritabanlarını yönetmek için phpMyAdmin kullanılsada bazı durumlarda phpMyAdmin biraz fazla gelebilmekte. phpMyAdmin birçok özelliği bünyesinde barındırıyor, çok fazla dosyadan oluşuyor ve bazen bu dosyaların boyutu ve kodların çokluğu sunucu başarımı açısından sorun teşkil edebiliyor. Ayrıca dial-up gibi düşük bir bağlantı söz konusu olduğunda biraz konfor kaybı olabiliyor. Çok fazla beklentiniz yoksa tinyMy size göre.

Okumaya devam et “tinyMy ve DBKiss: single PHP file db browser”

WP OnlyWire Auto Poster Plugin

OnlyWire (OW) sitesinden daha önce bahsetmiştim. lionstarr‘ın WordPress Blogları için yazdığı eklentiyi biraz revize ederek yeni özellikler ekledim. WP OnlyWire Auto Poster adını verdiğim bu eklenti yazdığım ilk WordPress Eklentisi. Eklentiyi bir süredir test edip hatalarını düzeltiyordum. Bununla birlikte yakında, yazmaya devam ettiğim katma değeri yüksek SEO eklentilerimi buradan WordPress Blogcuları ile paylaşacağım.

Okumaya devam et “WP OnlyWire Auto Poster Plugin”

YARP ile PageBar eklentilerinin uyumsuzluğunu gidermek

WordPress sitenize YARP (Yet-Another-Related-Posts) eklentisi ile PageBar eklentilerini yüklediğinizde YARP’ın yönetim sayfası aşağıdaki hatayı veriyor ve yönetemiyorsunuz.

Fatal error: Cannot redeclare checkbox() in guvenli_dizin/wp-content/plugins/yet-another-related-posts-plugin/options.php on line 134

Hata mesajından yola çıkarak options.php‘nin 134. satırındaki function checkbox() isimli foksiyonunun daha önce de tanımlanmış olduğunu anlıyoruz. WordPress’in plugins dizininde ufak bir arama yaptıktan sonra PageBar eklentisinin kodlarında aynı isimde bir başka fonksiyonun tanımlandığını gördüm. Sorunu çözmek için fonksiyonun ismini checkbox_() şeklinde değiştirip kaydettikten sonra sorun çözüldü. Tabi  options.php içinde çağrı yapılan tüm yerlere de aynı değişikliği uyguladım. Kolay olması açısından kullandığınız editörün düzen menüsündeki bul ve değiştir seçeneğini kullanarak bu işi hızlıca yapabilirsiniz. Aranacak değeri checkbox( değiştirilecek değeri de checkbox_( olarak verdim ve options.php dosyasını sunucuya tekrar yükledim. Bu şekilde yapınca sorun çözülüyor fakat YARP’ın her güncellemesinde bu işlemi yeniden yapmak gerekiyor. YARP’ın geliştiricileri ilgilenir düşüncesi ile bir hata bildiriminde de bulundum.

Aslında checkbox() ve textbox() gibi jenerik isimlerin eklentilerde fonksiyon ismi olarak kullanılmaması gerekir. Bu isimlerin yerine yarp_checkbox() gibi eklentiye özel bir isimlendirme tercih edilebilirdi.

WordPress ile 404 hatalarını tespit etmek

Benim gibi dotclear‘dan wordpress’e göç etmiş bir blogcu iseniz yeni sitenizdeki bazı URL adreslerinin 404 hatası vermemesi neredeyse mümkün değil. Arama motorlarının indekslemiş olduğu URL adresleri sitenizde karşılık bulmuyorsa başınız biraz dertte demektir. Arama motorları bu adresleri periyodik olarak ziyaret ettikleri için sürekli 404 hataları ile karşılaşacakdır. 404’lerin ele geçirdiği bir site arama motorlarının gözünde değer kaybeder.

WordPress altyapısını kullanan sitenizin derinliklerindeki geçersiz URL adresleri haberiniz olmayan birçok 404 hatasını üretmektedir. Şahsen uzunca bir süre farkında olmadığım ve aslında kolayca tespit de edilemeyecek bu durumu düzeltmek biraz zamanımı aldı doğrusu. Bu sorunu gidermek çin aşağıdaki PHP kodlarını yazdım.

Kodları wordpress temanıza ekleyerek siz de kullanabilirsiniz. Kodlar sitenizde var olmayan bir adres talep edildiğinde, ilgili adresi ve isteğin kimden geldiği gibi bilgileri eposta adresinize göndererek raporlayacaktır. Bundan sonra iş gelen raporlara göre kırık bağlantıları onarmaya geliyor. Bir hafta içerisinde posta kutumda 2000’e yakın rapor birikti. Okumaya devam et “WordPress ile 404 hatalarını tespit etmek”

WordPress’i Hızlandırma ve Performans İpuçları – I

wordpress-performans-hız

WordPress’inizin başarımından (performansından) şikayetçi iseniz bu yazı tam size göre. WordPress başarımı hakkında sürekli yazmayı düşündüğüm bu yazı dizisinin ilkinde başarım artırmaya yönelik WordPress bileşenleri üzerinde duracağım.

WordPress (WP)’in performansını artırmak için kullanılan WP-Cache, Hyper Cache, WP Super Cache ve 1 Blog Cacher gibi birçok  eklenti var. WP sunucuyu çok fazla yoran bir script değil fakat kullanılan eklentiler ve temanızın özellikleri sunucuya yük getirebilir. Bu da sayfalarınızın açılma süresine olumsuz etki eder. Hatta sunucunuzun yöneticisi bu durum hakkında sizi uyarabilir.  WP’e geçtikden sonra eklentilerin sayfa açılma/oluşturma hızını nekadar etkileyebileceğini iyi öğrendim. WordPress başarımını artırmak için önbellekleme (Caching) eklentilerini kulllanmak iyi bir çözüm olabilir.

Okumaya devam et “WordPress’i Hızlandırma ve Performans İpuçları – I”

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.