Tuesday, June 29, 2010

log 4j

Call me "Loser" for posting this easy logger.

But it can be an asset for you guys like green horns ...
I don't mean you are a cow .... I refer to newbies .... :)

Well, log 4j is most commonly used logger for logging in Java based system.
Full name can be apache log4 j.
Some foolish and dull companies sometimes put this in requirements.
:) funniest joke in Java world ... It is just 3 lines of codes or may be 2.5 lines to read and understand.

first download the log4j.jar from web.
And import it.
write a line of code

public static Logger logger = Logger.getLogger(ClassName.class);


And configure your log4j properties.
Very very easy... Super easy and chicken feets....

Normally we use

logger.debug for debgugging
logger.error for erro
and logger.info for information

There is some important reason behind. If somebody asks you in interview, juz says System.out can make you out from the system ... Juz kidding... it is so bad ... uses a lot of memory and sometimes, it can lead the system hang or markedly delay in process. Log4j is better but not the best.

Try not to use a lot of printing things.
Use properly in testing phase and try to clear out if you are sure it is not necessary after the testing phase.

Try it out yourself ....
And never ever use printline so much ....

It can save your life and live long as a happy developer ....

Don't call me "loser" .... if you don't understand clearly what I wanna point out.

The Easiest way to learn is learning by yourself .... If we teach something to you, you will not be learnt so much ... Our brian is so selfish ... It only memorizes deeply what it learnt itself....

Good Luck, mate ...!!!

Regards,
Zero ..

>>Notes,
Bro ... I will catch up soon ... 3 posts in one day ... :P


Redirection in tomcat

Hi dudes,

Let say you got a difficulty level Extra Big A assignment for the new project.
It is to redirect the page. haha .. Juz kidding ...

Let me put in this way ...
The scenerio is you set up a tomcat.
And main page will show as ugly face of tomcat default which can be resided in /webapps/root/index.jsp

So please delete the ugly index.jsp and write an simple html and name it as index.html.

meta http-equiv="refresh" content="0;URL=https://domain.com/servletName"

Just put this meta tag in the index.html file header section.

This can redirect to your servlet in https. Need to buy cert for https from GoDaddy or whatever. :)

Thanks bro, Divinity for letting me copy his redirect page.
We are now doing together for payment gateway set up.
Hope he may wish to share some of his knowledge from this project.


Bro,
I will catch up your number of posts ....


Yee-Haw !!!!!
2 posts in one day ...
Seems to be I am bzy so much ....


Regards,
Zero


Java Tips.

Java Tips.

Are you smart enough ???

This time, I want to share some tools and overview knowledge with you.

You may be developer or debugger or coder or whatever ... but you may have to write so-called rubbish coding ...
First, please try to develop in OO way.
Don't think it is too restrict to do something as you wish to do in another way.
Always be OO.

Don't write 4500 lines of code in one class as most of the terribly terrible, stupid and air-head developers always code their program.
Try to think as a guy whose IQ is 30.
You cannot do so much.
So divide and conquer one by one.
Am I clear for this.

Let's say you want to create a payment system.
I need 1004 different methods.
Please don't put even two methods in one class.
Try to use interface to group properly.
I hope you will not be so impatient type like me.
Be patient. And it can save time later.

Think and think and think first.
Thinking can take time but it can be lesser than re-do process. Don't overlook anything.
Your code will be compact and will become monkey-proof soon.
I write the monkey proof codes for a year. I hate the tester says ...he still can input nonsense data.
So use properly for your checking classses and package it as a util pakage. And can use that util thoroughout your life as the poor man plow his or her fields with the same plow.

What I wanna highlight is to follow the standard. It can be difficult to say which standard you have to follow. Please don't make your standard higher than your current company's standard. Let them suffer their pain. Don't waste your valuable time for standardizing company's CVS and standard procedures better than the current one.

Let's say for Agile Development, you may need very good plan for testing. Otherwise, the development will be failed in no time. Very good architects can guess within 10 mintues which architectures they should choose for which projects. Don't work together with the architect who thinks he sees too much ....:) .. It is better sucide yourself in order to fulfil impossible deadlines.

Please check your man day rate also. Let's say, if your man day rate is 800SGD or 2000SGD . If they gives you 5 mandays and they charged the client 20000 SGD. Write your code as worse as possible and told them ... time constriant can drive me crazy .... :) ....

What I wanna mention is try to be fair your skill and mandays.
Don't overdo.
It can be hazardous to your health. OK?

Another important things for all developers are that don't let the team lead know how much you can do .... Please save your time in this way ... If you can do x amount, they will give you x+1 amount of jobs. So try to maintain your performance in 70 at most. Don't use if not neccessary. But I suggest to learn for betterments of yourself. If will lead your life happy, joyous and peaceful ...:) And I want to let you know don't stick around on old technology and tools. Explore more and you will find easier way. Try to learn about power tools that can double up your development speed. I found middle-gen to generate out Hibernate Mapping in 20 minutes ...which can take more than 2 hours + in traditional way. But don't inform to your company which toolyou are using now ...

And don't never, ever write the boiler plate code that can crash your whole sever or system withing a few minutes to 2 or 3 days. I cursed a lot for the previous collegue for those kinda codes. I hate to fix these things. Sometimes, they never close the method properly. After two or three years when the DB is fat enough and these untidy boiler plate codes make the system crash frequently. It is not easy to track down. Don't be unhappy to read boring forum discssions on various issues and try to contribute what you had learnt and exercised.

I encourage you to read the Java Standards and try to read optimization for coding. It can improve your coding skills so much.

And please always keep in mind Java is OO, so please think in OO ways. Don't do in traditional ways that will stack your enhancement and will affect your OO design.

Think smart ...
is better than work hard without knowing anything.
In deed if you had thought carefully and well-rounded from different points of views ...., the development is as easy as ABC, or as drinking the banna juice......

Good Luck, mate ....!!!


With Regards,
Zero

Sunday, June 27, 2010

Linux မွာ virus မရွိဘူးဆို ?

အခုတစ္ေလာ Linux မွာ virus မရွိလို႕သုံးတယ္ဆိုတယ့္ သူေတြမ်ားလာတယ္ဆိုတယ့္အေၾကာင္း ညီေလးတစ္ေယာက္ကလာလာေျပာေနတယ္။ Virus ေၾကာက္စရာမလိုလို႕ Ubuntu ပဲသုံးတယ္ဆိုတယ့္ သူေတြေပါ့။ Linux ကေပ်ာ္စရာ လည္းေကာင္းသလို challenging လည္း ပိုမ်ားပါတယ္။ သူတို႕ဘာသာ ဘာေၾကာင့္ပဲသုံးသုံးပါ သုံးျဖစ္ဖို႕က အဓိကေပါ့။ သုံးျဖစ္သြားရင္ သုံးရင္း ေလ့လာရင္း သိလာလိမ့္မယ္။ ဒါေပမယ့္ မသုံးျဖစ္တယ့္ သူေတြ၊ ေလ့လာမႈ အားမေကာင္းတယ့္ သူေတြအတြက္ idea အမွားၾကီးျဖစ္ျပီး 'ဪ ၾကားျပီးျပီလား၊ Linux ဆိုတာၾကီးက virus မရွိဖူးတဲ့' ဆိုျပီး ေယာင္ေတာင္ေတာင္နဲ႕ ကိုယ္တိုင္လည္းမသိပဲ သံေယာင္လိုက္မယ့္သူေတြ အတြက္ေတာ့ မေကာင္းဖူး။

Linux က bullet proof operating system တစ္ခုမဟုတ္ပါဖူး။ Security ကို အဓိက ဦးစားေပးစဥ္းစားထားတယ့္ Unix ကို အေျခခံထားတာပဲရွိတယ္။ လူလုပ္တယ့္ ကိစၥ ဘယ္ေတာ့မွ perfect မျဖစ္ဖူး၊ စိတ္ပူမေနနဲ႕။ Windows နဲ႕ ယွဥ္လိုက္ရင္ Virus နည္းတယ္လို႕ပဲေျပာလို႕ရတယ္။ နည္းလြန္းလို႕ မရွိသလိုျဖစ္ေနတာပါ။ ဘာေၾကာင့္ နည္းတာလည္း ဆိုရင္ေတာ့ ဒါေတြေၾကာင့္လို႕ က်ေနာ္က ျမင္တယ္။

