วันพุธที่ 29 มีนาคม พ.ศ. 2560

คุณสมบัติของนามสกุลไฟล์ภาพ

คุณสมบัติของนามสกุลไฟล์ภาพ
        เนื่องจากโปรแกรม Photoshop จะมีรูปแบบการบันทึกข้อมูลของภาพค่อนข้างหลากหลาย (รวมถึงโปรแกรมประเภทเดียวกัน)
เพื่อใช้ในงานต่างๆกัน เพื่อนบางคนอาจยังไม่ทราบว่าเวลาที่เราบันทึก เราควรจะบันทึกใน Format ใดกันแน่ เดี๋ยววันนี้เรา
จะขออาสาพาท่านไปรู้จักกับชนิดไฟล์ที่คุณควรจะรู้ และจำใส่กบาลเอาไว้ หากคิดจะเป็นกราฟฟิคดีไซเนอร์ ก็จงรู้จักพื้นฐานก่อน

        Photoshop (.psd) นามสกุลแรกเป็นนามสกุลของโปรแกรม photoshop เอง มีประโยชน์สุดๆ เนื่องจากจะทำการบันทึก
แบบแยกเลเยอร์เก็บเอาไว้ให้คุณแก้ไขได้ในภายหลัง จะใช้โปรแกรมอื่นเปิดไฟล์นี้มาแก้ไม่ได้ เราขอแนะนำให้คุณบันทึก
ไฟล์ในรูปแบบนี้เอาไว้ทุกครั้ง เผื่อเรียกแก้ไขยามฉุกเฉิน จะได้ไม่ต้องมานั่งทำใหม่อีก

        JPEG , JPG (.jpg) ถ้าหากคุณบันทึกในรูปแบบนี้ คุณภาพของภาพอยู่ในขั้นพอยอมรับได้ มีคุณสมบัติในการบีบอัดขนาดไฟล์ได้ ทำให้สามารถนำไปใช้งานบนเว็บไซท์ หรือ งานสิ่งพิมพ์ที่ไม่ได้เน้นคุณภาพของภาพมากนัก ลองดูตัวอย่างภาพด้านล่างเพื่อเปรียบเทียบ ฝั่งซ้ายมีขนาดประมาณ 12K ในขณะที่ฝั่งขวาถูกบีบอัดซะจนใบหน้าเริ่มเขียว อยู่ที่ 4K คุณจะสังเกตเห็นความหยาบกร้านมากขึ้น แต่ผลที่ได้คือความรวดเร็วในการเปิดรับชมที่ไวขึ้น
   
        BMP (.bmp) รูปแบบที่แสนคลาสสิค เป็นมาตราฐานของ Microsoft windows แสดงผลได้ 16.7 ล้านสี บันทึกได้ทั้งโหมด RGB, Index Color, Grayscale และ Bitmap สามารถเปิดใช้งานได้หลายโปรแกรม แต่คุณภาพจะสู้รูปแบบ JPEG ไม่ได้

        GIF (.gif) เป็นไฟล์ที่ถูกบีบอัดให้เล็กลง ใช้กับรูปภาพที่ไม่ได้เน้นรายละเอียดสีที่สมจริง ไม่เหมาะกับภาพถ่าย จะเหมาะกับภาพการ์ตูน ภาพแนว vector มากกว่า เนื่องจากมีการไล่ระดับเฉดสีเพียง 256 สี ทำให้มีความละเอียดไม่เพียงพอ แต่มีคุณ-สมบัติพิเศษคือ สร้างภาพเคลื่อนไหวได้ด้วย หรือที่เรียกกันว่า Gif Animation สรุปว่าเป็นไฟล์ที่เหมาะมากบนเว็บไซต์
        ตัวอย่าง ไฟล์ที่ถูกบันทึกในรูปแบบ .gif มีความคมชัดหากเป็นไฟล์ที่มีสีตัดกันชัดเจน และไม่มีการไล่ระดับโทนสีมากนัก และยัง
ได้ขนาดไฟล์ที่โคตรเล็กอีกด้วย อย่างภาพสตรีคาบบุหรี่โลหิตมีขนาดเพียง 4K หากคุณบันทึกแบบ JPEG ด้วยความละเอียดที่
ยอมรับได้ จะมีขนาดประมาณ 7 - 8K แถมความคมกริบยังห่างกันอยู่บ้าง

        TIFF (.tif) นามสกุลที่มีความยืดหยุ่นและคุณภาพสูงสุดขีด บันทึกแบบ Cross-platform จัดเก็บภาพได้ทั้งโหมด Grayscale Index Color, RGB และ CMYK เปิดได้ทั้งบนเครื่อง Mac และ PC เหมาะสมเป็นอย่างยิ่งในวงการสื่อสิ่งพิมพ์ เมื่อรู้เช่นนี้ น้องๆหลายคนที่ยังมั่วนิ่มอยู่ ก็ลองพิจารณารูปแบบการบันทึกไฟล์ใหม่นะจ๊ะ

        EPS (.eps) นามสกุลที่ใช้เปิดในโปรแกรม Illustrator แต่สามารถบันทึกได้ในโปรแกรม Photoshop สนับสนุนการสร้าง Path หรือ Clipping Path บันทึกได้ทั้ง Vector แะ Rastor สนับสนุนโหมด Lab, CMYK, RGB, Index Color, Duotone และ Bitmap

        PICT (.pic) เป็นรูปแบบมาตราฐานในการบันทึกภาพแบบ 32 บิตของ Macintosh แสดงผลสีได้ระดับ 16.7 ล้านสี สามารถบีบอัดข้อมูลภาพได้เช่นกัน เพียงแต่สนับสนุนโหมด RGB เท่านั้นค่ะ

        PNG (.png) เป็นไฟล์ที่เหมาะสำหรับใช้ในเว็บไซท์ สามารถบีบอัดขนาดไฟล์ลงได้พอสมควร โดยที่ยังรักษาคุณภาพของภาพเอาไว้ได้ และที่สำคัญสามารถเลือกระดับสีใช้งานได้ถึง 16 ล้านสี มีการคาดกันว่าจะมาแทนที่ไฟล์ GIF ไม่ช้าก็เร็ว

        RAW (.raw) นามสกุลใหม่แต่โคตรดิบระห่ำจุดนรก เหมาะสำหรับภาพถ่ายจริงๆ ชื่อมันก็แปลตามตรงว่า "ดิบ" หมายถึงไม่มีการบีบอัดข้อมูลภาพใดๆเลยทั้งสิ้น รายละเอียดจึงยังครบถ้วน แต่ขนาดไฟล์ก็อลังการสุดๆเช่นกัน ปัจจุบันหาโปรแกรมมาเปิดไฟล์ชนิดนี้ยากอยู่ เพราะส่วนใหญ่จะแถมโปรแกรมมากับกล้องดิจิตอลที่สามารถบันทึกไฟล์ในรูปแบบ RAW ได้เท่านั้น

ความหมายของสกุล GIF, TIFF, JPEG, BMP

         .BMP เป็นไฟล์มาตรฐานที่ระบบปฏิบัติการ Windows สร้างขึ้นมาเป็นไฟล์ที่สามารถรักษาความละเอียดของภาพได้เป็นอย่างดี แต่มีข้อจำกัด คือ ไฟล์นั้นจะมีขนาดใหญ่นำมาใช้งานไม่สะดวก

         .JPG เป็นไฟล์ที่มีการบันทึกข้อมูลแบบสูญเสียข้อมูล ภาพที่ได้นำมาใช้งานทั่ว ๆ ไป ไฟล์ประเภทนี้จะตัดรายละเอียดของภาพบางส่วนออก ซึ่งเป็นรายละเอียดที่ไม่สามารถมองเห็นสีได้มากนัก เหมาะสำหรับเก็บไว้ดูหรือนำไปลงอินเทอร์เน็ต

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

         .PSD เป็นไฟล์ที่เกิดจากโปรแกรมตกแต่งรูปภาพคือ Photoshop ไฟล์ประเภทสามารถแก้ไขได้ง่าย เพราะมีการทำงานเป็นเลเยอร์ มีข้อจำกัดคือมีไฟล์ขนาดใหญ่ และสามารถเปิดได้กับโปรแกรม Photoshop อย่างเดียวเท่านั้น ไม่สามารถนำไปเปิดกับโปรแกรมจัดการรูปภาพอื่น ๆ ได้

         .TIF เป็นไฟล์ที่ใช้สำหรับงานสิ่งพิมพ์เป็นส่วนใหญ่ สามารถแสดงผลความละเอียดของภาพได้ทุกระดับ ตั้งแต่ภาพขาวดำไปจนถึงภาพสี ซึ่งจะนำไปใช้กับงานทางด้านการพิมพ์ สามารถใช้ได้กับทั้งเครื่อง MAC และ PC โปรแกรมที่ใช้ ตัวอย่างเช่น PageMaker

         .PNG เป็นไฟล์ที่มีความยืดหยุ่นสูง ใช้งานได้กับเครื่องที่มีการเปลี่ยนแพลตฟอร์มการทำงาน และสามารถทำงานอยู่บนคนละระบบปฏิบัติการ เช่น Linux และ Windows จะเห็นได้ว่าไฟล์แต่ละประเภทนั้น มีลักษณะการทำงานและการบีบอัดไฟล์ที่ต่างกันออกไป ขึ้นอยู่กับการนำมาใช้งาน และ ความต้องการของผู้ใช้งานว่าต้องการไฟล์แบบใด

