ajitatif.com - gökalp gürbüzer'in kişisel web sitesi
Tuesday, January 19, 2010
İşbu sitenin sahibi Gökalp GÜRBÜZER 18 Ocak 2010 itibariyle Hürgeneral rütbesine terfi edilmiş olup, Maltepe / İstanbul'da Gürbüzer ailesi konutuna ataması yapılmıştır.

En rahat askerlik, bitmiş olandır

Tuesday, January 19, 2010 9:23:16 AM (GTB Standard Time, UTC+02:00) | Comments [3] | AdSense | ajitatif.com | Askerlik | ASP.NET | ATL | Banu Avar | Blograzzi | C++ | Çanakkale Savaşları | D880 | dasBlog | English | Etkinlik | google | Güncel | hakia.com | Internet Explorer | İstanbulluluk | Jargon | Java | JTPD | JTS | Kişisel | Kitap | Kronik Acemilik | Linux | Makale | Memleket Kurtarmaca | MySql | NetBeans | Oktay Sinanoğlu | Pardus | ProjeCep | Samsung | ScoopBar | Software Development | Tarih | Tavsiye | Tiyatro | Tiyatro Sporu | Türkçe | Ürün İnceleme | Veritabanı | Vosvos | VS 2005 | Web | Web Development | Web Geliştirme | Wikipedia | Windows | XUL | Yazılım | Yazılım Geliştirme#
Wednesday, April 22, 2009
Son birkaç ayı evde geçirdiğimden ve Java Teknolojileri ve Programcıları Derneği (ve tabiatıyla Java) ile daha fazla ilgilendiğimden artık emektar olmuş dizüstü bilgisayarıma Pardus 2008.2 kurdum. Bir-iki haftadır Pardus 2008.2 kullanıyorum ve şimdiye kadar oldukça memnunum. Arada bir ufak tefek sorunlar çıkıyor ama ya ozgurlukicin.com'dan ya da başka linux dağıtımlarına ait forumlardan yardım alarak çözebiliyorum.

Pardus ile ilgili görüşlerimi de sonraki yazılarımda değinmeyi planlıyorum ancak bahsetmeden geçemeyeceğim, Pardus'un en büyük gücü bence paket yöneticisi programı PiSi. Pardus'un geniş yelpazeli yazılım deposu ile birlikte çok iyi çalışıyor ve benim sorunum da tam burada başladı:

Malumunuz, Java ile daha haşır neşir olduğumdan Netbeans'i kurdum bilgisayarıma. PiSi'de de paketleri varmış ama ben dikkat etmemiştim, netbeans.org'dan indirdim ve kurdum. Bir web projesi üzerinde çalışıyorum ve gel zaman git zaman sonunda veritabanı gerekti.

Ben veritabanı olarak genellikle MySql'ı tercih ederim (PostreSQL'ı da çok öneriyorlar, bir ara onu da denemek gerek belki) ve zaten Netbeans'i kurduktan hemen sonra MySql'ı PiSi aracılığıyla yüklemiştim.

Ne var ki, JConnector benim MySql sunucuma bir türlü bağlanamıyor, "Comminucations link failure" deyip duruyordu, sanki MySql sunucusu hiç çalışmıyor. Konsol'dan "mysql" komutu ile bağlanıp istediğimi yapabiliyordum ama JConnector bağlanamıyordu. "Acaba sorun Netbeans'te mi, bir de telnet deneyeyim" dedim ama nafile. Bağlantı isteği açıkça reddediliyordu.

Çözüm:

Sorunun /etc/my.cnf dosyası ile ilgili olduğundan şüphelendim ama my.cnf ile ilgili neredeyse hiç bilgim yoktu. Ben de örütbağda (internet) biraz araştırma yaptım. İlgili satırın "security" bölümünde olabileceğini buldum.

PiSi'nin MySql'ı yüklerken getirdiği ayarlarda skip-networking ayarı açıkmış. Bu da konsol dışından gelen bağlantıları reddetmeye yarıyormuş. Satırın başına # ekleyip dosyayı kaydettim ve MySql sunucusunu yeniden başlattım (sudo service mysql_server restart). Tadaaaa :)

Öncelikle sevgili Türkiyem'in sonra da bütün dünyanın olan 23 Nisan Ulusal Egemenlik ve Çocuk Bayramı kutlu olsun.
Yalnızca hatırlayın, önce Ulusal Egemenlik sonra Çocuk Bayramı. Çocuk Bayramı diye yutturmaya çalışanlara kanmayın, unutmayın.

Java Teknolojileri ve Programcıları Derneği : www.jtpd.org
Netbeans : www.netbeans.org
MySql : www.mysql.com
Pardus : www.pardus.org.tr

Wednesday, April 22, 2009 11:59:33 PM (GTB Daylight Time, UTC+03:00) | Comments [1] | Linux | MySql | NetBeans | Pardus | Türkçe | Veritabanı#
Tuesday, April 07, 2009
Wikipedia'nın bütün veritabanının MySql betiklerinin halka açık olduğunuzdan haberiniz vardır muhtemelen. Haberiniz yoksa da ayrıntılı bilgi http://en.wikipedia.org/wiki/Wikipedia_database adresinde.

