<body><script type="text/javascript"> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener("load", function(){ object[attribute] = val; }, false); } else { window.attachEvent('onload', function(){ object[attribute] = val; }); } } </script> <iframe src="http://www.blogger.com/navbar.g?targetBlogID=7355927&amp;blogName=Poonlap%27s+Linux+blog&amp;publishMode=PUBLISH_MODE_BLOGSPOT&amp;navbarType=BLUE&amp;layoutType=CLASSIC&amp;searchRoot=http%3A%2F%2Fpoonlap.blogspot.com%2Fsearch&amp;blogLocale=en_US&amp;homepageUrl=http%3A%2F%2Fpoonlap.blogspot.com%2F" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" height="30px" width="100%" id="navbar-iframe" allowtransparency="true" title="Blogger Navigation and Search"></iframe> <div></div>
 Poonlap's Linux blog  ใช้ซอฟต์แวร์เสรี, มีทางเลือก, ประเทืองปัญญา, พึ่งพาตนเอง.
 
      « Home

เนื้อหาที่ผ่านมา

ลาก่อน blogspot
ใช้ ange-ftp กับ emacs
บันทึกด้วย script
ปีใหม่แล้วเวลาช้าลง 1 วินาที
เปรียบ Java กับ Ruby (ด้วยความหนาของหนังสือ)
แปลคำศัพท์ด้วย Longdo dictionary จาก Firefox
Object Oriented ใน ruby
พวกคำย่อ
ruby เบื้องต้น
del.icio.us/poonlap
 
      เนื้อหาในอดีต
06/01/2004 - 07/01/2004
07/01/2004 - 08/01/2004
08/01/2004 - 09/01/2004
09/01/2004 - 10/01/2004
10/01/2004 - 11/01/2004
11/01/2004 - 12/01/2004
12/01/2004 - 01/01/2005
01/01/2005 - 02/01/2005
02/01/2005 - 03/01/2005
03/01/2005 - 04/01/2005
04/01/2005 - 05/01/2005
05/01/2005 - 06/01/2005
06/01/2005 - 07/01/2005
07/01/2005 - 08/01/2005
08/01/2005 - 09/01/2005
09/01/2005 - 10/01/2005
10/01/2005 - 11/01/2005
11/01/2005 - 12/01/2005
12/01/2005 - 01/01/2006
01/01/2006 - 02/01/2006
02/01/2006 - 03/01/2006
03/01/2006 - 04/01/2006
 
      เชิ่อมโยง

รูปประกอบ (Flickr)
โค้ด
รูปประกอบ (อดีต)
deli.icio.us/poonlap

Thai Linux Working group
TLWG Planet
Blognone
Home at LTN
Bact's blog
Hui blog
Theppitak's blog
Noi's life & thoughts
Kitty.in.th
Sf-alpha
Vee blog
too - blogin'
Mk's blog
Pok's blogger
Vmlinix blog
Sothorn's Web log
คุณอุทัย
DrRider's Blog
Donga's memories

This page is powered by Blogger. Isn't yours?

Creative Commons License

ธนาบุตรโฟโต้บุ๊ค
อัดรูปดิจิตอล ทำสมุดภาพของคุณเอง
รอรับได้. ท่องเที่ยว แต่งงาน ฯลฯ
www.tanabutr.co.th/photobook

ใช้ ange-ftp กับ emacs

ที่อยู่ใหม่ของ Poonlap's Linux blog : http://mm.co.th/poonlap

เมื่อวานเขียน PHP แล้วรู้สึกว่า emacs มันไม่มี php-mode เลยไปลองหาดูจาก google ว่ามันน่าจะมีใครทำมานะ แล้วก็มีจริงๆด้วย. พอจะดาว์นโหลดมาใช้ก็เอะใจว่ามันน่าจะมีแพ็กเกจใน Debian อยู่แล้วเลยลอง
# apt-cache search php | grep emacs
html-helper-mode - A popular HTML editing mode for emacs
ดูไม่น่าใช่ ก็เลยเปลี่ยนคีย์เวิร์ดที่ใช้ค้นหา
# apt-cache search emacs | grep php
php-elisp - Emacs support for php files
หาสองแบบก็ให้สองคำตอบ. ดูแล้วน่าจะเป็นตัวที่สองเลย apt-get มาใช้.

ปัญหาต่อไปคือเจ้าไฟล์ php ที่ต้องการแก้นี้มันอยู่บน web hosting เซิร์ฟเวอร์ ซึ่งส่วนใหญ่เขาก็มีพวก Plesk ควบคุมให้ และก็มี ftp ให้ด้วย. ตอนแรกๆก็ไม่คิดอะไรมากเขียน php เสร็จก็อัปโหลดด้วย ftp client หรืออะไรก็ว่าไป. เขียนไปเขียนมาชักไม่สะดวก, มันน่าจะ save แล้วอัปโหลดขึ้น ftp ให้อัตโนมัติเลย. ทำให้นึกถึงเจ้า ange-ftp ใน emacs ขึ้นมา.

Ange-ftp เป็นวิธีการใช้ไฟล์ที่อยู่ใน ftp เซิร์ฟเวอร์เหมือนกับไฟล์ที่อยู่ในฮาร์ดดิสก์ธรรมดา. วิธีเปิดอ่านไฟล์ก็เหมือนกับเปิดไฟล์อื่นๆคือใช้ C-x C-f (find-file). ตรง mini-buffer แืทนที่จะใส่ชื่อไฟล์ก็ใส่เป็นชื่อและ ftp ไซด์แบบนี้

แล้วก็กด Enter มันจะถามรหัสผ่าน

