20 Ağustos 2010

Ubuntu 'da Gmail SMTP ile posta göndermek için mail server (exim4) kurulumu

Yerel makinenizde mail komutu ile istediğiniz bir adrese email gönderebilmek için gmail hesabınızın smtp ayarlarının exim4 sunucusunda nasıl yapılabileceğini anlatan bir yazı. Ben uyguladım ve çalıştı. Yalnız exim4 ayar dosyasına eklemeler yaparken standart bazı ayarları da iptal etmeniz gerekiyor (ilgili satırları yorumlayabilirsiniz) yoksa hata alırsınız. Bunun dışında ayarları kaydettikten sonra exim yeniden başlatmadan önce hata kayıtlarını silmezseniz bu konuda bir uyarı alabilirsiniz. (/var/log/exim4/paniclog dosyasının içeriğini silin).

http://www.manu-j.com/blog/wordpress-exim4-ubuntu-gmail-smtp/75/

19 Ağustos 2010

PHP hata gösterimini açmak

Eğer sunucunuzda hata mesajlarını göremiyorsanız display_errors ayarı kapalı olabilir. Bu durumda şu şekilde display_errors ayarını açabilirsiniz:
[bash]
cd /etc/php5/apache2
gksudo gedit php.ini
[/bash]
php.ini dosyasını açtıktan sonra şu satırı bulun:
[bash]
display_errors = Off
[/bash]
Off yerine On yazarak dosyayı kaydedin ve apache sunucusunu tekrar başlatın.
[bash]
sudo /etc/init.d/apache2 restart
[/bash]

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.

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...