วันศุกร์ที่ 5 มิถุนายน พ.ศ. 2558

การใช้ .bat file สำหรับลบ logs อัตโนมัติ


เรื่องปัญหา log ใน ecms-xxxxxx / rmp-logs นั้นค่อนข้างสร้างปัญหากับผมเมื่อ เวลาผ่านไปราว 6 เดือน เจ้าระบบสารบรรณฯสาสุข มันจะโต และโตอย่างต่อเนื่อง เพราะมันจะมี log หน้าตาในภาพข้างบนเต็มไปหมด ซึ่งขนาดส่วนใหญ่แล้วจะมี size เพียงแค่ 199 bytes เท่านั้น แต่ size on disk นั้น มันต้องเก็บถึง 4.0kb


นี่จึงสร้างปัญหาให้กับพื้นที่ใน disk ที่มีขนาดจำกัด ซึ่งผมเองก็ไม่ได้นิ่งนอนใจ ครั้งแรกที่ติดตั้งนั้นก็พยายามเข้ามาลบ folder ที่เก่าเกิน 90 วัน 60 วัน 30 วัน แต่ไฟล์ที่อยู่ใน folder นั้นไม่ใช่น้อย บาง folder มีราว 3 แสน ทำให้การเปิดเพื่อลบแต่ละครับ ใช้เวลานานมาก เรียกได้ว่า เปิดลบตอนเช้า เย็นค่อยมาดู

ครั้งแรกที่ผมแก้ผมใช้ command ลบ ซึ่งมันต้องมานั่งพิมพ์ทุกครั้งที่ลบเลยก็ว่าได้ จึงเปลี่ยนวิธี มาเขียน เก็บไว้เป็น .bat เวลาใช้งานก็ คลิกเท่านั้น

แต่เมื่อไม่มีเวลาดูแล มันก็จะโตขึ้นมาอีก จนเหลือพื้นที่ประมาณ 200m ผมก็ทำการลบอีก แต่ครั้งนี้สร้างความเสียหายเพิ่มเติม ไม่รู้เกิดเพราะสาเหตุใด ทำให้ partition ล่ม อยู่ๆ OS มองไม่เห็น Drive ที่เก็บข้อมูล

ผมลองกู้ขึ้นมา แต่ไม่พบ!! เหมือนไฟล์มันเสีย จนสุดท้ายเพื่อให้ระบบทำงานต่อได้ ผมจึงตัดสินใจ format partition และติดตั้ง ระบบใหม่ทั้งหมด ซึ่งตอนนี้ก็ได้ upgrade เป็น version ใหม่

หลังจากใช้ version ใหม่ได้ 1 สัปดาห์ ก็พบว่า log file ก็ยังมากเหมือนเดิม ผมจึงเขียน batch เพื่อให้มันดำเนินการลบไฟล์แบบอัตโนมัติ แบบวันต่อวัน


แต่เมื่อทดสอบครั้งแรก ทำให้ระบบล่มไปอีก เนื่องจากมี bug ที่ผมพลาดไม่ได้ test ก่อนจะขึ้นระบบ ตามภาพด้านบน ที่ test bug แล้ว พบว่า PATH dir ที่ตั้งไว้มัน ผิด ทำให้มันหาไฟล์ไม่เจอ แต่ด้วยความที่มันอยู่ใน D:\ มันจึงลบไฟล์ทั้งหมดที่อยู่ใน drive นี้ รวมทั้งตัวมันเองด้วยทิ้ง!!! (ซึ่งผมตั้ง schedule ไว้ว่าหากถึงเวลา ตี 1 ของทุกวัน ให้ run file bat นี้ )


จึง fix ด้วยการสร้าง function ให้มันเรียกใช้ มีการเพิ่ม IF EXIST เพื่อเช็กว่ามีหรือไม่ ถ้ามีก็ลบ ถ้าไม่มีให้จบการทำงาน

ผลการทดสอบ 1 วัน สามารถลบได้ไม่มีปัญหา เดี๋ยวต้องดูผลระยะยาวต่อไป

วันจันทร์ที่ 24 มิถุนายน พ.ศ. 2556

แก้ปัญหาไฟล์แนบในอีเมล์เป็นภาษาต่างดาว


ภาพจาก gmail แสดงข้อมูลที่ได้รับจาก ECMS

