Blog

Swiftlet provides knowledge in software development and practice in Thai to open more opportunities for Thai developers and others to improve their skills in Thai context.

Design Patterns

Design Pattern : Introduction Ep 2

Design Pattern : Introduction Ep 2 การปรับปรุงให้ดียิ่งขึ้น: รูปแบบการแก้ไขปัญหาที่ถูกค้นพบในอดีตนั้น อาจไม่ครอบคลุมปัญหาใหม่ๆในปัจจุบัน ทำให้เกิดการถกเถียงปรับปรุงและประยุกต์รูปแบบวิธีแก้ปัญหา เพื่อให้ได้วิธีการที่ดีที่สุด (Best Practical) ตัวอย่างต่อจากตอนที่แล้ว https://swiftlet.co.th/design-pattern-introduction-ep1 คัมภีร์การปลอกกล้วยของปราชญ์แว่นนั้น ถูกใช้อย่างแพร่หลาย แต่เมื่อ ความต้องการไม่มีที่สิ้นสุด  เมื่อนาย A ต้องการปลอกกล้วยให้เร็วกว่าเดิมยิ่งขึ้น และ นาย B ต้องการปลอกกล้วยให้ละเอียดสวยงาม วิธีการของปราชญ์แว่นนั้นจึงไม่ครอบคลุมความต้องการ ของนาย A และ นาย B ได้ นาย B และ นาย C จึงหารูปแบบวิธีการแก้ไขของปัญหาที่ตัวเองเจอ เมื่อทั้งคู่ค้นพบ รูปแบบการแก้ไขปัญหาได้แล้วนั้น จึงนำเสนอไปให้ ปราญช์แว่น เพื่อนำไป ประยุกต์สู่รูปแบบการปัญหาที่ดีและครอบคลุมยิ่งขึ้น เป็นต้น

Design Pattern : Introduction Ep 2 Read More »

Ruby Arithmetic Operators and Comparison Operators

Ruby Arithmetic Operators กำหนดให้  a = 10 เเละ  b = 20 Operator Description Example + การนำจำนวน 2 จำนวนมาบวกกัน a + b = 30 – การนำจำนวน 2 จำนวนมาลบกัน a – b = -10 / การนำจำนวน 2 จำนวนมาหารกัน b / a = 2 * การนำจำนวน 2 จำนวนมาคูณกัน a * b = 200 % การหารเอาเศษ b % a

Ruby Arithmetic Operators and Comparison Operators Read More »

Design Patterns

Design Patterns : Introduction EP1

Design Patterns : Introduction คือ รูปแบบการแก้ไขปัญหา ที่นักพัฒนาได้ทำการถกเถียงเพื่อหารูปแบบการแก้ปัญหานั้นๆ ที่ดีที่สุด ซึ่งเกิดจาก การพัฒนาซอฟต์แวร์เป็นทีม ทำให้มีปัญหาเรื่องของการสื่อสารของการเขียนโค้ด ที่ไม่มีมาตรฐานเดียวกัน และมักพบปัญหาคล้ายๆกัน ทำให้มีกระบวนที่จะแก้ไขความซับซ้อนของโค้ดให้ดูง่ายและแก้ไขได้ง่ายยิ่งขึ้น เช่น นาย แว่น  ได้พบปัญหา การปลอกกล้วย แต่ค้นพบวิธีการแก้ไขรูปแบบปัญหา การปลอกกล้วย ได้แล้ว ต่อมา นาย ฟ้า พบรูปแบบปัญหา การปลอกกล้วย และ นาย แดง พบรูปแบบปัญหา การปลอกกล้วย แน่นอน เราจะเห็นว่า นาย ฟ้า และ แดง ทั้งคู่ต่างพบปัญหาเดียวกัน ในขณะที่ทั้งคู่กำลังปวดหัวกับการปลอกกล้วยอยู่นั้น นาย แว่น ผู้ซึ่งเป็นปราชญ์ด้านการปลอกกล้วย มาเห็นทั้งคู่เข้า  จึงมอบคัมภีร์การปลอกกล้วย ให้ทั้ง 2 คน และทั้งสองคนก็ได้อ่านคัมภีร์การปลอกกล้วย และปลอกกล้วยได้สำเร็จลุล่วง เป็นต้น

Design Patterns : Introduction EP1 Read More »

HTML5 แตกต่างจาก HTML4 อย่างไร ?

