aptitude easter egg

February 16th, 2011 No comments
kucukadam@ubuntu:~$ aptitude moo
There are no Easter Eggs in this program.
kucukadam@ubuntu:~$ aptitude -v moo
There really are no Easter Eggs in this program.
kucukadam@ubuntu:~$ aptitude -vv moo
Didn't I already tell you that there are no Easter Eggs in this program?
kucukadam@ubuntu:~$ aptitude -vvv moo
Stop it!
kucukadam@ubuntu:~$ aptitude -vvvv moo
Okay, okay, if I give you an Easter Egg, will you go away?
kucukadam@ubuntu:~$ aptitude -vvvvv moo
All right, you win.

                               /----\
                       -------/      \
                      /               \
                     /                |
   -----------------/                  --------\
   ----------------------------------------------

kucukadam@ubuntu:~$ aptitude -vvvvvv moo
What is it?  It's an elephant being eaten by a snake, of course.
Categories: Diğer Tags:

ubuntu 10.10 iphone 4.2.1 mount

February 10th, 2011 No comments

Ubuntu ile iphone a müzik dosyaları atmak; içinden fotoğrafları almak itunes’dan 10 kat daha rahat. ayrıca diski mount ederek istediğin gibi dosya atıp hdd olarak kullanabilirsin.
bunun için;

sudo add-apt-repository ppa:pmcenery/ppa

sudo apt-get update
sudo apt-get upgrade

sudo apt-get install libimobiledevice-utils

yapıp gerekli dosyaları güncelliyoruz. Yalnız burda bir trick var; eğer iphone versiyonumuz güncelse mount edemiyor bu şekilde. Bunun çözüm yolunu da ubuntuforums.org da paylaşmışlar; ben de tekrarlıyım burada;

idevicepair unpair
idevicepair pair
idevicepair validate

eğer bir firewall arkasındaysanız keyserver.ubuntu.com a gitmeniz problem olabilir; eğer kullanabileceğiniz bir ssh serverınız var ise;
/etc/hosts dosyasına
127.0.0.1    keyserver.ubuntu.com
satırını ekleyelim
ssh <username>@<server> -L 11371:keyserver.ubuntu.com:11371 -N
ile serverımıza bağlanalım.
sonra tekrar
sudo add-apt-repository ppa:pmcenery/ppa
ile başa dönebiliriz.

bakalım ios 4.3′te işimizi görecek mi.



Categories: Diğer Tags:

bakalım turkcell vınn ı cayma bedelsiz kapatabilecek miyiz :)

February 3rd, 2011 2 comments

İhtarname

İhtar Gönderilen Muhattap : Turkcell İletişim Hizmetleri A.Ş
İhtar Gönderilen Muhattap Adresi : Turkcell Plaza, Meşrutiyet Cad. No: 71, Tepebaşı, İstanbul

İhtar Edenin Adı Soyadı : Adım Soyadım
İhtar Edenin  Adresi : Adresim
Telefon : TelefonNumaram
Konusu: İlgili kanun ve yönetmelik hükümleri(Tüketicinin Korunması hakkında Kanunun
4/A maddesi, 6.maddesi ve ilgili yönetmelik) gereğince firmanızla yapmış olduğum Vınn 3g
abonelik sözleşmesinin cayma ve bedelsiz iptali.

Olay : DataHatNumaram nolu data hattım ile Vınn 3G modem sahibi ve hat abonesiyim. Şirketinizden bu konuda aldığım hizmetten memnun kalmadım.
Vınn 3G aboneliği hizmetinden beklediğim yararı göremediğimden diğer yasal haklarım saklı kalmak kaydı ile en geç 7 gün içinde firmanızla yapmış olduğum sözleşmeden cayma hakkı ve sözleşmenin bedelsiz iptalini talep eder ve aldığım Vınn 3G modemin bedelsiz iadesinin kabul edilmesini aksi takdirde yasal yollara başvuracağımı, bu ihtardan sonraki tarihte itirazen ödeyeceğim fatura bedellerinin yasal faiziyle birlikte iadesini tarafınıza ihtar ederim. Bundan sonra ödeyeceğim fatura ödemelerinin “ itirazen “ kaydıyla yapıldığını bildiririm.
Gereğini  Dilerim