รูปแบบไฟล์กราฟิก

 ไฟล์ กราฟิกแบ่งเป็นหลายรูปแบบ แต่ที่นิยมใช้กันมากในงานกราฟิกสำหรับเว็บไซต์ เช่น GIF และ JPEG สำหรับงานพิมพ์ เช่น TIFF, EPS และ PDF

 กราฟิกสำหรับงานเว็บไซต์ GIF (Graphic Interchange Format)

         รูปแบบไฟล์ GIF ได้ รับการออกแบบโดย CompuServe ซึ่งเป็นระบบเครือข่ายข่าวสารแบบออนไลน์ เพื่อให้บริการแลกเปลี่ยนกราฟิกในรูปแบบ bitmap ที่มีการจัดการทางด้านหน่วยความจำที่มีประสิทธิภาพ ข้อจำกัดของภาพแบบ GIF คือ ความสามารถทางด้านสีซึ่งเป็นแผงสีแบบอินเด็กซ์ (ภาพสีแบบ 24 บิตไม่สามารถใช้ได้) แผงสีสามารถบรรจุได้ 2 ถึง 256 สี ซึ่งถูกสร้างจากข้อมูลสี 24 บิต ไฟล์แบบ GIF ถูกบีบขนาดโดยใช้การบีบขนาด LZW แบบประยุกต์ การขยายไฟล์ข้อมูลแบบ GIF กลับคืน จะช้ากว่าการบีบขนาดแบบ RLE แต่จะเปลืองเนื้อที่หน่วยความจำน้อยกว่า

         รูปแบบไฟล์ GIF เป็นภาพซึ่งใช้สีจำกัด (ไม่เกิน 256 สี ไม่ใช้ทั้งหมดของสเปกตรัมสีที่แสดงได้บนมอนิเตอร์) เหมาะสำหรับภาพที่ต้องการไฟล์ขนาดเล็ก โหลดเร็ว ไฟล์แบบนี้จึงเหมาะกับงานที่ใช้สีแบบ solid color เช่น โลโก้ หรือ ภาพแบบ Illustration Graphic Interchange Format นามสกุลที่ใช้เก็บ GIF ระบบปฏิบัติการ Windows , Windows NT เวอร์ชันที่ได้รับการพัฒนาจนถึงปัจจุบัน 87a และ 89a ซอฟต์แวร์ที่สร้างและเปิดไฟล์ โปรแกรมการแก้ไข bitmap ทุกโปรแกรม, โปรแกรม Desktop Publishing เช่น PhotoShop, CorelDRAW, PaintShop Pro, ACDSee 32 ความสามารถทางด้านสี แผงสีแบบอินเด็กซ์ถึง 256 สี (วาดจากสี RGB แบบ 24 บิต) การบีบขนาดข้อมูล LZW การใส่รหัสแบบ run-length
 

 JPEG (Joint Photographic Experts Group)

         มาตรฐานการบีบขนาดแบบ JPEG ไม่ได้ถูกออกแบบมาเพื่อฮาร์ดแวร์หรือซอฟต์แวร์ใดๆ โดยเฉพาะ แต่ได้นำเสนอวิธีการบีบขนาดที่สามารถใช้ทั่วๆ ไปหลายวิธี ดังนั้นจึงมีการบีบขนาดหลายวิธีที่เกิดขึ้นมาโดยใช้มาตรฐานการบีบขนาดแบบ JPEG การบีบขนาดด้วยวิธีนี้ช่วยลดขนาดของภาพกราฟิกและประหยัดเวลาในการโหลดได้มาก เหลือเพียงหนึ่งในสิบของภาพเดิม และบางครั้งสามารถลดขนาดลงได้มากถึง 100 ต่อ 1

         JPEG เป็นไฟล์ที่เหมาะสำหรับใช้ในภาพประเภทภาพถ่าย (โทนสีต่อเนื่อง) เนื่องจากใช้สีทั้งสเปกตรัมสีที่มีในมอนิเตอร์ และเป็นไฟล์ประเภทที่ถูกบีบอัดให้เล็กลงเพื่อให้โหลดเร็วขึ้นเช่นเดียวกับ GIF โดยการตัดค่าสี ในช่วงที่ตามองไม่เห็นทิ้งไป แต่เมื่อบันทึกไฟล์เป็น JPEG แล้ว ข้อมูลสีที่ถูกตัดทิ้งไปจะไม่สามารถเรียกกลับมาได้อีก ถ้าต้องการใช้ค่าสีเหล่านั้นในอนาคต ควรจะบันทึกเป็นไฟล์ชนิดอื่น แล้วเปลี่ยนเป็นไฟล์ JPEG ด้วยการบันทึกเป็นไฟล์ก็อปปี้ Joint Photographic Experts Group นามสกุลที่ใช้เก็บ JPG หรือ JIF (JPG + TIFF) ระบบปฏิบัติการ Windows
 ซอฟต์แวร์ที่สร้างและเปิดไฟล์ โปรแกรมการแก้ไขภาพ Bitmap และโปรแกรมการแปลงรูปแบบ เช่น PhotoShop, CorelDRAW, PaintShop Pro, ACDSee 32 ความสามารถทางด้านสี 2, 16, 256 สี หรือ 16 ล้านสี และความลึกสีแบบ 32 บิต


 กราฟิกสำหรับงานพิมพ์ TIFF (Tagged Image File Format)

         TIFF เป็นไฟล์ที่ใช้ได้กับ bitmap เท่านั้น พัฒนาขึ้นโดยความร่วมของ Aldus Corporation และ Microsoft TIFF เก็บบันทึกข้อมูลรูปภาพได้หลากหลายใน Tagged Field จึงกลายเป็นชื่อเรียกของรูปแบบไฟล์ ซึ่งแต่ละ Tagged Field สามารถบันทึกข้อมูลเกี่ยวกับ bitmap หรือชี้ไปยัง Field อื่นได้ ซอฟต์แวร์ที่อ่านไฟล์นี้สามารถข้ามการอ่าน Field ที่ไม่เข้าใจหรือไม่จำเป็นไปได้

         TIFF เป็นรูปแบบที่มีความยืดหยุ่น สามารถเปลี่ยนแปลงแก้ไขได้ เนื่องจากมี Tagged Field ให้ใช้ต่างกันหลายร้อยชนิด ไฟล์แบบนี้จึงมีข้อดี คือ ใช้ได้กับโปรแกรมกราฟิกทุกประเภท สามารถใช้ได้ในระบบคอมพิวเตอร์หลายๆ ระบบ และกำหนดขอบเขตที่กว้างขวางของภาพ bitmap ได้ นอกจากนี้ TIFF ยังสามารถทำบางสิ่งที่ bitmap อื่นทำไม่ได้ และเป็นรูปแบบที่สนับสนุนทั้งระบบ PC และ Macintosh Tagged Image File Format
 นามสกุลที่ใช้เก็บ TIF ระบบปฏิบัติการ Windows, UNIX, Mac Windows เวอร์ชันที่ได้รับการพัฒนาจนถึงปัจจุบัน 5.0 และ 6.0 ซอฟต์แวร์ที่สร้างและเปิดไฟล์ โปรแกรมแก้ไข Bitmap และโปรแกรม Desktop Publishing เช่น PageMaker, QuarkXPress, CorelVentura, PhotoShop, PaintShop Pro ความสามารถทางด้านสี ขาวดำ 1 บิต, Grayscale (4,8, 16 บิต), แผงสี (ได้ถึง 16 บิต), สี RGB (ได้ถึง 48 บิต), สี CMYK (ได้ถึง 32 บิต) การบีบขนาดข้อมูล LZW, PackBits (Macintosh), JPEG (TIFF v 6.0), RLE หลายรูปแบบ
 

 EPS (Encapsulated PostScript)

         EPS เป็นเซตย่อยของภาษาสั่งการในการจัดหน้าแบบ PostScript ซึ่งเป็นรูปแบบที่ใช้อย่างแพร่หลายในการแลกเปลี่ยนรูปแบบภาพกราฟิก ไฟล์แบบ EPS สามารถบรรจุภาพที่ซับซ้อน และมีรายละเอียดอย่างสูงทั้งในรูปแบบ Vector และ Bitmap โดยใส่ไว้ในโปรแกรมการแก้ไข Vector และโปรแกรม Desktop Publishing กราฟิกแบบ EPS มีข้อจำกัดอย่างหนึ่งคือ จะต้องพิมพ์ออกในเครื่องพิมพ์แบบ PostScript เท่านั้น เพราะเครื่องพิมพ์ไม่สามารถแปลรหัสการพิมพ์ PostScript ได้ Encapsulated PostScript นามสกุลที่ใช้เก็บ EPS
 ระบบปฏิบัติการ Windows, Windows NT, UNIX, Mac Windows เวอร์ชันที่ได้รับการพัฒนาจนถึงปัจจุบัน EPS เป็นเซตย่อยของ Adobe PostScript ซอฟต์แวร์ที่สร้างและเปิดไฟล์ โปรแกรมแก้ไข Vector และโปรแกรม Desktop Publishing เช่น AutoCAD, CorelDRAW, PageMaker, QuarkXPress, Adobe Illustrator
 ความสามารถทางด้านสี ขยายได้ถึง 24 บิต RGB และ HSB 32 บิต, CMYK, Grayscale, แผงสีแบบอินเด็กซ์


 การบีบขนาดข้อมูล การใส่รหัสแบบไบนารี
 
 PDF (Portable Document Format)
         PDF เป็นรูปแบบไฟล์ที่ใช้ในโปรแกรม Adobe Acrobat ใช้สำหรับเอกสารบนสื่ออิเล็คทรอนิกส์ เช่น บนอินเทอร์เน็ตหรือบริการออนไลน์ต่างๆ เนื่องจากเป็นไฟล์ขนาดเล็กทำให้สามารถสร้างเอกสาร เช่น โบร์ชัวร์ หรือ แค็ทตาล็อกส่งไปทางอินเทอร์เน็ตได้ ใช้ได้กับทั้งแบบ Bitmap และ Vector และสนับสนุนทั้งระบบ PC และ Macintosh
         PDF เหมาะสำหรับเอกสารทางเทคนิคที่จะเผยแพร่บนอินเทอร์เน็ต ผู้อ่านสามารถพิมพ์ออกมาได้หรือเรียกดูได้โดยไม่เสียค่าใช้จ่ายเพราะรูปแบบ อักษรที่ใช้ประกอบอยู่ในตัวซอฟต์แวร์แล้ว และเนื่องจากใช้ตัวอักษรแบบ PostScript ซึ่งเป็น vector-based จึงสามารถย่อและขยายได้ตามต้องการ โดยคุณภาพของงานไม่เปลี่ยนแปลง ทั้งยังสามารถนำไปสร้างเป็นเอกสาร แบบ Illustration หรือ Bitmap ได้อีกด้วย และเมื่อพิมพ์ออกมาก็จะไม่เสียคุณภาพ ไม่ว่าจะใช้ค่าความละเอียดของภาพเป็นเท่าใด เช่นเดียวกับไฟล์ประเภท Vector อื่นๆ เช่น PS หรือ PRN นอกจากนี้ PDF เป็นไฟล์ที่ประกอบด้วยข้อมูล PostScript จึงสามารถนำไปใช้ในโปรแกรมตกแต่งแก้ไขภาพ หรือ โปรแกรมประเภท Illustration ได้เช่นเดียวกับ EPS Portable Document Format
 นามสกุลที่ ใช้เก็บ PDF ระบบปฏิบัติการ Windows, Mac OS, UNIX และ Dos ซอฟต์แวร์ที่สร้างและเปิดไฟล์ PhotoShop, Acrobat ความสามารถทางด้านสี RGB, Indexed-Color, CMYK, GrayScale, Bitmap และ Lap Color 

