Apple ตบเกียร์เข้าโค้งสุดท้าย Leopard

Apple เร่งเครื่องทำ Leopard (OS X รุ่น 10.5) เพื่อให้ออกทันตุลาคมนี้ และให้มีความสมบูรณ์ที่สุดเท่าที่จะทำได้ (แน่นอน มันไม่สมบูรณ์หรอก ไม่มี software ตัวไหนหรอกที่สมบูรณ์ไม่มีปัญหาหรือว่ามี feature ครบถ้วน)

ช่วงนี้เราจะเห็น build ต่างๆ ของ Leopard เริ่มออกมาถี่ยิบ ซึ่งเป็นพฤติกรรมปกติของ Apple ช่วงโค้งสุดท้ายก่อนจะออก OS รุ่น gold master อยู่แล้ว หลังจาก 9A499 ออกไม่นานก็มี 9A500n ซึ่งถึงแม้ว่ามันจะดูเหมือน minor revision มากๆ (เลข build เพิ่มนิดเดียว) แต่ว่าจาก blog ชาวบ้านและ web ข่าวหลายที่ บอกว่าขนาดตั้ง 500 กว่า MB แน่ะ เยอะเอาเรื่องนะเนี่ย และเท่าที่อ่านมา ก็รู้สึกว่าจะ stable มากขึ้นเยอะ (หลายคนด่า 499 ว่า buggy มาก และไม่ stable มาก) … หลังจากนั้นอีกไม่นานก็มี 9A527 อีก ซึ่งตัวนี้เห็นบอกว่ามี interface tweak หลายจุด (โดยเฉพาะ menu bar ที่ transparent น้อยลงเยอะ ดูดีขึ้นเยอะ แล้วก็เรื่อง color tone ที่ deep กว่าเดิมและดู unified มากขึ้น) ซึ่งอันนี้หา screenshots ดูได้ทั่วไป

แล้วมีอะไรอีก? อืมมม ตอนนี้ท่าทางจะเริ่มเข้าช่วง optimization ล่ะ เพราะว่าเห็นรายงานเหมือนกันว่าขนาดของซอฟต์แวร์หลายตัวเล็กลงกว่า build ก่อนๆ เยอะ (ถึงส่วนมากมันจะยังใหญ่กว่ารุ่นที่อยู่ใน Tiger ก็เถอะ ก็อย่างว่า feature มันคงจะเยอะขึ้น optimize ยังไงก็ยังใหญ่กว่าอยู่ดีมั้ง แต่ว่าไม่แน่ iWork 08 ยังเล็กกว่า iWork 06 ตั้งเยอะ)

ยังไม่รวมถึงเรื่องที่ผมไม่ค่อยสนใจ พวก welcome video ใหม่ หรือว่า default background ที่เป็นอวกาศนะ (ยังไม่รู้เลยว่าตัว final จะเป็นตัวนี้หรือเปล่า) เพราะว่าพวกนี้มันไม่ได้มีผลกับ user experience โดยรวมอยู่แล้ว

เท่าที่ดูจาก refinements ล่าสุด ผมค่อนข้างจะ possible นะกับสถานะของ Leopard แต่ว่าตอนนี้ผมอยากจะรู้รายละเอียดของ Leopard Server แฮะ ตื่นเต้นกับเจ้าตัวนี้ที่ WWDC 06 มากกว่าตัว workstation ที่เราใช้ๆ กันเยอะ อยากเห็นอะไรตั้งหลายอย่าง ไม่รู้จะเป็นไงมั่ง

แต่ว่าก่อนจะถึงรุ่น Gold master จริงๆ ก็คงจะมีอีกประมาณ 2-3 builds เป็นอย่างน้อยละมั้ง โดยเฉพาะช่วงท้ายๆ จริงๆ ที่อาจจะมีหลาย build เลยแหละที่เป็น Release Candidate (RC) แล้วตัวใดตัวหนึ่งที่จะกลายเป็น Gold master ….

Upgrade เป็น Ruby 1.8.6 กับปัญหา IRB, Readline

หลังจากใช้ Ruby 1.8.5 มานาน ก็อยากจะลองของไปเล่น 1.8.6 ซึ่งมันก็ออกมาได้ซักพักแล้วล่ะ ซึ่งเราก็ลงตาม step ล่ะนะ ไม่ยากไม่เย็น

  • Download source ของมันมาก่อน อันนี้หาไม่ยาก แล้วก็เอามา untar ตามปกติ
  • configure มันไปซะ ใช้ pthread กับ readline ด้วย แล้วก็เอาไว้ที่ /usr/local ตามปกติ
    ./configure --prefix=/usr/local \ 
    --enable-pthread --with-readline-dir=/usr/local
  • ไม่มีปัญหาอะไร ก็ make แล้วก็ sudo make install ซะ ก็ไม่มีอะไร
  • check version ซะหน่อย
    [rawitat@entropy rawitat]$ ruby -v
    ruby 1.8.6 (2007-03-13 patchlevel 0) [i686-darwin8.10.1]
    
  • น่าจะปกติ แต่ว่าพอเรียก irb ปุ๊บ
    [rawitat@entropy rawitat]$ irb
    dyld: NSLinkModule() error
    dyld: Symbol not found: _rl_clear_signals
      Referenced from: /usr/local/lib/ruby/1.8/i686-darwin8.10.1/readline.bundle
      Expected in: flat namespace
    
    Trace/BPT trap
    [rawitat@entropy rawitat]
    

