January 24, 2013

උබුන්ටු වල Close Button වමෙන් දකුනට ගෙනියන හැටි

මම මේ ලගදි blog කියව කියව යද්දි දැක්කා Linux Mint ගැන පෝස්ට් එකක්. ඉතින් ඒකේ කියලා තිබුනා සමහරු Close Button එක දැක්කාම අව්ල් වෙනවා කියලා. ඉතින් සමාන්‍යෙයන් අපි පුරුදු තැනට Close Button එක ගන්න හැටි තමා මම මේ පෝස්ට් එකෙන් කියන්න හදන්නේ.

පලවෙනියට මේක ලේසියෙන් කරන්න නම් gnome-tweak-tool එක install කරගන්න ඕනේ. Ctrl+Alt+T press කරන්න. ඊට පස්සේ පල්ලෙහා තියන කමාන්ඩ් එක ටයිප් කරන්න.

sudo apt-get install gconf-editor

ඊට පස්සේ පහල තියන කමාන්ඩ් එක ටයිප් කරන්න.

gconf-editor

දැන් එන වින්ඩෝ එකේ / expand කරලා apps/ metacity/ general click කරන්න. ඊට පස්සේ button_layout එකේ Value එක menu:minimize,maximize,close කියලා වෙනස් කරලා. වින්ඩෝ එක ක්ලෝස් කරන්න. ඇප්ලයි වුනේ නැත්තම් රිස්ටාර්ට් කරලා බලන්න.

Screenshot from 2013-01-24 11_44_29

January 23, 2013

Mac OS Mountain Lion on VirtualBox

සෑහෙන කාලයක් මම Mac OS පාවිච්චි කරන්න ආසාවෙන් හිටියත් මට ඇපල් කම්පුටරයක් නැති හන්දා පාවිච්චි කරන්න බැරි වුනා. ඒත් මම දැනන් හිටියේ නෑ සාමාන්‍ය කම්පුටර් වලට Mac OS දාන්න පුලුවන් කියලා. ඉතින් මම දවසක් එහෙ මේහෙ ඉන්ටර්නෙට් එකේ යනකොට දැක්කා Mac OS Virtual Box වල ඉන්ස්ටෝල් කරන කතාවක් ඉතින් මම ඒ පෝස්ට් එකේ තියන විදිහට ට්‍රයි කරලා Mac OS දැම්මා. තාම වැඩි දවසක් නැති හන්දා කියන්න තරම් ලොකු දෙයක් නැ Mac OS ගැන.

ඒත් සරලවම කිව්වොත් යුනික්ස් බේස් හන්දා ලොකු වෙනසක් පේන්නේ නැ මට ලිනක්ස් වගේම තමා ගොඩක් දේවල්. මම ඉන්ස්ටෝල් කලේ Intel DH67CL Motherboard එකක. ඔයාලත් කැමති නම් ට්‍රයි කරලා බලන්න.

http://www.macbreaker.com/2012/07/mountain-lion-virtualbox.html

Mac OS Virtual Machine

For a long time I was suffering because I wanted to use Mac OS. But I didn’t have any apple computer to use it. Also I didn’t try to install Mac OS to Virtual Machine. But after joining Pearson I saw few Apple machines daily. And my eager to use Mac OS got exponentially increased. Then I started to thing about Mac OS Virtual Machine. I had downloaded a genuine Mac OS installation long ago. But it was not a good one to install Mac OS to Virtual. So then I found this article.

http://www.macbreaker.com/2012/07/mountain-lion-virtualbox.html

And I tried with its instruction in little bit different way. I used Ubuntu 12.10 as host operating system. My computer had Core i7 processor with DH67CL motherboard. So I was able to successfully install and run Mac OS Mountain Lion as a Virtual Machine on Ubuntu 12.10 with Oracle VirtualBox.

January 22, 2013

MongoDB – Part 2