၁။ အသုံးျပဳမႈနည္းပါးျခင္း
Home user ေတြၾကားထဲမွာ Linux အသုံးျပဳသူက 2% ေလာက္ပဲရွိပါတယ္။ ဒီေလာက္ေလးနဲ႕ၾက virus/trojan ေရးတယ့္သူေတြကို မဆြဲေဆာင္ႏိုင္ပါဘူး။ ကိုယ္ေရးတယ့္ virus/trojan ျပန္႕ႏိုင္စြမ္းလည္း နည္းမယ္။ အလုပ္လည္းသိပ္မျဖစ္ဖူးေပါ့။ ဒါနဲ႕ပဲ Linux မွာ virus ေရးဖို႕ သိပ္စိတ္မဝင္စားၾကတာျဖစ္မယ္။ ေနာက္ေတာ့ ရွိလာၾကမွာပါ။

၂။ Advanced Users
လြန္ခဲ့တယ့္ သုံးႏွစ္ 2007 ေလာက္ကထိ Linux ကသုံးရတာမလြယ္ကူပါဘူး။ လြယ္လြယ္ကူကူ သုံးခ်င္သူေတြ၊ Computer အေၾကာင္း သိပ္မသိခ်င္ပါဖူး၊ သုံးလို႕ရျပီးတာပဲ ဆိုတယ့္ သူေတြရဲ့ choice မျဖစ္ခဲ့ပါဖူး။ Linux သုံးတယ့္ သူေတာ္ေတာ္မ်ားမ်ားက IT နယ္ပယ္ထဲကလူေတြ၊ IT ကို အနည္းနဲ႕ အမ်ား စိတ္ဝင္စားတယ့္ သူေတြ မ်ားပါတယ္။ ဒီ computer ေပၚမွာ သူတို႕ ဘာလုပ္ေနတယ္ဆိုတာကို ေသျခာသိတယ့္ သူေတြမို႕ ၊ security sense ရွိၾကပါတယ္။ ေတြ႕ကရာ ေလွ်ာက္ click ၊ install ဆိုျပီး လုပ္ၾကမယ့္ သူေတြမဟုတ္လို႕ ဒီလိုလူေတြကို target ထားတာထက္စာရင္ ၊ Pop-up ေတြ႕ရင္ ေကာက္ click လိုက္မယ့္ novice ေတြကို ပိုျပီး target ထားတာေကာင္းမွာေပါ့။ အဲလို novice ေတြက သုံးရတာပိုလြယ္ကူတယ့္ windows သုံးေလ့ရွိတယ္ေလ။ အဲလို user ေတြ Linux မ်ားမ်ားသုံးလာရင္ Linux လည္း target ေကာင္းတစ္ခုျဖစ္လာမွာပါ၊ စိတ္ဓာတ္မက်ပါနဲ႕။

၃။ Fix ေတြထြက္တာျမန္တယ္
Opensource မို႕လို႕ lib ေတြမွာ exploit ေတြ flaw ေတြရွိေနရင္ ရွာေဖြေတြ႕ရွိသူကတာ inform လုပ္၊ ေနာက္က fix လုပ္မယ့္ သူေတြက အမ်ားၾကီး။ ဒါေၾကာင့္ Linux ရဲ့ exploit ေတြက သိပ္ျပီး ၾကိဳးစားၾကည့္ခ်င္စရာ မေကာင္းဖူး။ ကိုယ္က ဒီေန႕ရွာေတြ႕ ေနာက္ေန႕ fix ထြက္ေနျပီ။ User ေတြ patch install လုပ္တာ မလုပ္တာ တစ္ပိုင္းေပါ့။ MS မွာေတာ့ Conficker တုန္းက exploit ရွာေတြ႕တာနဲ႕ fix က ႏွစ္လေလာက္ၾကာပါတယ္။ User က update မလုပ္မိတာေတြရွိလို႕ ဒီ exploit က တစ္ႏွစ္ေလာက္ ေကာင္းေကာင္း အလုပ္ျဖစ္ေနတာပဲ။ ဒီလိုေတြရွိေတာ့လည္း လုပ္စားရ ပိုေကာင္းတယ့္ Windows က virus/trojan ပိုထြက္တာေပါ့။

ဒါ ထင္သာ ျမင္သာ အခ်က္ေတြပါ။ ဒါထက္ပိုတာေတြ ရွိအုန္းမွာပါ။ Unix / Linux မွာ အရင္တုန္းက rootkit ဆိုတယ့္ အသုံးအႏွုန္းက ပိုေခတ္စားပါတယ္။ Trojan လို backdoor လို ေကာင္မ်ိဳးပါပဲ။ Backdoor ပိုဆန္မယ္ထင္တယ္။ Kernel module တစ္ခုအျဖစ္၊ device driver တစ္ခုအျဖစ္ ကိုယ့္ကိုကိုယ္ ဟန္ေဆာင္ျပီး Operation system တက္တိုင္း သူကပါလိုက္တက္လာမယ္၊ service တစ္ခု port တစ္ခု compromise ထားမယ္၊ attacker အတြက္ ဝင္လမ္း ထြက္လမ္းဖြင့္ေပးထားမယ္ေပါ့။ ဒါေပမယ့္ process list ထဲမွာေတာ့ မေပၚဘူး။ ဒါမ်ိဳးက တကယ္ intrude လုပ္ျပီးသြားမွ ေနာက္တစ္ခါ ျပန္ဝင္ရလြယ္ေအာင္ လုပ္တာမ်ိဳးပါ။ Virus / Trojan ဆိုတာမ်ိဳးထက္ advance ျဖစ္ပါတယ္။

ခုေတာ့ user information ခိုးတယ့္ trojan လိုေကာင္ေတြေတာင္ linux မွာ ေပါလာပါျပီ။ Ubuntu / debian package ျဖစ္တယ့္ deb file ေတြမွာ trojan ေလးေတြထဲ့ေပးတာတို႕၊ tarball မွာကို ပါလာတာတို႕ရွိလာပါျပီ။ Opensource မို႕လို႕ security fix ထြက္တာျမန္သလို ၊ opensource မို႕လို႕ trojan ေလးထဲ့ေပးလိုက္ဖို႕လည္း ပိုလြယ္ပါတယ္။ Deb တို႕ rpm တို႕ဆိုတာ လြယ္လြယ္ေျပာရင္ exe installer ေတြလိုပါပဲ။ Run လိုက္ရင္ ဘာေတြလုပ္မယ္၊ ဘယ္လမ္းေၾကာင္းေအာက္မွာ ဘာထားမယ္၊ ဘယ္ service ကို startup မွာတင္ run ေအာင္ service register မယ္၊ ဒါမ်ိဳးေတြပါပဲ။ ပံုမွန္ install လုပ္မယ့္ action ေလးအျပင္ trojan install ေလးပါထဲ့ေပးထားရင္ သိမွာမဟုတ္ပါဘူး။

Tarball source file ေတြဆိုလည္း ျပန္ျပင္ထားတယ့္ source file ေလးေတြထဲ့ေပးထား၊ user က compile ျပီး install လည္းလုပ္လိုက္ေရာ trojan ေလးပါဝင္။ ဒါလည္းျဖစ္တာပဲ။ ပံုမွန္ကေတာ့ ယံုၾကည္ရတယ့္ site က repository ကမဟုတ္ရင္ install မလုပ္ဖို႕ပဲရွိပါတယ္။ Security အတြက္ instller package က original အတိုင္းဟုတ္မဟုတ္ ၊ ေျပာင္းလည္းထားတာရွိမရွိ PGP တို႕ GPG တို႕လို hash matching / keys ေတြနဲ႕ ေပးေလ့ရွိပါတယ္။ ဒါကေတာ့ သုံးေနတယ့္သူေတြ သိမွာပါ။ GPG မကိုက္လို႕ ၊ ဒါမွမဟုတ္ official GPG မရွိလို႕ install လုပ္မွာ ေသခ်ာလား ဆိုတယ့္ confirmation မ်ိဳးေမးတာ Ubuntu မွာလည္း ရွိပါတယ္။ ဒါမ်ိဳးေလးေတြ နည္းနည္း ေတာ့ ဂ႐ုစိုက္ေပးရင္ ပိုေကာင္းပါမယ္။

AppArmor တို႕ SELinux တို႕လို႕ security layer မ်ိဳးထပ္သုံးရင္ေတာ့ ပိုေကာင္းပါတယ္။ ဘယ္ user ၊ ဘယ္ process က ၊ ဘယ္ folder ကိုပဲ access ရမယ္၊ ဘယ္လို action မ်ိဳးပဲရမယ္ ဆိုတာမ်ိဳးေတြက ပံုမွန္ Unix / Linux ရဲ့ native ACL ထက္ အမ်ားၾကီး ပိုျပည့္စံုပါတယ္။ ဒါေပမယ့္ အလုပ္ပိုလို႕ Fedora တို႕ ဘာတို႕မွာဆို ေတာ္ေတာ္မ်ားမ်ားက disable ျပီး သုံးၾကတယ္။ က်ေနာ္အပါအဝင္ပါ :D ။ သတိဆိုတာေတာ့ ပိုတယ္မရွိေပါ့ဗ်ာ။ ( သူမ်ားေတြအတြက္ေျပာတာပါ )

ခုတစ္ေလာ Unreal IRCD ရဲ့ news ကိုဖတ္မိလို႕ ဒီ post ေရးျဖစ္သြားတာ။ Unreal IRCD ဆိုတာ opensource IRC server patform တစ္ခုပါ။ IRCD ထဲမွာေတာ့ နာမည္ အရွိဆုံးပဲထင္တယ္။ သူတို႕ရဲ့ Official download mirror တစ္ခ်ိဳ႕က tarball ေတြကို တစ္ေယာက္ေယာက္က trojan ပါတယ့္ file ေတြနဲ႕ အစားထိုးသြားပါတယ္။ Compile / install လုပ္လိုက္ရင္ trojan ေလးပါ ပါလာမယ္။ ဒါေတာင္ official mirror ေတြ။ သူတို႕က GPG နဲ႕ေပးတာမ်ိဳးမဟုတ္ေတာ့ file ရဲ့ integrity check မပါဖူးေပါ့။ ျပင္ထားလည္း User ဘက္ကမသိႏိုင္ဖူး။

Linux မွာ virus ေတြ trojan ေတြရွိတယ္လို႕ လွန္႕တာမဟုတ္ပါဘူး။ Windows နဲ႕ယွဥ္ရင္ အေတာ္ကိုနည္းပါတယ္။ ရွိတာေတာ့ ရွိတာပါပဲ။ Linux က idiot proof OS တစ္ခုမဟုတ္ေၾကာင္းနဲ႕ 'ငါတို႕ကေတာ့ virus မေၾကာက္ရလို႕ Linux ပဲသုံးတယ္' လို႕ ျပဳံးျပဳံးၾကီး မေျပာမိေအာင္ သတိေပးတာပါ။ ကိုယ္ကိုတိုင္လည္း အမွားၾကီးကို မွတ္ထား၊ သူမ်ားေတြကိုလည္း အမွားေတြ ေလွ်ာက္ေျပာေနမိရင္ ဆက္ေလ့လာတယ့္ေနရာမွာ သိထားတယ့္ အေၾကာင္းအရာ အမွားၾကီးေတြက ကန္႕လန္႕ခံေနလို႕ ပိုျပီး ခက္ခဲေနမွာ ဆိုးလို႕ပါ။ Santa Clause တကယ္ရွိမရွိနဲ႕ ၊ Linux မွာ virus / trojan တကယ္ရွိမရွိက သူမ်ားေျပာတာထက္. . သုံးရင္း ၊ ေလ့လာရင္း ရွာေဖြေတြ႕ရွိပါလိမ့္မယ္။


Divinity

Friday, June 18, 2010

Mutiple SSL sites on single IP

ဒီေန႕ေတာင္ၾကည့္ ေျမာက္ၾကည့္နဲ႕ Myanmar Tutorials က Q&A တစ္ခုမွာ SSL website(https) တစ္ခုအတြက္ Dedicated IP တစ္ခုလိုတယ္လို႕ ေတြ႕လိုက္ပါတယ္။ သူေျပာတာ မွားတယ္လို႕ မဆိုလိုပါဘူး။ 2007 ေလာက္ကထိ ဒါ မွန္ပါတယ္။ SSL ရဲ့ အလုပ္လုပ္ပံုအရ socket တစ္ခု ( IP တစ္ခု ၊ Port တစ္ခု) မွာ SSL website တစ္ခုထက္ ပိုထားလို႕မရပါဘူး။ IP တစ္ခုမွာ SSL site ေတြ အမ်ားၾကီး Virtual Host လုပ္ခ်င္ရင္ မတူညီတယ့္ Port ေတြမွာ run မွရပါတယ္။ ဥပမာ abc.com ကို port 443 မွာ၊ def.net ကို port 444 မွာ အဲလိုမ်ိဳးေပါ့။ ဒီလိုၾကေတာ့လည္း အဆင္မေျပျပန္ပါဘူး။ ဘယ္သူမွ website ကိုအေနာက္က port number ၾကီးထဲ့႐ိုက္ျပီး ဖြင့္ၾကည့္ခ်င္မွာ မဟုတ္ဖူး။

ပံုမွန္ http site ေတြၾက IP တစ္ခုမွာ domain ေတြအမ်ားၾကီးကို VirtualHost အျဖစ္ထားလို႕ရျပီး ( shared web hosting လို႕ ေခၚပါတယ္) ၊ ဘာလို႕ HTTPS / SSL site ေတြၾကမွ ဒါမ်ိဳးမရ ရတာလည္း ? လူတစ္ေယာက္က သူ႕ browser မွာ abc.com လို႕ ေခၚလိုက္တယ္ဆိုပါေတာ့၊ သူ႕ browser ကေန ဒီ website ကို host လုပ္ထားတယ့္ Server ဆီကို http request လို႕ေခၚတယ္တယ့္ packet ပို႕လိုက္ပါတယ္။ ဒီ http request ထဲမွာ header field ပါပါတယ္။ ဘယ္ domain name ( abc.com) ကို request လုပ္တာလည္းဆိုတာ ဒီ header field ထဲမွာ ပါလာျပီးသားပါ။ ဒီ HTTP request header ကိုဖတ္ျပီး Server က ဒါ ဘယ္ domain ကိုလာတယ္၊ ဒါဆို ဘယ္ website ကိုေပးရမယ္ ဆိုတာခြဲျခားျပီး သိႏိုင္တယ္။

Https site ေတြမွာကေရာ ? HTTPs အလုပ္လုပ္ပံုအရ http traffic မသြားခင္မွာ User client ( browser ေပါ့ဗ်ာ) နဲ႕ Server ၾကားမွာ SSL tunnel ကို အရင္ တည္ေဆာက္ပါတယ္။ ဒါကို SSL session initialization လို႕သုံးပါတယ္။ ဒီမွာ နည္းနည္း ထပ္ေျပာရရင္ Browser နဲ႕ Server ရဲ့ port 443 ၾကားမွာ tunnel တည္ေဆာက္တာပါ။ ေနာက္ေတာ့ အျပန္အလွန္ပို႕သမွ် data အားလုံးကို rsa key ကိုသုံးျပီး Encrypt လုပ္ျပီး ပို႕ပါတယ္။ ၾကားထဲက sniff လုပ္လို႕မရေအာင္ေပါ့။ SSL request မွာက HTTP request header မွာလို domain name မပါလာပါဘူး။ အဲေတာ့ SSL tunnel အရင္ေဆာက္ျပီးလို႕ http request ေရာက္လာေတာ့မွ ဘယ္ domain ကို request တာလည္းဆိုတာ သိမယ္။ Server အေနနဲ႕ user client ( browser) နဲ႕ၾကားမွာ SSL tunnel ေဆာက္တုန္းက ( SSL session initialization မွာ) ဘယ္ domain ကို request လုပ္တာလည္းမသိေတာ့ ဘယ္ configuration ထဲက SSL key ကိုေပးရမမွန္း မသိပါဘူး။ Configuration ေတြထဲက ပထမဆုံးေတြ႕တယ့္ domain ရဲ့ SSL key ကို ေပးလိုက္ပါတယ္။ ေနာက္မွ ၾကည့္က်က္လုပ္မယ္ေပါ့။ အဲေတာ့ ဘာျဖစ္လည္း ဆိုေတာ့ ၊ User ဘက္မွာ SSL certificate error ဆိုတယ့္ warning ၾကီးတက္ပါတယ္။ ဒီ SSL cert က ဒီ domain အတြက္မဟုတ္ဖူး၊ လိမ္တာျဖစ္ႏိုင္တယ္ ဘာညာဆိုတယ့္ msg ၾကီး။ IE မွာဆို Continous Anyway (Not recommanded) ဆိုတာၾကီး ႏွိပ္မွ web site ေပၚလာတယ့္ အဆင့္ကို ေရာက္တယ္။ Firefox မွာဆို Certificate exception ထဲ့ရတယ္၊ I understand the risk ဘာညာျပီးေတာ့။ အဲေတာ့ ေတာ္႐ံု user က လန္႕ျပီး မသုံးေတာ့ဘူး။ Security အတြက္ https နဲ႕ဖြင့္ပါတယ္ဆို I understand the risk ဆိုျပီး အရင္ ဝန္ခံေနရေတာ့ ပုံမွန္ http သုံးတာကမွ ဟုတ္ေသးတယ္လို႕ စဥ္းစားစရာျဖစ္သြားတယ္။

ဘာလို႕ ဒီ ျပသနာက http မွာမျဖစ္ပဲ https မွာျဖစ္တာလည္းဆို က်ေနာ္အေပၚမွာ ေျပာသလို http reqeust header မွာတုန္းက domain name ပါေတာ့ server က ဘယ္ virtualhost ထဲက website ကို ျပန္ေပးရမလည္းသိတယ္။ https မွာက SSL session ေဆာက္ျပီးမွ http request ကလာတာ။ SSL session ေဆာက္တုန္းက ဘယ္ domain အတြက္မွန္းမသိေသးေတာ့ server က ေတြ႕ကရာ SSL key တစ္ခုေပးလိုက္တယ္ ( ဟုတ္ကဲ့ တကယ္က first vhost ရဲ့ key ပါ)။ တကယ္ request လုပ္တာက တျခား domain name လည္းျဖစ္ေနေရာ warning ေတြေပၚလာေရာ။ အဲေတာ့ Technically အရ IP တစ္ခု Port တစ္ခုမွာ SSL နဲ႕ website တစ္ခုပဲ ထားလို႕ရတယ္လို႕ ျဖစ္လာပါတယ္။ Server တစ္လုံးထဲမွာ SSL နဲ႕ website ႏွစ္ခုထားခ်င္ရင္ မတူညီတယ့္ IP ႏွစ္ခု ဒါမွမဟုတ္ IP တစ္ခုထဲဆို မတူညီတယ့္ port ႏွစ္ခုမွာ ထားမွ ရတယ္လို႕ျဖစ္လာေရာ။

E-commerce site ေတြ၊ Online payment system ေတြေခတ္စားလာတာနဲ႕ အမွ် bank account information ေတြ၊ Credit card information ေတြ online မွာ၊ website ေတြမွာ အသုံးျပဳတာမ်ားလာတာနဲ႕ အမွ် Website ေတြမွာ SSL နဲ႕ https အသုံးျပဳဖို႕ လိုအပ္မႈက ပိုပိုမ်ားလာပါတယ္။ ဒါဆို ဒီလို site ေတြကို site တစ္ခု IP တစ္ခုသာ ေပးေနရရင္ IPv4 exhaustion ကို ပိုျမန္ကုန္မွာေပါ့။ ေနာက္ေတာ့ SSL ရဲ့ လိုအပ္ခ်က္ေတြ အားနည္းခ်က္ေတြကို patch လုပ္ရင္း SSL v1 , v2 , v3 ေနာက္မွာ TLS လို႕ေခၚတယ့္ Transport Layer Security ကိုသုံးလာၾကတယ္။ Browser ေတြမွာ TLS 1.0 ၊ TLS 1.1 ဆိုျပီး checkbox ေလးေတြ ေတြ႕ဖူးမွာပါ။ အရင္က ျပသနာ SSL session request မွာ domain name header မပါတယ့္ ကိစၥ ၊ TLS မွာ ေျဖရွင္းႏိုင္ဖို႕ အလားအလာ ရွိလာတယ္။ 2006 မွာထင္တယ္ RFC 4366 ထြက္လာျပီး Server Name Indication လို႕ေခၚတယ့္ SNI support ၊ TLS မွာပါလာတယ္။ SNI အရ SSL session တည္ေဆာက္တယ့္ အခ်ိန္ ( TLS negotiation လို႕ သုံးပါတယ္) မွာ ကတည္းက domain name ကို ထဲ့ပို႕လိုက္ပါတယ္။ အဲေတာ့ Server ဘက္က ဘယ္ domain ရဲ့ SSL key ကို reply ရမလည္းဆိုတာ သိသြားပါတယ္။ User client ( browser) ေရာ ၊ Server ဘက္ကေရာ SNI support လုပ္ဖို႕ေတာ့ လိုပါတယ္။

TLS v1.1 ရဲ့ feature ဆိုေပမယ့္ TLS v1.0 မွာလည္း support လုပ္ေအာင္ လုပ္ထားပါတယ္။ Browser ေတာ္ေတာ္မ်ားမ်ားနဲ႕ ၊ User ေတာ္ေတာ္မ်ားမ်ားက အခုထိ TLS v1.0 ကိုပဲ support လုပ္ႏိုင္တယ့္ OS ကိုပဲသုံးေနၾကဆဲမို႕လို႕ပါ။ အခုေတာ့ X.509 v3 မွာ SSL certificate တစ္ခုက multiple domain name ကို support လုပ္ႏိုင္တာတို႕ ဘာတို႕ျဖစ္လာပါျပီ။ ဒါေၾကာင့္ HTTPs website တစ္ခုအတြက္ IP တစ္ခုလိုတယ္ဆိုတာ ဒီေန႕ေခတ္မွာ မရွိေတာ့ပါဘူး။ ဒီေန႕ က်ေနာ္တို႕ လက္ထက္ IT ေခတ္က အရာရာ ေပါေပါေလာေလာရေနလိုက္တာ restriction ဆိုတာမရွိေတာ့ သေလာက္ပါပဲ။ အရာရာ လြယ္ကူေစဖို႕ ေနာက္ၾကျပီး ေမြးခဲ့တယ့္ အေမ့ကို ေက်းဇူးတင္ပါတယ္ :D

Notes: SNI TLS သုံးဖို႕ Server က SNI support လုပ္ႏိုင္တယ့္ Web Server ျဖစ္ဖို႕လိုပါတယ္။ Apache 2.2.12 ကေနစျပီး SNI support က Apache Native support ျဖစ္သြားပါျပီ ။ အရင္ Version အေဟာင္းေတြမွာေတာ့ GnuTLS module ကို install လုပ္ရင္ရပါတယ္။ User ဘက္ကလည္း SNI support ရမွျဖစ္ပါတယ္။ ဒါမွ TLS negotiation request packet မွာ domain name header ထဲ့ပို႕မွာပါ။ Windows XP SP3 နဲ႕ အထက္၊ IE 7 နဲ႕ အထက္မွာရပါတယ္။ IE6 မွာလည္း XP SP3 ဆိုရင္ ရတယ္လို႕ေျပာပါတယ္။

Sunday, June 13, 2010

Clean script ( shell scripting)

Google docs ထဲၾကည့္ရင္းနဲ႕ အရင္က Shell script တိုတိုေလး တစ္ခုကို post လုပ္ျပီး ေရးဖို႕ စိတ္ကူးရလို႕။ Analysing လိုလို post ေတြက ေလွ်ာက္သာေရးေနတာ ကိုယ့္ဟာကိုယ္လည္း ပ်င္းတယ္။

ဒီ script မ်ိဳးကို က်ေနာ္တို႕က clean script လို႕ေခၚပါတယ္။ တကယ္ အလုပ္လုပ္တာက process kill တာပါ။ တခ်ိဳ႕ service ေတြက start ရင္ပဲျဖစ္ျဖစ္ stop ရင္ပဲျဖစ္ျဖစ္ တဝက္တပ်က္မွာ ရပ္သြားတာမ်ိဳးရွိတတ္ပါတယ္။ ျပန္ start ရင္လည္း service က run ေနျပီလို႕ေျပာတယ္။ Process list ထဲမွာလည္းရွိတယ္။ Log ထဲမွာက error ၾကီးနဲ႕ access လုပ္လို႕မရဘူး။ တခါတေလ service port ေတာင္ မပြင့္လိုက္ဖူး။ Stop လုပ္လို႕လည္းမရေတာ့ဘူး။ လြယ္လြယ္ေျပာရင္ေတာ့ Hang သြားတာေပါ့။ ဒါဆို kill မွရေတာ့မယ္။ ဒါမ်ိဳးက Failover Cluster လိုမ်ိဳးမွာ သုံးေလ့ရွိပါတယ္။ တစ္ဖက္မွာ hang ေနရင္ kill လိုက္၊ ျပန္စၾကည့္ ၊ ထပ္ hang ရင္ ထပ္ kill ျပီး ေနာက္ server တစ္လုံးကို failover လုပ္သြား၊ admin ကို mail ေလးဘာေလးပို႕။ ( MySQL ဆို file access permission error ရွိရင္ အဲဒါမ်ိဳးျဖစ္တက္တယ္။ )

Service kill တာပဲ ကိုယ့္ဟာကိုယ္ ps ေလး႐ိုက္ျပီးၾကည့္ ၊ pid ေလးမွတ္ျပီး kill လိုက္႐ံုေပါ့။ ဒါက manual လုပ္မွ ျဖစ္မွာပါ။ Administrator တစ္ေယာက္က ဘယ္မွာ ဘာ hang ေနလည္း သိဖို႕ စိတ္တန္ခိုးရွိမွ ျဖစ္မယ္၊ မဟုတ္ရင္ သိလိုက္မွာ မဟုတ္ဖူး။ တစ္ခါတစ္ေလ ဒီ server ေတြကို Veritas Cluster တို႕ဘာတို႕လို Server and service monitor ေတြနဲ႕ monitor လုပ္ခိုင္းထားျပီး service status ကို သူ႕ဟာသူ စစ္ခိုင္းထားတာမ်ိဳး၊ လူကိုယ္တိုင္ manual လုပ္ရတာမ်ိဳး နည္းႏိုင္သမွ် နည္းေအာင္ လုပ္ခ်င္တာမ်ိဳးဆိုရင္ေတာ့ script ေလးေတြလိုျပီ။ Veritas က ဒီ serivce hang ေနမွန္းသိရင္ (ဒါကလည္း တျခား script တစ္ခုနဲ႕ စစ္တာမ်ိဳးပါ) clean script ကိုေခၚျပီး kill လိုက္ပါတယ္။ ျပီးမွ start script ကို ေခၚျပီး ျပန္ စတာေပါ့။

#!/bin/sh

pid=`/usr/bin/ps -ef | /usr/bin/grep mysqld | grep -v grep|awk -F' ' '{print $2}'`;

if test "$pid" = "" ; then
echo "Process is not Running";
else
echo "Killing process..."
kill -9 $pid;
fi


ဒီ script မွာ mysqld ကို ဥပမာ အေနနဲ႕ေပးထားပါတယ္။ Script ေလးကိုျပန္ၾကည့္ရေအာင္။

ပထမ line မွာ #!/bin/sh လို႕ေပးထားတာက Shell Env ကို sh shell လို႕သက္မွတ္တာပါ။ ဒီ script က bash shell မွာလည္း အလုပ္လုပ္ပါတယ္။

ဒုတိယ line က ဒီ script မွာ အဓိက အလုပ္လုပ္တယ့္ line ပါ။
pid=`/usr/bin/ps -ef | /usr/bin/grep mysqld | grep -v grep | awk -F' ' '{print $2}'`;


pid ဆိုတယ့္ variable တစ္ခုယူလိုက္ပါတယ္။ ဘာ type ျဖစ္ရမယ္လို႕ ၾကိဳသတ္မွတ္ေပးဖို႕မလိုပါဘူး။ pid ထဲကို value တစ္ခုထဲ့တယ့္ေနရာမွာ နည္းနည္းအေသးစိတ္ပါတယ္။ ေနာက္က command ေတြကိုအရင္စမ္းၾကည့္၊ လိုခ်င္တယ့္ result ရမွ ဒီline ကိုေရးတာေကာင္းပါတယ္။ #ps -ef | grep mysqld နဲ႕ MySQL service ရဲ့ process id ကိုၾကည့္လို႕ရပါတယ္။ ဒါေပမယ့္ -ef ရဲ့ ထုံးစံအရ၊ MySQL ရဲ့ pid အျပင္ အခု run လိုက္တယ့္ grep command ရဲ့ pid ပါျပေနတယ္။ ဒါဆို pid အပိုတစ္ခုပါေနတယ္။ ဒါဆိုမလိုအပ္တယ့္ grep ရဲ့ pid ကို ဖယ္ထုတ္မယ္။ grep -v grep ကိုသုံးပါတယ္။ grep -v က invert match လို႕ေခၚတယ့္ option ပါ။ grep -v grep လို႕ေပးလိုက္ေတာ့ grep ရဲ့ pid က လြဲရင္ လို႕ ဆိုလိုလိုက္တာပါ။ ဒါဆို mysqld တစ္လိုင္းထဲရျပီ။ ( တကယ္လို႕ တျခားမဆိုင္တာေတြရွိရင္လည္း ဖယ္ရပါလိမ့္မယ္။ ဒါမွမဟုတ္လည္း result ထဲက ေနာက္တစ္ခုကို ထပ္ grep လိုက္ေပါ့။ ) လိုခ်င္တာ တစ္လိုင္းထဲရျပီဆိုရင္ လိုခ်င္တယ့္ Process ID တစ္ခုထဲကို pid variable ထဲကို ထဲ့ဖို႕ လိုပါတယ္။ တစ္လိုင္းလုံးေပးလိုက္လို႕မရပါဘူး။ ဒီမွာ awk ကိုသုံးျပီး pattern filtering လုပ္ပါတယ္။ awk -F' ' ဆိုတာက awk ကိုသုံးျပီး output result ကို filed ေတြခြဲလိုက္တာပါ။ ဘာနဲ႕ ခြဲလည္းဆိုေတာ့ -F ဆိုတယ့္ Field separator နဲ႕ field ေတြကို space နဲ႕ခြဲထားတယ္လို႕ ေျပာလိုက္ပါတယ္။ -F ရဲ့ ေနာက္က quote ေလးႏွစ္ခုၾကားမွာ space တစ္ခ်က္ပါပါတယ္။ ေနာက္က '{print $2}' ဆိုတာကေတာ့ ခုနက space ေတြနဲ႕ခြဲထားတယ့္ထဲက ဒုတိယ field ကိုပဲျပပါလို႕ ေျပာတာပါ။ ဒါဆို Mysqld ရဲ့ process id တစ္လုံးထဲရပါျပီ။ အဲဒီ process id number ကို pid ဆိုတယ့္ variable ထဲကို ထည့္လိုက္ပါတယ္။

ေျပာစရာ က်န္ခဲ့တာက equal sign ေလးရဲ့ေနာက္က command execution တစ္ခုလုံးကို ` ` ႏွစ္ခုၾကားမွာေရးပါတယ္။ Keyboard မွာ 1 ေဘးကေကာင္ေလးေပါ့။ exec comand နဲ႕ ခက္ဆင္ဆင္တူပါတယ္။ ဒီ line မွာ Mysqld က run ေနရင္ mysqld ရဲ့ pid ကို output result အျဖစ္ pid variable ထဲထည့္လိုက္ျပီး ၊ run မေနဖူးဆိုရင္ ဘာ output မွမထြက္တယ့္အတြက္ pid variable က empty value ပဲ ဆက္ျဖစ္ေနပါလိမ့္မယ္။

ဒုတိယ line ကရလာတာကို မွ if .. else နဲ႕ ျပန္စစ္ျပီး အလုပ္လုပ္ပါျပီ။
if test "$pid" = "" ; then

if test နဲ႕စစ္ျပီး then ရဲ့ေနာက္က (ေအာက္က) line ေတြကို အလုပ္လုပ္ပါတယ္။ if test "$pid" = "" လို႕စစ္လိုက္တယ့္အရ $pid ထဲမွာ ဘာ value မွမရွိပဲ blank ျဖစ္ေနမယ္ဆိုရင္ ေအာက္ကလိုင္းျဖစ္တယ့္ echo ကိုအလုပ္လုပ္ပါတယ္။

else နဲ႕ တကယ္လို႕ pid variable မွာ value တစ္ခုခုရွိေနမယ္ ဆိုရင္ process kill ေၾကာင္း echo msg ေလးတစ္ေၾကာင္းေပးျပီး kill -9 $pid နဲ႕ pid variable ထဲမွာပါလာတယ့္ process id number ကို kill ပါတယ္။ ဒီမွာ process က hang ေနတာမို႕ -9 နဲ႕ မွရပါလိမ့္မယ္။

ဒီမွာ နည္းနည္း ထြန္႕စရာေလးေတြ ရွိေသးတယ္။ ps မွာ -ef option ကမ်က္စိေနာက္တယ္။ -ae နဲ႕ မရဖူးလားဆို ရပါတယ္။ print မွာ $1 ျဖစ္သြားပါလိမ့္မယ္။ Unix style နဲ႕ aux နဲ႕ဆိုရင္ေတာ့ $2 ပါပဲ။ ကိုယ့္ဟာကိုယ္ျပင္ေပါ့။ -ae က MySQL လိုမ်ိဳး process name ရွင္းမွ အဆင္ေျပပါတယ္။ Java လိုေကာင္ေတြဆိုရင္ Java ဆိုတယ့္ process name နဲ႕ပဲ ေခၚထားတယ့္ class ေပၚမွာမူတည္ျပီး မတူညီတယ့္ process ေတြျဖစ္တက္ပါတယ္။ အဲဒါမ်ိဳးဆို ps -ef နဲ႕ java ကို တစ္ခါ ၊ classname ကိုတစ္ခါ grep မွ လိုခ်င္တယ့္ process ကိုအတိအက်ရပါလိမ့္မယ္။

If test မွာလည္း "" နဲ႕ blank လို႕မစစ္ပဲ NULL ျဖစ္မျဖစ္စစ္ရင္လည္း ရပါတယ္။ Space ေလးေတြျဖဳတ္ေရးရပါလိမ့္မယ္။ Knowledge sharing သက္သက္ပါ။ က်ေနာ္လည္း shell scripting expert မဟုတ္လို႕ ဒီထက္လြယ္ကူတယ့္ နည္းလမ္းလည္း ရွိႏိုင္ပါတယ္။ သိရင္ ျပန္လာ share ပါ။ စိတ္ဝင္စားပါတယ္။ :D

Thursday, June 10, 2010

Linux တစ္ရပ္စာ ေမွ်ာ္စဥ္ထက္က ျမင္ကြင္း (3)

1994 မွာစတင္ကခဲ့ျပီး OpenSource community ရဲ့ leading company လို႕ ကိုယ့္ကိုကိုယ္ ေခၚတယ့္ company ကေတာ့ Redhat ပါ။ Opensource လို႕ေျပာတယ့္ product ေတြနဲ႕ စီးပြါးေရးလုပ္တယ္ပဲေျပာရမလားပဲ။ သူတို႕ရဲ့ ကိုယ္ပိုင္ proprietary component ေတြ tools ေတြကလြဲရင္ Redhat Enterprise Linux တစ္ခုလုံးရဲ့ source code ကို opensource ေပးပါတယ္။ JBoss ဆိုလည္း Community version ဆိုျပီးရွိတယ္။ တခ်ိဳ႕ေသာ အစိတ္အပိုင္းေတြက လြဲရင္ အားလုံး Opensource ေပးျပီး သူတို႕က Technical Support တို႕ Consultancy တို႕ ေရာင္းစားပါတယ္။

Redhat ကေပးထားတယ့္ Source code ေတြကို Community ကျပန္ compile လုပ္ထားတဲ့ OS ေတြရွိပါတယ္။ Redhat clone လို႕လည္းေခၚၾကတယ့္ Redhat derivation ေတြပါ။ အဲထဲမွာေတာ့ CentOS ၊ Scientific Linux နဲ႕ Whitebox က လူသုံးၾကပါတယ္။ အဲထဲမွာေတာ့ CentOS က လူသုံးအမ်ားဆုံးနဲ႕ Redhat နဲ႕ အတူဆုံးပါပဲ။ Desktop user / home user ေတြကို အဓိကထားတာမဟုတ္လို႕ End user application ေတြ သိပ္မပါလွပါဘူး။ ( Redhat Enterprise Linux Desktop ဆိုျပီး ရွိေပမယ့္ တစ္ခါမွ စမ္းဖို႕ မၾကံုေသးပါဘူး။ )

CentOS ကလည္း Linux Sever OS ထဲမွာ အေတာ္တြင္က်ယ္ပါတယ္။ Redhat Enterprise Linux နဲ႕ CentOS က 95% ေလာက္အတူတူပါပဲ။ Redhat ရဲ့ source codes ကို centOS community / team ကျပန္ compile လုပ္ထားတာပါ။ အဲဒါေၾကာင့္ update ေတြ patch ေတြၾကေတာ့ CentOS တို႕ SL တို႕ က နည္းနည္းေနာက္ၾကပါတယ္။ Redhat က release လုပ္ျပီးမွ လိုက္ compile လုပ္တာကိုး။ Stability ပိုင္းမွာ စိတ္တိုင္းၾကစရာ ေကာင္းပါတယ္။

Redhat ကေငြေၾကးအားျဖင့္ ေထာက္ပံ့ထားတယ့္ Community linux တစ္ခုကေတာ့ Fedora ပါ။ Redhat Engineer ေတြလည္း Fedora team မွာပါပါတယ္။ Community linux တို႕ရဲ့ ထုံးစံအတိုင္း အျမဲတန္း အရွိန္အဟုန္နဲ႕ သြားတယ့္ linux တစ္ခုပါပဲ။ Fedora project က အျမဲတမ္း feature အသစ္အဆန္းေလးေတြ ထြက္ေလ့ရွိတယ့္ project လို႕ေျပာၾကပါတယ္။ Fedora ရဲ့ တည္ထြင္မႈေတြဟာ စမ္းသက္မႈအဆင့္ဆင့္ေက်ာ္ျဖတ္ျပီးရင္ Redhat က ေမြးစားေလ့ရွိပါတယ္။ စမ္းသပ္တယ့္ ေနရာလိုျဖစ္ေနလို႕ တစ္ခ်ိဳ႕ Fedora version ေတြဟာ buggy ျဖစ္တက္ပါတယ္။

ေျပာဖို႕ က်န္သြားတယ္။ Oracle ရဲ့ Oracle Enterprise Linux ဆိုတာလည္းရွိပါတယ္။ 1998 မွာ Oracle က သူတို႕ database product ကို Redhat ေပၚမွာ run ႏိုင္ေၾကာင္း ( Supported OS) အျဖစ္ ေၾကညာပါတယ္။ ေနာက္ေတာ့ ဘယ္လိုျဖစ္တယ္မသိ သူတို႕ logo နဲ႕ Linux ထြက္လာပါတယ္။ အနည္းငယ္ ျပဳျပင္ထားတယ္လို႕ေတာ့ သူမ်ားေျပာဖူးတယ္။ ေရာင္းတယ့္ product ကို ကိုကျပန္ ဖန္တီးျပီး ျပန္ေရာင္းတာဆိုေတာ့ သိပ္မမိုက္ပါဘူး။ ပိုက္ဆံေပးရတာခ်င္းတူရင္ေတာ့ origin ျဖစ္တယ့္ Redhat က Technical Support ပိုသာမယ္လို႕ ယူဆရတာပဲ။ Linux က Redhat အတြက္က main stream product ကိုး။

Redhat လိုပဲ rpm based linux လို႕သတ္မွတ္ျပီး ( ဒါေပမယ့္ Redhat ကိုအေျခမခံပါဘူး) Commercial product ၾကီးေနာက္တစ္ခုကေတာ့ Novell ရဲ့ SuSE enterprise ပါ။ ဟိုးအစတုန္းက Slackware ကိုအေျခခံခဲ့ျပီး ေျဖးေျဖးျခင္းကြဲထြက္လာတာ အခုဆို slack နဲ႕ ေတာ္ေတာ္ကို မတူေတာ့ပါဘူး။ အသုံးတြင္က်ယ္မႈမွာေတာ့ Redhat ကိုမမွီေပမယ့္ တကယ့္ company အၾကီးၾကီးေတြရဲ့ mission criticle server ေတြမွာေတာ့ ေဝပံုၾကယူထားတာပါပဲ။ Technical support ပိုင္းနဲ႕ Customer care မွာ Redhat ထက္ေတာင္သာတယ္လို႕ ဆိုပါတယ္။ ( ဒါကေတာ့ ကို William ေျပာတာပါ။ သူတို႕ company မွာ SuSE ကိုပဲ အဓိကသုံးတယ္ဆိုလို႕ ေမးျဖစ္ခဲ့တာပါ။)

SuSE မွာလည္း Redhat ရဲ့ Fedora လို စမ္းသက္ကြင္းတစ္ခုရွိပါတယ္။ OpenSuse ပါ။ သူကလည္း beta လိုလို နဲ႕ က်ေနာ္သုံးဖူးတုန္းကေတာ့ စိတ္ေလစရာေကာင္းေလာက္ေအာင္ buggy ခဲ့ပါတယ္။ KDE မို႕လို႕ ၾကည့္ရတာ မိုက္ပါတယ္။ SuSE / OpenSuSE ရဲ့ GUI က တစ္ခ်ိဳ႕ေနရာေတြမွာ ေတာ္ေတာ္လွပါတယ္။ KDE ေတာင္မွ သူက ထက္ျပင္ထားတာမို႕ Gnome ေတြထက္ေတာ့ memory ပိုစားပါတယ္။

စကားစပ္လို႕ပါ၊ မွတ္မွတ္ရရ OpenSuSE ကို စိတ္နာေစတယ့္ အေၾကာင္းေလးေပါ့။ အလုပ္ကဝင္ခါစ၊ Linux က သိပ္မတတ္တေခါက္၊ Samba ကို Active directory နဲ႕ cross authenticate လုပ္ခ်င္လို႕။ PAM ေတြျပင္တယ္ command line ကေန။ GUI မွာ user account manager ေလးဖြင့္ျပီး ျပန္ပိတ္လိုက္ရင္ က်ေနာ္ျပင္ခဲ့သမွ် PAM configuration အကုန္ roll back ပဲ။ မရွိေတာ့ဘူး။ အကုန္ default ေတြျပန္ျဖစ္ကုန္တယ္။ Samba မွာ Authentication method မွာ local authentication ( server) အစား AD authentication (ads) လို႕ ျပင္ ၊ save လုပ္၊ ျပန္ၾကည့္ရွိေသးတယ္။ UI ကေန Samba configuration wizard ေလးဖြင့္လိုက္၊ ခ်က္ခ်င္း ဘာမွမျပင္ပဲ cancel လုပ္၊ ဟိုမွာ server ျပန္ျဖစ္ေနျပီ။ UI က wizard ေလးဖြင့္လိုက္မိတာနဲ႕ အကုန္ျပန္လုပ္ရတာပဲ။ အဲဒါျပီးကတယ္က က်ေနာ္ OpenSuSE ျပန္မသုံးျဖစ္ေတာ့ပါဘူး။ o_O

