Nov 25, 2015

Fluent NHibernate Configuration

I have a C# project which I have to develop for MS SQL Server, customer requirment, but since I do not have a license for it. Then I decide to go with NHibernate but NHibernate is relied on XML based configuration, which is not my preference, I research a little bit more, definitely I found out Fluent NHibernate is a good replacement for XML based configuration. I can map the entities with C# code that can reduce the errors prone in my code.

I use Firebird database in the development, though it can be used in production, I define the mapping as normal NHibernate (also Hibernate in Java). But when I try to build the configure for Fluent NHibernate, it's not the same as SQLite example, I try to fine the solution one by one from StackOverflow and the steps below can solved my problem.

  • Add the reference for NHibernate and its dependecies (NHibernate.dll, Iesi.Collections.dll)
  • Add a reference for Fluent NHibernate (FluentNHibernate.dll), you can get it from nuget packacge manager
  • Add a reference for Firebird dotnet connection (FirebirdSql.Data.FirebirdClient.dll)
  • Follow the step in Fluent NHibernate wiki
  • In the CreateSessionFactory adapt the code below
private static ISessionFactory CreateSessionFactory()
            FbConnectionStringBuilder conStr = new FbConnectionStringBuilder();
            conStr.Database = @"D:\<path to your firebird database>\xxx.fdb";
            conStr.UserID = "SYSDBA";
            conStr.Password = "masterkey";
            //conStr.DataSource = "";
            conStr.Charset = "UTF8";
            conStr.Dialect = 3;
            conStr.ServerType = FbServerType.Default;

            FirebirdConfiguration cfg = new FirebirdConfiguration()
            return Fluently.Configure()
                .Mappings(m => m.FluentMappings.AddFromAssemblyOf())
Now you are ready to run your code

Nov 22, 2015

Standalone MySQL setup

Currently I am learning Spring Boot. I follow some tutorials but there is a part requires to use DBMS. So I decide to use MySQL as a database. But I don't want to install it as as service neither install with Windows installer.

I decide to download an archive version to run it as standalone application. I expect it will be ready to use as the installer version but it is not as easy as I think.

The first thing you have to do after extract the archive file is to copy my-default.ini to my.ini
Open my.ini with notepad or text editor that you like, edit these lines as show below

basedir = X:/<pat to your mysql folderh>/mysql-5.7.9-winx64
datadir = X:/<pat to your mysql folderh>/mysql-5.7.9-winx64/data
Important! Don't forget to create the folder data to the path they you refer in datadir 

Second you have to mysql bin directory and then input the following command in command prompt
mysqld --initialize --console
--console is optional to see the verbose in command prompt

If you forget this step the mysql daemon will prompt some error on about cannot find table mysql.user and mysql.plugin etc. Because there is no database has been initialized yet.

Once it has finished the command prompt will let you know the temporary password, use that password to log in with mysql client and change to another password as you desire with below command
SET password=PASSWORD('yourpasswordhere');
Next time you can log in with your new password.

Nov 28, 2014

Xiao Mi band reached 1 million ship out

Today Xiao Mi band weibo official account announced that they already ship out 1 million bands since it was launch.

For more information follow the link

Oct 13, 2014

Yii 2.0.0 is released

It's been awhile since Yii 1.x.x was released. This time is the time to move forward for new generation of Yii after intensive development almost 10,000 commits over 300 developers.
You can find more information about Yii 2.0.0 release here

Sep 8, 2013

Set up uncache proxy server - Privoxy

In this article I will show you how to configure privoxy on Windows.

I note this method on my blog because I have some problems with my VPN service provider. They don't allow me to share my proxy on another devices in my LAN if I need to share I have to pay more extra money. Thus it would be better I can set up my PC to be a proxy server and by pass to this VPN route.

You need to do is download an program Privoxy. The version I download is privoxy_setup_3.0.21.exe.(510.4 kB) which is not a small application but it is very useful.

You need to install it on your PC. Just only click next next and next..

You need to do is configure your Privoxy server to by pass to VPN proxy server.

Edit Main Configuration
 Append 2 lines in section 5.1 to enable forward proxy to VPN proxy.
forward    /
forward :443
 Modify 1 line in section 4.1
listen-address -> listen-address
Above config tell privoxy to listen on any IP address, in this case I need to connect from my mobile device.

Last but not least, you need to allow incoming inbound on port 8118.
To do that you have to launch firewall configuration Start > Type "Firewall" > Select "Windows Firewall with Advanced Security"

