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

Log4j คืออะไร

Log4j คืออะไร

 Log4j คืออะไร ถ้าชมรมที่เขียนภาษาจาวาก็อยากให้นึกถึงคำสั่งSystem.out.println() นั่นแหละค่ะใช่เลย ใช้ยังไงนั้น ก็คือว่า log4j คือ library packet classสำหรับทำการสร้างเขียนหรือแสดงข้อมูล ที่เราต้องการให้แสดงออกมาตามที่เราได้กำหนดไว้ในโปรแกรม พูดให้เข้าใจง่ายๆก็คือเขียน logs เอาไว้ตรวจสอบข้อมูลนั่นแหละค่ะ ถ้าโดยปกติเราก็จะใช้ System.out.println() ดังที่ได้กล่าวมาแล้วข้างต้น ซึ่งดูไม่ค่อยเป็นระเบียบหรือเป็นระบบซักเท่าไหร่ programmer จึงควรที่จะมีความคิดเก็บ log ให้เป็นระเบียบเรียบร้อยมากกว่านี้ มดเลยไปเจอ library log4j ตัวนี้แหละค่ะ ซึ่งเปน open source projectของค่าย Apache ถูกพัฒนาขึ้นเพื่อใช้จัดการ logging ซึ่งออกแบบให้ผู้ใช้เข้าใจและนำไปใช้ได้ง่าย  แล้วมันทำอะไรได้บ้างล่ะ  เพื่อให้เข้าใจและมองเห็นภาพการทำงานเรามาลงเนื้อหากันเลย

ข้อดีของ Log4j
-           เขียนข้อความลง text file ได้
-          เขียนข้อความลงฐานข้อมูลได้
-          แสดงผลข้อความออกมาทางหน้าจอคอนโซลได้
-          ส่งข้อมูลข้อความแบบ remote ได้
-          ส่ง sms เตือนกรณี error ได้

การจัดแบ่งลำดับชั้นความสำคัญใน Log4j
            ใน Log4j แบ่งความสำคัญในการเขียนข้อมูลดังในตาราง โดย Fatal จะมีค่ามากสุด และ Trace จะมีค่าน้อยสุด โดยเมื่อเราเขียน Level ที่สูงกว่า log4j จะเขียน Log ของ Levelต่ำกว่าติดมาด้วย

ลำดับชั้น
คำอธิบาย
FATAL
ข้อผิดพลาดอย่างรุนแรงอันอาจจะทำให้โปแกรมหยุดทำงานได้
ERROR
ข้อผิดพลาดที่เกิดขึ้นกลับโปรแกรม หรือเงื่อนไขอื่นๆที่ไม่อาจคาดการณ์ไว้
WARN
การใช้งานที่ไม่ถูกต้อง สิ่งที่ไม่ต้องการให้เกิดขึ้นกับโปรแกรม แต่โปรแกรมยังทำงานได้ถูกต้อง
INFO
เหตุการณ์ที่เกิดขึ้นในการทำงานของโปรแกรมที่เราสนใจ เช่น เปิด/ปิด ระบบ เป็นต้น
DEBUG
ข้อมูลทั่วไป
TRACE
ข้อมูลทั่วไป
http://happyeverytime.exteen.com/20090517/log4j

Apache Camel

Apache Camel นี้เป็น software ที่ทำหน้าที่สำหรับช่วยในการ routing message จาก A ไป B เช่นต้องการส่ง Message จาก JMS Queue ไปยัง Webservice เป็นต้น apache camel มี DSL ของมันเอง (Domain-specific language) ซึ่งในที่นี้ก็คือ Fluent API
ตัวอย่างของ DSL
from(“activemq:queue:jms_in_queue”).to(“activemq:queue:jms_out_queue”)
ใครเผลอเข้ามาอ่านคงตกใจ เมื่อก่อนเรานั่งเขียนอะไรยืดยาวไม่ต่ำกว่า 2 หน้ากระดาษ กว่าจะส่ง message  จาก queue A ไป queue B ได้ แต่นี่ด้วยความสามารถของ camel เราทำเสร็จได้ภายในบรรทัดเดียว

วันอาทิตย์ที่ 28 มิถุนายน พ.ศ. 2558