ความแตกต่างระหว่าง GIF / JPEG / PNG / TIFF

         สำหรับผู้ที่เริ่มต้นทำกราฟิกอาจยังไม่คุ้นเคยกับนามสกุลต่าง ๆ ของไฟล์ภาพ ทำไมนามสกุลถึงไม่เหมือนกัน และแต่ละนามสกุลเหมาะสำหรับการใช้งานแบบไหน มาเรียนรู้ความแตกต่างของแต่ละนามสกุลในเบื้องต้นกันเลยดีกว่า

 GIF มาจาก Graphics Interlace File
     * ภาพที่ไม่ต้องการความคมชัดมากนัก จำนวนสีและความละเอียดของภาพไม่สูงมากนัก
     * ต้องการพื้นแบบโปร่งใส
     * ต้องการแสดงผลแบบโครงร่างก่อน แล้วค่อยแสดงผลแบบละเอียด
     * ต้องการนำเสนอภาพแบบภาพเคลื่อนไหว
     * ส่วนขยายคือ .gif

 JPEG มาจาก Joint Photographer's Experts Group
     * ภาพที่ต้องการความคมชัดสูง มีสีมาก
     * เหมาะสมกับการนำเสนอทั้งระบบสื่อมัลติมีเดีย และเว็บไซต์
     * สามารถกำหนดขนาดของไฟล์ได้ตามความเหมาะสม (File Compression)
     * สามารถกำหนดคุณสมบัติการแสดงผลแบบหยาบ แล้วค่อยๆ ละเอียดเมื่อเวลาผ่านไป ที่เรียกว่าคุณสมบัติ Progressive
     * ส่วนขยายของไฟล์รูปแบบนี้คือ .jpg หรือ .jpeg

 PNG มาจาก Portable Network Graphics
     * ภาพที่ต้องการความคมชัดสูง
     * รูปแบบล่าสุดในการนำเสนอภาพผ่านเครือข่ายอินเทอร์เน็ต
     * สามารถแสดงผลได้ในระบบสีเต็มพิกัด (True Color)
     * มีขนาดไฟล์เล็ก และควบคุมคุณภาพได้ตามที่ต้องการ
     * มีการกำหนดให้พื้นภาพเป็นพื้นโปร่งใสได้ (Transparent)
     * แสดงผลแบบหยาบสู่ละเอียด (Interlaced)
     * ส่วนขยายของไฟล์รูปแบบนี้คือ .png

 TIFF มาจาก Tagged-Image File Format
     * รูปแบบที่ใช้เก็บภาพพร้อมรายละเอียดต่างๆ เช่น เลเยอร์ (Layer), Annotation, โหมดภาพทั้งระบบ
     * CMYK, RGB, Lab Color ตลอดจนข้อมูลประกอบอื่นๆ ตามต้นฉบับเดิมของภาพ
     * เหมาะสมต่อการเก็บบันทึกภาพต้นฉบับ และภาพสำหรับใช้ประกอบการสร้างสื่อสิ่งพิมพ์
     * ส่วนขยายของไฟล์รูปแบบนี้คือ .tif


 ข้อมูล :
 หนังสือ รวมคลิปอาร์ท (Universal Cliparts) Vol.2 : http://www.yupparaj.ac.th/CAI/graphic/graphic.html
 41129kridsada : http://learners.in.th/blog/41129kridsada/163859
 แดงคนดี : http://www.navy22.com/smf/index.php?topic=13767.0
 http://www.stks.or.th/
 
  คัดลอกมาจาก http://www.beartai.com/webboard/index.php?topic=53506.0

ภาพกราฟิก

กราฟิกที่ใช้ในงานคอมพิวเตอร์ มี 2 ชนิด คือ Bitmap และ Vector

กราฟิกแบบ Bitmap
        Bitmap เป็นภาพแบบ Resolution Dependent ประกอบขึ้นด้วยจุดสีต่างๆ ที่มีจำนวนคงที่ตายตัวตามการสร้างภาพที่มี Resolution หรือความละเอียดของภาพต่างกันไป หากขยายภาพ Bitmap จะเห็นว่ามีลักษณะเป็นตารางเล็กๆ ซึ่งแต่ละบิตคือ ส่วนหนึ่งของข้อมูลคอมพิวเตอร์
        เนื่องจาก Bitmap มีค่า Pixel จำนวนคงที่จึงทำให้มีข้อจำกัดในเรื่องการขยายขนาดภาพ การเปลี่ยนขนาดภาพทำโดยเพิ่มหรือลด Pixel จากที่มีอยู่เดิม เมื่อขยายภาพให้ใหญ่ขึ้น ความละเอียดของภาพจึงลดลง และถ้าเพิ่มค่าความละเอียดมากขึ้นก็จะทำให้ไฟล์มีขนาดใหญ่และเปลืองเนื้อที่ หน่วยความจำมากขึ้นตามไปด้วย ภาพที่ขยายโตขึ้นจะมองเห็นเป็นตารางสี่เหลี่ยมเรียงต่อกัน ทำให้ขาดความสวยงาม
        ภาพแบบ Bitmap จึงเหมาะสำหรับงานกราฟิกในแบบที่ต้องการให้แสงเงาในรายละเอียด เป็นไฟล์ที่เหมาะกับการทำงานกับภาพเหมือนจริงประเภทภาพถ่าย เพราะ Bitmap มี Channel พิเศษ เรียกว่า Alpha Channel ซึ่งเป็น 32 bit หรือ true color คือสีสมจริง เช่น ภาพที่นำมาใช้กับ PhotoShop จะเป็นภาพเหมือน ภาพถ่าย เพราะไฟล์ที่ได้จาก PhotoShop เป็น Bitmap ในขณะที่ไฟล์ที่สร้างจาก Illustrator จะเหมือนการ์ตูนหรือภาพเขียน เพราะเป็นไฟล์แบบ Vector นอกจากนี้ยังเหมาะสำหรับภาพที่ต้องการระบายสี สร้างสี หรือกำหนดสีที่ต้องการความละเอียดและสวยงาม
        ไฟล์ภาพแบบ Bitmap ในระบบวินโดวส์คือ ไฟล์ที่มีนามสกุล .BMP, .PCX. , .TIF, .GIF, .JPG, .MSP, .PCD เป็นต้น สำหรับโปรแกรมที่ใช้สร้างกราฟิกแบบนี้คือ โปรแกรม Paint ต่างๆ เช่น Paintbrush, PhotoShop, Photostyler เป็นต้น

กราฟิกแบบ Vector
        Vector เป็นภาพประเภท Resolution-Independent มีลักษณะของการสร้างให้แต่ละส่วนเป็นอิสระต่อกัน โดยแยกชิ้นส่วนของภาพทั้งหมดออกเป็นเส้นตรง รูปทรงหรือส่วนโค้ง โดยอ้างอิงตามความสัมพันธ์ทางคณิตศาสตร์หรือการคำนวณเป็นตัวสร้างภาพ เป็นการรวมเอา Object (เช่น วงกลม เส้นตรง ทรงกลม ลูกบาศก์และอื่นๆ เรียกว่ารูปทรงพื้นฐาน) ต่างชนิดมาผสมกัน มีทิศทางการลากเส้นไปในแนวต่างๆ เพื่อสร้างภาพที่แตกต่างกันโดยใช้คำสั่งง่ายๆ จึงเรียกภาพประเภทนี้ว่า Vector Graphic หรือ Object Oriented
        ลักษณะเด่นของ Vector คือ สามารถยืดหรือหดภาพเท่าใดก็ได้ โดยที่ภาพจะไม่แตก ความละเอียดของภาพไม่เปลี่ยนแปลง คงคุณภาพของภาพไว้ได้เหมือนเดิม และยังสามารถขยายเฉพาะความกว้างหรือความสูง เพื่อให้มองเห็นเป็นภาพผอมหรืออ้วนกว่าภาพเดิมได้ด้วย และไฟล์มีขนาดเล็กกว่าภาพ Bitmap ภาพแบบ Vector จึงเหมาะสำหรับงานแบบวาง Layout งานพิมพ์ตัวอักษร Line Art หรือ Illustration
        ไฟล์รูปภาพแบบ Vector ในระบบวินโดวส์คือ ไฟล์ที่มีนามสกุล .EPD, .WMF, .CDR, .AI, .CGM, .DRW, .PLT เป็นต้น โดยมีโปรแกรมประเภทวาดรูป (Drawing Program) เช่น CorelDraw หรือ AutoCAD เป็นโปรแกรมสร้าง ขณะที่บนแมคอินทอชใช้ Illustrator และ Freehand
        ในกรณีที่โปรแกรมที่ใช้งานอยู่ไม่สามารถอ่านไฟล์แบบ Vector ต้นฉบับได้ วิธีที่ดีที่สุดก็คือ บันทึกไฟล์เป็นนามสกุล .EPS (Encapsulated Postscript) ไฟล์ประเภทนี้สร้างขึ้นจาก Vector ซึ่งทำให้มีคุณสมบัติเป็นแบบ Vector นอกจากนี้เราสามารถบันทึกไฟล์ Bitmap ให้เป็นแบบ EPS ได้ เนื่องจากโปรแกรมกราฟิกทุกประเภทล้วนสนับสนุน ไฟล์แบบ EPS ทั้งสิ้น
        อย่างไรก็ตามอุปกรณ์แสดงผล ไม่ว่าจะเป็นเครื่องพิมพ์แบบ Dot Matrix หรือ Laser รวมทั้งจอภาพ จะแสดงผลแบบ Raster Devices หรือแสดงผลในรูปของ Bitmap โดยอาศัยการรวมกันของ Pixel ออกมาเป็นรูป แม้ว่าภาพกราฟิกที่สร้างจะเป็นแบบ Vector เมื่อจะพิมพ์หรือแสดงภาพบนหน้าจอจะมีการเปลี่ยนเป็นการแสดงผลแบบ Bitmap หรือเป็น Pixel

ความแตกต่างระหว่างกราฟิกแบบ Bitmap และ Vector
Bitmap
1. ลักษณะภาพประกอบขึ้นด้วยจุดต่างๆ มากมาย
2. ภาพมีจำนวนพิกเซลคงที่จึงต้องการค่าความละเอียดมากขึ้นเมื่อขยายภาพ โดยจะคำนวณค่าสีทีละ pixels ทำให้ภาพแตกเมื่อขยายภาพให้ใหญ่
3. เหมาะสำหรับงานกราฟิก ในแบบต้องการให้แสงเงาในรายละเอียด
4. แสดงภาพบนจอทันที เมื่อรับคำสั่งย้ายข้อมูลจากหน่วยความจำที่เก็บภาพไปยังหน่วยความจำของจอภาพ

Vector
1. ใช้สมการทางคณิตศาสตร์เป็นตัวสร้างภาพ โดยรวมเอา Object (เช่น วงกลม เส้นตรง) ต่างชนิดมาผสมกัน
2. สามารถย่อและขยายขนาดได้มากกว่า โดยสัดส่วนและลักษณะของภาพยังเหมือนเดิม ความละเอียดของภาพไม่เปลี่ยนแปลง
3. เหมาะสำหรับงานแบบวาง Layout งานพิมพ์ตัวอักษร Line Art หรือ Illustration
4. คอมพิวเตอร์จะใช้เวลาในการแสดงภาพมากกว่า เนื่องจากต้องทำตามคำสั่งที่มีจำนวนมากกว่า

