Token # และ ## ใน Macro of C-language ที่ลิมประจำ

8.1.3 Conversions to String Literals #The # preprocessor operator is used to convert the argument that follows it to a string literal. The preprocessor operator # can be used only in a function-like macro definition. For example:#include #define PRid printf”The value of ” #id ” is %d\n”, idmain{ int i = 10; PRi;}The output produced is:The value of i is 10The macro call expands in the following steps:/1/ printf”The value of ” #id ” is %d\n”, id/2/ printf”The value of ” “i” ” is %d\n”, 10/3/ printf”The value of i is %d\n”, 10The unary # operator produces a string from its operand. This example also uses the fact that adjacent string literals are concatenated. If the operand to # contains double quotes or escape sequences, they are also expanded. For example:#include #define Marg printf#arg ” is %s\n”, argmain{ M”a\nb\tc”;}The macro call expands using the following steps:/1/ printf#arg ” is %s\n”, arg/2/ printf”\”a\\nb\\tc\”” ” is %s\n”, “a\nb\tc”;/3/ printf”\”a\\nb\\tc\” is %s\n”, “a\nb\tc”;8.1.4 Token Concatenation##The ## preprocessor operator is used to concatenate two tokens into a third valid token, as in the following example:#define gluea,b a ## bmain{int wholenum = 5000;printf”%d”, gluewhole,num;}The preprocessor converts the line printf”%d”, gluewhole,num; into printf”%d”, wholenum; , and when executed, the program prints 5000. If the result is not a valid token, an error occurs when the tokens are concatenated.

via Macro Definition #define and #undef.

Type Casting ในภาษา C เรื่องของ Signed / Unsigned

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

Pidgin’s plugin development

เพราะว่าต้องเดินทางระหว่างบ้าน กับที่ทำงาน มหาวิทยาลัย อยู่บ่อยๆ  แต่ก็อยากให้ Friendly Name ของ MSN เปลี่ยนตามสถานที่ที่ไป (อาจจะให้ เปลี่ยนตามวง IP) จึงต้องเพิ่มเติมความสามารถ โดยพัฒนา Plugin เอง

ภาพรวมคร่าวๆคือ ต้อง ..

  • download source code package มาจาก source forge ของ pidgin ก่อน
  • จากนั้นเริ่ม ./configure และ make (ซึ่งจะทำให้ทราบว่าต้องลง package อะไรเพิ่มขึ้นอีก)
  • เข้าไปใน pidgin/plugins/ จะพบกับ plugins ตัวอื่นๆมากมาย (อาจถูก compile แล้วด้วยขั้นตอนที่ผ่านมา)
  • เมื่อต้องการพัฒนา plugins ใดเพิ่มให้ใส่ใน dir pidgin/plugins/<new file>.c แลัว compile ด้วย make <new file>.so
  • สำหรับ <new file>.so ที่ได้ ให้ใส่ไว้ใน ~/.purple/plugins/ เมื่อ run pidgin จะได้มองเห็น

อ่านเพิ่มเติม

NetworkX : การใช้งาน Python Package สำหรับศึกษา Graph Theory

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

  1. ใช้ yED เพื่อสร้างรูปแบบ Graph ที่สนใจ แล้ว Save ไว้เป็น .graphml (XML รูปแบบหนึ่ง)
  2. เขียน Python Code โดยอาศัย NetworkX เพื่อให้สามารถอ่าน File .graphml มาเก็บไว้เป็น Data Structure แบบ Graph()
  3. ใช้ Python ทำงานกับ Graph() ได้ด้วย Algorithm ที่เราคิด
  4. สามารถ Save เป็น Graphic File (.png) , Graph File Format (.DOT Format : ยังไม่สมบูรณ์ ไม่สามารถ Save weight ของ Edge ได้) หรือ แสดงผล GUI

อ่านเพิ่มเติม

วาด Graph แรกด้วย NetworkX

3231207028_7c55a31874[1].jpgอย่างที่ได้เคยกล่าวแนะนำไปแล้วในเรื่องการใช้เครื่องมือ

NetworkX เป็น Python Package เพื่อ Create และ Manipulate โครงสร้างข้อมูลกราฟ ทำให้ง่ายในการ Prove of Concept – Algorithm เบื้องต้น ก่อนที่จะไปคำนึงถึงทักษะด้าน Programming

อ่านเพิ่มเติม

C++

นานมากแล้วที่ไม่ได้จับ C++ แต่ก็ไม่ได้ตระหนกตกใจอะไร เพราะส่วนใหญ่ก็เขียน C++ พอๆกับที่ใช้ภาษาไทยอยู่แล้ว (แบร่ๆ) .. ยังไงก็ดี คงต้องพัฒนาแนวคิดด้าน OOP กันใหม่หน่อยละมั้ง

อ่านเพิ่มเติม