මම ඊයේ ලියපු පෝස්ට් එකෙන් මොන්ගෝ ඩිබි ස්ටාර්ට් කරන හැටි. අපි බලමු කොහොමද මොන්ගෝ ඩිබි වල ඩේටාබේස් හදන හැටි ඩේටා සේව් කරන, ඩේටා අරගන්න විදිහ.

හැම දේටම කලින් අපි දැන ගන්න ඕන දෙයක් තමා මොන්ගෝ ඩිබි වල ස්ට්‍රක්චර් එක. මොකද අපි දැනට පුරුදු වෙලා ඉන්න ටේබල් වලට වැඩිය ටිකක් වෙනස් දෙයක් තමා මොන්ගෝ ඩිබි වල තියෙන්නේ.

මොන්ගො ඩිබි වල  Database, Collection, Document කියන තුන අපි දැනගන්න ඕනේ. ඩේටාබේස් එක නම් අපි සමාන්‍යෙයන් දන්න ඩේටාබේස් එකම තමා. කලෙක්ෂන් කියන්නේ ටේබල් වලට සමාන දෙයක්. හැබැයි කලෙක්ෂන් වල හරියටම Schema එකක් නැහැ. Document කියන්නේ රෙකෝඩ් එකක් වගේ දෙයක්.

අපි බලමු ඩේටා බේස් එකක් හදන්නේ කොහොමද කියලා. ඩේටා බේස් එකක් හැදෙන්නේ ඇත්තටම අපි ඒ ඩේටා බේස් එක ඇතුලේ ඩේටා සේව් කලොත් හරි නැත්නම් කලෙක්ෂන් එකක් හරි හැදුවොත් තමා.

use <database name>

අපිට sample කියලා ඩේටාබේස් එකක් හදන්න ඕනේනම් ඉස්සෙල්ලා සිලෙක්ට් කරන්න ඕනේ. ඒකට පහල තියන කමාන්ඩ් එක මොන්ගෝ ඩිබි ෂෙල් එකේ ටයිප් කරන්න ඕනේ. කලින් පෝස්ට් එකේ නතර කරපු තැනින් ඉස්සරහට තමා මම මේ පොස්ට් එක ලියන්නේ.

use sample

ඉහත කමාන්ඩ් එකෙන් අලුත් ඩේටාබේස් එකට මාරු වුනත්. ඒකට අදාල ෆයිල්ස් හැදෙන්නේ නැ. \data\db එක ඇතුලට ගිහින් බැලුවොත් ඔයාලට පෙනෙයි තාම sample කියලා ෆයිල් හැදිලා නෑ කියලා.

කලෙක්ෂන් එකක් හදන්න පහත තියන කමාන්ඩ් එක ටයිප් කරලා එන්ටර් කරන්න.

db.createCollection(“users”);

දැන් ඩේටාබේස් එක හැදිලා ඉවරයි. දැන් අපිට තියෙන්නේ ඩේටා සේව් කරන්න. මේකෙදි ඩේටා සේව් කරන්නේ JSON විදිහට. අපි බලමු සාම්පල් රෙකෝඩ් එකක් සේව් කරලා.

db.users.insert({ name:”Dedunu”, org:”Pearson Education” })

සේව් වුන ඩේටා ආපහු බලන්න පහත කමාන්ඩ් එක එන්ටර් කරන්න.

db.users.find()

අපි තවත් ඩේටා එන්ටර් කරලා බලමු.

db.users.insert({ name:”Angelo”, org:”Softlogic”})

ආපහු db.users.find() කියලා ටයිප් කරලා ඩේටා සේව් වුනාද කියලා චෙක් කරලා බලන්න පුලුවන්.

mongo sample shell

January 21, 2013

MongoDB

