Month: January 2017

  • What is MongoDB?

           MongoDB เป็น open-source document database ประเภทหนึ่ง โดยเป็น database แบบ NoSQL Database จะไม่มีการใช้คำสั่ง SQL ไม่เน้นในการสร้างความสัมพันธ์ของข้อมูลแต่จะเป็นรูปแบบโครงสร้างที่เจ้าของ NoSQL สร้างขึ้นมาเองและจัดเก็บข้อมูลเป็นแบบ JSON (JavaScript Object Notation) ซึ่งจะเก็บค่าเป็น key และ value โดยจุดเด่นอยู่ที่ความเร็วในการทำงานเป็นหลัก คิวรี่ข้อมูลได้เร็วขึ้น การทำงานในส่วนของ database จะลดลง แต่จะไปเน้นการทำงานในส่วนของโปรแกรมที่พัฒนาขึ้นมาแทน  โดย database ประเภทนี้ จะเหมาะกับข้อมูลขนาดใหญ่ ที่ไม่ซับซ้อน การทำงานที่ไม่หนักมาก สามารถทำงานกับระบบที่เป็นการทำงานแบบเรียลไทม์ (Real Time) ได้ดี

    รูปแบบการจัดเก็บ

    1. Collections การเก็บข้อมูล document ใน MongoDB จะถูกเก็บไว้ใน Collections เปรียบเทียบได้กับ Table ใน Relational Database ทั่วๆไป แต่ต่างกันที่ Collections ไม่จำเป็นที่จะต้องมี Schema เหมือนกันก็สามารถบันทึกข้อมูลได้
    2. Schemaless คือ การไม่ต้องกำหนดโครงสร้างใดๆให้มันเหมือน SQL ปกติทั่วไป เช่น Collection User มีเก็บแค่ name ต่อมาเราสามารถเพิ่มการเก็บ position เข้ามาได้เลย

    ข้อดีของ MongoDB

    1. MongoDB เป็น database แบบ Document-Oriented โดยลักษณะการเก็บข้อมูลจะใช้รูปแบบ format เป็น Json Style โดย Row แต่ละ Row ไม่จำเป็นต้องมีโครงสร้างข้อมูลเหมือนกัน เช่น

    [javascript]{

    data : “test”

    }[/javascript]

    1. MongoDB ใช้ระบบการจัดการ memory แบบเดียวกับ cached memory ใน linux ซึ่งจะปล่อยให้ OS เป็นคนจัดการ Memory
    2. ใช้ภาษา javascript เป็นคำสั่งในการจัดการข้อมูล
    3. MongoDB เป็น Full Index กล่าวคือรองรับข้อมูลมหาศาลมากๆ สามารถค้นหาจากส่วนไหนของข้อมูลเลยก็ได้
    4. MongoDB รองรับการ เพิ่ม หรือ หด field แบบรวดเร็ว ไม่ต้องใช้คำสั่ง Alter Table
    5. read-write ข้อมูลรวดเร็ว
    6. write ข้อมูล แบบ asynchronous (คล้าย INSERT DELAYED ของ MyISAM ใน MySQL) คือไม่ต้องรอ Insert เสร็จจริงก็ทำงานต่อได้
    7. MongoDB มี Capped Collection ซึ่งจะทยอยลบข้อมูลเก่าที่เก็บไว้นานเกินไปแล้วเอาข้อมูลใหม่มาใส่แทนได้ จะ clear ข้อมูลที่เก็บมานานเกินไปไว้ให้อัตโนมัติ ข้อมูลไม่โตกว่าที่เรากำหนด
    8. ค้นหาข้อมูลได้รวดเร็ว
    9. สามารถใช้เครื่อง server ที่ไม่ต้องคุณภาพสูงมากแต่แบ่งกันทำงานหลายๆเครื่อง ซึ่งประหยัดงบได้มากกว่าใช้เครื่องคุณภาพสูงเพียงเครื่องเดียว
    10. สามารถเขียนเป็นชุดคำสั่งได้ คล้ายๆกับการเขียน PL/SQL

     

    ข้อเสีย ของ MongoDB

    1. ถ้า project เก่ามีการ JOIN กันซับซ้อนก็จะเปลี่ยนมาใช้ MongoDB ได้ยาก
    2. กินพื้นที่การเก็บข้อมูลมากกว่า MySQL พอสมควร เพราะไม่มี Schema ดังนั้น Schema จริงๆจะอยู่ในทุก row ของฐานข้อมูล ทำให้ข้อมูลใหญ่กว่า MySQL
    3. หากใช้งานจน disk เต็ม จะ clear พื้นที่ disk ให้ใช้งานต่อยาก เพราะการสั่ง delete row ไม่ทำให้ฐานข้อมูลเล็กลง ต้องสั่ง compact เองซึ่งต้องมีที่ว่างที่ disk อีกลูกมากพอๆ กับพื้นที่ข้อมูลที่ใช้อยู่ปัจจุบันเป็น buffer ในการลดขนาด
    4. หากต้องการใช้งานเป็นฐานข้อมูลหลักแทน MySQL ควรมีเครื่องอย่างน้อย 3 เครื่องที่เป็น physical แยกกันทำ replication กัน เพื่อเพิ่ม durability ของข้อมูล เนื่องจากข้อมูลส่วนใหญ่ของ MongoDB จะเก็บใน Memory เป็นระยะเวลาหนึ่ง หากเครื่องดับไปเครื่อง ข้อมูลที่ยังค้างใน Memory แต่ยังไม่ write ลง disk จะสูญหายทันที

     

    คำสั่ง และ Mongo Shell เบื้องต้น

    กำหนดให้  collection = test การ Insert ข้อมูลใน Mongo Shell สามารถ save collection ได้ง่ายๆด้วย db.collectionName.save()

    db.test.save({a: 1, b: 2, c: 3})  –save ข้อมูลลง collectionName “test”

    หรือ

    db.test.save([

    { name: ‘Maliwan’ },

    { name: ‘BentoBarbeque’ }

    ]);     –save ข้อมูลลง collectionName “test”

     

    การ Query

    การค้นหาข้อมูล ใน Mongo Shell จะใช้คำสั่ง db.collectionName.find()

    db.test.find()       — ค้นหาข้อมูลทั้งหมดจาก  collectionName “test”

     

    การค้นหาโดยใส่เงื่อนไข

    db.test.find({name: ‘Maliwan’}) — ค้นหา collection test ที่มี name = Maliwan

     

    การ Update

    การ Update ข้อมูล เราจะใช้ $set operator

    db.test.update(

    {‘name’: ‘Maliwan’},

    {

    $set: {‘company’: ‘psu’}

    })    

    –ทำการ query หา collection test ที่มี name = Maliwan จากนั้นก็ทำการ update โดยเพิ่ม company ให้มีค่า ‘psu’

     

    การ Remove

    การลบข้อมูลใน MongoDB จะใช้ remove()

    db.test.remove({name: ‘Maliwan’});  –ลบข้อมูล collection test ที่ name = Maliwan ทั้งหมด

    หากต้องการกำหนดว่าให้ลบแค่ 1 record ด้วย flag justOne

    db.test.remove({name: ‘Maliwan’}, {justOne: true})   –ลบข้อมูล collection test ที่ name = Maliwan เพียง 1 record ถึงแม้จะเจอมากกว่า 1 record

     

     

     

    สามารถอ่านข้อมูลและศึกษาเพิ่มเติมได้

    https://www.mongodb.com/who-uses-mongodb

    ส่วนการติดตั้ง database สามารถเข้าไปเพิ่มเติมได้จาก

    http://docs.mongodb.org/manual/installation/

  • Remote Debugging ASP.NET application

    ในการพัฒนาเว็บแอพพลิเคชัน การที่จะ publish เว็บขึ้น server ผู้พัฒนาย่อมมีการทดสอบการทำงานของแต่ละฟังก์ชันแต่ละ process ผ่าน localhost ก่อนอยู่แล้ว ว่าสามารถทำงานได้ถูกต้อง ไม่พบ error หรือปัญหาใดๆ แต่ในบางครั้งพบว่า เมื่อ publish เว็บไปแล้ว กลับพบ error ในบางฟังก์ชัน ทั้งที่ฟังก์ชันนั้นผ่านการทดสอบบน localhost ว่าทำงานถูกต้องแล้ว ซึ่งอาจเกิดจาก Environment ในตอนที่เรา run ที่ localhost กับบน server ไม่เหมือนกัน หรือฐานข้อมูลที่ทดสอบกับฐานข้อมูลที่ใช้งานจริงมีข้อมูลที่ conflict กันอยู่ เป็นต้น ซึ่งบทความนี้ผู้เขียนจะมาแนะนำ Remote Debugging Tool สำหรับผู้พัฒนาเว็บด้วย ASP.NET

    Remote Debugging Tool

    คือ เครื่องมือที่ใช้ในการ remote debug สำหรับ ASP.NET แอพพลิเคชัน ซึ่งเป็นเครื่องมือขนาดเล็กที่มีชื่อว่า “Msvsmon.exe” ที่ให้เราสามารถ debug  code เพื่อหา error โดยการ remote จาก Visual Studio ไปยัง IIS server

     

    ติดตั้ง Remote Debugging Tool บน Windows Server

    download ตัวติดตั้ง Remote tools ตาม version ของ Visual Studio ที่เราใช้งาน เมื่อ download มาเรียบร้อยแล้วให้ทำการติดตั้ง โดยคลิกขวาที่ไฟล์ติดตั้ง เลือก Run as administrator จะปรากฎหน้าต่างดังรูป

     

    ให้เลือก Configure remote debugging จะเสร็จสิ้นขั้นตอนการติดตั้งและจะปรากฏหน้าต่าง Remote Debugger

    ซึ่งตอนนี้ Remote debugger ทำงานแล้ว โดยรอการเชื่อมต่อจากฝั่ง Visual Studio (ภายหลัง สามารถเรียกใช้งาน Remote Debugger ได้จาก Start menu)

    Attach Process จาก Visual Studio เครื่องพัฒนา

    1. เปิด Visual Studio ขึ้นมา และเลือก project ที่จะใช้งาน
    2. ที่แถบเมนูด้านบน เลือก Debug >> Attach to Process
    3. ปรากฎหน้าต่าง Attach to Process ดังรูป ในส่วนของ Qualifier ให้ระบุชื่อหรือ IP ของเครื่อง server ที่ web เราวางอยู่ และกดปุ่ม Refresh ด้านล่างเพื่อ connect ไปยังเครื่อง server ดังรูป

    4. เลือก process ที่ชื่อ w3wp.exe โดยสังเกตที่คอลัมน์ User Name เป็น path ของ site ที่เราต้องการทดสอบ หลังจากนั้นกดปุ่ม Attach ดังรูป

    5. เปิด browser และพิมพ์ url ไซต์ของเรา http://<remote computer name>

    6. เลือกมาร์กจุด breakpoint ที่จะ debug code ตามต้องการ เราก็จะสามารถ debug code โดยการ remote ไปยังเครื่อง server ที่เราได้ deploy เว็บของเราไปแล้วได้เหมือนการ debug บนเครื่อง localhost ที่เราพัฒนาค่ะ

     

    แหล่งข้อมูลอ้างอิงhttps://msdn.microsoft.com/en-us/library/mt621540.aspx

     

  • Xamarin.iOS : ติดตั้งซอฟแวร์ และสร้างโปรเจ็ค

    การพัฒนาแอปพลิเคชันสำหรับระบบปฏิบัติการ iOS นั้นมีหลายช่องทางในปัจจุบัน โดยไม่นานมานี้ ทางไมโครซอฟ ได้เข้าซื้อ Xamarin ซึ่งเป็นซอฟแวร์ สร้างแอปพลิเคชันสำหรับ Android, iOS, Windows Phone โดยใช้ภาษา C# โดยมีแนวคิดแชร์โค้ดในส่วน Logic ระหว่างแพลตฟอร์มได้ (แต่ส่วน User Interface และ Controller ต้องเขียนแยกกัน) ซึ่งเดิมทีซอฟแวร์ตัวนี้มีค่าใช้จ่ายในการนำมาใช้งานพอสมควร แต่ปัจจุบัน สามารถใช้ร่วมกับ Visual Studio ได้ตั้งแต่รุ่น Community ซึ่งฟรี ทำให้มีความน่าสนใจในการนำมาใช้งานสำหรับ ทีมพัฒนาระบบ ที่ใช้ Visual Studio ร่วมกับ ภาษา C# อยู่แล้วเป็นอย่างมาก

    สิ่งที่ต้องมี สำหรับการใช้ Xamarin พัฒนา iOS แอปพลิเคชัน
    1.เครื่องคอมพิวเตอร์ที่ติดตั้ง macOS ได้ เช่น MacBook , MAC Pro, iMAC เป็นต้น หรือหากท่านใดสามารถสร้าง Virtual Machine ด้วย VirtualBox หรือ VMware แล้วติดตั้ง macOS ได้ ก้สามารถใช้งานได้เช่นกัน
    2.Apple ID ที่ลงทะเบียน Apple Developer Account ไว้เรียบร้อยแล้ว (มีค่าใช้จ่ายรายปีประมาณ 3000 บาท)
    3.หากต้องการใช้ Visual Studio เวอร์ชันสำหรับ Windows ในการพัฒนาก็ต้องมี เครื่องคอมพิวเตอร์อีกเครื่องที่ติดตั้งระบบปฏิบัติการ Windows (สำหรับท่านที่ต้องการใช้เครื่องเดียว สามารถใช้ Xamarin Studio หรือ Visual Studio For Mac ได้ เท่าที่ผมทดลองใช้งานก็มีความพร้อมระดับใช้งานได้ แม้จะเป็นเวอร์ชั่น Preview ในขณะที่ทดลองก็ตาม)

    ติดตั้ง Xamarin และ ตั้งค่าบน macOS
    1.ติดตั้ง Xcode จาก App Store ให้เรียบร้อย เนื่องจากตัว Xamarin จำเป็นต้องใช้งานทั้ง iOS SDK และ Simulator ที่ติดตั้งมาพร้อมกับ Xcode ในการ Build และ Run เพื่อทดสอบแอปพลิเคชันของเรา
    2.ใช้ Apple Developer Account สร้าง Provisional Profile ได้ที่ https://developer.apple.com/account/ios/certificate จากนั้นทำการดาวน์โหลดและติดตั้งให้เรียบร้อย
    3.ดาวน์โหลดตัวติดตั้ง ที่ https://www.xamarin.com/download ใส่ข้อมูล ชื่อ, อีเมล, หน่วยงาน แล้วเลือกว่ามีการติดตั้ง Visual Studio ไว้แล้วหรือไม่ เลือกยอมรับข้อตกลง เลือก Download Xamarin Studio for OS X
    4.เมื่อเริ่มติดตั้งจะมีหน้าจอให้ยอมรับข้อตกลง และแสดงความคืบหน้าในการติดตั้ง รอจนแจ้งผลติดตั้งเสร็จสิ้น
    5.ตั้งค่าเปิดใช้งาน Remote Login สำหรับการเชื่อมต่อจากเครื่องพัฒนาอื่นไปที่ System Preferences > Sharing
    6.เสร็จเรียบร้อยในฝั่ง macOS

    ติดตั้ง Xamarin บน Windows เพื่อใช้งานร่วมกับ Visual Studio
    1.ดาวน์โหลดตัวติดตั้ง Visual Studio เวอร์ชั่นที่ต้องการใช้งาน สามารถใช้ได้ทั้ง Community, Professional, Enterprise (ในขณะที่เขียนผมใช้เวอร์ชั่น Enterprise 2015 with update 3)
    2.เลือกติดตั้งแบบ Custom

    3.ติดตั้ง Cross Platform Mobile Development Plugin ที่ตัวเลือกจะมีวงเล็บไว้ให้แล้วว่าเป็น Xamarin เลือกให้เรียบร้อยกด Next
    4.รอจนกระบวนการติดตั้งสำเร็จ จะมีหน้าจอแสดงผลการติดตั้งเป็นอันเสร็จเรียบร้อย
    5.การใช้งาน Xamarin จำเป็นต้องอัพเดทให้ทันสมัยอยู่เสมอ เนื่องจากตัวซอฟแวร์จะมีการปรับรุ่นให้รองรับ iOS ที่ออกมาใหม่ๆ อยู่เสมอรวมทั้งการแก้ปัญหาบัคต่างๆ ด้วย โดยไปที่ Tools > Options > Xamarin แล้วกด Check Now จะทำการดาวน์โหลดและติดตั้งให้อัตโนมัติ

    6.หากมี Visual Studio ติดตั้งอยู่แล้ว ก็ยังสามารถใช้วิธีนี้ได้ครับ เพียงเปิด Installer ขึ้นมาใหม่ แล้วเลือก Modify

    สร้างโปรเจ็ค และการใช้งานด้านต่างๆ
    1.เปิด Visual Studio เลือก New Project > Visual C# > iOS จากตรงนี้ เราจะต้องเลือกว่า แอปพลิเคชันที่เรากำลังจะทำรองรับอุปกรณ์กลุ่มไหนระหว่าง iPhone, iPad, Universal (ใช้งานได้ทั้ง iPhone และ iPad) จากนั้นก็เลือก Template ให้เหมาะสมกับแอปพลิเคชันของเรา

    2.ในส่วนของผมเองเลือกเป็น Universal ครับ ซึ่งหากเลือกแบบนี้เราต้องออกแบบหน้าจอให้รองรับการใช้งานทั้งบน iPhone และ iPad ในขนาดหน้าจอ และความละเอียดต่างๆ ซึ่งวิธีการนั้นก็เฉพาะกับรุ่นของ iOS SDK ครับ

    3.ในกรณีใช้อีกเครื่องที่เป็น Windows ในการพัฒนา ก็ต้องทำการเชื่อมต่อกับเครื่อง macOS ที่ได้ติดตั้ง Xamarin Studio ไว้ โดยคลิกที่ไอคอน  แล้วทำการ Connect ให้เรียบร้อย
    4.โครงสร้างของโปรเจ็คก็จะมีหน้าตาประมาณนี้ครับ สามารถใช้งานความสามารถต่างๆ ของ .Net Framework ได้ครบถ้วน ด้านซ้ายมือมี Toolbox ให้เราสามารถลากวาง Control ที่เหมือนกับพัฒนาโดย Xcode ทุกประการ

    5.การเพิ่ม Component ต่างๆ สามารถทำได้ผ่าน NuGet Package Manager

    6.การเชื่อมต่อ Web Services ก็ทำได้อย่างง่ายดาย รวมถึงการเปลี่ยน URL ในการเชื่อมต่อขณะ Runtime ก็สามารถทำได้โดยกำหนด Property ชื่อ URL Behavior เป็น Dynamic ซะก่อน

    7.เมื่อทำการ Build และ Run ทดสอบ จะปรากฏ Simulator บนเครื่อง macOS นะครับ

     

    บทความนี้ขอจบไว้เพียงเท่านี้ครับ แต่สำหรับเรื่อง Xamarin และ หัวข้อต่างๆ ในการพัฒนาแอปพลิเคชันสำหรับ iOS จะมีตามมาจนครบถึงกระบวนการอัพโหลดขึ้น App Store ได้สำเร็จอย่างแน่นอนครับ

  • การใช้ jQuery ร่วมกับ library อื่นๆ ด้วยโหมด no-conflict

    ในบางครั้งท่านผู้อ่านอาจจะมีปัญหา ในการนำ jQuery ไปใช้กับ ร่วมสคริปต์อื่นๆ หรือแม้กระทั่งพวก css framework ที่บางตัวจะมีการฝัง script ไว้ข้างในด้วย  ซึ่งอาจทำให้ script ของท่านทำงานผิดเพี้ยนไปจากที่ควรเป็น  วันนี้จะขอแนะนำเทคนิคในการแก้ปัญหาดังกล่าว นั่นก็คือ การปรับ jQuery ไปใช้งานในโหมด no-conflict นั่นเองค่ะ

     

    สิ่งที่พึงระวังสำหรับมือใหม่ก็คือ ตัว jquery เองนั้นจะใช้ตัวแปร $  อ้างถึงฟังก์ชั่น jQuery  ดังนั้น ถ้ามีสคริปต์ตัวอื่นที่ใช้ตัวแปร $ นี้เหมือนกันล่ะก็  เกิดปัญหาขึ้นแน่นอนค่ะ

    วิธีแก้ปัญหา

     วิธีที่ 1 คือให้สร้างตัวแปรเพิ่มขึ้นมาอีกตัวเพื่อใช้แทนเครื่องหมาย $

    ตัวอย่างพร้อมคำอธิบาย

    <script src="other_library.js"></script>
    
    <script src="jquery.js"></script>
    
    <script>
    
    //ในที่นี้เราประกาศตัวแปร $j แทนตัว $
    
    var $j = jQuery.noConflict();
    
    $j(document).ready(function(){
    
    $j("div").hide();
    
    });
    
    
    // ถึงตรงนี้ตัวแปร $ จะหมายถึงตัวแปรจากสคริปต์ other_library.js
    
    // mainDiv ดังนั้นคำสั่งข้างล่างนี้ $('main') จึงหมายถึงการเรียกฟังก์ชั่น
    
    // จาก other_library ไม่ใช่การเรียกฟังก์ชั่นของ jquery
    
    window.onload = function(){
    
    var mainDiv = $('main');
    
    }
    
    </script>
    
    

    วิธีที่ 2 ในกรณีที่ไม่ต้องการประกาศตัวแปรเพิ่ม ในที่นี้เราสามารถใช้งานตัวแปร $ ได้แต่เป็นการเรียกใช้แบบ locally scope(เรียกใช้เฉพาะในบล็อคของ jQuery เอง)

    ตัวอย่างพร้อมคำอธิบาย

    <script src="other_library.js"></script>
    
    <script src="jquery.js"></script>
    
    <script>
    
    jQuery.noConflict();
    
    jQuery(document).ready(function($){
    
    // การใช้ตัวแปร $ ในนี้จะหมายถึง jQuery (locally scope)
    
    $("div").hide();
    
    });
    
    // ส่วนการใช้ตัวแปร $ นี้จะหมายถึงการเรียกใช้แบบ global scope
    
    // ซึ่งในที่นี้หมายถึงการเรียกใช้ $ ของ other_library นั่นเอง
    
    window.onload = function(){
    
    var mainDiv = $('main');
    
    }
    
    </script>
    
    

    การเรียกใช้งานแบบนี้จะทำให้เราไม่สับสนกรณีที่เขียนโค๊ดยาวๆ หรือใช้ไลบราลีหลายตัว

    สองวิธีข้างต้น จะสังเกตว่าเรา include สคริปต์ jQuery หลังสคริปต์ตัวอื่น กรณีที่เรามีการ include สคริปต์ jQuery ก่อนสคริปต์ตัวอื่น จะทำอย่างไร?

    ในกรณีที่เรา include jQuery มาก่อนและหากสคริปต์ที่ตามหลังใช้ตัวแปร $ จะถือว่าตัวแปร $ นั้นเป็นของสคริปต์ที่ประกาศที่หลัง(override) ซึ่งถ้าเราต้องการใช้งาน jQuery จะทำได้โดยการเรียกใช้ฟังก์ชั่น  jQuery โดยตรง  ดังตัวอย่างข้างล่างนี้

    ตัวอย่างพร้อมคำอธิบาย

    <script src="jquery.js"></script>
    
    <script src="other_library.js"></script>
    
    <script>
    
    //เรียกใช้ jQuery ฟังก์ชั่นแบบเต็ม
    
    jQuery(document).ready(function(){
    
    jQuery("div").hide();
    
    });
    
     
    
    // เรียกใช้ตัวแปร $ ที่ระบุไว้ใน other_library.js
    
    window.onload = function() {
    
    var mainDiv = $('main');
    
    };
    
     
    
    </script>
    
    

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

    แหล่งอ้างอิงhttp://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/

     

  • Acrobat Reader DC รุ่นที่แจกฟรีนี่แหล่ะ ก็พอเพียงแล้ว — หยุดใช้โปรแกรมละเมิดลิขสิทธิ์เถอะ

    จากที่ปฏิบัติหน้าที่ Helpdesk และได้เห็นนักศึกษาและบุคลากรของมหาวิทยาลัย ใช้โปรแกรมเถื่อนโดยเฉพาะ Adobe Acrobat ซึ่งจริงๆแล้ว เค้ามีตัวฟรี คือ Adobe Acrobat Reader ให้ใช้อยู่แล้ว อย่าไปละเมิดลิขสิทธิ์เค้าเลย ในบทความนี้ จะขอแนะนำความสามารถที่ “ของฟรี” มีให้ใช้ แต่บางคนอาจจะไม่รู้ ก็เลยไปละเมิดลิขสิทธิ์

     

    ยุค Paperless หรือ ไร้กระดาษ ก็สามารถทำได้แล้ว ตัวอย่างเช่น มีเอกสาร PDF ที่ต้อง Print ใส่กระดาษ แล้วกรอกเอกสาร ลงลายเซ็นต์ แล้วก็ต้อง Scan กลับเข้าไปในระบบอีก … สุดท้ายก็ต้องเก็บกระดาษกองโต เพื่อรอเอาไปทิ้ง ทำไปเพื่ออะไร ?

     

    ขอยกตัวอย่างการใช้งานกับเอกสารต่อไปนี้

    http://group.psu.ac.th/docs/F_SD13.pdf

    http://www.personnel.psu.ac.th/fromper/form1.pdf

     

    เริ่มจาก Download เอกสารมาเก็บไว้ในเครื่อง

    แล้วเปิดโปรแกรม Adobe Acrobat Reader DC นี่แหล่ะ แล้วคลิกที่ Fill & Sign ด้านขวามือ 

    ถ้าต้องการกรอกข้อมูลข้อความ ก็คลิกที่ Ab แล้วเลื่อนไปคลิกที่ตำแหน่งที่จะกรอกข้อมูล แล้วพิมพ์ไป 

    ตรงไหนที่เป็น Checkbox ก็เลือกได้ว่า จะเอาแบบ กากบาท หรือ เครื่องหมายถูก แล้วก็ไปคลิกที่ที่ต้องการ

    ต้องการใส่ลายเซ็นต์ ??? คลิกที่ Sign แล้วเลือก Add Signature

    จะใช้วิธี เซ็นต์บนกระดาษ แล้ว Scan เก็บภาพไว้ก็เลือก Image
    ส่วนใครจะเซ็นต์สด คลิก Draw แล้วใช้ S-Pen ให้คุ้มๆหน่อยครับ

    แล้วก็กดปุ่ม Apply (ทำครั้งเดียวนี่แหล่ะ หลังจากนั้นก็จะใช้งานได้ตลอด)

    จากนั้นก็เอามาวางในตำแหน่งที่ต้องการ

    แล้วก็ Save สิครับ รออะไร ???

    กรณีเป็นเลขที่บัตรประชาชน เค้าก็สามารถเว้นระยะตัวอักษรได้อีก ให้เหมาะกับช่อง

     

    หยุดละเมิดลิขสิทธิ์ แล้วทำงานแบบ Paperless กันเถอะครับ

  • วิธีการติดตั้ง Docker บน Ubuntu 16.04

    “อยากติดตั้ง Docker บน Ubuntu 16.04 ทำอย่างไร”

             นอกจาก containner ที่เป็น lxd ของ Ubuntu แล้ว ก็ยังสามารถใช้ในรูปแบบ Docker เช่นเดียวกัน แต่ค่อนข้างยุ่งยากกว่าเล็กน้อย โดยถ้าเทียบประสิทธิภาพแล้วในส่วนของ lxd จะดีกว่าแต่ในแง่ของ Image ทาง Docker ยังมีมากกว่า (แต่อนาคตอะไรก็ไม่แน่นอน ขึ้นอยู่กับจะเอามาใช้ทำอะไรมากกว่า และมีคนทำมาให้ใช้อันไหนมากกว่า หรือถนัด Image เองแบบไหนมากกว่า สรุปชอบอันไหนใช้อันนั้นแล้วกันครับ)

    วิธีการติดตั้ง (Ubuntu 16.04)

    *Ref : https://docs.docker.com/engine/installation/linux/ubuntulinux/

    • เนื่องจากไม่มี docker ใน Ubuntu Package โดยตรง จึงต้องเพิ่ม source.list ก่อนดังนี้
      sudo apt-get update
      sudo apt-get install apt-transport-https ca-certificates
      sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
      echo "deb https://apt.dockerproject.org/repo ubuntu-xenial maindeb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docket.list
      deb https://apt.dockerproject.org/repo ubuntu-xenial maindeb https://apt.dockerproject.org/repo ubuntu-xenial main
    • จากนั้น Update Package ให้ล่าสุดอีกครั้ง
      sudo apt-get update
    • จากนั้นทำการติดตั้ง Linux Kernel Extra
      sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
    • ทำการติดตั้ง Docker Engine ดังนี้
      sudo apt-get install docker-engine
    • จากนั้นทำการ Start Docker Service
      sudo service docker start
    • ทำการทดสอบติดตั้ง Image Hello-World ดังนี้
      sudo docker run hello-world

    • จากนั้นสามารถใช้คำสั่งตรวจสอบ Version Docker ได้ดังนี้
      sudo docker version

    จะเห็นว่าเพียงแค่นี้ก็ได้ Docker มาใช้งานแล้วครับ แถมอัพเดต Version ให้ตลอดด้วยครับ

  • วิธีการติดตั้ง Docker บน Windows Server 2016

    “อยากติดตั้ง Docker บน Windows Server 2016 ทำอย่างไร”

             Feature ใหม่ของ Windows Server 2016 คือการใช้งาน Docker ที่สมบูรณ์มากขึ้น โดยใช้การจัดการผ่าน PowerShell Command แต่ยังไงก็ตามก็ยังไม่พ้นหน้าจอฟ้า ๆ ที่ใช้ในการติดตั้ง และตรวจสอบสถานะต่าง ๆ แต่เนื่องด้วยการรองรับที่สมบูรณ์มากขึ้น การใช้งานก็จะมีประสิทธิภาพไม่แตกต่างจากการรันบนระบบปฎิบัติอื่น ๆ เหมาะกับการนำมาใช้เพื่อลดการบริโภคทรัพยากร ช่วยให้ใช้สมรรถนะของเครื่อง Server เต็มประสิทธิภาพ และเหมาะสำหรับการใช้งาน Application ที่แตกตัวเพิ่มได้ตามจำนวนการใช้งานที่เพิ่มขึ้น จุดเด่นที่สำคัญอีกจุดคือ Windows Nano Server สำหรับผู้อยากใช้งาน Windows Server Container Image ขนาดเล็ก ซึ่งจะเขียนในหัวข้อต่อ ๆ ไปครับ

    วิธีการติดตั้ง (Windows Server 2016)

    *Ref : https://docs.microsoft.com/th-th/virtualization/windowscontainers/quick-start/quick-start-windows-server

    • ทำการติดตั้ง OneGet PowerShell Module (ให้รันบน PowerShell ที่ Run As Administrator) 
    • เมื่อขึ้นถามว่าจะติดตั้งหรือไม่ .ให้กด Y ตามด้วย Enter
    Install-Module -Name DockerMsftProvider -Repository PSGallery -Force

    • จากนั้นใช้ OneGet ในการติดตั้ง Docker Version ล่าสุด
    • เมื่อขึ้นถามว่าจะติดตั้งหรือไม่ กด A ตามด้วย Enter
    Install-Package -Name docker -ProviderName DockerMsftProvider

    • จากนั้นทำการ Restart เครื่อง
    • หลังจาก Restart มาจะเห็นว่าสามารถใช้คำสั่ง Docker บน Powershell ได้แล้วดังนี้

    *หมายเหตุ : ในกรณีที่รันแล้ว error เกี่ยวกับ open //./pipe/docker_engine ให้เปิด firewall port 2375 ผ่าน powershell ที่รันด้วย administrator ดังนี้

    # Open firewall port 2375
    netsh advfirewall firewall add rule name="docker engine" dir=in action=allow protocol=TCP localport=2375
    
    # Configure Docker daemon to listen on both pipe and TCP (replaces docker --register-service invocation above)
    Stop-Service docker
    dockerd --unregister-service
    dockerd -H npipe:// -H 0.0.0.0:2375 --register-service
    Start-Service docker
    • สำหรับการติดตั้ง Image ต่าง ๆ ถ้าไม่ได้ทำ Image เองสามารถหาจาก Docker Hub ได้ โดยขอยกตัวอย่าง Image ที่เป็น .net core ที่รันอยู่บน Nano Server ดังนี้
    docker run microsoft/dotnet-samples:dotnetapp-nanoserver

    **Image ที่ทดสอบลงให้ดูไม่สามารถใช้ทำอะไรได้นะครับ สำหรับการใช้งานจริงก็จะประมาณสั่ง Run + Option ต่าง ๆ เพื่อบอกว่าให้ทำอะไร ซึ่งจะยกตัวอย่างใน Blog ถัด ๆ ไป อันนี้แค่ติดตั้ง Docker เพื่อใช้งานอย่างเดียวครับ