Wednesday 29 June 2011

C# 2008 တြင္ပါ၀င္ေသာ Features အသစ္မ်ား

က်ေနာ္ C# ကို လက္ရိွ ေလ့လာေနတုန္းမွာ သိလာတာေလးေတြကို ေရးေပးမွာပါ။ Programming နဲ႔ ပတ္သက္လို႔ က်ေနာ့္အေနနဲ႔ Beginner အဆင့္ေလာက္ေတာင္မွ မသိေသးတဲ့အတြက္ အမွားအယြင္းေတြ အမ်ားၾကီး ပါႏိုင္ပါတယ္။ ၿပင္ဆင္ေပးၾကပါ။
ဒီလိုမ်ိဳး C# ရဲ႕ Features အသစ္ေတြ အေၾကာင္းကို ႏုိင္ငံၿခားဖိုရမ္ေတြမွာ အမ်ားၾကီးရွာေတြ႔ႏုိင္ပါတယ္။ C# 2008 ထြက္တာလည္း ေတာ္ေတာ္ၾကာေနပါၿပီ။ ဒါေပမယ့္ ၿမန္မာႏုိင္ငံက C# 2005 ကို သံုးေနတဲ့ သူေတြ အေနနဲ႔ C# 2008 မွာ ဘာမ်ား အသစ္ရိွလဲဆုိတာသိခ်င္တယ္ဆိုရင္ ၿမန္မာလို ေလ့လာလုိ႔ရေအာင္ေရးေပးလိုက္တာၿဖစ္ပါတယ္။ သိၿပီးသားဆုိရင္လည္း က်ေနာ္ ေရးတာက်န္ေနရင္ ၿဖည့္ေပးၾကဖုိ႔ ထပ္မံေၿပာခ်င္ပါတယ္။

အမ်ိဳးမ်ိဳးေသာ language extensions ေတြကို C# 3.0 မွာ “Orcas” ဆုိတဲ့ code-named နဲ႔ မိတ္ဆက္ခဲ့ၿပီးၿဖစ္ပါတယ္။ အဲဒီ့ Extension ေတြဟာ C# 2.0 ေပၚမွာအေၿခခံၿပီးတည္ေဆာက္ထားတာ ၿဖစ္ၿပီးေတာ့ Programming ေရးသားရာမွာ ေခတ္စားေနတဲ့ Functional Programming Style ကိုလည္း အေထာက္အကူၿဖစ္ေအာင္ ဖြဲ႔စည္းေပးထားပါတယ္။ အသစ္ၿဖစ္တဲ့ Feature ေတြကေတာ့...

• Auto-implemented Properties
• Implicitly Typed Local Variables
• Extension Methods
• Lambda Expressions
• Object Initializers
• Collection Initializers
• Anonymous Types
• Partial Methods
• Expression Trees
• Query Expressions စတာေတြဘဲၿဖစ္ပါတယ္။

အဲဒီ့ Feature အသစ္ေတြ အေၾကာင္းမေၿပာခင္ က်ေနာ့္အေနနဲ႔ .NET Programmer ေတြရဲ႕ ေရးသားနည္း အသစ္ၿဖစ္တဲ့ Functional Programming Style အေၾကာင္း အနည္းငယ္ေၿပာခ်င္ပါတယ္။ အဲဒီ့မွာ ၂ ပိုင္းခြဲထားပါေသးတယ္....

1. Functional Programming
Functional Programming ဆုိတာကေတာ့ Problem Solving လုပ္ရာမွာ Function စစ္စစ္ကိုသာ အဓိကသံုးၿပီးေရးသြားတဲ့ ပံုစံၿဖစ္ပါတယ္။ OOP programming language အမ်ားစုၿဖစ္တဲ့ Java,C#,C++ စတာေတြဟာေတာ့ Procedural Programming ကို ဦးစားေပးၿပီးေတာ့ Support လုပ္ပါတယ္။

2. Procedural Programming
Procedural Programming ဆုိတာကေတာ့ task တစ္ခု ဒါမွမဟုတ္ နည္းလမ္းတစ္ခုခုဟာ ၿပႆနာေၿဖရွင္းတဲ့ အခါမွာ ဘယ္လိုမ်ိဳးပံုစံနဲ႔ အလုပ္လုပ္သြားတယ္ဆုိတာကိုဘဲ အဓိကထားၿပီးေရးသားပါတယ္။ ဆုိလိုတာကေတာ့ Program တစ္ခုလံုးရဲ႕ Algorithms ေတြကို အဓိကထားၿပီးေရးၾကပါတယ္။ ဒါေပမယ့္ Functional Programming နဲ႔ ေရးေလ့ရိွတဲ့ Programmer ေတြအေနနဲ႔ကေတာ့ Method ဒါမွမဟုတ္ရင္ Function ေတြကို ေၾကၿငာတဲ့အခါမွာ အခ်က္အလက္ေတြဟာ ဘယ္ကေန ဘယ္ကို ၊ ဘယ္လိုပံုစံမ်ိဳးနဲ႔ ေၿပာင္းလဲသြားၾကတယ္ဆုိတာကို သာၾကည့္ၾကပါတယ္။ Procedure တစ္ခုလုံးရဲ႕ Algorithms ေတြကို အဓိကထား မစဥ္းစားေတာ့ပါဘူး။