After firewall setting shows please follow the below steps.

Windows Firewall with Advanced Security
1. Select Inbound Rules, then 2. create New Rule..

 3. Select Port to allow the connections from another deviced


4. Select TCP because Proxy server is based on TCP protocol
5. Input 8118 in Textbox

6. Allow the connection to accept connection from another devices

7. Allow all to accept connection from any interfaces, due to in Windows 7 you can specific each interface that connected is Private Network, Domain Network or Public Network. Thus you can do more fine-grain as you want

8. Set the name for the Incoming Inbound rule

 Then you can go to your browser to using the proxy now.

Sep 4, 2013

Mighty No. 9 was already funded

Yesterday I received an email from Kickstarter that the viral crowdfunding game "Mighty No. 9" was already funded. This project is reunion project of the same team with "Rockman". At the time I am writing now it was already achieved Mac and Linux version by $1,387,057 (the achievement is $1,350,000) but it is still far away from console version if you would like play it on your favorite console you can pledge the project on

By the way the game will be launch in 2015 and please accept the risk if the project would not success.

Aug 31, 2013

Enable Skype icon on Unity notification panel on Ubuntu 13.04

Due to I switch back from Windows to Ubuntu. The most important program for me is "Skype". After I download installation from Skype official website it seems there is no problem at all I am able to installed in by Ubuntu Software Center. The problem  was occurring after I launch Skype and close the main window opens I expect it will be closed and shown the icon on notification panel area. But there is no icon on notification area then I launch Skype application again the windows instance comes up thus I try to log in again, suddenly I get an error message about another instance was already running.
After I search on google a bit I found that Ubuntu 13.04 was removed system tray whitelist feature from its unity. so I found this website to re-enable the whitelist by below instruction.
sudo add-apt-repository ppa:timekiller/unity-systrayfix
sudo apt-get update
sudo apt-get upgrade
After finished installation I do the following steps to add Skype to notification whitelist

Restart unity
ALT + F2 and enter "unity" or logout ubuntu to finish it
Checking if notification whitelist works by below command
gsettings get com.canonical.Unity.Panel systray-whitelist
You suppose to get something like below result comes out
['JavaEmbeddedFrame', 'Wine', 'Update-notifier']
Above result means you successfully install notification whitelist but the only applications was listed above are able to be shown in notification area. so we are going to append Skype in the list by editing in Dconf Editor.
 ['JavaEmbeddedFrame', 'Wine', 'Update-notifier']
Launch Dconf Editor and explore the configuration path to com.canonical.Unity.Panel and you will see the key "systray-whitelist". The default value would be "['JavaEmbeddedFrame', 'Wine', 'Update-notifier']" like we get it by the command line above. Then you append 'Skype' to the list as below picture.

systray-whitelist value in Dconf Editor
If you are command line lover you are able to use this command line
gsettings set com.canonical.Unity.Panel systray-whitelist "['JavaEmbeddedFrame', 'Wine', 'Update-notifier', 'Skype']"
Notice: Put the command line in one line because of blogger layout may split it to be display in 2 lines.

Final step is to logout and login Ubuntu.

TIPS: This instruction is not useful only Skype but also useful for another applications those are caused by similar issue.

For another Ubuntu version you can find out more by following the links below

Compact your eclipse 4.x interface and make it looks better in Ubuntu 13.04

It has been a long time I haven't used Ubuntu since it has some issues about my laptop driver. Yesterday I decided to format and install Ubuntu 13.04. It seems everything work well with a little bit effort to fix some driver problems.

Therefore I am as Java developer I cannot avoid to use eclipse as my default IDE (personal preference) but after I installed Eclipse Kepler (4.3). There is an ugly theme with weird gradient, let say it looks worse than in Windows, so I search for the solution, eventually I got one solution that we need to change the theme in eclipse back to "Classic" theme (Window->Preferences->General->Appearance) in my opinion it looks better than in . Another problem is eclipse layout is not compact as in Windows nor as same as former version (3.x).
The solution to fix this is create a file .gtkrc-2.0 in your home directory with the following content.

