İçeriğe atla

Programlama

Mysql Türkçe karakter problemi

Mysql türkçe karakter problemi, açık kodlu bir yazılımın zaman içinde gelişiminden doğan bir problem. Önceleri tam manasıyla türkçeyi destekleyemezken sonra desteklemeye başladıklarında bir sürü değişimler yaşandı ve eski kalan PHP v.s. yazılımları bu gelişimi yakalayamadılar. Ben de bundan nasibini alan birisi olarak hafta sonu veritabanında uğraşırken bu mevzunun içine takıldım kaldım. En sonunda REPLACE() fonksiyonlarıyla dolu bir kod yazdım ve çalıştı, onu da başkalarının ihtiyacı olabilir niyetiyle burada paylaşmak istedim.

Bu bilgi de bir veritabanında tutulduğu için komut tam manasıyla alt tarafa eklenemiyor ama sanırım karakterlerin büyük çoğunluğu var, eğer daha iyi bir çare bulur ve bu yazının altına yazarsanız memnun olurum.

REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (veritabanındaki alan,’þ’, ‘ş’), ‘Ãz’, ‘Ş’), ‘Ç’, ‘Ç’),’ç’, ‘ç’),’ð’, ‘ğ’),’ý’, ‘ı’),’þ’, ‘ş’),’Ð’, ‘Ğ’),’Ý’, ‘İ’),’Þ’, ‘Ş’),’Ã?’, ‘Ö’),’Ö’, ‘Ö’),’ö’, ‘ö’),’ü’, ‘ü’),’ð’, ‘ğ’),’ý’, ‘ı’),’Ã�’, ‘İ’),’Ãœ’, ‘Ü’),’Ä�’, ‘Ğ’)

IT Devrimi ve Biz -1

Türkiye’de oynanan oyunları, karıştırılan kazanları uzaktan da olsa üzülerek takip ediyorum. Buradaki arkadaşlarla da görüşmelerimizde aynı düşünceleri paylaşıyoruz ve son olayların, provokolerin sadece ülkemizdeki birlik ve beraberliği hedef aldığı kanısını taşıyoruz.

Bunun sıkıntısını düşünürken, Türkiye’de şartları ve durumları daha iyi hale getirmek için neler yapılabilirin cevabını değerlendirmek istedim. Dünya’nın tarihi daha ne kadar sürer bilinmez fakat bizden sonra gelen nesiller ve eğer yüzyıllar geçmesi durumu söz konusu olursa, 20. yüzyıl savaşlar ve buluşlar yüzyılı olarak değerlendirilicektir diye düşünüyorum. Savaşlar… Neredeyse bütün dünyanın birbirine girdiği ve adına “Dünya Savaşı” verilen, 1. Dünya Savaşı (World War I) ve 2. Dünya Savaşı(World War II). İngilizceleri ile birlikte yazdım çünkü bütün dillerde bu savaşlar, Dünya savaşları olarak yer aldı.

20. yüzyıl savaşlarının nedeni aslında bir nokta da, endüstriyel devrimdi. Devrimlerini tamamlamış ülkeler, artık mahmuzları ellerine almak istiyorlardı ve aldılar da… Savaşlar bizim topraklarımızda öksüz bir ülke kurulmasına neden oldu. Öksüzlüğü, Osmanlı’dan Türkiye’ye büyük bir hazine kalmamasından kaynaklanıyordu. Son resime baktığımızda, endüstri devrimini kaçırmış, yönetim biçimini, eğitim biçimini, rejim biçimini ve yaşam stilini değiştirmiş yeni bir ülke ile ülkeler yarışında yerimizi aldık.

21. yüzyıla kadar, ülkemizde taşlar yerine oturtulmadı(!) ve son olan olaylarla; ülkemiz ve bu vatanın evlatları; rejim kavgaları adı altında yeni kavgalara, yeni sürtüşmelere ve zaman kayıplarına sürükleniyor. Biz bunlarla uğraştırılıp, zamanımız çarçur edilirken, ülkemizin dışında yeni bir devrim yaşanıyor. IT Devrimi Endüstri devrimini tamamlamış toplumlar, daha iyi olabilmenin arayışları içinde iken farkında olmadan, belki de kendilerinden de büyük, yeni bir dev ortaya çıkardılar. IT (information technology = Bilişim Teknolojisi). Bu devrimin şartları da, kendisi gibi farklı. Endüstri devriminde mühendislik ve insan gücü birleşimi bir sonuç ortaya konurken, artık konuşulan konu “Beyin Gücü“. Gelişen insanoğlu, makineler sayesinde yakaladıkları verimliliği, bilişim teknolojisi sayesinde bir üst noktaya taşımaya çalışıyorlar. Bu devrimin kendisi de, kuralları da, gerektirdikleri de yeni ve bu yeni oyun herkes için yeni. Bir nevi, bizim gibi Endüstri devrimini yakalayamamış ülkelere ikinci bir şans vadedildi…

