By pruet Writer on Tag:

เห็นโปรเจคท์อื่นเขาพิมพ์กันสั้น ๆ แต่เราอยากพิมพ์ยาว ๆ แหะ :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/ ครับ

Hiring! บริษัทที่น่าสนใจ

Carmen Software company cover
Carmen Software
Hotel Financial Solutions
Next Innovation (Thailand) Co., Ltd. company cover
Next Innovation (Thailand) Co., Ltd.
We are web design with consulting & engineering services driven the future stronger and flexibility.
KKP Dime company cover
KKP Dime
KKP Dime บริษัทในเครือเกียรตินาคินภัทร
Kiatnakin Phatra Financial Group company cover
Kiatnakin Phatra Financial Group
Financial Service
Fastwork Technologies company cover
Fastwork Technologies
Fastwork.co เว็บไซต์ที่รวบรวม ฟรีแลนซ์ มืออาชีพจากหลากหลายสายงานไว้ในที่เดียวกัน
Thoughtworks Thailand company cover
Thoughtworks Thailand
Thoughtworks เป็นบริษัทที่ปรึกษาด้านเทคโนโยลีระดับโลกที่คว้า Great Place to Work 3 ปีซ้อน
Iron Software company cover
Iron Software
Iron Software is an American company providing a suite of .NET libraries by engineer for engineers.
CLEVERSE company cover
CLEVERSE
Cleverse is a Venture Builder. Our team builds several tech companies.
Nipa Cloud company cover
Nipa Cloud
#1 OpenStack cloud provider in Thailand with our own data center and software platform.
Bangmod Enterprise company cover
Bangmod Enterprise
The leader in Cloud Server and Hosting in Thailand.
CIMB THAI Bank company cover
CIMB THAI Bank
MOVING FORWARD WITH YOU - CIMB is the leading ASEAN Bank
Bangkok Bank company cover
Bangkok Bank
Bangkok Bank is one of Southeast Asia's largest regional banks, a market leader in business banking
MuvMi (Urban Mobility Tech Co.,Ltd.) company cover
MuvMi (Urban Mobility Tech Co.,Ltd.)
Shape the future of urban mobility towards affordable, clean, and safe solutions
T.N. Digital Solution Co., Ltd. company cover
T.N. Digital Solution Co., Ltd.
TNDS has been involving in every first move of banking’s major digital transformation.
KBTG - KASIKORN Business-Technology Group company cover
KBTG - KASIKORN Business-Technology Group
KBTG - "The Technology Company for Digital Business Innovation"
Siam Commercial Bank Public Company Limited company cover
Siam Commercial Bank Public Company Limited
"Let's start a brighter career future together"
Icon Framework co.,Ltd. company cover
Icon Framework co.,Ltd.
Global Standard Platform for Real Estate แพลตฟอร์มสำหรับธุรกิจอสังหาริมทรัพย์ครบวงจร มาตรฐานระดับโลก
REFINITIV company cover
REFINITIV
The Financial and Risk business of Thomson Reuters is now Refinitiv
H LAB company cover
H LAB
Re-engineering healthcare systems through intelligent platforms and system design.
The Gang Technology Co., Ltd. company cover
The Gang Technology Co., Ltd.
We're a Digital Agency that helps our customers transform their business into digital with ease.
LTMH company cover
LTMH
LTMH มุ่งเน้นการพัฒนาผลิตภัณฑ์ที่สามารถช่วยพันธมิตรของเราให้บรรลุเป้าหมาย
Seven Peaks company cover
Seven Peaks
We Drive Digital Transformation
Wisesight (Thailand) Co., Ltd. company cover
Wisesight (Thailand) Co., Ltd.
The Best Choice For Handling Social Media · High Expertise in Social Data · Most Advanced and Secure
MOLOG Tech company cover
MOLOG Tech
We are Modern Logistic Platform, Specialize in WMS, OMS and TMS.
Data Wow Co.,Ltd company cover
Data Wow Co.,Ltd
We enable our clients to realize increased productivity by solving their most complex issues by Data
LINE Company Thailand company cover
LINE Company Thailand
LINE, the world's hottest mobile messaging platform, offers free text and voice messaging + Call
LINE MAN Wongnai company cover
LINE MAN Wongnai
Join our journey to becoming No.1 food platform in Thailand

DoraeMew Mon, 22/12/2008 - 18:22

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

0xffeeddaa Mon, 22/12/2008 - 18:48

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

Dio_O Mon, 22/12/2008 - 20:51

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

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

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

pruet Tue, 23/12/2008 - 13:14

In reply to by chris123

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