මම කලින් පෝස්ට් එකේදි කිව්වා NoSQL ගැන. ඒවගේම මොන්ගෝ ඩිබි කියන්නේ NoSQL ඩේටාබේස් එකක්. ඉතින් මොන්ගො ඩිබි කියන්නේ Document Base ඩේටා බේස් එකක්. අපි දන්න අනික් ඩේටාබේස් හැම එකක් වගේම දත්ත සේව් කරන්නෙ Record හැටියට. ඉතින් මේවායේ ඩේටා ටයිප්ස් තියනවා අලුතෙන් කොලම් ඇඩ් කරද්දි මුලු ටේබල් එකටම බලපානවා ඒවගේ නානප්‍රකාර ගැටලු තියනවා. නමුත් මොන්ගො ඩිබි වල මේවගේ සිමාවල් නැ. මොකද දත්ත සේව් වෙන්නේ Document විදිහට ඒ ඒ Document එකට අදාල කොලම් වගේ දේවල් තියෙන්න පුලුවන්. කිසිම වෙලාවක් Schema එකකට බැදිලා නෑ. මේක ඇත්තටම එක පැත්තකින් පාඩුවක් වුනත් තව පැත්තකින් වාසියක්.

අපි බලමු මොන්ගො ඩිබි එක්ක වින්ඩෝස් වලදි වැඩ කරන්නේ කොහොමද කියලා.

http://www.mongodb.org/downloads

ඉහත තියන සයිට් එකට ගිහින් පලවෙනියට මොන්ගො ඩිබි ඩව්න්ලෝඩ් කරගන්න ඕනේ. හැබැයි මේක අනික් ප්‍රසිද්ද DBMS වගේ ලොකු ඩව්න්ලෝඩ් එකක් නෙමෙයි. 60MB-70MB අතර ප්‍රමාණයක් තමයි ගොඩක් වෙලාවට වෙන්නේ. ඊට පස්සේ අපි කරන්න ඕනේ මේක extract කරන එක.

අපි හිතමු D:\ ඩ්‍රයිව් එකට extract කලා කියලා. දැන් අපි D:\ ඩ්‍රයිව් එකේ හදන්න ඕන ෆෝල්ඩර් වගයක් තියනවා. ඒ තමා පහත තියන ෆෝල්ඩර්.

  • D:\data
  • D:\data\db

මේ ඉහත තියන ෆෝල්ඩර් වල තමා දත්ත සේව් වෙන්නේ. දැන් ඊලගට තියෙන්නේ ඩේටාබේස් සර්වර් එක ස්ටාර්ට් කරන එක. ඒකට mongodb ෆෝල්ඩර් එක ඇතුලේ තියන bin එකේ mongod.exe එක ඩබ්ල් ක්ලික් කරන්න. හරියට ෆෝල්ඩර්ස් හැදුවා නම් ඒ වින්ඩෝ එක ක්ලෝස් නොවි තියනවා.

mongod

MongoDB වලට Connect වෙන විදිහ

මොන්ගො ඩිබි හරියට රන් වෙනවා නම් දැන් අපි කරන්න ඕනේ කනෙක්ට් වෙන එකනේ. ඒකට mongo.exe රන් කරන්න.

mongo

දැන් ඉතින් තියෙන්නේ මොන්ගො ඩිබි එක්ක වැඩ කරන්න. මම ඉස්සරහට තවත් පෝස්ට් එකකින් වැඩ කරන හැටි දාන්නම්.

Big Data සහ NoSQL

මම මේ දවස් වල ගොඩක්ම සර්ච් කරන්නේ ඉගෙන ගන්නේ ඩේටාබේස් ගැන. මොකද මම වැඩ කරන්නේ ඩේටාබේස් ටීම් එකක හන්දා. දැනට ලෝකේ තියන ඩේටාබේස් සිස්ටම් වල වෙනසක් වෙන්න යනවා කියන එක තමයි හැමෝගෙම අදහස. මොකද මේ Big Data නිසා.