အဲဒါေတြကေတာ့ Coding ေရးသားတဲ့ Style ႏွစ္ခုရဲ႕ ကြာၿခားခ်က္ေလးကို က်ေနာ္ သိသေလာက္ နည္းနည္းရီႊးၾကည့္တာပါ။

Auto-implemented Properties

က်ေနာ္ C# 2005 ကို သံုးဖူးတုန္းကဆုိရင္ Properties တစ္ခုကို ေၾကၿငာမယ္ဆုိရင္ေတာင္မွ Coding ရိုက္ရတာ တအားရွည္တဲ့ အတြက္ C# 2005 ကို ၁ လ သံုးၾကည့္ၿပီးေတာ့ ဆက္မသုံးေတာ့ပါဘူး။ အခု C# 2008 ထြက္လာေတာ့ သူ႔ရဲ႕ ဖီးခ်ား အသစ္ေတြကို နည္းနည္း ေလ့လာၾကည့္တဲ့အခါ Auto-Implemented Properties ပါေနတာေတြ႔ရလို႔ က်ေနာ့္အေနနဲ႔ C# ကို ၿပန္ေလ့လာၿဖစ္တာပါ။ ႏို႔မို႔ဆုိရင္ ခုခ်ိန္ထိ VB ကေန ထြက္ႏုိင္ဦးမွာမဟုတ္ေသးဘူး။ (ခုလည္း VB ကေန ခဏထြက္လာတာပါ။ ၿပီးရင္ ၿပန္၀င္ရဦးမွာ။ ပိုက္ပိုက္က အဲဒါနဲ႔ ရွာရမွာ။  ေလနည္းနည္းရွည္သြားဘီ။ ဆက္ေၿပာပါမယ္။

က်ေနာ္တုိ႔ C# 2.0 (2005) တုန္းကဆုိရင္ Properties တစ္ခုကို Declare လုပ္မယ္ဆုိရင္ ေအာက္ပါအတုိင္းလုပ္ရပါတယ္။


private int iStudID;
private string strStudName;

public int StudID
{
get
{ return iStudID; }
set
{ iStudID = value; }
}
public string StudName
{
get
{ return strStudName; }
set
{ strStudName = value; }
}


စာဖတ္သူအတြက္ေတာ့ ဘယ္လိုေနလဲမသိဘူး ၊ က်ေနာ့္အေနနဲ႔ကေတာ့ အဲဒီ့ Code ကို ရိုက္ရတာ ေတာ္ေတာ္ပင္ပန္းတယ္ဗ်ာ။
ဒါေပမယ့္ အခု C# 3.0 (2008) ထြက္လာတဲ့အခါမွာေတာ့ Auto-Implemented Properties နဲ႔တင္ ေတာ္ေတာ္ေလး အဆင္ေၿပသြားတယ္....မယံုရင္ ေအာက္က Coding ကိုၾကည့္လိုက္ပါ။


public class AutoProperties
{
public int
StudID { get; set; }
public string
StudName { get; set;}
}


ကဲ ဘယ္ေလာက္ တုိလဲ။ ေရးရတာမ်ား သက္သာလိုက္တာ ေၿပာမေနနဲ႔။ ဒါေပမယ့္ ဒီလို အလြယ္လိုက္ခ်င္ရင္ေတာ့ နည္းနည္း စဥ္းစားတတ္ဖို႔ေတာ့လိုမယ္ေနာ္။ သူ႔အလုပ္လုပ္ပံုကေတာ့ Program Run ေနတုန္းမွာ ေနာက္ကြယ္ကေနၿပီးေတာ့ Anonymous Data Fields ေတြကို Create လုပ္ပါတယ္။ အဲဒီ့လို Create လုပ္ရင္းနဲ႔ Auto-Implemented Properties ကေနၿပီးေတာ့ Program ကိုထိန္းခ်ဳပ္ေပးသြားပါလိမ့္မယ္။

Implicitly Typed Local Variables


အကယ္လို႔မ်ား က်ေနာ္တုိ႔ဟာ ကိုယ့္ Program မွာ Local Variable တစ္ခုအေနနဲ႔ var ဆုိၿပီးေၾကၿငာခဲ့မယ္ဆိုရင္ Compiler ကေနၿပီးေတာ့ အဲဒီ့ Variable သက္ဆုိင္ရာ Datatype ကို အလုိလိုသတ္မွတ္ေပးသြားပါတယ္။
ဥပမာအားၿဖင့္


