การแทรก smile icon ลงในข้อความใน textarea

July 22nd, 2009

ไปเจอมาครับ เอามาแบ่งปั่นกันกับพวกเราชาว Open Source ^^

การแทรก smile icon ลงในข้อความใน textarea หลักการของมันก็คือ ให้คลิกที่รูป smile icon แล้วก็แทรกสัญลักษณ์ที่แทน smile icon นั้นลงใน textarea แล้วก็ submit เก็บลงในฐานข้อมูล พอเวลาดึงมาแสดง เราก็ใช้คำสั่ง eregi_replace แปลงสัญลักษณ์นั้นให้เป็น รูปภาพ smile icon จ๊ะ

คลิกที่รูป เพื่อเอาโค้ดรูปนี้ไปแปะ

สคริปที่คลิกรูป smile icon แล้วให้มีรหัสของ icon นั้นใส่ใน textarea ก็ด้านล่างเลยจ๊ะ

<textarea name=”message” id=”message” >
<a href=”javascript:setsmile(‘:*)’)” ><img src=’smileys/embarassed.gif’ width=’15’ height=’15’ /></a>
<a href=”javascript:setsmile(‘:-D’)” ><img src=’smileys/grin.gif’ width=’15’ height=’15’ /></a>
<a href=”javascript:setsmile(‘QQ’)” ><img src=’smileys/cry.gif’ width=’15’ height=’15’ /></a>
<a href=”javascript:setsmile(‘=O’)” ><img src=’smileys/shocked.gif’ width=’15’ height=’15’ /></a>
<a href=”javascript:setsmile(‘=/’)” ><img src=’smileys/undecided.gif’ width=’15’ height=’15’ /></a>
<a href=”javascript:setsmile(‘8-)’)” ><img src=’smileys/cool.gif’ width=’15’ height=’15’ /></a>
<a href=”javascript:setsmile(‘:-X’)” ><img src=’smileys/sealedlips.gif’ width=’15’ height=’15’ /></a>
<a href=”javascript:setsmile(‘O:]’)” ><img src=’smileys/angel.gif’ width=’15’ height=’15’ /></a>

เวลาดึงข้อมูลมาแสดงเราก็ใช้ Function ด้านล่างมาแปลงสัญลักษณ์ให้เป็นรูปภาพ smile icon

<?php
function CheckSmile($temp){
global $url;
$text = array(
“:r00:”,”:r01:”,”:r02:”,”:r03:,”,”:r04:”,”:r05:”,”:r06:”,”:r07:,
“,”:r08:”,”:r09:”,”:r10:”,”:r11:”
);

$pic =array(
“r00.gif”,”r01.gif”,”r02.gif”,”r03.gif”,”r04.gif”,”r05.gif”,
“r06.gif”, “r07.gif”,”r08.gif”,”r09.gif”,”r10.gif”,”r11.gif”
);

for ($i=0 ; $i<sizeof($text) ; $i++) {
$temp = eregi_replace($text[$i],”<img src=\”smileys/$pic[$i]\”>”,$temp);
}
return($temp);
}
?>

ลองนำไปประยุกต์ดูนะครับ

การใช้ Vi editor ใน Linux

July 20th, 2009

เอามากันลืมครับ อิอิ

ถ้ากล่าวถึง Text Editor ในระบบปฏิบัติการ MS Windows หลายๆ ท่านคงนึกถึง NotePad และถ้ากล่าวถึง Text Editor ในระบบปฏิบัติการ Unix และ Linux คงจะหนีไม่พ้นเจ้า VI Text Editor รุ่นเก๋า ที่เป็นคู่หูของระบบปฏิบัติการ Unix มาช้านาน ด้วยระบบที่ออกแบบมาใช้งานให้มีปุ่มใช้งานน้อย และไม่มีเมนูบาร์ให้คลิก และคลิก แต่มากด้วยประสิทธิภาพ จึงทำให้ใครต่อใคร ที่ใช้งานใหม่ๆ เริ่มงงกับเจ้า VI (อาจเป็นเพราะคุ้นกับเจ้า NotePad มากเกินไปก็ได้ :-)) ใหม่ๆ ก็อย่างงี้แหละครับ เมื่อใช้ไปสักระยะ จะรู้ว่ามันง่าย ไม่ต้องขยับเม้าส์มาก (ฮา) เพื่อไม่เป็นการเสียเวลาครับ เรามาว่ากันถึงการใช้งานกันแบบ Step by Step กันเลยดีกว่าครับ

