Review แอพสอนเขียนโปรแกรม .. ลองแล้วจะติดใจ

ถ้า (if) ต้องการเรียนรู้การเขียนโปรแกรม และมี Smartphone อยู่ในอุ้งมือ
และมีเวลานั่งเฉย ๆ ระหว่างรอรถเมย์ รอดูหนัง รอเพื่อนทานข้าว รอเข้างาน รอเรียน
รอลูกเรียนพิเศษ รอแฟนเลิกงาน รอแฟนเข้าร้านเสริมสวย
แล้วอยากหาอะไรอ่าน .. “อ่าน

programming language
programming language

ในสายคอมพิวเตอร์ทั้ง นักศึกษา หรือคนทำงาน
ก็คง “สนใจเรื่องการเขียนโปรแกรมไม่มากก็น้อย
คนใน play store พบแอพพลิเคชั่นเพียบเลย ที่สอนเขียนโปรแกรมต่าง ๆ
แต่มี app หนึ่งที่สอนหลายภาษา และในหลายรูปแบบ
แล้วเค้าก็พัฒนาต่อเนื่อง ปรับทั้งแอพ และเนื้อหาตลอด
คือ Programming Hub ดาวน์โหลดที่ http://www.programminghub.io
ผมนั่งอ่านดูก็สนุกดี
ถ้าเทียบเนื้อหาระหว่าง version บน smartphone กับ web
จะพบว่าบน smartphone ดีกว่าเยอะ ลองแล้วจะติดใจ .. เหมือนผม

programminghub แอพพลิเคชั่นที่สอนเขียนโปรแกรม
programminghub แอพพลิเคชั่นที่สอนเขียนโปรแกรม

Programming hub คือ แอพพลิเคชั่นที่สอนเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ ที่มีทั้งบนแอนดรอย (Android) และไอโอเอส (iOS) และสามารถเรียนผ่านเว็บไซต์ (Learn on Web) ได้ที่ programminghub.io โดยแบ่งเนื้อหาเป็นตัวอย่างโค้ด (Program) และเนื้อหาอ้างอิง (Reference) สำหรับแอพพลิเคชั่นบนสมาร์ทโฟนจะมีบางภาษาที่สามารถทำการทดสอบเขียนโค้ด และประมวลผลได้ทันที (Playground) ปัจจุบันมีภาษาโปรแกรมให้ศึกษา ดังนี้ Python, Assembly, HTML, VB.NET, C, C++, C# (C Sharp), JavaScript, PHP, Ruby, R Programming, CSS, Java programming เป็นต้น

c language
c language

เรื่องราวของช่องว่าง (space)

ปัญหาช่องไฟในข้อมูล แบบ text
ปัญหาช่องไฟในข้อมูล แบบ text

พอทราบมาว่า มีหน่วยงานราชการบางแห่ง
มอบหมายให้หน่วยงานที่ขึ้นตรง
กรอกข้อมูลใน excel แล้วจัดเก็บเป็น xls หรือ csv
ส่งให้หน่วยต้นสังกัด หรือหน่วยเหนือนำข้อมูลไปรวมกัน
ซึ่งผมก็ใช้เหมือนกัน เพราะง่ายกับผู้ใช้
แต่วันนี้ นำข้อมูลมาใช้ แล้วพบปัญหาในแฟ้ม regist.csv
ดังภาพ เมื่อนำตารางนี้ไปใช้
พบว่าวิชา 000 250 ตอน 1 ไม่มีปัญหา เชื่อมข้อมูลได้ถูกต้อง
แต่วิชา 000 250 ตอน 2 มีปัญหา เชื่อมไม่สำเร็จ
เพราะตอนพิมพ์รหัสวิชา ตอน 2 มีช่องไฟต่อท้ายรหัสวิชา
ที่ถูกคือ “000 250” แต่ไปพิมพ์ “000 250 “
สรุปว่าไปลบช่องไฟที่ต่อท้ายเลข 250 ในตอนที่ 2
ก็จะทำให้ข้อมูลเชื่อมโยงกันได้ปกติ

ทดสอบ chart ของ google พบว่าแสดงภาษาไทยได้ปกติ

