ไปคุ้ยๆแล้วเจอหลายวิธีด้วย แต่เจอหน้านึงรวมไปหลายอันก็ขอแปลกันมาเลยแล้วกัน
ซึ่งวิธีที่ผมใช้แล้วได้ผลคือข้อ 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
หน้าเว็บ
▼
วันอังคารที่ 16 ธันวาคม พ.ศ. 2551
วันศุกร์ที่ 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
สามารถเขียนโปรแกรมได้แบบนี้
ผลลัพธ์ ได้ดังนี้
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/
สมมติว่าในไฟล์ 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
ก็ไปค้นๆเจอคนใจดีทำ 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 + sed
อธิบาย
คำสั่ง 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
วิธีแรก ใช้ 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