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.

Mongoid (Map/Reduce & Aggregations)

โดย แสงเดือน จันทร์ใหม่ – 1 มิถุนายน 2558 Mongoid Map/Reduce และ Mongoid Aggregations ถือเป็นหนึ่งในการ Query ข้อมูลของ Mongoid โดยสามารถอธิบายการทำงานได้ดังนี้ Mongoid Map/Reduce Map/Reduce ถือเป็นการ join ข้อมูลจากตารางข้อมูลในฐานข้อมูล แต่มีความยืดหยุ่นและการดำเนินการที่หลากหลายกว่า Map เป็นการ join ข้อมูลในฐานข้อมูลจากหลายๆ ตารางที่เก็บแยกกัน ให้กลายเป็นหนึ่งตารางที่มีปริมาณข้อมูลในแต่ละ record ประกอบด้วย field ข้อมูลจำนวนมากขึ้น ที่มีความสัมพันธ์กัน Reduce เป็นการนำผลลัพธ์จากการ Map มาคัดกรองให้เกิดเป็นผลลัพธ์ที่ตรงตามความต้องการมากขึ้น ทั้งนี้การ Reduce ของ Mongoid สามารถทำได้หลากหลายวิธี รวมทั้งการ Aggregate ด้วย Mongoid Map/Reduce มีพื้นฐานมาจาก Mongo Map/Reduce คือประกอบด้วยฟังก์ชั่น 2 ฟังก์ชั่น […]

Mongoid (Map/Reduce & Aggregations) Read More »

Prevent Hacking By Hardening

Chamnan Longlum 18 May 2015 Hardening คือการทำให้แข็งขึ้น ในระบบคอมพิวเตอร์จะหมายถึงการทำให้ระบบยากต่อการถูกแฮคมากขึ้น โดยจะบทความนี้จะเน้นไปที่ Linux เป็นหลักซึ่งวิธีการดังนี้ – ตั้งพาสเวิร์ด GRUB grub จะเป็นโปรแกรมสำหรับจัดการขั้นตอนการบู๊ทระบบในlinux (เช่นเดียวกับที่ windows มี MBR) grub ในLinux สามารถทำให้ผู้ไม่หวังดีสามารถเข้าถึง Single user mode เพื่อแก้configแต่ละอย่างกับตัวเครื่อง (เช่น reset root password)ได้ เพราะฉะนั้นการตั้งรหัสไม่ให้เข้าถึงgrubก็จะเป็นการปลอดภัยกับผู้ไม่หวังดีมากขึ้น – ใช้แพกเก็จให้เพียงพอกับที่ใช้ ไม่เปิดลงpackageที่ไม่ได้ใช้ และpackage ที่ไม่จำเป็นี่สุ่มเสี่ยงต่แการถูกแฮ็คเช่น smb (samba server) , cups , FTP (ควรใช้ scp  หรือ FTPS แทน) เพื่อลดช่องโหว่ที่จะถูกแฮ็คได้ฃ – Disable Ctrl+ Alt+ Delete

Prevent Hacking By Hardening Read More »

Bundler & Gem คู่พิฆาต Dependencies

Posted on May 14, 2015 By Anak Umpaivit Bundler คืออะไร?           Bundler คือ สิ่งที่ใช้ในการจัดการ Gem ที่ต้องการนำมาใช้กับ Ruby Application ที่เราพัฒนา โดยติดตามความเคลื่อนไหว และติดตั้ง Gem ต่างๆ ตามที่ตั้งค่าไว้ รวมถึงสามารถกำหนด Version ของ Gem ที่ต้องการได้ สามารถดูรายละเอียดเพิ่มเติมได้ที่ http://bundler.io/ Gem คืออะไร?           Gem ใน Ruby เปรียบเสมือน Plugin เสริมที่ช่วยในการพัฒนา Application แต่ใช้การตั้งชื่อเรียกให้เข้ากับชื่อ Ruby (Ruby: ทับทิม, Gem: อัญมณี) โดย Gem จะเป็นเหมือน Feature ที่ผู้ใช้งานสร้างขึ้น และบีบอัดเป็น Gem เพื่อใช้งาน

Bundler & Gem คู่พิฆาต Dependencies Read More »