เริ่มต้นใช้งาน
ครั้งแรกที่เราเริ่มต้นใช้งาน ให้เราพิมพ์ดังนี้ครับ vi ในกรณีเปิดไฟล์ใหม่ แต่ถ้ามีไฟล์เดิมอยู่แล้วก็ให้พิมพ์ vi filename (filename คือชื่อไฟล์ที่เราต้องการจะเปิด)
การใช้งาน
เมื่อเราเปิดโปรแกรม vi ขึ้นมาแล้วอยากพิมพ์ข้อความ เราก็สามารถทำได้ดังนี้ครับ ให้กดปุ่ม I เพื่อทำให้ vi อยู่ในสถานะ Insert Mode ก่อน จากนั้นก็ทำการพิมพ์ข้อความที่ต้องการได้เลยครับ และเพื่อทำให้การพิมพ์ข้อความราบรื่น ผมมีตารางการใช้งานของคำสั่งใน vi มาให้ดูครับ

Key ความหมาย / ผลการใช้
h เลื่อน cursor ไปทางซ้ายทีละตัวอักษร
j เลื่อน cursor ลง 1 บรรทัด
k เลื่อน cursor ขึ้น 1 บรรทัด
l (แอล) เลื่อน cursor ไปทางฃวาทีละตัวอักษร
w เลื่อน cursor ไปทางฃวาทีละคำ
b เลื่อน cursor ไปทางซ้ายทีละคำ
$ เลื่อน cursor ไปท้ายบรรทัด
0 (ศูนย์) เลื่อน cursor ไปต้นบรรทัด
nG ไปยังบรรทัดที่ n หากไม่ใส่ n จะไปบรรทัดสุดท้าย
Ctrl+f เลื่อนหน้าจอไปข้างหน้า (เลื่อนลง) ทีละหน้า
Ctrl+b เลื่อนหน้าจอถอยหลัง (เลื่อนขึ้น) ทีละหน้า
Ctrl+d เลื่อนหน้าจอไปข้างหน้า (เลื่อนลง) ทีละครึ่งหน้าจอ
Ctrl+u เลื่อนหน้าจอถอยหลัง (เลื่อนขึ้น) ทีละครึ่งหน้าจอ
Ctrl+L Refresh หน้าจอ
[[ ไปยังต้นไฟล์
]] ไปยังท้ายไฟล์
yy Copy ข้อความทั้งบรรทัด
yw Copy ข้อความทั้งคำ
yG Copy ถึงท้ายไฟล์
y$ Copy ถึงท้ายบรรทัด
p (เล็ก) Paste หลัง cursor
P (ใหญ่) Paste หน้า cursor
cw พิมพ์ทับทีละ word
c$ พิมพ์ทับจนถึงท้ายบรรทัด
cG พิมพ์ทับจนถึงท้ายไฟล์
r พิมพ์ทับทีละ 1 ตัว
R พิมพ์ทับจนกว่าจะกด Esc
u Undo การกระทำครั้งล่าสุด
x (เล็ก) ลบตรง cursor
X (ใหญ่) ลบหน้า cursor
dw ลบคำ
dd ลบทั้งบรรทัด
d$ ลบจากตำแหน่ง cursor จนท้ายบรรทัด
d0 (ดีศูนย์) ลบจากตำแหน่ง cursor จนต้นบรรทัด
dG ลบจากตำแหน่ง cursor จนท้ายไฟล์

Insert Mode
ey ความหมาย / ผลการใช้
a เพิ่มข้อมูลต่อจาก cursor
A เพิ่มข้อมูลต่อจากท้ายบรรทัด
i เพิ่มข้อมูลหน้า cursor
I (ไอใหญ่) เพิ่มข้อมูลที่ต้นบรรทัด
o (โอเล็ก) แทรกบรรทัดด้านล่าง cursor
O (โอใหญ่) แทรกบรรทัดด้านบน cursor