var iAge = 17;
var strName = "SYKO";
var Exp = 2.0 * 3.0;


အဲလိုေၾကၿငာခဲ့မယ္ဆုိရင္ေတာ့ သူတို႔ဟာ ေအာက္ပါ Code ေတြရဲ႕ အဓိပၸါယ္နဲ႔ တူညီပါတယ္။


int iAge = 17;
string strName = "SYKO";
double Exp = 2.0 * 3.0;


အဲဒီ့ Datatype ကို တစ္ခါတည္း မသတ္မွတ္ထားတဲ့ Implicit Local Variable ေတြဟာလည္း ကန္႔သတ္ခ်က္တစ္ခ်ိဳ႕ေတာ့ရိွပါတယ္။ အဲဒီ့ကန္႔သတ္ခ်က္ေတြ နဲ႔ ေရးသားသင့္တဲ့ နည္းေတြကေတာ့...
• Implicit Variables ေတြကို Local မွာဘဲေၾကၿငာပိုင္ခြင့္ရွိပါတယ္. Global အေနနဲ႔ ေၾကၿငာပိုင္ခြင့္မရိွပါဘူး။

null အၿဖစ္သတ္မွတ္ထားတဲ့ Variable ေတြကိုလည္း 'var' အေနနဲ႔ ေၾကၿငာခြင့္မရွိပါဘူး။
var x = null;


var နဲ႔ ေၾကၿငာမယ္ဆုိရင္ေတာ့ ၊ အဲဒီ့ေၾကၿငာတဲ့ Variable တန္ဖုိးကို အရင္ဆုံး တစ္ခုခုေတာ့ သတ္မွတ္ေပးရပါလိမ့္မယ္။ ေအာက္က Code လုိမ်ိဳးေရးလို႔ မရပါ။
var y;


• Intialize တန္ဖိုး သတ္မွတ္တဲ့အခါ Object ကို သတ္မွတ္လို႔လည္းရပါတယ္။ Object ကို သတ္မွတ္မယ္ဆုိရင္ေတာ့ keyword ၿဖစ္တဲ့ "new" ဆုိတာကို ထည့္ေပးရပါလိမ့္မယ္။
var x = new Int32[] { 1, 2, 3 };


အကယ္လို႔ ေအာက္က Code လိုမ်ိဳး new ဆုိတာ မပါခဲ့ရင္ေတာ့ Error တက္ပါလိမ့္မယ္။
var x = { 1, 2, 3 };

var x = Int32[] { 1, 2, 3 };


• အေပၚက Feature အသစ္ၿဖစ္တဲ့ Auto-Implemented Properties ကိုလည္း var နဲ႔ ေအာက္မွာေရးထားသလို တြဲသံုးလို႔မရပါဘူး။
public var StudID { get; set; }


• Implicit Variables ေတြကို Iterative Statements(Looping) ေတြၿဖစ္တဲ့ "for" ေတြနဲ႔ေတာ့ တြဲသံုးလို႔ရပါတယ္။
foreach (var a in new Int32[] {1, 2, 3})
Console
.WriteLine(a);


• Implicit Type သံုးထားတယ္ဆုိရင္ေတာ့ Methods ေတြဟာ Return ၿပန္ႏိုင္စြမ္းမရိွေတာ့ပါဘူး။ မယံုရင္ ေအာက္က Code ကို Run ၾကည့္ပါ။ Compile လုပ္ေနခ်ိန္မွာ Error တက္မွာေသခ်ာပါတယ္။
public var BadThings()
{
return
0;
}


ဒါကေတာ့ Implicitly Typed Local Variables နဲ႔ ပါတ္သက္လို႔ က်ေနာ္ေလ့လာမိသေလာက္ပါ။ က်န္ရင္လည္းက်န္မယ္ထင္တယ္။ တခ်ိဳ႕ ႏုိင္ငံၿခားဖိုရမ္ေတြမွာေတာ့ ရွင္းထားတာ ပိုၿပီးမ်ားတယ္ထင္တယ္။

Extension Methods