สืบเนื่องจากระบบสารบรรณสาสุขนั้น มีระบบการส่งข้อมูลข้ามหน่วยงานด้วย eCMS Interface Engine ผ่านทาง eCMS gateway ไปยังเครื่องโรงพยาบาล, สสจ. ที่ติดตั้งระบบ Archives ทีนี้ปัญหาของหัวข้อนี้คือ เวลาที่มีหนังสือเข้าแล้ว เจ้า ECMS มันจะส่ง Email แจ้งเตือนไปยังผู้ดูแลระบบ หรือ ผู้รับหนังสือ ว่ามีหนังสือใหม่เข้า ให้เราเข้ามาลงรายการรับหนังสือ ยังหน้าหลักของ Archives

หน้ารับหนังสือข้ามหน่วย
วิธีการแก้ไขปัญหาข้างต้นนั้น ผมเข้าไปที่ THEGifECMS\src จะพบไฟล์อยู่ด้วยกัน 3 ไฟล์

ไฟล์ใน src

ให้แก้ไขบรรทัดที่ 661: mbp2.setFileName("หนังสือ");


แก้เป็น mbp2.setFileName("Attachfile.pdf");


จากนั้นเราจะมา compile ไฟล์ที่ได้ ให้เป็น jar เพื่อนำไปใช้งาน โดยทำตามขั้นตอนที่ได้ในไฟล์ test-script-20100126.txt

============ compile step ===============
c:
cd AppServ\www\archives\THEGifECMS
set PATH="C:\Program Files\Java\jdk1.6.0_33\bin";%PATH%
set CLASSPATH=..\lib\javamail.jar;..\lib\itext-1.4.6.jar;..\lib\iaikPkcs11Wrapper.jar;..\lib\mysql-connector-java-5.1.18-bin.jar;..

cd src
javac -d .. -encoding TIS-620 *.java
cd ..
jar cf lib\MophEcmsPhp001x.jar org

ส่วนอันนี้เป็นแบบสำหรับเครื่องที่ผมติดตั้ง ECMS โดยจุดที่ต่างกันคือ AppServ ผมอยู่ drive D และ jdk ของผมเป็น 1.6.0_22

============ MoreMeng compile step ===============
D:
cd AppServ\www\archives\THEGifECMS
set PATH="C:\Program Files\Java\jdk1.6.0_22\bin";%PATH%
set CLASSPATH=..\lib\javamail.jar;..\lib\itext-1.4.6.jar;..\lib\iaikPkcs11Wrapper.jar;..\lib\mysql-connector-java-5.1.18-bin.jar;..

cd src
javac -d .. -encoding TIS-620 *.java
cd ..
jar cf lib\MophEcmsPhp001x.jar org

Update V.2  XAMPP jdk 1.7.0_97

============ MoreMeng compile step ===============
D:
cd D:\xampp\htdocs\archives\THEGifECMS
set PATH="C:\Program Files\Java\jdk1.7.0_79\bin";%PATH%
set CLASSPATH=..\lib\javamail.jar;..\lib\itext-1.4.6.jar;..\lib\iaikPkcs11Wrapper.jar;..\lib\mysql-connector-java-5.1.18-bin.jar;..
 
cd src
javac -d .. -encoding TIS-620 *.java
cd ..
jar cf lib\MophEcmsPhp001x.jar org

เริ่มต้นการ compile JAVA บน Windows

1. โดยเริ่มจากเปิด DOS command ขึ้นมาก่อน เข้า windows + R > พิมพ์ cmd จากนั้นใช้ code บรรทัดแรก ให้เลือก path ที่เราติดตั้ง AppServ ไว้ ตัวอย่างในนี้คือ D:


 2. ใส่ path ของ eCMS


3. กำหนด path ของตัว sdk ข้อนี้ต้องระวัง เรื่อง version ต้องให้ตรงกับที่เครื่องนั้นใช้


4. ตั้ง classpath ใช้ code อันที่เขากำหนดมาให้


4. จากนั้นเข้าไปยัง src เพื่อ compile ไฟล์ที่เราแก้ไขไปเมื่อซักครู่


5. run compiler ถ้าไม่พอบ error แสดงว่าระบบทำงานได้


6. create jar


