หน้าเว็บ

วันเสาร์ที่ 10 มกราคม พ.ศ. 2552

คำสั่งใช้แทน NetStumbler บน Vista

ปัญหาคือผมโหลด NetStumbler มาเพื่อหารายละเอียด access point ที่เปิดไว้ แต่ปรากฎว่าเจ้า NetStumbler มันไม่ support Vista ซะนั่น

ดังนั้นก็เจอมีวิธีที่ง่ายๆแต่ใช้ได้คือ
1. เข้า cmd
2. สั่ง
netsh wlan show networks mode=bssid

เป็นอันเสร็จ

ระบบที่ทดสอบ
OS: MS Windows Vista SP1

วันอังคารที่ 6 มกราคม พ.ศ. 2552

ปัญหา Cannot modify header information - headers already sent .... บน PHP

ปัญหานี้เกิดจาก มีการส่ง header ไปใหม่หลังจากที่มีการส่ง header และ content ไปครั้งนึงแล้ว

วิธีตรวจแก้ปัญหา
1. ลองดูว่าก่อนที่เรามีการส่ง header ไปใหม่ (เช่น คำสั่ง header()) นั้นมีการ echo หรือ print อะไรออกแล้วหรือไม่ ถ้ามีต้องเอาออกถึงจะใช้คำสั่งเพื่อส่ง header ไปได้

2. ดูว่าด้านหน้า tag ตอนจบ มีเว้นวรรคซ่อนหรือ whitespace รูปแบบอื่นอยู่หรือไม่ กรณีนี้บางครั้งมักเกิดจากไฟล์ UTF-8 แล้วมีการเติม BOM ไว้ที่เริ่มไฟล์ (แต่จะมองไม่เห็น) เช่น ใช้ notepad2 แล้ว encoding เป็น UTF-8 with signature เป็นต้น ให้แก้โดยใช้ UTF-8 เฉยๆ

ระบบที่ทดสอบ
PHP: 5.2

อ้างอิง
http://www.tech-recipes.com/rx/1489/solve-php-error-cannot-modify-header-information-headers-already-sent/

วันอังคารที่ 16 ธันวาคม พ.ศ. 2551

แก้ปัญหา Power Calibration Error ใน Nero

ไปคุ้ยๆแล้วเจอหลายวิธีด้วย แต่เจอหน้านึงรวมไปหลายอันก็ขอแปลกันมาเลยแล้วกัน

ซึ่งวิธีที่ผมใช้แล้วได้ผลคือข้อ 3 ครับ โดยผมทำที่เครื่อง Windows XP SP2 และ Nero 8

1. ลองเปลี่ยนแผ่น เค้าบอกว่าปัญหานี้เกิดขึ้นบ่อยๆกับแผ่นเปล่าราคาถูกที่คุณภาพห่วย

2. ลองเบิร์นโดยใช้ความเร็วการเขียนแผ่นที่ต่ำลง

3. Disable การทำงานของ IMAPI Service (เค้าบอกว่ามักจะแก้ปัญหาได้ และก็ผมก็ใช้วิธีนี้แล้วเวิร์ค)
-ไปที่ Control Panel -> Administrative Tools -> Services
- หา service ที่ชื่อ "IMAPI CD-Burning COM Service", คลิ๊กขวาแล้วเลือก properties
- เปลี่ยน Startup type เป็น Disabled.
- คลิ๊ก Apply.


4. ลองเปลี่ยน software ที่ใช้ในการเขียนแผ่นเป็นเวอร์ชันใหม่

5. ลอง upgrade เฟิร์มแวร์ของเครื่องเขียนแผ่น

6. ถ้าทำทุกวิธีข้างบนแล้วยังไม่ผ่านแสดงว่าปัญหาเกิดจากตัวอุปกรณ์เองไม่เกี่ยวกับซอฟต์แวร์ นำอุปกรณ์ไปให้ช่างทำความสะอาดเลนส์

7. ถ้ายังไม่ได้อีกก็แสดงว่าตัวหัวอ่านแผ่นคงเจ๊งไปแล้ว ไปหามาเปลี่ยนหรือซื้อใหม่ดีกว่า


ที่มา
http://www.megaleecher.net/Fix_Power_Calibration_Error
http://www.gidforums.com/t-1805.html

วันศุกร์ที่ 12 ธันวาคม พ.ศ. 2551

ใช้ python อ่านไฟล์ csv

วันนี้ต้องเขียนโปรแกรมอ่านค่าจากไฟล์ csv ซึ่งแปลงมาจากโปรแกรม spreadsheet (เช่น OOo Calc หรือ MS Excel) ก็เลยทดลองเขียนด้วย python ดู และไปเจอว่า python มี built-in module สำหรับจัดการ csv โดยเฉพาะเลย

สมมติว่าในไฟล์ filename.csv มีเนื้อหาไฟล์ดังนี้
3, a, xyz
8, t, www
4, x, abc

สามารถเขียนโปรแกรมได้แบบนี้
import csv

file = open("path/to/filename.csv", "r")
parser = csv.reader(file)

for field1, field2, field3 in parser:
print 'FIELD1=%s, FIELD2=%s, FIELD3=%s\n' % (field1, field2, field3)

