Thursday, February 25, 2010

C# เเปลงค่าเงินให้เป็นตัวหนังสือ



วันนี้นั้งเขียนโปรเเกรมให้ป้า ป้าท่านขายเกี่ยวกับอุปกรณ์ไฟฟ้า
ตอนเเรกกะว่าจะใช้จาวาหรือ.net ดี สุดท้ายก็เลือก .net
เพราะมีเวลาห้าวัน พอดีอยากได้โค้ดเเปลงตัวเลขเป็นตัวหนังสือ
ของค่าเงิน ว่าจะให้ก๊อปให้เน็ตแต่วันนี้เน็ตดันเล่นไม่ได้ก็เลยนั้ง
เขียนเอง จำได้ว่าตอนเรียนปีสองอาจารย์เคยให้เขียน แต่พอจบ
แล้วมาทำงานทำไมรู้สึกว่าเขียนได้สวยงามเหมือนตอนที่เรียนเลย
มาดูโค้ดกันครับ

public static string ConvertMoneyToThaiText(string monery)
{
int dotIndex = monery.IndexOf('.');
string integer = "";
string point = "";
if (dotIndex > 0)
{
integer = monery.Substring(0, dotIndex);
point = monery.Substring(dotIndex + 1);
}
else
{
integer = monery;
}
string valDecimal = GetMoneyText(integer);
valDecimal += "บาท";
if (string.IsNullOrEmpty(point) == false)
{
valDecimal += GetMoneyText(point) + "สตางค์";
}
return valDecimal;

}

อันนี้ส่วนที่สองครับ

private static string GetMoneyText(string monery)
{
int length = monery.Length;

string value = "";
string result = "";
string numText = "";
string currPosition = "";
string valOfPosition = "";

for (int i = 0; i < length; i++)
{
currPosition = monery.Substring(i, 1);
valOfPosition = monery.Substring(i, monery.Length - i);
int num = Int32.Parse(currPosition);
if (num != 0)
{
numText = GetNumText(num);
value = GetValue(valOfPosition.Length);
if (valOfPosition.Length == 2)
{
numText = "ยี่";
}
}
result += numText + value;
numText = "";
value = "";
}
return result;
}

อันนี้ส่วนที่สามครับ

private static string GetNumText(int num)
{
switch (num)
{
case 1:
return "หนึ่ง";
case 2:
return "สอง";
case 3:
return "สาม";
case 4:
return "สี่";
case 5:
return "ห้า";
case 6:
return "หก";
case 7:
return "เจ็ด";
case 8:
return "เเปด";
case 9:
return "เก้า";
case 0:
return "ศูนย์";
default:
return "";
}
}

อันนี้ส่วนที่สี่ครับ

private static string GetValue(int length)
{
switch (length)
{
case 2:
return "สิบ";
case 3:
return "ร้อย";
case 4:
return "พัน";
case 5:
return "หมื่น";
case 6:
return "แสน";
case 7:
return "ล้าน";
case 8:
return "สิบล้าน";
case 9:
return "ร้อยล้าน";
case 10:
returnjavascript:void(0) "พันล้าน";
case 11:
return "หมื่นล้าน";
case 12:
return "แสนล้าน";
case 13:
return "ล้านล้าน";
default:
return "";
}
}

เป็นอันเสร็จเรียบร้อยลองรันดูผลที่ได้คือ

Thursday, February 18, 2010

การ Seriaize Object ด้วย Java

ในทางคอมพิวเตอร์นั้นเราสามารถที่เขียน Object ลงไฟล์แล้ว
อ่านกลับมาเป็น Object ได้ไม่ว่าจะ .Net หรือ Java
ลองมาดูตัวอย่างภาษาจาวาเเบบง่ายกันครับ

private void writeCurrentDir(PreviousDirectory prevDir) throws Exception {

FileOutputStream fos = null;
ObjectOutputStream out = null;
try {
log.debug("Start write object PreviousDirectory to file");
fos = new FileOutputStream(filename);
out = new ObjectOutputStream(fos);
out.writeObject(prevDir);
out.close();
log.debug("Write object PreviousDirectory to file success!");
} catch (IOException ex) {
log.error(ex);
throw new Exception(ex);
}
}

สำหรับการอ่าน

private PreviousDirectory getPreviousDir() {

FileInputStream fis = null;
ObjectInputStream in = null;
PreviousDirectory prevDir = null;
try {
log.debug("Start read file to object PreviousDirectory");
fis = new FileInputStream(filename);
in = new ObjectInputStream(fis);
prevDir = (PreviousDirectory) in.readObject();
in.close();
log.debug("Read file to object PreviousDirectory success!");
} catch (IOException ex) {
//ignore
return null;
} catch (ClassNotFoundException ex) {
//ignore
return null;
}
return prevDir;
}

Tuesday, February 16, 2010

cmdHere


เราคงเลยจะทำอะไรบ้างอย่างกับ current folder โดยใช้ command line ผ่าน
MS-Dos แล้วต้องเปิดไล่มาตั้งแต่ home current user กันใช่ใหมครับ แต่ Microsoft
ได้ทำโปรเเกรมพวก Power Toys for windows คือพวกโปรเเกรมที่เป็น Utility ของ
Windows ต่างๆ นั้นแหละครับและตัว cmdHere ก็เป็นหนึ่งในนั้นครับ ทำให้การทำงานง่ายยิ่งขึ้น

ลองโหลดมาเล่นกันดูนะครับ Microsoft PowerTroys

CruiseControl

CruiseControl เป็น CI ต้วนึ่งที่นิยมใช้กันอย่างเเพร่หลาย ไม่ว่าจะเป็นโปรเจ็คที่พัฒนาด้วย Java , .Net
ซึ่ง Cruisecontrol นั้นถูกเขียนขึ้นด้วย Java การ config นั้นก็สามารถทำได้ง่ายและเชื่อมต่อกับเครื่องมือที่นิยม
ใช้กันในปัจจุบัน ไม่ว่าจะเป็น Maven , Ant , CVS,SubVersion,Git อื่นๆ อีกมากมายและยัง support dashboard
สำหรับตัวอย่างการ config ดูได้จาก ที่นี้ ครับ