Thursday, November 3, 2011

bazen olur 'pecl.php.net is using a unsupported protocol error'

mongo pecl eklentisi kurarken aldım bu hatayı
“pecl.php.net is using a unsupported protocol” .
Aklıma ilk gelen pecl update-channels yapmak oldu ama işe yaramadı.

Fakat sonra biraz arayınca /usr/lib/php/.channels daki dosyaları silip tekrar  pecl update-channels  yapınca düzeldi. 

Monday, October 31, 2011

Term Extraction with Yahoo Api


Aslında bir kaç kez kapatıldı ve açıldı bu proje [1]. Şimdi günde ip başına  5.000 request sınırlama ile gayet güzel çalışıyor. Yahoo Term Extractor aslında temel amacı verdiğiniz bir metini etiketlemek.

Bir test yaptım 1000 karakterlik bir Türkçe metni 5000 defa gönderdim ve ortalama cevap süresi genellikle 0.5 sn ile 0.4 sn arasındaydı.


1. http://developer.yahoo.com/search/content/V1/termExtraction.html

Sunday, October 30, 2011

ZendCon 2011 Notları I, Learning CouchDB - Bradley Holt

İlgi çekici bir sunumdu. MongoDb varken CocuhDB kullanmaya başlayacağımı pek sanmıyorum [1] ancak yine de tanışmış olduk CouchDB ile.
Bradley Holt 1 saatlik sunumda [2] hem CouchDb'yi bizimle tanıştırdı hem de örnekler yaptı. Zaman kısa olduğundan kendi makinelerimize couchdb kurmaktansa http://www.iriscouch.com/ [3] üzerinden ücretsiz bir hesap açıp denemelerimizi oradan yaptık. Sunumdan aldığım notlar ile derlediğim ama henüz bitmemiş olan :) Türkçe sunumum aşağıda [4] :




1. Comparing MongoDB and CouchDB : http://www.mongodb.org/display/DOCS/Comparing+Mongo+DB+and+Couch+DB

2. Learning CouchDB - http://www.slideshare.net/bradley.holt/zendcon-2011-learning-couchdb

3. Iris Couch provides easy hosted CouchDB - http://www.iriscouch.com/

4. Sunuma doğrudan link : https://docs.google.com/presentation/pub?id=1xXQk0Jc8XqPHzO0sdb418U8OUgugFjYD0fhq-tTCbuQ&start=false&loop=false&delayms=15000

Thursday, October 20, 2011

CouchDb'ye Hızlıca Bakın

CouchDb merak edip şöyle bir bakmak ve denemek isterseniz hiç bir şey kurmadan iriscouch'dan [1] ücretsiz ve tatmin edici bir couchdb hizmeti alabileceğinizi unutmayin.

Tabi php+couchdb hızlı giriş klavuzu da faydalı olacaktır [2]
Ve bu geçen seneki ZendCon'dan alınan podcast de önerdiğim bir giriş klavuzu  niteliğinde [3]  

1. http://www.iriscouch.com/ 
2. http://www.slideshare.net/david.coallier/an-introduction-to-couchdb
3. http://devzone.zend.com/article/11583-The-ZendCon-Sessions-Episode-30-Introduction-to-CouchDB-with-PHP

Ancak şunu da belirteyim MongoDb varkan CouchDb'yi kullanacağımı hiç sanmıyorum.
Bu 'MongoDb vs CouchDb' en sevdiğim karşılaştırma
http://www.mongodb.org/display/DOCS/Comparing+Mongo+DB+and+Couch+DB




Wednesday, October 19, 2011

ZenCon 2011'de en sevdiğim sunum


Az önce hadoop sunumundan çıktık. David Z. harika bir sunum hazırlamış.

Large-Scale Data Processing with Hadoop and PHP


Güzel bir demo ile noktalanan sunumun aynısı (ancak başka konferans için hazırlanmış olanı) şurada

http://t.co/w2HPgTMm

Thursday, October 6, 2011

Neo4j auto-indexing

Unutmayım diye not düşüyorum : 

Neo4j kullanalı bir aç gün oluyor ve rest api ile eklediğim her node için indexleme işlemini gerçekleştirmem gerektiğini sanıyordum ki lucene tabanlı indexer'ına auto_index atmak mümkün olabiliyormuş.
Şöyleki conf/neo4j.properties configürasyon dosyasına şu tarılar eklenmeli ve neo4j tekrar çalıştırılmalı