Biz maalesef bu oyunda şu ana kadar aktif rol almadık, alamadık. Eğitim sistemimizin çarpıklığı ve bunun doğruduğu sonuçlar ile ortaya çıkan durum tek kelimeyle ifade edilebilir, girişimsizlik (girimcilik eksikliği). Girişimcilik, şu anda dünya arenasında görülen bütün devlerin çıkış noktası. IT devi olarak görülen microsoft’un kurucusu Bill Gates popüler ve ülkemizde bilinen bir kişi olduğu için örnek verilebecek kişilerden birisi. Yukarıda ifade ettiğim gibi; ülkemiz, endüstri devrimini gerçekleştirememiş olabilir fakat IT devrimi halen sürüyor ve ihtiyaçlar devam ettikçe bu süreç devam edecek. Bizim, ülke olarak bu devrimde alacağımız rol bana göre Yazılım dır. Yazılım alanı, kurulum aşamasında koca koca iş makinaları, araçlar v.s. gibi şeyler alınacak, büyük yatırımlar gerektirecek birşey değil, sadece insan gücü ve bilgisayara dayalı bir endüstri. Ülkemizin top yekün bu rolü yerine getirmesi ilk bakışta çok zor gözüküyor olabilir. Ama Hindistan örneği, Amerikaya gelen herkes için çarpıcı, iç geçirtici bazen de kıskandırıcı bir örnek.

Hindistan, İran-Amerika gerginliği sonrasında, ABD’nin menfaatleri değerlendirildiği için yeni yeni dost ülke gibi değerlendiriliyor ama bundan evvel vatandaşlarının ABD’ye girişi, ABD’de çalışması yönünden yasaklı ülkeler arasında gösteriliyordu. ABD’ye hayatları pahasına gönderdikleri gençleri sayesinde, Amerika’dan büyük paraları ülkelerine aktarıyorlar. Birçok kez arkadaşlarıma anlattığım gibi, Hindistanlılar buraya akın akın geliyor. Bütün okulların mühendislik bölümlerinde okuyan master ve doktora öğrencilerinin %80’i veya fazlası Hindistanlı. Aileleri çok fakir olmasına rağmen, çocuklarının ABD’ye gelmesi için devletten 15.000$ civarında kredi alıyorlar. Bu para Hindistanda, Türkiye’de ifade ettiğinden daha fazla yekün ifade ediyor, ama bunu göze alıyorlar. Çocukları buraya geldiği zaman, fakirliğin verdiği azimle çok sıkı çalışıyorlar ve diğer hintlilerle bütün sınav ve ödevlerde iş birliği yapıyorlar ve en iyi skorları elde ediyorlar. 2 dönemlik paraları, ülkelerinden getirdikleri para ile karşılandıktan sonra ABD’de staj bakmaya başlıyorlar. Master ve doktora seviyesinde oldukları için, aldıkları maaşlar, firmaların çalışanlarına verdikleri normal miktarlar seviyesinde oluyor. Burada kazandıkları para ile okullarının kalan parasını bitiriyorlar ve okul bitiminde daha iyi bir işe geçiyorlar. Anlatmak istediğim mevzu bu değil fakat anlatmaya devam edeceğim, Hindistanın şu anki durumunu ifade etmek için bu ayrıntılardan bahsetmem gerekiyordu.

Amerika’da 7/24 destek hizmeti veren firmaların %99’u Hindistan ile çalışıyor. Gündüz saatlerinde amerikalı iş yerine geliyor ve görevini yerine getiriyor. Gün bitiminde, Hindistan- Amerika arasında çekilen ve çoğunluğu Hindistan tarafından desteklenen hızlı veri aktarım kabloları sayesinden, bu tür firmaların bütün destek çağrıları VoIP üzerinden Hindistana yönlendiriliyor. Amerika’dan siz bankanızı yada ürün aldığınız firmanızın destek telefonunu aradığınız zaman karşınızda Hintli aksanı ile konuşan, Hindistanda yaşayan vatandaş çıkıyor.
Burada

  • Hindistandan ABD’ye gelen kişilerin öğrencilikleri esnasında Amerikayı çok iyi çözmeleri, markette çalışan sayısal çoğunluklarının olması ve kilit noktalara Hintlilierin yerleşmesi
  • Hindistandaki nüfusun ingilizce bilmesi

