udhcp client script hooking

Posted: พฤษภาคม 7, 2011 in Linux, Networking, Operating System
ป้ายกำกับ:, , , ,

Hooking เป็นเทคนิคในการเขียนโปรแกรมที่ทำให้ซอฟต์แวร์สามารถ ปรับเปลี่ยน หรือเพิ่มเติม ได้ในภายหลัง

การที่ต้องมีความสามารถนี้เนื่องจาก เพื่อให้ซอฟต์แวร์สามารถปรับเปลี่ยนไปตามเหตุการณ์ หรือค่าบางอย่างที่เกิดขึ้นในโปรแกรมในขณะ run-time ได้ในภายหลังโดยที่ไม่ต้องไปแก้ไขที่ source code ต้นฉบับ ซึ่งอาจทำโดยบุคคลที่ไม่ใช่ผู้พัฒนาโปรแกรมนั้นๆ ทำให้โปรแกรมมีความยืดหยุ่นสูง สามารถเปลี่ยนแปลงในภายหลังได้ง่าย

โปรโตคอล DHCP เองนั้นมีความยืดหยุ่นสูง สามารถใส่ค่า option ไว้ได้หลายค่า การจะเขียนโปรแกรมเพื่อประมวลผล option ต่างๆที่ใส่มาใน โปรโตคอล DHCP จึงไม่ใช่เรื่องง่าย เนื่องจากบางครั้งเราไม่รู้ว่า option ที่ใส่มานั้นต้องการจะทำอะไรกับมัน ใน DHCP client หลายๆตัว จึงได้ออกแบบให้นักพัฒนา หรือ ผู้ดูแลระบบ สามารถเขียน script ง่ายๆในการประมวลผล DHCP option เหล่านั้นได้โดยไม่ต้องแก้ไข source code หลักของโปรแกรม และ script เหล่านั้นเป็นสิ่งที่ผู้ดูแลระบบคุ้นเคยอยู่แล้ว เช่น shell script เป็นต้น

udhcp เป็น dhcp client ที่นิยมใช้ใน embedded system เนื่องจากมีขนาดเล็ก ประมาณ 19KB เราจึงเห็น udhcp ถูกใส่ไว้ใน busybox ซึ่งเป็น UNIX utility suite ที่มักใช้ใน embedded system

DHCP protocol นอกจากจะช่วยแจก IP address ให้แก่ client ได้แล้ว ยังสามารถ ส่งค่าต่างๆไปให้ client ได้ ยกตัวอย่างเช่น DNS server ip address และ gateway address เป็นต้น

dhcp client ส่วนมาก จะรับค่ามาตรฐานเหล่านี้มาแล้วทำการเซ็ทให้กับ client อัตโนมัติ แต่ค่าบางค่า อย่างเช่น hostname dhcp client จะไม่ทำอะไรให้ เนื่องจากไม่ใช่เรื่องปกติที่ client จะรับค่า hostname มาจาก dhcp server
Read the rest of this entry »

เรื่องของ Stack และ Heap

Posted: กุมภาพันธ์ 23, 2011 in C/C++

วันนี้เป็นอีกวันที่เขียน C อย่างเมามัน และไปงงกับ Error แปลกๆอยู่หลายชั่วโมง เหตุเพราะอยากได้ข้อมูลที่มีพื้นที่ของหน่วยความจำที่ต่อเนื่องกัน ในตอนแรกจึงเลือกใช้ static array สำหรับเก็บค่า ซึ่งตอนหลังก็พบว่าไม่จำเป็นต้องใช้

ลองมาดูตัวอย่างกันดีกว่า

มี function หนึ่ง return ค่า string  หรือถ้าเรียกให้ถูกคือ  address ของหน่วยความจำที่เก็บ string แต่ค่าที่ได้มันกลายเป็นภาษาขยะ ยกตัวอย่างง่ายๆจาก code ด้านล่าง ซึ่งจะ print ตัวอักษร A สิบตัวอักษร

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

char *
get_var()
{
    char x[11];

    memset(x,65 /*A*/,10);
    x[10] = '\0';

    printf("get_var()\n");
    printf("%s\n", x);

    return x;
}

int
main()
{
    char * y;

    y = get_var();

    printf("%s\n", y);

    return 0;
}

หลังจาก compile และ run ได้ค่าแบบนี้

$ gcc x.c -o x
$ ./x
get_var()
AAAAAAAAAA
��Y��do
Read the rest of this entry »

