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

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