Friday, June 8, 2012
Tumblr Büyük Mysql Yapıları Jetpants aracını dün açık kaynak yaptı
Sunday, May 6, 2012
IndexTank - Real-time Search and Indexing System
Linkedin epey bir sure IndexTank'i opensource yapmisti [1]. IndexTank opensource olmadan once ElasticSearch ile hayranlikla cokca zaman gecirmisitim. Ve su kadarini soyleyebilirim ikisini de search servisi olarak kullanan bir son kullanici olarak IndexTank'da daha iyi olan bir ozellik goremedim.
Ikisi de Apache Lucene uzerine calisiyor. Ancak IndexTank oldukca eski bir surumunu kullaniyor. Gercekten eski bir surum. Ayar dosyasinda 3.0 yaziyor [2] ki su anki Lucene cekirdegi surumu 3.6 [3].
ElasticSearch guide sayfasi [4] alisilagelmis bir dokumantasyon sayfasi gibi olmasa da oldukca ise yarayan egelenceli bir sayfa. ElasticSearh aktif bir mailliste de sahip. IndexTank icin yeterli bir community ve dokumantasyona ulasamadim. Cunku http://indextank.com/ sayfasi aktif degil uzun suredir. Sadece bir linkedin grup sayfasi var ve oldukca yetersiz.
Hemen kurup deneyebilirsin : https://github.com/linkedin/indextank-engine
Kendi performans testlerinizi kendiniz yapabilirsiniz ama tek makine uzerinde kiyaslama yapmak dogru olmayabilir. Cunku IndexTank cloud tabanli bir yapida basarisini kanitlamis bir sistem olarak tanitiliyor.
maven ile derlemeniz gerek. Yani eger sahip degilseniz once maven kurmalisiniz.
Indirdikten sonra
mvn compile package assembly:single
calistirmaniz yeterli artik "target/" altinda olusan jar dosyasini calistirabilirsiniz su sekilde
java -cp target/indextank-engine-1.0.0-jar-with-dependencies.jar com.flaptor.indextank.api.Launcher
Java, python, ruby ve php icin onerilen Api client'lar sunlar
Java: https://github.com/flaptor/indextank-java
Python: https://github.com/flaptor/indextank-py
Ruby: https://github.com/flaptor/indextank-rb
PHP: https://github.com/flaptor/indextank-php
Veri alisverisi yine json formatinda. github sayfasinda birkac ornek bulabililirsiniz.
1. "IndexTank is now open source!" : http://engineering.linkedin.com/open-source/indextank-now-open-source
2. https://github.com/linkedin/indextank-engine/blob/master/pom.xml#L19
3. Apache Lucene Releases : http://lucene.apache.org/core/downloads.html
4. ElasticSearch Guide : http://www.elasticsearch.org/guide/
Ikisi de Apache Lucene uzerine calisiyor. Ancak IndexTank oldukca eski bir surumunu kullaniyor. Gercekten eski bir surum. Ayar dosyasinda 3.0 yaziyor [2] ki su anki Lucene cekirdegi surumu 3.6 [3].
ElasticSearch guide sayfasi [4] alisilagelmis bir dokumantasyon sayfasi gibi olmasa da oldukca ise yarayan egelenceli bir sayfa. ElasticSearh aktif bir mailliste de sahip. IndexTank icin yeterli bir community ve dokumantasyona ulasamadim. Cunku http://indextank.com/ sayfasi aktif degil uzun suredir. Sadece bir linkedin grup sayfasi var ve oldukca yetersiz.
Hemen kurup deneyebilirsin : https://github.com/linkedin/indextank-engine
Kendi performans testlerinizi kendiniz yapabilirsiniz ama tek makine uzerinde kiyaslama yapmak dogru olmayabilir. Cunku IndexTank cloud tabanli bir yapida basarisini kanitlamis bir sistem olarak tanitiliyor.
maven ile derlemeniz gerek. Yani eger sahip degilseniz once maven kurmalisiniz.
Indirdikten sonra
mvn compile package assembly:single
calistirmaniz yeterli artik "target/" altinda olusan jar dosyasini calistirabilirsiniz su sekilde
java -cp target/indextank-engine-1.0.0-jar-with-dependencies.jar com.flaptor.indextank.api.Launcher
Java, python, ruby ve php icin onerilen Api client'lar sunlar
Java: https://github.com/flaptor/indextank-java
Python: https://github.com/flaptor/indextank-py
Ruby: https://github.com/flaptor/indextank-rb
PHP: https://github.com/flaptor/indextank-php
Veri alisverisi yine json formatinda. github sayfasinda birkac ornek bulabililirsiniz.
1. "IndexTank is now open source!" : http://engineering.linkedin.com/open-source/indextank-now-open-source
2. https://github.com/linkedin/indextank-engine/blob/master/pom.xml#L19
3. Apache Lucene Releases : http://lucene.apache.org/core/downloads.html
4. ElasticSearch Guide : http://www.elasticsearch.org/guide/
Thursday, April 26, 2012
sketchpad - processing.js ve etherpad birlesince
processing.js ile web canvas ile animasyonlar yaparken etherpad destegi ile hem soyallik hem de ortak kodlamayi sagliyor. Profesyonel bir arac degil ancak processing.js'yi cok kullanan biriyseniz ayrica seveceksiniz.
http://sketchpad.cc
Galeriye de bir goaztin tabi
http://studio.sketchpad.cc/sp/padlist/all-portfolio-sketches
http://sketchpad.cc
Galeriye de bir goaztin tabi
http://studio.sketchpad.cc/sp/padlist/all-portfolio-sketches
Wednesday, April 25, 2012
Kötü Mail ve Siteler Listem
Bu listedikiler gerçekten kötü ve internetten yok edilmesi gerek. Sitelerinize üye alımlarda kesinlikle izin vermeyin. Özellikle google'ın şu duyurusundan sonra http://googlewebmastercentral.blogspot.com/2012/04/another-step-to-reward-high-quality.html
Wednesday, March 28, 2012
Close Mongo Connections!
MongoDb makinemde mongostat ile baktığımda gördüğüm connection sayısı 500 civarındaydı.
faults locked % idx miss % conn
0 0.5 0 576
0 2.7 0 579
0 0.6 0 580
0 0.3 0 583
0 2.7 0 585
0 0.4 0 586
PHP tarafında sadece kapatmadığım mongodb bağlantılarını kapatarak bu sayının 30'a düştüğünü gördüm. Get performansında da beklediğim üzere büyük artış oldu.
Şu an da mongostat çıktısı
qr|qw ar|aw conn time
0|0 0|0 34 10:40:10
0|0 0|0 34 10:40:11
0|0 0|0 35 10:40:12
0|0 0|0 35 10:40:13
0|0 0|0 35 10:40:14
faults locked % idx miss % conn
0 0.5 0 576
0 2.7 0 579
0 0.6 0 580
0 0.3 0 583
0 2.7 0 585
0 0.4 0 586
PHP tarafında sadece kapatmadığım mongodb bağlantılarını kapatarak bu sayının 30'a düştüğünü gördüm. Get performansında da beklediğim üzere büyük artış oldu.
Şu an da mongostat çıktısı
qr|qw ar|aw conn time
0|0 0|0 34 10:40:10
0|0 0|0 34 10:40:11
0|0 0|0 35 10:40:12
0|0 0|0 35 10:40:13
0|0 0|0 35 10:40:14
Wednesday, March 7, 2012
Movie recommendations and more via MapReduce and Scalding
Scala gördüğüm en güzel map-reduce framewok.
Küçük bir örnek :
Movie recommendations and more via MapReduce and Scalding : http://disqus.com/forums/edwinchen/edwin_chens_blog_movie_recommendations_and_more_via_mapreduce_and_scalding_58/trackback/
İrdeleyin : https://github.com/twitter/scalding
Wednesday, February 29, 2012
Bu hafta radarima takilanlar - 3 link (httpie, gravity, arya)
Bu hafat sunlar gozume carti ve inceledim
Python-powered HTTP CLI for humans : https://github.com/jkbr/httpie
Gravity unlocks the Interest Graph : http://www.gravity.com/
Mongodb Power web search index : https://github.com/SupermanScott/Arya
Optimizing Object IDs : http://www.mongodb.org/display/DOCS/Optimizing+Object+IDs
Python-powered HTTP CLI for humans : https://github.com/jkbr/httpie
Gravity unlocks the Interest Graph : http://www.gravity.com/
Mongodb Power web search index : https://github.com/SupermanScott/Arya
Optimizing Object IDs : http://www.mongodb.org/display/DOCS/Optimizing+Object+IDs
Monday, February 27, 2012
Derhal Macport'tan Hombrew'e Gecin
Macports ile paket yonetmek degil paket karistirmak mumkun oluyor sadece.
Silmesi de ayri dert olabiliyor. Henuz Macports ile hic bir paket kurmasaniz da bir takim bagimliliklari yuzunden silinmeyebiliyor su sekilde bir "-f" parametresi ile force edebilirsiniz.
sudo port -f uninstall installed
Tamamen silinmesi icin
sudo rm -rf /Applications/DarwinPorts
sudo rm -rf /Applications/MacPorts
sudo rm -rf /Library/LaunchDaemons/org.macports.*
sudo rm -rf /Library/Receipts/DarwinPorts*.pkg
sudo rm -rf /Library/Receipts/MacPorts*.pkg
sudo rm -rf /Library/StartupItems/DarwinPortsStartup
sudo rm -rf /Library/Tcl/darwinports1.0
sudo rm -rf /Library/Tcl/macports1.0
sudo rm -rf ~/.macports
silmeli ve son olarak dikkatlice ve yedeklerinizi alarak!!!
sudo rm -rf /opt/local
de kalan dosyalari da silmeli
ve sonunda
Ardindan da derhal homebrew e merhaba
/usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"
Irdeleyin : https://github.com/mxcl/homebrew/wiki/installation
Silmesi de ayri dert olabiliyor. Henuz Macports ile hic bir paket kurmasaniz da bir takim bagimliliklari yuzunden silinmeyebiliyor su sekilde bir "-f" parametresi ile force edebilirsiniz.
sudo port -f uninstall installed
Tamamen silinmesi icin
sudo rm -rf /Applications/DarwinPorts
sudo rm -rf /Applications/MacPorts
sudo rm -rf /Library/LaunchDaemons/org.macports.*
sudo rm -rf /Library/Receipts/DarwinPorts*.pkg
sudo rm -rf /Library/Receipts/MacPorts*.pkg
sudo rm -rf /Library/StartupItems/DarwinPortsStartup
sudo rm -rf /Library/Tcl/darwinports1.0
sudo rm -rf /Library/Tcl/macports1.0
sudo rm -rf ~/.macports
silmeli ve son olarak dikkatlice ve yedeklerinizi alarak!!!
sudo rm -rf /opt/local
de kalan dosyalari da silmeli
ve sonunda
Ardindan da derhal homebrew e merhaba
/usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"
Irdeleyin : https://github.com/mxcl/homebrew/wiki/installation
Sunday, February 26, 2012
Sayfa Istatistiklerinde Neden MongoDb Kullanmali
Istatistik verileri icin ihtiyaciniz olan sey hizli bir yazma islemi ve bolca disktir ;)
Disk konusunda kolay genisletilebilmesi ve distrubuted yapisinin kolay kontrol edilmesinin yani sira su uc madde yuzunden sayfa goruntuleme gibi istatistiklerinizi MongoDb'de kullanmaniz icin iki temel neden
Disk konusunda kolay genisletilebilmesi ve distrubuted yapisinin kolay kontrol edilmesinin yani sira su uc madde yuzunden sayfa goruntuleme gibi istatistiklerinizi MongoDb'de kullanmaniz icin iki temel neden
- select - edit - update seklinde bir kullanimdansa $inc ile tek islem yapmaniz yeterlidir. Tek baglanti tek islem tek update. Klasik yontemle de tek insert yaparak devasa buyuklukte gunluk loglar olusturabilirsiniz tabi ardindan bunlari islersiniz. Neden olmasin. Ancak mongodb $inc performansindan vazgecmek istemezsiniz.
- write islemleri asenkron gerceklestiginden oldukca hizli gerceklesecektir ve loglama hizini dusurmeyecektir.
Sunday, February 19, 2012
MongDb Disk Temizligi
Ozellikle disk alaninizin neredeyse yarisini kaplayan bir veritabaniniz varsa collection sildiktan sonra mutlaka
calistirmayi unutmayin yoksa bos yere sildiginiz collection icin ayrilmis alan diskinizde yer kaplayacak.
Mevzu uzerine sunu da okuyun tabi http://www.mongodb.org/display/DOCS/Excessive+Disk+Space
db.repairDatabase()
calistirmayi unutmayin yoksa bos yere sildiginiz collection icin ayrilmis alan diskinizde yer kaplayacak.
Mevzu uzerine sunu da okuyun tabi http://www.mongodb.org/display/DOCS/Excessive+Disk+Space
Tuesday, February 14, 2012
David Zuelke : Large-Scale Data Processing With Hadoop and PHP
Kabaca map reduce nedir sorusunu sorduysaniz once bu linkBu sunum da David Zuelke'nin son 6 aydir her konferansta sundugu ve benim de cok begendigim bir cirpida Hadoop-PHP sunumu : Large-Scale Data Processing With Hadoop and PHP (PHPBNL2012 2012-01-27)
View more presentations from David Zuelke
MongoDb ile Aşırı Disk Kullanımı ve Sonrasında Optimizasyon
Senaryomuz su :
1. db.copyDatabase("db1","db1back")
2. use db1
3. db.dropDatabase()
4. db.copyDatabase("db1back","db1")
5. use db1back
6. db.db1()
19G lik veri icin ortalama yarim saat surdugunu ve hakli olarak bu sirada gelen insert ve find komutlarina cevap vermedgini de ekleyim.
Ek olarak okunmalidir ki http://www.mongodb.org/display/DOCS/Excessive+Disk+Space
MongoDb diskiniz %88 doldu. Makineye yeni bir dik takamiyorsunuz. Gereksiz buyuk boyutlu collectionlar var ve siz bu gereksiz collection'lari sildiniz.Bu durumda veri tabanina repair komutu vermek gerekecek ancak bu da kullanimda olan disk alanini kadar bos alana ihtiyaca ihtiyac duyacaktir ve hata verecektir. Bu durumda yapilmasi gereken sey (eger bir disk ekleyemiyorsaniz) elinizdeki var olan datasinin gercekte diskin yarisindan kucuk bir alana sigdigini dusundugunuz veritabanina :
db.col1.drop()
db.col2.drop()
db.col3.drop()
Veri buyuklugunun neredeyse yaridan fazlasini sildiginizi dusunurken hala %88 doluluk orani sizi sasirtti zira mongodb bir takim disk ve indexleme performansi kurallari geregi sildiginiz datanin kapladigi alani diskte hala ayrilmis olarak tutar. Bunun icin collection'lari silmeden once bosaltip ardinddan db.col1.runCommand("compact") calistirmaniz gerekirdi ama artik silindi ve bunu calistirinca hata veriyor (ve tabiki ayni adda bos bir collection acip calistirmak anlamsiz olacaktir).
1. db.copyDatabase("db1","db1back")
2. use db1
3. db.dropDatabase()
4. db.copyDatabase("db1back","db1")
5. use db1back
6. db.db1()
19G lik veri icin ortalama yarim saat surdugunu ve hakli olarak bu sirada gelen insert ve find komutlarina cevap vermedgini de ekleyim.
Ek olarak okunmalidir ki http://www.mongodb.org/display/DOCS/Excessive+Disk+Space
BOM is evil
\ufeff olarak da kendini gosterebilir tabi. Baş gizli düşmanınızdır unutmayın derim.
Özellikle de bir çeşit api hizmeti veriyorsanız "utf8" i BOM'suz kaydedin aksi halde servisinizden faydalanacak olan istemciler size bolca invalid format hatasi bildirir (xml veya json).
Siz de çıktılarınızı doğru gönderdiginizi iddia edip hatanin kaynagini aradikca beyhude bir ugras isine girmis olursunuz.
Siz daima UT-8 kaydederken BOM'suz kaydedin
Konuyu irdeleyin
BOM : http://en.wikipedia.org/wiki/Byte_order_mark
Unicode : http://en.wikipedia.org/wiki/Unicode
UTF-8 : http://en.wikipedia.org/wiki/UTF-8
Özellikle de bir çeşit api hizmeti veriyorsanız "utf8" i BOM'suz kaydedin aksi halde servisinizden faydalanacak olan istemciler size bolca invalid format hatasi bildirir (xml veya json).
Siz de çıktılarınızı doğru gönderdiginizi iddia edip hatanin kaynagini aradikca beyhude bir ugras isine girmis olursunuz.
Siz daima UT-8 kaydederken BOM'suz kaydedin
Konuyu irdeleyin
BOM : http://en.wikipedia.org/wiki/Byte_order_mark
Unicode : http://en.wikipedia.org/wiki/Unicode
UTF-8 : http://en.wikipedia.org/wiki/UTF-8
Tuesday, January 31, 2012
memcache-top
Memecache sunucularının genel durumuna göz atmak için ufak bir script kullanmaya başladım. Çok "handy"
Zaten kendisine şöyle diyor : "perl command-line memcached stat reporter, top-like output"
Şuradan : http://code.google.com/p/memcache-top/
Şöyle kullanıyorum
memcache-top --sleep 1 --instances 192.168.200.151,192.168.200.152,192.168.200.153,192.168.200.154,192.168.200.157,192.168.200.158
INSTANCE USAGE HIT % CONN TIME EVICT/s READ/s WRITE/s
192.168.200.151:11211 89.1% 77.0% 31 1.0ms 0.0 213.3K
192.168.200.152:11211 89.0% 70.9% 33 1.0ms 0.0 198.5K
192.168.200.153:11211 88.7% 84.7% 24 1.0ms 0.0 171.4K
192.168.200.154:11211 59.6% 60.6% 39 0.9ms 0.0 196.7K
192.168.200.157:11211 87.9% 49.8% 53 0.8ms 4.0 243.7K
192.168.200.158:11211 88.4% 57.0% 29 0.8ms 0.0 176.4K
Zaten kendisine şöyle diyor : "perl command-line memcached stat reporter, top-like output"
Şuradan : http://code.google.com/p/memcache-top/
Şöyle kullanıyorum
memcache-top --sleep 1 --instances 192.168.200.151,192.168.200.152,192.168.200.153,192.168.200.154,192.168.200.157,192.168.200.158
INSTANCE USAGE HIT % CONN TIME EVICT/s READ/s WRITE/s
192.168.200.151:11211 89.1% 77.0% 31 1.0ms 0.0 213.3K
192.168.200.152:11211 89.0% 70.9% 33 1.0ms 0.0 198.5K
192.168.200.153:11211 88.7% 84.7% 24 1.0ms 0.0 171.4K
192.168.200.154:11211 59.6% 60.6% 39 0.9ms 0.0 196.7K
192.168.200.157:11211 87.9% 49.8% 53 0.8ms 4.0 243.7K
192.168.200.158:11211 88.4% 57.0% 29 0.8ms 0.0 176.4K
Saturday, January 7, 2012
#mongotips 4 - list mongo collections and data sizes
db.getCollectionNames().forEach( function(c){ size = db[c].stats().storageSize; print(db[c] + ' ' +size/1024/1024) } )ile tek tek collection'lari ve boyutlarini listelemis olursunuz. Ama suna dikkat cekeyim; toplam boyut mongoDb dataninzin diskte kapladigi alani vermeyebilir. Ozellikle de cok fazla delete islemi yapmissaniz disk alani bosaltilmamis ancak ayrilmis olabilir. Bu sizi yaniltmasin. Bu kullanilmayan alanlari compact komutu ile optimize edebilirsiniz.
Friday, January 6, 2012
mongodb c++ driver on debian etch
sudo scons
scons: Reading SConscript files ...
NameError: name 'AddOption' is not defined:
Eğer debian etch kullanıyorsanız "scons" ile mongodb driver kurulumu hatalar verecektir.
Çözüm için
1. scons son sürümünü inidirn http://www.scons.org/ ve kurun "make install"
2. libboost tüm paketlerini kurun " sudo apt-get install libboost* "
Sunday, January 1, 2012
Google App Engine "Error 409" Hatası Çözümü
Su hata ile karsilastim
Error 409: --- begin server output ---
Another transaction by user xxxx is already in progress for app: xxxx, version: 1. That user can undo the transaction with "appcfg rollback".
--- end server output ---
Aslinda zaten nasil cozebileceginiz cikitda yaziyor. Sadece appcfg'yi bulmaniz ve rollback komutu ile calistirmaniz gerek. Proje dizinin bir ust konumunda su sekilde calistirabilirsiniz :
python /usr/local/bin/appcfg.py -verbose --no_cookies --email=tayyar.besik@gmail.com --passin rollback xmpp-bot
Monday, December 26, 2011
Mongotips #3 distinct count
bir alana göre unique count hesaplamak için uzun fonksiyonlar yazanları gördüm. Eğer alanınız indexlenmiş ise bence şöyle yapmanız daha kolay olurdu
db.operationsCollection.distinct("username").length;
Tuesday, December 20, 2011
Google Reader çok okuduklarım
| Subscription | # Read | ||
|---|---|---|---|
| Hacker News | 1,761 | ||
| TechCrunch | 571 | ||
| Mashable! | 371 | ||
| NYT > Science | 296 | ||
| The Next Web | 293 | ||
| NYT > Movies | 255 | ||
| 9to5Google | 216 | ||
| Sosyal Medya | 190 | ||
| myNoSQL | 140 | ||
| Webrazzi | 133 |
Thursday, December 1, 2011
Mongotips #2 - Generate Unigrams in Mongo
Stackoverflow'daki bu başlık özellikle mongo ve kelime-kelime kökleri üzerine çalışırken dikkatimi çekti :
Most efficient way to generate a list of Unigrams from a text field in MongoDB - Stack Overflow http://bit.ly/vNcEvU
Subscribe to:
Posts (Atom)