ผมวางแผนจะซื้อ laptop เครื่องใหม่ก่อนจะลาออกจากบริษัทเดิมนานพอสมควร ในตอนแรกหวยไปออกที่ Dell Latitude E4300 แต่ด้วยความที่ซื้อยาก ไม่มีวางขายตามหน้าร้านทั่วไปต้องสั่งผ่าน Sale เท่านั้น Sale คนที่ผมเคยคิดจะซื้อด้วยก็กลายเป็นพวกย้อมแมวเอาเครื่องมายำรวมกันซะอย่างงั้น การจะติดต่อไปหา Sale ก็ดูเป็นเรื่องยาก ยังกับหาซื้อของเถื่อน สรุปแล้วผมหมดความอดทนกับการหาเครื่องรุ่นนี้โดยปริยาย

Read the rest of this entry »

Teambox – Twitter Like Project Management and Collaboration Tool

Posted: กุมภาพันธ์ 22, 2010 in Project Management
ป้ายกำกับ:,

Teambox เป็น Open source software ที่ช่วยในการบริหารจัดการโครงการ ด้วย user interface ที่คล้าย twitter น่าจะเหมาะกับทีมที่นักพัฒนาอยู่คนละที่ คุยกันผ่านทาง internet
สามารถใช้งาน Teambox โดยสมัครสมาชิกได้ในเว็บของ Teambox หรือ download มาติดตั้งเองได้

ดู video แนะนำ Teambox ได้ที่นี่

Google Goggles ใช้ภาพในการค้นหาเว็บ

Posted: กุมภาพันธ์ 18, 2010 in Uncategorized
ป้ายกำกับ:,

A picture is worth a thousand words.

No need to type your search anymore. Just take a picture.

เป็น กิมมิค (Gimmick) ที่ google ใช้สำหรับบริการ picture search คือเราสามารถใช้รูปภาพในการ search แทนที่จะ พิมพ์ keyword ลงไปในช่อง input text box นั่นเอง

ส่วนคำอธิบายการใช้ดูการ video ด้านล่างจะเห็นภาพได้ชัดเจนกว่า

สนใจทดลองได้ที่ Google Goggles

support เฉพาะ smart phone ที่ใช้ระบบปฏิบัติการ Android 1.6 ขึ้นไป

NoSQL

Posted: ธันวาคม 15, 2009 in Uncategorized

ถ้าพูดกันในเรื่องของความสามารถในการขยายระบบ หรือที่เรียกกันติดปากว่า scalability ในยุคนี้ดูจะเป็นเรื่องที่มีความจำเป็นมากขึ้นเรื่อยๆ เนื่องจากจำนวนผู้ใช้อินเทอร์เน็ตมีจำนวนมากขึ้น รวมถึงขนาดของข้อมูลมีขนาดใหญ่ขึ้นและความต้องการเก็บข้อมูลที่มีลักษณะเป็น history สามารถดึงของเก่ามาให้ได้เมื่อจำเป็น ความต้องการที่เก็บข้อมูลจำนวนมหาศาลนี้เป็นตัวเร่งทำให้เกิดเทคโนโลยีในการเก็บข้อมูลแบบใหม่ ที่สามารถขยายตัวได้อย่างไม่จำกัด ในราคาที่ถูกกว่าการซื้อ storage hardware ที่มีราคาแพง และอาจจะไม่สามารถรองรับความต้องการได้เสมอไป

ถ้าหากกล่าวถึง LAMP stack ใน data tier นิยมใช้ MySQL ซึ่งเป็น relational database ในการเก็บข้อมูล ถ้าหากพิจารณาถึงความต้องการในการเก็บข้อมูลของเราดีๆแล้ว อาจไม่จำเป็นต้องใช้ relational database ในการเก็บข้อมูลเสมอไป เนื่องจากเหตผลต่างๆดังนี้

  • ไม่จำเป็นต้องใช้ relational database ในการเก็บข้อมูล
  • การ ขยายระบบ (scale) relational database ทำได้ยาก และมีความซับซ้อนสูง
  • การทำ normalization ใน relational database มักทำให้ performance แย่ลง
  • ในหลายๆกรณี ใช้แค่ primary key look-up ก็เพียงพอต่อการ retrieve ข้อมูลแล้ว

Read the rest of this entry »

Gentoo เป็น Linux distribution ประเภท source-based ซึ่งการจะลงโปรแกรมต่างๆ จะต้องทำผ่าน source repository ของตัวเอง ซึ่งใน Gentoo เรียก portage ซึ่งหลักการจะคล้ายกับ FreeBSD ซึ่งใช้ port ในการจัดการ software package