Last Line Mode
Key ความหมาย / ผลการใช้
:q ออกจากโปรแกรม
:w บันทึก
:wq บันทึกแล้วออกจากโปรแกรม
:w! filename บันทึกไฟล์ทับ filename
:e! filename open filename
:/string ค้นหาข้อความที่ต้องการ โดย string คือข้อความที่ต้องการ
:help ดูคำสั่งต่างๆ
:set nu แสดงหมายเลขบรรทัด
:set nonu ไม่แสดงหมายเลขบรรทัด
:set window=20 กำหนดขนาดหน้าต่างของ vi กรณีนี้กำหนดเป็น 20 บรรทัด
:set all ตรวจสอบค่าของ option หลังคำสั่ง set ทั้งหมดที่มีอยู่
:s/old word/new word หา old word แล้วแทนที่ด้วย new word คำแรกที่เจอใน line นั้น
:s/old word/new word/g หา old word แล้วแทนที่ด้วย new word ทั้งหมดใน line นั้น
:%s/old word/new word/g หา old word แล้วแทนที่ด้วย new word ทั้งหมดในไฟล์

การตั้งเวลาด้วย crontab

July 20th, 2009

การตั้งเวลาบน Linux สามารถทำได้โดยการใช้ crontab เข้ามาช่วยครับ มาดูวิธีและความหมายการใช้งานกันครับ

crontab คืออะไร
crontab เป็น simple text file ที่ประกอบด้วยรายการคำสั่งที่จะให้รันตามเวลาที่กำหนด โดยคำสั่งดังกล่าวจะสัมพันธ์กับเวลาในการรัน ที่ถูกควบคุมจาก cron daemon และถูก executed ใน system’s background ข้อมูลเพิ่มเติมเกี่ยวกับ crontab สามารถดูได้จาก crontab’s man page

crontab ทำงานอย่างไร
ระบบจะรักษา (maintain) crontab ของแต่ละ user ไว้ในระบบ การแก้ไขหรือสร้าง crontab คุณจะต้องใช้ text editor ที่ระบบได้กำหนดไว้แล้ว โดย nono text editor เป็น default text editor บนระบบ ubuntu ของผู้เีขียนที่ใช้ทดลอง ซึ่ง text editor ดังกล่าวนี้จะต้องเปิดขึ้นมาด้วยคำสั่ง crontab ที่ใช้ option เป็น -e (crontab -e) โดยการสร้าง crontab ให้ใ้ช้คำสั่งดังนี้ :

#crontab -e
เมื่อ ใช้คำสั่ง crontab -e ระบบจะเปิด nano text editor ขึ้นมาเป็น blank window เพื่อให้เราป้อนเวลาและคำสั่ง สำหรับการตั้งเวลาดังรูปข้างล่าง โดยแต่ละบรรทัดจะแทน separate crontab entry ที่รู้จักกันในชื่อ “cron job” ถ้าคุณไ่ม่คุ้นเคยกับ nono text editor คุณควรจะศึกษาข้อมูลเพิ่มเติมจากแหล่งข้อมูลนอกเหนือจากที่นี้

Crontab Sections
แต่ละ section จะถูกแยกโดยหนึ่งช่องว่าง (space) ซึ่งในส่วนของ section สุดท้าย (command section) จะมี space เป็น 1 space หรือมากกว่า ทั้งนี้จะไม่อนุญาตให้มี space มากกว่า 1 space ระหว่าง section 1-5 โดย section 1-5 จะถูกใช้เพื่อแสดงว่างาน (task) จะถูก executed เป็นเวลาบ่อยแค่ไหน โดยรูปแบบของ cron job จะเป็นดังนี้ :

minute (0-59), hour (0-23, 0 = midnight), day (1-31), month (1-12), weekday (0-6, 0 = Sunday), command

รุปแบบที่ 1
01 04 1 1 1 /usr/bin/somedirectory/somecommand
หมายถึงจะมีการรันคำสั่ง /usr/bin/somedirectory/somecommand ที่เวลา 4:01am ในวันที่ 1 ที่เป็นวันจันทร์ของเดือนมกราคม

เราสามารถใช้เครื่องหมาย * เพื่อแทนความหมาย “ทุก ๆ” (ทุกนาที, ทุกชั่วโมง,ทุกวัน, ทุกเดือน, ทุกวันของสัปดาห์)