เมื่อเสร็จขั้นตอนแล้วก็ปิด DOS command ไปได้ หลังจากนั้นให้ทำการ เปิดปิดตัว edipa-engine ใหม่อีกครั้ง เพื่อเริ่มต้นการทำงานกับ code ที่เราเพิ่งแก้ไขไป

ผลปรากฏว่าไฟล์แนบที่ส่งมาเป็นไฟล์ pdf ตามที่เรากำหนดไว้ใน filename

หน้าอีเมลหลังจากแก้ไขไฟล์ ECMS แล้ว
GMail แบบใหม่จะแสดง preview ด้วย

ข้อมูลเพิ่มเติมเกี่ยวกับการ Compile JAVA 

วันศุกร์ที่ 21 มิถุนายน พ.ศ. 2556

จุดสังเกตหากไม่มีหนังสือเข้ามาในระบบสารบรรณ


โดยปกติแล้วระบบงานสารบรรณจะมีหนังสือเข้าออกหน่วยงานเป็นจำนวนมาก ในแต่ละสัปดาห์ซึ่งใน 1 วันอาจจะมีมากกว่า 10 เรื่อง แล้วแต่เหตุการณ์ ซึ่งระบบงานสารบรรณสาสุข มีจุดสังเกตง่ายๆหาก สงสัยว่าระบบไม่ทำงาน ให้สังเกตสิ่งผิดปกติดังต่อไปนี้ครับ

1. ดูว่า wrapper.exe ยังทำงานอยู่หรือไม่ สังเกตได้จากการเปิด task manager หรือ ใน linux ดูใน TOP หากทำงานอยู่ ข้อนี้ให้ข้ามไป อาจจะไม่มีอะไรผิดปกติ


2. ดู logs file ของ wrapper ว่ายังรับส่งค่าอยู่หรือไม่ ซึ่งจากข้อ 1 ที่ให้ดู task manager นั้น เพราะบางเครื่องสั่งให้ wrapper ทำงานของ startup ซึ่งจะ run background โดยปราศจากหน้า DOS command ให้เราเห็นถึงการทำงานของมัน ทำให้ต้องมาสังเกตกันที่ log เพื่อความแน่ใจ โดยดูจากวันที่ล่าสุดของ log ว่าเก็บข้อมูลวันที่ใดไว้ โดยปกติแล้วมันจะ run ของมันทุกๆวัน ถ้าวันที่ล่าสุดไม่ใช้วันที่คุณเกิดดู แสดงว่าอาจจะมีปัญหา ให้ end task wrapper แล้วเปิดใหม่ โดยคลิกที่ /bin/edipa-engine.bat หรือใน Linux ให้ service wrapper restart 


สำหรับอีกที่หนึ่งคือ /logsver ดูชื่อ folder ตามวันที่ ว่าต่อเนื่องหรือไม่?


3. ตรวจสอบว่ามี Error หรือไม่ เมื่อ restart service แล้ว ถ้าใน windows เราจะเห็นหน้าจออย่างชัดเจน ให้สังเกตุการทำงานของมันว่ามี Error หรือไม่ ถ้ามีให้แจ้งกับทางผู้ดูแลเพื่อดำเนินการแก้ไข



วันอังคารที่ 4 มิถุนายน พ.ศ. 2556

การทดสอบระบบงานสารบรรณสาสุขบน XAMPP 1.8.1 VC9

เมื่อความอยากรู้อยากเห็นทำให้ลองทดสอบระบบงานสารบรรณสาสุข กับ PHP 5.4.x เนื่องจากตั้งแต่ PHP 5.3 ที่เปิดตัวมาตั้งแต่ปี 2009 บ้านเรายังใช้ 5.2 กันมาจนถึงบัดนี้ ก็ล่วงเลยมา 4 ปีแล้ว ปัญหาก็คือ พวก function เก่าๆ มันจะถูก depecated ไปแล้ว อาทิ split, ereg, eregi , mysql_db_query เป็นต้น โดยคุณสมบัติรวมของ XAMPP 1.8.1 มีรายละเอียดดังนี้
We've released the new version of XAMPP 1.8.1, including:
  • Apache 2.4.3
  • MySQL 5.5.27
  • PHP 5.4.7
  • phpMyAdmin 3.5.2.2
  • FileZilla FTP Server 0.9.41
  • Tomcat 7.0.30 (with mod_proxy_ajp as connector)
  • Strawberry Perl 5.16.1.1 Portable
  • XAMPP Control Panel 3.1.0 (from hackattack142)