Herşey iyi, güzel ama 2,5 GB'lık categorylinks SQL betiğinde MySql hep hata veriyor. Hata nedeni yanlış timestamp türü veri girilmeye çalışılması imiş ("Invalid timestamp value").

Biraz internet araştırısı ve biraz gayretle bu mesajın aslında bir hata değil, uyarı mesajı olduğunu anladım. MySql, canımın içi de 2,5 gb'lık toplu işlemde (transaction) bir tanecik bile uyarı aldığında bütün işlemi geri sarıyor. Aslında bu uyarıyı hata olarak görmesinin nedeni, olayın toplu işlem içinde gerçekleşiyor olması ve MySql'ın bu davranışını Sql Kipleri ile halledebiliyoruz.

Şimdi aşağıdaki komutu MySql'ınıza girin ve sonucuna bir bakın:
select @@global.sql_mode
Eğer siz de benim gibi MySql'ınızın çalışma parametrelerine dokunmadıysanız sonuç olarak aşağıdakine benzer bir manzara çıkacaktır:
STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Eeesi, STRICT_TRANS_TABLES kipi toplu işlemlerde herhangi bir değeri tabloya ekleyemediği (INSERT) anda bütün işlemi geri sardırır. Biz de verdiğimiz değerler arasında böyle sorunlu değerler olduğunu bildiğimize göre haydi bu kipi kapatalım:
set global sql_mode = ''
Böylece bütün Sql kiplerini kapatmış olduk. Ama öyle hemen Wikipedia yığmasına saldırmayın, bu komut bundan sonraki bağlantılarda geçerli olacak. SQLyog'da iseniz "File | New Connection Using Current Settings" ile yeni bir bağlantı açar, sonrasında Wikipedia yığmasına yumulabilirsiniz.

Biraz Teknik Ayrıntı

MySql sunucusu (hizmet ya da cin/peri (DEAMON) olsun) çalıştırılırken Sql kipleri de verilir. Kipler my.ini (ya da linux'ta my.cnf) dosyasının içinde sql-mode="kipler" olarak ya da komut satırında --sql-mode="kipler" ile belirtilir (kipler virgül ile ayrılır). Bu kiplerin asıl amacı MySql'ı olabildiğince uyumlu kılmaktır. Nitekim bazı Sql kip kısayolları da bunu kanıtlar:
MSSQL = PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS
POSTGRESQL = PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS
ORACLE = PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS, NO_AUTO_CREATE_USER
MYSQL40 = NO_FIELD_OPTIONS, HIGH_NOT_PRECEDENCE
...
...
Sql kiplerini sunucu başladıktan sonra değiştirmek için de sql_mode küresel parametresini kullanıyoruz. MySql'da @@ işareti sunucu parametresini belirtir. Biz de global parametresinin sql_mode sistem değişkenini görmek için
select @@global.sql_mode
sorgusunu verdik. Daha sonra da bu parametreyi değiştirmek için biraz daha farklı bir belirtim olan
set global sql_mode = ''
deyimini kullandık. sql_mode sistem değişkeni ile ilgili daha ayrıntılı bilgi http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html adresinde.

MySql'de sistem değişkenleri ikiye ayrılır: küresel (GLOBAL) ve oturum (SESSION) sistem değişkenleri. Adlarından da anlaşılacağı üzere bunlar yalnızca geçerli bağlantı (oturum) ya da bütün bağlantıları (küresel) kapsar ve etkiler. Benzer şekilde oturum sistem değişkenlerini görebilir ve değiştirebiliriz; ancak bazı sistem değişkenleri yalnızca oturum bazıları da yalnızca küresel kapsamda bulunurlar:
select @@session.sql_warnings
set session sql_warnings = ON
Ancak oturuma ait sql_mode sistem değişkenini değiştirmek bu örnekte işe yaramıyor, nedenini ben de çözemedim ama sanırım sql_mode parametresi bağlantıdan önce tanımlanması gereken bir sistem değişkeni.

Bütün sistem değişkenlerini görmek için MySql'a
show variables
komutunu girebiliriz.

Soru

Bunca şeyi yazdım, ettim ve categorylinks tablosunu kendi veritabanıma yığmayı başardım. Peki Wikipedia kategorileri arasındaki hiyerarşiyi nasıl çıkartacağım? Bilen varsa beri gelsin ne olur...

Tuesday, April 07, 2009 11:38:50 AM (GTB Daylight Time, UTC+03:00) | Comments [0] | MySql | Türkçe | Veritabanı | Wikipedia#
Search
Archive
Links
Categories
Admin Login
Sign In
Blogroll
 aychulus.blogspot.com
Kuzen Ayşegül'ün blog'u
[Feed] volkanvardar.com
Volkan Vardar kişisel blog ve portföy sitesi
Themes
Pick a theme: