Thursday, June 23, 2011

အပလာသခ်ာၤ အင္ အိုရီကယ္။

အပလာသခ်ာၤ အင္ အိုရီကယ္။

Applied Maths ကို ခပ္ၾကမ္းၾကမ္းဘာသာျပန္ပစ္လိုက္တာ။

သခ်ာၤကို Set ေတြအမ်ားၾကီးေလ႔လာခဲ႔တာ ငယ္ကတည္းပဲ။ ကိုယ္႔ကိုယ္ကိုယ္လည္း သခ်ာၤအေတာ္ေလးေတာ္တယ္ထင္မိတာ။ ဒီေန႕ေတာ႔ စာထဲမွာသင္ခဲ႔တာကို ဘယ္လိုျပန္အသံုးခ်ရမလဲဆိုတာမွာညံ႕တယ္လုိ႕သိရတယ္။

Database ေတြဟာ သခ်ာၤရဲ႕ Set theroy ေတြေပၚမူတည္ျပီးတည္ေဆာက္ထားပါတယ္။
Intersect ေတြ Union ေတြ Minus ေတြရိွပါတယ္။

ဒီေန႕လိုခ်င္တာက NRIC တူျပီး PLAN မတူတဲ႔ policies ေတြပါ။

PLAN ေရာ NRIC ပါတူတာဆိုရင္ ဒီလုိယူလို႕ရပါတယ္။

select * from table_name where (NRIC,PLAN) in
(
('NRIC1','PLAN1'),
('NRIC2','PLAN2'),
('NRIC3','PLAN3'),
..etc
);


တစ္ခုတူျပီးတစ္ခုမတူတာကို ၾကေတာ႔ in နဲ႕လုပ္လုိ႕မရဘူးဗ်။

အဲဒီေတာ႔ excel မွာပဲ query ကို genereate လုပ္ျပီး၊ တစ္ေၾကာင္းစီ result ကို ျပန္ေပါင္းရေကာင္းမလားစဥ္းစားတယ္။ လိုင္း ၅၀၇ လိုင္းေလာက္ လုပ္ရမယ္။

ေနာက္ေတာ႔ ေဘးနားက တရုတ္ကိုေမးၾကည္႕တယ္။ သူလည္းမရဘူးလုိ႕ေျပာတယ္။ ျပီးေတာ႔မွ ထပ္စဥ္းစားျပီး MINUS နဲ႕လုပ္ရင္ရမယ္ထင္တယ္ဆိုျပီး formula ျပန္ေရးၾကတယ္။ သူစဥ္းစားတာမွန္တယ္။

အမွန္ကရတယ္။ ရုတ္တရတ္စဥ္းစားမိဖုိ႕ခက္တာပါ။ NIRC တူတာေတြကို ယူလိုက္ျပီး NRIC ေရာ PLAN ပါတူတာကို ျပန္ႏႈတ္လိုက္ရင္လိုခ်င္တဲ႔အေျဖကိုရပါတယ္။

select NRIC from tableA where NIC in (
'NRIC1',
'NRIC2',
'NRIC3',
....
)MINUS
select NRIC from tableA where (NRIC,PLAN) in
(
('NRIC1','PLAN1'),
('NRIC2','PLAN2'),
('NRIC3','PLAN3'),
..etc
);

Set ေတြကို ပံုဆြဲၾကည္႕ရင္ လြယ္ေပမယ္႔ တကယ္ၾကံဳလာေတာ႔ ရုတ္တရတ္စဥ္းစားလုိ႕မထြက္တတ္ဘူးဆိုတာကိုေျပာခ်င္တာပါ။ MINUS မွာလည္း တစ္ခ်ိဳ႕ျပႆနာေလးေတြရိွပါေသးတယ္။ လုပ္ရင္းကိုင္ရင္းပိုျပီးေကာင္းတဲ႔ query ေတြေရးတတ္ဖုိ႕ေလ႔လာေနတုန္းပါပဲ။

ေနာက္တစ္ခုက Excel တစ္ခုလံုး အသံုးခ်နည္းဆိုျပီးေရးရမလားမသိဘူး။ Excel မွာလုပ္လုိ႕ရတာေတြအမ်ားၾကီးပဲရိွေသးတယ္။ အထူးသျဖင္႔ query ေတြကို sql format ေရးဖုိ႕ concat လုပ္ျပီး drag ဆြဲသြားလုိက္တာတုိ႕ဘာတုိ႕၊ သိပ္လြယ္တယ္။ ျမန္တယ္။

double qoutes ေပၚေအာင္ double code 4 ခုေရးရတာလည္း ရယ္စရာေကာင္းတယ္။ တစ္ခုက escape character အေနနဲ႕သံုးတာပါ။ ေနာက္ျပီး oracle မွာ နာမည္မွာ single quote ပါရင္ ဒီအတိုင္းထည္႕ေရးလို႕မရဘဲ || ေတြနဲ႕ concat လုပ္ဖုိ႕လုိတာကို excel မွာကတည္းက replace all လုပ္ပစ္လုိက္လုိ႕ရပါတယ္။ Excel ကို မ်ားမ်ားသံုးရင္ query ေတြ တလေဟာေရးရတဲ႔ေနရာေတြမွာ အေတာ္ေလးသက္သာပါတယ္။ TRIM လုပ္ဖုိ႕တုိ႕၊ substring ရွာဖုိ႕တုိ႕ကိုလည္း Excel မွာပါျပီးသားျဖစ္တဲ႔အတြက္ formula တစ္ခုေလာက္ေရးျပီး query ေတြ တရေဟာ drag လုပ္ႏုိင္ပါျပီ။

ကိုယ္သက္သာဖုိ႕ဆိုတာကိုယ္႔တာ၀န္ပါပဲ။
ဘာမွမသိလို႕ ခက္တဲ႔နည္းေတြနဲ႕လုပ္ေနရတာမ်ိဳး ဘယ္ေတာ႔မွမျဖစ္ေစနဲ႕။

ကိုယ္႔ထက္ေတာ္တဲ႔သူေတြသက္သာေနတာကိုလည္း အလကားေနအထင္မေသးနဲ႕။ သူတို႕ဆီက productive ျဖစ္တာေလးေတြေလ႔လာပါ။

Lazy developers rule the creation of the effective ways.

Thursday, June 2, 2011

Copy ကူးတာကိုလည္း တစ္ခါတေလ backup လုပ္တယ္လို႕ေခၚတယ္

တစ္ခ်ိဳ႕ေတြေပါ့၊ လိုခ်င္ေတာ့ ၾကီးၾကီးက်ယ္က်ယ္ ။ Daily full backup ၊ one month cycle တဲ့။ Backup software ေတာ့မဝယ္ခ်င္ဘူး ၊ ဘယ္လိုပဲရရတဲ့ backup ျဖစ္ရင္ျပီးေရာတဲ့။ File ေတြမွားမွားဖ်က္ၾက overwrite ေတြ မွားမွားလုပ္ၾကလြန္းလို႕တဲ့။ ဒီလိုလား ၊ ရပါတယ္။ xcopy နဲ႕ပဲ လုပ္လို႕ရပါတယ္။ အဲဒါနဲ႕ပဲ ဒီေန႕ သုံးေၾကာင္း bat script ေလးတစ္ခုေရးျဖစ္တယ္။ အမွန္က ဘယ္မွာေတြ့ဖူးမွန္းမသိတာတစ္ခုကို မွီညမ္းျပီး ဟိုးအရင္တစ္ခါက ေရးထားတာပါ။ နည္းနည္းေလးပဲျပင္လိုက္ရတယ္။

@Echo off
rd /s /q E:\$Recycle.bin
xcopy D:\Company\* E:\Serverbackp\Company\%date:~4,2%\* /Y /Q /S


ဒုတိယ တစ္ေၾကာင္းက ပံုမွန္ဆိုမလိုပါဘူး။ ဒီ user ေတြက ဘာေတြလုပ္မွန္းမသိ မၾကာမၾကာ recycle bin corrupted error ျဖစ္တယ္။ ဘာလို႕ျဖစ္လည္း သူတို႕ဘာလုပ္လည္းဆိုတာ သူတို႕ကိုတိုင္လည္းမသိဘူး။ Recycle bin ကအေရးမၾကီးဘူး၊ ရတယ္တဲ့။ ဟုတ္တယ္ေလ မွားဖ်က္မိလို႕ ျပန္လိုခ်င္ရင္ backup ေတြရွိေနမွာပဲ။ အဲဒါနဲ႕ က်ေနာ့ script ထဲမွာ အဲ quickfix ေလးထဲ့ေရးလိုက္တာ။

ပထမလိုင္းကေတာ့ အလကား output ေတြေပၚေပၚလာရင္ မ်က္စိေနာက္လို႕ echo off လိုက္တာ ။ Bat ေရးဖူးတဲ့သူတိုင္း သိပါတယ္။
ဒုတစ္ယလိုင္းကေတာ့ recycle bin error ကို quickfix အေနနဲ႕ Empty recycle bin လုပ္လိုက္တာ။ အမွန္က Recycle.Bin directory ကို ဖ်က္လိုက္တာပါ။ ဒါေပမယ့္ တစ္ခုခု delete လုပ္ရင္ျဖစ္ျဖစ္၊ logout / login လုပ္ရင္ျဖစ္ျဖစ္ recycle.bin folder က ျပန္ create ျဖစ္ပါတယ္။ အဲေတာ့ ဒါ command line က empty recycle bin လုပ္လိုက္တာပဲလို႕ သေဘာထားပါတယ္။ :D

ေနာက္ဆုံးလိုင္းကေတာ့ Windows ရဲ့ အသုံးတည့္ command ေလးတစ္ခုျဖစ္တဲ့ xcopy နဲ႕ files ေတြကို ကူးဖို႕ပါ။ ဒီမွာ ျပသနာ နည္းနည္းရွိပါတယ္။ က်ေနာ္တို႕က one month cycle လိုခ်င္တာပါ။ ဆိုလိုတာက ေန႕စဥ္ overwrite မလုပ္ခ်င္ပါဘူး။ ေန႕စဥ္ new backup set ထားသြားျပီး တစ္လၾကာမွ ပထမေန႕က backup set ကို overwrite ခ်င္တာပါ။ အဲဒါေၾကာင့္ ေနာက္က destination မွာ %date~:4,2% ဆိုတာေလးပါေနတာပါ။ Windows မွာ %date% environmental variable က system date ကို ကိုယ္စားျပဳပါတယ္။ %date% ကမွ ေလးလုံးေျမာက္ကေန ငါးလုံးေျမာက္အထိ ( ႏွစ္လုံးထဲ) လိုခ်င္လို႕ %date~:4,2% လို႕ေရးတာပါ။ ကိုယ္ယူထားတယ့္ date / time format ေပၚမွာ မူတည္ပါလိမ့္မယ္။ mm-dd-yyyy ဆိုရင္ေတာ့ 7,2 လို႕ယူရပါလိမ့္မယ္။ အေနာက္က /Y ကေတာ့ overwrite ဖို႕ yes / no prompt ေတြမွာ အကုန္ yes လို႕သတ္မွတ္ျပီး overwrite သြားဖို႕၊ /Q ကေတာ့ process output မျပဖို႕နဲ႕ ၊ /S ကေတာ့ subdirectories ေတြပါ ကူးဖို႕ ထဲ့ထားတာပါ။

Diskspace ပိုးဆိုးပက္စက္တက္တာကလြဲရင္ သူတို႕လိုခ်င္သလိုျဖစ္ပါတယ္။ Diskspace ကေတာ့ အမွန္ဆို compress ေလးေလာက္လုပ္သင့္တာေပါ့ေနာ္။ ဒါေပမယ့္ user က ဒီတိုင္းက သူတို႕အတြက္ ပိုေကာင္းတယ္၊ ဘာမွမလုပ္ရပဲ backup file ေတြကို ျမင္ရတာ ပိုသေဘာက်တယ္ဆိုလို႕ ျဖစ္သလိုပဲ လုပ္ေပးလိုက္ပါတယ္။ အမွန္က backup လုပ္တာလို႕ ေျပာဖို႕ေတာင္ ခက္ပါတယ္၊ တစ္ျခားတစ္ေနရာရာကို copy ကူးထားလိုက္တာပါပဲ။ ကိုယ့္ဟာကို compression လုပ္ခ်င္ရင္ေတာ့ winrar command line tools ေလးနဲ႕ လုပ္လို႕ရပါတယ္။

Divinity