file.close()

ผลลัพธ์ ได้ดังนี้

FIELD1=3, FIELD2=a, FIELD3=xyz
FIELD1= 8, FIELD2=t, FIELD3=www
FIELD1=4, FIELD2=x, FIELD3=abc

หรือว่าตรง for loop เราอาจเขียนแค่
for row in parser: แค่นี้ก็ได้ แล้วเวลาเรียกค่าก็ใช้ row[0], row[1], row[2] แบบนี้แทน

อ้างอิง
http://www.python.org/dev/peps/pep-0305/

วันจันทร์ที่ 8 ธันวาคม พ.ศ. 2551

รูป network icon สำหรับ Dia

สำหรับคนที่อยากทำ Network Diagram หรือ Network Map โดยใช้ Dia ซึ่งเป็นโปรแกรม Opensource (http://projects.gnome.org/dia/ หรือ dia-installer.sourceforge.net/ สำหรับ windows) แต่รู้สึกว่า ภาพมันไม่สวยเลย

ก็ไปค้นๆเจอคนใจดีทำ icon สำหรับอุปกรณ์ network เพื่อ Dia โดยเฉพาะ ถึงจะไม่มากเท่าไหร่ แต่ก็คลุมพวกอุปกรณ์พื้นฐานที่ใช้กันบ่อยๆอย่างพอเพียง

ภาพตัวอย่าง















ดาวน์โหลดได้ที่นี่เลย http://gnomediaicons.sourceforge.net/

แล้วก็แตกไฟล์ออกมา เอาของที่อยู่ใน sheets และ shapes ไปใส่ไว้ใน sheets และ shapes ที่ dia ในเครื่องเรา (เช่น /usr/local/dia หรือ C:\Program Files\dia)

โดยเวลาใช้งานรูปจะอยู่ในหมวด RIB-Network

วันพฤหัสบดีที่ 4 ธันวาคม พ.ศ. 2551

วิธีการ replace string ในหลายๆไฟล์ บน Linux

จริงๆแล้ววิธีการ replace string บน linux ทำได้หลายวิธี ขอลองนำเสนอ 2 วิธีด้วยกัน

วิธีแรก
ใช้ grep + perl
$ grep -rl OLDSTRING . | xargs perl -pi -e ’s/OLDSTRING/NEWSTRING/g’
วิธีที่สอง ใช้ grep + sed
$ grep -rl OLDSTRING . | xargs sed -e ’s/OLDSTRING/NEWSTRING/g’
อธิบาย
คำสั่ง grep จะช่วยเลือกไฟล์ที่มี OLDSTRING ประกอบอยู่โดยเริ่มตั้งแต่ current directory (.) เป็นต้นไป ซึ่งถ้าต้องการให้เริ่มที่ directory อื่นก็สามารถเปลี่ยน . เป็นรูปแบบอื่นได้

ส่วน option -r หมายถึงให้ recursive ทุกไฟล์และโฟลเดอร์
optoin -l หมายถึงเลือกเฉพาะไฟล์ที่มี OLDSTRING อยู่

ส่วน option ใน perl มีความหมายดังนี้
-e ที่อยู่ท้ายสุดคือ script ที่เราจะทำงาน นั่นคือคำสั่ง replace string global จาก OLDSTRING ให้เป็น NEWSTRING
-p คือให้ลูป script ด้วย
while (<>) {
# your script goes here
} continue {
print or die "-p destination: $!\n";
}
-i คือให้แทน <> ในลูปด้วยไฟล์ที่รับเข้ามา ซึ่งก็คือไฟล์ทั้งหมดที่รับมาจาก grep นั่นเอง

ส่วน xargs จะทำให้ perl รับอาร์กิวเมนต์ได้ไม่จำกัด คือ สามารถรองรับไฟล์จำนวนมากจาก grep ที่ส่งมาเป็นอาร์กิวเมนต์

ส่วนคำสั่ง sed นั้นเป็น stream editor ที่จะทำการ run คำสั่งที่ระบุไปยัง stream ของไฟล์ที่ส่งเข้ามาจาก grep
option -e คือ คือรับ expression script ที่จะกระทำกับ input ที่รับเข้ามา

ระบบที่ทดสอบ
OS: CentOS 5

วันพุธที่ 26 พฤศจิกายน พ.ศ. 2551

วิธีการเปิด Port แบบระบุ range ใน Windows Firewall

ปกติแล้ว Windows Firewall นั้นจะไม่มีให้เราใส่ช่วงของ Port ที่ต้องการเปิดได้ ถ้าต้องเปิด port จำนวนมากๆก็เหนื่อยอยู่

แต่ถ้าเขียน script run บน command line ก็จะช่วยให้สบายมากขึ้น

สมมติว่าถ้าเราต้องการเปิด port ช่วง 5000 ถึง 5100 เพื่อใช้สำหรับ FTP ก็สามารถสั่งได้แบบนี้

for /L %i in (5000,1,5100) do netsh firewall add portopening TCP %i "FTP %i"
โดยคำว่า "FTP %i" นั้นใช้เป็น prefix ว่าตั้งชื่อว่า "FTP วรรค หมายเลขport"

ระบบที่ทดสอบ

OS: Windows Server 2003