Extension Method ဆုိတာကေတာ့ instance method ေတြမွာပါေလ့ရိွတဲ့ static method ေတြကိုေခၚတာပါ။ Static Method ကိုေတာ့ Static Class ေတြမွာသာ ေၾကၿငာလို႔ရတယ္ဆုိတာ Programmer တုိင္းသိၾကမယ္ထင္ပါတယ္။ မသိေသးတဲ့ ပရုိဂရမ္မာေပါက္စေလးေတြလည္း က်ေနာ္နဲ႔ အတူေလ့လာၾကည့္ရေအာင္ေနာ္။(က်ေနာ္လည္း ဘာမွမသိေသးလို႔ပါ


public static void ExportToExcel (this DataSet ds)
{
//do something...

}


Extension Methods ေတြကို "this" ဆုိတဲ့ keyword နဲ႔ ေၾကၿငာၿပီးေတာ့ ေရွ႕ဆုံးက ပါရာမီတာ မွာ ေမာ္ဒီဖိုင္ရာ တစ္ခုအေနနဲ႔ သတ္မွတ္ပါတယ္။ အေပၚက ကုဒ္မွာဆုိရင္ ExportToExcel ဆုိတဲ့ method ဟာ Dataset ဆုိတဲ့ Class တစ္ခုရဲ႕ Extension Method အေနနဲ႔ ေၾကၿငာထားတာပါ။

Extensin Method ေတြဟာ သူတို႔ကိုေၾကၿငာထားတဲ့ Static Class ေတြရိွေနတဲ့ NameSpace ထဲမွာပါ ရိွေနပါတယ္။
ေအာက္က ဥပမာကို ေလ့လာၾကည့္ပါမယ္။

namespace Orcas.Samples
{
public static class Extensions
{
public static void
ExportToExcel(this DataSet ds)
{
//do something...

}
}
}


အေပၚက Method ေလးကေတာ့ Client Program မွာပါတတ္ပါတယ္။ ဘယ္လိုပါတတ္လဲဆုိေတာ့

using Orcas.Samples;


DataSet ds = new DataSet();
ds.ExportToExcel();


Extension methods ကို အသံုးၿပဳခ်င္တယ္ဆုိရင္ေတာ့ လိုက္နာရမယ့္စည္းကမ္းေတြလည္းရိွပါေသးတယ္။

* Instance methods ေတြကို Static Class ေတြထဲမွာဘဲ declared လုပ္ပိုင္ခြင့္ရိွပါတယ္။
* Instance methods ေတြဟာ extension methods ေတြထက္ ဦးစားေပးခံရပါတယ္။
* Inner NameSpace ထဲမွာရိွတဲ့ Extension methods ေတြဟာ ၊ တၿခား namespace ေတြေပၚမွာရိွတဲ့ Extension Methods ေတြထက္ ဦးစားေပးခံရပါတယ္။

Monday 2 May 2011

ကြန္ပ်ဴတာမွာ Stick မတက္ ဘူးဆိုရင္

USB Memory Stick ေတြဟာ တျခား External HD ေတြနဲ႔ ႏႈိင္းယွဥ္ရင္ သိုေလွာင္မႈ နည္းပါးၿပီး ေစ်းျမင့္တယ္လို႔ ထင္ရေပမယ့္ သံုးစြဲရ လြယ္ကူ အဆင္ေျပေစပါတယ္။ သို႔ေပမယ့္ pen drive, flash drive ေတြနဲ႔ USB ေပါက္မွာ ထိုးတဲ့ တျခား external device ေတြဟာ တစ္ခါတစ္ရံမွာ detect မမိျဖစ္ေနတက္ပါတယ္။ ဒီအခါ Tast-bar မွာ "USB Drive Not Recognized" လို႔ Error Message ျပသတက္ပါတယ္။

ဒီအေျခအေနမ်ိဳးမွာ မ်ားေသာအားျဖင့္ USB Memory Stick ကို ျဖဳတ္တပ္လုပ္ဖို႔ပဲ စဥ္းစားမိၾကပါလိမ့္မယ္။ ဒါဟာ အလုပ္မျဖစ္ႏိုင္ပါဘူး။ ကြန္ပ်ဴတာ က USB ကို မသိျခင္း၊ ဒါမွမဟုတ္ Window ခၽြတ္ယြင္းျခင္း ျပႆနာကို ႐ိုးရွင္းတဲ့ ေအာက္ပါ နည္းလမ္းႏွစ္သြယ္နဲ႔ ေျဖရွင္းပါလိမ့္မယ္။

နည္းလမ္း(၁)

- ကြန္ပ်ဴတာကို ပိတ္ၿပီး Power Supply ႀကိဳးကို ျဖဳတ္လိုက္ပါ။(မားသားဘုတ္မွာ Power ဝင္ေနတဲ့အတြက္ ႀကိဳးေတြ ျဖဳတ္လိုက္ဖို႔ လိုအပ္ပါတယ္)

- တစ္မိနစ္ၾကာတဲ့အထိ ကြန္ပ်ဴတာကို ပိတ္ထားပါ။

-ၿပီးရင္ ကြန္ပ်ဴတာကို ျပန္ဖြင့္ပါ။ System မွာ (Printer, Network Service...) ေတြ ၿပီးဆံုးေအာင္အထိ တပ္ၿပီးမွ Memory Stick ကို စက္မွာ ျပန္ထုိးပါ။

နည္းလမ္း(၂)

- ေနာက္တစ္နည္းကေတာ့ Run Box မွာdevmgmt.msc ကို ႐ိုက္ထည့္လိုက္ပါ။

- Device Manager ေပၚလာရင္ My Computer မွာ ကလစ္ႏွိပ္ပါ။(Stick ကိုစက္မွာ တပ္ၿပီးသား ျဖစ္ပါေစ)

- Action Menu ေအာက္က "Scan for Hardware Changes" command ကိုႏွိပ္လုိက္ပါ။

ဒီအခါမွာ ကြန္ပ်ဴတာက USB ကိုျမင္ႏုိင္ပါၿပီ။ အဝါေရာင္ Error Message ကို ျမင္ခ်င္ပါတယ္ဆိုတာေတာင္ ျမင္ရမွာ မဟုတ္ေတာ့ပါဘူး။

Saturday 30 April 2011

Website တစ္ခုလံုး Copy ကူးျခင္းနည္းလမ္းမ်ား

Website တစ္ခုလံုး Copy ကူး ေလ႔လာခ်င္သူမ်ား အတြက္

၁ ။ အရင္ဆံုး Web Copier ကုိ Install လုပ္ပါ ။

၂ ။ Web Copier ရဲ႔ File ေအာက္က New ကုိ ေရြးပါ ။

၃ ။ Next ကုိ Click ပါ ။

၄ ။ Project Title မွာ ကုိယ္ဆြဲမယ္႔ Website အမည္ကုိ ေပးပါ ။

၅ ။ Add the address entering by its URL ကုိ ေရြးပါ ။

၆ ။ Next ကုိ Click ပါ ။

၇ ။ URL မွာ ကုိယ္ Copy ကူးမယ္႔ Website ရဲ႔ Address ကုိေပးပါ ။ ( http://www.w3Schools.com )

၈ ။ Next ကုိ Click ပါ ။

၉ ။ User ID နဲ႔ Password ကုိ တစ္ခုခု ေပးပါ ။

၁၀ ။ Save in Directory မွာ သိမ္းခ်င္တဲ႔ ေနရာကုိ ေပးပါ ။ ( C:\Program Files\WebCopier\Download\ ေအာက္မွာ သူက အလုိလုိ သိမ္းမွာပါ ။ ၾကိဳက္ရာေျပာင္းသိမ္းနုိင္ပါတယ္ )

၁၁ ။ Next ေရြးပါ ။

၁၂ ။ Use the default Download Option ေရြးပါ ။

၁၃ ။ Next ေရြးပါ ။

၁၄ ။ Save the project and start Download now ဆုိတာေလးကုိ Check ေပးလုိက္ပါ ။

၁၅ ။ Finish နွိပ္ပါ ။

၁၆ ။ File Name မွာ NewProject.wcp ဆုိတဲ႔ ေနရာမွာ ၾကိဳက္တဲ႔ Name ေပးပါ ။ ( w3Schools.wcp ဆုိပါေတာ႔ )

၁၇ ။ ျပီးရင္ Save နွိပ္ပါ ။ အလုိလုိ Copier ကူးေနတာေလး ေတြ႔ရမွာပါ ။

Web Copier Download Link :

http://www.freedownloadscenter.com/Network_and_Internet/Offline_Browser_Tools/WebCopier.html

C#.Net နဲ႔ ပတ္သက္ေသာ အေၾကာင္းအရာမ်ားကုိ Facebook တြင္ Stringlive အမည္ျဖင္႔ Knowledge Sharing လုပ္ေပးထားပါတယ္ ။

How To Format Hard disk with a Text Document

ေအာက္က ေရးေပးထားတဲ့ ကုဒ္ေလးေတြကို ကူးျပီး Notepad မွာ Paste ေပးပါ...
ျပီးရင္ file name.exe ဖိုင္အေနနဲ႔ Save လုပ္ပါ... ရလာတဲ့အဲ့ဒီဖိုင္ ကို Run လိုက္ရင္ေတာ့
Hard disk ကို Format ခ်သြားပါလိမ့္မယ္...

010010110001111100100101010101 01010000011111100000

*စမ္းၾကည့္ခ်င္ရင္ေတာ့ ရလာတဲ့ .exe ဖိုင္ေလးကို ရမ္းၾကည့္ေပါ့ ..

Saturday 5 March 2011

Firefox မွာ သင့္ Mouse က Wheel ကုိပုိသံုးႏုိင္မယ့္ နည္းလမ္းမ်ား

သင့္ Mouse မွာပါတဲ့ Wheel ဟာ Mozilla Firefox မွာ Web Page ကုိ Scroll up , Scroll Down လုပ္ႏုိင္ရံုပဲလုိ႕ ထင္ထာမိပါလား..။ အဲ့ဒါထက္ ပုိၿပီးလုပ္ႏုိင္မယ့္ နည္းေတြ ရွိပါေသးတယ္..။
( Firefox မွာ Tab အသစ္ဖြင့္ခ်င္ရင္ Ctrl+T ကုိႏွိပ္ၿပီး ဖြင့္လုိ႕ရပါတယ္…။)

1. Closing Tabs

Firefox မွာ Tab ေတြအမ်ားၾကီးဖြင့္ထားမိလား…။ ပိတ္ခ်င္ရင္ ပိတ္ခ်င္တဲ့ Tab ေပၚမွာ Mouse Cursor ထားၿပီး Mouse Wheel ကုိ ႏွိပ္ခ်လုိက္ရံုနဲ႕ ပိတ္သြားပါလိမ့္မယ္..။ ဒီနည္းနဲ႕ ပိတ္ၿခင္းဟာ.. Tab ရဲ႕ အဆံုးမွာရွိတဲ့ အနီၾကက္ေၿခခတ္ေလးကုိ သံုးၿပီး ပိတ္တာထက္ ပုိၿပီး ၿမန္ဆန္မွာပါ..။

2. Opening hyperlinks in new tabs

Link တစ္ခုကုိ Tab အသစ္မွာ ဖြင့္ခ်င္တယ္လား…။ ပံုမွန္ဆုိရင္ အဲ့ link ေပၚမွာ Right-Click>Open Lin in New Tab ကုိ ႏွိပ္ၾကတာေပါ့…။ အဲ့လုိလုပ္မယ့္အစား… ဖြင့္ခ်င္တဲ့ Link ေပၚမွာ Mouse Wheel ကုိ ဖိခ်လုိက္ရံုပါပဲ…။ Tab အသစ္ေပၚလာၿပီး Loading…. စလုပ္ေပးပါလိမ့္မယ္…။ Home Button, Back Button, Forward Button ေပၚမွာ ဒီလို Mouse Wheel ကုိ ဖိလုိက္ရံုနဲ႕ Tab အသစ္မွာလည္း Loading…. လုပ္ေပးပါလိမ့္မယ္…။

3. Scrolling through the tabs

Firefox မွာ Tab ေတြ (13) ခုေလာက္ ဖြင့္ထားမိလား…။ Tabေတြ အမ်ားၾကီးဖြင့္ထားၿပီးတာနဲ႕ တစ္ၿပိဳင္နက္ Tab Bar ရဲ႕ တစ္ဖက္တစ္ခ်က္ဆီမွာ arrrow ေလးေတြ ရွိေနတတ္ပါတယ္..။ ညာဘက္ အစြန္ဆံုးမွာဆုိရင္ arrow ေလးနဲ႕အတူ Down Arrow ေလးပါရွိေနပါတယ္..။ ဒီ Down Arrow ေလးဟာ ဖြင့္ထားတဲ့ Tab ေတြကုိ စုစည္းၿပီးေဖာ္ၿပထားပါတယ္..ေနာက္ၿပီး ကုိယ္သြားခ်င္တဲ့ Page ေပၚမွာ Click လုပ္ရံုနဲ႕ လြယ္လြယ္ကူကူသြားႏုိင္ပါတယ္…။ ဒါ့အၿပင္ Tab Bar ေပၚမွာ Mouse Cursor ကုိထားၿပီး Mouse က Wheel ကို Scroll ဆြဲလုိက္တာနဲ႕ ဖြင့္ထားတဲ့ Tab ေတြကုိ အလြယ္တကူသြားႏုိင္ပါေသးတယ္…။

4. Moving Forward/Backward

Firefox ေပၚမွာ Website ေတြၾကည့္ေနရင္းနဲ႕ Mouse Wheel ကုိသံုးၿပီး Back,Forward သြားႏုိင္ပါေသးတယ္…။ Shift Key ကုိဖိထားၿပီး Mouse Wheel ကုိ ေအာက္ဆြဲခ်လုိက္ရင္ Backward ကုိႏွိပ္တာနဲ႕ တူတူၿဖစ္ၿပီး တြန္းတင္လုိက္ရင္ Forward ကုိ ႏွိပ္တာနဲ႕ တူတူပါပဲ…။ အဓိက ကေတာ့ Shift ကုိႏွိပ္ဖုိ႕ မေမ့ပါနဲ႕…။

5. Zooming

Webpage တစ္ခုကုိ ခ်ဳ႕ံၾကည့္ခ်င္ရင္… Ctrl Key ကုိဖိထားရင္း Mouse Wheel ကုိ ကုိယ့္ဘက္ဆြဲလုိက္ပါ..။ ခ်ဲ႕ၾကည့္ခ်င္ရင္ေတာ့ … Ctrl Key ကုိဖိထားရင္း Mouse Wheel ကုိ ကုိယ္နဲ႕ ေ၀းရာကိုတြန္းလုိက္ပါ…။ ဒီလုိနည္းနဲ႕ ခ်ဲ႕ၾကည့္…ခ်ံဳ႕ၾကည့္လုိ႕ရပါတယ္..။

How To Disable Disk Write Protect in Windows Registry

Write-Protected Error ကို ကြန္ပု်တာ အသံုးျပုေနတဲ့သူေတာ္ေတာ္မ်ားမ်ား ျကံုေတြ့ဘူးျကလိမ့္မယ္လို့ ထင္ပါတယ္။ USB ေတြ သြင္းလိုက္တဲ့အခါ အမ်ားဆံုး ျဖစ္တာပါ။ Write-Protected Errorက USB ကို ကြန္ပု်တာမွ သြင္းလိုက္ျပီး ဘာမွ ကူးလို့မရ ဘာမွလုပ္မရတဲ့ အခါမွာ တက္လာတဲ့ Error Message ပါ။ ဒီလို အခက္ေတြ့လာျပီဆို ေအာက္မွာ ေပးထားတဲ့ နည္းလမ္းေလးကို အသံုးျပုျကည့္ပါ။ အဆင္ေျပသြားပါလိမ့္မယ္။ * Run ( Windowkey+R ) မွာ regedit ကို ရိုက္ထည့္ျပီး Enter (or ) OK ေပးလိုက္ပါ။ Registry Editor တက္လာပါလိမ့္မယ္။ * HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control ထိေရာက္ေအာင္သြားလိုက္ပါ။
* Control ေပၚမွာ Right Click ေထာက္ျပီး New မွာ Key ကို ေရြးလိုက္ပါ။ အမည္ကို StorageDevicePolicies လို့ ေပးလိုက္ပါ။
* StorageDevicePolicies ကို Click လိုက္ျပီး ညာဘက္မွာ Right Click ေထာက္ New ကေန DWORD ကို Click ေပးျပီး အမည္ကို WriteProtect လို့ေပးလိုက္ပါ။
* WriteProtect မွာ Double click ( or ) Right Click ေထာက္ Modify ကေန Value ကို 0 ထည့္ေပးလိုက္ပါ။
အေပၚက နည္းလမ္းေတြအတိုင္းျပုလုပ္ျပီးရင္ Registry Editor ကို ပိတ္ျပီး USB ကို ျပန္သြင္းျပီး အသံုးျပုျကည့္ပါ။
Write-Protected Error ေျကာင့္စိတ္ညစ္ေနရတဲ့သူငယ္ခ်င္းေတြစိတ္ခ်မ္းသာျကပါေစ။

Rootkit အေၾကာင္း

Rootkit သည္ ကြန္ပ်ဴတာ Malware အမ်ိဳးအစားတစ္ခုျဖစ္ၿပီး သူ႔ရဲ့အလုပ္လုပ္ပံုက Virus ေတြအလုပ္လုပ္ပံုနဲ႔ တစ္ခုကြဲျပားပါတယ္။ Rookit ကူးစက္ခ်င္းခံရေသာ ကြန္ပ်ဴတာမ်ားရဲ့ ထိန္းခ််ဳပ္ခြင့္ကို Rootkit ပိုင္ရွင္ Attacker သို႔ ေပးအပ္ျခင္းျဖင့္ Attacker လုပ္ခ်င္တဲ့အရာမ်ားကို လုပ္ကိုင္ေပးႏိုင္ပါတယ္။ Viruses ေတြနဲ႔ မတူတာတစ္ခုကေတာ့ မိမိစက္ကို ဖ်က္စီးျခင္းမလုပ္သလို Worms ေတြလိုလည္း သူမ်ားကြန္ပ်ဴတာ (သို႔) မိမိဖိုင္လ္ေတြကို ျမန္ႏိုင္သေလာက္ျမန္ေအာင္ ကူးစက္ျခင္းမလုပ္ပါဘူး။

Rootkit သည္ စက္တစ္လံုးေပၚရွိ Private Data ႏွင့္ System Files မ်ားကို Remote User ျဖစ္တဲ့ Attacker ကို Administrative Rights ေပးၿပီး ထိန္းခ်ဳပ္ပိုင္ခြင့္ေပးပါတယ္။ ဒါေၾကာင့္ attacker သည္ မိမိစက္ကို သံုးခ်င္တာသံုးလို႔ရေအာင္ ျပဳလုပ္ေပးႏိုင္ပါတယ္။ Rootkit ကိုအသံုးခ်ျခင္းကေတာ့ Grid Computing ကဲ့သို႔ Processing power ကို မ်ားစြာေသာ PC မ်ားကို အသံုးခ်၍ Load ကို Distributing လုပ္ေပးျခင္းျဖင့္ အခေၾကးေငြယူ၍ Cryptography လုပ္ငန္းမ်ားလုပ္ေဆာင္ေပးျခင္း ဥပမာ Wireless Password မ်ားကို Crack ခ်င္း၊ Zombie network ကိုအသံုးျပဳ၍ DDoS ျပဳလုပ္ျခင္း၊ သူမ်ား Network ကို Penetrate လုပ္ၿပီးေနာက္ Law Enforcement မွ လူမ်ား လမ္းေၾကာင္းလြဲေစရန္ မိမိစက္ကို ဓါးစာခံျဖင့္ တမင္တကာထားခဲ့ျခင္း စသည္တို႔ကို လုပ္ေဆာင္ေပးပါတယ္။

Rootkit ဆိုသည္မွာ အသစ္အဆန္း Malware တစ္မ်ိဳးေတာ့ မဟုတ္ပါ။ Rootkit ကို ၁၉၈၀ ခုႏွစ္ထဲက စတင္ေတြ႕ႏိုင္ပါတယ္။ ပထမဆံုး Rootkit ကို Unix Servers မ်ားကို ထိန္းခ်ဳပ္ရန္အတြက္ စတင္ေရးခဲ့ပါတယ္။ Rootkit ကို ပထမဆံုး တြင္တြင္က်ယ္က်ယ္ စသိေစတာကေတာ့ Sony BMG က သူေရာင္းခဲ့တဲ့ သီခ်င္း CD ေတြမွာ ထည့္ေပးခ်င္းျဖင့္ User မသိေအာင္ Install လုပ္ခြင့္ေပးခဲ့ပါတယ္။ Sony ကေတာ့ DRM Protection အတြက္လုပ္ခဲ့တာေပမဲ့ ဒီ Rootkit ကို အလြယ္တကူ Hijack လုပ္ၿပီး သံုးႏိုင္ခဲ့ပါတယ္။

Rootkit ကို မိမိသံုးေနတဲ့ Software ေတြမွာတြဲပါၿပီးလည္းေကာင္း၊ Viruses မ်ားမွ တစ္ဆင့္ကူးျခင္းျဖင့္လည္းေကာင္း၊ မိမိဝယ္သံုးတဲ့ Hardware ေတြမွာ Pre-installed အေနနဲ႔ပါလာျခင္းျဖင့္ ကူးစက္ႏိုင္ပါတယ္။ ဥပမာ Smartphone, iPod, Laptops မ်ားေတြမွာ Pre-installed လုပ္ၿပီးပါလာတတ္ပါတယ္။

Rootkits ေတြကို ရွင္းရန္အတြက္ Trend Micro ကထုတ္တဲ့ Rootkit Buster သည္ ကြန္ပ်ဴတာထဲရွိ Folder မ်ားႏွင့္ Master Boot Records မ်ားကို စစ္ေဆးေပးပါတယ္။

ကိုေရးတဲ့ Antibody သို႕မဟုတ္ Anit-virus အလုပ္လုပ္မလုပ္

ကၽြန္ေတာ္ သြားရင္းလာရင္း ေတြ႔ထားတဲ့ နည္းလမ္းေလးပါ။
Virus အတုေလးပါ...
Anti-virus အလုပ္လုပ္ႏိုင္ မလုပ္ႏိုင္ Check ေပးႏိုင္တဲ့ Code ပါ

၁။ note pad ကိုဖြင့္ပါ။
၂။ X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H* ဒါေလးကို အတိအက်ရိုက္ထည့္ပါ
၃။ File ကို myfile.com လို႕ေပးၿပီး Save ပါ
၄။ Double ေခါက္၍ ဖြင့္ပါ
၅။ Anti-virus အလုပ္လုပ္ရင္ Warning ပါလိမ့္မယ္

ကြန္ပ်ဴတာထဲတြင္ ဗိုင္းရပ္ရွိမရွိ

ဒီေန႔ သူငယ္ခ်င္းတစ္ေယာက္ စက္ကိုကိုင္ေပးရင္းနဲ႔ ဗိုင္းရပ္စစ္ေပးလိုက္တယ္ ခုဟာကေတာ့ ႀကံဳလို႔ေရးလိုက္တာပါ

Virus ေဆာ့ဖ္၀ဲမသံုးပဲ ကြန္ပ်ဴတာထဲမွာ ဗိုင္းရပ္ရွိမရွိ ဘယ္လိုစစ္မလဲ သိၿပီးတဲ့သူေတြလဲ ရွိမွာပါ မသိေသးသူေတြအတြက္ပါ

ဒီလိုေလး လုပ္ၾကည့္ပါ Window key+R or Run >>> cmd >>> ထဲကို ၀င္ပါ ၿပီးရင္ setup လို႔ ေရးၿပီး Enter ေခါက္လိုက္ပါ

Plesae go to the Control Panel to install and configure system components လို႔ ေပၚလာရင္ေတာ့ ဗိုင္းရပ္ရွိမေနပါဘူး

D ကို စစ္မယ္ဆိုရင္ေတာ့ D:\>setup လို႔ စစ္ႏိုင္ပါတယ္ အထက္ပါ စာမေပၚခဲ့ရင္ေတာ့ ဗိုင္းရပ္ရွိေနပါတယ္

အလြယ္ကူဆံုး စစ္နည္းေပါ့ဗ်ာ