Bugün günlerden cumartesi, evde yanlızım, eşim dışarıda... Süper karnım aç herzaman olduğu gibi. Naapsam ne etsem derken aklıma geldi. Etsiz Çiğ Köfte yapabilmek için bişi almıştık geçenlerde! İçimde beliren büyük heyecanla giriştim mutfağa!
Kutunun üzerinde tarifi var;
Bulgur karışımına 3 barda ılık su ekleyip 10 dakika dinlendirin
Salçayı ilave edip 5 dakika yoğurun
Son olarak bir fincan zeytin yağı ekleyip az daha yoğurun
OO süper basitmiş... Hemen söylenenleri yaptım.
Karışım bu
Salça bu
Bu "yoğurma" işlemi için içinden çıkan ilk eldiven!
Bu da , iş bitince köfte şeklini vermek için kullanacağım diğer eldiven.
Karışımı kaba koydum.
Ketıl'da göz kararı suyu ısıttım ama kaynatmadım. "Ilık su" kullanın diyor!
Ilık suyu ekledikten sonra hafif karıştırdım tahta kaşıkla.
Şimdi beklicez...
Start!
End!
Eldiveni giydim, haydi bakalım!
5 dakika bitti, üzerine bir fincan zeytin yağı ekledim ve 1 dakika daha yoğurdum!
Hmmm. görüntü fena diil, hemen diğer eldivene geçiyorum.
Finale yaklaşıyorum...
Aslına marul ile daha süper oluyor ama evde "göbek" vardı. Hemen temizliyorum...
ooooooooooooooooooooo yeaaaaaaaaaaaah!
Valla görüntü hakikaten 10 numara. Tadı da fena diil. Yani işi bilsem asıl etlisinden yaparım ama o beni aşar sanırım. Acemi usulü 15 dakikada çiğ köfte hakikaten çabuk ve lezzetli oluyor. Hiç kimseye ihtiyaç duymadan kendi başınıza yapabilirsiniz.
Şimdi evin komutanı ( yani eşim ) gelmeden mutfağı eski haline getiriiiim!
Unutmadan; "kutudan 10 porsiyon çıkıyor" yazıyor üzerinde. Köftelerin boyuna göre ayar yaparsanız 4-5 kişi çatlayana kadar yer!!!
Çok basit iki unix komutundan bahsetmek istiyorum, cat ve sort. Unix'in en büyük olayı, pipe'larla yani | işaretiyle, yapılan işlemin sonucunu , bir sonraki komuta geçirebilme özelliğidir. Şimdi çok basit bir sıralama işlemi yapacağız, aslında Mac OS'da yapamayıp, Ubuntu'da yapacağız ne yazıkki... Hemen bir Terminal açın ve sorter.txt adında bir boş dosya oluşturun, oluşan dosyayı nano'da açıp ( ya da TextMate / TextEdit vs... ) aşağıdaki metni yapıştırın :
ümit cemal uğur ali vigo çek ıtri bronx ömer şekip
şimdi yukarıdaki işlemleri yapalım;
$ touch sorter.txt nano sorter.txt
Daha sonra yukarıdaki metni copy-paste ( kopyala / yapıştır ) ile nano'ya yerleştirin ve kaydedip çıkın ( kntrl + o ve kntrl + x ). Şimdi cat komutu ile dosyanın içeriniği ekrana basın.
$ cat sorter.txt
Gördüğün gibi cat ile dosyanın içeriği ekraba basıldı. Şimdi pipe mantığını kullanarak, satır satır ekrana yazdırdığımız bu metni, a'dan z'ye alfabetik olarak sıralayalım yani sort edelim!
$ cat sorter.txt | sort
Gördüğünüz gibi garip bir şekilde sıralandı:
ali
bronx
cemal
uğur
vigo
çek
ömer
ümit
şekip
ıtri
Eğer dikkat ettiyseniz, TÜRKÇE ile ilgili kelimeler, normal sıralamadan sonra yapılmış, yani İNGİLİZCE'ye göre a-b-c-d-e-f-g-h-i..... şeklinde ali-bronx-cemal-uğur-vigo doğru sırada, fakat bronx'dan sonra gelmesi gereçen çek sonda... Neden acaba? hemen locale'imize bakalım :
$ locale
BOOOOM! Benim locale'lim komple TÜRKÇE'ye ayarlı. sort komutun man page'in bakınca derki : ( terminal'de her hangi bir komutun nasıl çalıştığını öğrenmek için man kullanabilirsiniz. Eğer HODO diye bir komutun açıklamasını görmek isterseniz man HODO yazın, eğer varsa man page'i gelir! )
*** WARNING *** The locale specified by the environment affects sort order. Set LC_ALL=C to get the traditional sort order that uses native byte values.
Yani sıralama işlemi, o an terminal'de bulunan kullanıcının locale ayarıyla etkileşimlidir, yani eğer Türkçe işlem yapmak istersen locale'ini Türkçe'ye, Almanca işlem yapacaksan Almanca'ya göre ayarla... Türkçe için külliyen YALAN! Bunu hem LEOPARD hem de SNOW LEOPARD'da da denedim... Acaba dedim sorun benim ayarlarda filanmı? hemen lokalimdeki Ubuntu'da yaptım aynı testi... Önce locale'i kontrol ettim.
Sonra komutu çalıştırdım. Aslanlar gibi çalıştı sıkıntısız. Ne yapmalı, derdimizi kime anlatmalı bilmiyorum? Aradaki tek fark, Mac OS'daki sort 2005 yılına ait, Ubuntu'daki ise 2008 yılına. Belki ilk bakışta "ya bu benim ne işime yararki?" diye düşünebilirsiniz. Bu ve buna bağlı olarak pekçok şey de aynı sıkıntı olabilir. Keza çok benzer bir sorunu tarih ile ilgili bir işlem yaparken yaşamıştım.
Umarım ben bir yerlerde hata yapmışımdır ve benim eksik bilgimden kaynaklı bir sorun söz konusudur fakat çok araştırdım, sanki sorun bende değil gibi... Keza export LC_ALL=tr_TR.ISO8859-9 bile denedim. Belki bundandur diye. Ne yazıkki çözemedim. Eğer yazımı okuyan ve çözümü bilen biri varsa lütfen yorum bıraksın ya da bana mesaj atsın!
Özellikle TextMate kullanıcıları ( filtreleme ) ya da Snow Leopard kullanıcıları ( servis ) bu ve buna benzer shell komutlarını kullanarak hayatlarını kolay hale getirebilirler. Ne yazıkki bu en temel unix komutu SORT güzel türkçemizi sıralayamıyor!
Uzunca bir aradan sonra tekrar merhaba. Blog yazmak, hatta bildiklerini paylaşmak amacıyla blog yazmak, gerçektende zor bir işmiş. İnsan hep üşenip sallıyor. En azından ufak da olsa birşeyler yazmak hep istiyorum.
Önce üzücü bir haber vermek istiyorum. Çok severek satın aldığım "Practical Web Design" dergisi artık gelmiyor!.. Neredeyse dergiciye koşa koşa gitmemi sağlayan bu süper "web dünyası dergisi" artık satılmıyor. Sanırım benden başka kimse almadı bu dergiyi... En azından internet üzerinden tek tek satın alma şansınız var. Dergiyi http://www.netmag.co.uk/ adresinden edinebilirsiniz.
Neyse, lafı fazla uzatmadan bu ayki dergi tavsiyelerime geçiyorum:
Linux User & Developer
Tek kelimeyle : MÜKEMMEL! Uzun yıllardır böyle bir dergi arayışı içindeydim. Aynı 80'lerdeki Commodore Dergisi gibi, süper kaliteli bir dergi. Kaliteden kastım şu; içerik bakımından! Yani uzunca zamandan sonra, hem yazılarıyla, hem haberleriyle, hem içinden çıkan "tutorial" leriyle hem de yanından çıkan DVD'siyle süper bir dergi.
İlk şoku, "PARDUS 2009" ile yaşadım. Belki pek çok kişinin haberi bile yok! Türk distrosu Pardus'un , bir İngiliz dergisinde, gayet güzel reaksiyonlarla konu olması, "Turkish Delight" şeklinde yorumlanması, beni, bir Türk olarak hem gururlandırdı hem de sevindirdi. Hatta ben de gaza gelip hemen VirtualBox'uma kurdu dergiden çıkan iso'yu. Biraz garipsedim ama gayet güzel çalışıyor. PİSİ diye paket yöneticisi var. ssh-server'ı kuramadım ama sıkıntısız olarak "test-drive" yapabildim. Yani yıllardır burnumun dibinde duran OS'a hiç ilgi duymazken, yabancı dergiden çıkan DVD ve yazı beni de gazladı (:
Ne olduğunu anlayabilmek için 2 sayı birden sipariş etmiştim, ama hemen abone olmayı düşünüyorum. Dergi favori yayıncı kuruluşum "Imagine Publishing" den çıktı.
adresinden edinebilirsiniz. Kısaca içerikten bahsedeyim;
Sayı 81
Linux Foundation'dan Jim Zemlin ile ropörtaj
Pardus 2009 tanıdımı ve DVD'de iso'su
Easy Peasy ( netbook'lar için ) OS
MySQL sandbox : N tane MySQL Server çalıştırma yöntemleri
Log rotate'e bakış
QT Webkit ile Twitter Client'ı yazma
Linux'a uygun donanım tanıtımları
Sayı 80
Knoppix'i icad eden Klaus Knopper ile ropörtaj ( yine bir Alman! )
Linux'la iPhone Uygulaması nasıl geliştirilir? Cydia SDK
Almanya'da düzenlenen LinuxTag 2009 etkinliği
Dergi biraz orta-üzeri kullanıcıya hitab ediyor. Ben bir MAC kullanıcısı ve fanatiği olarak, UNIX ve Linux ile çok iç-içe çalışıyorum, server'larımız hep linux, bu bakımdan bu tarz yayınlar süper işime yarıyor. Keza buradaki pek çok yazar da mac-os uzmanı. Bu bakımdan paralel bilgi sahibi olmak mümkün!
Fiyatı : £6 yani yaklaşık : 14.8 TL yani 15TL gibi... Bizim dergileri düşününce çok da ucuz değil. Fakat bizim dergilerle kıyaslayınca arada dağlar kadar fark olduğunu görüyorum. O zaman da fiyat gayet makul...
Daha öncede pek çok kez bahsetmiştim bu dergiden. Orta düzey kullanıcılar için derken bir baktım bu ay ( #162 ) aslanlar gibi iPhone Uygulaması tutorial'i var ( Tabi ben yazana kadar bu eski sayı oldu ). Neler var peki?
Sayı 162
iPhone Uygulama Geliştirme ( Objective-C / XCode )
Mubaloo ile web'e uygun iPhone sitesi yapmak
Flash Video ve alt-yazı
Ropörtaj : BIG SPACESHIP ( Newyork'dan ünlü bir medya ajansı )
Genelde çok takip etmediğim ama her gördüğümde dayanamayıp aldığım bir dergi. Genelde orta seviyenin altındaki Mac kullanıcılarına hatta yeni başlayanlara hitab eden bir dergi desem abartmış olmam. Genelde "iCreate" gibi "how to" ve "tutorial" ağırlıklı bir dergi. Ben genelde şu tarz şeylere deli olurum : "50 bilinmeyen zart zurt tekniği" , "developerın kullanması gereken 20 tool" filan... Bu ay işime yarayan bişi öğrendim "101 Best-ever Mac Tips" yazısından. Custom Folder Icon yapmak hiç bu kadar kolay olmamıştı!
Bu ay ( #213 ) şu konular vardı;
101 Mac ipucu
iPhoto ile slide-show'unuzu paylaşın
Pek çok "how to"
Derginin yanından full-versiyon çıkan "SkypeCap" işe yarar gibi. Skype konuşmasını kaydedebilmenize yarıyor. Fiyatı : £5.99 ama Dünya Store dergiyi süper pahalı satıyor. Yaklaşık iki katı! ( Belki dahada pahalı )
Mac | Life
Ara ara satın aldığım, çok da takipçisi olmadığım bir dergi. Tabi en azından Mac ile alakalı. Bu tip dergilerin kıl olduğum bir yanı var, adamlar çeşitli sorunlara çözümler öneriyorlar. Önerdikleri çözümler hep "pararlı" uygulamalar! Yani bazen diyorum herhalde reklam alıyorlar. O sorunlara çözüm "free" yazılımlarla da var ama hiçbiri bundan bahsetmiyor. Bu sayıda faydalı sayılabilecek tek şey "Automator" mevzuları. Dergi yine Dünya Store'dan ve yurt dışına göre en az iki kat pahalı. Sanırım nakliye / gümrük / vergi filan biniyor sonuç bize patlıyor!
iCreate Her ay "bu sefer almiicam" diyip, meraktan aldığım bir dergi. İçindeki tutorial'ler genelde çok başlangıç seviyesinde. Bu ay;
Snow Leopard'a upgrade kılavuzu
Twitter ipuçları
Tonlarca "guide"
En azından Remzi Kitabevi'nde, Dünya Store'larda satılıyor.
Daha önceki yazılarımda da bahsetmiştim, MacPorts diye harika bir şey var! Linux ( debian,ubuntu vs... ) daki paket yönetiminin macos-x'cesi. Tonlarca ( abartmiim, yazıyı yazdığım anda toplam 6133 adet ) uygulama, ağırlıkta linux-unix dünyasının çok sık kullandığı, macos-x için port edilmiş halde bizi bekliyor!
Peki bu uygulamalar bana ne sağlar?
Eğer development'la uğraşıyorsanız zaten faydalarını saymakla bitiremem. Eğer standart bir kullanıcıysanız bile, pek çok "işe yarar" uygulama edinebilirsiniz. Unutmadan belirteyim, bu uygulamaların hepsi "open source" ( açık kaynak ) uygulamalar. Bu bakımdan hem kaynak kodu açık, hem de ücretsiz. Hem de sürekli güncelleniyor.
Dedim ya, eğer yazılım geliştirme işleriyle uğraşmıyorsanız nasıl faydalanacaksınız? İlk aklıma gelen şey, eskiden kalma Mustek CU 1200 scanner'ım. Evet, ben bu cihazı, windows/pc ile uğraşırken satın almış ve windowsXP dışında hiç bir windows'da çalıştıramamıştım. Hatta support'larına mesaj atmış ve "sadece XP'de çalışır" cevabını almıştım. Tabi bunun üzerine odamdaki dolapta, hurdaların yanında yerini almıştı. Taaki macports'a kadar.
S.A.N.E adında , "open source" geliştirilen proje ( Scanner Access Now Easy ) sayesinde, uzunca yıllar kullanamadığım scanner'ımı, mac'de, terminal üzerinden kullanmaya başladım. Hatta işin komik tarafı, daha önce 600dpi tarama yapmayı başaramamıştım! Scanner'ı bağlayıp, Terminal'i açıp :
yazınca, 300dpi - tiff şeklinde scan edilmiş resim. Derseniz ki, "Kardeşim ben terminal filan anlamam, yok mu bunun kolayı?" evet o da var. http://www.ellert.se/twain-sane/ sitesinde, aynen macports'da bulunan uygulamanın gui'li hali de var. Prefpane'i filan da mevcut, kolay konfigüre edilebiliyor.
Konuyu süper dağıttığımı görüyorum ve hemen asıl mevzuya dönüyorum. Geçenlerde, "bash-completion" konusuna değinmiştim. Hatta bununla da kalmayıp Django için nasıl otomatik tamamlama yapılabileceğini de yazmıştım. ssh üzerinden tünel yapma işlerini denerken sevgili iş arkadaşım Fırat Can Başarır bana ssh_config hakkında tips & tricks verirken aklıma hemen şu soru geldi : "Acaba uzaktaki makineyi ssh üzerinden browse ederken tab-completion olabilirmi?" ya da "nasıl olur?"
Bash haricinde, ZSH'de bunun mümkün olduğunu sevgili kardeşim Can Burak Çilingir sayesinde biliyordum. Acaba aynısını bash için yapmak mümkünmüydü?
Eğer konuya zaten hakimseniz, ssh_config diye bişi biliyorsunuzdur. Genelde bu tarz konfig olayları hep birbirine benziyor mantık olarak;
System-Wide ( yani tüm kullanıcıları ilgilendiren, /etc/ altında genelde )
User Profile ( sadece kullanıcı bazında ~ altında )
Kullanıcı bazlı şeyler genelde $HOME dizini altında oluyor; yani :
$ ~ $ /Users/KULLANICI_ADINIZ/ $ echo $HOME
$HOME sizin kullanıcınızın "home" folder'ıdır. Yani sizinle ilgili pek çok şey ( Desktop , Müzikler , Videolar vs... ) buradadır. Keza ssh ile ilgili şeyler de ( eğer kullanıcı bazlı düşünüyorsak ) burada olmalıdır. Terminal'e girip;
$ ls
dediğimiz zaman gördüğüm ekran; gibiyse sorun yok, eğer değilse;
$ ls -alhG
Şeklinde deneyin. Bu, ne var ne yok listelemenize, hatta renkli ve hatta boyutları da anlaşılır bir şekilde listelemenize yardımcı olacak. Eğer ls komutunuzun hep böyle kalmasını isterseniz, .profile'a bir alias eklemeniz lazım. Eğer $HOME'da .profile yok ise önce oluşturun;
$ cd ~ $ touch .profile
Eğer ~ işaretini yapmakta sorun varsa, "Turkish QWERTY PC" modunda, alt + ü yapın. Sonra, sevdiğiniz bir text editörde bu dosyayı açın. Örnek :
$ open -a /Applications/TextEdit.app .profile
Dosyayı açtıktan sonra aşağıdaki bilgiyi ekleyin , kaydedip çıkın programdan. ( Ben text editör olarak TextMate kullanıyorum, belki yazıyı okuyanlar da yoktur diye standart / default uygulamalardan örnek veriyorum! )
alias ls='ls -alhG'
Şimdi ya terminal'i komple kapatıp açacaksınız, ya da
$ source .profile
yazın enter'a basacaksınız. Şimdi ls yaptığınızda tüm detaylarıyla $HOME folder'ını görebilirsiniz. Eğer .ssh diye bir folder yoksa hemen bunu oluşturun ve gereken dosyaları ekleyin :
$ cd ~ $ mkdir .ssh/ $ touch config
Şimdi bu config dosyasına, ssh yapmak istediğimiz sunucuya ait bilgileri ekleyeceğiz. Tabii bunun için yine bir text editör ile dosyayı açalım. Açtıktan sonra;
Host SUNUCU_ADI User KULLANICI_ADI Port SSH_PORTU HostName SUNUCU_IP
şeklinde uygun bilgileri doldurun. Unutmayın! Bu dosyanın mantığı Key Value şeklinde. Key'den sonra ya bir TAB ya da SPACE koymanız lazım. Ben TAB kullanıyorum. Örneğin ip'si 1.2.3.4 olan bir sunucuya, 22.port'dan ssh yapacaksak ve bu sunucuya "Sunucum" diye bir isim takarsak;
Host Sunucum User vigo Port 22 HostName 1.2.3.4
Eğer Port belirtmezseniz sistem bunu otomatik olarak 22 varsayacaktır. Bu dosyada N tane sunucu tanımlaması yapılabilir. Yani;
Host Sunucum1 User vigo Port 22 HostName 1.2.3.4
Host Sunucum2 User vigo Port 22 HostName 10.20.30.40
gibi, istediğiniz kadar sunucu ekleyebilirsiniz. Keza, konfigürasyon bilgisi olarak da, Host,User,Port vs... dışında pek çok direktif de ekleyebilirsiniz. Bu bilgiler nerede? Tabii ki man page'de!
$ man ssh_config
demeniz yeterli...
Eğer bunların hiç biri olmasaydı nasıl bağlantı yapacaktık?
$ ssh vigo@1.2.3.4
şeklinde. Hemen yeri gelmişlen şunu da anlatalım. Uzaktaki makineye bağlanırken sürekli şifre girme derdinden kurtulmak için kendinize bir ssh-key üretebilirsiniz. Bu ürettiğiniz key'i de uzaktaki makineye eklediğiniz zaman , ssh bağlantısı için birdaha size şifre sorulmaz. Nasılmı? Terminal'de devam ediyoruz;
$ ssh-keygen -t dsa
Enter'a basar basmaz "Generating public/private dsa key pair." şeklinde bir mesaj görüceksiniz. Komut size iki anahtar üretiyor, biri public diğeri de private. Yani biri ortalıkta dolaşabilen, PUBLIC key, diğeri de sadece sizde olacak olan PRIVATE key. Daha sonra size, bu oluşturulacak anahtarların nereye kayıt edileceği soruluyor. Gördüğünüz gibi bu lokasyon, default olarak, $HOME altında bulunan .ssh/ folder'ı. Örneğin bana sorulan yer : /Users/vigo/.ssh/id_dsa şeklindeydi.
Daha sonra "passphrase" sorulur. Bu bir tür şifredir ve güvenlik için önemlidir. Bu bakımdan bu alanı boş bırakmadan , hatırlayabileceğiniz bir şifre seçin. Herşey yolunda gittiyse size :
The key fingerprint is: fe:82:ea:3d:c4:..:..:.. user@hostname ( uzun olduğu için hepsini yazmadım! ) The key's randomart image is: +--[ DSA 1024]----+ |E | |. | |. | | . | |o+ o S | |* o.. +. | | +oo o .. | |ooo...o .. | |=..+o... .. | +-----------------+
şeklinde bir görüntü çıkar ve .ssh/ altına baktığınızda iki dosya ile karşılaşırsınız :
$ ls .ssh/ id_dsa id_dsa.pub
işte bu sonu .pub ile biten dosya sizin PUBLIC key'inizdir. Eğer bu dosyayı text editörle açarsanız karşınıza;
ssh-dss AAAAB3NzaC1kc3MA...... user@hostname
şeklinde devasa bişi çıkar. ( Ben uzun olduğu için sadece minik bir kısmını yazdım. ) Şimdi yapmanız gereken, uzaktaki makine'ye bağlanıp, oradaki $HOME'unuza gidip, .ssh/ in altında ( eğer yoksa touch ile authorized_keys diye oluşturun! ) bulunan authorized_keys dosyasına bu id_dsa.pub'ın içinde yazanı ekleyin. Karşı makinede, en basit text editörü "nano" yardımıyla bunu yapabilirsiniz. Dikkat edilmesi gereken şey, bu up upuzun tek bir satır şeklinde olmalı! ( word-wrap'e dikkat edin! )
Kendi tarafınızda elma ( cmd ) + c kopyalayıp, uzaktaki makinede de elma ( cmd ) + v ile yapıştırabilirsiniz. Eğer nano kullanmayı bilmeyenler varsa, uzaktaki makineye bağlanınca;
$ nano -w .ssh/authorized_keys
ile nano'yu açın. elma ( cmd ) + v ile key'inizi yapıştırın, satır sonunda enter yapın. "Save" edip çıkmak için kntrl + x, sorulan soruya y cevabı ve enter. Hemen test edelim bakalım olmuşmu?
$ ssh Sunucum1
Enter! evet şifre sormadan bağlandınız! kntrl+d ile bağlantıyı kesebilirsiniz.
Bu kadar açıklamadan sonra, asıl olayımızıa gelelim. Uzak makineyi tamamlama! Aynı ssh komutu familyasından scp ile tanışacağız birazdan. Sistemde default bulunan cp ( copy ) komutunun secure olanı! Gerekenler;
macports ( bu zaten kurulu diye düşünüyorum ) ve ilgili portları :
bash-completion
gawk
gsed
Normalde bash-completion kurulunca zaten pek çok sorun halloluyor. Fakat, sistemin içindeki awk/sed, bir sebebten dolayı, ssh'i tamamlayamıyor. Bu bakımdan ports'dan gawk ve gsed paketlerini de kurmamız gerekiyor.
$ sudo port install bash-completion gawk gsed
( eğer bash-completion önceden kuruluysa sadece gawk ve gsed i kurun )
Şimdi yapmanız gereken tek şey : ssh [TAB'e basın] config'den ya da /etc/hosts'dan otomatik tamamlama başladı bile... Peki scp? şimdi scp Sunucum1[TAB'e basın] ve basmaya devam edin!
Emacs Update
-
Bildiğiniz gibi, ara ara , port repository’sini güncelleyip, kullandığınız
paketlerin yenisi çıkmışmı diye kontrol etmeniz gerekiyor;
$ sudo port -v self...