ข้ามไปที่เนื้อหาหลัก

บทความ

กำลังแสดงโพสต์จาก 2018

Python Web Dev: เสริมความปลอดภัยด้วยการเข้ารหัสกับ JWT กับ PyJWT

การส่งข้อมูลระหว่างกันของเซิร์ฟเวอร์โดยปกตินั้นสามารถถูกดักจับได้ด้วยผู้ไม่หวังดี จึงมีสิ่งหนึ่งที่เข้ามาช่วยแก้ปัญหาด้านนี้ได้บ้างก็คือ "การเข้ารหัสข้อมูล (encoding data)" ด้วยเหตุนี้เองในบล็อคนี้ ผมจึงมาแนะนำการเข้ารหัสในรูปแบบหนึงซึ่งเรียกว่า JWT มันคืออะไรนั้นมาดูกันเลย JWT ย่อมาจาก JSON Web Token  เป็นมาตรฐานเปิด ( RFC7519 ) ที่เข้ามาแก้ปัญหาการส่งข้อมูลระหว่างกัน อย่างปลอดภัย โดยที่ถูกออกแบบให้มีขนาดที่กระทัดรัดและเก็บข้อมูลภายในตัวมีหน้าตาเป็นชุดตัวอักษรชุดหนึ่งแบ่ง เป็น  3 ส่ วน  1. Header คือส่วนที่บอกว่าข้อ ความชุดนี้เข้ารหัสเแบบใดอยู่ หรือมีข้อกำหนดอะไรอยู่บ้าง 2. Payload เก็บข้อมูลจริง ๆ เช่น User ID, Roles ของผู้ใช้ , E-mail ผู้ใช้เพื่อระบุตัวตน  3. Signature เป็น digital signed เอาไว้ตรวจสอบว่า token ถูกสร้างขึ้นมาอย่างถูกต้องเพราะข้อมูลใน payload นั้นสามารถเปลี่ยนแปลงโดยบุคคลที่สามหากมีการเปลี่ยนแปลงข้อมูลขึ้นมาจะทำให้  signature ไม่ตรงกันกับ token ดังกล่าวจะถูกตรวจพบว่าไม่น่าเชื่อถือและไม่นำมาใช้งานในระบบ จากรูปจะ แสดงส่วนประกอบต่างๆของ JWT ประก

Python Web Dev:มาสร้าง REST API กับ Flask ด้วยภาษา Python กันเถอะ

เพื่อนๆหลายคนอาจจะเคยสร้าง API มาบ้างแล้วด้วยภาษาอื่นๆ เช่น Nodejs ( Javascript ) หรือ Grails ( JAVA ) ( หรือไม่เคย O_O ) วันนี้ผมจะมาแนะนำการทำ REST API แบบง่ายๆ แค่กระพริบตา ด้วย  Flask-RESTful   ซึ่งเขียนด้วยภาษา Python กันนะครับ อย่าเพิ่งรีบเบื่อหนีหายกันไปก่อนนะ :) ก่อนอื่นเลยครับ เราต้องติดตั้ง package ก่อน ตามนี้เล้ยย                                                                         pip install flask-restful                                                                                                             และในครั้งนี้ผมจะใช้โปรแกรม Postman ในการส่ง request medthods ต่างๆ ไปยัง API ที่เขียนไว้เพื่อตรวจสอบความถูกต้องนะครับสามารถ download ได้  ตามลิงค์นี้เล้ยยย พอติดตั้งแล้ว หน้าตาโปรแกรมก็จะประมาณนี้ จากนั้นเรามาลองสร้าง REST API อย่างง่ายกันดีกว่า สร้างไฟล์ ชื่อ api.py จากนั้นลองสั่ง run ดูนะครับ หากขึ้นตามภาพด้านบนหมายความว่า API Server ของคุณถูกเปิด อยู่ที่  http://127.0.0.1:5000/ เรียบร้อยแล้วววว หากเปิดด้วย browser ก็จะมีข้อคว