node_keys_indexable=name,phone
relationship_keys_indexable=since
node_auto_indexing=true
relationship_auto_indexing=true

Ardından node_auto_index üzerinden search atılarbilir ama exact match olmalı. Ben bunu "select by property" amacıyla kullanıyorum.

Örneğin
http://localhost:7474/db/data/index/node/node_auto_index/fbid/999761223232

fbid bir propery ve exact match halinde ilgili node'u getirecektir.

Auto-indexing konusunda Rest api dokumantasyonu





Friday, September 30, 2011

The IMDB Api

IMDB gibi bir data cevherinin api'sinin olmaması tam anlamıyla bir facia. Datalarını kullanmamız için sunduğu metot ise daha da çileden çıkarıcı http://www.imdb.com/interfaces#plain

Third party bir api olarak bunu [http://www.deanclatworthy.com/imdb/] buldum.
Şimdilik işe yarıyor ama ben şu an sadece api görevi görecek ve old school tekniklerle imdb search, movie, artist sayfalarından regexle data alacak bir class yapıp kendi üst apimi yapmayı düşünüyorum.

Tuesday, August 23, 2011

delicious apisi ile link tagliyorum

delicious'un son durumunu bilmiyorum, kapanacak mı ne zaman kapanacak emin değilim ama elimdeki bazı linkleri onunla tagliyorum
Aşağıdaki official apisi bana bunu sağlıyor
http://feeds.delicious.com/v2/json/urlinfo/data?url=http://www.webrazzi.com

[
{
"hash":"b41ae64e2e80ba1806245c61179ad903",
"title":"Webrazzi",
"url":"http:\/\/www.webrazzi.com\/",
"total_posts":209,
"top_tags":
   {"blog":77,"web2.0":54,"internet":36,"web":33,"technology":29,"webrazzi":23,"news":19,"haber":17,"blogs":14,"webdesign":13}
}
]

Thursday, August 18, 2011

Google Profanity ile istenmeyen kelime filtreleme meselesi

wdyl.com açılalı epey oldu. wdyl altında bir basit servis ve google'ın resmi bir apisi olan profanity api ile bir kelimenin istenmeyen ifade olup olmadığını anlayabilirsiniz.
"xxx"
"porno"
gibi ifadeler

Kullanımı basit
http://www.wdyl.com/profanity?q=ankara
"q" parametresine kelimenizi verin "true" veya "false" alacaksınız. "true" olması istenmeyen bir kelime olması demektir.
örnek çıktı (json formatında veriyor)

http://www.wdyl.com/profanity?q=ankara
{"response": "false"}


http://www.wdyl.com/profanity?q=porno
{"response": "true"}


As Wade notes, a simple snippet of PHP code can be used with apps via a JSON call to query whether or not Google thinks any given text contains rude words.
meseleyi irdeleyin http://labs.phurix.net/posts/googles-official-profanity-api


Tuesday, August 16, 2011

ElasticSearch Geo Location Search

Daha önce ElasticSearch kullanmaya başladığımdan ve gelişmiş bir kaç özelliğinden bahsetmiştim.

ElasticSearch gelişmiş filtrelemesi ile son derece performanslı olarak polygonal geo search ve distance calculation yapabildim. Aşağıdaki örnekte ayrıca "distance" parametresi verilerek ilgili uzaklıktaki nokta kayıtları da getirilebiliyor. Test için oluşturduğum ElasticSearch indexinde 300.000 rasgele nokta vardı. Sorgu hızını raporlamadım ancak genellikle 0.01 - 0.03 sn civarında cevap aldım. ElasticSearch kurlu makineye ram'i az ayırdığımdan cevap süresi biraz uzamış oldu. Genel oalrak performansını sevdim ancak. Location bazlı aramalar için de ideal bir search engine.

{
    "filtered" : {
        "query" : {
            "match_all" : {}
        },
        "filter" : {
            "geo_polygon" : {
                "place.location" : {
                    "points" : [
                        {"lat" : 40, "lon" : -70},
                        {"lat" : 30, "lon" : -80},
                        {"lat" : 20, "lon" : -90}
                    ]
                }
            }
        }
    }
}


Meseleyi irdeleyin
http://www.elasticsearch.org/guide/
http://www.elasticsearch.org/blog/2010/08/16/geo_location_and_search.html

Friday, August 12, 2011

ElasticSearch advanced search

ElasticSearch search engine olarak hala gözümde son derece esnek ve hızlı. Benzer içerikleri veya duplicate içerikleri bulmak için de gayet hızlı bir tool olarak kullanıyorum.

ElasticSearch ileri düzey filtreme teknikleri var bunlardan birisi de FLT (Fuzzy Like This Query) . İleri düzey çünkü zaten var olan More Like This filtresinin Levenstain ile geliştirilmiş hali gibi.

Text verileriniz içinde benzer olanları veya duplicate olanları bulmak için oldukça ideal.

Örnek bir sorgu

{
"fuzzy_like_this" : 

  {
    "fields" : ["blog.title", "blog.tags"],
    "like_text" : "futbol ve sinema hakkında",
    "max_query_terms" : 20, "min_similarity" : 0.5
  }
}







Meseleyi irdeleyin : 


Thursday, August 11, 2011

error: Setup script exited with error: command 'gcc' failed with exit status 1

python modülleri kurarken, derlerken bu hata sıkça çıkabilir

error: Setup script exited with error: command 'gcc' failed with exit status 1

Bu durumda 
sudo apt-get install python-dev

python-dev kurmanız gerekmekte.

Wednesday, August 10, 2011

TOR force renew ip

TOR kullanırken ip adresimi tekrar yenileme ihtiyacım oldu.
İlk önce terminalden tor'un bendeki portu olan 9500 portuna bağlanıp burada bahsedildiği gibi  newnym komutu gönderdim. Bu ip adresimi yenilemeye yetmedi. Tek yapmam gereken toru yeniden başlatacak bir bash script dosyası yazmaktı aslında :

sudo /etc/init.d/tor restart

Yeniden başlatmanız yeni ip almanız için yeterli.

Telnet ile bağlanıp yenile komutu göndermek için önce torrc dosyanızı düzenlemelisiniz.

sudo vi /etc/tor/torrc

dosyada bu satırı bulun ve başındaki "#" işaretini kaldırın

#ControlPort 9051

Artık telnet ile bağlanabilir ve yenile diyebilirsiniz.


telnet 127.0.0.1 9051
AUTHENTICATE
signal NEWNYM
quit


veya bunu bir sh dosyasına yazar ve öyle çalıştırısınız şöyleki


#!/usr/bin/expect -f
# telnet into tor and get clean path using expect

spawn telnet 127.0.0.1 9051
expect "Escape character is '^]'."
send "AUTHENTICATE\r"
expect "250 OK"
send "signal NEWNYM\r"
expect "250 OK"
send "quit\r"



Konuyu irdeleyin https://trac.torproject.org/projects/tor/wiki

Saturday, July 30, 2011

Çalınan JSTOR dökümanlarından çıkan istatistiksel veriler ile ne yapılır

Geçen haftalarda 18,592 JSTOR makalesi "çalınmıştı" ve bir çok torrent listesinde yerini almıştı. Bu kadar fazla dokuman kitlesini ustelikte duzensiz bir sekilde paketlenmis bir kalabalıgı indirmek kimin işine yarar diye ben de düsünmedim degil. Tabi olayın özünde 'bilimsel calismalar satılamaz' ilkesi vardi.

Ancak mkrecny bunlarla güzel bir istatistik çıkarmış.

  • Ortalama cümle uzunluğu daha kısa olan dokümanlar daha fazla alıntılanmış.
  • Daha az unique kelime içeren dokümanlar  daha fazla alıntılanmış.
  • Daha fazla alfadebik olmayan semboller içeren (rakamlar dahil) dokumanlar daha fazla alıntılanmış.


meseleyi irdeleyin : mkrecny.com/entry/15/

Tuesday, July 5, 2011

Google Suggest Api

Aslında official olarak bir api değil.
Şu şekilde epey kullandım
http://www.google.com/complete/search?hl=tr&client=suggest&js=true&q=test

hl parametresi dil ayarıdır.

Bir kaç gündür test ediyorum ve fark sanırım bir gün için bir ip'ye 50.000 sorgu kadar limit verilmiş. Çünkü artık 403 hatası vermeye başladı.

Ayrıca Yahoo suggest de var o ise günlük bir IP'ye 5.000 sorgu limiti veriyor ve google kadar güzel sonuclar vermiyor

Friday, July 1, 2011

Artık Google Appscript

Çeşitli medya takip sistemlerimi artık google app script ile google docs a taşiyorum. İnanılmaz kolay. Javascript olmasi bir yana network islemlerinde cross-doamin sorunlari yaşamadan kodlayabiliyor, diger kullanicilarin scriptlerinden de faydalanabiliyorsunuz.
Online editor ve debugger'i ile pratik cozumler yaratabilirsiniz. Simdilik sadece twitter ve google dan cesitli datalari fetch ediyorum ve raporluyorum.


Konuyu irdelemek icin : http://code.google.com/googleapps/appsscript/

Bi kaç ekran görüntüsü.



Wednesday, June 29, 2011

Cok Ozetle MapReduce nedir derseniz

Resim 1 - Hadoop işleyişini anlatan bir görsel. Gelen datasetini daha kucuk chunklara bolerek isler ve sonucu verir [1]


(Konuyu şuradan da uygulamalı olarak irdeleyebilirsiniz [2] )

Mapreduce temelde büyük datasetleri işlemesi gereken sistemlerde datasetini daha ufak parcalara (chunks) bolup birden fazla birimin islemesini saglayan sistemlerdir. Ozellikle Facebook, twitter ve google oldukca ileri seviyede kullanıyorlar. Google bu konuda surada makele yayınlamış olabilir [3]. Evet yayınlamış hatta hem slide [4] olarak hem de makale olarak [5].
Mapreduce  calisma stratejisini ozetleyen bir gorsel yazının başındaki gorseldir.

Map ve Reduce katmanı vardır. Map katmanı gelen işi ilgili birimlere dağıtır ve çıktıyı verir. Reduce atmanı ise gelen çıktıları tek bir işlem sonucu olarak verir. Bu arada hem map hem de reduce katmanı birden fazla birimden olusuyor.
Teknik olarak detaya giremeyeceğim çünkü henüz hiç kullanmadım ancak akla şu soru takılabilir 'Eğer map veya reduce katmanlarından bir birim arızalanırsa ne olur?' .  Bu durumda islem devam eder ancak arizali birimin isi diger birimlere verilir. Scalability dendiğinde en önemli kısmı MapReduce almaktatır.


1. http://www.cs.berkeley.edu/~ballard/cs267.sp11/hw0/results/htmls/Muzaffar.html
2. http://michaelnielsen.org/blog/write-your-first-mapreduce-program-in-20-minutes/
3. http://research.google.com/pubs/papers.html
4. http://labs.google.com/papers/mapreduce-osdi04-slides/index-auto-0025.html
5. http://labs.google.com/papers/mapreduce-osdi04.pdf


İlgili olabilecek veya beraberinde incelenebilecek diğer anahtar kelimeler
Distributed computing <link>
Machine Learning

Thursday, May 5, 2011

Memcached : Deleting by Namespace

Bu tricki bilmiyordum. 


While memcached does not support any type of wildcard deleting or deletion by namespace (since there are not namespaces), there are some tricks that can be used to simulate this. They do require extra trips to the memcached servers however.Example, in PHP, for using a namespace called foo:

$ns_key = $memcache->get("foo_namespace_key");
// if not set, initialize it
if($ns_key===false) $memcache->set("foo_namespace_key", rand(1, 10000));
// cleverly use the ns_key
$my_key = "foo_".$ns_key."_12345";
$my_val = $memcache->get($my_key);
//To clear the namespace do:
$memcache->increment("foo_namespace_key");


Konuyu irdeleyin : http://code.google.com/p/memcached/wiki/FAQ#Deleting_by_Namespace

Thursday, April 7, 2011

cUrl proxy

İstek sınırı olan servisleri kullanırken cUrl' bir proxy listesi verip arada değiştiriyorum. Daha fazla kullanmış oluyorum. Bazen de bu yaptığım bu servisleri kötüye kullanmak mıdır diye düşünüyorum.


curl_setopt($ch, CURLOPT_PROXY, "http://proxy.gazi.edu.tr:2001");
curl_setopt($ch, CURLOPT_PROXYPORT, 2001);
curl_setopt ($ch, CURLOPT_PROXYUSERPWD, "user@gazi.edu.tr:password");

Tuesday, April 5, 2011

CKEditor IE9

IE9 ile CKEditor hatalar vermeye başladı. Günellemeniz gerek.
Js paketlenme metodundaki bir uyumsuzluk olduğu belirlenmiş.
http://ckeditor.com/download