ลักษณะและความหมายของ Pixel
        ในโลกของกราฟิกที่ใช้ในงานคอมพิวเตอร์ Pixel ถือเป็นหน่วยย่อยที่เล็กที่สุดของรูปภาพ เป็นจุดเล็กๆ ที่รวมกันทำให้เกิดภาพขึ้น ภาพหนึ่งจะประกอบด้วย Pixel หรือจุดมากมาย ซึ่งแต่ละภาพที่สร้างขึ้นจะมีความหนาแน่นของจุดหนือ Pixel เหล่านี้แตกต่างกันไป ความหนาแน่นของจุดนี้เป็นตัวบอกถึงความละเอียดของภาพ โดยมีหน่วยเป็น ppi (Pixel Per Inch) คือ จำนวนจุดต่อนิ้ว Pixel มีความสำคัญต่อการสร้างภาพของคอมพิวเตอร์มาก เพราะทุกส่วนของกราฟิก เช่น จุด เส้น แบบลายและสีของภาพนั้นเริ่มจาก Pixel ทั้งสิ้น เมื่อเราขยายภาพจะเห็นเป็นภาพจุด
        โดยปกติแล้ว ภาพที่มีความละเอียดสูงหรือคุณภาพดีควรจะมีค่าความละเอียด 300 X 300 ppi ขึ้นไป ยิ่งค่า ppi สูงขึ้นเท่าไร ภาพก็จะมีความละเอียดคมชัดขึ้นมากขึ้นเท่านั้น ขณะเดียวกันจุดหรือ Pixel แต่ละจุดก็จะแสดงคุณสมบัติทางสีให้แก่ภาพด้วย โดยแต่ละจุดจะเป็นตัวสร้างสีประกอบกันเป็นภาพรวม ซึ่งอาจมีขนาดความเข้มและสีแตกต่างกันได้ ทำให้เกิดเป็นภาพที่มีสีสันต่างๆ
        การแสดงผลของอุปกรณ์แสดงผล (Output Devices) ไม่ว่าจะเป็นเครื่องพิมพ์แบบ Dot-matrix หรือแบบ Laser รวมทั้งจอภาพ จะเป็นการแสดงผลแบบ Raster Devices นั่นคือ อาศัยการรวมกันของ Pixel ออกมาเป็นรูป

node.js คืออะไร คือ programming language ที่เขียนด้วย JavaScript

node.js คืออะไร คือ programming language ที่เขียนด้วย JavaScript

node.js คือ Programming language ที่ใช้โครงสร้างภาษา JavaScript ในการเขียน และมีการรันด้วย Chrome’s V8 JavaScript engine (ตัวรัน javascript ที่ Web Browser google chrome ใช้งานด้วยนั้นแหล่ะ) โดยตอนเริ่มต้นก็คือ V8 เนี่ย google เค้าพัฒนาเอาไว้ แล้วเค้าก็ใจดีบอกว่า อะ ให้เอาไปใช้กันได้เสรี เอาไปแปะกับงานส่วนไหนก็ได้ มันจะรัน JavaScript ได้ และเร็วมาก ก็เลยมีคนหัวใส งั้นเอามาทำเป็น server interpreter เลยสิ ไหนๆมันก็ทำงานได้เร็วมากแล้วนี่นา จะได้มีภาษาที่เขียนและใช้งานบน server แบบเร็วๆ จึงเป็นที่มาของ node.js นั่นเอง

เขียนโค้ดด้วยภาษา JavaScript

ด้วยความที่ว่า ภาษา JavaScript เป็นที่นิยมสำหรับสายงาน Web Development อยู่แล้ว รวมทั้ง V8 engine ก็ทำหน้าที่แปลงภาษา JavaScript ด้วย เลยทำให้ node.js ได้รับความนิยมมากๆ เพราะว่าไม่ต้องเรียนรู้ภาษาอะไรใหม่เลย หากเขียน JavaScript เป็นอยู่แล้ว สบายเลย

เปรียบแบบให้เข้าใจง่ายๆ

สำหรับคนที่เคยเขียน Web มานะครับ ให้เปรียบว่าภาษา PHP หรือ .Net ก็คือ JavaScript ในกรณี Node.js แล้วตัว Node.js เอง มันคือ Apache หรือ IIS ที่เอาไว้รัน Application เราอีกทีดังนั้นเราพบว่า เราจะเขียน Node.js ด้วยภาษา JavaScript ตรงๆเลยครับ (ที่แตกต่างจาก JavaScript ปกติ ก็มีบ้าง แต่ไม่เยอะ) ถ้าเปรียบให้เข้าใจลึกอีกนิด หากเราติดตั้ง PHP ให้ Apache หรือ ติดตั้งให้ IIS นั้นก็เปรียบได้กับ Chrome V8 Engine ที่เอาไว้แปลงภาษา JavaScript ให้ออกมาทำงานได้อย่างที่เราต้องการนั่นเองครับ

ส่วนเสริมก็สำคัญ

node.js มีส่วนเสริม (module/library/plugin/package) มากมายในคำสั่ง npm (node.js Package Manager แต่หลังๆเรียกตัวเองแค่ JavaScript Package Manager) ประโยชน์ของมันก็คือ เราสามารถติดตั้ง package ต่างๆที่พิเศษๆได้ในคำสั่งเดียว เช่น ถ้าเราต้องการเขียน node.js ให้ทำงานกับ Web Socket ก็ไม่ต้องเขียนโค้ดยืดยาวกว่าจะทำงานได้ เราก็สั่งติดตั้ง npm install socket.io เลย ง่ายดี แล้วเราก็แค่เรียนรู้เพิ่มอีกนิดว่า socket.io มันใช้งานยังไงเขียนคำสั่งแบบไหน หรืออีกตัวอย่างก็คือ การเชื่อมต่อ MySQL ถ้าเราไม่มีตัวช่วยล่ะก็บอกเลย ยาวแน่นอน กว่าจะเขียนโค้ดให้ไปอ่านค่าจาก MySQL ได้

ทำงานแบบ Asynchronous

จุดนี้เป็นจุดตายของหลายคน ที่เคยเขียน C, PHP, .Net, Python หรือ ภาษาส่วนใหญ่มา เพราะว่าโดยปกติการทำงานของโค้ดที่เราเขียน จะทำงานจากบนลงล่างเสมอ และถ้าทำงานไม่เสร็จ ก็จะไม่ทำงานบรรทัดต่อไปเรื่อยๆ จนจบ แต่ node.js มีการทำงานเป็น Asynchronous คือ การทำงานบางอย่างไม่ต้องรอให้บรรทัดนั้นทำงานเสร็จ เช่น ส่งคำสั่งไป query ข้อมูลจาก database ไม่ต้องรอผล ก็ข้ามไปทำงานบรรทัดต่อไปเลย แล้วเมื่อการทำงานนั้นทำงานเสร็จก็ค่อยรอผลลัพท์กลับมา เป็นต้น ดังนั้น ปัญหาก็เลยเกิดทันที ถ้าการทำงานต่อไป เป็นสิ่งที่ต้องเอาผลลัพท์มาใช้ต่อ มันจะทำงานผิดพลาด เพราะว่า ผลลัพท์ยังไม่กลับมา มันก็จะ undefined/null กันไป

เร็วแต่เป็น single thread นะ

node.js ทำงานเป็น single thread โดยกำเนิด คือแม้ว่ามันจะเร็วก็จริง แต่ว่าการเขียน node.js ปกติ ที่ไม่ได้มีท่ายากเข้ามาช่วย หรือ ใช้เทคนิคอะไรช่วย มันจะทำงานเป็น single thread เท่านั้น ดังนั้นมันไม่ได้รีดประสิทธิภาพ server ได้เต็มที่สักเท่าไร แต่เราก็เขียนท่ายาก หรือใช้เครื่องมือบางอย่างช่วยเพื่อให้มันทำงาน multithread ได้นะ โดยก่อนที่จะเขียน multithread ได้ ก็อยากให้เข้าใจเรื่องตัวแปร global / local ก่อน ไม่งั้น เละแน่นอน แต่ว่าปกติ node.js แม้ว่าทำงาน single thread ก็ถือว่าทำงานได้เร็วมากระดับหนึ่งเลย (เค้าเคลมว่ามากกว่า python อีก)
 ที่มา:https://beyourcyber.com/2016/node-js-is-programming-language-by-javascript/

Node.js คืออะไร ?


 Node.js คืออะไร ?


มาถึงตอนนี้แล้ว หลาย ๆ คนน่าเคยได้ยินเรื่องของ Node.js กันมาบ้างแล้ว วันนี้เราจะมาดูกันว่า มันคืออะไร แล้วมันเอาไปใช้งานกับอะไรบ้าง

Node.js คืออะไร ?

นิยามของมันจริง ๆ ผมก็ไม่รู้เหมือนกันแฮะ เอาเป็นว่า มันคือการเอาภาษาที่เป็น Client Side Script ยอดนิยมอย่าง Javascript เอามาเขียนเพื่อรันเป็นภาษาฝั่ง Server แต่ในความเป็นจริงแล้ว เมื่อเราโหลดตัว Node.js มาลง มันจะ Install ตัว Environment สำหรับการทำงานมาให้หมดเลย และสามารถติดตั้งอะไรได้เพิ่มเติมได้เยอะมาก ๆ เลยจนเราเรียกมันว่า มันเป็นอีกหนึ่ง Platform ไปซะแล้ว และตัว Node.js ก็ขึ้นชื่อมากในเรื่องของความเร็วในการประมวลผล เพราะว่า Node.js ใช้ V8 ซึ่งเป็น Javascript Compiler จาก Google ที่มันเร็วมาก ๆ
โดยสรุปคือ การเขียนโปรแกรมด้วย Javascript ที่ฝั่ง Server แทนที่มันควรจะเป็นฝั่ง Client โดยมันทำได้ทุกอย่างจริง ๆ ไม่ว่าจะเป็นการประมวลผลต่าง ๆ มากมายกายกองเยอะมากจริง ๆ

จริง ๆ แล้วที่ดูเร็ว ๆ มันก็มีเบื้องหลังเหมือนกันนะ

ถ้าใครหลาย ๆ คนที่เคยใช้ Node.js แล้วบอกว่ามันเร็วมากเลย เหมือนกับมันรันเหมือนกับมันทำหลาย ๆ คำสั่งไปพร้อม ๆ กันเลย แต่จริง ๆ แล้ว ไม่เลย มันก็เป็น Single Thread ตามปกติเลย มันหลอกตาเรา ด้วยการประมวลผลแบบเรียงคิวกัยซึ่งแน่นอนว่า มันเร็วมาก ๆ ทำให้มันหลอกตาเราว่า มันเร็วมากนั่นเอง (เอาจริง ๆ มันก็เร็วจริง ๆ นะไม่ได้ล้อเล่น)