Python Web Dev: Login Flask app ด้วย Google

เกริ่น... ทุกคนจะเห็นว่าหลาย ๆ เว็บในปัจจุบันเปิดให้ใช้งานการเข้าสู่ระบบ (login) ผ่าน Facebook หรือ Google กันทั้งนั้น เหตุผลที่เราต้องทำการเข้าสู่ระบบก็เพื่อเป็นการบอกเจ้าของระบบว่า คุณเป็นใครในการใช้งานระบบนั้นๆ โดยบทความนี้จะเป็นตัวอย่างการทำการยืนยันตัวตน (Authentication) ด้วย OAuth กับ flask app แต่จะยกตัวอย่างเฉพาะของ Google นะครับ โดยจะใช้ flask-oauthlib ซึ่งเป็น library หนึ่งสำหรับการยืนยันตัวตนหากใครยังไม่ติดตั้งก็ตามนี้เลยครับ                                                                        pip install flask-oauthlib                                                                                                             หากใครยังไม่ติดตั้ง flask ก็ตามนี้ครับ                                                                        pip install flask                                                                                                            จากนั้นไปที่ หน้า dash board ของ GOOGLE API ( console.developers.google.com ) เลือก Credentials > Create C

รวมชุดคำสั่ง Assembly ของ AVR

บทความนี้ได้รวบรวมชุดคำสั่งภาษา assembly ของไมโคคอนโทรลเลอร์ตระกูล AVR และสรุปการใช้งานเป็นภาษาไทยอย่างง่ายหากมีข้อผิดพลาด ขออภัยด้วยครับ ชุดคำสั่งทางคณิตศาสตร์และลอจิก add Rd, Rr   :   Rd + Rr เก็บผลลัพธ์ไว้ใน Rd adc Rd, Rr   :   Rd + Rr + Carry flag  เก็บผลลัพธ์ไว้ใน Rd mul Rd, Rr   :   Rd x Rr ได้ผลลัพธ์เป็น 16 bit เก็บไว้ใน R0, R1 sub Rd, Rr   :   Rd - Rr เก็บผลลัพธ์ไว้ใน Rd sbc Rd, Rr   :   Rd - Rr - Carry flag  เก็บผลลัพธ์ไว้ใน Rd and Rd, Rr   :   Rd and Rr แบบ bit ต่อ bit or Rd, Rr   :   Rd or Rr แบบ bit ต่อ bit eor Rd, Rr   :    Rd exclusive or Rr แบบ bit ต่อ bit com Rd   :   complement (กลับบิต) Rd neg Rd   :   2'complement (ติดลบ) Rd inc Rd   :   Rd++ dec Rd   :   Rd-- clr Rd   :   เคลียร์ bit Rd เป็น 0 ชุดคำสั่งเคลื่อนย้ายข้อมูล mov Rd, Rr   :   copy ข้อมูลขนาด 1 byte จาก Rr ไว้ใน Rd movw Rd, Rr   :   copy ข้อมูลขนาด 2 bytes จาก Rr, Rr+1 ไว้ใน Rd, Rd+1 ldi   Rd, k   :   โหลดค่าใส่ register , k มีค่า 0 - 255 ld Rd, X   :   อ่านค่าตำแหน่งที่ X ชี้อยู่เก

ประวัติบุคคลสำคัญทางคอมพิวเตอร์ [ แบบสั้นๆ ]

