Tags:

เห็นโปรเจคท์อื่นเขาพิมพ์กันสั้น ๆ แต่เราอยากพิมพ์ยาว ๆ แหะ :P โครงการนี้ตั้งใจจะพัฒนาปลั๊กอินสำหรับโปรแกรมเล่นเพลงที่เป็นที่นิยม เช่น iTunes Songbird ฯลฯ เพื่อดึงปกอัลบัมเพลงจาก CoverShare.com ผ่านทาง CoverShare API โดยในขณะนี้ พัฒนาปลั๊กอินสำหรับ iTunes บน OS X และ Songbird เสร็จแล้ว เป้าหมายต่อไปคือ iTunes บน Windows

ที่มาของโครงการนี้ เกิดจากการที่ผมใช้บริการของเว็บ CoverShare เป็นประจำอยู่แล้ว แต่ปกติก็ต้องไปค้นหาปกอัลบัมจากเว็บทีละอัน ซึ่งก็เวลาพอควร และเห็นว่าทางเว็บมี API ให้บริการ (จริง ๆ อาจจะมีนานแล้ว แต่ผมพึ่งเห็น -_-) ก็เลยคิดว่า มานั่งเขียนปลั๊กอินสำหรับ iTunes ให้มันไปติดต่อ API เพื่อหาปกอัลบัมที่ต้องการคงไม่ยาก แล้วพอเขียนเสร็จประกาศออกไป ก็มีคนเรียกร้องว่า อยากได้ปลั๊กอินสำหรับ Songbird บ้าง จริง ๆ แล้ว ผมไม่ใช้ Songbird เพราะว่ามันหนักแรงเครื่อง แต่ในเมื่อมีคนเรียกร้องก็ต้องสนองตอบ (ช่วงนั้นค่อน ๆ fall ด้วย ก็เลยหาอะไรทำ เผื่อจะรู้สึกดีขึ้น สรุปก็เลยได้ปลั๊กอินสำหรับสองโปรแกรมมา แต่ก็มีคนเรียกร้องว่าอยากได้สำหรับ iTunes บน Windows เพราะว่า คนใช้ iTunes บน Windows เยอะกว่าบน OS X ก็คงต้องรอไปก่อน เพราะยังไม่มีเวลา

พอจะเริ่มเขียน ก็มีปัญหาคือ ผมเขียน AppleScript ไม่เป็น เนื่องจากการเขียนปลั๊กอินสำหรับ iTunes ที่ง่ายที่สุดก็คือการเขียน Script ซึ่งก็ต้องเขียนในภาษา AppleScript เมื่อผมลองเปิดดูตัวอย่างที่มี ๆ อยู่ในเครื่อง ก็พบว่า เป็นภาษาที่ชวนปวดหัวมาก (ได้อารมณ์เดียวกับการเขียน Cobol) ก็เลยเปลี่ยนแผน แทนที่จะเขียนตรง ๆ ก็ไปหาโค้คคนอื่นมาแก้เอาดีกว่า สำหรับผมแล้ว การเอาโค้คคนอื่นมาแก้ เป็นวิธีการเรียนภาษาใหม่ ๆ ที่ไวที่สุด เพราะเราสามารถจับธรรมชาติของภาษาได้เร็ว โดยดูจากวิธีการที่ภาษานั้นใช้ในการแก้ปัญหา หรือว่า การสร้างอัลกอริธึมหนึ่ง ๆ ขึ้นมา แต่ที่สำคัญคือ เราต้องรู้ว่า โค้ดที่เราเอามาแก้นั้น เขาเขียนขึ้นมาเพื่ออะไร แล้วใช้วิธีการ เทคนิค หรือว่าอัลกอริธึมใดในการแก้ปัญหา เช่นเดียวกันกับตอนที่เขียนปลั๊กอินสำหรับ Songbird ซึ่งต้องเขียนเป็น XUL + JavaScript ผมเขียน JavaScript เป็น แต่ไม่เคยเขียน XUL ก็ได้อาศัยโค้คของคนอื่นมาแกะ ๆ เอาเหมือนกัน

เมื่อได้โค้ดตัวอย่างแล้ว ผมก็แก้โน้นแก้นี่ แต่ก็เริ่มติดปัญหาว่าโค้ดที่ได้มา มันไม่ได้ตามที่ต้องการ ก็เลยต้องไปเปิด Library ของ AppleScript ขึ้นมาดู สำหรับนักพัฒนาโปรแกรมแล้ว Library หรือว่า Reference ถือว่าเป็นเพื่อนตายเลยทีเดียว นักพัฒนาโปรแกรมที่อ่าน Library/Reference ของภาษาหรือว่า Platform ที่ตัวเองเขียนไม่เป็น จะไม่สามารถเอาดีทางการเขียนโปรแกรมได้ โชคดีที่ว่า Library ของ AppleScript ทำมาค่อนข้างดี ผมจึงสามารถหาทางแก้ปัญหาที่พบได้ไม่ยาก แต่ว่า Reference ของ Songbird ห่วยมาก ทำให้เวลาเจอปัญหาอะไร หรือว่าอยากจะทำอะไรสักอย่าง จะเสียเวลานานมาก สุดท้ายก็ต้องใช้ Google ช่วยหา เวลาที่มีปัญหาอะไรที่แก้ไม่ได้ ให้ตั้งสมมุติฐานไว้ก่อนว่า เคยมีคนแก้ปัญหานี้แล้ว สิ่งที่ต้องทำก็คือการไปค้นหาโดยใช้ Search Engine แบบ Google ให้เจอ ถ้าเป็นปัญหาที่มี Error Message ก็ลองเอา Error Message นั่นแหละ ไปค้นหาดู แต่ถ้าต้องการแนวคิดว่าจะเขียนโปรแกรมอย่างไร ก็ต้องลองหา Keyword ที่จะใช้ในการค้นหา แนะนำว่า ให้มีทั้งประธาน หรือ กรรม และ กิริยา เช่น จะทำอะไร กับอะไร เป็นต้น

เมื่อเขียนไปสักพัก ก็ต้องทดสอบโปรแกรม วิธีการทดสอบโปรแกรมง่าย ๆ ก็คือการสั่งให้โปรแกรมพิมพ์สถานะของโปรแกรมออกมาให้ดู (ภาษาชาวบ้านก็เรียกว่า printf ออกมาดู) สำหรับ AppleScript นั้น ไม่ลำบากมาก เพราะว่าเป็น Script ที่เรียกใช้จาก iTunes ได้โดยตรง พอแก้ไขอะไร ก็ทดสอบได้เลย แต่ว่าสำหรับ Songbird นั้นจะค่อนข้างลำบาก เพราะว่าต้องทำ package และ deploy เข้าไปใน Songbird ก่อนถึงจะทดสอบได้ (ต้อง restart Songbird สองครั้ง) ผมพยายามใช้ Javascript Debugger ใน Songbird ก็ไม่สำเร็จเท่าไหร่ (ใช้ไม่เป็นนั่นเอง และไม่มีความอดทนพอที่จะหัดใช้) ก็เลยทนใช้ alert กับ restart Songbird ไปเรื่อย ๆ ก็เอาจนทดสอบได้สำเร็จ การใช้ debugger หรือว่า tracce พวกนี้ เป็นทักษะที่นักพัฒนาทุกคนต้องมี และต้องฝึกให้เก่ง ไม่มีใครสอนใคร debug ได้ครับ มันเป็นเรื่องของประสบการณ์ สัญชาติญาณ และ ความอดทนอย่างเดียว ถ้าคิดอยากเอาดีทางการเขียนโปรแกรม ก็ต้องฝึกไล่โค้ด กับฝึก debug นี่แหละ

ใช้เวลาเขียนสองสามคืน ก็เขียนเสร็จสำหรับทั้งสองโปรแกรม สรุปว่่างานนี้เขียนเอามัน (เพราะว่าผมเองก็ไม่ได้ใช้ Songbird) แต่ก็รู้สึกดีพอควร เอาไว้มีเวลา จะเขียนสำหรับ iTunes บน Windows และโปรแกรมอื่น ๆ ละกัน ใครที่อยากช่วยเขียน หรือว่าแจ้งบัก เชิญที่ http://code.google.com/p/covershare-plugins/ ครับ

Comments

By: DoraeMew
AndroidSymbianUbuntuWindows
DoraeMew's blog
on 22/12/08 18:22 #77319 toggle
DoraeMew's picture

ขอบคุณคร้าบ เดี๋ยวต้องไปลองบน Mac เสียหน่อย :)