büyük önem taşıyor. Amerikan firmasında yükselip kilit noktalarda yer tutan hintliler, iş gereksinimi olduğu zaman, Hindistanı hiç unutmuyor. Ayrıca Hindistandan devamlı yeni mallar ve eleman getirmek için çabalıyorla.

7/24 destek plazalarının haricinde, burada firma kuran hintliler sayesinde, ABD-Hindistan arasında yazılım projeleri geliştirilmesi gerçeği size de sanırım hiç yabancı değildir. Burada kurdukları firmada, gündüz yerleştirdikleri hintliler bütün gün çalışıp yazılım geliştirmeyi sağladıktan sonra, üzerinde çalışan datalar Hindistana aktarılıyor ve orada yeni başlayan hayat ile ayrı bir takım kalan işi yapmaya devam ediyor.

Bütün olarak, çok uzun olduğu için yarın diğer bir posta altında, “Türkiye olarak biz ne yapabiliriz” ‘i yazacağım.

Ajax – Sırlar dünyasına açılan pencere

Baslik çok iddiali oldu. Ama Ajax’in lanse edilis tarzi çok iddiali oldu, yepyeni bir kavram olarak nitelendirildi, hatta bazilari Internet v2.1-2.2 gibi versiyon yakistarmalari bile yapti. Çalistigim projede konu dönüp dolasip Ajax’a dayandigi için, oturup düsünmem ve kod yazmam gerekti. Bundan birkaç ay evvel, bu kavram ünlenmeye basladigi zaman bir yazi olarak ekleyip temel kavramlari yazmistim. Ajax’in ünlenmesinde ve yayginlasmasinda en büyük etken Google. Gmail, google map, google suggest v.b. birçok web yaziliminda google artik Ajax kullaniyor ve bu konuda yatirimdan hiç çekinmiyor. Ajax kullanimina baska bir örnek olarak, Yahoo’dan bir örnek verebiliriz. Eger Internet Explorer veya Mozilla (Opera desteklemiyor) ile yahoo mailinizden mail göndermek isterseniz, To: veya Cc: kisminda bir harf yazdiginiz zaman arka tarafta adres defterinizde arama yapildigini ve size girdiginiz harfi içeren sonuçlarin gösterildigini görebilirsiniz.

Ajax ile saglanmak istenen nihai hedef, internet uygulamalarinin masaüstü yazilimlari gibi interaktif olmasi, ziyaretçiye devamli refresh edilen bir ziyaret yasatmak yerine, sabit duran bir sayfa araciligiyla kullanicinin isteklerini yerine getirilmesi. Bunun saglanmasi için web programcilari tarafindan yapilan çok fazla is yok aslinda, sahnenin arkasinda browserlar var. Ziyaretçinin veri almak, bu veriyi yorumlamak, geriye vermek veya kaydetmek v.s. bütün aktivitiler için yapilan çalisma browser tarafindan ilgili siteye tekrar veri gönderilmesinde yatiyor. Örnegin sitenizde bulunan bir text box’a veri almak, ziyaretçi diger bir text box’a geçtigi zaman da ona cevap vermek istiyorsaniz onBlur() eventini kullanarak, Javascript tarafinda ilgili text box’a girilen verinin sunucuya gönderilmesini, sunucudan cevap geldigi zamanda sayfa içerisinde belirlediginiz noktalarda bu verinin gösterilmesini saglayabilirsiniz. Bunun için yapmaniz gereken

  • Ziyaretçi tarafinda javascript ile ziyaretçiden istenilen veriyi almak ve bu veriyi XMLHttpRequest’i kullanarak sunucuya ulastirmak. Çok yuvarlak bir anlatim oldu, örnekte daha detayli görebilirsiniz. Ajax’ta kullanici tarafinda (Javascript-CSS) çok önemli.
  • Sunucu tarafinda, ziyaretçi tarafina göndereceginiz verinin hazirlanmasi. Burada isterseniz XML, isterseniz HTML kullanabilirsiniz. Bunun yaninda kendi formatlama biçiminizi de kullanabilirsiniz. Örnegin veritabaninizda iki tane kolon varsa ve siz bunlar üzerinde sorgulama yapiyorsaniz,
    select id, sehir from sehirler where id<30;
    Javascript tarafina veriyi,
    01,Adana;02,Adiyaman;03,Afyon;04,Agri;05,Amasya
    seklinde verebilirsiniz. Javascript tarafinda gelen bu veriyi önce ‘;’ ile ayirarak, daha sonra da ‘,’ vererek kullanabilirsiniz. Sunucu tarafindan döneceginiz sonuç tamamen sizin Javascript tarafinda ne kadar is yapmak istediginize bagli.