මෙච්චර කාලයක් Relational Database තමා හැම සිස්ටම් එකක්ම වාගේ පාවිච්චි කලේ. ඒත් දැන් අලුතෙන් එන ගොඩක් සිස්ටම් වලට Relational Database පාවිච්චි කරන එක අඩු වෙන්න වගේ යන්නේ. මොකද මේ ඩේටාබේස් වලින් ගොඩක් අඩු කාර්යක්ෂමතාවයක් තමා ලැබෙන්නේ. ඒත් මේ NoSQL ඩේටාබේසස් ඔක්කෝම වීශේෂ කාර්යකටම තමා නිර්මාණය කරලා තියෙන්නේ. ඒ ඒ  NoSQL ඩේටාබේස් එකිනෙකට වෙනස් කටයුතු වලට පාවිච්චි කරන්න තමා නිර්මාණය කරලා තියෙන්නේ.

ඒවාට උදාහරණ කිහිපයක් තමා,

  • MongoDB
  • Cassandra
  • RavenDB
  • TitanDB
  • HBase

සමහර විට මේක පරිගණක පද්ධති වල ලොකු වෙනසකට යොමු කරන දෙයක් වෙන්නත් පුලුවන්

Retrieving data from MongoDB database using PHP

Previous post I wrote about how to install MongoDB driver on PHP when we are using windows. In linux (I mean Ubuntu) there were no issues on installing that. So after that I want to connect to MongoDB to take data.

<!DOCTYPE html>
<html>
    <head>
        <title>MongoDB Connection</title>
    </head>
    <body>
        <?php
        $m = new MongoClient();
       
        $db = $m->phpdb;
       
        $col = $db->pageind;
       
        $rs = $col->find();
       
        foreach ($rs as $rec)
        {
            echo "<a href='" . $rec['url'] . "'>" . $rec['name'] . "</a><br />";
        }
            ?>
    </body>
</html>

Below Code part I inserted between PHP document. This MongoDB server is not running in auth mode. If your MongoDB is running in auth mode and in different ports, you can specify them with connection string. And my database structure was like this.

Database : phpdb

Collection : pageind

Sample document in a database was like below.

{

_id : 1,

name : “Dedunu Blog”,

url : “http://www.dedunu.info/”

}

January 08, 2013

PHP MongoDB Driver not working!

In Semester 3 I have PHP unfortunately not MongoDB. So I was doing PHP practicals while I was doing my office things. So suddenly MongoDB came to my mind. Then I tried to connect to MongoDB with PHP. Although I have already tried with .NET. I never tried MongoDB with PHP. So I installed IIS 8.0 and PHP 5.3.1. 

Then I downloaded the driver from github. Extracted it to C:\Program Files (x86)\PHP\v5.3\ext\. 
I added the entry to php.ini properly. Then I restarted IIS using iisreset. But MongoDB Driver for PHP was not loaded properly. Then I was checking and doing so many things but nothing worked.

Try this way!

1. Download driver from github.

2. Extract zip file.

3. Copy php_mongo-1.3.2RC1-5.3-vc9-nts.dll to C:\Program Files (x86)\PHP\v5.3\ext\. And rename it to php_mongo.dll.

4. Then take properties of php_mongo.dll and unblock executable.
5. Then go to C:\Program Files (x86)\PHP\v5.3\ and open php.ini as Administrator and add below line to end of the file.

extension=php_mongo.dll

6. Then take a command prompt as administrator and run below command.

iisreset

Enjoy MongoDB with PHP!

January 02, 2013

How to setup a replication set in MongoDB?

I just wanted to setup a replication set in MongoDB to check the behavior of MongoDB replica set.
For this demonstration I use MongoDB 2.2.0 and PowerShell 2.0.
First I want to create directories for MongoDB replication instances. I’m going to for a replication set with three nodes. So because of the I need to create there MongoDB data directories.

New-Item -ItemType Directory -Path \data\
New-Item -ItemType Directory -Path \data\repDb1
New-Item -ItemType Directory -Path \data\repDb2
New-Item -ItemType Directory -Path \data\repDb3
New-Item -ItemType Directory -Path \log