“HAVEN” เทคโนโลยีปกป้องบ้าน

          HAVEN เทคโนโลยีปกป้องบ้าน… วุฒิไกร ลิ่มสกุล [17 พฤษภาคม 2558] นี่คือวิธีการในการรักษาความปลอดภัย ให้กับบ้านของคุณ โดยเทคโนโลยีที่ชื่อว่าโดยที่ HAVEN จะถูกติดไว้กับพื้น และกรอบประตู เมื่อคุณเปิดประตู มันสามารถปลดล็อคส่วนที่ติดแน่นอยู่กับพื้น และคุณสามารถเปิดประตูได้อย่างปกติ โดยไม่จำเป็นต้องใช้กลอนประตู หรือกุแจในการล็อคประตูและปลดล็อคประตู HAVEN ถูกสร้างโดย Alex Bertelli อดีตนายทหารเก่าที่ผันตัวมาเป็นนักพัฒนาธุรกิจส่งออกในรัฐ Tennessee และเป็นผู้ประกอบการ serial entrepreneur Clay Banks โดยได้พัฒนาระบบ ที่ใช้โทรศัพท์มือถือ หรือ Key fob ในการเปิด และปิดประตู HAVEN ถูกผลิตขึ้น ในประเทศสหรัฐอเมริกา และมี glass-filled nylon polymer, เหล็ก และอลูมิเนียม เป็นส่วนประกอบ พวกเขา วางแผนที่จะประกอบ HAVEN ขึ้นในรัฐ Tennessee และถือหุ้นบริษัท Kickstarter ซึ่งสำนักงานใหญ่ของบริษัท ตั้งอยู่ในเมือง Nashville คุณสามารถหาข้อมูลเพิ่มเติมได้ที่ havenlock.com ที่มา: techcrunch.com

“HAVEN” เทคโนโลยีปกป้องบ้าน Read More »

การใช้ Bower ควบคู่กับ Rails

Posted on May 18, 2015 By Karun Siritheerathamrong เพราะ Rails 4 เป็นสุดยอด Web Framework ที่มีพลังเยอะมหาศาล.. จนบางครั้งการทำอะไรๆ ด้วย Rails มันช่างง่ายดายเสียเหลือเกิน เช่นการติดตั้งเว็บไลบรารีต่างๆ โดยการบอกว่าจะใช้ไลบรารีอะไรใน Gemfile แล้วก็เรียกใช้งานผ่าน Asset Pipeline ได้เลย ตัวอย่าง: การใช้ AngularJS กับ Rails ด้วย gem ชื่อ ‘angularjs-rails’ – ที่นี่ ที่เป็นเช่นนี้ได้ เพราะนักพัฒนาหลายๆ คนช่วยกันสร้าง gem ที่บรรจุไลบรารีต่างๆ ไว้ แล้วก็อัพโหลดให้เราได้ใช้ แล้วถ้าไลบรารีเหล่านั้นมีการอัพเดต (ซึ่งถี่ยิบๆๆๆ มาก) แล้ว gem ต่างๆ ที่บรรจุไลบรารีที่ใช้งานอยู่ ยังไม่อัพเดตเวอร์ชั่นตามไปล่ะ? ปัญหาจะเริ่มตามมาทันที Bower —

การใช้ Bower ควบคู่กับ Rails Read More »

ทำไมเราถึงต้องใช้ TDD ?

ณัฐธิดา  หมวดเพ็ชร [17 พฤษภาคม 2558]   TDD คืออะไร? TDD ย่อมากจาก Test Driven Development คือ รูปแบบการพัฒนาซอฟต์แวร์ที่ช่วยลดความเสี่ยงของความผิดพลาด ทำให้ Code มีประสิทธิภาพมากขึ้น อีกทั้งยังเป็นการลดการเกิด Bug อีกด้วย   ในการทำ TDD มีขั้นตอนอะไรบ้าง? การสร้าง Test >> ในขั้นตอนการสร้าง Test นี้ อย่างแรกต้องทราบว่า Project นั้นทำอะไรได้บ้าง แล้วจึงสร้าง Test เพื่อเป็นการตรวจสอบว่าทำงานได้ถูกต้องหรือเปล่า Run test ที่สร้าง >> นำ Test ที่สร้างไว้จากขั้นตอนที่แล้วมา Run ซึ่งผลลัพธ์ที่ออกมาควรจะไม่ผ่าน เพราะยังไม่ได้เริ่มเขียน Code จริง การเขียน Code >> เป็นขั้นตอนการเขียน Code จริงของ Project นั้น Run Test