แล้วเราเอามันมาทำอะไร ?

เยอะมาก ๆ เลย แต่ส่วนใหญ่ เราจะเอามันไปใช้กับงานที่เป็นเบื้องหลังซะเป็นส่วนใหญ่เช่น ทำหน้าที่เป็น HTTP Server เพื่อเอาหน้าเว็บส่งไปให้ User หรือจะเป็นการทำเว็บแบบ Live เช่นพวก Chat อะไรแบบนี้ก็ได้เหมือนกัน

ข้อดีของ Node.js

  • V8 Engine = อภิมหาโคตรจะเร็ว !!!! อย่างที่บอกไปว่า Node.js เลือกใช้ Compiler อย่าง V8 ทำให้ Performance ของมันเร็วแรงทะลุนรก !!
  • มีคนพร้อมช่วยเหลือเสมอ เพราะว่ามันเป็นที่นิยมมาก ทำให้มีคนสามารถตอบปัญหาเราได้เยอะมาก
  • ทำงาน Cross Platform ด้วย อันนี้ผมชอบมากเลย เพราะว่าเขียนทีเดียว รันได้ทุกที่แบบ จริง ๆ จัง ๆ มากต่างจาก Java ที่ถึงจะรันได้ทุกที่จริง ๆ แต่มันก็แอบมีปัญหาบ้างแต่ Node.js นี่ไม่มีเลยนะ เพราะมันก็เป็นเว็บ
  • มีอะไรให้เล่นเยอะมาก ก็จากข้อ 2 อีกนั่นแหละ เพราะมีคนใช้เยอะ ก็จะมีคนเอา Module มาแจกกันมหาศาล ทำให้เราสามารถเล่นอะไรกับมันได้เยอะมาก ๆ เลย อันนี้ก็เป็นอีกเหตุผลที่มาเลือกใช้ Node.js เหมือนกัน
  • ลงทีเดียวเป็นได้ทุกอย่างจริง ๆ อย่างที่บอกว่าจริง ๆ แล้วถ้าเราเอา Node.js มา Install มันก็จะเตรียม Environment มาให้ ซึ่งนั่นก็รวมไปถึง Web Server แถมยังเอามาทำ Load Balance ได้อีก ลงทีเดียว แต่ได้หลายอย่างมากคุ้ม
  • เรียนรู้ง่ายมาก เพราะมันเป็นภาษาที่เราค่อนข้างที่จะคุ้นเคยกันอย่างดีอย่าง Javascript

Node.js เปลี่ยนวิธีในการออกแบบโปรแกรมของเราไปเลย !!

อันด้วยเพราะว่า Node.js นั้นทำงานเป็นแบบ Event-Driven จากเมื่อก่อนตอนที่เราเขียนพวก Java, PHP, หรือ C เวลาโค๊ตมันทำงาน มันก็จะทำงานไปทีล่ะบรรทัด แล้วเอาผลของมันไปทำงานในบรรทัดต่อไป แต่กลับตัว Node.js นั่นไม่ใช่เลย เพราะว่ามันถูกให้ทำงานตาม Event ที่เกิดขึ้น ดังนั้นเราก็ต้องพยายามมองว่าโปรแกรมของเรามันอยู่ตรง State ไหน แล้วดังจับผลลัพธ์เพื่อให้ได้ผลลัพธ์ที่ดีเพื่อนำไปทำงานต่อไป

Node.js ก็เหมือน State Diagram

 

การออกแบบโปรแกรมใน Node.js ก็เหมือนเราออกแบบ Digital Circuit เลย เราจะต้องคำนึงว่า โปรแกรมของเราตอนนี้จะอยู่ใน State ไหน ตราบใดที่ไม่มีอะไรไปกระตุ้นมันก็จะไม่มีอะไรเกิดขึ้น จนกระทั่งเราป้อนข้อมูลเข้าไปโปรแกรมก็จะทำงาน เป็น State ไปเรื่อย ในที่นี้คือ Event เช่น เรามี 4 Event อยู่ในโปรแกรมเรา แล้วเราไปกระตุ้น Event ที่ 2 ทำให้มันทำงานและส่งผลลัพธ์ไปที่ Event ที่ 2 ก็ได้ อย่างที่บอกไปว่า โค๊ตบรรทัดแรก ไม่ใช่โค๊ตที่จะรันก่อนเสมอ เวลาเราออกแบบให้เรานึกถึง State Diagram ให้ดี จะทำให้การออกแบบโปรแกรมโดยใช้ Node.js เป็นไปได้ง่ายขึ้นเยอะเลย

สรุป

โดยสรุปแล้ว การมาเริ่มหัดใช้ Node.js ในตอนนี้ก็เป็นเรื่องดีมาก เพราะว่า หลายเว็บหรือหลาย ๆ งานส่วนใหญ่ตอนนี้เริ่ม ไม่สิ ได้เอาตัว Node.js มาใช้กันหมด แล้วเพราะว่ามัน เร็ว และง่ายมาก ตัวมันถือว่าเป็น Platform ตัวนึงเลยก็ว่าได้ เพราะว่ามี Package อะไรให้เราเล่นเยอะไปหมดเลย และมันก็ฟรีด้วย ทำให้เราไม่จำเป็นต้องมานั่งโค๊ตอะไรเยอะแยะอีกแล้ว โดย Package เราก็สามารถติดตั้งได้ง่าย ๆ ผ่านทาง NPM ที่ในโอกาสหน้า เราจะมาพูดถึงกัน เพราะว่าวันนี้เขียนเยอะแล้ว กลัวยาวไปไม่อ่าน สำหรับวันนี้ก็สวัสดีครับ !
พรุ่งนี้จะแข่ง IEEEXtreme แล้วตื่นเต้นจุง เดี๋ยวจะกลับมาเขียนเล่าให้อ่านว่ามันเป็นยังไง !
มาถึงตอนนี้แล้ว หลาย ๆ คนน่าเคยได้ยินเรื่องของ Node.js กันมาบ้างแล้ว วันนี้เราจะมาดูกันว่า มันคืออะไร แล้วมันเอาไปใช้งานกับอะไรบ้าง

Node.js คืออะไร ?

นิยามของมันจริง ๆ ผมก็ไม่รู้เหมือนกันแฮะ เอาเป็นว่า มันคือการเอาภาษาที่เป็น Client Side Script ยอดนิยมอย่าง Javascript เอามาเขียนเพื่อรันเป็นภาษาฝั่ง Server แต่ในความเป็นจริงแล้ว เมื่อเราโหลดตัว Node.js มาลง มันจะ Install ตัว Environment สำหรับการทำงานมาให้หมดเลย และสามารถติดตั้งอะไรได้เพิ่มเติมได้เยอะมาก ๆ เลยจนเราเรียกมันว่า มันเป็นอีกหนึ่ง Platform ไปซะแล้ว และตัว Node.js ก็ขึ้นชื่อมากในเรื่องของความเร็วในการประมวลผล เพราะว่า Node.js ใช้ V8 ซึ่งเป็น Javascript Compiler จาก Google ที่มันเร็วมาก ๆ
โดยสรุปคือ การเขียนโปรแกรมด้วย Javascript ที่ฝั่ง Server แทนที่มันควรจะเป็นฝั่ง Client โดยมันทำได้ทุกอย่างจริง ๆ ไม่ว่าจะเป็นการประมวลผลต่าง ๆ มากมายกายกองเยอะมากจริง ๆ

จริง ๆ แล้วที่ดูเร็ว ๆ มันก็มีเบื้องหลังเหมือนกันนะ

ถ้าใครหลาย ๆ คนที่เคยใช้ Node.js แล้วบอกว่ามันเร็วมากเลย เหมือนกับมันรันเหมือนกับมันทำหลาย ๆ คำสั่งไปพร้อม ๆ กันเลย แต่จริง ๆ แล้ว ไม่เลย มันก็เป็น Single Thread ตามปกติเลย มันหลอกตาเรา ด้วยการประมวลผลแบบเรียงคิวกัยซึ่งแน่นอนว่า มันเร็วมาก ๆ ทำให้มันหลอกตาเราว่า มันเร็วมากนั่นเอง (เอาจริง ๆ มันก็เร็วจริง ๆ นะไม่ได้ล้อเล่น)

แล้วเราเอามันมาทำอะไร ?

เยอะมาก ๆ เลย แต่ส่วนใหญ่ เราจะเอามันไปใช้กับงานที่เป็นเบื้องหลังซะเป็นส่วนใหญ่เช่น ทำหน้าที่เป็น HTTP Server เพื่อเอาหน้าเว็บส่งไปให้ User หรือจะเป็นการทำเว็บแบบ Live เช่นพวก Chat อะไรแบบนี้ก็ได้เหมือนกัน

ข้อดีของ Node.js

  • V8 Engine = อภิมหาโคตรจะเร็ว !!!! อย่างที่บอกไปว่า Node.js เลือกใช้ Compiler อย่าง V8 ทำให้ Performance ของมันเร็วแรงทะลุนรก !!
  • มีคนพร้อมช่วยเหลือเสมอ เพราะว่ามันเป็นที่นิยมมาก ทำให้มีคนสามารถตอบปัญหาเราได้เยอะมาก
  • ทำงาน Cross Platform ด้วย อันนี้ผมชอบมากเลย เพราะว่าเขียนทีเดียว รันได้ทุกที่แบบ จริง ๆ จัง ๆ มากต่างจาก Java ที่ถึงจะรันได้ทุกที่จริง ๆ แต่มันก็แอบมีปัญหาบ้างแต่ Node.js นี่ไม่มีเลยนะ เพราะมันก็เป็นเว็บ
  • มีอะไรให้เล่นเยอะมาก ก็จากข้อ 2 อีกนั่นแหละ เพราะมีคนใช้เยอะ ก็จะมีคนเอา Module มาแจกกันมหาศาล ทำให้เราสามารถเล่นอะไรกับมันได้เยอะมาก ๆ เลย อันนี้ก็เป็นอีกเหตุผลที่มาเลือกใช้ Node.js เหมือนกัน
  • ลงทีเดียวเป็นได้ทุกอย่างจริง ๆ อย่างที่บอกว่าจริง ๆ แล้วถ้าเราเอา Node.js มา Install มันก็จะเตรียม Environment มาให้ ซึ่งนั่นก็รวมไปถึง Web Server แถมยังเอามาทำ Load Balance ได้อีก ลงทีเดียว แต่ได้หลายอย่างมากคุ้ม
  • เรียนรู้ง่ายมาก เพราะมันเป็นภาษาที่เราค่อนข้างที่จะคุ้นเคยกันอย่างดีอย่าง Javascript

