mysql’de prepared statement’la dinamik sql çağırma

By admin September 28th, 2010, under veritabanı sistemleri, yazılım geliştirme

Projelerden bir tanesinde loglar aylık isimlendirilen tablolarda tutuluyor. Bir stored procedure yardımı ile logdaki hataların sayısını almak istediğim zaman tablo ismi dinamik olduğu için dinamik sql yazmak gerekti. Mysql ile dinamik sql oluşturmak için prepared statement’lar kullanılıyormuş.

Son 1 saat içerisinde Fail olmuş logların sayısını alan procedure şöyle birşey oluyor bu durumda:


DELIMITER $$

DROP PROCEDURE IF EXISTS `project`.`proc_error_logs`$$
CREATE DEFINER=`project`@`%` PROCEDURE `proc_error_logs`()
BEGIN
set @dyn_sql=concat('select count(*) from project_log_', date_format(now(), '%Y%m'), ' where LOG_STATUS=\'Failed\' and LOG_TIME > date_sub(now(), interval 1 hour)');
prepare s1 from @dyn_sql;
execute s1;
deallocate prepare s1;
END$$

DELIMITER ;

Prepared statement’lara parametre de geçebiliyorsunuz, sql cümlesi içerisinde ? deyip execute ifadesinde using deyip ard arda verebiliyorsunuz, şöyle:

EXECUTE s1 USING @min_val;

işinize yaraması dileğiyle…

Jing ekran kaydetme yazılımı

By admin September 21st, 2010, under bilgisayar / internet

Ekrandan resim ve video araklama yazılmları içerisinde yeni rastladığım Jing ücretsiz sürümü ile kolayca bu işi yapabilmenizi sağlıyor. Benim gayet işimi gördü, siz de kullanabilirsiniz.

http://www.techsmith.com/jing/

Thunderbird imap dosya ekleri problemi

By admin September 16th, 2010, under bilgisayar / internet

Thunderbird ile imap protokolü üzerinden e-postalarınızı yönetirken, e-postalar ile beraber gelen dosya eklerinin tamamı gelmiyor, resimler yarım açılıyor ya da gelen dosyalar açılmıyorsa sorunun çözümünü artık biliyorum.

Bu gereksiz problemi çözmek için gelişmiş ayarlar kısmından config editor’e giriyoruz. Burada mail.imap.fetch_by_chunks ya da mail.server.default.fetch_by_chunks özelliğini değiştirmeniz gerekiyor.

Şurda da ayrıca anlatılıyor: http://kb.wisc.edu/helpdesk/page.php?id=12472

Web tabanlı kullanışlı bir dosya yükleme aracı File Thinge

By admin September 7th, 2010, under bilgisayar / internet, yazılım geliştirme

Hali hazırda kendinize ait bir sunucunuz varsa bu sunucuya dosya transferinde değişik protokoller kullanıyorsunuzdur. En klasik olarak FTP, SFTP gibi. Ama her zaman elinizin altında bir sftp client’ı olmayabilir, ya da başka birisinin sunucunuza dosya transfer etmesi gerekiyordur ama ftp kullanıcısı açmakla uğraşmak istemezsiniz ya da şifrenizi paylaşmak istemezsiniz, türlü türlü ihtimaller.

Bu durumda çok basit bir dosya yükleme arayüzüne ihtiyacınız var, ben biraz aradım File Thingie’yi buldum. File Thingie tek bir php dosyası üzerinden her türlü dosya yaratma silme ve yükleme işlemini gerçekleştirebiliyor. Dosya üzerinde değişiklik de yapıyormuş ancak ben biraz uğraştım bu özelliğini aktif hale getiremedim, ihtiyaç da duymadığım için fazla kurcalamadım.

File Thingie’nin en kötü özelliği ayarların da php dosyasını değiştirerek yapılması. Bu aslında biraz PHP bilen birisi için çok sorun değil, ayarları bir array’e eleman ekleyerek yapıyorsunuz.

Bence basit ve kullanışlı bir aparat olmuş.

http://www.solitude.dk/filethingie/

Sunucularınızı öldürmek için yapılması gereken 6 madde

By admin August 28th, 2010, under bilgisayar / internet, işletim sistemleri, müzik, oyun, veritabanı sistemleri, yazılım geliştirme

Ölçeklenebilirlik (Scalability) konusunu zor yollardan öğrenmiş Steffen Konerow isimli şahsın yazdığı güzel bir yazı buldum. Yazıda 1 milyon kullanıcının ziyaret ettiği bir web uygulamasının nasıl çöktüğü, çöküşe engel olabilmek için neler yaptıkları ve hatalarını çok güzel anlatmış. Ben de elimin altında bulunsun diye bu 6 maddeyi yazayım dedim. (Bize soraydı biz de yardım ederdik heheh)

1. Dosyaları ağ üzerindeki bir alanda tutun ve sunucunuz ölsün. (Lokal diskte tutun ya da çok erişilen dosyaları hafızada (ramdisk) tutun.)

2. Web sunucunuzun ayarlarıyla oynamayın direkt kurup kullanın ve sunucunuz ölsün. (Sunucusu ayarlarında optimizasyon yapın, daha performanslı web sunucuları (ngix gibi) tercih edin.)

3. Tek bir veritabanı sizi sonsuza kadar idare eder diye düşünün ve sunucunuz ölsün. (En güçlü veritabanı sunucunun bile bir limiti vardır. Limitlere ulaşmadan master-slave yapısı ya da cluster yapısına geçin.)

4. Sunucu yavaşlayınca daha iyisini alırım diyin ve sunucunuz ölsün. (Daha fazla donanıma para harcamak yerine açık kaynaklı yazılımları araştırın, mesela memcached gibi. Doğru cache’leme ile veritabanınızı rahatlatabilirsiniz.)

5. Bütün dosyaları tek bir dizinde tutun ve sunucunuz ölsün. (Çok sayıda dosyayı tek bir dizinde tutmayın, dosyaları farklı klasörlere yayın ya da farklı dosya sistemleri (ReiserFS vs) deneyin.)

6. Tamam artık süper çalışıyor daha fazla geliştirmeye gerek yok diyin ve sunucunuz ölsün (Geliştirmeyi hiç bırakmayın, sürekli öğrenin, araştırın.)

Yazının tamamı şurda: http://highscalability.com/blog/2010/8/23/6-ways-to-kill-your-servers-learning-how-to-scale-the-hard-w.html