ติดตั้งลงบน WinXP 32bit PC ธรรมดาบ้านๆ พอติดตั้งเสร็จ start service, config mysql, เสร็จสรรพแล้วก็คัดลอง archives ใส่ ทำตามขั้นตอนทุกอย่าง ผลปรากฏว่า error เพียบ บ้างก็ไม่ได้แจ้ง error แต่ทำงานต่อไม่ได้

"ข้อความหน้าทะเบียนรับ/ส่งไม่ขึ้น หรือ ขึ้นมาไม่ครบ"

ไม่ทราบถึงปัญที่แน่ชัด เนื่องจากตอนสร้างหนังสือ ก็ยังสร้างได้ แต่พอมาดูหน้ารายการ กลับไม่เห็นข้อความบางส่วน เห็นเฉพาะวันที่ แต่หากมีการเข้าไปแก้ไข หรือ ปรับปรุงข้อมูลอีกครั้ง วันที่ก็จะเพี้ยนไป ไม่เหมือนเดิม


"แก้ไขหน้าตั้งค่าระบบไม่ได้"
ไม่ว่าจะทำการแก้ไขอย่างไร ค่าก็ไม่เปลี่ยนไปจากเดิม น่าจะแก้ไขตรง register_global = off 



" java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Date"
เกิดปัญหาใน java connection กับ mysql หาทางแก้ไขไม่ได้ สุดท้ายลองลง AppServ 2.5.10 กลับใช้งานได้เฉยเลย


วันจันทร์ที่ 3 มิถุนายน พ.ศ. 2556

ขั้นตอนการติดตั้งระบบงานสารบรรณสาสุข


เมื่อได้ไฟล์ archives มาแล้ว ให้ทำการเ็ซ็ตตัว server สำหรับ run ตัวโปรแกรม ไม่ว่าจะใช้ ถ้าใช้ linux ก็ติดตั้ง apache,mysql,php ถ้าใช้ windows ก็ลง AppServ หรือ XAMPP 

แต่สิ่งที่ดีที่สุดสำหรับระบบ archives นี้คือ ใช้ AppServ 2.5.10 ที่เขาให้มากับ CD ครับ เพราะว่าผมลองทดสอบกับ version อื่นๆ แล้ว พบปัญหามากมาย


ผมจะสรุปขั้นตอนคร่าวๆ ดังนี้ครับ


  1. ติดตั้งเครื่อง Server ใช้ AppServ ที่เขาให้มาก็ได้ครับ สะดวกดี 
  2. คัดลอกไฟล์ Archives ไปไว้ใน public directory หมายถึง ถ้าใน AppServ ก็คือโฟลเดอร์ www ถ้าใน linux ก็ใน home/{user,domain}/public_html หรือถ้าค่ามาตรฐานจะอยู่ที่ /var/www ซึ่งผู้ถือสิทธิ์จะเป็น root ให้สร้าง user ใหม่มาเพื่อใช้แทนจะดีกว่าครับ
  3. สร้าง database ชื่อ archives จากนั้น import archives.sql เข้าไป 
  4. ตั้งค่า config ในส่วนนี้ตั้งค่า user,pass, directory ถ้าตั้งไม่ถูกมันจะใช้งานไม่ได้นะครับ โดย config มันจะมีด้วยกัน 2 ไฟล์ คือสำหรับ windows กับ linux แก้ path ตามนั้นให้ถูกต้อง
  5. ตั้งค่า wrapper ซึ่งก็ไม่ต้องไปตั้งอะไรมัน ถ้าเราใช้ java sdk 6u22 ที่เขาแนบมากับ CD 
  6. เพิ่มโฟลเดอร์ logs ใน THEGifECMS รู้สึกมันจะหายไป หรือไม่มีมาแต่ต้นก็ไม่ทราบ
  7. ทดสอบระบบ
ซึ่งแน่นอนว่า มันจะต้องมีปัญหาตามมา เนื่องจากทรัพยากรระบบของแต่ละท่าน ไม่เหมือนกัน ก็คงต้องค่อยๆ แก้ไขกันไป ทีละส่วน จนกว่ามันจะดีเข้าที่เข้าทาง เดี๋ยวต่อไปผมจะเปิดประเด็นเดียวกับ error ในบางจุดของระบบ และวิธีแก้ไขปัญหา