style "gtkcompact" {


class "GtkWidget" style "gtkcompact"
Before tweak eclipse

After tweak eclipse
After tweak it!

May 25, 2012

เตือนภัย Windows ของแท้ ไม่ขายผ่านเน็ทนะ

เนื่องจากปกติผมจะใช้ Ubuntu ในการใช้งาน แต่เนื่องจากมีความจำเป็นต้องใช้ Windows มาเพื่อใช้งาน + เล่นเกมส์ เลยไปสอบถามเพื่อนที่อยู่บริษัทขาย Software และเพื่อนก็บอกว่าที่บริษัทขาย Windows ได้ถูกกว่า เพราะซื้อจากผู้ขายที่ซื้อมาจากต่างประเทศ จะได้ราคาที่ถูกกว่า (ซึ่งข้อเท็จจริงผมก็ไม่รู้ว่าเป็นอย่างไร) โดยใจจริงก็กำลังจะซื้อจากร้าน ไปสอบถามมาแล้วราคาอยู่ที่ประมาณ 6900 ~ 7000 บาท (Windows 7 Professional) แต่ของที่เพื่อนนำมาขาย ได้ราคาอยู่ประมาณ 3500 บาท   ก็เลยตัดสินใจซื้อเลย เพราะเห็นว่าถูกมาก

แต่หลังจากซื้อมาจนแล้วจนรอดก็ยังไม่ได้ใช้งาน จนกระทั่งผ่านมาได้ประมาณ 1 ปี เพิ่งจะนำมาติดตั้งปรากฏว่า Activate ไม่ผ่าน ซึ่งติดต่อไปยังเพื่อนผม ก็บอกว่าจะติดต่อทาง Vendor ให้ (มารู้ทีหลังว่าขายอยู่บนอินเตอร์เน็ท) แต่พอติดต่อไปก็เหมือนจะช่วยเหลือ และส่ง Serial ชุดใหม่มาให้ และบอกจะส่งกล่องมาให้ทีหลัง แต่ก็ถ่วงเวลาไปเรื่อยๆ จนตอนหลังก็ขาดการติดต่อไป

หลังจากนั้นผมก็ได้ติดต่อไปทาง Microsoft Thailand  02-263-6888 ( ทาง Microsoft ก็ได้ถาม Serial ไป ปรากฏเช็คแล้วว่า เป็น license MSDN  สำหรับใช้ภายในองค์กร และ Microsoft บอกว่าไม่มีการขายผ่านช่องทาง Internet ยกเว้นจะเป็นการอำนวยความสะดวกของตัวแทนจำหน่าย ซึ่งสามารถเช็คได้จากลิงค์ครับ

จึงอยากจะขอเตือนสำหรับผู้ที่จะสั่งซื้อ Windows ทาง Internet ว่าให้เช็คดูให้ดีกว่า ผู้ขายที่ท่านจะซื้อด้วยเป็นตัวแทนจาก Microsoft จริงหรือเปล่า และพยายามให้เก็บใบเสร็จไว้เป็นหลักฐานด้วย เป็นไปได้ให้ใส่ในกล่องเลยก็ดีครับ หากจะ Activate Serial และต้องการความชัวร์ก็โทรไปได้ที่เบอร์ของ Microsoft Customer Service โดยตรงได้เลย

Oct 17, 2011

Shell In a Box - Shell on Web Interface

shellinabox เป็นโปรแกรมที่ทำให้เราสามารถใช้ shell หรือ terminal ผ่านเว็บได้ ซึ่งจะคล้ายๆ กับ WebShell (WebShell นั้นพัฒนาต่อยอดมาจาก Ajaxterm) แต่ shellinabox เป็นตัวที่อยู่ใน wiki ของ Ubuntu วันนี้เลยขอสอนการติดตั้งตัวนี้ครับ และเขียนไว้เป็นบันทึกกันลืมไปในตัว

ขั้นแรกให้ดาวน์โหลดตัว shellinabox ของ platform ที่เราใช้อยู่ ในหน้า Download นำไปไว้ใน home folder หรือตำแหน่งที่ต้องการ หลังจากนั้นให้พิมพ์
sudo dpkg -i shellinabox_2.10-1_i386.deb
เนื่องจากผมใช้ Ubuntu หารใครใช้ Redhat base ก็ทำตาม RPM เอานะครับ

หลังจากนั้นให้เรา start server shellinabox ขึ้นมา ด้วยคำสั่ง
sudo /etc/init.d/shellinabox start

sudo invoke-rc.d shellinabox start
ซึ่งเมื่อรันแล้ว shell in a box นี่จะรันอยู่บน port 4200 ด้วย protocol HTTPS ครับ
ให้เราเปิด Browser ขึ้นมาแล้วเข้าไปที่ https://<ip เครื่องที่เราติดตั้ง>:4200 ก็จะขึ้นหน้าตาดังรูปครับ
หน้า login ที่เข้าจาก Shell In a Box