Archive for November, 2010

[C#] แก้ปัญหา Event Log ใน Windows เต็ม

ปัญหานี้เจอ เมื่อหลายเดือนก่อนแล้ว แต่ไม่มีเวลาเขียน ปัญหาดังกล่าวเกิดจากในโปรแกรมที่พัฒนามีการเขียน log การทำงานและสถานะไปไว้ใน Event log ในส่วนของ Application ดังรูป

พอ Event log เต็มทำให้โปรแกรมดันหยุดไม่ทำงานต่อ แรกๆก็หาหาเหตุไม่เจอ จนเอามารัน debug แล้วก็เจอปัญหาดังกล่าว วิธีการแก้ไขสามารถทำได้ดังนี้
1. เพิ่มขนาด Event log ให้มากขึ้น เพราะโดยปกติ Windows จะให้ขนาดมาที่ 1024 KB เท่านั้น (ทั้ง Log ที่สร้างขึ้นเอง และ ของ Windows เอง) คลิกขวา -> Properties จะได้หน้าต่าง ดังรูป

2. กำหนดรูปแบบการจัดเก็บ เช่นแทนที่ Log เดิมถ้าเต็ม, เคลียร์ออกเมื่อเต็ม ดูรูปจากข้อ 1 ประกอบ
ทั้งสองวิธีดังกล่าวอาจไม่สะดวกหากต้องไปไล่นั่ง Config ให้กับ user ทุกคน ดังนั้นทำการกำหนดใน code ส่วนที่เขียน log จะง่ายกว่า ดังนี้

EventLog evl = new EventLog();
evl.Log = "MyLogName";
evl.MaximumKilobytes = 1024;
evl.ModifyOverflowPolicy(OverflowAction.OverwriteAsNeeded, 0);

หลังจากแก้ไปปัญหาดังกล่าวก็สามารถใช้โปรแกรมได้อย่างราบรื่น

แหล่งข้อมูล
Event Logging – Clearing the Event Log

[Tips] ลบ Windows Service ใน Windows 7

สืบเนื่องจากทำการ ถอนการติดตั้งโปรแกรมออกจาก Windows แล้ว Service ที่ติดตั้งไปไม่โดนถอนออกไปด้วย ต้องพึ่งพา อ. google ได้คำตอบดังนี้
1. ลบโดยใช้คำสั่ง sc

sc delete "service name"

เช่น

C:\Windows\system32>sc delete "RegImportService"

คลิกขวาที่ cmd.exe แล้วเลือก “Run as administrator” ไม่งั้นจะไม่สามารถใช้โปรแกรม sc ได้
2.ลบผ่าน Registry เข้าไปตาม

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

จากนั้นก็เลือกลบ Service ที่ต้องการได้เลย (กรุณาทำด้วยความระมัดระวัง และ ควรสำรอง Registry ก่อนลบ)

แหล่งข้อมูล
How to Delete a Windows Service in Windows 7, Vista or XP
How to Remove an Unwanted Service in Windows 7/Vista/XP

[Java] ปัญหา Calendar ไม่แสดง ค.ศ ใน Weblogic Workshop 8.1

ปัญหาเล็กๆน้อยๆ แต่ทำเสียเวลาไปเกือบ 1 ชม.เต็มๆ ปัญหาก็เกิดจากการ query ข้อมูลจากฐานข้อมูลโดยใช้ HQL (Hibernate Query Language) และ เงื่อนไขดันใช้ Calendar ในการดึงข้อมูล ดังนี้

Calendar cal = Calendar.getInstance(Locale.US);
String hql = "from Order or where or.orderDate = ?";
Object values[] = new Object[] { cal};
Type type[] = new Type[] {TypeFactory.basic(Calendar.class.getName()) };
List orders = HibernateUtil.findBy(hql, values, type);

ทำอย่างไงก็ไม่ไ่ด้ข้อมูล ก็ งง อยู่พักหนึ่งว่าทำไมไม่ได้ ทั้งๆที่มีข้อมูล และ code บนเครื่อง production ก็ทำงานได้ปกติ พอเอามารันในเครื่องกับไม่ไ่ด้ ก็เลยลอง debug ดู เจอปัญหาเลย

มันดันเป็นปี พ.ศ ไปซะงั้น ลองกำหนดค่าต่างๆแล้วก็ไม่สามารถ format เป็น ค.ศ ได้ สุดท้ายต้องไปแก้ไข Reginal and Language Options ใน Control Pannel ดังรูป และ Restart มาก็เป็นการแก้ไขปัญหาเรียบร้อย

หมายเหตุ : เป็นการแก้ไขที่ยอมรับไม่ค่อยได้เท่าไร เพราะ ผมลองใน Eclipse, Netbeans ก็ใช้ได้ไม่มีปัญหาอะไร ยกเว้น Weblogic Workshop ต้องไปกำหนดตรงไหนกันแน่ ใครทราบช่วยแนะนำด้วยครับ