Node.js เปลี่ยนวิธีในการออกแบบโปรแกรมของเราไปเลย !!

อันด้วยเพราะว่า Node.js นั้นทำงานเป็นแบบ Event-Driven จากเมื่อก่อนตอนที่เราเขียนพวก Java, PHP, หรือ C เวลาโค๊ตมันทำงาน มันก็จะทำงานไปทีล่ะบรรทัด แล้วเอาผลของมันไปทำงานในบรรทัดต่อไป แต่กลับตัว Node.js นั่นไม่ใช่เลย เพราะว่ามันถูกให้ทำงานตาม Event ที่เกิดขึ้น ดังนั้นเราก็ต้องพยายามมองว่าโปรแกรมของเรามันอยู่ตรง State ไหน แล้วดังจับผลลัพธ์เพื่อให้ได้ผลลัพธ์ที่ดีเพื่อนำไปทำงานต่อไป

Node.js ก็เหมือน State Diagram

การออกแบบโปรแกรมใน Node.js ก็เหมือนเราออกแบบ Digital Circuit เลย เราจะต้องคำนึงว่า โปรแกรมของเราตอนนี้จะอยู่ใน State ไหน ตราบใดที่ไม่มีอะไรไปกระตุ้นมันก็จะไม่มีอะไรเกิดขึ้น จนกระทั่งเราป้อนข้อมูลเข้าไปโปรแกรมก็จะทำงาน เป็น State ไปเรื่อย ในที่นี้คือ Event เช่น เรามี 4 Event อยู่ในโปรแกรมเรา แล้วเราไปกระตุ้น Event ที่ 2 ทำให้มันทำงานและส่งผลลัพธ์ไปที่ Event ที่ 2 ก็ได้ อย่างที่บอกไปว่า โค๊ตบรรทัดแรก ไม่ใช่โค๊ตที่จะรันก่อนเสมอ เวลาเราออกแบบให้เรานึกถึง State Diagram ให้ดี จะทำให้การออกแบบโปรแกรมโดยใช้ Node.js เป็นไปได้ง่ายขึ้นเยอะเลย

สรุป

โดยสรุปแล้ว การมาเริ่มหัดใช้ Node.js ในตอนนี้ก็เป็นเรื่องดีมาก เพราะว่า หลายเว็บหรือหลาย ๆ งานส่วนใหญ่ตอนนี้เริ่ม ไม่สิ ได้เอาตัว Node.js มาใช้กันหมด แล้วเพราะว่ามัน เร็ว และง่ายมาก ตัวมันถือว่าเป็น Platform ตัวนึงเลยก็ว่าได้ เพราะว่ามี Package อะไรให้เราเล่นเยอะไปหมดเลย และมันก็ฟรีด้วย ทำให้เราไม่จำเป็นต้องมานั่งโค๊ตอะไรเยอะแยะอีกแล้ว โดย Package เราก็สามารถติดตั้งได้ง่าย ๆ ผ่านทาง NPM ที่ในโอกาสหน้า เราจะมาพูดถึงกัน เพราะว่าวันนี้เขียนเยอะแล้ว กลัวยาวไปไม่อ่าน สำหรับวันนี้ก็สวัสดีครับ !

AngularJS คืออะไร ?

AngularJS คืออะไร ?



Angular คือ client-side MVC/MVVM Framework ด้วย JavaScript เหมาะสำหรับเว็บแนว Single Page Applications (SPA) พัฒนาโดย Google

AngularJS คือ JavaScript Framework  รูปแบบหนึ่งที่พัฒนามาจาก Google หน้าที่ของมันคือเป็น engine ที่ใช้ควบคุมในส่วน front end ของเวบได้ดี ซึ่งดูแล้วมันอาจจะทำให้  Web Developer หลายๆคนเข้าถึงและจัดการส่วน front end ได้ง่ายขึ้นทั้งในเรื่อง ส่วนจัดการ template และ การ binding data object data แถมยังมีส่วนที่สามารถเขียน plugin เพิ่มเติมได้อีกด้วย  ส่วน plugin ถือเป็นจุดเด่นสุดของ jQuery ที่ประสบความสำเร็จมากในปัจจุบันหาก AngularJS มีวิธีการเขียนที่เป็น modularity ที่ดีและเข้าถึงง่าย คิดว่าในอนาคตของ framework ตัวนี้อาจจะเป็นที่นิยมในกลุ่ม  Web Developer ได้อย่างรวดเร็ว
จุดเด่นที่สำคัญของ AngularJS
1. พัฒนาโดย Google
เรามักจะเห็น Script และ Library  ส่วนใหญ่แล้วพัฒนามาจากโครงการที่เป็นชุมชุน  Open Source เป็นส่วนมาก ซึ่งแตกต่างกับ AngularJS ที่มีเหล่าวิศวะกรของทาง Google ดูแลและพัมนา Feature ต่างๆอยู่เสมอพร้อมทั้งมีเอกสารพร้อมข้อมูลถามตอบ ปัญหาต่าง ให้เราสามารถค้นคว้าและแก้ปัญหาได้อย่างชัดเจนดีเยี่ยม  ซึ่งไม่ใช่ครั้งแรกที่ Google พัฒนาโครงการในลักษณะเช่นนี้ ก่อนหน้านี้ยังมีโครงการ  Web ToolKit   ซึ่งเป็นโครการแจกฟรี Web Component พร้อมเครื่องมือในการพัฒนา ตัว Web ToolKit นี้เองเป็นแกนหลักที่ใช้พัฒนา Google Wave ในสมัยนั้น แต่ไม่ค่อยได้รับความนิยมมากนักเพราะเบื้องหลังยังมีความยุ่งยากในการเขียน โปรแกรม เพราะเป็นการเขียนควบคุมโดยใช้ Java ซึ่งเป็น native code แล้ว compile เป็น script component ต่างๆให้เราเลือกใช้งาน การมาของ HTML5 CSS3 และ JavaScript .. ทำให้ Google ตระหนักว่าไม่จำเป็นต้องเขียนด้วยโค๊ด Java เพียงอย่าเดียว
2. เป็น framework ที่มี Model การเขียนที่ครอบคลุมและกว้างขว้าง
ดูเหมือนว่า AngularJS จะคล้ายกับ Backbone และ JavaScriptMVC  ซึ่งเป็นสูตรสำเร็จของ Library ที่เป็นเครื่องมือในการพัฒนา web application ในส่วน front end ทำให้การพัฒนาสะดวกและรวดเร็วขึ้น แต่ที่ AngularJS แตกต่างออกมาคือ
–  ง่ายต่อการเชื่อมต่อ  Restful Service ต่างๆ  เพราะ Angular มีส่วนจัดการ JavaScript Object ,การเชื่อมต่อ Data Model  ได้สะดวกและง่ายๆเพียงไม่กี่บรรทัด one line of JavaScript
–  MVVM (Model View View-Model) pattern เป็น model ที่ช่วยเหลือในส่วนของการเชื่อมโยงต่อส่วนต่างๆ โดยการสร้าง controller พร้อม render data model เข้ากับส่วนแสดงผลหรือ view เข้าด้วยกัน
–  ส่วน Data Binding และ Dependency Injection  โดยปกติแล้ว  MVVM pattern จะทำการเชื่อมส่วน Data และส่วน UI โดยอัตโนมัติอยู่แล้ว AngularJS จะตัวช่วยโดยใช้ JavaScript Primitive ลักษณะคล้าย Array ในการจัดการส่วนการแสดงข้อมูลต่าง ไม่ว่าจะซับซ้อนขนาดไหน เพราะมันสามารถกำหนดตัวแปรได้เองอิสระไม่จำเป็นต้องจำเพาะอยู่ที่ main() ที่เดียว
–   Extends HTML   AngularJS มีตัวช่วยในการจัดการ HTML ได้เสมือน XML โดยการเขียน module เสริมเพิ่มเติมเข้าไปจัดการ DOM Object เช่น tag <div>  จัดการโดย HTML Compiler โดยใช้ directives ของ Angular
–   Makes HTML your Template  ตัว AngularJS มีส่วนจัดการ Template โดยใช้ bracket syntax ( {{}} ) คล้ายๆ Mustache หรือ Hogan.js
–   Enterprise-level Testing  AngularJS ไม่จำเป็นต้องลงส่วนเสริมหรือ plugin เพิ่มเติมในการทำ Testing เพราะมันมีตัว Scenario Runner พร้อมใช้งานทำ Unit Testing อยู่แล้ว

Directive คือ อะไร ?

Directive เป็นการระบุว่า HTML tag นี้จะถูกใช้งานโดย AngularJS ซึ่ง AngularJS ได้แนวคิดมาจาก Web Component ซึ่งเป็นมาตราฐานที่เพิ่มเข้ามาใหม่ใน HTML 5

Module คือ อะไร ?

ส่วนประกอบต่างๆ ของ Application แบ่งออกเป็น Module เพื่อให้ง่ายต่อการจัดการซอฟต์แวร์ ซึ่งจะมี Controller, Service ที่จะนำมาใช้ filter ข้อมูลต่างๆ รวมถึงส่วนของการตั้งค่า Config ต่างๆ โดย Module หนึ่ง สามารถเรียกใช้ Module อื่นๆ ได้

Expression คือ อะไร ?

Expression เป็นส่วนที่เราต้องการเอาข้อมูลเข้ามาใส่ในหน้า html โดยการใช้ Expression โดยใช้ {{ }} ครอบข้อมูลที่ทำการแสดง



Feature หลักของ Angular

  • Data-binding : การ sync ข้อมูลแบบ auto ระหว่าง controller และ view
  • Scope : ส่วนที่ทำหน้าที่เชื่อมโยงระหว่าง controller กับ view
  • Controller : เป็นฟังก์ชั่นที่กำหนดค่าเริ่มต้น รวมถึงควบคุมการทำงานต่างๆของ scope
  • Services : Angular มี built-in services ต่างๆ ที่จะช่วยสามารถทำงานต่างๆ ได้สะดวกขึ้น เช่น $http สำหรับทำ HTTP Request, $q สำหรับจัดการ Promise
  • Directives : เป็น custom HTML tag ที่เราสามารถกำหนด และควบคุมการทำงานของ tag ได้เอง
  • Templates : ส่วนที่จะ render ข้อมูลที่ได้รับจาก controller
  • Routing : การเปลี่ยนแปลง View ที่แสดงผล โดยไม่เกิดการ refresh ใหม่ทั้ง
  • DI (Dependency Injection) : ช่วยให้เราสามารถเข้าถึงส่วนย่อยต่างๆ ของ Application ทั้งที่เป็น built-in และ custom ได้อย่างง่ายดาย