Websocket การสือสารระหว่าง Web server กับ Client แบบ Real Time

     Web Socket สำหรับคนที่เคยเขียนโปรแกรมแบบ Client-Server นั้น จะค่อนข้างคุ้นเคยกับคำว่า Server Socket ซึ่งเป็นการเปิด port ที่ Server เป็น TCP ซึ่ง client ก็ติดต่อโดยอ้างถึง ip ของ Server และ Port และทำการเชื่อมการติดต่อเพิ่มเริ่มส่งข้อมูล
     
    Web Socket  ถ้าจะอธิบายให้สั้นๆ และได้ใจความ Websocket เป็นเทคโนโลยีเพื่อใช้ การติดต่อสือสารระหว่าง Web server กับ Client แบบ Real Time Client ที่เป็น html5 + Javascript สามารถรับข้อมูลทางผั่ง Server มาแสดงผลได้ ผ่าน Protocol TCP/IP โดยไม่ต้อง Refresh หน้า เช่นเดียวกับ Ajax แต่ Websocket นั้นมีข้อดีกว่า Ajax คือ Websocket ไม่ต้องส่ง Request ใหม่ เพื่อส่งคำรองขอไปยัง server และ รอรับ respond จากทางฝั่ง Server ทำให้ Websocket ประหยัดทั้งเวลา และปริมาณข้อมูลที่ส่งไปมาระหว่าง web server กับ Client โดยการทำงานของ Websocket มันจะรอรับ Message ทางฝั่ง web server อยู่ตลอดเวลา หลังจากที่ได้ส่งคำสั่ง ติดต่อ Websocket Server ไปแล้วในครั้งแรก และมันจะรอรับ Message จนกระทั้งจะสั่ง Close หรือหยุดการติดต่อ
     