ဒီေန႕ ေခါင္းကလည္းမူးေနသလိုလို အိပ္ခ်င္ေနသလိုလိုနဲ႕ ေရးထားတာ အဆက္အစပ္သိပ္မရွိဖူး။ ေနာက္မွ တစ္ခ်ိဳ႕ဟာေလးေတြ ျပန္ျဖည့္ပါအုန္းမယ္။ Zero / Zero = Zero ေျပာသလို ရုံးထဲမွာ အိပ္ေငြ႕ခ်တယ့္ ဓာတ္ရွိပုံရတယ္။ တစ္ေနကုန္ သူမ်ားရုံးမွာ သြားေနတာ လန္းဆန္းလို႕ ၊ ရုံးလည္းျပန္လာေရာ 10 minutes မၾကာဖူး ေလးလံထိုင္းမိႈင္းျပီး အိပ္ငိုက္သြားတယ္။ ေနာက္ေန႕ၾက ခံုေျပာင္းထိုင္ၾကည့္အုန္းမွပါ။ :(

Thursday, June 3, 2010

Linux တစ္ရပ္စာ ေမွ်ာ္စဥ္ထက္က ျမင္ကြင္း (2)

Linux distribution ေခတ္ဦးေလာက္ 1993 - 1994 ပတ္ဝန္းက်င္မွာ Slackware နဲ႕ေရွ႕ဆင့္ေနာက္ဆင့္နီးပါး ထြက္လာတယ့္ distro ကေတာ့့ Debian ပါ။ Operation System ေတြထဲက အေအာင္ျမင္ဆုံး Community driven server OS လို႕ေတာင္ေျပာလို႕ရပါတယ္။ Enterprise level linux server ေတြမွာ Redhat ျပီးရင္ လူသုံးအမ်ားဆုံးေလာက္ရွိပါတယ္။ Stability အားေကာင္းတယ့္ Linux distro တစ္ခုပါ။ Ubuntu ရဲ့အေဖမို႕ Ubuntu ကြၽမ္းက်င္ရင္ Debian ေလ့လာရတာ မခက္ပါဘူး။ Community အလြန္အားေကာင္းပါတယ္။ အဲဒီအတြက္လည္း Debian ဟာအလြန္ up to date ျဖစ္ပါတယ္။ Re Debian package (.deb) ေတြ ကို Commnity တစ္ခုလုံးက Engineer ေထာင္နဲ႕ခ်ီ maintain လုပ္ေနတာမို႕ Commercial Linux ေတြထက္ update release ပိုျမန္ပါတယ္။ Library တစ္ခု ၊ package တစ္ခု version အသစ္ထြက္ရင္ Debian repo ေတြမွာလည္း update version ရွိေနပါျပီ။ Debian မွာ package manager အေနနဲ႕ apt ကို အဓိကသုံးပါတယ္။ က်ေနာ္ကိုယ္တိုင္က Deb linux fans မဟုတ္ေပမယ့္ package management မွာ apt က redhat ရဲ့ yum ထက္ပိုသာတယ္လို႕ ျမင္ပါတယ္။ Server OS မို႕ laptop မွာသြင္းရင္ driver ေလးေတြ ကိုယ့္ဟာကိုယ္ ရွာသြင္းရတာမ်ိဳး ျဖစ္တတ္ပါတယ္။ ဥပမာ webcam လိုဟာမ်ိဳးေပါ့။

အေဖထက္သား တစ္လၾကီးတယ့္ Deb-based Linux ကေတာ့ ဇာတ္လိုက္ေက်ာ္ Ubuntu ပါ။ Community driven ပါပဲ။ Server OS ေနရာမွာ Debian ကိုမေက်ာ္ႏိုင္ေပမယ့္ Desktop version ကေတာ့ Linux တစ္ခုအေနနဲ႕ဆိုရင္ ဟုန္းဟုန္းေတာက္ေအာင္ျမင္ပါတယ္။ Ubuntu က desktop ေတြ laptop ေတြအတြက္ အဓိကထားထားတာမို႕ hardware ေတာ္ေတာ္မ်ားမ်ားကို driver သိပါတယ္။ Release cycle က ေျခာက္လတစ္ခါ release လုပ္ေတာ့ အျမဲတန္း kernel အသစ္ library အသစ္ hardware driver အသစ္ေတြနဲ႕ အဆင္ေျပပါတယ္။ Install လုပ္လိုက္ရင္ hardare အားလုံးနီးပါးက သုံးရန္အသင့္၊ လိုအပ္မယ့္ package ေလးေတြကလည္း default ပါျပီးသား၊ ထပ္ install လုပ္ခ်င္ရင္လည္း GUI ကေန click click နဲ႕တင္ရတယ္။ Mouse ေလးသုံးရမွ ေက်နပ္သူေတြအတြက္ ေတာ္ေတာ္အဆင္ေျပပါတယ္။ Windows ေလာက္ idiot proven usability မဟုတ္ေပမယ့္ 90% ေလာက္ ok မွာပါ။ Debian ရဲ့သားမို႕ debian community ကိုအေမြဆက္ခံထားပါတယ္။ Windows မဝယ္ခ်င္လို႕၊ Virus စိတ္ညစ္လို႕ Linux ဖက္ေျပာင္းလာသူေတြက Ubuntu ကိုေရြးေလ့ရွိတာမို႕ beginner ဆန္ဆန္ေမးခြန္းေတြ ေတာ္ေတာ္မ်ားမ်ားက ubuntuforum.org မွာရွိေနျပီးသားပါ။ မသိရင္ ေမးစရာေတာင္မလိုဘူး။ သြားရွာ ၊ ရွိတယ္။

ဒါဆို ေတာ္ေတာ္အစဥ္ေျပတယ့္ Linux ပဲလို႕ေျပာလို႕ရပါတယ္။ တစ္ခုေတာ့ရွိပါတယ္။ ဒါကလည္း ၾကားျဖတ္ေျပာတယ့္ က်ေနာ့ရဲ့personal အျမင္၊ အၾကံေပးတာပါ။ သိပ္ user friendly ျဖစ္လြန္းေတာ့ Windows အစားထိုးစစ္စစ္ျဖစ္ေနတတ္ပါတယ္။ Windows သုံးတုန္းကလည္း Operation system လို႕ေျပာရင္ မ်က္လုံးအဝိုင္းသား၊ Ubuntu သုံးေတာ့လည္း ထိုနည္းလေကာင္း။ User အတြက္ အစဥ္ေျပပါတယ္။ Engineer ျဖစ္ခ်င္ရင္ေတာ့ ေလ့လာရုံေလာက္ပဲ GUI ကိုအားကိုးသင့္ပါတယ္။ Linux ကိုတကယ္ သိခ်င္ တက္ခ်င္ရင္ေတာ့ GUI ကို သိပ္မမွီခိုေစခ်င္ပါဘူး။ မဟုတ္ရင္ Ubuntu user ပဲျဖစ္လာတတ္ပါတယ္။ Linux user ျဖစ္မလာေတာ့ပါဘူး။

Ubuntu က Gnome desktop နဲ႕လာေလ့ရွိျပီး၊ Kubuntu ရယ္လို႕ KDE နဲ႕ လာတာလည္းရွိပါတယ္။ Ubuntu ကိုမွ အေျခခံတယ့္ Educational version Edubuntu တို႕ဘာတို႕လည္းရွိေသးတယ္။ ေနာက္ထက္ Ubuntu ကိုအေျခခံထားတယ့္ အတိုင္းအတာတစ္ခုထိ ေအာင္ျမင္တယ္လို႕ေျပာလို႕ရတယ့္ Linux ကေတာ့့ Linux Mint ပါ။ သူလည္း home user ေတြအတြက္ ရည္ရြယ္တာမို႕ OpenOffice တို႕ Multimedia player ေတာ္ေတာ္မ်ားမ်ားတို႕ အဆင္သင့္ပါလာပါတယ္။ သူလည္းလွလွပပနဲ႕ သုံးရတာ အေတာ္လြယ္တယ့္ Linux ပါပဲ။

Ubuntu လိုပဲ Debian အေျခခံတယ့္ ေနာက္နာမည္ၾကီး Linux တစ္ခုက Knoppix ပါ။ 2003 မွာ စတင္ခဲ့ျပီး Linux LiveCD distro ထဲမွာ သူစေအာင္ျမင္တာလို႕ ေျပာရမလားမသိဘူး။ သူ႕ထက္ေစာတယ့္ DemoLinux တို႕ဘာတို႕ရွိေပမယ့္ က်ေနာ္တို႕က 2004 ေလာက္မွ မ်က္စိစပြင့္တာမို႕ Knoppix နဲ႕ပဲ စသိခဲ့တာပါ။ Install လုပ္စရာမလိုပဲ CD ေပၚကေနတင္ boot တက္လို႕ရတယ္။ အမ်ားအားျဖင့္ rescue disc အေနနဲ႕ အသုံးမ်ားပါတယ္။ အဲ အခုေတာ့ Ubuntu အပါအဝင္ Linux တိုင္းနီးပါးက LiveCD option ေပးလာပါတယ္။ Download ပါ၊ စမ္းၾကည့္ပါ၊ ၾကိဳက္မွ install ပါေပါ့။

ဒါကေတာ့ Deb based ထဲက ေရာက္တက္ရာရာပဲ။ Rpm based ထဲက Redhat တို႕ Fedora တို႕၊ Slackware ကို အေျခခံတယ့္ Novell ရဲ့ SuSE linux တို႕ ၊ Linux from scratch တို႕၊ Hacker လို႕ကိုယ့္ကိုကိုယ္ ေခၚတယ့္သူေတြၾကိဳက္တယ့္ Security auditing linux ေတြ၊ SmoothWall တို႕လို firewall linux ေတြ ... ေတာ္ေတာ္မ်ားတာပဲ။ ေရးျဖစ္မယ္ ဆိုရင္ေျပာပါတယ္။ :D

Wednesday, June 2, 2010

Linux တစ္ရပ္စာ ေမွ်ာ္စဥ္ထက္က ျမင္ကြင္း

အခုေနာက္ပိုင္း ျမန္မာ အိုင္တီ community ေတြမွာ Linux အေၾကာင္းေတြေျပာလာၾက သုံးတယ့္သူပိုမ်ားလာၾကတာေတြ႕ရတယ္။ Windows နဲ႕ Operation System အတူတူပဲလို႕ထင္ရာကေန၊ Computer နဲ႕ Windows ခြဲျခားမရတယ့္အေနအထားကေန ေျပာင္းလည္းလာတာေတာ့ ဝမ္းသာစရာပါ။ ဒါေပမယ့္ Linux လို႕ေျပာရင္ Ubuntu ေျပးေျပးျမင္တယ့္သူေတြ မ်ားမ်ားလာတာေတာ့ စိတ္ကသိကေအာင့္ျဖစ္စရာပဲ။ Linux distro ေတြအေၾကာင္းနည္းနည္းေလာက္ ေလ့လာၾကည့္ရေအာင္။ က်ေနာ္ေသခ်ာမသိတယ့္ မသုံးဖူးတယ့္ distro ေတြကို ရမ္းမတုတ္ခ်င္လို႕ ထဲ့မေျပာေတာ့ပါဘူး။ က်ေနာ္သိသေလာက္ထဲက ဘယ္ distro က ဘာေတြစိတ္ဝင္စားစရာေကာင္းလည္းပဲ ေျပာေတာ့မယ္။ က်ေနာ္သိသေလာက္ထဲက ျပန္မွ်ေဝယံုေလာက္ပါ။

Linux distro ေတြမွာ တခ်ိဳ႕က power user ေတြအတြက္အဓိက ထားတာမ်ိဳးရွိပါတယ္။အဲလို distro ေတြက stability နဲ႕ performance ကိုအဓိကထားပါတယ္။ Linux ကိုနားလည္းထားျပီးသား experienced user ေတြအတြက္သာ အစဥ္ေျပပါတယ္။ ဥပမာေျပာရရင္ေတာ့ Gentoo နဲ႕ Slackware ပါ။ Slackware က Linux history ရဲ့ သက္တမ္းအရင့္ဆုံး distro ပါ။ User က ကြၽမ္းက်င္ရင္ ကြၽမ္းက်င္သလို customized လုပ္ႏိုင္လို႕ ကိုယ့္စိတ္တိုင္းၾက ရႏိုင္တယ္လို႕ ဆိုၾကပါတယ္။ အဲ၊ တကယ္လို႕ Linux အေၾကာင္းကို မေတာက္တေခါက္ေတာင္ မသိဘူး၊ သူမ်ားေျပာတာ နားမေယာင္ဘူး၊ ခုမွ Linux ကိုနားလည္ခ်င္လို႕ စစမ္းခ်င္တာဆိုရင္လည္း Gentoo သို႕မဟုတ္ Slackware ကိုသုံးတာ အေကာင္းဆုံးလို႕ ေျပာၾကပါတယ္။ တကယ္တမ္း စိတ္ရွည္ရွည္နဲ႕ အေသးစိတ္ေလ့လာခ်င္တယ္ ဆိုရင္ပါ။ Gentoo သို႕မဟုတ္ Slackware သုံးတက္တာဟာ Linux သုံးတတ္တာပဲ လို႕ Senior ေတြေျပာတာ မွတ္သားဖူးတယ္။ စိတ္ရွည္ရွည္ထားႏိုင္ရင္ အေကာင္းဆုံး distro ေတြေပါ့။

ဖတ္ရတာေတာ့ စိတ္ဝင္စားစရာ distro ပဲ၊ ဘာလို႕ မသုံးၾကတာလည္း ? သုံးၾကပါတယ္။ အလြယ္တကူမရွိလို႕ Home user usable မျဖစ္လို႕၊ လူသုံးနည္းတာပါ။ Package ေတြကိုယ္တိုင္ compile လုပ္ configure လုပ္ရတာ စိတ္ဝင္စားစရာေကာင္းေပမယ့္ အလွ်င္လိုလို႕မရပါဘူး။ ဒီေန႕ install လုပ္၊ ေနာက္ေန႕သူမ်ားေတြေရွ႕ 'ေတြ႕လား ငါ linux သုံးေနတာ' လုပ္ခ်င္ရင္ေတာ့ ဒီ distro မ်ိဳးနဲ႕ အစဥ္မေျပပါဘူး။ Linux system တစ္ခုရဲ့ အလုပ္လုပ္ပံု၊ kernel module ေတြ၊ package ေတြ compile လုပ္တာ၊ Makefile ေတြ၊ လိုအပ္တယ့္ library ေတြ ၊ behind the scene က အေၾကာင္းအရာေတြ သိခ်င္ရင္ေတာ့ စိတ္ဝင္စားစရာ ေကာင္းတယ့္ Linux distro ေတြပါ။

.............................
အင္းးးးးးးးးးးးး အားလုံး အစအဆုံးေရးျပီးမွတင္ခ်င္ေပမယ့္ က်ေနာ့ google docs ထဲမွာလည္း ေရးလက္စေတြ ေတာ္ေတာ္မ်ားေနျပီ။ အလကားသိမ္းထားတာပဲ အဖတ္တင္ေနမွာဆိုးလို႕ ဒါကို အရင္တင္လိုက္ပါတယ္။ xD