jibjib – a tiny Twitter client for your Java ME phone

Developed in open-source fashion by @sugree (93,216 tweets so far, as of 2008.01.13), jibjib* is a Twitter client designed for Twitter-addicted on-the-road.

50 KB in size, easily fits in any Java ME (J2ME) phone (CLDC 1.0 and MIDP 1.0 minimum), and still loaded with handy features like quick reply, url-friendly smart retweet, custom/auto word list for quick insertion (like @having or #gaza), and able to open url in a tweet directly. Another plus, small bandwidth consumption, via birdnest proxy (5-6 KB for 20-entries timeline).

And, good news, it’s free software! (free as in free beer and in free speech) You can download either stable or beta version at no cost.

#jibjib – Java ME Twitter client – http://jibjib.org/

*jibjib (จิ๊บจิ๊บ) – Thai for “tweet”, also means “small, easy matters”, and the best of all, it starts with ‘j’ … hey, it’s Java application, don’t you forget? :p

technorati tags:
,
,
,

experimental jibjib

jibjib จิ๊บจิ๊บ เป็นโปรแกรมทวิตเตอร์บนมือถือ Java ME พัฒนาโดย @sugree

เมื่อวานและวันนี้ ลองแก้ ๆ โค้ดเล่นเองดู อยากจได้นั่นได้นี่ แต่เกรงใจสุกรี ไม่อยากขอเยอะ :p ก็ลองทำเองดู มั่ว ๆ

ส่งแพตช์ไปครั้งแรกแบบไม่เคยลองคอมไพล์ วันนี้มาลองคอมไพล์ดู เอ้อ ไม่ผ่านจริง ๆ :p กว่าจะ build ได้ต้องลงเครื่องมือเพิ่มนิดหน่อย คือ ant-google, J2ME Polish, และ Antenna ไล่ดูเอาจากแฟ้ม build.xml ไดเรกทอรีอะไรต่าง ๆ ก็ ln -s เลียนแบบใน build.xml เอาเลย ง่ายดี จะได้ไม่ต้องตั้งใหม่

ที่อยากได้คือ:

  1. แก้บั๊ก retweet ข้อความที่พอรวมกับ “rt @xxx: ” แล้วยาวเกิน 140 ตัวอักษร (ก่อนหน้านี้ ใช้วิธีเพิ่มขนาดช่องข้อความเป็น 160 ตัวอักษร แก้ขัดไปก่อน)
  2. ใช้ปุ่มตัวเลขเป็นปุ่มลัดต่าง ๆ ได้ เช่น 2 = tweet, 4 = reply, 5 = retweet, * = favorite
  3. ความสามารถ ‘ย่อ’ ข้อความให้สั้นลงหน่อย

สุดท้ายแล้ว (2) ไม่เวิร์ก เพราะ keyPressed() มันใช้ได้เฉพาะ Canvas subclass, ตัว jibjib ใช้ Form สำหรับหน้าอ่านทวีต, List สำหรับหน้าดูรายการทวีต – ถ้าอยากได้ ต้องใช้ Polish GUI .. ซึ่งมันจะทำให้ jibjib อ้วนขึ้น จาก 52K ไปเป็น 104K ทันที = สองเท่า! ก็เลย เอาไว้ก่อนละกัน เดี๋ยวหาทางดี ๆ ก่อน

(1) นี่ทำงานได้ตามที่อยากได้ ส่วน (3) ก็พอไหว แต่ก็ไม่รู้ว่ามันจะมีปัญหาในการใช้งานจริงไหม จะไปย่ออะไรที่ไม่น่าย่อรึเปล่า

แถมเพิ่มมาคือ ตรงหัวเรื่อง title ของแต่ละหน้าจอ แทนที่จะเป็นคำว่า jibjib ไปตลอด ก็ให้หัวเรื่องมันสื่อถึงหน้าปัจจุบันหน่อย เช่นถ้ากำลังแสดง Friends Timeline อยู่ ก็จะขึ้นหัวว่า Friends

ลองทดสอบดูครับ

ตอนคอมไพล์/บิวด์ ใช้ ant compile ตามด้วย ant polish ตัวหลังนี้มันจะช่วยสร้างแฟ้ม jad และ jar สำหรับมือถือสเป็กต่าง ๆ ให้อัตโนมัติ มี preprocessor ให้ใช้ได้ด้วย เพื่อความสะดวกในการจะเรียกใช้บางฟังก์ชั่นที่มีเฉพาะในโทรศัพท์บางรุ่น

ตอนจะทดสอบในเครื่องคอมด้วยอีมูเลเตอร์ ต้องไปแก้แฟ้ม jad นิดหน่อย ตรง MIDlet-Jar-URL เอาให้มันชี้ไปที่ไหนซักที่ ที่เราเอาแฟ้มไปวางอยู่ (ถ้าไม่แก้ มันจะไปเรียกจาก jibjib.googlecode.com)

ทดสอบด้วยอีมูเลเตอร์ ใช้คำสั่ง j2mewtk/bin/emulator -Xdescriptor:dist/ชื่อแฟ้ม.jad

ส่งแพตช์เข้า issue tracker ไปแล้ว

build มาให้ทดลองใช้ชั่วคราวครับ ระหว่างรอ @sugree ตรวจโค้ดแพตช์

  • MIDP 2.0 / CLDC 1.0 jad | jar
  • MIDP 2.0 / CLDC 1.1 jad | jar
  • MIDP 2.1 / CLDC 1.1 jad | jar

ย้ำว่านี่เป็นรุ่นทดลอง-ทดสอบนะครับ ตัวโปรแกรมรุ่นอย่างเป็นทางการอยู่ที่เว็บสุกรี sugree.com/project/jibjib

มีซอร์สโค้ดให้ดูให้แก้ได้ เราก็มีโอกาสได้ลงมือเอง ถ้าอยากทำ/ต้องทำ

technorati tags:
,
,

WeeDict

WeeDict 0.3.2 เป็นพจนานุกรม ไทย-อังกฤษ อังกฤษ-ไทย สำหรับ J2ME ที่พัฒนาต่อจาก LekLekDict 0.3.1 โดย อ. พฤษภ์ บุญมา

เป็นโครงการที่ทำเล่น ๆ หลังจากส่งดิสเซอ แล้วว่างงาน เบื่อโคตร (ถามพี่โอ๋ รุ่นน้องอ.พฤษภ์ ได้)
ก็เลยอยากศึกษาการเขียนโปรแกรมภาษาไทยบนมือถือ โดยใช้ J2ME บ้าง (โดยตั้งใจไว้ว่า จะใช้เวลาว่างจากการกินเบียร์และดูบอล -_-“)
เริ่มจากการดาวน์โหลดโค้ด LekLekDict รุ่นล่าสุดในตอนนั้น คือ 0.3.1 มาลองเล่นดู
แก้ไปแก้มา เปลี่ยนโค้ดไปพอสมควร ก็ออกมาเป็น WeeDict ตัวนี้

wee เป็นภาษาสก็อต (Scots) แปลว่า เล็ก ๆ (tiny, little)

หลัก ๆ ที่ลองเล่นก็คือ ในส่วนของโค้ด ลองยุบคลาสและเมธทอดต่าง ๆ ที่คล้าย ๆ กันเข้าด้วยกัน
ในส่วนของการใช้งาน หลังจากผู้ใช้กดเลือกคำศัพท์จากรายการ เพื่อดูความหมาย เมื่อกด Back แล้ว สามารถกลับมาที่หน้ารายการเดิมได้ทันที (แทนที่จะกลับไปยังหน้าป้อนคำศัพท์)
นอกนั้นก็เป็นการแก้นู่นแก้นี่ ลองผิดลองถูก ไม่ค่อยมีสาระเท่าไหร่
คือหน้าตาของโค้ดเปลี่ยนไปเยอะใช้ได้ แต่การทำงานจริง ๆ ก็ยังคล้าย ๆ เดิม คือแก้ไปงั้นแหละ

อ๋อ อีกอันใหญ่ ๆ ที่เปลี่ยนก็คือ พยายามยุบการใช้ String และ byte[] ที่ปน ๆ กัน
ให้เป็น MiniString (คลาสใหม่) อันเดียว เพื่อลด overhead ในการแปลงไปแปลงมา
(จากการทำ profiling ดู พบว่าเวลาส่วนใหญ่หมดไปกับการ getBytes())
หลังยุบรวม ก็พบว่าลด cpu clock ไปได้พอสมควร แต่ไม่ถึงขนาดที่ผู้ใช้จะรู้สึกได้
(สรุปว่าเป็นการ optimize ที่ไม่ค่อยจะจำเป็นเท่าไหร่ คือเธอทำเอามันนั่นเอง)

น่าจะใช้ได้กับมือถือที่รองรับ MIDP 1.0 และ CLDC 1.0
ทดสอบกับ Sony Ericsson k700i ของตัวเอง ใช้งานได้ดี (ไม่เคยลองกับเครื่องอื่น รุ่นอื่น)

WeeDict.jad | WeeDict.jar | source code | Readme
ใช้หนังสืออนุญาตแบบ GPL ตาม LekLekDict

ตัว LekLekDict ต้นฉบับนั้น ตอนนี้พัฒนาไปถึงรุ่น 0.3.3 แล้ว
โดยมีความสามารถเพิ่มเติมหลายอย่าง พร้อมพจนานุกรมตัวใหม่
อ่านรายละเอียดได้ที่ เว็บของ LekLekDict
โดยที่ความสามารถใหม่ ๆ เหล่านั้น ยังไม่มีใน WeeDict รุ่น 0.3.2 (จริง ๆ คือ ไม่รู้เมื่อไหร่จะมี)

ลองเล่นกันได้ครับ
ขอขอบคุณ อ.พฤษภ์ และ อ.วุฒิชัย (น่าจะสะกดแบบนี้) สำหรับโค้ดต้นฉบับด้วย

หมายเหตุ:
ทำใน NetBeans 4.0 RC2, ตอนนี้ 4.0 ตัวจริงออกแล้ว

ลงได้ละ MIDlet / LekLekDict

คือมันใช้ตัว phone explorer อะไรนี่ก๊อปลงไปตรงๆ ไม่ได้
ต้องใช้โปรแกรมที่มากะตัว SDK ถึงจะลงได้

Sony Ericsson Developer – Java Docs & Tools

เมื่อคืนก็เลยนั่งดูซอร์ส LekLekDict เล่น
แปลกอย่างคือ ถ้ารันใน emulator (ที่มากะ NetBeans Mobility Kit 7) ภาพ (ตัวอักษรไทย) มันจะเละๆ
แต่พอไปรันในมือถือจริง ก็จะไม่มีปัญหา แสดงผลได้สวยงาม (ฝีมือพี่ฮุ้ย + อ.pruet .. สะกดไม่ถูก -_-“)
ตัวที่เอามานี่เป็นรุ่น 0.3.1 เห็นใน sourceforge มีรุ่น 0.3.2 แล้ว แต่ยังไม่มีซอร์ส

ยังไม่รู้จะเล่นอะไรต่อดี

มีใครรู้วิธีเอา MIDlet ยัดลงไปใน K700i มั๊ยครับ?

ได้มือถือมาฟรี รันจาวาได้ด้วย เลยอยากลอง LekLekDict ใจจะขาด แต่อับปัญญา

ใช้ก๊อปปี้ .jad, .jar ลงไปตรงๆ ไม่ได้ มันจะไม่ยอมเข้าไปอยู่ในโฟลเดอร์ Applications แล้วมันก็จะสั่งรันไม่ได้

ทำไงเนี่ย?

Sony Ericsson K700