ทดสอบ google chart ผ่าน code playground
พบว่า chart ของ google สามารถแสดงภาษาไทยได้ปกติ
แต่ต้องแก้ไขแฟ้มให้เป็นแบบ UTF-8
google chart
google chart
วิธีแรก โดยการคัดลอก code ของเขามาวางในเครื่องของเราตรง desktop
แล้วเรียกใช้แฟ้มผ่าน folder ปกติ ไม่ได้ผ่าน web server
เพราะ code เป็น javascript ที่เรียกภาพโดยตรงจาก google server
วิธีที่สอง ทดสอบบน editplus แล้ว View in Browser
สิ่งที่ต้องแก้ไขในทั้ง 2 วิธีคือ กำหนด Encoding ของ document
เป็น UTF-8 ก็จะแสดงภาษาไทยได้ ดังภาพ
เปรียบเทียบขนาดของแฟ้ม
ที่ save ต่างรูปแบบ พบว่าไม่ต่างกันนัก
– แฟ้มแบบ UTF-8 ใช้เนื้อที่ 1564 Bytes
– แฟ้มแบบ Plain Text ใช้เนื้อที่ 1493 Bytes

ระบบรับข้อมูลหนึ่ง ถูก แ+ฮ+ก ด้วย script

process of solution
process of solution

วันนี้ได้รับแจ้งว่าระบบเก่า ถูก post h-a-c-k_e-d
จึงเข้าไปแกะ script แบบค่อย ๆ ไล่ไปทีละแฟ้ม
เพราะเขียนไว้นาน และหลายคน จำอะไรไม่ได้เลย

1. ดู source ซึ่งเป็นผลลัพธ์ พบว่า
script ไม่ได้เสียหาย แต่มีการ post script เข้ามาเป็นข้อมูล

2. ในข้อมูลมี script จริง แสดงว่าไม่มีการ convert ข้อมูลก่อน insert

3. เข้าไปดูระบบรับข้อมูลพบว่าติด captcha แต่เป็น plain text แบบง่าย
แสดงว่า script ที่เข้ามาในระบบเป็นขั้นเทพ ถึงแกะ captcha ออกได้

4. เพิ่มการป้องกันใน form รับข้อมูล
โดยกำหนดเงื่อนไขว่า form ต้องถูกเรียกจาก script ที่กำหนด
ถ้าเรียกจากที่ไหน ๆ ก็จะไม่เปิดฟอร์ม

5. อันที่จริงควรเปลี่ยนข้อมูลด้วย stripslashes เข้าฐานข้อมูล
เพื่อล้าง script แต่นั่นเป็นการแก้ปลายเหตุ
จึงแก้ต้นเหตุ คือ ไม่ให้ข้อมูลเข้า จากขั้นตอนที่ 4
หรือเพิ่มการตรวจสอบก่อน insert ซึ่งมีอีกหลายวิธี

การทำให้โค้ดมีประสิทธิภาพ

optimization
optimization

Code Optimization คือ การทำให้โค้ดมีประสิทธิภาพ ทั้งลดเวลาในการประมวลผล (Time to Execute) การใช้ทรัพยากร (Resource Using) และการนำกลับมาแก้ไขได้ง่าย (Easy to Update) ซึ่งตัวอย่างต่อไปนี้เน้นที่การเปรียบเทียบการเขียนโค้ด (Source Code) แบบก่อนปรับกระบวนการ และหลังปรับกระบวนการของโค้ด

อาจใช้วิธีการเขียนแบบโมดูลหรือฟังก์ชัน ใช้สมการทางคณิตศาสตร์แทน การเลือกใช้คำสั่งที่สั้นกว่า หรือการใช้อัลกอริทึมที่เหมาะสม ซึ่งภาษาที่ใช้นำเสนอ คือ Javascript และเกี่ยวข้องกับ 2 เว็บเพจ ได้แก่ programming และ javascript

ในด้านวิทยาการคอมพิวเตอร์

คำว่า program optimization หรือ software optimization หมายถึง กระบวนการปรับปรุงแก้ไขระบบซอฟท์แวร์หนึ่ง ในบางแง่มุมของงานด้านเทคโนโลยีสารสนเทศให้ทำงานได้อย่างมีประสิทธิภาพ หรือใช้ทรัพยากรน้อยกว่าเดิม
ความหมายโดยทั่วไปของ Optimization : โปรแกรมคอมพิวเตอร์ ที่อาจถูกทำให้มีประสิทธิภาพเพิ่มขึ้น เพื่อนำมาประมวลผล หรือสามารถดำเนินการ โดยใช้หน่วยความจำลดลง ใช้ทรัพยากรน้อยลง หรือลดการใช้พลังงาน

http://en.wikipedia.org/wiki/Program_optimization
http://www.thaiall.com/optimization/