ตัวอย่างโค้ด

     
    var socket = new WebSocket(ws://websockets.org:8787/echo);
    socket.onopen = function(evt) { console.log("Socket opened");};
    socket.onclose = function(evt) {console.log("Socket closed");};
    socket.onmessage = function(evt){console.log(evt.data);};
    socket.onerror = function(evt) {console.log("Error: "+evt.data);};
    socket.send("Hello World!");

    จากโค้ดเป็นการสร้าง WebSocket เพื่อไว้สำหรับคุยกับ echo server และมีการกำหนด callback function เมื่อเกิดเหตุการณ์ต่างๆ เช่น opened, closed, receive a message, หรือแม้กระทั่งเมื่อเกิด error ขึ้น จากนั้นเราก็ส่งค่า Hello World! ไปยัง server และให้ browser แสดงคำว่า Hello World จากการรับค่ากลับจาก server ครับ

     ซึ่ง Server ของ WebSocket หากลองค้นหาดูแล้ว จะพบว่ามีการ implement เป็นหลายภาษาอย่างแพร่หลายแล้วครับ หาหยิบจับมาใช้ได้
    http://www.softmelt.com/article.php?id=424

[HTML5 CSS3] Modernizr JavaScript Library สำหรับทำเว็บ HTML5 CSS3

คงน่าเสียดายที่เว็บ HTML5 CSS3 ที่เราทำมามันจะถูกจำกัดให้ Browser เก่า ๆ แสดงผลได้ไม่เหมือนกับที่เราต้องการ ดังนั้นจึงมีตัวช่วยอย่าง Modernizr ออกมา
โดย 1 ในความสามารถของ Modernizr ซึ่งเป็น Javascript Library นั้นจะช่วยเช็คว่า Browser ที่ทำงานอยู่สนับสนุนการทำงานของ HTML5 CSS3 อย่างไรบ้าง เราจะใช้งานในลักษณะแบบนี้
[html]
<script src="js/modernizr.min.js"></script>
[/html]
และกำหนดที่ html ให้มี class เป็นแบบนี้
[html]
<html class="no-js">
[/html]
และเมื่อตัว Modernizr ทำงาน class ของ html ก็จะเปลี่ยนไปเป็นลักษณะแบบนี้ครับ
[html]
<html class="js canvas canvastext geolocation rgba hsla no-multiplebgs borderimage borderradius boxshadow opacity no-cssanimations csscolumns no-cssgradients no-cssreflections csstransforms no-csstransforms3d no-csstransitions video audio cufon-active fontface cufon-ready">
[/html]
จะเห็นว่า class ที่เปลี่ยนไปนั้น จะบอกถึงคุณสมบัติต่าง ๆ ที่ Browser ตัวนี้สนับสนุน เพื่อที่เราจะได้นำ class เหล่านี้ไปประยุกต์ให้ Browser เก่า ๆ สามารถแสดงผลได้ใกล้เคียงกับที่ Browser รุ่นใหม่ ๆ แสดงผลได้มากที่สุด
รวมเรายังสามารถกำหนดการใช้งานเฉพาะส่วนที่เราต้องการก็ได้ ในรูปแบบนี้ครับ
โดย Modernizr สนับสนุนการทำงานกับ IE6+, Firefox 3.5+, Opera 9.6+, Safari 2+, Chrome.
บน mobile Modernizr ใช้ได้กับ iOS mobile Safari, Android’s WebKit browser, Opera Mobile, Firefox Mobile และกำลังพัฒนาเพื่อให้สนับสนุน Blackberry 6+
ลองไปศึกษาเพิ่มเติมที่เว็บ : Modernizr เลยครับ

http://rabbitinblack.com/2011/12/html5-css3-modernizr-javascript-library/

GNU(Open source) คืออะไร?

GNU (จี-นิว, จี-นู) General Public License ถ้าแปลก็คงเป็น ลิขสิทธิให้สามารถเผยแผ่ได้ทั่วไป ::smile03:: แต่ถ้าแปลเป็นทางการก้อจะได้ประมาณนี้ครับ
GNU General Public License (GNU-GPL) คือ สัญญาอนุญาตให้ใช้ซอฟต์แวร์ หรือไลเซนส์ แบบหนึ่ง ซึ่งสงวนลิขสิทธิ์ของซอฟต์แวร์นั้น แต่อนุญาตให้บุคคลใดๆทำซ้ำ เผยแพร่ และ/หรือดัดแปลงซอฟต์แวร์นั้นได้อย่างถูกต้องตามกฎหมาย และโดยเสรี
GNU General Public License มีจุดมุ่งหมายเพื่อประกันเสรีภาพของคุณในการแบ่งปันและแก้ไข “ฟรีซอฟต์แวร์” หรือ “ซอฟต์แวร์เสรี” (Free Software) เพื่อทำให้แน่ใจว่าซอฟต์แวร์จะเป็นสิ่งที่เสรีสำหรับผู้ใช้ทุกคน
General Public License คือสัญญาอนุญาตให้สาธารณชนใช้สิทธิตามลิขสิทธิ์ที่ได้รับกับซอฟต์แวร์ส่วนใหญ่ของ Free Software Foundation และโปรแกรมใดก็ตามที่ผู้สร้างสรรค์ยึดมั่นต่อการใช้สัญญานี้
ในเมื่อฟรีแล้วทำไมต้องมีลิขสิทธิ?
หากเราเป็นผู้พัฒนา Open source ที่ต้องการนำงาน ไปให้คนอื่นใช้กันได้ฟรี แต่ก็ไม่อยากให้นำไปขายต่อ หรือพัฒนาแล้วเอาไปขายกินเอง GNU นี้แหล่ะครับเป็นตัวที่เข้ามาช่วยไม่ให้ใครนำงานของเราไปขาย เพราะว่าหากทำก็จะถือว่าผิดทันที
คนที่พัฒนา Open source จะเอาอะไรกิน?
แน่นอนครับพัฒนาโปรแกรมออกมาแต่ขายไม่ได้ ที่จริงคงจะต้องอิ่มทิพย์ หรือไม่งั้นก็คงต้องว่ารวยโครต แต่ความริิงแล้วองค์กร หรือกลุ่มเหล่านี้เค้าจะได้รายได้มาจากการ สนับสนุน/บริจาค หรือว่าการ ติดตั้ง(Implement), อบรม(Training) ระบบของเค้านั้นเอง แต่ส่วนที่ว่าได้มากได้น้ายอันนี้ก้อไม่แน่ใจนะครับ
https://objectlive.wordpress.com/2008/08/15/gnuopen-source/