Adım Soyadım

Categories: Diğer Tags:

eskiden dutluktu buralar

January 4th, 2011 No comments

“İnternet hızla yaygınlaşmakta ve bu durum yazılımcıları kara kara düşündürmekteydi.”

Bu belki 10 sene öncesinin bilim kurgu romanından bir alıntı; belki de 10 sene sonrasından bugün için yapılmış bir saptama.

Önceleri her şey çok güzelmiş aslında; kullanıcıdan bilgileri alır, iki tane döngü, üç tane kontrol koyarak veritabanına kayıt atardık. Web sunucularından pek anlamaz; HTML, Javascript ve CSS bilmemiz bizim için birer artılardı.
İnternet programcılığının temelinde yukarıda anlattığımdan fazlası yok; küçük bir proje için fazlasının bilinmesine de gerek yok. Yalnız, daha büyük bir kitlenin kullanımına açık bir projede çalışmaya başlıyorsanız bu temelin güçlendirilmesinin gerektiğini tahmin ediyorsunuzdur. Bu yapı ile beraber kendimizde de güçlendirmemiz gereken özellikler olacaktır. PHP’den başka dile hakim olmadığımdan (ama aslında iyi bir yazılımcı için PHP’miş Java’mış çok fark etmemeli) PHP “notasyonları” ile aktaracağım düşüncelerimi ama benzer ifadeler farklı diller için de teknoloji isimleri değiştirilerek aktarılabilinir.

Ön Not: PHP’ci = PHP ile yazılım geliştiren kişi :)

Ortam : Bir PHP’ci artık Linux kullanmalı. Çok da dert değil en azından bunun üzerine tartışmaya girmemeli.
(bkz : Ubuntu)

OOP : PHP5.3.2 ile birlikte (ki yeni bir projenin bu sürümden düşük bir sürümden başlamaması gerekli artık) PHP ile diğer dillerdeki OOP kavramı arasında büyük fark kalmadı. İyi bir PHP programcısının PHP 5.3.2 ile getirdiği yeniliklerin neler olduğunu; bunların nasıl kullanıldığını yavaş yavaş anlaması gerekli.
(bkz: PHP OOP)

Tasarım Kalıpları : İyi bir yazılımcı olmak için mutlaka tasarım kalıbı kavramından haberdar olmak gerekli. En azından en önemli 3-5 kalıbın neler olduğunu, neye çözüm getirmek için nasıl kullanıldığını anlamak gerekiyor. Bu; çalışırken görülecek örnekler ile zihinde yerine oturacak bir kavram daha çok. Gidip bütün kalıpları ezberleseniz bile, gerçek bir projede nasıl kullanıldığını farkedene kadar tam oturmayacaktır kafanızda. (En azından benim için öyle; kendimi de en eksik hissettiğim konudur.)
(bkz: Design Patterns)

Framework’ler : Kısaca bir kaç önemli tasarım kalıbının düzgün olarak birleştirilmesi ve kütüphanelerle desteklenmesi ile oluşan; işlerin hızlı ve doğru bir şekilde çıkmasına yardımcı olan yazılımlar olarak tanıtabiliriz sanırım.
PHP için Zend Framework, Symfony, CakePHP, CodeIgniter, Kohana, Yii, Lithium  en çok duyulan frameworklerdir. Bunlardan söz ederken Doctrine’in ismini de anmak gerekir. Doctrine bir MVC framework değil; bir ORM/DBAL’dir. (O kadar Türkçe’den sonra bu son cümle olmalıydı artık.) Kullanırsınız kullanmazsınız önemli değil; en azından ne zaman ve ne şekilde kullanıyor insanlar, bununla ilgili bilgi sahibi olmak gerekli diye düşünüyorum.
Kısa Not : Bu frameworklerin çoğunun yavaş yavaş “2.0″ı çıkmakta; bu “2.0″ etiketi “PHP  5.3.2 ve sonrasını kullanıyorum; namespace vs. dikkat ediyorum; OOP’nin doruklarındayım” demek bilginiz olsun.
Ayrıca WordPress ve Drupal gibi cms frameworklere de göz atmalı.
(bkz: MVC, Front Controller, Zend Framework, Symfony, CakePHP, CodeIgniter, Kohana, Yii, Lithium, ORM, DBAL, WordPress, Drupal)