Webte buldugum baska bir örnegi burada türkçe kaynak olmasi yönünden kisaca ele almak istiyorum.
Öncelikle kullanici tarafinda interaktif olmasi istediginiz kismi olusturmaniz gerekiyor. Burada yapmak istedigimiz kullanici Plaka Kodu olarak bir sehir kodu girdigi zaman bu veriyi sunucu tarafina iletmek, sunucu tarafindan gelen cevabi Sehir kisminda göstermek.

Plaka Kodu:

Sehir:

Formda dikkat ederseniz, Plaka Kodu’na bagli bir listener var. onblur listener’i ile kullanicinin bu textbox’un içine veri girdigini ve baska bir yere tikladigini algilayabiliyoruz ve sehir() fonksiyonunu çagiriyoruz. sehir() fonksiyonu’nu javascript kisminda yazmamiz gerekiyor.
url degiskeni ile veriyi sunucu tarafinda hangi adrese gönderecegimizi belirtmemiz gerekiyor. http.open() fonksiyonunda görüldügü gibi ilk kisim veriyi hangi metod ile göndereceginizi belirttiginiz kisim. Burada sunucudan cevap alabileceginize inandiginiz bütün HTTP metodlarini kullanabilirsiniz, GET, POST, HEAD v.s. Biz GET metodunu seçtigimiz için, GET metodu ile birlikte yollayacagimiz url ve plaka_kodu’ nu ekliyoruz. Onun altindaki satirda, sunucudan olumlu veya olumsuz cevap geldigi zaman, hangi fonksiyon ile karsilayacagimizi belirtiyoruz. Burada sunucudan cevap geldigi zaman handleHttpResponse() fonksiyonu devreye girecek örnegin. http.send(null) satiri ile de veriyi yolluyoruz.

sehir.php

Görüldügü gibi normalde yaptigimiz form yollamaktan neredeyse hiçbir farki yok. Yalniz burada sehir() fonksiyonu ziyaretçiden bir giris oldugu zaman çalistirilacak fonksiyon, bun fonksiyondan evvel fonksiyon içinde kullandigimiz http degiskenini browser tarafinda sayfa yüklenirken olusturmamiz gerekiyor. Bunu yapmak için

get http object

Bu kisimda dikkatli olmaniz gerekiyor, çünkü yazdiginiz kodlar eski browserlarda ve XMLHttpRequest() tam olarak desetklemeyen bazi yeni browserlarda çalistirilmayacak (örn:Opera). Bu kismi da yazdiktan sonra yapmaniz gereken tek kisim, sunucudan cevap geldigi zaman onu sunucuya nasil göstereceginiz. Bunun için dikkat ederseniz, handleHttpResponse() fonksiyonunu kullanacagimizi belirtmistik. Bu fonksiyonu yazmamiz gerekiyor:

handleHttpResponse

Burada http.readyState degiskenin durumunu kontrol etmemiz gerekiyor. Bu degiskenin alabilacegi degerler ve anlamlari su sekilde:
0 = uninitialized
1 = loading
2 = loaded
3 = interactive
4 = complete

Burada bizim için önemli olan deger 4, eger durum 4 ise, sunucu tarafindan verinin bize ulastigini anliyoruz. responseText degiskeni sunucu tarafindan dönen cevaba karsilik geliyor. Bundan sonra yapmamiz gereken tek sey, gelen degeri form içinde Sehir id’sine karsilik gelen yere basmak.

Sunucu tarafinda php kullaniyorsaniz basit olarak sunu yazmaniz yeterli:
ajax
Hepsi bu kadar. Örnegi buradan download edebilirsiniz.

FreeLancer lik

Eger kendi çapinizda zevk için scriptler yada programlar yaziyorsaniz ama keske bu programciligimla proje alsam da para kazansam diyorsaniz ki ben devamli diyip duruyordum bu siteye bakmanizi tavsiye ederim.

Freelancer’in türkçe karsiligi proje bazli is yapan manasina geliyor. Bu sitede programcilar (programci firmalar) birbiriyle kapisiyor, proje yaptirmak isteyenler proje tanimini ve içerigini belirtiyor ve açik artirmaya veriyor, programcilar kaç günde ve ne kadara yapacaklarini belirtip açik artirmaya katiliyor, anons tarihinin bitiminde projeyi açik artirmaya açan kisi projeyi ilgili kisiye veriyor ve kapatiyor.

Tabi burada sistemi kullanima açanlarda komisyonlarini kazaniyorlar. Ama devamli bu site üzerinden proje yapip para kazaniyorsaniz komisyon vermemek için Gold üyelige geçebilirsiniz, o zaman proje bazli komisyon vermek yerine aylik aidat ödüyorsunuz.

css.php