Archive for the ‘Wired’ Category
Portfile Patchfile Patching 3 comments
ช่วงนี้กำลังนั่งเล่นกับ Apache CouchDB สำหรับใช้ในโปรเจคถัดไป อ่านวิธีการทำงานของมันแล้วรู้สึกค่อนข้างชอบพอสมควร ถึงแม้ในขณะนี้มันยัง “ไม่สมบูรณ์” และ “ไม่มีการ optimize ใดๆ” แต่การใช้งานโดยทั่วไปน่าจะเรียกได้ว่าเร็วพอควร แต่เอนทรี่นี้ไม่ได้มาสาธยาย CouchDB …
ปัญหามันมีอยู่ว่า หลังจากลง CouchDB ผ่านทาง MacPorts เรียบร้อยแล้ว ก็พบว่าไม่สามารถเข้าไปยัง Futon ที่เป็น Web Interface สำหรับดูแลข้อมูลในฐานข้อมูลได้ ก็เลยลองโพสถามใน couchdb-user ดู แล้วก็ได้คำตอบว่าเป็นเพราะบั๊กตัวหนึ่งของ Erlang (ภาษาที่ CouchDB ใช้เขียน)
บั๊กตัวนี้มีอยู่ว่า (เดาเอา เขียน Erlang ไม่เป็น) คำสั่ง calendar:localtime_to_universaltime จะไปเรียก mktime() โดยมีค่า is_dst เป็น True ซึ่งพออยู่ในเขตที่ไม่มี DST แล้ว mktime() จะคืนค่าออกมาเป็น -1 ทำให้ calendar:local_time_to_universal_time_dst ที่รับค่าจาก localtime_to_universaltime อีกต่อ จะได้ {{1969, 12, 31}, {23, 59, 59}} ไป ซึ่งเป็นเวลาก่อน Epoch บน Mac OS X และ UNIX-like อื่นๆ 1 วินาที และแน่นอนว่ามันต้อง error
วิธีการแก้ก็เพียงแค่ใช้ แพทช์ ที่ Paul Guyot โพสไว้ตอนแจ้งบั๊ก นำมาแพทช์เข้ากับซอร์สของ Erlang และคอมไพล์ใหม่ … อ๊ะ แล้วถ้าหากไม่อยากจะคอมไพล์ใหม่เอง แต่อยากใช้ MacPorts เหมือนเดิมล่ะ จะทำยังไง?
ต้องขอขอบคุณที่ MacPorts นั้นใช้การแพทช์ซอร์สเป็นปกติอยู่แล้ว ดังนั้นเราสามารถเพิ่มแพทช์นี้เข้าไปในรายการนั้นได้ผ่านทางไฟล์ Portfile ซึ่งปกติจะอยู่ใน /opt/local/var/macports/sources/rsync.macports.org/release/ports/ (สำหรับ Erlang ต้องเข้าไปใน lang/erlang อีกต่อ) โดยการย้ายไฟล์แพทช์ที่โหลดมาไปไว้ใน files/ และแก้ไข Portfile เพิ่มชื่อไฟล์ที่ย้ายมาลงไปยังบรรทัด patchfiles
หลังจากแก้ไข Portfile เรียบร้อยแล้ว ก็แค่สั่งลง Erlang ใหม่ เมื่อเปิด CouchDB ขึ้นมาอีกรอบ ก็จะไม่มีปัญหาในการเข้าไปยัง Futon แล้ว แต่ตอนนี้สงสัยว่าแพทช์นี้มีมาตั้งแต่ R12B-4 แล้วตอนนี้มันออก R12B-5 มาแล้ว มันจะได้ commit เร็วๆ นี้หรือเปล่า?
Hazel—Droplets—and You no comments
นั่งเล่น Hazel ตัว 14-day Trial อยู่ซักพักหนึ่ง เริ่มประทับใจในความสามารถของมัน เลยลองนั่งทำ droplet สำหรับอัพโหลดไฟล์ลง WebDAV สำหรับ instant file hosting ส่วนตัว ดู ดูเหมือนว่าจะทำได้ง่ายกว่าที่คิดไว้เยอะ วิธีการทำคือ สร้างไดเรคทอรี่เปล่าๆ ขึ้นมาหนึ่งอัน และเพิ่ม Rule ลงไป (ตั้งชื่อไว้ว่า “Upload file(s) to WebDAV server”)
- Date Added: is in the last 10 minutes
- Run shell script: embedded script
- Send Growl notification: with pattern “File(s) has been successfully uploaded.”
โค้ดสำหรับใช้อัพโหลดเป็นแค่ shell script ง่ายๆ เรียกหา curl แค่นั้น หน้าตาแบบนี้
#!/bin/bash for file in "$@"; do curl -u user:pass -T "$file" http://temp.hitoridake.com/ mv "$file" ~/.Trash/ done
ก่อนหน้านี้เกือบเสียเวลานั่งเขียนโค้ดเล็กๆ สำหรับอัพโหลดลง WebDAV เอาเองเสียแล้ว เพิ่งได้รู้ทีหลังว่าจริงๆ มันแค่ สั่ง curl -T file URL เอาก็ได้ พอเสร็จแล้วก็ลากไดเรคทอรี่เปล่าๆ ที่สร้างไปยัง Dock เวลาต้องการจะอัพโหลดไฟล์ไหนก็แค่โยนไฟล์ลงไดเรคทอรี่นั้นใน Dock ก็เป็นอันเสร็จเรียบร้อย
Transmission, Clutch, Gear no comments
Transmission ตั้งแต่เวอร์ชั่น 1.3 เป็นต้นมา เพิ่มฟีเจอร์สั่งงานผ่านหน้าเว็บ ถึงแม้มันจะหน้าตาเหมือนกันกับ Clutch เด๊ะๆ แต่เอาเข้าจริงแล้ว มันคือการเขียนใหม่หมด และเรียกใช้งาน JSON-RPC Interface ใหม่ที่ถูกเพิ่มมาในเวอร์ชั่นเดียวกัน โดยไม่ต้องผ่าน PHP เหมือนที่เคย
การติดตั้งบนลินุกซ์น่าจะเป็นไปได้ง่ายๆ เพียงแค่ลงแพคเกจ transmission-daemon (หรือ transmission-cli ใน Debian-based distro) แต่สำหรับในกรณีของ FreeBSD นั้น ตัวเว็บมันถูกแยกออกไปเป็นแพคเกจ transmission-web อีกต่อ ดังนั้นจึงต้องลงด้วยกันสองแพคเกจ
/usr/ports/net-p2p/transmission-daemon/usr/ports/www/transmission-web
หลังจากลงเสร็จเรียบร้อย เนื่องจากว่า transmission-daemon นั้นไม่แถม init-script มาให้ จึงจำเป็นต้องเขียนเอง โชคดีที่บน FreeBSD นั้น การเขียน init-script ให้เป็นไปตามต้องการนั้นง่ายมาก ที่ผมเขียนไว้มีหน้าตาแบบนี้ (โยนลง /usr/local/etc/rc.d/transmission)
Fix for once no comments
ปัญหาตลกๆ ที่เกิดกับ MPlayer บน Mac OS X มานานแสนนานก็คือเมื่อปรับการแสดงผลเป็น CoreVideo แบบฝังติดกับตัว player มันจะมีปัญหาว่าไม่สามารถเปิดวีดีโอใดๆ ได้เลย (อย่างน้อยที่สุดบนเครื่องผม) จริงๆ เรื่องนี้เคยเขียนทางแก้ไปแล้วเมื่อประมาณบล็อกเก่าเมื่อปีถึงสองปีก่อน วันนี้มารื้อฟื้นกันอีกหน่อย
ปัญหานี้ดูสาเหตุได้จากการบังคับเปิด mplayer ด้วย -vo macosx:shared_buffer ในกรณีที่เจอ มันเกิดจากค่า shmall ที่ใช้สำหรับจำกัดขนาดของ shared-memory ที่จะถูก allocate เซ็ทไว้ต่ำไป ที่ 1024 bytes ทางแก้ไขก็ง่ายมาก สั่ง sysctl -w kern.sysv.shmall=4096 เป็นอันเสร็จสิ้น
ถ้าหากอยากให้ค่านี้อยู่ถาวรใน Leopard ก็ทำการเพิ่ม /etc/sysctl.conf ไปว่า
kern.sysv.shmall=4096
เท่านี้ก็หมดปัญหาเรื่องเปิดวีดีโอไม่ได้ไปเปราะหนึ่ง ของแถมอีกอันหนึ่งที่เพิ่งเจอสดๆ ร้อนๆ เลยก็คือ MPlayer OSX Extended ที่เป็น fork ของ MPlayer OSX อีกที เพิ่มฟีเจอร์และปรับปรุงอินเตอร์เฟส แถมด้วย build ของ MPlayer ที่ใหม่และครบพอสมควร
ว่างๆ อยากจะเรียน Objective-C กับ Cocoa มั่ง อยากจะเอา X-Chat Aqua มาทำต่อเอง
Secure Your Account! 2 comments
จากเรื่อง On the phone โดนถามมาหลายทีว่ามันผิดแปลกอะไรตรงไหน คำตอบก็คือเรื่องความปลอดภัยของข้อมูลสมาชิกในเว็บไซต์ร้านค้าแห่งนั้น ที่ผมคงจะไม่ซื้ออะไรอีกแล้ว
ย้อนความกันก่อนว่าร้านค้าแห่งนี้ มีระบบหนึ่งที่ให้คุณโอนเงินจากธนาคาร (หรือหักจากบัตรเครดิต) ไปเก็บไว้ใน account เพื่อใช้ซื้อของต่อๆ ไป จะได้ไม่ต้องมาลำบากในการโอนเงินบ่อยๆ ซึ่งนั่นก็ดูเป็นเรื่องที่อำนวยความสะดวกสำหรับผู้ที่ไม่มีบัตรเครดิตได้ดี
ปัญหามันอยู่ที่ว่า ร้านค้าแห่งนี้ไม่มีการป้องกันความปลอดภัยของบัญชีสมาชิกผู้ใช้ที่ยินดีจะฝากเงินจำนวนนั้นไปทิ้งไว้ใน account ที่ดีพอนอกจากการใช้ SSL (สำหรับเข้ารหัสข้อมูลที่ส่งระหว่างบราวเซอร์กับเว็บเซิฟเวอร์) ดังนั้นก็หมายถึง นั่นก็คือรหัสผ่านที่ถูกตั้งไว้ในเว็บฯ ไม่มีการเข้ารหัสใดๆ และยังให้พนักงานของร้านเปิดดูได้ตามสะดวกอีกต่างหาก
แล้วปัญหามันคืออะไร ปัญหามันอยู่ที่ว่า ในกรณีที่คุณมีรหัสผ่านเพียงชุดเดียว–ซึ่งเป็นเรื่องที่ไม่ควร–และสมัครสมาชิกกับเว็บไซต์แห่งนี้ พนักงานในร้านค้าสามารถเปิดดูอีเมลล์สำคัญๆ ของคุณได้ ผ่านทางรหัสผ่านและอีเมลล์ที่คุณสมัครสมาชิกไว้