HTML5 แตกต่างจาก HTML4 ? เว็บที่เราเห็นกันทุกวันนี้แสดงผลให้เราเห็นได้ด้วย HTML โดย HTML 4 นั้นออกมาตั้งแต่ปี คศ. 1999 ซึ่งเมื่อเวลาผ่านไปความต้องการของผู้ใช้งานก็เปลี่ยนไปด้วย โดยในปัจจุบันมีการใช้สื่อ Multimedia ต่างๆ มากขึ้น จึงมีการปรับสเป็คของ HTML ให้สามารถใช้งานกับสื่อ Multimedia ได้ด้วยตัวเองโดยไม่ต้องพึ่งพา Flash หรือ Media player ต่างๆ จึกเกิดเป็น HTML 5 ที่รองรับ Tag Audio และ Video รวมทั้งมีการเพิ่มแท็กที่ใช้ในการสื่อความหมายของโครงสร้าง (Semantic) โดนเมื่อก่อนเราจะใช้ <div> แทนทุกๆที่และใส่ class หรือ id ในการบ่งบอกแทน สิ่งที่มีขึ้นมาใหม่ใน HTML5 Semantic Element คือแท็กที่ให้ความหมายกับโครงสร้างของ HTML เช่น <header>, <article> , <section>

HTML5 แตกต่างจาก HTML4 อย่างไร ? Read More »

วิธีติดตั้งและการใช้งาน robomongo ใน ubuntu

วิธีติดตั้ง เข้า ubuntu software center ค้นหา robomongo เลือก Install เมื่อติดตั้งเสร็จจะได้ robomongo แบบในรูป  วิธีการใช้งาน เมื่อเข้ามาครั้งแรก ให้ create connection โดยตั้งค่าตามในรูป   เมื่อตั้งค่าตามรูปเสร็จแล้วให้กดปุ่ม Test เพื่อทดสอบว่าสามารถ connect ได้หรือไม่ ถ้าได้กด save และ connect กับ mongo ได้เลย เมื่อ connect เข้ามาในฐานข้อมูลแล้วเราจะเห็นชื่อ databaseและ collection ในฐานข้อมูล ตามในรูป ถ้าเราต้องการค้นหาข้อมูลใน collection ทำได้โดยใช้คำสั่ง ตัวอย่าง เช่น db.getCollection(‘users’).find(ObjectId(“57b2eeaf73776952ca000000”)) (ค้นหาจาก ID ของ record)

วิธีติดตั้งและการใช้งาน robomongo ใน ubuntu Read More »

ไวรัสในเครื่องท่านได้แต่ใดมา?

หลายๆคนอาจจะเคยได้ยินได้ฟังมาว่า เครื่องมีไวรัส!  บางคนก็อาจจะได้มีประสบการณ์ด้วยตัวเองมาแล้ว แต่จริงๆแล้วสิ่งนั้นเรียกรวมๆว่า malware (Malicious Software)  ซึ่งหมายถึงซอร์ฟแวร์ที่ประสงค์ร้ายต่างๆ ซึ่งไวรัสก็เป็นหนึ่งในนั้นเช่นกัน แต่!!! จริงๆแล้วที่เราเห็นมี popup เปิดขึ้นมา หรือ เปิด brower แล้วมีแถบโฆษณานั้น ไม่ใช่ไวรัสนะ  แต่คืออะไร มากจากใหน  เราจะได้รู้กันต่อไป  ซึ่งก่อนที่จะไปถึงจุดนั้น  เรามารู้ก่อนว่า malware แต่ละแบบใหนมีอะไรบ้าง ต่างกันอย่างไร และจะป้องกันได้อย่างไร ประเภทของ Malware –  ไวรัส(virus) เป็นชื่อที่เราคุ้นเคยกันดี ไวรัสเป็นโปรแกรมที่ไม่หวังดีชนิดหนึ่ง สามารถแพร่ไปกับไฟล์ ไปยังอีกเครื่องหนึ่งได้ โดยจะต้องอาศัยไฟล์ที่เป็นพาหะ ซึ่งผลของไวรัสขึ้นอยู่กับผู้ที่เขียนไวรัสว่าจะให้ทำสิ่งใด ไม่ว่าจะเป็นการ ขโมยข้อมูล ทำลายข้อมูล หรือกระทั่งทำลายเครื่องให้ไม่สามารถทำงานได้เลย  ซึ่งclassic virus นั้นในปัจจุบันแทบไม่เจอตัวใหม่ๆแล้ว วิธีการป้องกัน : ติดตั้ง Anti-virus –   แอดแวร์หรือสปายแวร์(Adware / Spyware) เน้นๆกับหัวข้อนี้เลย!!! แอดแวร์เป็นมัลแวร์ประเภทหนึ่งที่อาจจะไม่คุ้นหูมาก แต่จริงๆแล้วผู้คนส่วนมากมักโดนและคิดว่าเป็นไวรัส แอดแวร์ไม่ได้ทำให้เครื่องใช้งานไม่ได้

ไวรัสในเครื่องท่านได้แต่ใดมา? Read More »

Block connection บน UBUNTU

Block connection จากที่ไม่พึงประสงค์ได้ง่ายๆ บน UBUNTU

