18 Ağustos 2010

Engellenen Google hizmetlerini çalışır hale getirmek

Sisteminizdeki hosts dosyasını açın:
[bash]
cd /etc/
gksudo gedit hosts
[/bash]
Daha sonra aşağıdaki satırları dosyanın altına ekleyin ve dosyayı kaydedin.
[bash]
74.125.43.103 www.youtube.com
74.125.43.103 www.google-analytics.com
74.125.43.103 google-analytics.com
74.125.43.103 code.google.com
74.125.43.103 translate.google.com
74.125.43.103 investor.google.com
74.125.43.103 groups.google.com
74.125.43.103 docs.google.com
74.125.43.103 picasaweb.google.com
74.125.43.103 spreadsheets.google.com
209.85.135.102 auth.keyhole.com
209.85.229.99 dl.google.com
#209.85.229.99 mt0.google.com
#209.85.229.99 mt1.google.com
209.85.229.99 lh3.ggpht.com
209.85.229.99 lh4.ggpht.com
209.85.229.99 lh5.ggpht.com
209.85.229.99 lh6.ggpht.com
209.85.229.99 picasaweb.google.com

74.125.157.99 id.google.com
74.125.157.104 id.google.com
74.125.157.147 id.google.com
#74.125.157.104 khm.google.com
#74.125.157.147 khm.google.com
#74.125.157.99 khm.google.com
74.125.43.103 khm.google.com
74.125.43.103 khm0.google.com
74.125.43.103 khm1.google.com
74.125.157.99 maps.google.com
74.125.157.104 maps.google.com
74.125.157.147 maps.google.com
74.125.77.99 maps.gstatic.com
74.125.157.104 mt0.google.com
74.125.157.147 mt0.google.com
74.125.157.99 mt0.google.com
74.125.157.104 mt1.google.com
74.125.157.147 mt1.google.com
74.125.157.99 mt1.google.com
[/bash]
Dosyayı kaydedip kapattıktan sonra internet bağlantınızı kapatıp tekrar bağlanın.

mod_rewrite aktif hale getirmek

Yeni kurduğunuz web sunucunuzda mod_rewrite çalışmıyorsa aktif edilmemiş olabilir. Şu şekilde aktif hale getirebilirsiniz:
[bash]
sudo a2enmod rewrite
sudo /etc/init.d/apache2 restart
[/bash]

11 Temmuz 2010

Re: Java Programcıları Geleceğin Pizza Dağıtıcılarından Farksız mı Olacak?

Eskiden bir tartışmada yazdığım yanıtı burada paylaşmak istedim:

Programlama dilleri de aynı konuşma dillerinde olduğu gibi birer araçtır. Anlatmak istediğinizi hangi dilde daha rahat anlatıyorsanız o dili kullanmayı tercih edebilirsiniz. İsterseniz birden fazla dil de öğrenebilirsiniz. İsterseniz de dildeki edebiyatla ilgilenirsiniz o zaman dili araç olarak değil amaç olarak kullanmaya başlarsınız.

Ben web programlama alanıyla ilgileniyorum ( Php Mysql JQuery). Önemli olan işi istenen şekilde yapmak olduğu için bazen hazır bileşenler yada kodlar kullanıyorum bazen de bunu araştırmaktansa o konudaki bilgim yeterli düzeydeyse (yada öğrenme hevesim yerindeyse) yeniden yapmayı tercih edebiliyorum. Örneğin ben şu ana kadar mvc yapısını kullanan birkaç php framework sistemini öğrenmeye başlayıp bir süre sonra çeşitli nedenlerden yarım bıraktım ve herbiri için vakit harcadım. Bırakma nedenlerimi öğrenme sürecinin uzun olması, beklentilerimi karşılamaması, aradığım bazı özelliklerin ancak eklentiler yoluyla elde edilebilmesi, yavaş olması, çok katı kurallarla çalışması (esnekliğin az olması) vb. olarak sıralayabilirim. Daha sonra kendi framework sistemimi yazmaya başladım ve bugün istediğim gibi ihtiyacım olan özellikleri ekleyebildiğim ve daha da önemlisi kullanım yapısını kendim geliştirdiğim için daha rahat kullanabildiğim bir framework sistemim var. Kodlarını kendim yazdığım için istediğim zaman sistemde değişiklik yapabiliyorum, yeni özellikler ekleyebiliyorum ve bunları yaparken kendimi daha da geliştirebiliyorum. Bunun yanında sistemin kullanımını öğrenmek için herhangi bir belge okumam gerekmiyor. Bu sistemde mutlaka eksikler ve hatalar vardır ancak kontrolü ele almanın yukarıda saydığım avantajları var.

