Tag Archives: programming

แค่อยากจะบอก

ว่า Windows 7 มันขาดไฟล์ MSVCP71.DLL ไปทำให้รัน App Launcher ไม่ขึ้น ส่วนรูปนั้น ดังคำ @ploysics ว่าไว้ เกี่ยว.. ไหม… ไม่เลย

Address Space Layout Randomization

วันนี้เจอเรื่องประหลาดที่ไม่ค่อยได้เจอเยอะ เอามาจดเอาไว้ ปัญหาสำคัญในเรื่องของความปลอดภัยของซอฟต์แวร์คือเวลาที่โปรแกรมเมอร์ทำงานพลาด แล้วปล่อยให้แฮกเกอร์เอาโค้ดอื่นๆ มารันในซอฟต์แวร์ตัวเองได้ เช่นบั๊ก Buffer Overflow แฮกเกอร์มักหาทางไปต่อด้วยการหาคำสั่งอื่นๆ โดยเฉพาะพวก System Call ที่สร้างความเสียหายให้กับระบบ หรือเปิดช่องโหว่อื่นๆ ขึ้นมาเรื่อยๆ ง่ายๆ เช่นการสั่ง system() นั้นหมายความว่าแฮกเกอร์จะทำอะไรก็ได้เท่าที่ user ที่รันโปรแกรมนั้นทำได้ ตาม Murphy’s Law แล้ว โปรแกรมที่มีบั๊กนั้นมักจะรันใน root เสมอ ในดอสนั้นปัญหาอย่างนี้เกิดง่ายมาก เพราะว่าตำแหน่งของ System Call ต่างๆ นั้นตายตัว ถ้าอ่านคู่มือของ OS มาเยอะๆ ก็จะรู้ทันทีว่าควร Jump ไปยัง Address ไหนเพื่อเรียก System Call อะไร เรียกว่าเจาะเข้า process ได้ปุ๊บก็เรียบร้อยกันไปเลย แล้วอย่างนั้นจะทำยังไงดี ตอบแบบกำปั้นทุบดินก็คงเป็นว่าไปบอกโปรแกรมเมอร์ให้เขียนโปรแกรมไม่มีบั๊ก เหมือนบอกว่านักการเมืองไม่โกงเมื่อใหร่แล้วบ้านเมืองจะดีเอง ในทางวิศวกรรมมันมีทางออกที่มีปัญญามากกว่านั้น คือการลดความเสียหายเมื่อแฮกเกอร์เจาะเข้ามาในตัว process ได้แล้วนั้น […]

Egos

most programmers are unable to separate their fragile egos from the code they write iBanjo

jinja

ส่วนหนึ่งที่ชอบมากใน django คือส่วน template engine ของมัน แม้จะไม่ค่อยชอบที่มันคล้ายๆ python แต่ดันต่างกันนิดหน่อยให้งงเล่นๆ แต่โดยทั่วไปแล้วต้องยอมรับว่า template ของ django มันใช้งานได้จริง ปัญหาในช่วงหลังมานี้พอดีว่ามีเรื่องต้องทำ code generation เยอะ ด้วยความที่ต้องเขียนสคริปต์ TCL (ภาษารุ่นพ่อ) เพื่อมาใช้งาน NS2 ในการจำลองเครือข่ายคอมพิวเตอร์ แม้ns2 จะใช้ภาษาสคริปต์อย่าง TCL เพื่อความสะดวกในการแก้ไขสคริปต์โดยไม่ต้อง build ใหม่ทั้งระบบแล้วก็ตาม แต่การแก้สคริปเป็นร้อยๆ แบบก็ไม่สนุกนัก แถมภาษา TCL นั้นเขียนลำบาก เขียนผิดทีเล่นเอาหาไม่เจอบ่อยๆ อาจจะเป็นเพราะผมไม่ชำนาญเองก็ได้ วิธีที่ง่ายกว่าคือการสร้างสคริปต์ขึ้นมาใหม่ โดยใช้สคริปต์หลักเป็นโครง แล้วใช้พวก template engine นี่แหละมาสร้างเอา เมื่อคิดได้อย่างนั้นสิ่งแรกที่ผมทำคือการ พยายามใช้ template engine ของ django มาสร้างสคริปต์ทันที แต่แล้วก็ต้องพบกับความลำบากเมื่อ template engine ของ django […]