Block connection บน UBUNTU ในserver ทั่วๆๆไปนั้นจะมีการเปิดใช้ Firewall อยู่แล้ว สำหรับFirewallนั้นสามารถconfigได้มากมาย จะblockแบบใหนอย่างไร ซึ่งจะเหมาะกับผู้ดูแลที่มีความเชียวชาญระดับหนึ่ง  แต่หากต้องการblockโดยไม่พึ่งfirewall ก็สามารถทำได้โดยที่ใน ubuntu จะมีไฟล์อยู่สองไฟล์ที่สำคัญคือ /etc/hosts.allow สำหรับไฟล์นี่จะเก็บข้อมูลที่ต้องการจะบอกว่า อนุญาติให้ application ใด connect ได้บ้าง และ /etc/host.deny สำหรับ Drop connection จาก client ที่เราไม่ต้องการ ทีนี่เรามาดูตัวอย่างกันครับ จาก log ใน auth.log ของ ubuntu พบว่ามีเครื่องจาก จีน IP=125.88.177.87 กำลังทำการ brute-force secure shell ด้วย root user [code language=”shell”]Feb 15 03:53:06 platinum sshd[2400]: Received disconnect from

Block connection จากที่ไม่พึงประสงค์ได้ง่ายๆ บน UBUNTU Read More »

ขั้นตอนการตั้งค่า Dynamic DNS และการ Forward Port บนอุปกรณ์ router

ขั้นตอนการตั้งค่า Dynamic DNS บน Router เนื่องจาก Internet Router ตามบ้านมีการเปลี่ยนแปลง IP ทุกครั้งที่ทำการต่อ internet แต่ละครั้ง การที่จะทำให้ Internet Router ที่ใช้งานตามบ้านสามารถรอรับการ remote จากที่ใดๆในโลกได้นั้น จะต้องใช้บริการที่เรียกว่า Dynamic DNS เพื่อให้รออัพเดทค่า IP ที่เปลี่ยนแต่ละครั้ง ซึ่งวิธีการตั้งค่านั้นมีวิธีการดังนี้ Login เข้าไปที่ router ที่ใช้อยู่ ถ้าไม่ได้เปลี่ยน ค่า IP ของ router โดยส่วนมากจะเป็น 192.168.0.1 หรือ 192.168.1.1 หรือ .254 (แล้วแต่รุ่น ดูที่คู่มือประกอบการตั้งค่า) หาเมนู DDNS (โดยส่วนมากชื่อเมนูจะประมาณนี้  เช่นเดิม กรุณาดูคู่มือประกอบการตั้งค่า) ตัวอย่าง เป็นการตั้งค่า DDNS โดยมีProvider เป็น Dyndns.org เลือก

ขั้นตอนการตั้งค่า Dynamic DNS และการ Forward Port บนอุปกรณ์ router Read More »

gem liquid ruby on rails

วิธีการติดตั้งและใช้ gem liquid ruby on rails

ขั้นตอนการติดตั้ง gem liquid ขั้นตอนที่ 1 ใส่ gem ‘liquid-rails’ บน Project ขั้นตอนที่ 2  $ bundle ขั้นตอนที่ 3 $ gem install liquid-rails เมื่อติดตั้ง 3 ขั้นตอนดังกล่าวเสร็จแล้ว เราจะได้โปรเจคที่มี gem liquid ตัวอย่างไฟล์ index.liquid  <ul id=”products”> {% for product in products %} << เป็นแท็กของ liquid ในการ Start loop {% %} <li> <h2>{{ product.name }}</h2> << เป็นแท็กของ liquid ในการโชว์ข้อมูล {{ }} Only {{ product.price

วิธีการติดตั้งและใช้ gem liquid ruby on rails Read More »

วิธีแก้ปัญหา login ใช้งาน Ubuntu แล้วไม่โหลดหน้า launcher (Unity)

เคยหรือไม่  login เข้า user บาง user แล้วไม่โหลด หน้าต่างให้ใช้งานอะไรเลย มีแต่blackground แต่ user อื่นๆใช้งานได้ปกติ วิธีแก้ปัญหาทำได้โดย [code language=”shell”]sudo service lightdm stop[/code] หากใช้งาน หน้า UI อยู่ ระบบจะตัดเข้า shell command [code language=”shell”]sudo rm -rf /home/user-prob/.config/dconf/user[/code] แทน user-prob ด้วย user ที่มีปัญหา [code language=”shell”]sudo service lightdm start[/code] ระบบจะตัดเข้า หน้า UI แค่นี้จะสามารถ login ใช้งานได้เหมือนเดิมแล้ว เพียงแต่ config ต่างๆ (เช่น shortcut key สำหรับเปลี่ยน ภาษา ,

วิธีแก้ปัญหา login ใช้งาน Ubuntu แล้วไม่โหลดหน้า launcher (Unity) Read More »