วันนี้เพิ่งทำการสร้างการทำงานแบบหลายภาษา ดังนั้นจึงได้ลงข้อความนี้เพื่อทำการทดสอบ
การจัดการหน้าจอแบบ Command line หรือ Clear screen (Scrollback Mode and Navigating)
การจัดการหน้าจอ ของ command line เช่นการ clear screen สามารถทำได้โดยการใช้อักขระพิเศษ ให้แสดงผลตามตาราง
Continued…
Posted in Uncategorized.
ใส่สีให้ trac (Syntax Coloring) ด้วย pygments และ svn MIME Types properties
วิธีการติดตั้ง
เวลาที่ต้องการดู source code ถ้าจะให้อ่านง่าย จำเป็นต้องแสดงผลโดยใช้สีสันเข้ามาช่วย (highlight & Syntax Coloring) ซึ่งใน Trac นั้น ก็มีเหมือนกัน โดยใน trac 0.11 เป็นต้นมา จะใช้ pygments ซึ่งมีมาให้อยู่แล้ว แต่เราจำเป็นต้องลง library นี้ในเครื่องก่อน
Continued…
Posted in Application, Linux, Programming, Trac & SVN.
ย้ายหรือเปลี่ยนชื่อโดเมนใน wordpress 3 และ wordpress-mu
หากวันนึงเราต้องการเปลี่ยนชื่อโดเมน blog ของเราจะทำอย่างไร ไม่ใช่เรื่องยากหรอกครับ ความจริงแล้วแค่รัน query ไม่กี่ตัวเท่านั้น ดังนี้ และเปลี่ยน old-domain.com กับ new-domain.com ไม่ต้องใส่ subdomain นะ
Continued…
Posted in Uncategorized.
ใช้ gtalk ผ่าน pidgin สำหรับ domain ขององค์กร
สามารถตั้งค่าของ pidgin ได้ดังนั้
Posted in Application.
http proxy สำหรับ apt-get
ในกรณีที่เครื่องของเราอยู่หลังเครื่อง proxy เช่น เครื่องใน office ทั่วไป จะไม่สามารถใช้งาน apt-get ได้เนื่องจาก apt-get ต้องไปดึง file ผ่าน http ซึ่งไม่สามารวิ่งทะลุผ่าน gateway ได้โดยตรง
apt-get จึงต้องวิ่งผ่าน proxy โดยสามารถทำได้โดยเติม ใน file .bashrc ใน home directory
# apt-get proxy export http_proxy=http://[proxy ID or domain]:[port]/ export ftp_proxy=ftp://[proxy ID or domain]:[port]/
อย่าลืม log in ใหม่
แต่ในกรณีจากการทดสอบ จะไม่สามารถใช้ sudo ได้ เพราะมันจะไม่โหลด environment ของ user ของเราไปด้วย ดังนั้นจึงต้องเข้าด้วย sudo -s เพื่อไปเป็น root ก่อน
เมื่อเข้าไปแล้วลอง export environment ออกมาดู จะเป็น http_proxy เป็นค่าที่เราใส่เข้าไป
user# export
จะสังเกตว่าปลายทางที่เราไปดึงข้อมูลจะเป็น ip หรือ domain ของ proxy
Posted in Linux, Networking.
Memcache & MySQL PHP Session Handler
ช่วงนี้กำลังหาโซลูชั้นเพื่อที่จะทำ centralized session ตรงกลาง เพราะเนื่องจากเริ่มมี web application หลายตัว และในบางส่วนจำเป็นต้องมีการใช้ session ร่วมกัน จึงหาการแก้ปัญหาที่ตอบโจทย์ดังกล่าวว่าจะมีการรวม session มาไว้ที่เดียวกันและมีประสิทธิภาพสูงสุดได้อย่างไร ซึ่งในโซลูชั่นสุดท้ายผมคงต้องขอไม่พูดถึง เพี่อเป็นความปลอดภัยของระบบ แต่จะกล่าวแค่เฉพาะแนวคิดเฉยๆ ครับ
การทำ centralized session หรือ เซสชั่นกลางนั้น เราสามารถทำได้ง่ายๆ โดยการหาตัวมารับหน้าที่เป็น data pool หรือที่เก็บรวบรวมข้อมูลตรงกลาง ซึ่งที่ผมจะนำไปใช้คือ MySQL สำหรับ บรรจุข้อมูลตรงกลาง ทุกเครื่องสามารถนำไปใช้งานได้ โดยเป็นข้อมูลเดียวกัน แต่เนื่องจาก MySQL จะทำการ update cache ทุกครั้งที่กำการอัพเดตข้อมูล
http://pureform.wordpress.com/2009/04/08/memcache-mysql-php-session-handler/
ช่วงนี้กำลังหาโซลูชั้นเพื่อที่จะทำ centralized session ตรงกลาง เพราะเนื่องจากเริ่มมี web application หลายตัว และในบางส่วนจำเป็นต้องมีการใช้ session ร่วมกัน จึงหาการแก้ปัญหาที่ตอบโจทย์ดังกล่าวว่าจะมีการรวม session มาไว้ที่เดียวกันและมีประสิทธิภาพสูงสุดได้อย่างไร ซึ่งในโซลูชั่นสุดท้ายผมคงต้องขอไม่พูดถึง เพี่อเป็นความปลอดภัยของระบบ แต่จะกล่าวแค่เฉพาะแนวคิดเฉยๆ ครับ
การทำ centralized session หรือ เซสชั่นกลางนั้น เราสามารถทำได้ง่ายๆ โดยการหาตัวมารับหน้าที่เป็น data pool หรือที่เก็บรวบรวมข้อมูลตรงกลาง ซึ่งที่ผมจะนำไปใช้คือ MySQL สำหรับ บรรจุข้อมูลตรงกลาง ทุกเครื่องสามารถนำไปใช้งานได้ โดยเป็นข้อมูลเดียวกัน แต่เนื่องจาก MySQL จะทำการ update cache ทุกครั้งที่กำการอัพเดตข้อมูล
http://pureform.wordpress.com/2009/04/08/memcache-mysql-php-session-handler/
memcache = new Memcache;
$this->lifeTime = intval(ini_get("session.gc_maxlifetime"));
$this->initSessionData = null;
$this->memcache->connect("127.0.0.1",11211);
return true;
}
function open($savePath,$sessionName) {
$sessionID = session_id();
if ($sessionID !== "") {
$this->initSessionData = $this->read($sessionID);
}
return true;
}
function close() {
$this->lifeTime = null;
$this->memcache = null;
$this->initSessionData = null;
return true;
}
function read($sessionID) {
$data = $this->memcache->get($sessionID);
if ($data === false) {
# Couldn't find it in MC, ask the DB for it
$sessionIDEscaped = mysql_real_escape_string($sessionID);
$r = mysql_query("SELECT `sessionData` FROM `tblsessions` WHERE `sessionID`='$sessionIDEscaped'");
if (is_resource($r) && (mysql_num_rows($r) !== 0)) {
$data = mysql_result($r,0,"sessionData");
}
# Refresh MC key: [Thanks Cal
]
$this->memcache->set($sessionID,$data,false,$this->lifeTime);
}
# The default miss for MC is (bool) false, so return it
return $data;
}
function write($sessionID,$data) {
# This is called upon script termination or when session_write_close() is called, which ever is first.
$result = $this->memcache->set($sessionID,$data,false,$this->lifeTime);
if ($this->initSessionData !== $data) {
$sessionID = mysql_real_escape_string($sessionID);
$sessionExpirationTS = ($this->lifeTime + time());
$sessionData = mysql_real_escape_string($data);
$r = mysql_query("REPLACE INTO `tblsessions` (`sessionID`,`sessionExpirationTS`,`sessionData`) VALUES('$sessionID',$sessionExpirationTS,'$sessionData')");
$result = is_resource($r);
}
return $result;
}
function destroy($sessionID) {
# Called when a user logs out...
$this->memcache->delete($sessionID);
$sessionID = mysql_real_escape_string($sessionID);
mysql_query("DELETE FROM `tblsessions` WHERE `sessionID`='$sessionID'");
return true;
}
function gc($maxlifetime) {
# We need this atomic so it can clear MC keys as well...
$r = mysql_query("SELECT `sessionID` FROM `tblsessions` WHERE `sessionExpirationTS`lifeTime));
if (is_resource($r) && (($rows = mysql_num_rows($r)) !== 0)) {
for ($i=0;$idestroy(mysql_result($r,$i,"sessionID"));
}
}
return true;
}
}
ini_set("session.gc_maxlifetime",60 * 30); # 30 minutes
session_set_cookie_params(0,"/",".myapp.com",false,true);
session_name("MYAPPSESSION");
$sessionHandler = new SessionHandler();
session_set_save_handler(array (&$sessionHandler,"open"),array (&$sessionHandler,"close"),array (&$sessionHandler,"read"),array (&$sessionHandler,"write"),array (&$sessionHandler,"destroy"),array (&$sessionHandler,"gc"));
session_start();
?>
70 web application ที่น่าสนใจ
Posted in Uncategorized.
Thinkpad mouse x200si trackpoint
Posted in Linux.
Java-script ใน css
ท่านสามารถใส java-script ไว้สำหรับทำการแก้ bug ของ ie6 ซึ่งไม่สามารถแสดงผลได้อย่างถูกต้อง โดยการใส่ expression ดังตั่วอย่าง
#container{
width: expression(document.body.clientWidth > 1100)? "1100px" : "auto";
/* For web browsers supporting it */
max-width: 1100px;
}
Posted in HTML & CSS, Javascript.