Caching : “Bir birleşen daha az yorulsun ki daha hızlı cevap döneyim istemciye” derdine çözümlerdir. Bir PHP’ci APC nedir bilmelidir, memcached nedir “nasıl kullanılır ne işe yarar” bir okumalıdır. Büyük bir projenin “cache”siz olması çok düşük bir ihtimaldir. Veritabanı sonuçları nasıl cache’lenir ? vs.. Daha bunun Hiphop’u falan da var..
(bkz: APC, memcached, Hiphop)

Web Sunucuları : Apache’den başkasını kullanmadım. IIS7′nin büyük iddiaları vardı bir ara Php’yi çalıştırmak üzerine. Hala büyük PHP konferanslarına sponsor oluyorlar, Zend ile  aralarında varmış bir anlaşma. İleride windows hosting üzerinde PHP geliştiriyor olursak şaşırmam. (Yok şaşırırım sanırım..) Nginx’imiz var mesela; ne zaman kullanmak avantaj sağlıyor ?
(bkz: Apache, nginx)

Veritabanları : Bizim için veritabanı demek MySQL demek olmuş bir kere.. Daha önce çalıştığım işten dolayı bir çok veritabanı ile kullandık PHP’yi. Oracle, MSSQL, DB2 ya da başka biri, sorunsuz çalışırdı. Çok büyük bir yazılım olmadığından genel performansları hakkında bilgim yok. MySQL’e neden bu kadar bağlı kaldık bilmiyorum; muhtemelen ilk bağlantıyı çok rahat kurmamızdan kaynaklanıyordu. (Oracle için bir gün uğraşıyordum :) ) Tabi diğer önemli detay da MySQL’in ücretsiz olması. Hem ücretsiz hem diğerlerinin yaptığı her işi yapınca sonuç kaçınılmaz sanırım. Diğer veritabanlarında nasıldır bilmiyorum ama MySQL’in yanlış index kullanımından nefret ediyorum. Evet bir PHP’ci aynı zamanda doğru SQL yazmayı bilen olmalı.. İstediğiniz kadar güzel kod yazın; en iyi framework ü en iyi şekilde kullanın, APC’yi de memcache’i de kurun; en sonunda yazdığınız SQL’in dönüş süresi 5sn ise.. Ne diyeyim; “hayrettin yapma..”
Güzel SQL yazmalıyız (rubai tadında), MySQL’in saçmalıklarını tecrübe etmeliyiz; Postgresql ile de hafiften tanışmalıyız.
(bkz: Mysql, PDO, PostgreSQL, yapma hayrettin)

NoSQL Veritabanları: “no SQL” mi “Not Only SQL” mi “non-relational SQL” mi bilmiyorum. Bizler için yeni bir kavram; relational olmayan veritabanı mı olur text dosyası mı bu diyorsun ilk başta. Sonra da farkediyorsun ki; “eh işte öyle birşey” (Yanılmıyorum di mi. Neyse; genel olarak farkettiğiniz gibi “balık veren değil, olta nasıl yapılmalı” konusuna değinmeye çalışan bir yazı bu. Zaten bendeki balık kısıtlı.)  Hakkında yazılan tutorial’lardan olacak; PHP ve MongoDB arası bu aralar pek sıcak. mongodb’nin PHP için native driverını hızlı çıkartma daha sonra Doctrine’de mongodb adapter’ine yer verilmesi bu süreci hızlandırdı. Şu an için NoSQL ile bilgi ve tecrübe sahibi olmayı isteyen PHP’ci; MongoDB ile haşır neşir olmalı ilk başta gibi geliyor bana. Daha sonra, NoSQL demek sadece Document Store demek değilmiş; CouchDB’si varmış Cassandra’sı varmış diyebilir.
(bkz: NoSQL, MongoDB, CouchDB, Cassandra)