หลังจากนั้น emacs ก็จะลิสไดเรกทอรีใน ftp ให้ แล้วเราก็เลือกไฟล์ที่ต้องการเปิดมาใช้ได้เลยเหมือนกับไฟล์ธรรมดาที่อยู่ในเครื่องตัวเอง. แก้ไขเสร็จแล้วเราก็แค่ save เหมือนกับเซฟไฟล์ธรรมดาคือกด C-x C-s แล้ว ange-ftp มันก็อัปโหลดไฟล์ที่แก้ไขแล้วไปให้ ftp โดยอัตโนมัติ. สะดวกดีครับ.

นอกจากความสะดวกเรื่อง download/upload แล้วตอนเลือกเปิดไฟล์ ถ้าเขียน /user@ftp.somewhere.com: แล้วกด Tab Tab แน่นอนว่า emacs ก็จะเติมเต็มชื่อไฟล์ที่เป็นไปได้ให้ด้วยเหมือนกับการเปิดไฟล์ธรรมดา. เป็นเทคนิคเก่าๆที่ใช้ได้ดีเสมอครับ.

ใช้ ange-ftp กับ emacs - Wednesday, February 15, 2006 -

บันทึกด้วย script

ที่อยู่ใหม่ของ Poonlap's Linux blog : http://mm.co.th/poonlap

ไม่ได้เขียน blog ตั้งนาน มาเขียนอีกทีก็เกินเดือนไปแล้ว. ช่วงที่ผ่านมามีอะไรหลายอย่างที่ต้องทำ อันหนึ่งคือจัดคอร์สอบรม Perl Programming 15 วันให้กับบริษัทพัฒนาซอฟต์แวร์แห่งหนึ่ง. ถ้าเทรนคนเดียวก็อ่วมแน่, ดีที่ไม่ได้เทรนคนเดียว.

เข้าเรื่องคือใน UNIX มันมีคำสั่งที่ช่วยเก็บทุกอย่างที่พิมพ์หรือแสดงในเทอร์มินอลที่ชื่อว่า script. โปรแกรมนี้จะเริ่มเชลล์ตัวใหม่และบันทึกทุกอย่างที่เขียนหรือที่แสดงทางหน้าจอลงในไฟล์ แล้วเอามาดูได้ทีหลัง. ตรงนี้ก็มีประโยชน์ถ้าเราทำอะไรๆที่สำคัญๆแล้วอยากจะมาดูทีหลังว่าทำอะไรไปบ้างก็ใช้คำสั่งนี้. ที่ผมชอบใช้ก็จะเป็นตอนนี้ต้องติดตั้งโปรแกรมอะไรบางอย่าง, แทนที่จะจดบันทึกว่าทำอย่างไรบ้างก็ให้ script บันทึกไว้แล้วเอามาดูทีหลัง.

คำสั่ง script ถ้าสั่งโดยไม่มีอาร์กิวเมนต์ก็จะเก็บบันทึกสิ่งที่แสดงบนหน้าจอไว้ในไฟล์ typescript

$ script
Script started, file is typescript
$ ls
bin/    dev/     home/    lost+found/  opt/   sbin/  typescript
boot/   etc/     initrd/  media/       proc/  sys/   usr/
cdrom/  floppy/  lib/     mnt/         root/  tmp/   var/
$ exit
exit
Script done, file is typescript
ในตัวอย่างหลังจากที่สั่ง script แล้วก็สั่งคำสั่ง ls ต่อ. ก็หมายความว่าผลลัพธ์ของ ls ก็จะถูกบันทึกในไฟล์ typescript
$ cat typescript
Script started on Mon Feb 13 21:02:35 2006
$ ls
bin/    dev/     home/    lost+found/  opt/   sbin/  typescript
boot/   etc/     initrd/  media/       proc/  sys/   usr/
cdrom/  floppy/  lib/     mnt/         root/  tmp/   var/
$ exit

Script done on Mon Feb 13 21:02:37 2006
คำสั่ง script รับอาร์กิวเมนต์เป็นชื่อไฟล์ที่ต้องการบันทึกด้วย เช่น script log.txt ก็จะเป็นการบันทึกสิ่งที่พิมพ์หรือแสดงในไฟล์ชื่อ log.txt. นอกจากนั้นยังมีตัวเลือก -t สำหรับแสดงเวลาที่พิมพ์หรือแสดงสิ่งต่างๆบนเทอร์มินอลด้วย. วิธีใช้ต้องรีไดเรก STDERR ไปเก็บไว้ในไฟล์เองเช่น
$ script -t log.txt 2> time.info
ตัวอย่างเป็นการบันทึกเทอร์มินอลไว้ในไฟล์ log.txt และเก็บข้อมูลที่เกี่ยวกับเวลาที่พิมพ์หรือแสดงไว้ในไฟล์ time.info
$ cat time.info
0.561127 20
0.060456 2
0.003580 1
2.395590 1
0.131139 2
0.116827 63
0.015795 60
0.001355 62
0.001024 20
0.002928 2
0.014579 6
ดูไฟล์ time.info แล้วก็ไม่ค่อยรู้เรื่องเท่าไรนักเพราะจริงๆแล้วไม่ได้ให้เราดู แต่ไฟล์นี้จะใช้กับโปรแกรม scriptreplay ซึ่งเหมือนกับเปิดวิดิโอให้เราดู. อัีนนี้ต้องลองดูเองครับ.
$ scriptreplay time.info log.txt
จำได้ว่าแต่ก่อน (เมื่อหลายสิบปีที่แล้ว) คำสั่ง script มันก็เก็บแค่ไฟล์ แต่เดี๋ยวนี้มีแบบ replay ให้ดูด้วย. เข้าท่าดีครับ.
บันทึกด้วย script - Monday, February 13, 2006 -


 
Search this blog:


Google Home - Blogger - Blogger Templates

© 2005 Poonlap's Linux blog