บู๊ลิ้ม

By: 0xffeeddaa
0xffeeddaa's blog
on 22/12/08 18:48 #77324 toggle
0xffeeddaa's picture

ขอบคุณครับ ผมลองกับ itunes แล้วเวิร​์คมากครับ แต่มีข้อเสียนิดหน่อย ตรงไม่มี process ให้ดู เดี๋ยวอาจจะขอแจมหน่อยนะครับ

By: pruet
WriterBlackberryUbuntu
pruet's blog
on 23/12/08 3:25 #77379 Reply to:77324 toggle
pruet's picture

เชิญยำได้ตามสบายเลยครับ มี gmail หรือเปล่าครับ ผมจะได้ add เข้าไปใน google code

By: 0xffeeddaa
0xffeeddaa's blog
on 23/12/08 14:54 #77398 Reply to:77379 toggle
0xffeeddaa's picture

..

By: Dio_O
iPhoneUbuntu
Dio_O's blog
on 22/12/08 20:51 #77334 toggle
Dio_O's picture

เออ พอดีผมไม่ค่อยได้ลงลึก เรื่อง Coding

ผมไม่เข้าใจอะครับ โหลด ไปแล้วต้องทำไงหร้อครับ ถึงจะใช้ได้

รบกวน ขอวิธีหน่อยนะครับ(ความรู้น้อย)

By: 0xffeeddaa
0xffeeddaa's blog
on 22/12/08 22:22 #77345 Reply to:77334 toggle
0xffeeddaa's picture

ลองดาวโหลดตัวนี้ดูละกันครับ ผม build มาให้ (มัน build ง่ายจังวุ้ย) Installer

By: isunsunsun
isunsunsun's blog
on 22/12/08 22:37 #77348 Reply to:77345 toggle
isunsunsun's picture

ขอบคุณครับ

By: chris123
iPhone
chris123's blog
on 23/12/08 12:27 #77451 toggle
chris123's picture

ผมเจอบัคครับ

มันบอกว่า โหลดไฟล์รูปไม่ได้

By: pruet
WriterBlackberryUbuntu
pruet's blog
on 23/12/08 13:14 #77456 Reply to:77451 toggle
pruet's picture

ฝากช่วย file issue ให้ด้วยนะครับ ที่ http://code.google.com/p/covershare-plugins/issues/list แต่ถ้าลำบาก ช่วยบอกว่า มีปัญหากับ plugin ตัวไหน และกับเพลงในอัลบัมอะไร ของใคร นะครับ ขอบคุณครับ

By: phaa
phaa's blog
on 25/12/08 13:25 #77752 toggle
phaa's picture

กรณี Songbird ใน linux ubuntu ติดตั้งยังไงครับ