NoSQL vertiabanı motorları son yıllarda çok popülerleşti, çünkü yapısız olmalarından dolayı daha kolay mimari değişiklik yapabileceğiniz veri yapıları olduğu için tercih edilmeye başladı. Ölçeklenebilirlik de klasik sql veritabanlarının sınırlı ve geleneksel kaldığı konulardı. NoSQL çıkışı kesinlikle modern bir çözüm olarak görülebilir.

İnternette bir çok karşılaştırma, performans analiz yazıları bulabilirsiniz sql ve nosql veritabanları hakkında. Ancak her yere uyan mükemmel bir çözüm yok. Benim gördüğüm kadarıyla, hibrid ve akıllıca kurgulanarak dengelenmiş ve dağıtılmış sistemler en yaygın kullanımlar. Yani bazı şeyleri nosql ile daha zor ve daha çok kodlama zamanı harcayarak yapabilir, bazı şeyleri de sql ile yönetemez ve yapamazsınız.

Daha teknik konulara giriyorsanız zaten bu yazıdan daha çoğuna ihtiyacınız var :-) Bu yazı daha çok mongo'ya giriş ve flörtleşme dönemi hakkında.

Eğer MongoDB'yi denemek istiyorsanız, mongodb sunucusunu bilgisayarınıza yüklemek zorunda değilsiniz. Kurulumu da çok zor değil fakat sadece denemek için sunucu kurulumu konfigurasyonu gibi şeylerle uğraşmak zorunda değilsiniz. Sadece istemci sürücülerini kurmanız yeterli. Bu konu hakkında mongodb dökümantasyonundakihttp://docs.mongodb.org/ecosystem/drivers/php/ sayfasını inceleyebilirsiniz.

MongoLab adında bağımsız bir servis sayesinde ücretsiz bir mongo veritabanı oluşturabilir ve denemelerinizi onun üstünde yapabilirsiniz. MongoLab veritabanı ve kullanıcınızı oluşturduktan sonra açık erişim izni veriyor. Dolayısıyla php'den veya herhangi diğer bir ortamdan doğrudan erişebiliyorsunuz.

Tabi ki servisin amacı mongo denemek isteyen insanlara servis sunmak değil. MongoLab bulut veritabanı servisi. Veri dosyalarının saklanmasını istediğiniz alt servisi (Amazon, Rackspace, Windows Azure vs...), hatta yüzeysel de olsa bölge seçebiliyorsunuz (Amerika veya Avrupa veya uzak doğudaki bir veri merkezi şeklinde).

MongoLab 500mblık bir alanı ücretsiz sağlıyor. Diğer sınırlamalarını bilmiyorum fakat ufak projeleriniz için veya deneme yapmak için ideal. Eğer uygulamanız çok veri kullanmaya başlarsa küçük, büyük paketleri veya kurumsal hizmetlerinden faydalanabilirsiniz.

MongoLab ile tamamen php mongo eklentisi bağımlılığından da kurtularak doğrudan servisin basit REST apisini kullanabilir ve tek başına çalışan bir uygulama yazmanız da mümkün.

Konumuz mongo iken, birkaç php-mongo interaksiyonunu denediğim bir php dosyasının kodunu doğrudan vermek istiyorum.
<?php

$mongo = new Mongo("mongodb://dbuser:dbpassword@*.mongolab.com:45297/test_database");
$db = $mongo->selectDB("test_database");

$action = isset($_GET['action']) ? $_GET['action'] : NULL;

?>
	<ul>
		<li><a href="?action=create_collection&name=test_collection_<?=rand(1,10000);?>">Create a test collection</a></li>
		<li><a href="?action=list_collections">List collections</a></li>
		<li><a href="?action=add_record_to_nonexistent_collection">Add record to non existent collection (it creates the collection)</a></li>
		<li><a href="?action=add_user">Add a user</a></li>
		<li><a href="?action=find_fatih">Find Fatih</a></li>
		<li><a href="?action=search_user">Search user</a></li>
	</ul>
<?php

switch ($action) {
	case 'create_collection':
		$name = isset($_GET['name']) ? $_GET['name'] : 'users';
		var_dump($db->createCollection($name, FALSE));
		exit;
		break;

	case 'list_collections':
		$_collections = $db->listCollections();

		print '<h3>Collecitons</h3>';
		foreach ($_collections as $collection) {
			print $collection . '<br />';
		}

		break;

	case 'add_user':
		$name = isset($_GET['name']) ? $_GET['name'] : 'test_user_' . rand(1, 100000);

		$users = $db->users;
		$result = $users->insert(array(
			'username'   => $name,
			'created_at' => date('Y-m-d H:i:s')
		));

		print '<h3>Result:</h3>';
		var_dump($result);
		exit;
		break;

	case 'add_record_to_nonexistent_collection':
		$collection = isset($_GET['name']) ? $_GET['name'] : 'collection_' . rand(1, 100000);

		// it creates the collection even if not exists.

		$collection_obj = $db->$collection;
		$result = $collection_obj->insert(array(
			'test' => 1,
			'time' => time()
		));

		print '<h3>Result:</h3>';
		var_dump($result);
		exit;
		break;

	case 'find_fatih':
		$users = $db->users;
		$result = $users->findOne(array("username" => 'fatih'));

		print '<h3>Fatih?</h3>';
		var_dump($result);
		exit;
		break;

	case 'search_user':
		$users = $db->users;
		$result = $users->find(array("username" => array('$regex' => 'test_')));

		print '<h3>Users:</h3>';
		foreach ($result as $_result) {
			var_dump($_result);
		}
		exit;
		break;

	default:
		break;
}
İlk satırlarda göreceğiniz dsn'i mongolab'den edineceğiniz sunucu adresi ve portunu (tahminimce her kullanıcı için farklı olma durumu var), veritabanı kullanıcı adınız ve şifrenizi belirterek tek parça string şeklinde belirttiginiz takdirde bağlantı sağlayabileceksiniz.

