Djangonun geliştirici dostu olduğunu söylemiştim. Neden mi?
Çeşitli kimlik doğrulama(authentication) yöntemleri mevcuttur.
Username,emailler,Facebook, Twitter ve bu tarz kombinasyonlar ile giriş
yapabilme imkanı verir.
Farklı veritabanı backendleri sunar. MySQL, PostgreSQL , hatta
Non-relational veritabanları ve fazlasını kullanabilme imkanınız vardır.
Bunların yanı sıra Sqlite3 denilen djangoya has kendi veritabanını ek
işlem yapmadan kullanabilirsiniz.
Farklı mail gönderme stratejileri sağlar. Smtp, veritabanına kuyruklama ya da log to files ve daha fazlası ile mail gönderebilirsiniz.
Farklı dosya depolama metodları sunar.Lokal olarak saklayabileceğiniz gibi, FTP, Amazon S3 ya da kendinize has oluşturabilirsiniz.
Mesajlarınızı Sessionlar, cookieler ve diğerleri ile saklamınızı sağlar.
Cachemeleri Dosyalarda, Veritabanında , Memcache olarak yada sadece fake olarak yapabilirsiniz.
daha fazlası için http://bit.ly/djangoframework
26 Mart 2014 Çarşamba
11 Mart 2014 Salı
13 Şubat 2014 Perşembe
web tasarım dersleri html css dersleri
Merhabalar eğer web sitesi yapmak istiyorsanız , evden çalışarak kazanç elde etmek yada herhangi bir yerde front end developer yani web tasarımcısı olarak çalışmak istiyorsanız veya elinizde bulunan birşeyleri satmak istyorsanız , bildiklerinizi insanlarla paylaşmak vb bu çok fazla uzatılabilir kitlenize internetten ulaşmak istiyorsanız web sitesi tasarımı için gerekli olan iki temel teknoloji olan html ve css ‘i biliyor olmanız gerekiyor.
Bu kursta bunlar hakkında hiç bir şeybilmiyor durumdaysanız en temelden başlayarak mozillayı indirme :) daha temeli olamazdı . PSD photoshop dosyalarını html sayfasına dönüştürmeye kadar öğreneceksiniz ve tabiki HTML ve CSS hakkında’da herşeyi öğreneceksiniz.
En can alıcı noktaysa sermayeye ihtiyaç duymadan yetenekleriniz doğrultusunda binlerce tl kazanabilirsiniz.
30 DOLAR OLAN eğitim setini 20 dolara almak için indirim kuponu :20DLR
https://www.udemy.com/web-tasarim-web-sitesi-nasil-yapilir-html-css-dersleri/?couponCode=20DLR#/
Bu kursta bunlar hakkında hiç bir şeybilmiyor durumdaysanız en temelden başlayarak mozillayı indirme :) daha temeli olamazdı . PSD photoshop dosyalarını html sayfasına dönüştürmeye kadar öğreneceksiniz ve tabiki HTML ve CSS hakkında’da herşeyi öğreneceksiniz.
En can alıcı noktaysa sermayeye ihtiyaç duymadan yetenekleriniz doğrultusunda binlerce tl kazanabilirsiniz.
30 DOLAR OLAN eğitim setini 20 dolara almak için indirim kuponu :20DLR
https://www.udemy.com/web-tasarim-web-sitesi-nasil-yapilir-html-css-dersleri/?couponCode=20DLR#/
web sitesi geliştirme |
12 Ocak 2014 Pazar
MongoDB Kullanımı (Çekirdek)
NoSQL kavramı hakkında farkındalık oluşturup, popüler NoSQL çözümü MongoDB’yi size tanıtmayı amaçlayan makalede belirttiğim gibi, MongoDB dokümanyasyonu, kullandığınız platforma(Linux, Mac os x, Windows) MongoDB’yi nasıl kurabileceğinize dair yeterli bilgiyi sunmaktadır.
Kurulumu başarıyla tamamladıysak, artık teoriden pratiğe geçip, çekirdek MongoDB işlemlerini(CRUD operasyonları) gerçekleştirerek ilk kayıtlarımızı oluşturabiliriz.
Konsol
MongoDB, yönetimi için her türlü yeterliliğe sahip konsol uygulaması ile sisteminize kuruluyor. MongoDB yönetim için görsel bir araç barındırmamakla birlikte, bu iş için üçüncü parti çözümler bulunmaktadır.
Konsol yönetimi için öncelikle, birincil arka plan kabuğunu çalıştırmamız gerekiyor.
Bu komutla MongoDB için arka planda veri isteklerini işleyecek kabuğu
çalıştırdıktan sonra, yeni bir konsol ekranında, sistem yöneticilerinin
veritabanları üzerinde sorgu, crud ve diğer operasyonları
gerçekleştirebilmesi adına tasarlanmış mongo JavaScript kabuğunu çalıştırmalıyız.
Tam bu noktada, yeni başlayanlar için help komutu ile yardım almak,
hangi komutla ne tür operasyonların gerçekleştirildiğini görmek faydalı
olacaktır.
Şimdi bir kullanım senaryosu belirleyelim ve ardından da, crud
operasyonlarını gerçekleştireceğimiz collection’ları barındıracak
veritabanımızı oluşturalım.
Senaryomuz
Kodcu.com’da yayınlanan makaleleri kategori, başlık, içerik, tarih, yazar, etiket alanlarına sahip dokümanlar(unutmayın, MongoDB’de her kayıt, aslında bir dokümandır) olarak saklamak, bu dokümanların alanları üzerinde sorgulama, güncelleme ve silme işlemlerini gerçekleştirmek.
MongoDB’de, alışageldiğimiz sql veritabanlarında var olana benzer,
veritabanı oluşturmak için bir create komutu bulunmuyor. Böyle bir şeye
gerek de yok, çünkü MongoDB create işlemini, tanımladığınız veritabanına kayıt eklediğiniz anda gerçekleştiriyor. Yukarıda yer alan use kodcu
komutu ile biz, veritabanı tanımlama işlemini gerçekleştirmiş olduk.
Çıktıdan anlaşılabileceği gibi, use komutu ile varolan veritabanları
arasında seçim de yapabiliyoruz.
db.articles.save(article) komutuyla, kodcu veritabanı içinde articles collection‘ını(önceki makalede belirtildiği gibi, MongoDB’de collection‘lar, sql dünyasında tablolara tekabül etmektedir) oluşturduk ve öncesinde tanımladığımız article objesini bu collection’a ekledik. Böylelikle MongoDB’ye ilk kaydımızı(doküman) eklemiş olduk.
Aşağıdaki komutla da aynı sonucu elde ederiz.
Görüldüğü üzre, kodcu isminde veritabanımız, bu veritabanı içinde de
articles isminde bir collection oluşmuş durumda. Collection üzerinde
yapılan find() çağrısıyla da, ilgili collection’ın
barındırdığı kayıtları çıktılamış olduk. Bu kayıtta bizim manuel
girmediğimiz bir değer dikkatinizi çekmiş olmalı, id değeri.
MongoDB’de her bir dokümanın benzersiz/unique bir kimlik alanı vardır. Bu alan _id alanıdır. _id alanına manuel olarak değer atanmadığı takdirde, MongoDB bu alana ObjectId tipinde benzersiz bir kimlik değeri atamaktadır.
Oluşturduğumuz ilk kayıtta tags alanına null değer girdik, bu alanı güncelleyelim.
Şimdi yeni kayıtlar ekleyelim ve bu kayıtlar üzerinde sorgular çalıştırmayı görelim.
Şimdi, mevcut kayıtlar içinde, yazarı Altuğ Bilgin Altıntaş olan makaleleri arayalım.
Burada daha önce MongoDB’yi diğer NoSQL çözümlerden ayıran ve öne
çıkaran hususlardan birisi olarak bahsettiğim, istenilen alana göre
sorgulama yapabilme olanağını görmüş olduk. Yine aynı başlık altında
belirttiğim gibi, MongoDB kullanıcılarına, sorgularda düzenli
ifadelerden(regular expression) yararlanma olanağı da sunuyor. Bu bağlamda, içeriğinde Backbone ve JavaScript ifadeleri yer alan makaleleri bulmak istediğimizde şöyle bir söz dizimi kullanıyoruz.
MongoDB, düzenli ifadeleri
kullanırken yararlanabileceğiniz oldukça yararlı 4 seçenek sunuyor.
Bunlardan biri, büyük/küçük harf duyarsız sorgular için kullanılıyor.
Son olarak bir kaydı nasıl silebileceğimizi de görelim.
Burada ele alıp, konsol uygulaması üzerinden gerçekleştirdiğimiz işlemleri, MongoDB’nin sürücü desteğinde bulunduğu yazılım dilleriyle gerçekleştirmek de mümkün. Nasip olursa bir sonraki makalede, MongoDB’nin sağladığı native java driver ile burada gördüğümüze benzer işlemlerin nasıl gerçekleştirilebileceğini ele alacağız. twitter/@yasinaktimur
Kurulumu başarıyla tamamladıysak, artık teoriden pratiğe geçip, çekirdek MongoDB işlemlerini(CRUD operasyonları) gerçekleştirerek ilk kayıtlarımızı oluşturabiliriz.
Konsol
MongoDB, yönetimi için her türlü yeterliliğe sahip konsol uygulaması ile sisteminize kuruluyor. MongoDB yönetim için görsel bir araç barındırmamakla birlikte, bu iş için üçüncü parti çözümler bulunmaktadır.
Konsol yönetimi için öncelikle, birincil arka plan kabuğunu çalıştırmamız gerekiyor.
cs
:~ hakdogan$ mongod
cs
:~ cs$ mongo
> help db.help() help on db methods db.mycoll.help() help on collection methods sh.help() sharding helpers rs.help() replica set helpers help admin administrative help help connect connecting to a db help help keys key shortcuts help misc misc things to know help mr mapreduce show dbs show database names show collections show collections in current database show users show users in current database show profile show most recent system.profile entries with time >= 1ms show logs show the accessible logger names show log [name] prints out the last segment of log in memory, 'global' is default use db_name set current database db.foo.find() list objects in collection foo db.foo.find( { a : 1 } ) list objects in foo where a == 1 it result of the last line evaluated; use to further iterate DBQuery.shellBatchSize = x set default number of items to display on shell exit quit the mongo shellİlk olarak kurulumla birlikte gelen, varolan veritabanlarının listesine bakalım.
> show dbs
local 0.078125GB
Senaryomuz
Kodcu.com’da yayınlanan makaleleri kategori, başlık, içerik, tarih, yazar, etiket alanlarına sahip dokümanlar(unutmayın, MongoDB’de her kayıt, aslında bir dokümandır) olarak saklamak, bu dokümanların alanları üzerinde sorgulama, güncelleme ve silme işlemlerini gerçekleştirmek.
> use kodcu
switched to db kodcu
> article = { category: ["Yazılar"], title: "Lean Kanban Atölye Çalışması", content: "Kanban sistemi son 10 yıldır yazılım yönetimi alanında etkiliyici bir yaklaşımdır.", date: new Date('2013-04-11'), author: "Altuğ Bilgin Altıntaş", tags: [null]} { "category" : ["Yazılar"], "title" : "Lean Kanban Atölye Çalışması", "content" : "Kanban sistemi son 10 yıldır yazılım yönetimi alanında etkiliyici bir yaklaşımdır.", "date" : ISODate("2013-04-11T00:00:00Z"), "author" : "Altuğ Bilgin Altıntaş", "tags" : [null] } > db.articles.save(article)
Aşağıdaki komutla da aynı sonucu elde ederiz.
db.articles.insert({ category: [“Yazılar”], title: "Lean Kanban Atölye Çalışması", content: "Kanban sistemi son 10 yıldır yazılım yönetimi alanında etkiliyici bir yaklaşımdır.", date: new Date('2013-04-11'), author: "Altuğ Bilgin Altıntaş", tags: [null]})
> show dbs kodcu 0.203125GB local 0.078125GB > show collections articles system.indexes > db.articles.find() { "_id" : ObjectId("516a93d0b26184f91a8b985c"), "category" : [ "Yazılar" ], "title" : "Lean Kanban Atölye Çalışması", "content" : "Kanban sistemi son 10 yıldır yazılım yönetimi alanında etkiliyici bir yaklaşımdır.", "date" : ISODate("2013-04-11T00:00:00Z"), "author" : "Altuğ Bilgin Altıntaş", "tags" : [ null ] }
MongoDB’de her bir dokümanın benzersiz/unique bir kimlik alanı vardır. Bu alan _id alanıdır. _id alanına manuel olarak değer atanmadığı takdirde, MongoDB bu alana ObjectId tipinde benzersiz bir kimlik değeri atamaktadır.
Oluşturduğumuz ilk kayıtta tags alanına null değer girdik, bu alanı güncelleyelim.
> db.articles.update({_id:ObjectId("516a93d0b26184f91a8b985c")}, {$set: {"tags": ["lean","kanban","eğitim"]}}) > db.articles.find() { "_id" : ObjectId("516a93d0b26184f91a8b985c"), "author" : "Altuğ Bilgin Altıntaş", "category" : [ "Yazılar" ], "content" : "Kanban sistemi son 10 yıldır yazılım yönetimi alanında etkiliyici bir yaklaşımdır.", "date" : ISODate("2013-04-11T00:00:00Z"), "tags" : [ "lean", "kanban", "eğitim" ], "title" : "Lean Kanban Atölye Çalışması" }
>db.articles.insert({ category: ["Yazılar"], title: "Backbone.js ile ipleri elinize alın! – Ücretsiz Webiner", content: "Backbone.js, karmaşaya boğulmuş JavaScript kodunuzu bir yapı içerisine sokan ve geliştirimi zevkli bir ortam sunan bir JavaScript kütüphanesidir.", date: new Date('2013-04-10'), author: "Kodcu.Com", tags: [null]}) >db.articles.insert({ category: ["Java", "Tutorial", "Yazılar", "Yazılım"], title: "Java ile Apache Solr’a Veri İndeksleme", content: "Merhabalar, bir önceki yazımda Apache Solr kurulumundan, konfigürasyonundan, komut satırından Solr’a veri indeksleme ve bu veriler üzerinden sorgu yapabilme işlemlerinden bahsetmiştim.", date: new Date('2013-04-09'), author: "Cüneyt Yeşilkaya", tags: ["java", "java ile solr'a veri indekslemek", "solr", "solrj"]}) >db.articles.insert({ category: ["NoSQL", "Yazılar"], title: "Çekirdek MongoDB İşlemleri", content: "NoSQL kavramı hakkında farkındalık oluşturup...", date: new Date('2013-04-15'), author: "Hüseyin Akdoğan", tags: ["mongodb", "nosql"]})
> db.articles.find({author: "Altuğ Bilgin Altıntaş"}) { "_id" : ObjectId("516a93d0b26184f91a8b985c"), "author" : "Altuğ Bilgin Altıntaş", "category" : [ "Yazılar" ], "content" : "Kanban sistemi son 10 yıldır yazılım yönetimi alanında etkiliyici bir yaklaşımdır.", "date" : ISODate("2013-04-11T00:00:00Z"), "tags" : [ "lean", "kanban", "eğitim" ], "title" : "Lean Kanban Atölye Çalışması" }
> db.articles.find({content: {$regex: 'Backbone.*JavaScript'}}) { "_id" : ObjectId("516a9432b26184f91a8b985d"), "category" : [ "Yazılar" ], "title" : "Backbone.js ile ipleri elinize alın! – Ücretsiz Webiner", "content" : "Backbone.js, karmaşaya boğulmuş JavaScript kodunuzu bir yapı içerisine sokan ve geliştirimi zevkli bir ortam sunan bir JavaScript kütüphanesidir.", "date" : ISODate("2013-04-10T00:00:00Z"), "author" : "Kodcu.Com", "tags" : [ null ] }
> db.articles.find({content: {$regex: 'backbone.*javascript', $options: 'i'}}) { "_id" : ObjectId("516a9432b26184f91a8b985d"), "category" : [ "Yazılar" ], "title" : "Backbone.js ile ipleri elinize alın! – Ücretsiz Webiner", "content" : "Backbone.js, karmaşaya boğulmuş JavaScript kodunuzu bir yapı içerisine sokan ve geliştirimi zevkli bir ortam sunan bir JavaScript kütüphanesidir.", "date" : ISODate("2013-04-10T00:00:00Z"), "author" : "Kodcu.Com", "tags" : [ null ] }
> db.articles.find() { "_id" : ObjectId("516a93d0b26184f91a8b985c"), "author" : "Altuğ Bilgin Altıntaş", "category" : [ "Yazılar" ], "content" : "Kanban sistemi son 10 yıldır yazılım yönetimi alanında etkiliyici bir yaklaşımdır.", "date" : ISODate("2013-04-11T00:00:00Z"), "tags" : [ "lean", "kanban", "eğitim" ], "title" : "Lean Kanban Atölye Çalışması" } { "_id" : ObjectId("516a9432b26184f91a8b985d"), "category" : [ "Yazılar" ], "title" : "Backbone.js ile ipleri elinize alın! – Ücretsiz Webiner", "content" : "Backbone.js, karmaşaya boğulmuş JavaScript kodunuzu bir yapı içerisine sokan ve geliştirimi zevkli bir ortam sunan bir JavaScript kütüphanesidir.", "date" : ISODate("2013-04-10T00:00:00Z"), "author" : "Kodcu.Com", "tags" : [ null ] } { "_id" : ObjectId("516a943bb26184f91a8b985e"), "category" : [ "Java", "Tutorial", "Yazılar", "Yazılım" ], "title" : "Java ile Apache Solr’a Veri İndeksleme", "content" : "Merhabalar, bir önceki yazımda Apache Solr kurulumundan, konfigürasyonundan, komut satırından Solr’a veri indeksleme ve bu veriler üzerinden sorgu yapabilme işlemlerinden bahsetmiştim.", "date" : ISODate("2013-04-09T00:00:00Z"), "author" : "Cüneyt Yeşilkaya", "tags" : [ "java", "java ile solr'a veri indekslemek", "solr", "solrj" ] } { "_id" : ObjectId("516a9444b26184f91a8b985f"), "category" : [ "NoSQL", "Yazılar" ], "title" : "Çekirdek MongoDB İşlemleri", "content" : "NoSQL kavramı hakkında farkındalık oluşturup...", "date" : ISODate("2013-04-15T00:00:00Z"), "author" : "Hüseyin Akdoğan", "tags" : [ "mongodb", "nosql" ] }
Burada ele alıp, konsol uygulaması üzerinden gerçekleştirdiğimiz işlemleri, MongoDB’nin sürücü desteğinde bulunduğu yazılım dilleriyle gerçekleştirmek de mümkün. Nasip olursa bir sonraki makalede, MongoDB’nin sağladığı native java driver ile burada gördüğümüze benzer işlemlerin nasıl gerçekleştirilebileceğini ele alacağız. twitter/@yasinaktimur
MongoDB Kullanımı (Çekirdek)
NoSQL kavramı hakkında farkındalık oluşturup, popüler NoSQL çözümü MongoDB’yi size tanıtmayı amaçlayan makalede belirttiğim gibi, MongoDB dokümanyasyonu, kullandığınız platforma(Linux, Mac os x, Windows) MongoDB’yi nasıl kurabileceğinize dair yeterli bilgiyi sunmaktadır.
Kurulumu başarıyla tamamladıysak, artık teoriden pratiğe geçip, çekirdek MongoDB işlemlerini(CRUD operasyonları) gerçekleştirerek ilk kayıtlarımızı oluşturabiliriz.
Konsol
MongoDB, yönetimi için her türlü yeterliliğe sahip konsol uygulaması ile sisteminize kuruluyor. MongoDB yönetim için görsel bir araç barındırmamakla birlikte, bu iş için üçüncü parti çözümler bulunmaktadır.
Konsol yönetimi için öncelikle, birincil arka plan kabuğunu çalıştırmamız gerekiyor.
Bu komutla MongoDB için arka planda veri isteklerini işleyecek kabuğu
çalıştırdıktan sonra, yeni bir konsol ekranında, sistem yöneticilerinin
veritabanları üzerinde sorgu, crud ve diğer operasyonları
gerçekleştirebilmesi adına tasarlanmış mongo JavaScript kabuğunu çalıştırmalıyız.
Tam bu noktada, yeni başlayanlar için help komutu ile yardım almak,
hangi komutla ne tür operasyonların gerçekleştirildiğini görmek faydalı
olacaktır.
Şimdi bir kullanım senaryosu belirleyelim ve ardından da, crud
operasyonlarını gerçekleştireceğimiz collection’ları barındıracak
veritabanımızı oluşturalım.
Senaryomuz
Kodcu.com’da yayınlanan makaleleri kategori, başlık, içerik, tarih, yazar, etiket alanlarına sahip dokümanlar(unutmayın, MongoDB’de her kayıt, aslında bir dokümandır) olarak saklamak, bu dokümanların alanları üzerinde sorgulama, güncelleme ve silme işlemlerini gerçekleştirmek.
MongoDB’de, alışageldiğimiz sql veritabanlarında var olana benzer,
veritabanı oluşturmak için bir create komutu bulunmuyor. Böyle bir şeye
gerek de yok, çünkü MongoDB create işlemini, tanımladığınız veritabanına kayıt eklediğiniz anda gerçekleştiriyor. Yukarıda yer alan use kodcu
komutu ile biz, veritabanı tanımlama işlemini gerçekleştirmiş olduk.
Çıktıdan anlaşılabileceği gibi, use komutu ile varolan veritabanları
arasında seçim de yapabiliyoruz.
db.articles.save(article) komutuyla, kodcu veritabanı içinde articles collection‘ını(önceki makalede belirtildiği gibi, MongoDB’de collection‘lar, sql dünyasında tablolara tekabül etmektedir) oluşturduk ve öncesinde tanımladığımız article objesini bu collection’a ekledik. Böylelikle MongoDB’ye ilk kaydımızı(doküman) eklemiş olduk.
Aşağıdaki komutla da aynı sonucu elde ederiz.
Görüldüğü üzre, kodcu isminde veritabanımız, bu veritabanı içinde de
articles isminde bir collection oluşmuş durumda. Collection üzerinde
yapılan find() çağrısıyla da, ilgili collection’ın
barındırdığı kayıtları çıktılamış olduk. Bu kayıtta bizim manuel
girmediğimiz bir değer dikkatinizi çekmiş olmalı, id değeri.
MongoDB’de her bir dokümanın benzersiz/unique bir kimlik alanı vardır. Bu alan _id alanıdır. _id alanına manuel olarak değer atanmadığı takdirde, MongoDB bu alana ObjectId tipinde benzersiz bir kimlik değeri atamaktadır.
Oluşturduğumuz ilk kayıtta tags alanına null değer girdik, bu alanı güncelleyelim.
Şimdi yeni kayıtlar ekleyelim ve bu kayıtlar üzerinde sorgular çalıştırmayı görelim.
Şimdi, mevcut kayıtlar içinde, yazarı Altuğ Bilgin Altıntaş olan makaleleri arayalım.
Burada daha önce MongoDB’yi diğer NoSQL çözümlerden ayıran ve öne
çıkaran hususlardan birisi olarak bahsettiğim, istenilen alana göre
sorgulama yapabilme olanağını görmüş olduk. Yine aynı başlık altında
belirttiğim gibi, MongoDB kullanıcılarına, sorgularda düzenli
ifadelerden(regular expression) yararlanma olanağı da sunuyor. Bu bağlamda, içeriğinde Backbone ve JavaScript ifadeleri yer alan makaleleri bulmak istediğimizde şöyle bir söz dizimi kullanıyoruz.
MongoDB, düzenli ifadeleri
kullanırken yararlanabileceğiniz oldukça yararlı 4 seçenek sunuyor.
Bunlardan biri, büyük/küçük harf duyarsız sorgular için kullanılıyor.
Son olarak bir kaydı nasıl silebileceğimizi de görelim.
Burada ele alıp, konsol uygulaması üzerinden gerçekleştirdiğimiz işlemleri, MongoDB’nin sürücü desteğinde bulunduğu yazılım dilleriyle gerçekleştirmek de mümkün. Nasip olursa bir sonraki makalede, MongoDB’nin sağladığı native java driver ile burada gördüğümüze benzer işlemlerin nasıl gerçekleştirilebileceğini ele alacağız. twitter/@yasinaktimur
Kurulumu başarıyla tamamladıysak, artık teoriden pratiğe geçip, çekirdek MongoDB işlemlerini(CRUD operasyonları) gerçekleştirerek ilk kayıtlarımızı oluşturabiliriz.
Konsol
MongoDB, yönetimi için her türlü yeterliliğe sahip konsol uygulaması ile sisteminize kuruluyor. MongoDB yönetim için görsel bir araç barındırmamakla birlikte, bu iş için üçüncü parti çözümler bulunmaktadır.
Konsol yönetimi için öncelikle, birincil arka plan kabuğunu çalıştırmamız gerekiyor.
cs
:~ hakdogan$ mongod
cs
:~ cs$ mongo
> help db.help() help on db methods db.mycoll.help() help on collection methods sh.help() sharding helpers rs.help() replica set helpers help admin administrative help help connect connecting to a db help help keys key shortcuts help misc misc things to know help mr mapreduce show dbs show database names show collections show collections in current database show users show users in current database show profile show most recent system.profile entries with time >= 1ms show logs show the accessible logger names show log [name] prints out the last segment of log in memory, 'global' is default use db_name set current database db.foo.find() list objects in collection foo db.foo.find( { a : 1 } ) list objects in foo where a == 1 it result of the last line evaluated; use to further iterate DBQuery.shellBatchSize = x set default number of items to display on shell exit quit the mongo shellİlk olarak kurulumla birlikte gelen, varolan veritabanlarının listesine bakalım.
> show dbs
local 0.078125GB
Senaryomuz
Kodcu.com’da yayınlanan makaleleri kategori, başlık, içerik, tarih, yazar, etiket alanlarına sahip dokümanlar(unutmayın, MongoDB’de her kayıt, aslında bir dokümandır) olarak saklamak, bu dokümanların alanları üzerinde sorgulama, güncelleme ve silme işlemlerini gerçekleştirmek.
> use kodcu
switched to db kodcu
> article = { category: ["Yazılar"], title: "Lean Kanban Atölye Çalışması", content: "Kanban sistemi son 10 yıldır yazılım yönetimi alanında etkiliyici bir yaklaşımdır.", date: new Date('2013-04-11'), author: "Altuğ Bilgin Altıntaş", tags: [null]} { "category" : ["Yazılar"], "title" : "Lean Kanban Atölye Çalışması", "content" : "Kanban sistemi son 10 yıldır yazılım yönetimi alanında etkiliyici bir yaklaşımdır.", "date" : ISODate("2013-04-11T00:00:00Z"), "author" : "Altuğ Bilgin Altıntaş", "tags" : [null] } > db.articles.save(article)
Aşağıdaki komutla da aynı sonucu elde ederiz.
db.articles.insert({ category: [“Yazılar”], title: "Lean Kanban Atölye Çalışması", content: "Kanban sistemi son 10 yıldır yazılım yönetimi alanında etkiliyici bir yaklaşımdır.", date: new Date('2013-04-11'), author: "Altuğ Bilgin Altıntaş", tags: [null]})
> show dbs kodcu 0.203125GB local 0.078125GB > show collections articles system.indexes > db.articles.find() { "_id" : ObjectId("516a93d0b26184f91a8b985c"), "category" : [ "Yazılar" ], "title" : "Lean Kanban Atölye Çalışması", "content" : "Kanban sistemi son 10 yıldır yazılım yönetimi alanında etkiliyici bir yaklaşımdır.", "date" : ISODate("2013-04-11T00:00:00Z"), "author" : "Altuğ Bilgin Altıntaş", "tags" : [ null ] }
MongoDB’de her bir dokümanın benzersiz/unique bir kimlik alanı vardır. Bu alan _id alanıdır. _id alanına manuel olarak değer atanmadığı takdirde, MongoDB bu alana ObjectId tipinde benzersiz bir kimlik değeri atamaktadır.
Oluşturduğumuz ilk kayıtta tags alanına null değer girdik, bu alanı güncelleyelim.
> db.articles.update({_id:ObjectId("516a93d0b26184f91a8b985c")}, {$set: {"tags": ["lean","kanban","eğitim"]}}) > db.articles.find() { "_id" : ObjectId("516a93d0b26184f91a8b985c"), "author" : "Altuğ Bilgin Altıntaş", "category" : [ "Yazılar" ], "content" : "Kanban sistemi son 10 yıldır yazılım yönetimi alanında etkiliyici bir yaklaşımdır.", "date" : ISODate("2013-04-11T00:00:00Z"), "tags" : [ "lean", "kanban", "eğitim" ], "title" : "Lean Kanban Atölye Çalışması" }
>db.articles.insert({ category: ["Yazılar"], title: "Backbone.js ile ipleri elinize alın! – Ücretsiz Webiner", content: "Backbone.js, karmaşaya boğulmuş JavaScript kodunuzu bir yapı içerisine sokan ve geliştirimi zevkli bir ortam sunan bir JavaScript kütüphanesidir.", date: new Date('2013-04-10'), author: "Kodcu.Com", tags: [null]}) >db.articles.insert({ category: ["Java", "Tutorial", "Yazılar", "Yazılım"], title: "Java ile Apache Solr’a Veri İndeksleme", content: "Merhabalar, bir önceki yazımda Apache Solr kurulumundan, konfigürasyonundan, komut satırından Solr’a veri indeksleme ve bu veriler üzerinden sorgu yapabilme işlemlerinden bahsetmiştim.", date: new Date('2013-04-09'), author: "Cüneyt Yeşilkaya", tags: ["java", "java ile solr'a veri indekslemek", "solr", "solrj"]}) >db.articles.insert({ category: ["NoSQL", "Yazılar"], title: "Çekirdek MongoDB İşlemleri", content: "NoSQL kavramı hakkında farkındalık oluşturup...", date: new Date('2013-04-15'), author: "Hüseyin Akdoğan", tags: ["mongodb", "nosql"]})
> db.articles.find({author: "Altuğ Bilgin Altıntaş"}) { "_id" : ObjectId("516a93d0b26184f91a8b985c"), "author" : "Altuğ Bilgin Altıntaş", "category" : [ "Yazılar" ], "content" : "Kanban sistemi son 10 yıldır yazılım yönetimi alanında etkiliyici bir yaklaşımdır.", "date" : ISODate("2013-04-11T00:00:00Z"), "tags" : [ "lean", "kanban", "eğitim" ], "title" : "Lean Kanban Atölye Çalışması" }
> db.articles.find({content: {$regex: 'Backbone.*JavaScript'}}) { "_id" : ObjectId("516a9432b26184f91a8b985d"), "category" : [ "Yazılar" ], "title" : "Backbone.js ile ipleri elinize alın! – Ücretsiz Webiner", "content" : "Backbone.js, karmaşaya boğulmuş JavaScript kodunuzu bir yapı içerisine sokan ve geliştirimi zevkli bir ortam sunan bir JavaScript kütüphanesidir.", "date" : ISODate("2013-04-10T00:00:00Z"), "author" : "Kodcu.Com", "tags" : [ null ] }
> db.articles.find({content: {$regex: 'backbone.*javascript', $options: 'i'}}) { "_id" : ObjectId("516a9432b26184f91a8b985d"), "category" : [ "Yazılar" ], "title" : "Backbone.js ile ipleri elinize alın! – Ücretsiz Webiner", "content" : "Backbone.js, karmaşaya boğulmuş JavaScript kodunuzu bir yapı içerisine sokan ve geliştirimi zevkli bir ortam sunan bir JavaScript kütüphanesidir.", "date" : ISODate("2013-04-10T00:00:00Z"), "author" : "Kodcu.Com", "tags" : [ null ] }
> db.articles.find() { "_id" : ObjectId("516a93d0b26184f91a8b985c"), "author" : "Altuğ Bilgin Altıntaş", "category" : [ "Yazılar" ], "content" : "Kanban sistemi son 10 yıldır yazılım yönetimi alanında etkiliyici bir yaklaşımdır.", "date" : ISODate("2013-04-11T00:00:00Z"), "tags" : [ "lean", "kanban", "eğitim" ], "title" : "Lean Kanban Atölye Çalışması" } { "_id" : ObjectId("516a9432b26184f91a8b985d"), "category" : [ "Yazılar" ], "title" : "Backbone.js ile ipleri elinize alın! – Ücretsiz Webiner", "content" : "Backbone.js, karmaşaya boğulmuş JavaScript kodunuzu bir yapı içerisine sokan ve geliştirimi zevkli bir ortam sunan bir JavaScript kütüphanesidir.", "date" : ISODate("2013-04-10T00:00:00Z"), "author" : "Kodcu.Com", "tags" : [ null ] } { "_id" : ObjectId("516a943bb26184f91a8b985e"), "category" : [ "Java", "Tutorial", "Yazılar", "Yazılım" ], "title" : "Java ile Apache Solr’a Veri İndeksleme", "content" : "Merhabalar, bir önceki yazımda Apache Solr kurulumundan, konfigürasyonundan, komut satırından Solr’a veri indeksleme ve bu veriler üzerinden sorgu yapabilme işlemlerinden bahsetmiştim.", "date" : ISODate("2013-04-09T00:00:00Z"), "author" : "Cüneyt Yeşilkaya", "tags" : [ "java", "java ile solr'a veri indekslemek", "solr", "solrj" ] } { "_id" : ObjectId("516a9444b26184f91a8b985f"), "category" : [ "NoSQL", "Yazılar" ], "title" : "Çekirdek MongoDB İşlemleri", "content" : "NoSQL kavramı hakkında farkındalık oluşturup...", "date" : ISODate("2013-04-15T00:00:00Z"), "author" : "Hüseyin Akdoğan", "tags" : [ "mongodb", "nosql" ] }
Burada ele alıp, konsol uygulaması üzerinden gerçekleştirdiğimiz işlemleri, MongoDB’nin sürücü desteğinde bulunduğu yazılım dilleriyle gerçekleştirmek de mümkün. Nasip olursa bir sonraki makalede, MongoDB’nin sağladığı native java driver ile burada gördüğümüze benzer işlemlerin nasıl gerçekleştirilebileceğini ele alacağız. twitter/@yasinaktimur
Python json verileri liste haline çevirmek
Python'da json verileri json olarak kaydetip kaydedilen verileri liste halinde çekmek...
import json
array = '{"fruits": ["apple", "banana", "orange"]}'
data = json.loads(array)
print data['fruits']
# {u'fruits': [u'apple', u'banana', u'orange']}
Python 'da json loads nedir ?
import json
job = ‘{“sender”: “omgbbqhax”,”message” : “justin timeber ++” }’
mad = json.loads(job)
print mad[‘sender’]
print mad[‘message’]
job = ‘{“sender”: “omgbbqhax”,”message” : “justin timeber ++” }’
mad = json.loads(job)
print mad[‘sender’]
print mad[‘message’]
Python pickle nedir nasıl kullanılır .
import pickle
import redis
r = redis.StrictRedis(host='localhost', port=6379, db=0)
obj = ExampleObject()
pickled_object = pickle.dumps(obj)
r.set('some_key', pickled_object)
unpacked_object = pickle.loads(r.get('some_key'))
obj == unpacked_object
Pymongo Kullanımı örnekleri
#öncelikle pymongoyu import ediyorum ve pymongo clienti çekiyorum.
#3. satırda yeni bir client oluşturdum.
#4. satırda database’e bağlandım database ‘e collection a bağlanmak için kullanacağız ayrıca bazı fonksiyonlarda db işimize yarıyacak.
#collection ile koleksiyonumuzu seçtik bu sql ‘deki tablo anlamına geliyor.
#find_one() ile rastgele sanırım ilk datamızı çekiyor array değişkenlerine bakmak için kullanılabilir tabii içi boş halde istersek içini doldurabiliyor ve özel sorgular yazabiliyoruz.
import pymongo
from pymongo import MongoClient
client = MongoClient()
db = client.chatsocial
collection = db.channels
collection.find_one()
collection.find_one({“channel”: “victimia”})
#yukarıda channeli victimia olarak kayıtlı json ‘un tüm bilgilerini getiriyor.
data = collection.find_one({“channel”: “victimia”})
#istersek gelen jsonu yukarıdaki gibi bir değişkene atayarak işlem yapabiliyoruz.
Eğer kolleksiyonda değişiklik yapmak istersek :
collection.update({“channel”:”victimia”},{“$set”: {“selfs”: [“deneme”,”dene”]}}, upsert=False)
data = {“channel”:”yasinaktimur”, “selfs”: [“one”,”two”]}
mff = collection.insert(data)
#bu şekilde veri eklenebilir (aynı veri iki kez eklenebilir.)
print mff derseniz eklenen objenin id değerini verir siz id değeri girmesenizde #mongoDB otomatik id atar.
#3. satırda yeni bir client oluşturdum.
#4. satırda database’e bağlandım database ‘e collection a bağlanmak için kullanacağız ayrıca bazı fonksiyonlarda db işimize yarıyacak.
#collection ile koleksiyonumuzu seçtik bu sql ‘deki tablo anlamına geliyor.
#find_one() ile rastgele sanırım ilk datamızı çekiyor array değişkenlerine bakmak için kullanılabilir tabii içi boş halde istersek içini doldurabiliyor ve özel sorgular yazabiliyoruz.
import pymongo
from pymongo import MongoClient
client = MongoClient()
db = client.chatsocial
collection = db.channels
collection.find_one()
collection.find_one({“channel”: “victimia”})
#yukarıda channeli victimia olarak kayıtlı json ‘un tüm bilgilerini getiriyor.
data = collection.find_one({“channel”: “victimia”})
#istersek gelen jsonu yukarıdaki gibi bir değişkene atayarak işlem yapabiliyoruz.
Eğer kolleksiyonda değişiklik yapmak istersek :
collection.update({“channel”:”victimia”},{“$set”: {“selfs”: [“deneme”,”dene”]}}, upsert=False)
data = {“channel”:”yasinaktimur”, “selfs”: [“one”,”two”]}
mff = collection.insert(data)
#bu şekilde veri eklenebilir (aynı veri iki kez eklenebilir.)
print mff derseniz eklenen objenin id değerini verir siz id değeri girmesenizde #mongoDB otomatik id atar.
Django with SockJS
Few days ago Peter Bengtsson wrote an interesting blog post on SockJS:
The article is oldukça kısa, let me try to provide step-by-step instructions on how to start your first Django on SockJS project.
Currently there are a number of SockJS libraries that work with variety of servers (with quality and completeness varying):
I’ll focus on SockJS-tornado here. This means that the usual Django deployment instructions will not be fully applicable to our project (as we’ll be using Tornado Web HTTP server).
In the mentioned article Peter suggested starting two HTTP servers separately - one for Tornado and one for Django. In this blog post I’ll put Django behind Tornado, so a single Tornado web server will handle all the requests.
We will serve a static file -
Additionally you need to expose the file from
Finally, we need to create the
Put it into a
Finally, visit
The full project is available on github.
If you wish to use this setup on production, you will be able to get better performance by separating Tornado from Django. Django is blocking, Tornado is asynchronous, it makes sense to scale them separately.
The article is oldukça kısa, let me try to provide step-by-step instructions on how to start your first Django on SockJS project.
Python servers
First, it’s important to understand that there are many HTTP (okay, WSGI) servers for Django. SockJS requires pretty deep integration with the web server, and you will need to use a particular web server with SockJS support.Currently there are a number of SockJS libraries that work with variety of servers (with quality and completeness varying):
I’ll focus on SockJS-tornado here. This means that the usual Django deployment instructions will not be fully applicable to our project (as we’ll be using Tornado Web HTTP server).
In the mentioned article Peter suggested starting two HTTP servers separately - one for Tornado and one for Django. In this blog post I’ll put Django behind Tornado, so a single Tornado web server will handle all the requests.
Step 0: Python requirements
We will need few Python packages - Django, Tornado and SockJS-Tornado. Let’s install them into avirtualenv
environment:$ mkdir djangosockjs $ cd djangosockjs $ cat > requirements.txt << EOF tornado==2.1.1 sockjs-tornado==0.0.4 django==1.4.1 EOF $ virtualenv venv $ ./venv/bin/pip install -r requirements.txt
Step 1: New project
Let’s create a normal Django project and activate the virtual environment:$ ./venv/bin/django-admin.py startproject project $ . ./venv/bin/activate (venv)$ cd project/project
Step 2: Serving a static file
The Django project will be only a placeholder serving a single static file, without any logic inside. We only want to prove the usage of SockJS with Django using the same codebase and HTTP server.We will serve a static file -
index.html
. You need to update TEMPLATE_DIRS
in settings.py
file:TEMPLATE_DIRS = ( 'project/templates' )
urls.py
:from django.conf.urls import patterns, include, url from django.views.generic.simple import direct_to_template urlpatterns = patterns('', url(r'^$', direct_to_template, {'template': 'index.html'}), )
index.html
file. For simplicity we’ll borrow a very simple code from SockJS-node examples.(venv)$ mkdir templates (venv)$ cd templates (venv)$ wget https://raw.github.com/sockjs/sockjs-node/master/examples/echo/index.html (venv)$ cd .. (venv)$ cd ..
Step 3: Tornado code
Our SockJS code will accept any incoming realtime connections and will echo all the received data. Here’s the code for theproject/echosockjs.py
file:import sockjs.tornado class EchoSockjsConnection(sockjs.tornado.SockJSConnection): def on_open(self, request): print "sockjs: open" def on_message(self, data): print "data: %r" % (data,) self.send(data) def on_close(self): print "sockjs: close" def EchoSockjsRouter(prefix): return sockjs.tornado.SockJSRouter(EchoSockjsConnection, prefix).urls
Step 4: Tornado server
The last file we need to write, is the Tornado web server wrapper. It will do two things:- it will expose our SockJS endpoint
EchoSockjsConnection
under/echo
path - it will forward all other requests to normal Django app
#!/usr/bin/env python from tornado.options import options, define import django.core.handlers.wsgi import tornado.httpserver, tornado.ioloop import tornado.web, tornado.wsgi import project.echosockjs define('port', type=int, default=8000) wsgi_app = tornado.wsgi.WSGIContainer( django.core.handlers.wsgi.WSGIHandler()) tornado_app = tornado.web.Application( project.echosockjs.EchoSockjsRouter('/echo') + [ ('.*', tornado.web.FallbackHandler, dict(fallback=wsgi_app)), ]) server = tornado.httpserver.HTTPServer(tornado_app) server.listen(options.port) print "[*] Listening at 0.0.0.0:%i" % (options.port,) tornado.ioloop.IOLoop.instance().start()
tornado_main.py
file.Finito
And to start the server:(venv)$ chmod +x tornado_main.py (venv)$ DJANGO_SETTINGS_MODULE=project.settings ./tornado_main.py
http://localhost:8000/
and see if the echo is indeed working!The full project is available on github.
If you wish to use this setup on production, you will be able to get better performance by separating Tornado from Django. Django is blocking, Tornado is asynchronous, it makes sense to scale them separately.
Kaydol:
Kayıtlar (Atom)