สำหรับบทความนี้ผมจะกล่าวถึงประวัติของบุคคลสำคัญที่มีผลต่อการพัฒนาเทคโนลียีคอมพิวเตอร์ตั้งแต่ในอดีตจนกระทั่งถึงปัจจุบัน ขอบอกไว้ก่อนว่าบทความนี้เป็นเพียงประวัติส่วนหนึ่งของบุคคลเหล่านั้นเท่านั้นหากมีเนื้อหาส่วนไหนผิดพลาด ผมขออภัยไว้ด้วยนะครับ Dennis MacAlistair Ritchie (เดนนิส แม็คคาลิสแตร์ ริตซี)      มร.ริตซีเป็นนักคอมพิวเตอร์วิทยาศาสตร์ชาวอเมริกันผู้สร้างภาษาซี ซึ่งเป็นภาษาโปรแกรมที่นิยมมากในการเริ่มต้นเขียนโปรแกรม และถูกนำไปใช้ในการสั่งควบคุมอุปกรณ์ไมโครคอนโทรลเลอร์ เช่น บอร์ด arduino ซึ่งเป็นที่นิยมอย่างมากในปัจจุบัน นอกจากนี้ มร.ริตซีได้ร่วมพัฒนาระบบปฏิบัติการ Unix อีกด้วย รวมรางวัลที่เขาได้รับคือ 1. Turing Award จาก ACM 2. Hamming Medal จาก IEEE 3. National Medal of Technology จากประธานาธิบดีคลินตัน Charles Babbage (ชาร์ล แบบบิจ)      มร.แบบบิจเป็นนักคณิตศาสตร์ นักปรัชญา นักลงทุน และวิศวกรเครื่องกล ผู้ริเริ่มแนวคิดคอมพิวเตอร์ซึ่งโปรแกรมได้ เขาได้รับเลือกเป็นสมาชิกกิตมศักดิ์ชาวต่างชาติของสมาคมสิลปะและวิทยาศาสตร์แห่งอเมริกา American Academy of Arts and Sciences Alan Mathiso

โครงสร้างการเชื่อมต่อระหว่างWeb Browser Web Server และ API Server กับ ความหมายของ API

     เว็บเบราว์เซอร์ (Web Browser) คือ โปรแกรมที่ใช้สำหรับการแสดงผลการทำงานของเว็บที่สร้างด้วย ภาษาเฉพาะ เช่น HTML CSS หรือ Javascript เป็นต้น ผู้ใช้สามารถดูข้อมูลและโต้ตอบกับข้อมูลสารสนเทศที่ จัดเก็บในเว็บเพจเพื่อตอบสนองความต้องการของตนเองได้ ผู้ใช้งานต้องเชื่อมต่อไปยังเว็บเซิร์ฟเวอร์เพื่อร้องขอ เว็บไซต์มาแสดงผลยังเว็บเบราว์เซอร์ และ การร้องขอเว็บไซต์จากเว็บเซิร์ฟเวอร์จะติดต่อกันโดยใช้ HTTP โปร- โตคอล ตัวอย่างโปรแกรมเว็บเบราว์เซอร์เช่น Google Chrome, FireFox, Opera, Microsoft Edge เป็นต้น      เว็บเซิร์ฟเวอร์ (Web Server) คือ คอมพิวเตอร์ที่คอยให้บริการผู้ใช้งาน โดยจะเก็บรวมรวมไฟล์และ คำสั่งต่างๆ ที่มีนามสกุล เช่น .html, .css หรือ .js เป็นต้น ไฟล์ดังกล่าวจะถูกตอบสนองกลับไปแสดงผลที่เว็บ เบราว์เซอร์      API Server ทำหน้าที่ จัดการควบคุมการใช้งานข้อมูลของผู้ใช้งาน การควบคุมผู้ใช้งานในระดับที่แตก ต่างกัน เช่น ผู้ใช้งานทั่วไป กับ ผู้ใช้งานที่มีสิทธิเป็นผู้ดูแลระบบ มีสิทธิ์การเข้าถึงข้อมูลที่แตกต่างกัน กรณีที่ใช้ งานระบบร่วมกับผู้อื่น และ เป็นตัวกลางที่เชื่อมต่อระหว่างผู้ใช้งานกับข้อมูลท

