วิธีพัฒนา Squirrelmail Plugin – กรณี pagespeed

Squirrelmail เป็น IMAP Client Webmail แบบมาตราฐาน ทำงานบน PHP ซึ่งติดตั้งง่าย ใช้งานได้รวดเร็ว ไม่ต้องกังวลเรื่องความเข้ากันได้กับ Web Browser ของผู้ใช้หลากหลาย เพราะไม่ค่อยมีการใช้งานพวก JavaScript มีความง่ายในการต่อขยายความสามารถ โดยผู้พัฒนาเปิดให้เขียน Plugin ได้ง่าย โดยไม่ต้องแก้ไข Code ของระบบโดยตรง ด้วยวิธีการเสียบ Code ผ่านจุดที่กำหนด ที่เรียกว่า “Hook” ทำให้ Plugin ที่เขียนขึ้น สามารถใช้งานต่อไปได้ แม้มีการปรับรุ่นของ Squirrelmail ต่อไป ตัวอย่างการเขียน Squirrelmail Plugin เพื่อแสดงความเร็วในการประมวลผลในแต่ละส่วนของ Squirrelmail ใช้ชื่อว่า pagespeed (ทำงานบน Squirrelmail 1.4.x) สร้าง folder ชื่อ pagespeed สร้างไฟล์ index.php เอาไว้เฉยๆ สร้างไฟล์ setup.php , ต่อไปนี้ จะกล่าวถึงการเขียนโค๊ตในไฟล์นี้ สร้าง function แรกที่จะเสียบเข้ากับ Hook ต่างๆ ชื่อว่า squirrelmail_plugin_init_pagespeed $starttime=0; function squirrelmail_plugin_init_pagespeed() { global $squirrelmail_plugin_hooks; // Code Go Here } ชื่อฟังกชั่นต้องเป็น squirrelmail_plug_init_xxx() โดยที่ xxx ต้องตรงกับชื่อ folder ในที่นี้คือ pagespeed ต่อไป บอกให้ Squirrelmail รู้ว่า เราจะเสียบฟังก์ชั่น “pagespeed_top” และ “pagespeed_bottom” ที่่จะเขียนต่อไป ไว้ที่ Hook ใดบ้าง ในที่นี้ จะเสียบไว้ที่หน้า Login บริเวณ Hook ชื่อว่า login_top และ login_bottom, จะเขียนโค๊ดดังนี้ใน function squirrelmail_plugin_init_pagespeed ดังนี้ $squirrelmail_plugin_hooks[‘login_top’][‘pagespeed’] = ‘pagespeed_top’; $squirrelmail_plugin_hooks[‘login_bottom’][‘pagespeed’] = ‘pagespeed_bottom’; รูปแบบการเขียนคือ $squirrelmail_plugin_hooks[‘ตำแหน่งที่จะเสียบ’][‘ชื่อ plugin’] = ‘ชื่อฟังก์ชั่น’; ต่อไปมาเขียนรายละเอียดของฟังก์ขั่น pagespeed_top และ pagespeed_bottompagespeed_top ทำหน้าที่ดูเวลาเริ่มต้น มีรายละเอียดดังนี้ function pagespeed_top() { global $starttime; $gentime = microtime(); $gentime = explode(‘ ‘,$gentime); $gentime = $gentime[1] + $gentime[0]; $starttime=$gentime; } ส่วน pagespeed_bottom ทำหน้าที่ ดูเวลาสิ้นสุด แล้วคำนวนเวลาที่ใช้ไป จากนั้น ก็แสดงผลการคำนวนได้ function pagespeed_bottom() {  global $starttime; $gentime = microtime();   $gentime = explode(‘ ‘,$gentime);   $gentime = $gentime[1] + $gentime[0];   $pg_end = $gentime;   $totaltime = ($pg_end – $starttime);   $showtime = number_format($totaltime, 4, ‘.’ , ”); echo ‘Speed: ‘ . $showtime . ‘ s’ ; } เท่านี้ก็ได้ plugin

Read More »

rocks cluster mamba 6.0

เป็นขั้นตอนการสร้าง Rocks cluster mamba 6.0 สำหรับ mamba 6.0 เป็นชื่อ version ครับ เราสามารถไปdownload ได้ที่ http://www.rocksclusters.org Hardware ที่ใช้ดังนี้ pc จำนวน 2 เครื่อง(พอดีใช้pcในการจำลองนะครับ) โดย pc เครื่องหนึ่งต้องมี Network Interface Card จำนวน 2 card จำลองเป็นเครื่อง frontend ส่วนอีกเครื่องเป็นเครื่องสำหรับการ compute มี Network Interface Card 1 card (เครื่องcomputeมีได้หลายเครื่อง) และมี switch  1 ตัว   1.ใส่แผ่น Rocks cluster ที่ดาวโหลดไว้จากนั้นให้บูทจากแผ่นจะพบกับหน้าต่างการติดตั้งให้พิมพ์   “build”  เพื่อทำการติดตั้ง 2.รอสักครู่ระบบกำลังทำการติดตั้ง 3.จะปรากฎหน้าต่างดังรูป ให้เลือก CD/DVD-based Roll 4.เลือก Roll ที่ต้องการติดตั้ง ในที่นี้เลือกทุก Roll กด Submit 5.ก็จะแสดง Roll ที่ทำการเลือกไว้ ให้ทำการตั้งชื่อ Hostname ตามที่ต้องการ แล้วกด Next 6.กรอกข้อมูลรายละเอียดต่างๆของ Rocks Cluster ที่ต้องการสร้าง 7.ระบุหมายเลข IP สำหรับการเชื่อมต่อออก Public กด Next 8.ระบุหมายเลข IP สำหรับการเชื่อมต่อภายใน Private กด Next 9.ระบุ gateway และ DNS Servers กด Next 10.ระบุ Password ของ root  กด Next 11.ระบุ TimeZone กด Next 12.เลือกการแบ่ง Partition โดยมีให้เลือกแบบ auto และ manual 13.จากนั้นจะเริ่มทำการติดตั้งโดยความเร็วในการติดตั้งจะขึ้นอยู่กับความสามารถของ Hardware ด้วย 14.หลังจากติดตั้งเรียบร้อยจะทำการ restart

Read More »

ใช้ Powershell แบบ Linux Shell Script

รวบรวมการทำงานกับ Powershell บน Windows โดยเทียบเคียงกับการใช้ ShellScript บน Linux (ทะยอยเขียนบันทึก โปรดติดตามเรื่อยๆ) เลือกบางบรรทัดจากไฟล์ที่มีคำที่ต้องการอยู่ shellscript: grep someword textfile.txt powershell: select-string “someword” textfile.txt เลือกบางบรรทัดจากไฟล์ แล้วแยกด้วยเครื่องหมาย : เพื่อเอาฟิลด์ที่ 3 shellscript: grep someword textfile.txt | awk -f ‘{FS=”:”}{print $3}’ powershell: select string “someword” textfile.txt | % { $_.line.split(‘:’)[2];  } เลือกบางบรรทัดจากไฟล์ แล้วเอาลงไฟล์ shellscript: grep someword textfile.txt  > output.txt powershell: select string “someword” textfile.txt | foreach-object {$_.line} > output.txt ดูท้ายไฟล์ตลอดเวลา (ไม่รู้จะใช้คำว่าอะไรดี) และเริ่มดูโดยเอา 3 บรรทัดสุดท้าย ไม่ใช่เริ่มทั้งไฟลฺ์ shellscript: tail -f mydata.log powershell: get-content mydata.log -wait -tail 3

Read More »

ตั้งค่าการเผยแพร่บทความให้อ่านได้เฉพาะสมาชิกที่ login

ใน wordpress เราสามารถตั้งค่าการเผยแพร่บทความให้อ่านได้เฉพาะสมาชิกที่ login ทำได้โดยการติดตั้ง plugin เพิ่ม ผมได้ติดตั้ง plugin ชื่อ member access (member-access.1.1.6.zip) เพิ่มตามคำแนะนำของทีมงาน (ใหญ่และน้อง ศูนย์คอมฯ ขอบคุณครับ) วิธีใช้งานคือ เมื่อท่านเขียนบทความเสร็จ ตัดสินใจแล้วว่าจะเผยแพร่แบบให้สมาชิกที่ login เข้าสู่ระบบแล้วจะดูได้เท่านั้น (เพราะจำเป็นจริงๆ อาจมีความลับบางอย่างไม่อยากให้พี่ google ไปบอกต่อ) ให้ท่านดูที่ด้านขวามือ จะเห็นเป็น Status: Published Edit Visibility: Public Edit ซึ่งถูกต้องแล้ว จากนั้นให้เลือกตัวเลือกของ Member Access ด้านล่าง ตั้งค่าตัวเลือก Ignore the default settings and make this post visible only to members ผลลัพธ์จากการตั้งค่าครั้งนี้ ทำให้บทความไม่แสดงในหน้าเว็บไซต์ ถ้าไม่ login เข้าสู่ระบบก็จะไม่เห็นบทความ เมื่อคัดลอก link ส่งไปให้ ผู้ที่ได้รับ link ก็จะถูก redirect มายังหน้า login

Read More »