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.

คำสั่งพื้นฐาน RubyOnRails && Mongoid

การประกาศตัวแปรชนิดต่างๆ a = []  #เป็นการประกาศตัวแปรชนิด Array b = {} #เป็นการประกาศตัวแปรชนิด Hash c = BigDecimal.new(‘0’)  #เป็นการประกาศตัวแปรชนิด BigDecimal d = true  #เป็นการประกาศตัวแปรชนิด Boolean d = 1  #เป็นการประกาศตัวแปรชนิด Integer e = 1.0  #เป็นการประกาศตัวแปรชนิด Float f = ” ”  #เป็นการประกาศตัวแปรชนิด String   คำสั่งเกี่ยวกับ Loop Array Array.each #คำสั่ง loop array โดยไม่ return ค่าอะไร Array.map #คำสั่ง loop array โดยจะ return ค่าเป็น array ที่เรา […]

คำสั่งพื้นฐาน RubyOnRails && Mongoid Read More »

Ruby Assignment Operators and Logical Operators

Ruby Arithmetic Operators กำหนดให้ a = 10 เเละ b = 20 Operator Description Example += การนำจำนวน 2 จำนวนมาบวกกัน เเละ นำค่าที่บวกมากำหนดค่าให้ตัวเเปลเดิมที่ใช้ c += a มีความหมายเหมือนกัน c = c + a -= การนำจำนวน 2 จำนวนมาลบกัน เเละ นำค่าที่ลบมากำหนดค่าให้ตัวเเปลเดิมที่ใช้ c -= a มีความหมายเหมือนกัน c = c – a *= การนำจำนวน 2 จำนวนมาคูณกัน เเละ นำค่าที่คูณมากำหนดค่าให้ตัวเเปลเดิมที่ใช้ c *= a มีความหมายเหมือนกัน c

Ruby Assignment Operators and Logical Operators Read More »

Lambda บน Ruby และ Capybara

เจ้าอาจจะเคยได้ยินเกี่ยวกับ Lambda มา หรือเจ้าอาจจะเคยสัมผัสแล้ว ในภาษาอื่น นอกจากชื่อประหลาดนี่แล้ว Lambda ก็เป็นแค่ Function… ที่ไร้ชื่อ …นิรนาม Function นี้ แทรกซึม คลืบคลานไปทั่ว Code ทั้งหมด Lambda ใน Ruby ก็เป็น Object เช่นกัน ก็เหมือนกับสิ่งอื่นๆ ทั้งหมดนั่นแหละ สุดท้ายแล้ว Lambda ก็จะ Return ค่า เหมือนกับ Function ทั่วไป ฟังดูน่าเบื่อ แต่มันจะมอบพลังให้มากมายมหาศาล… Blog นี้จะพูดถึงการใช้งาน Lambda ในฐานะ QA ที่เขียน Automated Testing ด้วย Rspec, Capybara บน Ruby ซึ่งปกติแล้ว ในการเขียน Feature Spec เราก็ต้องคิดก่อน คล้ายกับเราไปนั่งกด Test

Lambda บน Ruby และ Capybara Read More »

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 »