สิ่งที่ผมชอบใน Gentoo คือความตรงไปตรงมา และไม่ลงอะไรเกินจำเป็น ซึ่งเป็นสาเหตุของปัญหาความปลอดภัยในระบบส่วนใหญ่ ความปลอดภัยในระบบปฏิบัติการ หลายๆคนคิดว่า พอมี Firewall แล้วจะปลอดภัย แต่จริงๆแล้ว firewall แค่ช่วยป้องกันในระดับหนึ่งเท่านั้น เหมือนประเทศที่มีขุนศึกชั้นดี แต่การบริหารภายในประเทศเน่าเฟะ ไม่นานข้าศึกก็เจาะเมืองก็แตกจนได้

ปัญหาความปลอดภัยหนึ่งที่พบ ในระบบปฏิบัติการคือ การที่ไม่เคย update software เลย เช่นลง web server ตัวไหน อีกห้าปีก็ใช้ตัวเดิม จึงไม่แปลกที่จะเห็น server ตัวนั้นโดนเจาะระบบอยู่เรื่อยๆ พอโดนเจาะทีก็ update ทีนึง ดังนั้นเรื่องความปลอดภัยจึงเกี่ยวกับการบริหารจัดการ ไม่ใช่เรื่องของเทคโนโลยีเพียงอย่างเดียว ซึ่งในบทความนี้จะพูดถึง เครื่องมือตัวหนึ่งที่จะคอยตรวจสอบว่า ซอฟต์แวร์ตัวไหนในระบบปฏิบัติการมี ความเสี่ยงเรื่องความปลอดภัย

Gentoo หรือ Linux distribution อื่นๆจะมีสิ่งที่เรียกว่า Security Advisories ซึ่งต้องเข้าไปดูที่หน้าเว็บของ Distribution นั้นๆเอาเอง ซึ่งของ Gentoo Linux สามารถเข้าไปดูได้ที่ http://www.gentoo.org/security/en/glsa/ Gentoo มีเครื่องมือตัวหนึ่งที่คอยตรวจสอบได้ว่า ซอฟต์แวร์ตัวไหนที่มีความเสี่ยง โดยเครื่องมือตัวนี้เรียกว่า glsa-check GLSA เป็นตัวย่อของ Gentoo Linux Security Advisories อยู่ในชุดเครื่องมือที่ชื่อ gentoolkit

Read the rest of this entry »

Thinkpad T400s notebook เกรดทหาร

Posted: มิถุนายน 19, 2009 in Hardware
ป้ายกำกับ:, ,

ได้ยินชื่อนี้ครั้งแรกในวันนี้ แต่เหมือนเคยดูทีวีเกี่ยวกับเรื่องการศึกษานอกระบบที่พ่อแม่บางคนจัดระบบการศึกษาให้ลูกเอง เรื่องนี้น่าสนใจ เคยได้ยินเสมอๆว่าระบบการศึกษาไทยล้มเหลว แต่ผมคิดว่ามันล้มเหลวเพราะเราพยายามกำหนดมันเป็น “ระบบ”

มนุษย์มีความสามารถในแต่ละด้านไม่เท่ากัน ความสนใจไม่เหมือนกัน เมื่อเราอยากรู้ เราจึงศึกษา เมื่อไม่อยากรู้ เราก็จะไม่ศึกษา ยกเว้นว่าโดนบังคับ เช่นจากสังคม จากการสอบ เป็นต้น ดังนั้นระบบการศึกษาที่ดีน่าจะเริ่มที่การกระตุ้นให้คนอยากรู้มากกว่าการพยายามยัดเยียดสิ่งที่ใครก็ตามคิดว่าเราควรจะรู้ให้เรา

มี ฺblog ในลานปัญญาเรื่อง ความรู้ใด จำเป็นต่อการดำรงอยู่ของมนุษยชาติ ลองเลือกคนมาสิบคนจะมีกี่คนที่ตอบเรื่องนี้ได้ เช่นตัวผมเองวันไหนไม่มีไฟฟ้าใช้รับรองได้ว่า เอาตัวไม่รอด

อ่านดูคร่าวๆนึกเสียดายที่เราน่าจะเรียนแบบนี้ตั้งแต่เด็ก มีหลายเรื่องที่เสียเวลา คิดแล้วน่าเสียดาย มีน้องคนนึงให้ลูกเข้าเรียนในโรงเรียนที่สอนตามแนวการศึกษาวอลดอร์ฟ น่าสนใจมากไว้จะมาเล่าให้ฟังอีกว่าลูกเค้ามีพัฒนาการยังไง

คอร์สนี้น่าเรียน http://parentschool.wordpress.com/2009/03/14/waldorf_seminar/

Read the rest of this entry »

ความสุขของกะทิ

Posted: พฤษภาคม 11, 2009 in Musical
ป้ายกำกับ:

เพลงนี้เป็นเพลงประกอบภาพยนต์เรื่อง ความสุขของกะทิ ผมฟังแล้วรู้สึกเหงา กับ อบอุ่นปนๆกัน แปลกดี