เริ่มต้นเขียน Angular

เตรียม Library สำหรับเขียน Angular ให้พร้อม

ในการเขียน Angular ที่เราต้องการก็เพียงแค่เพิ่ม library angular เข้าไปแบบนี้ครับ (version ที่ใช้ตอนนี้คือ 1.4.7 ครับ)
เท่านี้เราก็พร้อมสำหรับการเขียน Angular app แล้วครับ

สร้าง Angular app

ทำการเพิ่ม attribute ng-app เข้าไปที่ tag <html>
* ng-app เป็น built-in directive ที่ใช้เพื่อบอกให้รู้ว่า tag <html> นี้คือขอบเขตของ app โดย Angular เมื่อ web page โหลดเสร็จสิ้น และจะมองหา ng-app directive เพื่อเริ่มต้นการทำงาน

สร้าง angular.module

ที่ไฟล์ main.js เพิ่ม
code นี้จะทำการสร้าง Angular module ชื่อ myApp ซึ่งเราสามารถมอง module ให้เป็นเหมือนกับ namespace ในภาษา Java หรือ C# โดย parameter ที่ 2 ที่เป็น empty array จะเป็น dependency ต่างๆ ของ app ที่เราสามารถ include เข้ามาได้
* ชื่อ module myApp จะต้องตรงกับค่าที่อยู่ใน ng-app directive

สร้าง Controller