Sürüm Kontrol : CVS varmış ben onu görmedim; ilk svn (Subversion) ile tanıştım. Daha sonra mercurial ve git. Bana Git kullanmak zor gelmişti; hali hazırda “git clone” dan ileri gidemedim pek; ama bence ileriye o kalacak; onun üzerine birşeyler eklenecek ne eklenecekse. git-hub gibi bir koca oluşum var zaten hali hazırda. Bir PHP’ci de “version control system” nedir bilse fena olmaz; git “distributed”mış acaba ne oluyor öyle olunca diye kendi kendine sorsa (bence google’a sorsa daha iyi) güzel olur.
(bkz: subversion, mercurial, git, git-hub)

Diğerleri : Diğerlerini ben de pek bilmiyorum. Thrift var; facebook’un şeytan icatlarından :) RabbitMQ var; cron yerine mi kullanıyormuşuz; bu Erlang ile yazılmış her şey önemli diye bakıyorum artık zaten. Hudson var; büyük projelerin, büyük ekiplerin eninde sonunda “continuous integration” ile ilgili ne yapabiliriz derken karşılaştıkları çözümlerden.
Ayrıca “Comet” kavramı incelenmeli; apache ve php ile comet yapmaya çalışıp başarısız olmayı tecrübe etmeli. HTML5′de neler geliyormuş bir Php’ci yi etkiler mi acaba? sorusu sorulmalı. (Web Sockets ile etkileyecek umarım)
(bkz: Thrift, RabbitMQ, Hudson CI, Comet, NodeJS, Erlang, HTML5)

Sonuç olarak; internet eski internet olmadığı için; yazılım geliştirmek de eskisinden farklı. Reel bir sonuç olarak; bunları bilirseniz, sektörü yakından takip ederseniz, çok güzel işler yaparsınız.

Categories: Diğer Tags:

cassandra-vs-mongodb-vs-couchdb-vs-redis

December 31st, 2010 No comments

NoSQL’ler ile ilgili arasanız bulamayacağınız bir özet bilgiler tablosu. Harp olur darp olur diye pdf’ini de ekliyorum.

http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis

PDF

Categories: Diğer Tags:

Mysql hakkında herşey – maatkit

December 20th, 2010 No comments

Slow Query Log’ları nasıl parse ederiz diye arandım geçen hafta bir süre.. Google sağ olsun bir ton sonuç veriyor; o sonuçlar arasında önüme geleni denedim. mysqlsla, diye başarılı bir tool ile karşılaştım en sonunda, istediğimi de yaptı sağ olsun. Ama ana sayfasında; artık bu tool’a destek vermeyeceğini, community’de bir çok diğer tool olduğunu gidip onları kullanmamızı istediğini belirten bir açıklama vardı.

Önerdiği tool’lardan biri Maatkit. Gerçekten, İngilizler’in dediği gibi, “made my day”.

Ben toolkit içerisinden sadece birini kullandım; diğerlerini kullanıp görüşlerini yazmak da başkasına  kısmet olsun..