Mongo, küçük uygulamalarda veri düzeni zorunluluğu olmadığı için kullanması çok keyifli, fakat verinizi dökümante etmeyi unutmayın. Yoksa neyin ne olduğunu unutur veya ipin ucunu kaçırarak karmaşık bir veri yığını elde edebilirsiniz günün sonunda.

MongoDB dökümantasyonunu inceleyerek indeksleme, sorgulama ve veri yönetimi nasıl yapılıyor fikir edinebilirsiniz. Ayrıca php manual'daki bazı SQL örneklerinin php ile mongo sınıfında nasıl yapıldığını gösteren bu sayfayı:http://php.net/manual/en/mongo.sqltomongo.php incelemekte fayda var.

MongoLab servisinin adresihttps://mongolab.com
GoMediaZine'in Freelancer'lara yönelik yaptığı bir ankette Freelancer'ların en çok para harcadıkları şeyler sorulmuş, ama iş anlamında. Yani masraf olarak da değerlendirebiliriz.



Buna göre Freelancer'lar en çok yazılım ve donanıma para harcıyorlar. Tahmin de edebileceğiniz gibi orta ölçekli bir tasarımcının bir macbookpro + adobe serisinden en az bir yazılıma ihtiyaç duyduğunu ve bunu satın almak için ne kadar para harcayacağını bir yanda düşünüp bunun dışında kalan site üyelikleri, reklam masrafları vs gibi kalemleri düşündüğünüzde aradaki farkı görebilirsiniz.

Ankete isterseniz GoMediaZine'den siz de katılabilirsiniz.
Uzun süredir hiçbirşey yapmıyordum, sanırım yavaş yavaş kafam rahatlamaya, boş vakit bulmaya başladım. Forumdaki bazı ufak problemleri düzelttim. Şimdi tekrar kolları sıvadım ve kısa sürede birçok yenilik ve döküman görmenizi istiyorum açıkcası.

GrafikNeredeyse 3-4 günümü alan google chart api'nin kullanımıyla ilgili özenle hazırladığım döküman şurada :
Google Chart API ile grafik çizdirmek yildizyildizyildizyildizyildiz

Ayrıca macosx için ücretsiz yazılımlar hakkında da bir şeyler karaladım :
Mac OSX için ücretsiz yazılımlar


Sıradaki yapılacak iş : WebBlog için sayfalama, listeleme
Anasayfa'da gördüğünüz yazıların eskilerine ulaşamıyorsunuz, yakında ulaşacaksınız.
22 Haziran Pazar ´08   —   9 Yorum
MacOSX için hazırlanmış çoğu program (hatta neredeyse hepsi) oldukça kaliteli, zekice tasarlanmış yazılımlar oluyor. Bu kaliteli uygulamaların çoğu paralı ve kapalı kaynak kodlu, fakat hepsi değil :-)

Şimdi size benim sık kullandığım uygulamalar içinden ücretsiz ve açık kaynak kodlu olanları kısaca tanıtacağım.

İnternet Uygulamaları

Tabiki Firefox bu listede en üst sırada, ehrhangi bir açıklama yapmaya gerek yok sanırım.http://www.mozilla.org/products/firefox/ adresinden edinebilirsiniz. Aynı zamanda firefox'un mac için daha entegre çalışır versiyonu olan Camino'yu da kullanabilirsiniz. Camino sistem uygulamalarını kullanabilen (şifreleri keychain'de saklamak gibi), macosx'in altyapılarını kullanan (cocoa arayüzü) hızlı bir tarayıcı. Camino'yuhttp://www.caminobrowser.org/ adresinden edinebilirsiniz.

CyberDuck FTP, SFTP gibi dosya transfer işlerimin neredeyse hepsini CyberDuck ile yapıyorum. Açıkcası bugüne kadar gördüğüm en sade ve kullanışlı ftp istemcisi.
CyberDuck'ıhttp://cyberduck.ch/ adresinden edinebilirsiniz.