เฮ้ย อะไรเนี่ย!!!!!

ไม่เป็นไรๆ ไม่ต้อง panic มันต้องมีคนเจอปัญหานี้ก่อนหน้าเราบ้างล่ะน่า ว่าแล้วเราก็ลอง search google ดูหน่อย อืมม มันไม่มีคนเจอปัญหาเดียวกันเป๊ะๆ แฮะ เจอแต่ใกล้เคียงมากๆ เพราะว่าชาวบ้านเค้าเจอ _rl_filename_completion_function กัน แต่ว่าเราดันเจอ _rl_clear_signals แทน

อืมมมๆ ไม่เป็นไรๆ ลองทำตามวิธีแก้ปัญหาของเขาดูก็แล้วกัน

  • วิธีนี้ เคยใช้ได้ผลมาแล้วตอนลง 1.8.5 (แล้วทำไมตอนนั้นไม่ได้ blog ไว้ก็ไม่รู้) ก็คือให้ไป rebuild readline.bundle ใหม่ แล้วก็ copy ไปลงที่ปกติมันเก็บ readline.bundle ไว้ แต่ว่าคราวนี้ ล้มเหลว
  • วิธีนี้ ก็คือวิธีเดียวกัน แต่ว่า verbose หน่อย ไม่ต้องบอกก็รู้ว่าผลเป็นไง
  • วิธีนี้ ให้แก้ rbconfig.rb ไปเพิ่ม -lreadline ใน CONFIG[“LIBS”] ก็ลองแล้ว สรุปว่า ล้มเหลว เหมือนกัน

ทำไงดีหว่า อืมมมมม เริ่ม panic นิดหน่อย ผิวปากกลบเกลื่อนๆ

  • เริ่มมั่ว เอา readline 5.1 มาลงใหม่ (ตอนแรกใช้ 5.2 อยู่ แต่ว่าเห็นตาม web มันยังเขียน 5.1 อยู่ เออ ไม่เสียหลายน่า)… ไม่เวิร์ก
  • มั่วต่อไป ลง readline 5.2 อีกทีเด๊ะ …. ไม่ได้อยู่ดี (มันควรจะได้มั้ยล่ะนั่นน่ะ ไอ้บ้า)
  • เฮ้ย …..​ configure, build ruby ใหม่อีกรอบ (สิ้นคิด เมื่อกี้มันไม่ work คราวนี้มันจะ work ได้ไง) ก็ ไม่ได้

เฮ้อ เหนื่อย…..​ ทำไงดีหว่า พอดีเหลือบไปเห็น

 Referenced from: /usr/local/lib/ruby/1.8/i686-darwin8.10.1/readline.bundle

ใน error message ก็เลยลอง cd เข้าไปเล่นดู (อีกที จริงๆ เข้าไปหลายครั้งแล้ว) ก็เห็นว่านอกจาก i686-darwin8.10.1 แล้ว ข้างในนั้นยังมี i686-darwin8.9.1 ด้วย ก็เลยลองเข้าไปดู …… ก็เห็น readline.bundle อยู่ตัวนึง คงเป็นตัวที่เรา build ครั้งก่อนๆ หน้าโน้น (ไม่รู้เมื่อไหร่ ก็ตั้งแต่ darwin 8.9.1 น่ะแหละ ตอนนี้ใช้ darwin 8.10.1 อยู่) ……​

ก็ในเมื่อ rebuild readline.bundle ใหม่ (configure ใหม่แล้วนะ) แล้วก็ replace มันตามวิธีที่ linkๆ ไปให้ใน link ข้างบนแล้วไม่ work ลองบ้านนอกดูเด๊ะ

sudo cp /usr/local/lib/ruby/1.8/i686-darwin8.9.1/readline.bundle \
   /usr/local/lib/ruby/1.8/i686-darwin8.10.1/readline.bundle

……
……. แล้ว

[rawitat@entropy rawitat]$ irb
irb(main):001:0> 

ดันได้ซะงั้นอ่ะ ………. เนี่ย ถ้าไม่เคย build ไว้เลย ไม่รู้จะทำไมนะเนี่ย ไม่รู้มันไปติดตรงไหนแล้ว (ตอน configure ที่จะ rebuild readline.bundle มันก็ check เจอนะ ไอ้ _rl_clear_signals เนี่ย …​ไม่รู้ว่าทำไมเวลาจริงมัน ref ไม่ได้)

เอวัง