var ax = {};
var bx = jQuery.extend(true, {}, ax);
Beware! I made typos, always. This is a multilingual blog, contains Turkish and English posts. Here my homepage without typos : hasantayyar.net - Blog moved to medium.com/@htayyar. Old posts will remain here.
Tuesday, December 3, 2013
Friday, November 22, 2013
console.table
tabular veri veya benzer duzenli verileri isledigimiz uygulamarda debugging amacli console.log yerine console.table kullanmak daha mantikli azizim.
Bunu da bugun ogrenmem buyuk kayip.
Mesela verimiz
console.log(data) su ciktiyi veriri consola :
Bunu da surdan okudum az evvel.
Bunu da bugun ogrenmem buyuk kayip.
Mesela verimiz
var data = [
{"name":"Bob Dylan","date":"1977-10-01"},
{"name":"Janis Joplin","date":"1978-03-01"}
];
console.log(data) su ciktiyi veriri consola :
Ama console.table(data) dersem :
Bunu da surdan okudum az evvel.
Monday, November 4, 2013
The first GraphGist Challenge completed
GraphGist Challenge'dan guzel ornekler
- Holiday Resorts by Raju Rama Krishna
- Sports League by @funpluscharity
- Learning Graph by jotomo
- IKEA furniture Graph by @rvanbruggen
- Enterprise Content Management Graph by @PieterJanVA
- US Flights & Airports by @_nicolemargaret
- Chess Games and Positions by @wefreema
- Why JIRA should use Neo4J by @PieterJanVA
- Mystery Science Theater 3000 Actors and Characters by @virtualswede
- Breaking Bad characters are interested in some products, let's see which are by @fforbeck
- Ditching Grandma - Graphy Accounting by @ShaunDaley1
- MotoGp Graph Gist by @ricshouse
- European Royalty by @frant_hartm
- Product Catalog by @funpluscharity
- A Simple Meta-Data Model by @perival
Saturday, October 19, 2013
Friday, October 4, 2013
Scroble with python / scroble.py
#!/usr/bin/env python """ usage python scroble.py <artist> <song> <timestamp> """ import sys import time import pylast API_KEY = "api-key"; API_SECRET = "api-secret" USERNAME = "lastfm-username" PASSWORD = "lastfm-password" def main(): artist = sys.argv[1] title = sys.argv[2] song_started = sys.argv[3] network = pylast.LastFMNetwork(api_key = API_KEY, api_secret = API_SECRET, username = USERNAME, password_hash = pylast.md5(PASSWORD)) network.scrobble(artist = artist, title = title, timestamp = song_started) if __name__ == "__main__": main()
#https://gist.github.com/hasantayyar/6826107
Tuesday, March 26, 2013
Redis Transactions ve Rollback
Azizim transaction denildiğinde iki ana başlık temeldir "Rollback" ve "Rollforward" [1]. Hatta bana sorarsan en önemli olay rollbak olayıdır. Bir şeyler fena halde sarpa sararsa bir şeyler kötü giderse rollback eylersin.
Lakin benim de pek sevdiğim Redis'de işler böyle yürümüyor.
Redis özelliklerinni listelendiği sayfada "Transaction" da yer alıyor :
Konuyla ilgili diğer bağlantılar
[1] Transaction processing : http://en.wikipedia.org/wiki/Transaction_processing
Lakin benim de pek sevdiğim Redis'de işler böyle yürümüyor.
Redis özelliklerinni listelendiği sayfada "Transaction" da yer alıyor :
Fakat redis transaction ile şunu kastediyor :
- Failsafe query
- Sorgularınızın ya tamamı çalışır ya da hiç biri çalışmaz.
Aklınızda olsun her transaction özelliği rollback özelliği var demek olmuyor. Redis'de kendiniz rollback yapacaksınız.
Redisin bu duruma mantıklı bir açıklaması var tabi
Why Redis does not support roll backs?
If you have a relational databases background, the fact that Redis commands can fail during a transaction, but still Redis will execute the rest of the transaction instead of rolling back, may look odd to you.
However there are good opinions for this behavior:
- Redis commands can fail only if called with a wrong syntax (and the problem is not detectable during the command queueing), or against keys holding the wrong data type: this means that in practical terms a failing command is the result of a programming errors, and a kind of error that is very likely to be detected during development, and not in production.
An argument against Redis point of view is that bugs happen, however it should be noted that in general the roll back does not save you from programming errors. For instance if a query increments a key by 2 instead of 1, or increments the wrong key, there is no way for a rollback mechanism to help. Given that no one can save the programmer from his errors, and that the kind of errors required for a Redis command to fail are unlikely to enter in production, we selected the simpler and faster approach of not supporting roll backs on errors.
- Redis is internally simplified and faster because it does not need the ability to roll back.
Konuyla ilgili diğer bağlantılar
- http://nosql.mypopescu.com/post/568248288/redis-multi-exec-discard-and-transactions
- http://stackoverflow.com/questions/7006268/redis-multi-inusring-atomicity/15321309#15321309
- http://redis.io/topics/transactions
[1] Transaction processing : http://en.wikipedia.org/wiki/Transaction_processing
Thursday, March 14, 2013
Google Reader'ın kapanması
Bir çok uygulamanın beslendiği ve en sevdiğim araçlardan olan google reader'ın kapanacak olması fena azizim.
Official Blog: A second spring of cleaning
Official Blog: A second spring of cleaning
Monday, March 11, 2013
MongoDB 2.4 ve GeoJSON desteği
Geospatial sorgulari MongoDb ile zaten keyifle yapabilmekteydiniz. Haberin yoksa hemen incele : http://docs.mongodb.org/manual/applications/geospatial-indexes/
MongoDb 2.4 versiyonunda ise GeoJSON desteği gelmiş oldu [docs]. 2.4 versiyonunda baska guzel seyler de var tabiki.
GeoJSON geometrik sekilleri json formatinda daha rahat tanimlamayi sagliyor.
Ornek bir cizgi
GeoJSON tanimlamarinin bir standarti var. Hepsi burda : http://www.geojson.org/geojson-spec.html
Daha cok ornek icin : http://www.geojson.org/geojson-spec.html#examples
Linkler
MongoDb 2.4 versiyonunda ise GeoJSON desteği gelmiş oldu [docs]. 2.4 versiyonunda baska guzel seyler de var tabiki.
GeoJSON geometrik sekilleri json formatinda daha rahat tanimlamayi sagliyor.
Ornek bir cizgi
{ type: "LineString", coordinates: [ [0.0, 10.0], [10.0, 20.0] ] }
Bir polygon
{ "type": "Polygon", "coordinates": [ [ [ 40, 5 ], [ 40, 6 ], [ 41, 6 ], [ 41, 5 ], [ 40, 5 ] ] ] }
GeoJSON tanimlamarinin bir standarti var. Hepsi burda : http://www.geojson.org/geojson-spec.html
Daha cok ornek icin : http://www.geojson.org/geojson-spec.html#examples
Linkler
- http://wiki.geojson.org/Users
- Php implementation of GeoJSON
- http://docs.mongodb.org/manual/release-notes/2.4/#new-geospatial-indexes-with-geojson-and-improved-spherical-geometry
- http://docs.mongodb.org/manual/applications/geospatial-indexes/
- Mongodb 2.4 icin diger notlar http://docs.mongodb.org/manual/release-notes/2.4/
Monday, March 4, 2013
PyMongo ile çalışmak eğlenceli
http://blog.pythonisito.com/2012/01/moving-along-with-pymongo.html
Pymongo ile çalışmak inanılmaz eğlenceli.
pip install pymongo
Yüklemede başka sorunlar yaşarsanız http://api.mongodb.org/python/current/ sayfasını inceleyin.
Hello world :
pymongo tutorials : http://api.mongodb.org/python/current/tutorial.html
pymongo examples : http://api.mongodb.org/python/current/examples/index.html
Pymongo ile çalışmak inanılmaz eğlenceli.
pip install pymongo
veya
easy_install pymongo
Zaten yüklüyse güncellemek için
pip install --upgrade pymongo
veya
easy_install -U pymongo
easy_install pymongo
Zaten yüklüyse güncellemek için
pip install --upgrade pymongo
veya
easy_install -U pymongo
Hello world :
Tıpkı mongo konsolunda kullandığımız şekilde objeleri gönderebilmek harika. Nodejs dahil diğer hiç bir mongo driver'ı ile bu kadar rahat olmamıştı mongo sorguları.
import pymongo con = pymongo.Connection() # veya #from pymongo import Mongoclient #con = MongoClient('localhost', 27017) #bazı bağlantı parametreleri var. Şuradan görebilirsiniz : # http://api.mongodb.org/python/current/api/pymongo/mongo_client.html#pymongo.mongo_client.MongoClient db = con.mytestdb #veya #db = con['mytestdb'] db.testcollection.insert({"name":"hello"}) #Toplu insert işlemelrinde de objeleri array oalrak geçebilirsiniz db.testcollection.insert([{"name":"hello"},{"name":"world"}]) #Şimdi eklediklerimizi listeleyelim db.testcollection.find() #Aslında bu sorgu tüm kayıtları getirmez ancak tüm kayıtları çekmeniz için size bir cursor objesi verir. list(db.testcollection.find()) #[{u'_id': ObjectId('51343ccd3a8c4a30eb2e01fe'), u'name': u'xyz'}, {u'_id': ObjectId('513448f73a8c4a366ad506d4'), u'name': u'hello'}, {u'_id': ObjectId('513448f73a8c4a366ad506d5'), u'name': u'world'}] db.testcollecion.ensure_index('name') #index oluşturma db.testcollection.find({"name":"Hello"}) db.testcollection.find({"name":"Hello"}).explain() #sorguyu çalıştırma mysql'deki "explain extended" gibi size sorguda indexin kullanılma durumunu verir. db.testcollection.find({"name":"Hello"}).sort([ ('name', 1), ('otherfield', 1)])
# $set, $unset, $push, $pushAll, $addToSet, $pop,$pull, $pullAll, $rename, $bit gibi update operatorlerini rahatlıkla kullanabilirsiziniz. Bu operatorlerle ilgili detaylı bilgi http://docs.mongodb.org/manual/applications/update/#update-operators db.testq.update({"name": "Hello"}, {"$set": {"name": "Updated"}})
pymongo tutorials : http://api.mongodb.org/python/current/tutorial.html
pymongo examples : http://api.mongodb.org/python/current/examples/index.html
Image publishing checklist
- Don't embed important text inside images
- Describe your image. Give a good description. Beware of long "alt" attibute values. Or google rank you as a spam because of "keyword stuffing".
- License your images. Add a small "Terms of Use". You will like Creative Commons.
- Generate your images different size formats for your needs.
- Specify your image dimensions in html.
future reading https://www.magic-picture.com/5-best-ways-to-optimize-images-for-seo/
Friday, March 1, 2013
MongoDb $in vs $or
Bir değer için $in ve $or arasında hangisinin daha performanslı olacağına karar veremdiyseniz rahatlıkla $in'i tercih edebilrisiniz.
$or birden farklı alanların sorgulanması sırasında tavsiye ediliyor.
http://docs.mongodb.org/manual/reference/operator/or/:
When using $or with <expressions> that are equality checks for the value of the same field, choose the $in operator over the $or operator.
$or birden farklı alanların sorgulanması sırasında tavsiye ediliyor.
http://docs.mongodb.org/manual/reference/operator/or/:
When using $or with <expressions> that are equality checks for the value of the same field, choose the $in operator over the $or operator.
Tuesday, February 26, 2013
Try Mongo-Hacker - a colorful and pretty mongo console
just a tiny mongorc.js -
For mongodb 2.0.x users remove or comment "setVerboseShell(true);" on line 34
clone mongo_hacker to your home dir
cd ~
mkdir .mongo
cd .mongo
git clone https://github.com/TylerBrock/mongo-hacker.git
cd mongo-hacker
#backup old mongorc
cp ~/.mongorc.js ~.mongorc.js.backup
#link new one
ln -sf ~/.mongo/mongo-hacker/mongo_hacker.js ~/.mongorc.js
For mongodb 2.0.x users remove or comment "setVerboseShell(true);" on line 34
clone mongo_hacker to your home dir
cd ~
mkdir .mongo
cd .mongo
git clone https://github.com/TylerBrock/mongo-hacker.git
cd mongo-hacker
#backup old mongorc
cp ~/.mongorc.js ~.mongorc.js.backup
#link new one
ln -sf ~/.mongo/mongo-hacker/mongo_hacker.js ~/.mongorc.js
Sunday, February 24, 2013
Vagrant Bridged Network
Uncomment this line from Vagrantfile
config.vm.network :bridged
Then
vagrant up
Vagrant will list you to select a network. That's all.
config.vm.network :bridged
Then
vagrant up
Vagrant will list you to select a network. That's all.
Friday, February 22, 2013
Noqsl Meta - Cassandra, Mongodb, CouchDB, Redis,ElasticSearch, Kyoto Tycoon, Neo4j
Cassandra, Mongodb, CouchDB, Redis,ElasticSearch, Kyoto Tycoon, Neo4j yeteneklerine pek değinmeden genel bilgilerini karşılaştırmalı sunan bir tablodur. Bir performans karsilastirmasi degildir!
Thanks to Kristóf
MongoDB
Yazıldığı Dil: C++
Lisans: AGPL
Veri İletişim Protokolü: binary (BSON)
En iyi kullanım örneği : Dinamik veri yapisi ihtiyaclarinizda. Surekli yeni diskler ve makinelerle genisletmeniz gerekecek derecede fazla buyuyen veriniz oldugunda. CouchDb nin cabuk buyuen ve kolay kontrol edilebilen bir haline ihtiyac duydugunuzda.
Lisans: BSD
Veri İletişim Protokolü: Telnet-like
En iyi kullanım örneği : Disk-backed in-memory database en onemli ozelligi. MongoDb orneginden oldugu gibi surekli artan verilerde degil ancak surekli ve sikca degisen verilerde kullanilmasi onerilir..
Lisans: Apache
Veri İletişim Protokolü: HTTP/REST
En iyi kullanım örneği : Bi-directional (!) replication en onemli ozelligi. MongoDb de belirtigi gibi cok ve surekli buyuen datalar olmadiginda ama yine esnek bir data yapisi ve ayni zamanda versiyonlama çok önemli oldugunda.
Lisans: Apache
Veri İletişim Protokolü: Thrift & custom binary CQL3
En iyi kullanım örneği : Write/Read orani çok çok yuksekse ve yazma hizi onemliyse (mesela loglar). Java ile cok iyi hider
Lisans: GPL, some features AGPL/commercial
Veri İletişim Protokolü: HTTP/REST (or embedding in Java)
En iyi kullanım örneği : Graph islemlerinizde harika cozum sunar!
Lisans: Apache
Veri İletişim Protokolü: JSON over HTTP (Plugins: Thrift, memcached)
Stores JSON documents
En iyi kullanım örneği : Esnek dokumanlariniz ve gelismis arma ihtiyaclariniz oldugunda. fuzzy search ihtiyaci. Geodistance ihtiyaci oldugunda.
Lisans: GPL
Veri İletişim Protokolü: HTTP (TSV-RPC or REST)
En iyi kullanım örneği : Memcache'e alternatif daha yetenekli bir seyler aradiginizda cozum olacaktir.
Lisans: AGPL
Veri İletişim Protokolü: binary (BSON)
En iyi kullanım örneği : Dinamik veri yapisi ihtiyaclarinizda. Surekli yeni diskler ve makinelerle genisletmeniz gerekecek derecede fazla buyuyen veriniz oldugunda. CouchDb nin cabuk buyuen ve kolay kontrol edilebilen bir haline ihtiyac duydugunuzda.
Redis
Yazıldığı Dil: C/C++Lisans: BSD
Veri İletişim Protokolü: Telnet-like
En iyi kullanım örneği : Disk-backed in-memory database en onemli ozelligi. MongoDb orneginden oldugu gibi surekli artan verilerde degil ancak surekli ve sikca degisen verilerde kullanilmasi onerilir..
CouchDB
Yazıldığı Dil: ErlangLisans: Apache
Veri İletişim Protokolü: HTTP/REST
En iyi kullanım örneği : Bi-directional (!) replication en onemli ozelligi. MongoDb de belirtigi gibi cok ve surekli buyuen datalar olmadiginda ama yine esnek bir data yapisi ve ayni zamanda versiyonlama çok önemli oldugunda.
Cassandra (1.2)
Yazıldığı Dil: JavaLisans: Apache
Veri İletişim Protokolü: Thrift & custom binary CQL3
En iyi kullanım örneği : Write/Read orani çok çok yuksekse ve yazma hizi onemliyse (mesela loglar). Java ile cok iyi hider
All nodes are similar, as opposed to Hadoop/HBase
Cross-datacenter replication
Querying by column, range of keys (Requires indices on anything that you want to search on)
Can be used as a distributed hash-table, with an "SQL-like" language, CQL (but no JOIN!)
Neo4j (V1.5M02)
Yazıldığı Dil: JavaLisans: GPL, some features AGPL/commercial
Veri İletişim Protokolü: HTTP/REST (or embedding in Java)
En iyi kullanım örneği : Graph islemlerinizde harika cozum sunar!
Full ACID
For searching routes in social relations, public transport links, road maps, or network topologies.
ElasticSearch
Yazıldığı Dil: JavaLisans: Apache
Veri İletişim Protokolü: JSON over HTTP (Plugins: Thrift, memcached)
Stores JSON documents
En iyi kullanım örneği : Esnek dokumanlariniz ve gelismis arma ihtiyaclariniz oldugunda. fuzzy search ihtiyaci. Geodistance ihtiyaci oldugunda.
Kyoto Tycoon (0.9.56)
Yazıldığı Dil: C++Lisans: GPL
Veri İletişim Protokolü: HTTP (TSV-RPC or REST)
En iyi kullanım örneği : Memcache'e alternatif daha yetenekli bir seyler aradiginizda cozum olacaktir.
Hot backup, asynchronous replication (MongoDb'de de gelismis olarak olan bir ozellik.)
background snapshot of in-memory databases
Auto expiration (can be used as a cache server) (Redis'de de olan bir ozellik)
Thanks to Kristóf
Friday, February 8, 2013
ffmpeg + youtube-dl + bash = automatic youtube music downloader
$ sudo apt-get install ffmpeg libavcodec-extra-53
$ sudo youtube-dl
$ vim ~/.bashrcor for zshell users
$ vim ~/.zshrc
add
mp3(){
youtube-dl $1 --extract-audio --title --audio-format mp3
}
usage
mp3 http://www.youtube.com/watch\?v\=cRbFP0oHmRc
it will download the video and convert it to mp3.
Thursday, February 7, 2013
php5 MongoClient 64bit integer problem
php-mongo ve long int değerlerle (tckn gibi) çalışırken sorun yaşamamak için php dosyanız içinde
yapabilir veya php.ini içine
ekleyebilirsiniz
ini_set('mongo.native_long', 1);
yapabilir veya php.ini içine
[mongodb]
mongo.native_long = 1
ekleyebilirsiniz
vsftp anonymous user
$ sudo vim /etc/vsftpd.conf
anonymous_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
no_anon_password=YES
local_root=/path/for/local/user
anon_root=/path/for/anon/user
"anon_root=/path/for/anon/user" değerini mutlaka eklemeniz gerek yoksa anonymous_enable olsa bile anonymous giriş yapamazsınız.
Monday, January 28, 2013
#tips for your search page/engine -2
Don't send the query to search engine as you get from user input. Check and validate. And remove unnecessary special symbols.
A * can break your site
Or gets all document. If you don't have limited result set this may break your site, too.
Thursday, January 10, 2013
MongoDb ve FullText Search
Gecen Kasim ayinda gerceklesen MongoSV konferansinda MongoDb ile bir fulltext search demosu yapilmisti.
Ve bir sure bu ozellik nightly buildlere eklenmedi fakat git uzerinden takip edilebiliyordu.
Ancak artik 2.3.2 unstable versiyonu ( http://www.mongodb.org/downloads ) ile mongodb fulltext deneyimini test edebilirsiniz.
Asil onemli olan 2.4 versioyununda Stemming, Turkce destegi ve stop-words gelecek olmasi.
Tabiki bir Solr veya Elasticsearch degil ancak zaten asil amac kapsamli bir search engine olmak da degil.
Bir collection'da fulltext search aktiflestirmek icin ilk komut
Ve bir sure bu ozellik nightly buildlere eklenmedi fakat git uzerinden takip edilebiliyordu.
Ancak artik 2.3.2 unstable versiyonu ( http://www.mongodb.org/downloads ) ile mongodb fulltext deneyimini test edebilirsiniz.
Asil onemli olan 2.4 versioyununda Stemming, Turkce destegi ve stop-words gelecek olmasi.
Tabiki bir Solr veya Elasticsearch degil ancak zaten asil amac kapsamli bir search engine olmak da degil.
Bir collection'da fulltext search aktiflestirmek icin ilk komut
db.adminCommand( { setParameter : "*", textSearchEnabled : true } );Arama yapmayi dusundugumuz attribute icin index olusturmaliyiz. Index tipi "text"
db.tests.ensureIndex( { "summary": "text" } );Ve arama yapmak icin
d
b.tests.runCommand( "text", { search: "Lorem" } );
Wednesday, January 9, 2013
DotCloud Hemen Test Edip Kullanın
dotcloud.com
Heroku gibi node, python, ruby veya php uygulamalarinizi yukleyip yukunuze gore optimize edebileceginiz bir uygulama sunucusu. Yine Heroku gibi eklentileri var. Mysql, redis, mongo, rabbitmq gibi
Hemen denemek icin CLI'ini indirmek gerek.
Ilk uygulamaniz icin http://docs.dotcloud.com/ adresinden konfigurasyon detaylarini gorebilirsiniz.
Ucretsiz olarak hemen deneyebilirsiniz.
Heroku gibi node, python, ruby veya php uygulamalarinizi yukleyip yukunuze gore optimize edebileceginiz bir uygulama sunucusu. Yine Heroku gibi eklentileri var. Mysql, redis, mongo, rabbitmq gibi
Hemen denemek icin CLI'ini indirmek gerek.
sudo pip install dotcloudIlk adim yeni bir proje dizini olusturun ve dotcloud bilgilerinizi girmek icin setup komutu verin
#belki oncesinde pip kurmaniz gerekebilir
#sudo easy_install pip
mkdir test1
dotcloud setupTum ayarlari yml dosyalari uzerinden yapiyorsunuz. Ekleyeceginiz eklentileri veya uygulama turunu yml dosyasi ustunde yapiyorsunuz.
dotcloud create helloworldappcalistirir calistirmaz dotcloud.yml dosyasinin olustugunu goreceksiniz
Ilk uygulamaniz icin http://docs.dotcloud.com/ adresinden konfigurasyon detaylarini gorebilirsiniz.
Ucretsiz olarak hemen deneyebilirsiniz.
Sunday, January 6, 2013
FindBigMail - gmail kotanız dolduysa
Evet 7Gb gibi bir kota da rahatlikla dolabilir. Siz de benim gibi aktif gmail kullaniyorsaniz ve dosya eklerini bazen abartiyorsaniz arada www.findbigmail.com kullanarak eskide kalmis ve mail kutunuzu sisiren mailleri gorebilirsiniz.
Taradiktan sonra solda etiketler olustugunu goreceksiniz.
Taradiktan sonra solda etiketler olustugunu goreceksiniz.
Tuesday, January 1, 2013
Macports sucks, as always
Son Xcode guncellemelirinizden sonra siz de "ports selfupdate" sonucunda asagidaki gbi bir hata almis olabilirsiniz
Sadece su komutlarinhem dogrudan hem de /usr/bin altinda calistirilabilr oldugundan emin olun. Eger /usr/bin altinda yoksalar /opt/local/bin/ altindan linkleyebilirsiniz.
Error: /opt/local/bin/port: port selfupdate failed: Error synchronizing MacPorts sources: command execution failed
Sadece su komutlarinhem dogrudan hem de /usr/bin altinda calistirilabilr oldugundan emin olun. Eger /usr/bin altinda yoksalar /opt/local/bin/ altindan linkleyebilirsiniz.
- rsync
- tclsh
- openssl
- tar
- chmod
- chown
Subscribe to:
Posts (Atom)