Now copy MongoDB Binaries to the drive that you ran above PowerShell commands. Change directory to MongoDB bin. And create three separate configuration files in MongoDB bin folder with notepad or any other plain text editor.
  • config1.cnf
  • config2.cnf
  • config3.cnf
Create config1.cnf file with below content.

logpath=d:\log\log1.txt
dbpath=d:\data\repDb1
port=9991
replSet=samplecluster
rest=true

Create config2.cnf file with below content.

logpath=d:\log\log2.txt
dbpath=d:\data\repDb2
port=9992
replSet=samplecluster
rest=true

Create config3.cnf file with below content.

logpath=d:\log\log3.txt
dbpath=d:\data\repDb3
port=9993
replSet=samplecluster
rest=true

Now we are going to run MongoDB. For that you must go to MongoDB bin folder. And Press Shift and while you pressing shift right click on free area. And select ‘Open command window here’




Now you will get a Command Prompt. Type below three commands on your command prompt.
start mongod –-config config1.cnf
start mongod –-config config2.cnf
start mongod –-config config3.cnf
Now you should login to one of those MongoDB instance to initiate the MongoDB replication set. For that type below command.

mongo localhost:9991
Now you have a MongoDB shell and you can initiate replication set. Type below command to initiate MongoDB replication set.

rs.initiate()
This command will take some time. Don’t worry most of the times its not stuck. Then you have to add other instances to this MongoDB replication set.

rs.add(“localhost:9992”);
rs.add(“localhost:9993”);
This will return { “ok” : 1 }. If it is not please replace your machine name to “localhost”. Now it is done. Your MongoDB replication is up and running!!!

Start Here! Learn HTML5

Another good book for starter from Oreilly. If you don’t know how to save a HTML file with your notepad. You can learn it from this book too. And gradually author moves to advanced topics. Also this book contains CSS.

Author don’t use confusable terminology. So its really cool for novice people. I got addicted when reading first chapter. At last chapter he introduce Microsoft Expression Web. It is also again nice tool to develop web pages. And you can learn best practices of HTML from this book too. For example read below extract.

The nonbreaking space entity &nbsp; is very popular for creating spaces, and in fact,
many WYSIWYG web site creation programs like Microsoft Expression Web and Adobe
Dreamweaver insert them for you when you press the spacebar. Don’t use nonbreaking
spaces instead of good layout techniques, though. For example, if something needs to be
indented a certain amount, use the correct HTML tags and styles for indenting it, don’t just
“space over” with a half-dozen &nbsp; codes.

Those points are emphasized. So this book is a nice book to start your HTML life. There are three appendixes which helps to learn about ‘Designing for Usability’, ‘Designing for Accessibility’ and cool Quick reference. Quick reference was something remarkable to me. It has only two different sections which contains what are the new in HTML5 and what are the thing getting deprecated in HTML5. It’s a smart appendix.

I recommend this book for beginners who wish to begin learn HTML or HTML5 both. Name of this book deserves it 100%!!!

You can buy it from here.

DISTINCT and ORDER BY together

When we are using DISTINCT we can’t use ORDER BY as we want. If you are going to use DISTINCT when you have ORDER BY, all ODER BY attributes should be in SELECT phrase.

USE AdventureWorks2012;

-- Works fine
SELECT
BusinessEntityID
FROM HumanResources.
Employee
ORDER BY BirthDate
;

-- Fails
SELECT DISTINCT
BusinessEntityID
FROM HumanResources.
Employee
ORDER BY BirthDate
;

-- If you are going to sort with
distinct result should consist attribute that you are sorting
SELECT DISTINCT
BusinessEntityID
FROM HumanResources.
Employee
ORDER BY BusinessEntityID
;

Otherwise it fails with following error.

ORDER BY items must appear in the select list if SELECT DISTINCT is specified.