ทำไมเราถึงต้องใช้ TDD ? Read More »

วิธีติดตั้ง Ruby และ Rails อย่างง่ายด้วย RVM

Posted on April 30, 2015 By Karun Siritheerathamrong สำหรับใครที่อยากจะเริ่มต้นศึกษาการพัฒนาแอพพลิเคชันด้วย Ruby หรือ Rails คงจะปวดหัวกันไม่น้อย เนื่องจากขั้นตอนในการติดตั้งและเตรียมเครื่องมือในการพัฒนานั้นเยอะเสียเหลือเกิน แถมวิธีในการเตรียมเครื่องมือในแต่ละระบบปฏิบัติการก็ไม่เหมือนกันอีก จนบางครั้งทำเอาบางคนเปลี่ยนใจ ไม่คิดจะลองอีกเลย ก็มี ด้วยปัญหาที่ได้กล่าวถึงไปแล้วในตอนแรก เลยรวบรวมขั้นตอนการติดตั้ง Ruby และ Rails อย่างง่าย แบบ Step by step ด้วยเครื่องมือที่ชื่อว่า RVM ซะเลย RVM เป็นเครื่องมือสำหรับติดตั้งและจัดการเวอร์ชันของ Ruby และ Gemset ที่สามารถจัดการ Ruby และ Gemset ได้หลายเวอร์ชันในเครื่องเดียวกัน โพสต์นี้จะอธิบายขั้นตอนเฉพาะบน Ubuntu และ Mac OS X เท่านั้น ที่ไม่อธิบายขั้นตอนบน Microsoft Windows เพราะว่า ระบบปฏิบัติการดังกล่าว มีเครื่องมือติดตั้งให้อยู่แล้ว สามารถดาวน์โหลดได้

วิธีติดตั้ง Ruby และ Rails อย่างง่ายด้วย RVM Read More »

การบริหารความเสี่ยงของระบบเทคโนโลยีสารสนเทศ

Chamnan Longlum 30 April 2015 การบริหารความเสี่ยงของระบบเทคโนโลยีสารสนเทศ วัตถุประสงคนี้คือการหาขอมูลหรือคุณลักษณะของระบบในดานความปลอดภัยของข้อมูล ไม่ว่าจะเป็นเครื่องแม่ข่าย(Server) หรืออุปกรณ์เน็ตเวิร์ค โดยผลลัพธที่ไดคือปญหาความปลอดภัยในระบบและแนวทางในการแกไขปญหาตางๆ โดยจะแบ่งเป็นสองส่วนหลักๆคือ Penetration Testing และ  Vulnerability risk assessment Penetration Testing  คือการทดสอบเจาะระบบโดยแฮคเกอร์ ซึ่งการทำpenetration testing (เรียกย่อๆว่า Pentest) จะเป็นการเจาะระบบที่ผู้ผลิตยังไม่เจอช่องโหว่นี้มาก่อนและยังไม่เผยแพร่สู่สาธารณะ โดยในส่วนของการpentestนั้นจะแบ่งได้สองแบบคือ – Extenal Network Penetration Test  หรือ บางทีจะเรียกว่า Black Box Penetration คือการที่แฮคเกอร์จะทำตัวเสมือนผู้บุก โดยจะทำการเจาะระบบผ่านระบบอินเตอร์เน็ต โดยแฮกเกอร์จะรู้แค่ URL หรือ IP ของเป้าหมายเท่านั้น ขอเสียของการทํา Extenal Network Penetration Test คือการเจาะระบบจากภายนอก อาจไมสามารถเจาะเขาระบบได เพราะขอมูลมีนอย หรือผูทดสอบระบบมีความสามารถไมมากพอ และผลลัพธที่ไดไมไดบงบอกวาระบบยอยตางๆ ที่ทํางานรวมกันในระบบทดสอบ มีชองโหวมากนอยเพียงใด –

การบริหารความเสี่ยงของระบบเทคโนโลยีสารสนเทศ Read More »

Self-organizing team

Arthit Hongchintakul 30 April 2015 If anyone asks what I am most proud about my company, it is the people. We have a happy culture that is mature and professional, despite their young age. In March, I had the opportunity to travel abroad for a month. Quite a few people that knew of my trip,

Self-organizing team Read More »