Anlık yazışma için Adium X'i kullanıyorum. Açık kaynak kodlu olan Gaim (artık Pidgin)'in iletişim kütüphanesi ile çalışan ve çok yetenekli olan adium ile gaim'deki gibi neredeyse tüm anlık yazışma protokollerinde hesap ekleyip sade ve esnek arayüzde anlık yazışma ihtiyacınızı karşılayabilirsiniz.

IRC için adium'u kullanabileceğiniz gibi Colloquy ile de X-Chat'e benzer arayüzde, yine görsel açıdan oldukça çok seçenek bulunuyor.http://colloquy.info/ adresinden bilgi alabilir ve indirebilirsiniz.

RSS okuyucu olarak yakın zamanda ücretsiz hale gelen NewsFire'ı önerebilirim. Yine sade arayüzü ile çok sayıda rss kaynağını yönetebilmenizi sağlayan okuyucuyuhttp://www.newsfirerss.com/ adresinden edinebilirsiniz.

Bittorrent için de Transmission'u kullanabilirsiniz,http://www.transmissionbt.com/ adresinden indirilebilir.

Multimedya Uygulamaları

Tüm videolarınızı rahatlıkla açabileceğiniz sadece macos için değil tüm işletim sistemleri için iyi bir seçenek olan vlc (http://www.videolan.org/) veya mplayer (http://www.mplayerhq.hu/) video işlerinizi görecektir. Bunun yanı sıra encode rip gibi işlerinizi de Handbrake (http://handbrake.m0k.org/) ile yapabilirsiniz. iPod için video çevirmek için kullandığım rip yazılımı Handbrake idi.

Aynı zamanda (sanırım eskiden democracy-tv olan) Miro da video ve youtube istemcisi olarak oldukça kullanışlı.http://www.getmiro.com/

Diğer

Gimp, inkscape, thunderbird'den hiç söz etmiyorum bile :-)

MAMP ile Apache + PHP + MySQL kurulumunu sürükle bırak kolaylığında yapabilirsiniz. Normal versiyonu ücretsiz ki tüm işi zaten yapıyor.http://www.mamp.info/ adresinden edinebilirsiniz. PRO versiyonu ise sadece yönetim araçları içeriyor.

QuickSilver bir uygulama başlatıcısı, linux'ta ve windows'ta benzeri programlar çıktı ancak bu icadı ilk yapanlar quicksilver-cılardır. index'e göre hızlı uygulama ve dosya bulmayı sağlayan masaüstü çalışma hızınızı artırabilecek bir uygulama.http://blacktree.com/?quicksilver adresinden edinebilirsiniz.

OpenOffice'i kullanabilmenin yanında Aqua arayüzüne sahip bir ofis paketi kullanmak isterseniz NeoOffice paketini deneyebilirsiniz. Zira OpenOffice'in macosx'e daha entegre çalışabilmesi için yamalanmış pakettir.http://www.neooffice.org/


Yakın zamanda keşfettiğim bir uygulama yükleyici olan MacLibre ise yukarıda saydığım tüm programları kolayca yükleyebileceğiniz bir açık "kaynak kodlu yazılım" yükleyici. MacLibre'yi indirip kullanmak istediğiniz açık kaynak kodlu yazılımları seçip kur demeniz yetiyor. Hepsini tek hamlede son versiyonlarını indirip kurmayı sağlıyor.http://www.maclibre.com/ adresinden indirebileceğiniz uygulamanın windows için de aynı işi yapan versiyonu isehttp://www.winlibre.com/ adresinde bulunuyor.

MacOSX için ücretsiz uygulamalar hakkında listeye ulaşmak istersenizhttp://www.opensourcemac.org/ adresini ziyaret edebilir veya google'ı zorlayabilirsiniz :-)


Hazırlayan : Mehmet Fatih YILDIZ

Popüler Etiketler

network social facebook svn subversion proje örnek kod imza signature mail rss xml form button jquery macosx apple osx player integration api service blog wanda kampanya iOS webkit web app app music google html javascript js media sosyal medya twitter istatistik insanlar css3 css windows php sql query injection startups auth search digital mysql select ubuntu workspace laptop notebook htaccess apache route router mod_rewrite lisans license support export tool pharma hack wordpress seo linux fstab ntfs nedir iphone dokuman plugin ios ipad app store store in-app purchase purchase verification storekit itunes connect itunes server kontrol yapıları if while widget db code mootools generator logo html5 box compile kurulum editor coding input textarea switch session lifestream parse browsers meta share firefox ajax http open source internet explorer opengraph graph optimizasyon analyse procedure ie browser mobile less compiler on-the-fly icon ikon grafik download banner calendar pear mdb2 prepare execute mssql pgsql link mfyz design database cookie subdomain optimization ipucu table url tebrik www redirect crossdomain development wireless statistics sitemap cache assets framework developer doritos tytz portfolio free gimp howto nasıl newsletter ide phpstorm jetbrains deployment version control git object ui ux icons login kitap cms radio connect xmlhttprequest chart applications date diff zaman tarih spam job regex konsol terminal ruffles fql subscription screen oyun language style bootstrap xhtml internet