หลังจากที่เราสร้าง angular module แล้ว ต่อมาเราก็จะทำการสร้าง controller โดย controller จะเป็นตัวกำหนดค่าเริ่มต้น และการทำงานของ scope โดยที่ scope จะเป็นตัวกลางเชื่อมระหว่าง controller เข้ากับ view (controller, service, filter หรือ directive จะถูกสร้างขึ้นมา และทำงานอยู่ภายใต้ module ที่เรากำหนด

relation between $scope, controller and view in angular
relation between $scope, controller and view in angular

ที่ไฟล์ main.js เพิ่ม
จะเห็นว่าเราเรียก controller method จากตัวแปร app ที่เก็บ Angular module ก่อนหน้านี้ไว้ เพื่อบอกให้รู้ว่าเราต้องการสร้าง controller ให้อยู่ภายใต้ module myApp นอกจากนี้จะมีการ inject ตัวแปร $scope เข้าไปใน controller ด้วย
ตอนนี้เราได้สร้าง controller ขึ้นมาแล้ว และเพิ่ม property name เข้าใน scope ของ controller แต่เรายังไม่สามารถแสดงข้อมูลได้ เนื่องจากเรายังไม่ได้เรียกใช้งาน controller เลย!
เพิ่ม code เข้าไปใน index.html
ng-controller จะเป็นการบอกให้รู้ถึงขอบเขตในการเข้าถึงข้อมูลที่อยู่ใน scope ของ controller นั้นๆ โดยเราสามารถมี ng-controller ได้มากกว่าหนึ่ง รวมถึงจะเพิ่ม ng-controller ไว้ที่อื่นก็ได้ เช่น <div/>
ng-model เป็น directive ที่ใช้สำหรับเข้าถึง property ต่างๆของ scope แต่ถ้า property นั้นยังไม่มีอยู่ ก็จะทำการสร้างขึ้น และเพิ่มเข้าไปใน scope โดยอัตโนมัติ
{{ expression }} คือ Angular express ที่ใช้สำหรับแสดงค่าต่างๆใน html
index.html
app/main.js

ตอนนี้ถ้าเรารันหน้าเว็บก็จะได้ผลลัพธ์แบบนี้ครับ

show-angular-scope-data-using-curly-braces
show-angular-scope-data-using-curly-braces

และถ้าเราแก้ไขข้อมูลที่อยู่ใน textbox จะเห็นว่า text ที่อยู่ใน p tag ก็จะเปลี่ยนแปลงทันที เป็นผลมาจากสิ่งที่เรียกว่า 2 way data binding ความ หมายคือ ถ้ามีการเปลี่ยนข้อมูลของ scope ผ่านทาง view จะมีผลกับ controller ด้วย และในทางกลับกัน การเปลี่ยนแปลงของข้อมูลใน controller ก็จะมีผลกับ view เช่นเดียวกัน แต่การเปลี่ยนแปลงนี้จะต้องอยู่ภายใต้ Angular context (จะอธิบายเรื่อง Angular context เพิ่มเติมในบทความเกี่ยวกับ $digest loop และ apply อีกครั้งครับ)
จนถึงตอนนี้เราก็ได้เริ่มต้นทำความรู้จักกับ Angular, ความสัมพันธ์ระหว่าง view, controller, model (scope) กันไปแล้ว ในบทความต่อไปเราจะพูดถึงการใช้ Angular provider (Value, Factory, Service และ Constant) ที่จะช่วยให้เราเข้าใจเรื่อง dependency injection มากขึ้นด้วยครับ

วันอังคารที่ 28 มีนาคม พ.ศ. 2560

ActiveX คืออะไร

ActiveX คืออะไร
      ActiveX คือคำสั่งที่เขียนขึ้นจาก Visual Basic ที่ใช้ในการควบคุมการสื่อสารกับ Database  ใช้เป็น Add ons สำหรับ Browser IE เท่านั้น ซึ่ง ActiveX นี้ถูกสร้างจาก Visual Basic ที่ขณะนี้ มีเพียง Browser IE ( IE Microsoft Internet Explorer  ) เท่านั้นที่รองรับการใช้งานได้ สำหรับตัว ActiveX นี้เขาพัฒนาเพื่อมาต่อกรกับ Java applet ที่เป็นโปรแกรมเล็กๆ ที่จะถูกฝังอยู่ในเว็บเพจ แล้วนำมาประมวลผล ทำงาน และแสดงผลอยู่ใน ตัว web browser นั่นเอง
      ซึ่งประโยชน์ของการใช้ ActiveX คือจะทำให้การใช้งานเว็บไซต์ของเรานั้นสะดวกสบายขึ้น ตัวอย่างการใช้ ActiveX เช่น การเล่นเกมส์ออนไลน์ซึ่งตัวล็อกอินผ่านหน้าเว็บก่อนแล้วถึงเข้าไปเล่นเกมส์ ได้ การติดตั้ง ActiveX ช่วยให้เข้าไปเล่นเกมในเว็บไซต์นั้นได้ แต่ข้อเสียของ ActiveX ก็คือหากผู้ใช้ทำการติดตั้งโดยไม่ดูให้ดีเสียก่อน อาจกลายเป็นการนำไวรัสต่างเข้าสู่คอมพิวเตอร์ได้

ขั้นตอนการติดตั้ง ActiveX แบ่งออกเป็น 2 วิธี คือ การติดตั้งแบบอัตโนมัติ และการตั้งค่า Internet Explorer เพื่อติดตั้ง ActiveX

    ไม่สามารถติดตั้ง ActiveX ได้
          หาก ทำการตั้งค่าตามวิธีที่แนะนำทางด้านบนแล้ว ยังไม่สามารถติดตั้ง ActiveX ได้ ให้ทำการ Download ActiveX เพื่อติดตั้งด้วยตัวเองได้ทันที โดยมีรายละเอียดวิธีการติดตั้งดังนี้
          1. ดาวน์โหลดไฟล์สำหรับเครื่องที่ไม่สามารถติดตั้ง ActiveX ได้ ที่นี่
          2. เมื่อดาวน์โหลดเรียบร้อยแล้วแล้วจะได้ไฟล์ชื่อ setupActiveX.zip
          3. ดับเบิ้ลคลิกเพื่อทำการแตกไฟล์ .zip โดยเลือกที่เมนู Extract จะได้ไฟล์ Asiasoft ActiveX.msi และ setup.exe
 
 
          4. จากนั้นดับเบิ้ลคลิกที่ไฟล์ชื่อ setup.exe เพื่อเริ่มต้นการติดตั้ง ActiveX คลิกที่ปุ่ม Next เพื่อทำการติดตั้งจนเสร็จสิ้น 
 


 

 


 

 
          5. เมื่อการติดตั้งเสร็จเรียบร้อยแล้ว ให้คลิกที่ปุ่ม Close แล้วทำการเข้าสู่หน้า Login เข้าเกม Audition ด้วยโปรแกรม Internet Explorer ตามปกติอีกครั้ง จะสามารถเข้าเล่นเกมได้ตามปกติ
 

ADO.NET

ADO.NET

ADO.NET เป็นส่วนหนึ่งในดอตเน็ตเฟรมเวิร์ก
ADO.NET คือชุดส่วนประกอบซอฟต์แวร์สำหรับโปรแกรมเมอร์เพื่อเข้าถึงแหล่งข้อมูลต่างๆ ซึ่งเป็นส่วนหนึ่งในดอตเน็ตเฟรมเวิร์ก แม้ว่าชื่อนั้นจะมาจากเทคโนโลยี ADO (ActiveX Data Object) แต่เนื่องจากว่ามีการเปลี่ยนแปลงจากเดิมไปมากจนสามารถเรียกได้เป็นคนละ ผลิตภัณฑ์เลยทีเดียว โดยปกติแล้วจะใช้ในการเชื่อมต่อกับฐานข้อมูล แต่การเชื่อมต่อเข้ากับ Excel ไฟล์XML หรือไฟล์ข้อความธรรมดานั้นก็ทำได้เช่นกัน

สถาปัตยกรรม

ADO.NET ได้แบ่งเป็นสองส่วนหลัก:
  • Data Provider
  • DataSet

ภาวะเชื่อมต่อฐานข้อมูลของจาวา JDBC

ภาวะเชื่อมต่อฐานข้อมูลของจาวา หรือ เจดีบีซี (อังกฤษ: Java Database Connectivity: JDBC) เป็นส่วนต่อประสานสำหรับภาษาจาวาที่ใช้กำหนดการเข้าถึงฐานข้อมูลของผู้รับบริการ โดยมีเมท็อดสำหรับสอบถามและปรับปรุงข้อมูลในฐานข้อมูล ซึ่งจะมุ่งไปที่ฐานข้อมูลเชิงสัมพันธ์
       Java Standard Edition จะมี JDBC เป็นส่วนหนึ่งมาตั้งแต่เผยแพร่ JDK 1.1 คลาสต่างๆของ JDBC จะบรรจุไว้ใน java.sql JDBC คือ API (Application Programming Interface) หรือ library ในจาวาที่ใช้สำหรับติดต่อกับฐานข้อมูลที่เป็นแบบ relational อย่างเช่น MS SQL, Oracle, MySQL, DB2, Informix เป็นต้น JDBC จะช่วยให้เราสามารถเพิ่ม แก้ไข ลบ หรือเรียกดูข้อมูลที่เก็บไว้ในฐานข้อมูลจากโปรแกรมจาวาที่เราเขียนขึ้นได้
สังเกตว่า JDBC จะเป็น API ที่ช่วยให้เราสามารถใช้งานฐานข้อมูลแบบ relational ได้ โดยลักษณะการเพิ่ม แก้ไข ลบ หรือเรียกดูข้อมูลจากฐานข้อมูลนั้นจะมีแนวคิดเป็นแบบ relational ด้วยเช่นกัน คือมองข้อมูลเป็น แถวและตาราง จะเห็นว่าแนวคิดแบบนี้จะไม่เหมือนกับแนวคิดที่เราใช้ในการเขียนโปรแกรมเชิง วัตถุที่เรามองข้อมูลหรือสิ่งต่าง ๆ เป็นวัตถุ นี่ทำให้เกิดความแตกต่างในแนวคิดของการมองข้อมูล JDBC ยังมองข้อมูลเป็น ตารางและแถว ในขณะที่โปรแกรมจาวาจัดการข้อมูลเป็นแบบวัตถุ
ด้วยเหตุนี้เอง จึงมีความพยายามที่จะลดความแตกต่างของแนวคิดที่ใช้ในการมองข้อมูล แทนที่เราจะใช้ JDBC ในการติดต่อกับฐานข้อมูลโดยตรง เราก็ใช้ software ที่ทำหน้าที่เป็น object-relational mapping คือเปลี่ยนข้อมูลจากที่อยู่ในรูปของ ตารางและแถวให้อยู่ในรูปของวัตถุ เวลาเราใช้งานฐานข้อมูลแบบ relational เราก็ไม่จำเป็นต้องมองข้อมูลเป็นแบบตารางและแถวอีกต่อไป เราสามารถมองข้อมูลและจัดการข้อมูลเหล่านั้นในรูปของ objects ได้เลย ทำให้สะดวกในการเขียนโปรแกรมเชิงวัตถุมากขึ้น object-relational mapping ที่หลายคนนิยมใช้กันก็คือ Hibernate Hibernate จะทำหน้าที่ติดต่อกับฐานข้อมูลที่เป็นแบบ relational แล้วเปลี่ยนข้อมูลเหล่านั้นให้อยู่ในรูปของ objects ที่โปรแกรมของเราสามารถนำไปใช้ได้ง่าย

การเชื่อมต่อฐานข้อมูลแบบเปิด ODBC

การเชื่อมต่อฐานข้อมูลแบบเปิด

ในวิทยาการคอมพิวเตอร์ การเชื่อมต่อฐานข้อมูลแบบเปิด [1] หรือ โอดีบีซี (อังกฤษ: Open Database Connectivity: ODBC) เป็นส่วนต่อประสานโปรแกรมประยุกต์แบบมาตรฐานสำหรับการใช้ระบบจัดการฐานข้อมูล ผู้ออกแบบ ODBC ได้ตั้งจุดมุ่งหมายที่จะทำให้เป็นอิสระจากภาษาโปรแกรม ระบบฐานข้อมูล และระบบปฏิบัติการ

     ข้อกำหนดของ ODBC ได้เสนอส่วนต่อประสานเชิงขั้นตอนสำหรับการใช้ข้อคำถาม SQL เพื่อเข้าถึงข้อมูล การใช้ ODBC จะมีโปรแกรมประยุกต์หนึ่งโปรแกรมหรือมากกว่า คลัง ODBC และตัวขับฐานข้อมูลหนึ่งตัวหรือมากกว่า คลัง ODBC ซึ่งเป็นอิสระจากโปรแกรมประยุกต์หรือระบบจัดการฐานข้อมูลจะทำหน้าที่เป็นอิน เทอร์พรีเตอร์ระหว่างโปรแกรมประยุกต์และตัวขับฐานข้อมูล เพราะว่าตัวขับฐานข้อมูลมีรายละเอียดเฉพาะของระบบจัดการฐานข้อมูล ดังนั้นนักเขียนโปรแกรมจึงสามารถเขียนโปรแกรมที่มีประเภทและลักษณะเป็น มาตรฐานได้โดยไม่ต้องกังวลกับลักษณะเฉพาะของระบบจัดการฐานข้อมูลแต่ละระบบ ที่โปรแกรมอาจพบ นอกจากนี้ ผู้ใช้ตัวขับฐานข้อมูลเพียงจำเป็นต้องรู้วิธีการติดต่อกับคลังเท่านั้น คุณสมบัตินี้ทำให้ ODBC มีสภาพเป็นส่วนจำเพาะ
ในการเขียนรหัสคำสั่ง ODBC เพื่อใช้ประโยชน์จากลักษณะเฉพาะของระบบจัดการฐานข้อมูล จำเป็นต้องมีการเขียนโปรแกรมในระดับที่สูงขึ้น โปรแกรมประยุกต์ต้องใช้ความสามารถในการกำหนดประเภทของอ็อบเจกต์เวลาเรียกใช้ ฟังก์ชัน Metadata ของ ODBC ที่จะส่งสารสนเทศเกี่ยวกับลักษณะที่สนับสนุน ประเภทที่ใช้ได้ วากยสัมพันธ์ ข้อจำกัด ระดับการแยกเดี่ยว สมรรถภาพของตัวขับ และอื่นๆ แม้ว่านักเขียนโปแกรมจะใช้เทคนิคที่ดัดแปลงได้ แต่ ODBC ก็อาจไม่ได้เตรียมลักษณะขั้นสูงบางลักษณะของระบบจัดการฐานข้อมูลไว้ ส่วนต่อประสาน ODBC 3.x จะทำงานได้ดีกับการประยุกต์ใช้ SQL แบบเดิมอย่างเช่น OLTP แต่ไม่ได้พัฒนาเพื่อสนับสนุนการประยุกต์ใช้ตาม SQL:1999 และ SQL:2003
ODBC จัดเตรียมมาตรฐานของการเข้าถึงข้อมูลแบบที่พบได้ทั่วไปเนื่องจากมีตัวขับ ODBC หลายตัวสำหรับแหล่งข้อมูลหลากหลายประเภท ODBC จะทำงานร่วมกับระบบปฏิบัติการหลากหลายประเภทและมีตัวขับสำหรับข้อมูลที่ไม่ เป็นเชิงสัมพันธ์ เช่น เนื่องจาก Spreadsheets ข้อความ และแฟ้มข้อมูล XML ODBC มีมาตั้งแต่ พ.ศ. 2535 จึงพัฒนาให้ติดต่อกับแหล่งข้อมูลได้หลากหลายมากกว่าส่วนต่อประสานการเข้าถึง ข้อมูลแบบอื่น และมีตัวขับสำหรับ ODBC อยู่มากกว่าตัวขับหรือผู้ให้บริการสำหรับส่วนต่อประสานที่ใหม่กว่าอย่างเช่น OLE DB JDBC และ ADO.NET
แต่หากไม่คำนึงถึงข้อได้เปรียบของการติดต่อแบบทั่วไปและความเป็นอิสระจาก แพลตฟอร์มแล้ว ODBC ก็มีข้อด้อยอย่างไม่อาจหลีกเลี่ยงได้ ในการบริหารเครื่องรับบริการจำนวนมากนั้นอาจมีผลต่อความหลากหลายของตัวขับ และ DLLs ความซับซ้อนนี้ทำให้ค่าใช้จ่ายในการบริหารระบบเพิ่มมากขึ้นได้ องค์กรใหญ่ที่มีคอมพิวเตอร์ส่วนบุคคลจำนวนหลักพันขึ้นไปจึงมักจะหันไปใช้ เทคโนโลยีเครื่องบริการ ODBC เพื่อลดปัญหาในการบริหาร

โครงแบบการเชื่อมโยง

การเชื่อมโยง JDBC-ODBC

การเชื่อมโยง JDBC-ODBC ประกอบด้วยตัวขับ JDBC ที่ใช้ตัวขับ ODBC ในการติดต่อกับฐานข้อมูล ตัวขับนี้จะแปลการเรียกเมท็อดใน JDBC ให้เป็นการเรียกฟังก์ชันใน ODBC ปกติแล้วนักเขียนโปรแกรมจะใช้การเชื่อมโยงนี้เมื่อฐานข้อมูลไม่มีตัวขับ JDBC ซึ่ง Sun Microsystems ได้ใส่การเชื่อมโยงนี้ไว้ใน JVM แต่ถ้ามีตัวขับ JDBC อยู่น้อยจะมองการเชื่อมโยงนี้เป็น Stop-gap measure

การเชื่อมโยง ODBC-JDBC

การเชื่อมโยง ODBC-JDBC ประกอบด้วยตัวขับ ODBC ที่ใช้บริการของตัวขับ JDBC ในการติดต่อฐานข้อมูล ตัวขับนี้จะแปลการเรียกฟังก์ชันใน ODBC ให้เป็นการเรียกเมท็อดใน JDBC ปกติแล้วนักเขียนโปรแกรมจะใช้การเชื่อมโยงนี้เมื่อไม่มีตัวขับ ODBC สำหรับฐานข้อมูลที่ใช้อยู่แต่สามารถเข้าถึงตัวขับ JDBC ได้

การนำไปใช้

ODBC ใช้งานบนระบบปฏิบัติการได้หลายประเภท เช่น ไมโครซอฟท์ วินโดวส์ ยูนิกซ์ ลินุกซ์ โอเอส/2 โอเอส400 ไอบีเอ็ม ไอ5/โอเอส และ แมคโอเอสเทน และมีตัวขับ ODBC อยู่มากมาย ทั้งตัวขับสำหรับ Oracle DB2 Microsoft SQL Server Sybase Pervasive SQL MySQL PostgreSQL และผลิตภัณฑ์ Desktop database อย่างเช่น FileMaker และ Microsoft Access

Microsoft ODBC

Microsoft ได้ออกผลิตภัณฑ์ ODBC ตัวแรกเป็นชุดของ DLLs สำหรับ Microsoft Windows และใน พ.ศ. 2549 Microsoft ได้ติดตั้ง ODBC ที่ผลิตขึ้นไว้ในวินโดวส์ทุกรุ่นที่สนับสนุน

iODBC

iODBC ได้เสนอ Open source ที่ใช้งานอย่างเป็นอิสระจากแพลตฟอร์ม ซึ่งสามารถใช้งานได้ในแพลตฟอร์มอื่นๆนอกเหนือจาก Microsoft Windows

UDBC

UDBC เป็นการรวมข้ามแพลตฟอร์มระหว่าง ODBC และ SAG CLI ใช้พัฒนาโปรแกรมประยุกต์อย่างเป็นอิสระจากระบบจัดการฐานข้อมูลและไม่ขึ้นกับ วินโดวส์

Set MongoDB in the windows path environment

  Let’s set MongoDB in the windows environment in just a few steps. Step 1: First download a suitable MongoDB version according to your mach...