รูปแบบที่ 2
01 04 * * * /usr/bin/somedirectory/somecommand
หมายถึงจะมีการรันคำสั่ง /usr/bin/somedirectory/somecommand ที่เวลา 4:01am ทุก ๆ วันของทุก ๆ เดือน

เรา สามารถใช้คอมม่า (,) เพื่อให้มีการรันกมากว่า 1 instance ของคำสั่งภายในช่วงเวลา และใช้เครื่องหมาย dash (-) เพื่อแทนคำสั่งที่ต่อเนื่องได้

รูปแบบที่ 3
01,31 04,05 1-15 1,6 * /usr/bin/somedirectory/somecommand
หมายถึงจะมีการรันคำสั่งที่นาทีที่ 1 และ 31 ถัดจากเวลา 4:00am และ 5:00am (4:01am, 4:31am, 5:01am, 5:31am) ในวันที่ 1-15 ของเดือนมกราคมและมิถุนายน

ข้อความ “/usr/bin/somedirectory/somecommand” จากที่กล่าวมาแสดงถึงงาน (task) ที่จะรัน ณ เวลาที่กำหนด ซึ่งมีการแนะนำว่าควรจะเป็น full path command ดังรูปแบบที่กล่าวมา โดย crontab จะเริ่มรันคำสั่งทันทีเมื่อการแ้ก้ไข (crontab -e) ถูกต้องและมีการบันทึกแล้ว

Crontab Options
crontab -l : แสดง crontab ที่มีอยู่
crontab -r : เป็นการลบ crontab ที่มีอยู่
crontab -e : เป็นการแก้ไข crontab ที่มีอยู่ ผ่าน editor ที่ถูกระบุไว้ใน environment variables ซึ่งในที่นี้เป็น nano editor
EDITOR=”vi” ; export EDITOR
crontab -e :
เป็นการแก้ไข crontab ที่มีอยู่ ผ่าน editor vi ที่ไม่อนุญาติให้สามารถเข้าไปแก้ไขได้โดยตรง ของ crontab -e

หลังจากที่ exit ออกจาก editor แล้ว crontab ที่เราแก้ไขจะุูถูกตรวจสอบความถูกต้องจากระบบ และถ้าไม่มีความผิดพลาด ก็จะถูกติดตั้งโดยอัตโนมัติ

Crontab Example

ตัวอย่างที่ 1
45 04 * * * /usr/sbin/chkrootkit && /usr/bin/updatedb
หมายถึงเป็นกำหนดให้ crontab มีการรัน updatedb ซึ่งจะเป็นการอัพเดต slocate database ทุก ๆ เช้าเวลา 4:45am วิธีการทำก็คือให้พิมพ์คำว่า crontab -e และพิมพ์ข้อความหนึ่งบรรทัดดังกล่าวใต้บรรทัิดต่อไปนี้ :
# m h dom mon dow command

แล้วให้บันทึกการแก้ไขและออกจาก editor

ถ้าเรากำหนด crontab ไม่ถูกต้องตามรูปแบบจะมีข้อความฟ้องดังตัวอย่างดังนี้ :
“/tmp/crontab.P7vQuf/crontab”:2: bad day-of-month
errors in crontab file, can’t install.
Do you want to retry the same edit?

เรา สามารถใช้ double-ampersand (&&) ในส่วนของ command section เพื่อรันคำสั่งหลาย ๆ คำสั่งที่ติดต่ีอกัน (consecutively) ได้

ตัวอย่างที่ 2
45 04 * * * /usr/sbin/chkrootkit && /usr/bin/updatedb
หมายถึงเป็นการรัน chkrootkit และ updatedb ทีุ่เวลา 4:45am ของทุกวัน

ตัวอย่างที่ 3
10 3 * * * /usr/bin/foo
หมายถึงเป็น /usr/bin/foo ที่เวลา 3:10pm ของทุกวันจันทร์

จบแล้วครับ เป็นไงมั้งครับสำหรับความหมายและการใช้งาน ถ้าติดปัญหาประการใด comment ถามมาได้เลยนะครับ ขอบคุณครับ