http://www.maatkit.org/doc/

  • mk-archiver Archive rows from a MySQL table into another table or a file.
  • mk-checksum-filter Filter checksums from mk-table-checksum.
  • mk-deadlock-logger Extract and log MySQL deadlock information.
  • mk-duplicate-key-checker Find duplicate indexes and foreign keys on MySQL tables.
  • mk-error-log Find new and different MySQL error log entries.
  • mk-fifo-split Split files and pipe lines to a fifo without really splitting.
  • mk-find Find MySQL tables and execute actions, like GNU find.
  • mk-heartbeat Monitor MySQL replication delay.
  • mk-index-usage Read queries from a log and analyze how they use indexes.
  • mk-kill Kill MySQL queries that match certain criteria.
  • mk-loadavg Watch MySQL load and take action when it gets too high.
  • mk-log-player Replay MySQL query logs.
  • mk-merge-mqd-results Merge multiple mk-query-digest reports into one.
  • mk-parallel-dump Dump MySQL tables in parallel.
  • mk-parallel-restore Load files into MySQL in parallel.
  • mk-profile-compact Compact the output from mk-query-profiler.
  • mk-purge-logs Purge binary logs on a master based on purge rules.
  • mk-query-advisor Analyze queries and advise on possible problems.
  • mk-query-digest Parses logs and more. Analyze, transform, filter, review and
    report on queries.
  • mk-query-profiler Execute SQL statements and print statistics, or measure
    activity caused by other processes.
  • mk-show-grants Canonicalize and print MySQL grants so you can effectively
    replicate, compare and version-control them.
  • mk-slave-delay Make a MySQL slave server lag behind its master.
  • mk-slave-find Find and print replication hierarchy tree of MySQL slaves.
  • mk-slave-move Move a MySQL slave around in the replication hierarchy.
  • mk-slave-prefetch Pipeline relay logs on a MySQL slave to pre-warm caches.
  • mk-slave-restart Watch and restart MySQL replication after errors.
  • mk-table-checksum Perform an online replication consistency check, or
    checksum MySQL tables efficiently on one or many servers.
  • mk-table-sync Synchronize MySQL tables efficiently.
  • mk-upgrade Execute queries on multiple servers and check for differences.
  • mk-variable-advisor Analyze MySQL variables and advise on po
  • Categories: Diğer Tags:

    Haftasonu vaktim olsa da..

    December 17th, 2010 No comments
    Categories: Diğer Tags:

    Garanti Cep Şubesi / SMS’siz işlem / Fail

    June 30th, 2010 4 comments

    Neden o şekilde düşünüldü bilmiyorum; belki sitenin ön yüzü update edilirken burası unutulmuştur.

    Özet olarak Garanti Cep Şubesi http://wap.garanti.com.tr’den sms’siz işlem yapabiliyoruz. Tabi bunun için cep telefonu ile giriş yapmamızın şart olmadığı aşikar.. Herhangi bir firefox “User Agent Switcher” ile header bilgisini değiştirerek cep şubesini kendi browserınızdan sms’siz sms’siz kullanabilirsiniz.

    Herhangi bir şifre hırsızlığı işleminde Garanti Bankası’nın bu konudaki tavrını ve hukuki yükümlülüğünü merak etmekteyim.

    Mysql Workbench – Nasıl yaptın..

    March 9th, 2010 7 comments

    Mysql için “Mysql Query Browser”dan daha iyi bir gui bulamadım. Ubuntu kullanıyorum o yüzden TOAD’ı denemedim, SQuirreL’i beğenmedim vs.. Aslında daha iyisini de aramam için çok fazla neden yoktu. Birkaç sıkıntısı vardı; sanırım schema tarafını ayrı connection da tutuyordu, uzun süre kullanmayınca time out oluyordu o taraf. Tekrar connection açması sırasında kasıyordu. Ya da bilmiyorum ama sonuçta bana hissettirdiği bir kasma vardı. Uzun query’leri renklendiricem diye kasarken programın nerdeyse pc’yi stand by a alma çabası da adamı deli ederdi.

    Neyse, girizgahın sebebi “neden mysql workbench’i denedim”e denk gelir umarım. Genelde iş ile ilgili yeni bir software çıkarsa denerim. Bir de bu sofware mysql tarafından çıkarılmış dertlerime deva olabilme imkanı olan özellikler içeriyordu. En müsait anımda denedim.

    Olay şöyle gelişti.
    1 – İndirdim.
    2 – Kurdum.
    3 – Çalıştırdım.
    4 – Kaldırdım.

    3 ile 4 arasında bir olay yaşanmış olmalı di mi ? Ne yaşandı aşağıda anlatıyım. Aşağıdaki görüntü programı ilk kurup ilk connection’ımı gerçekleştirdikten sonraki ekran.

    MySQL Workbench - Programı Çalıştırdım

    Bilmiyorum size gıcık geldi mi ama ben aşağıdaki yer kaplayan alandan rahatsız oldum ve acaba nasıl kaparım diye düşündüm. Heralde şu sağ üstteki “-” işareti olmalıydı.
    Ama değilmiş. “-” işaretinin üzerinde biraz durulunca hafiften başka bir işe yaradığını gösteriyor. Bakalım ne işe yarıyormuş. Tahmin ?
    eksiye basınca olanlar

    Benim üzerine gidince direk bastığım, bekliyip ne işe yaradığına bakmadığım bu buton şu işe yarıyormuş : “Delete Selected Schema“.
    Sonrasında karşıma gelen ekran:
    Are  you sure :)

    Ben bu programı ilk açtığımda çalıştığım şirketin yedek master veritabanına bağlanmıştım. Bu uyarıyı o ekranda görmüş ve “sadece o aşağıda gereksiz yer kaplayan” alanı kapatmak için eksi’ye tıklamıştım. Uyarının gereksiz bir uyarı olduğunu düşünüp reflex olarak seçiliyi seçsem şu an bu yazıyı yazmak yerine bambaşka bir halde olabilirdim. (Muhtemelen : “Tahsin abi kurtar abi…”) Mouse’la gidip tıklamaya da gerek yok; enter, space ve hatta… ESC‘e bassaydım; sonuç yine hüsrandı.
    hüsran

    Sonuç : Dikkat etmek lazım. Tedbirli olmak lazım. Güvenmemek lazım.

    Categories: İş Hayatı, Web Siteleri Tags:

    Gmail ve noktaları

    March 8th, 2010 No comments

    Bu gmail’in hastayiz ailecek. Bir çok küçük ama sevimli hareketleri olur; pek göze sokulmadan zamanı geldiğinde farkederiz.

    Bunlardan biri de gmail adresinizde “.” (yazıyla “nokta”) işaretinin kullanımı. Gmail bu nokta karakterini “sallamaz”. kucuk.adam@gmail.com adresi ile register ettiysem üyeliğimi; onu register mail olarak kaydeder; sağa sola mail atarken adresini öyle gösterttirir ama kucukadam@gmail.com, kucu.kadam@gmail.com kuc.uk.a.dam@gmail.com adreslerinden login olmama engel olmaz. Kısaca gmail adresinizde nokta boş karakter ile replace edilir.

    Eee ? Eee’si şu.. Ben bir site sahibiysem siteme üye olan üyeliklerin her birinin email adresinin unique olmasını isterim. Öyle zart diye üyelik alınan 10minutemail türevi sitelerden üyelik yapılmasını istemem. Ama gmail’in bu olayı ile beraber bir 10minutemail adreslerinden farkı kalmıyor. k…..ucukadam@gmail.com adresi ile bile üyelik yaratıp aynı gmail adresini kullanabiliyor olabileceğim.

    Çok da önemli değil ama yine de gmail’in bu hizmetinin sadece kucukadam@gmail adresi kayıtlı iken kucuk.adam@gmail adresinin başkası tarafından register edilememesi (login tarafında değil register tarafında kontrol) şeklinde olmasını dilerdim. Tabi böyle olunca kucuk.adam@gmail adresine atılan postanın kucukadam@gmail adresine düşmeyeceğini varsayıyorum.

    Sonuç olarak unique mail adresi üyeliği istemeyen bir oluşum içerisindeyseniz, gmail adreslerine dikkat edin.

    Başka sonuç olarak; siteye ikinci üyelik açmak isterseniz yeni email adresi register etmeyin, gmail adresininizin bi tarafına nokta koyun gitsin.

    Categories: Diğer Tags: ,
    Sharing Buttons by Linksku