Demek istediğim hazır kütüphane/ortam kullanmak yada tekerleği yeniden icad etmek tamamen programcının kendi tercihidir. Programcı yüzlerce/binlerce işlevin nasıl kullanıldığını ezberleyip robot gibi çalışan biri olmamalı. Yaratıcılık ve probleme farklı yönlerden yaklaşma gibi konularda kendini geliştirmeye çalışmalıdır. Ancak bunun yanında elbette pratik olmayı da ihmal etmemelidir. Programcı kullandığı dili amaç olarak değil araç olarak gördüğü sürece hangi dil/ide/framework/kütüphane/işletim sistemi kullandığının bir önemi yoktur. Eğer programcı java kullanmak istiyorsa java kullanır. Bir dili kullanan programcının ileride ne olacağını bilemezsiniz çünkü bunun için o programcının o dili kullanarak ne yaptığını bilmeniz gerekir. Tekrar ediyorum dil amaç değil bir araçtır.

12 Haziran 2010

Linux 'ta Rsync ile kolay yedekleme işlemi

Linux kullanıyorsanız (ör: Ubuntu) mutlaka bir süre sonra yedekleme işlemi yapmak üzere bir arayış içinde olacaksınız. Bu amaçla kullandığım rsync komutundan (konsol programı desek daha doğru) bahsetmek istiyorum. Örneğin ben bu program oluşturduğum bir komut dosyası (bash script) ile iki farklı hafıza birimine yedekleme işlemi yapıyorum. Bunlardan biri 500Gb kapasiteli bir hard disk diğeri de daha sık ve daha az sayıda dizini yedeklemek için kullandığım 4Gb lık bir usb bellek. Usb bellekte yedekleme yapmak için şu şekilde bir komut dosyası kullanıyorum.

[bash]
rsync -avx --delete --log-file='rsync_www.log' /var/www/ ./www/
rsync -avx --delete --log-file='rsync_home.log' /home/eren/ ./eren/
[/bash]
Bu komutlar ile makinemdeki /var/www/ ve /home/eren/ dizinlerini usb diskteki www ve eren dizinlerine aktarıyorum. Hedef dizinlerin ./ ile başladığını görüyorsunuz. . işareti mevcut dizin anlamına gelir. Bu şekilde yazmamın amacı usb disk sürücüsünün sisteme göre farklı bir adrese bağlanmış (mount) olabileceği. Hedef dizinleri bu şekilde belirtebilmek için komutların çalıştırılmadan önce çalışma dizininin usb dizini olarak değiştirilmesi gerekir. (Ör: cd /media/disk-adi/ şeklinde). Bu komutları her seferinde yazmak yerine bir komut dosyası olarak kaydetmenizi öneririm. Eğer komutları rsync.sh adında bir dosyaya kaydederseniz çalıştırmak için önce usb disk dizinine gidip daha sonra
[bash]
bash rsync.sh
[/bash]
komutunu kullanabilirsiniz.