รู้จักกับการออกแบบอินโฟกราฟิกส์ infographics design

      infographics คือการออกแบบโดยการใช้ภาพนิ่ง, ภาพเคลื่อนไหวหรือสัญลักษณ์แทนข้อความหรือข้อมูลต่างๆ ที่ต้องการจะสื่อความหมายถึงข้อความหรือข้อมูลนั้นโดยภาพนิ่ง, ภาพเคลื่อนไหวหรือสัญลักษณ์ที่ใช้แทนจะมีรูปแบบที่ผู้อ่านสามารถเข้าใจได้อย่างรวดเร็วและชัดเจน โดยไม่ต้องมีผู้นำเสนอมาช่วยขยายความอีก       infographics มาจากคำว่า information + graphics การนำเสนอข้อมูลแบบ infographics จะนำเสนอข้อมูลที่เข้าใจยาก ข้อมูลที่ตัวอักษรเยอะๆ ในรูปแบบสร้างสรรค์เข้าใจได้ง่าย เช่น ภาพ ลายเส้น แผนภูมิ แผนที่ ฯลฯ สามารถสื่อข้อมูลนั้นออกมาได้อย่างชัดเจน มีองค์ประกอบที่สำคัญ        ตัวอย่างการนำเสนอข้อมูลแบบ infographics http://www.alychidesigns.com/30-templates-and-vector-kits-to-design-your-own-infographic กระบวกการออกแบบดีไซน์ infographics โดย Hyperakt's Josh Smith  1. รวบรวมข้อมูล รวบรวมข้อมูลทุกอย่างเกี่ยวกับสิ่งที่จะนำเสนอโดยข้อมูลที่ดีควรเป็นข้อมูลดิบจากต้นฉบับและควรเก็บรวบรวมลิ้งค์ข้อมูลไว้ด้วย 2. การอ่านข้อมูลทั้งหมด การออกแบบอินโฟกราฟิกต้องมีทักษะในการจัดการข้อมูลและต้องแน่ใจว่าข้

รู้จักกับการออกแบบ User-Centered Design, User Experience Design & Usability

     ในหลายๆครั้งเรามักจะออกแบบโดยใช้ความรู้สึกส่วนตัวของเราโดยมักจะมุ่งไปที่ ทำอย่างไรให้ได้ตามผลลัพธ์ที่เราตั้งไว้ ต้องมีลูกเล่นที่ตื่นตาตื่นใจ ต้องมีเครื่องมือที่ทันสมัยต่าง ๆ ซึึ่งเราอาจจะละเลยสิ่งที่สำคัญที่สุดของระบบเรา นั่นก็คือ ผู้ใช้งาน      User Center Design ( UCD ) คือ กระบวนการที่จะออกแบบส่วนต่างๆของระบบ เช่น การออกแบบ UI ของหน้าเว็บไซต์ โดยมีมุมมองที่ว่า ทำอย่างไรให้ผู้ใช้สามารถ เข้าใจ และ ใช้ได้ในทันที นอกจากนี้เราสามารถออกแบบระบบให้ส่งเสริมความต้องการของผู้ใช้งานโดยดูจาก สิ่งที่เกี่ยวข้องกับงานของผู้ใช้งาน โดยกระบวนการดังกล่าวจะทำให้งานของเรามีประสิทธิภาพมากขึ้น และ เป็นมิตรกับผู้ใช้งานมากขึ้นทำให้ผู้ใช้งานอยากเข้ามาใช้งาน งานของเรามากยิ่งขึ้น      User Experience Design ( UXD ) คือ การศึกษาความต้องการของผู้ใช้งานในระบบ ทำให้ทราบว่าผู้ใช้งานต้องการอะไร ชอบแบบไหน โดยวิธีการต่างๆเช่น การสังเกตพฤติกรรมและการตอบสนองของผู้ใช้งานโดยต้องเกี่ยวข้องกับระบบที่เรากำลังออกแบบอยู่นั้นเอง การที่เราเข้าใจผู้ใช้งานนั้นจะช่วยให้เราสร้างส่วนที่ติดต่อกับผู้ใช้งานเพื่อให้ผู้ใช้งานพึงพอ