Ancak şunu belirteyim rsync ile yapılan aktarma sıradan bir kopyalama işlemi gibi değildir. Bu yedekleme işlemi aslında bir eşzamanlı hale getirme (synchronization) işlemidir. Bu arada rsync adının Remote Synchronization ifadesinden geldiğini söylemeliyim. Bu komutların çalışması genelde biraz uzun sürüyor ve işlem sonucunda usb diskteki dizinler dosyaların kaynağı olan bilgisayarın son durumu gibi oluyor. -v parametresi işlem yapılırken çıktının ekrana verilmesi için, -a parametresi archive mod kullanmak için (-rlptgoD parametrelerine eşdeğer),  -x parametresi de dosya sistemiyle ilgili bir parametre (dizin taraması yapılırken karşılaşılan sembolik bağlantı vb. dosyalar nedeniyle belirtilen kaynak dizinlerinin dışına çıkmaması için. Aksi halde sistemdeki başka bir dizine atlayıp yedeklemek istemediğiniz dosya ve dizinleri de kopyalayabilirsiniz). --log-file parametresi tahmin ettiğiniz gibi işlem sonuçlarını günlük dosyası olarak kaydetmek için.

Komutlardaki --delete de parametresi yedekleme yapılırken kaynakta silinmiş olan dosya/dizinlerin hedefte de silinmesi için. Yani bu işlem sonrası kaynak ve hedefteki dizinler eşitlenmiş oluyor. Bunlar dışındaki parametrelerin anlamları için rsync komutunun kullanım klavuzuna bakabilirsiniz. Bunun için man rsync komutunu kullanmanız yeterli. Göreceğiniz gibi rsync programı her türlü yedekleme ihtiyacını karşılamak için çok sayıda seçenek içerir.

1 Haziran 2010

israili protesto ediyorum

israilin, Filistin 'e giden yardım gemilerine karşı yaptığı korsanlık eylemini protesto ediyorum. Bu yapılan, ne hukuk ne de insanlık zemininde kendine yer edemeyecek olan alçakça bir haydutluk eylemidir. Bu eylemle israil milyarlarca insanın lanetlemesi dışında bir şey kazanmamıştır ve her eyleminde olduğu gibi bulunduğu haksızlık ve alçaklık durumunu daha da arttırmıştır. israil eninde sonunda yaptıklarının cezasıyla karşılaşacaktır ve o güne kadar ancak alçakça eylemlerle ve kendini haklı gösterme çabasıyla oyalanmaya devam edecektir. Gerçek adaletin geleceği güne kadar israili, mazlumların ve vicdanı olan her insanın lanetiyle birlikte protesto ediyorum.

13 Nisan 2010

(Php) Metin özetlerinde Türkçe karakter problemi

Son zamanlarda birçok web sitesinde anasayfadaki alt sayfalara ait içeriklerin özetinin gösterildiği yerlerde kısaltılmış (özet) metin oluşturulurken bazen Türkçe karakterlerin hatalı göründüğünü farkettim. Hatta bu hatayı çok meşhur olan ve çok sayıda ziyaretçisi olan sitelerde bile görüyorum.

Bu hatanın nedeni Türkçe karakterlerin multibyte türü karakterler içermesidir. Yani tek bir harf birden fazla byte ile temsil ediliyor. Eğer kesme işleminin yapıldığı nokta tam da bu byteların arasına denk geliyorsa o zaman özetteki son karakter garip bir şekilde görünüyor. Bu sorunun nedeni kısaltma işlemi için yanlış işlevlerin kullanılmasıdır. Örneğin Türkçe karakter içeren bir metinde kısaltma yaparken substr() işlevi yerine mb_substr() işlevini kullanırsak böyle bir sorunla karşılaşmayız. Bu işlevle ilgili detaylı bilgiye http://tr.php.net/manual/tr/function.mb-substr.php adresinden ulaşabilirsiniz. Metin türünde veriler üzerinde  buna benzer şekilde işlemler yapan neredeyse her php işlevine karşılık mb_ ile başlayan bir multibyte işlev vardır. Bu şekilde Türkçe karakterlerin sorun çıkardığı yerlerde benzer hatalarla karşılaşmayız.

Kripto paralar hakkında

Kripto paralar, merkezi olmayan, şifrelenmiş ve dağıtılmış bir veritabanı olan blok zinciri teknolojisi kullanılarak oluşturulan dijital par...