I'm a Ruby on Rails / jQuery web developer. Follow me at @sikachu

Object#try ใน Rails 2.3

August 2nd, 2009 Posted in My Project, Programming, Ruby, Ruby on Rails | Comments Off

เคยเจอปัญหาบ้างไหมครับ กับการที่บางครั้ง object ที่เราเรียก method ไปเนี่ย มันกลายเป็น nil ขึ้นมา ทำให้เกิด exception ขึ้นมา

>> @user.username
NoMethodError: You have a nil object when you didn't expect it!
The error occurred while evaluating nil.username
	from (irb):1

ซึ่งตรงนี้ เพื่อที่จะหลบ exception ในบางครั้งทำให้ Developer ต้องทำการเช็คก่อนว่า object นั้นเป็น nil หรือไม่ เช่น

>> (@user ? @user.usename : "Guest")
=> "Guest"

ซึ่งตรงนี้ทำให้โค้ดนั้นดูุวุ่นวายมากขึ้น และทำให้โค้ดนั้นดูไม่ค่อยเหมือน Ruby สักเท่าไร (ซึ่งผมก็เห็นด้วยว่า <cond> ? <if-true> : <if-false> นั้น มันดูแปลกๆ) จึงทำให้มีคนคิด Object#try ออกมา แล้วทางทีมผู้พัฒนา Ruby on Rails ถึงเอาเข้าไปเพิ่มใน Rails 2.3 ระหว่างที่ Ruby กำลังรอเพิ่ม method นี้เข้าไปอยู่

เพราะฉะนั้นหลังจากการเพิ่ม method นี้ ทำให้เราสามารถที่จะทำอย่างนี้ได้

>> @user.try(:username)
=> nil
>> @user.try(:username) || "Guest"
=> "Guest"

แล้วยังทำให้ เราสามารถทำ method chaining ได้ด้วย (เพราะทุกอย่างมี #try)

>> @user.try(:username).try(:capitalize)
=> nil
>> # Fetch @user from record
?> @user = User.first
=> #<User id: 1, email: "test@test.com", usename: "test", persistence_token: "95908c3801d55ce389af90f0909192cbda4e37c632afd6b50c2...", created_at: "2009-06-30 05:44:43", updated_at: "2009-07-16 08:56:46", crypted_password: "f37c87cb2d731c0c0710ae9c2b9721d352f6336e38e988bb907...", password_salt: "UIENYMKzDjJYgy2E89Qn", status: nil>
>> @user.try(:username).try(:capitalize)
=> "Test"

ลองปรับไปใช้กับ Application กันนะครับ คิดว่าส่วนนี้น่าจะช่วยให้ debug กันง่ายขึ้นเยอะเลย ;)

Flickr Submit Button CSS Retouch

July 17th, 2009 Posted in News, Programming | Comments Off

วันนี้ได้เข้า Flickr หลังจากไม่ได้เข้าไปหลายวัน
ไปสังเกตเห็นบางอย่าง ตรงแถวๆ comment box

Picture 3-1.png

สังเกตเห็นอะไรไหมครับ?

นี่คือการ Retouch ปุ่ม Submit ในส่วนของการเพิ่ม comment ครับ .. ซึ่งผมว่าเป็นจุดที่ทำให้เว็บดูสวยขึ้นมาอีกหน่อยเลยทีเดียว เพราะว่าถ้าเทียบกันกับอันเก่า ..

breadkrumbs-add-1.png

ต้องบอกกับทีมงาน Flickr ว่า .. น่าจะทำใหม่ได้ตั้งนานแล้ววว ;)

McDonald Drive-Thru

July 15th, 2009 Posted in Garbage | 1 Comment »

เมื่อก่อนตอนผมยังอยู่ที่จรัญสนิทวงศ์ เวลาผมจะเดินทางโดยใช้ MRT ในเวลาเช้าๆ ผมกับแฟนมักจะไปกินอาหารเช้ากันที่ McDonald สาขาเมเจอร์อเวนิว เพราะว่าเป็นทางผ่านในการเดินทางไปจอดรถที่ MRT ลาดพร้าว

IMG_9582.JPG

ผมมักจะใช้บริการ Drive-Thru ในการสั่งอาหาร เพราะว่ามันเร็วดี ไม่ต้องจอดรถแล้วลงไปให้เสียเวลา … แต่ก็มีหลายครั้งเหมือนกันครับ ที่มันน่าเคืองงงงงง เลยขอมาระบายให้ฟังหน่อยครับ

ครั้งแรก วันนั้นผมกับแฟนต้องไปสัมภาษณ์งานที่ในเมือง ทำให้เราตัดสินใจขึ้นรถไฟใต้ดินกันดีกว่า ก็แหม .. รถในเมืองนี่มันออกจะโล่ง ขับสบายซะขนาดนั้น (ประชด -*-)

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

ปรากฎว่าพอถึงที่จอดรถ .. แกะห่อกระดาษออกมา มันดันไม่มีซามูไรเบอร์เกอร์หมู (- -!)

โอ้วแม่เจ้า … เกิดอาการเคืองกันไปเลยครับคราวนี้ ก็ในบิลมันก็เขียนอยู่ว่าสั่งซามูไรเบอร์เกอร์หมูถูกต้องแล้ว เพราะฉะนั้นก็น่าจะเป็นที่พนักงานลืมหยิบ … สรุปแฟนผมก็เลยได้กินแค่เฟรนช์ฟรายเป็นอาหารเช้าเลย เพราะว่าเขาไม่กินชีส -..-

สุดท้าย พอผมเสร็จธุระ ก็เลยกลับไปที่ร้านแมค พนักงานก็บอกว่าลืมใส่จริงๆ ครับ แล้วก็เอามาให้ผมโดยดี … ซึ่งก็นะ เท่ากับว่าผมต้องขับรถสองรอบเลย เสียเวลาใช่เล่น -*- ผู้จัดการก็มาขอโทษขอโพยผมเรียบร้อย ผมก็เลยไม่ได้อะไร

แต่เรื่องนี้มันยังไม่จบครับ (ฮา)

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

ได้ครบตามจำนวนครับ แต่ว่า … มันเป็น แมคฟิช สองชิ้นเลย -*-

รอบสองนี้แบบว่าแอบจี๊ดเลยครับ -*- เพราะว่า มันไม่ใช่เรื่องที่น่าพลาดแล้วนะเนี่ย แมคฟิช กับ ซามูไรเบอร์เกอร์หมู + ดับเบิ้ลชีสเบอร์เกอร​์ นี่มันคนละเรื่องกันเลยนะเนี่ย ผมก็เลยคิดว่าเขาน่าจะหยิบสลับกับของรถคันข้างหน้าผม ซึ่งตรงนี้ผมก็ไม่รู้เหมือนกันว่าเขาจดถูกหรือเปล่า เพราะว่าผมจำไม่ได้ว่าผมดูบิลแล้วนะครับ ..

สองครั้งสองครา .. อุทาหรณ์ของการสั่งอาหารแบบ Drive-Thru มีอยู่ข้อเดียวครับ … นั่นคือ “ตรวจเช็คเบอร์เกอร์และเฟรนช์ฟรายส์ก่อนออกจากจุดรับอาหาร … เพราะว่าหลังจากคุณขับออกไปจากตรงนั้นแล้ว ส่วนใหญ่คุณก็จะไม่ได้ผ่านกลับมาตรงนั้นอีกเลย .. หรือถึงขับกลับเข้ามาได้มันก็ไม่คุ้มครับ ต้องเสียเวลามาอธิบายอีกว่าเกิดอะไรขึ้น ถ้าพนักงานคนที่คุณรับอาหารด้วยเขาออกจากกะแล้ว ยิ่งแล้วไปใหญ่เลย

เอาเป็นว่าให้เรื่องนี้เป็นอุทาหรณ์ละกันครับ คนทุกคนทำผิดได้ ผมว่าพนักงานคนนั้นก็คงจะโดนต่อว่าไปเหมือนกัน เพราะฉะนั้นแล้วก็แล้วกันไปเถอะครับ

ไปกินมอสเบอร์เกอร์ดีกว่า (ฮา …) เมื่อไรจะมาเปิดที่ซีคอนน๊ออออออ ~_~

เนกิมะ เล่มที่ 24

July 15th, 2009 Posted in Comic | 1 Comment »

d2785e5300.jpg

[ลงปกภาคภาษาญี่ปุ่น เพราะว่าภาษาไทยไม่เข้าใจว่าจะติดลายน้ำกันทำไม .. ตรูขี้เกียจสแกนเฟร้ย!]

(สปอยหน่อยๆ นะครับ อย่าว่ากัน … ของมันมันส์!)

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

เนื้อเรื่องเล่มนี้ดูไม่ตื่นเต้นมาก แต่ก็มีจุดให้ลุ้นอยู่มากมาย ทั้งเรื่องภูมิหลังของอาซึนะ ที่เนกิพยายามจะเค้นออกมาจาก รากัน สหายเก่าของพ่อ ที่ค่อยๆ คลี่คลายออกมาทีละนิดว่าอันที่จริงแล้วเธอเป็นใคร แล้วทำไมถึงมีความสามารถ Magic Cancel อย่างที่เป็นอยู่

ในเล่มนี้เรายังได้เห็นความสามารถของเนกิ หลังจากที่ได้ฝึกฝนมนต์แห่งความมืดไปตั้งแต่เล่มที่แล้ว ซึ่งดูแล้วเจ้าหนูเนกิทำได้ไม่เลวเลย แต่ก็ไม่รู้เหมือนกันว่ามันจะเพียงพอที่จะโค่นโค่นล้มคนที่เนกินับเป็นศัตรูอย่าง “เฟท อาเวอรังคัส” ได้หรือไม่ … หลังจากที่ทั้งสองนั้นได้พบเจอกันอีกครั้งโดยบังเอิญในเล่มนี้

สำหรับคนที่ไม่ได้อ่านเล่มนี้ … ผมแนะนำว่ารอซื้อตอนเล่ม 25 ออกเลย จะดีกว่าครับ -*- เนื้อเรื่องตอนท้ายมันค้างคาใจมากๆ ค้างมากกว่า 23 -> 24 อีกครับ ที่เหมือนจะจบไปในเล่ม … ไม่อย่างนั้นก็คงต้องมาลุ้นกันว่าทาง VBK เมื่อไหร่จะพิมพ์รวมเล่มสักที -*-

จบกันดื้อๆ อย่างนี้แหละ ๕๕๕๕

Ruby และ active_support/whiny_nil

June 29th, 2009 Posted in My Project, Programming, Ruby, Ruby on Rails | Comments Off

สำหรับนักพัฒนาส่วนใหญ่ที่เริ่มเขียน Ruby on Rails คาดว่าตอนนี้ในเครื่องของทุกๆ คน น่าจะลง Ruby 1.8 อยู่ เนื่องจากยังคงมี Gem หลายๆ ตัว ที่ยังไม่รองรับ Ruby 1.9 และทำให้เกิดปัญหาทางด้านความเข้ากันได้อยู่บ้าง ฉะนั้นผมเลยอยากพูดถึงหลุมพรางที่ Ruby 1.8 ได้ทิ้งเอาไว้ และทำให้หลายๆ คนนั้นพลาดตกหลุมกันไปบ้างครับ

ผมขอสมมุติเอาไว้ว่า ผมได้สร้างระบบ Blog แห่งหนึ่ง โดยที่มี Model สามตัวคือ Post เอาไว้เก็บข้อความ Comment เอาไว้เก็บความคิดเห็น และ User เอาไว้เก็บชื่อผู้ใช้ ที่สามารถแก้ไขข้อความได้ครับ

สมมุติว่า User ที่สามารถเข้ามาแก้ไขได้นี้ มี id = 4 ผมก็เลยทำการ hard-coded เอาไว้ในโปรแกรมเลย เป็น filter ว่า

class PostController < ApplicationController
  before_filter :load_user
  before_filter :check_authorization!, :except => [:show, :index]
 
  # ... controller actions
 
  private
 
  def check_authorization!
    render :text => "Unauthorized!", :status => 401 unless @user.id == 4
  end
end

คราวนี้ผมก็ลองรันดู ปรากฎว่าเจอปัญหาว่าถ้าคนที่ไม่ได้เป็นสมาชิกเข้ามาที่บล็อก มันจะเกิด exception ขึ้นมา เพราะผมไปเรียก id method บน nil object ผมก็เลยจัดการ catch exception อย่างนี้ครับ

  def check_authorization!
    render :text => "Unauthorized!", :status => 401 unless (@user.id == 4 rescue false)
  end

โออ คราวนี้โปรแกรมผมหล่อกิ๊งเลย ไม่พบว่าเกิดปัญหาอะไร ผมก็เลยจัดการ deploy ขึ้นไปบนเว็บเสร็จสรรพ สร้าง user ให้เหมือนกับบนเครื่อง Development ทุกประการ และให้ User ที่มี id = 4 สามารถแก้ไขโพสได้เป็นคนเดียวเช่นเคย

แต่ปรากฎว่า การเขียนโปรแกรมของผมนั้นทิ้งช่องโหว่เอาไว้ใหญ่โตเลยครับ เพราะกลายเป็นว่าคนที่ไม่ได้เป็นสมาชิกสามารถแก้ไข และลบข้อความทั้งหมดของผมได้เลย !!

หลังจากการตามหาบักมานานแสนนาน .. ผมก็ขอเข้าเรื่องของ whiny_nil เลยละกันครับ

ในตัว active_support ที่ติดมากับ Ruby on Rails นั้น มีไฟล์อยู่อันหนึ่งชื่อว่า whiny_nil.rb ซึ่งไฟล์นี้เป็นส่วนของ Core Extension ซึ่งทำให้การเรียกใช้เมธอด #id บน object ที่เป็น nil นั้น จะมีการโยน RuntimeError ออกมาบอกว่าเรากำลังทำการเรียกใช้ #id บน nil อยู่

Sikachus-Notebook:rails sikachu$ script/console
Loading development environment (Rails 2.3.2)
>> nil.id
RuntimeError: Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id
	from (irb):1
>>

ซึ่งตรงนี้ นักพัฒนาบางคนก็จะใช้วิธีการ rescue RuntimeError ไป เพราะคิดเอาว่าถ้าเผลอไปเรียก #id บน object ที่เป็น nil จริง มันก็ต้องโยน RuntimeError ออกมาบอกเรา ถูกไหมครับ

คำตอบคือ ผิดถนัด ครับ เพราะบน Production environment นั้น เจ้าตัว whiny_nil นั้นจะไม่ถูกเปิดใช้ครับ แล้วผลของการไม่ได้เปิดใช้หรอครับ?

Sikachus-Notebook:~ sikachu$ irb
irb(main):001:0> nil.id
(irb):1: warning: Object#id will be deprecated; use Object#object_id
=> 4

นั่นแหละครับ! การที่เรียกเมธอด #id บน nil นั้น Ruby จะคืนค่าเป็น 4 ครับ เพราะว่า nil นั้นมี id ของตัวมันเองคือ 4 ครับ :)

เพราะฉะนั้นคงเดาออกใช่ไหมครับว่าทำไมคนที่ไม่ได้ล็อกอินทุกคน ถึงสามารถเข้าไปแก้ไขบล็อกของผมได้? ก็เพราะว่า @user.id ของเขา คืนค่าเป็น 4 กันทุกคนเลยครับ ไม่ได้มีการโยน RuntimeError แต่อย่างใด

ปัญหานี้ใช่ว่าไม่มีทางแก้ครับ แต่ผมจะไม่ขอเจาะลึกลงไปแล้วกันครับ เพราะว่าปัญหานี้หายไปแล้วใน Ruby 1.9.1 (object#id deprecated ไปแล้วครับ) ก็ต้องรอให้มันถูกใช้แพร่หลายเท่านั้นล่ะครับ ซึ่งตอนนี้วิธีการแก้ก็คงเป็น

  • เปิดการใช้งาน config.whiny_nil ใน production.rb
  • ใช้ object.try(:id) ที่จะคืนค่ามาเป็น nil หากว่า object เป็น nil
  • เขียนโค้ดใหม่โดยพยายามไม่เช็คจาก #id

หวังว่าโพสนี้จะทำให้หลายคนหายข้องใจได้บ้างนะครับ

ปล. บางท่านคงสงสัยใช้ไหมครับว่าแล้วทำไม nil.id หรือ nil.object_id มันถึง return เป็น 4 … เพราะว่า Ruby ทุกอย่างมันเป็น object ครับ ไม่เว้นแม่กระทั่ง nil! ไม่เชื่อลองดูนี่นะครับ

irb(main):002:0> nil.object_id
=> 4
irb(main):003:0> nil.class
=> NilClass
irb(main):004:0> 100.class
=> Fixnum

ใครจะชอบไม่ชอบผมไม่รู้ แต่ขอเอวังด้วยประกาลฉะนี้ :)

Battery ใหม่กิ๊ง ~

June 29th, 2009 Posted in Apple, My Project | Comments Off

หลังจากที่รอมานานแสนนาน ที่จะเก็บเงินซื้อ Battery ใหม่ ของ Macbook Pro 15” ซึ่งยังงั้ยยังไง ก็ไม่สามารถตัดใจซื้อได้สักที เพราะด้วยราคามหาโหด (6,xxx บาท) .. ทำให้โปรแกรมเมอร์น้อยๆ ได้แต่ทนใช้ battery ก้อนเก่าไป (ซึ่งจริงๆ ก็เป็นของ @lukeinth ซะด้วย – -”)

แต่แล้วคุณเจ้านาย (@trawut) ก็ได้โปรดเมตตา ซื้อแบตก้อนใหม่มาให้เป็นของขวัญ !!

(แต่รู้สึกว่าจะไม่เนียนเลยนะครับของขวัญนี่ … เพราะตอนแรก @hunt บอกว่า @trawut ซื้อมาให้เพราะบีฝากซื้อ จนตอนกลางคืนถึงบอกว่าไม่ได้ซื้อมาฝาก ทำอกสั่นขวัญแขวน กลัวเสียเงินไปใหญ่ -*-)

ไหนๆ ก็ได้แบตก้อนใหม่แล้ว เลยเอามาให้ดูก่อนการ Calibrate คร๊าบบ

before.png

after.png

coco.png

เวลาเห็น Coconut Battery รายงานว่า 100% แล้วรู้สึกดีพิลึก!

ลองเล่นดู ปรากฎว่าได้ระยะเวลาประมาณ 3 ชม. กว่าๆ ซึ่งก็ถือว่าเยอะแล้วนะครับสำหรับเครื่องรุ่นนี้ ก็แปลว่ารับได้ละกัน ๕๕๕๕

ขอบคุณคุง @trawut มากนะขอรับ ๕๕๕๕

Truewifi 2 Mbps

May 17th, 2009 Posted in My Life, News | Comments Off

หลังจากที่ได้ update speed ADSL ไปไม่นาน ก็เลยลองเชื่อมต่อ internet ผ่านทาง truewifi ดู ว่ามันได้สมราคาคุยมั้ยยยย (True ADSL 8 M จะได้ Wifi 2M ครับ)

Picture 1.png

ถือว่าได้ตามราคาคุยนะเนี่ย .. ได้เกือบๆ 2M เลย แต่สงสัยคงเพราะว่าผมเทสวันธรรมดาที่ห้างน่ะครับ คงมีคนเล่นน้อย .. ถ้าเป็นเวลาปกติ สงสัย 1M ยังจะวิ่งไม่ถึงเลย -..-

ไม่รู้ว่า true ให้ผู้ใช้ใช้ wifi ได้เร็วขึ้นนี่ true ทำการเพิ่มความเร็วที่ AP บ้างรึเปล่านะครับ .. เพราะระบบการ login ตอนนี้ ถือว่าใช้ไม่ค่อยได้เลย ช้ามากๆ กว่าจะเข้า portal.trueinternet.co.th ได้สักที -..-

Google Doodle รหัสมอร์ส

May 17th, 2009 Posted in News | Comments Off

รหัสมอร์ส หรือ Morse code เป็นรหัสที่เอาไว้ใช้ในการส่งโทรเลข ซึ่งในวันครบรอบการคิดค้นรหัสมอร์สที่ผ่านมา Google ก็ได้เปลี่ยนโลโก้ของเว็บตัวเองให้เป็นรหัสมอร์ส

Picture 8-1.png

ผมว่าเท่ห์ดีนะ กับไอเดียนี้ :D

Squish it!

May 17th, 2009 Posted in Programming, Ruby, Ruby on Rails | Comments Off

ต้องบอกว่า Ruby on Rails นั้นมี helper methods เยอะจริงๆ และบางครั้งถ้าเราไม่ได้เข้าไปดูใน api documentation เราก็จะไม่พบว่ามันมีเมธอดเอาไว้ทำอะไรบ้าง

วันนี้ผมเจอ method นึงครับ ซึ่งคิดว่าน่าจะมีประโยชน์ และน่าจะมีใครต้องใช้เมธอดนี้แน่ๆ

มีใครบ้างไหมครับ ที่เคยเห็น user ชอบโพสข้อมูลมาเว้นบรรทัดๆๆๆ หลายๆ อัน หรือว่าชอบเคาะ space bar เว้นห่างๆ กัน ทำให้บางครั้งมันดูไม่เรียบร้อย และมันอ่านยาก .. วันนี้ผมมี method มาแนะนำครับ ชื่อว่า #squish

ตัวอย่างในการใช้งานก็เป็นอย่างนี้ครับ

>> str = %(hello
world)
=> "hello\nworld"
>> str.squish
=> "hello world"
>> str = "the      quick    brown     fox  jumped  over lazy    dog"
=> "the      quick    brown     fox  jumped  over lazy    dog"
>> str.squish
=> "the quick brown fox jumped over lazy dog"
>>

จะเห็นได้ว่ามันเอา space และ new line (\n) ออกด้วย .. แต่ผมคิดว่ามันจะเวิร์คกว่านี้ ถ้ามันยังคง \n เอาไว้ ทำแค่บีบบรรทัดลงมาเท่านั้นครับ :)

True 8 Mbps internet

May 17th, 2009 Posted in Gadgets | Comments Off

พอดีว่าเน็ตที่บ้าน (ที่ไม่ค่อยได้กลับเท่าไร) นั้น ปกตินั้นใช้อินเตอร์เน็ตของ true อยู่แล้ว และด้วยราคาที่ต้องจ่ายตอนแรก (เดือนละ 1,150+) ทำให้หลังจากที่ลองคิดหน้าคิดหลังแล้ว การอัพ speed internet ให้เป็น 1,199+ นั้น ดูคุ้มกว่า

ต่อจากนั้น ก็เลยติดต่อกับทาง true ว่าให้เช็คว่าสายนั้นสามารถอัพ speed ได้หรือไม่ เจ้าหน้าที่ก็หายไปเป็นสัปดาห์เลยครับ ผมก็เลยลองเช็คทางเว็บแล้ว ปรากฎว่ามันขึ้นระยะทางของผมประมาณ 1400 เมตร .. ซึ่งเป็นไปไม่ได้เลยกับการอัพ speed นี้

ซึ่งผมลองเข้าไปดูค่า SNR ก็พบว่ามันเป็นอย่างนี้ครับ

Picture 3.png

แต่แล้วเจ้าหน้าที่ก็โทรกลับมาหลังจากนั้น ว่าเน็ตบ้านผมสามารถอัพสปีดได้! อ่าว เวรกรรม – -! แล้วทำไมมันถึงอัพได้ ทั้งๆ ที่ไกลขนาดนั้น ผมก็เลยลองไปเช็คดู ปรากฎว่ามันเป็นอย่างนี้:

Picture 5.png

อุ .. แปลว่าเขาย้าย node ของผมให้มาใกล้ขึ้นแล้ววว ขอบคุณมากค้าฟ -/|\-

หลังจากนั้น ผมก็เลยจัดการเปลี่ยนแพกเกจอินเตอร์เน็ตบนเว็บเป็น 8 Mbps ..

changespeed.png

รอประมาณสองสามวัน กลับบ้านไปดูก็พบว่ามันเป็นอย่างนี้แว้ววว

8m.png

คราวนี้ก็เลยลอง test speed internet ดู ก็พบว่าได้ประมาณเกือบๆ 8 Mbps ก็ถือว่าโอเคครับ (7 ~ 7.5) .. พอรับได้ แล้วค่า SNR ก็ไม่ตกมากจนเกินไป ถือว่าโอเชเลยครับ

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

ว่าแต่ .. True รองรับ ADSL2+ ตั้งแต่เมื่อไรเนี่ย .. แอบเปลี่ยนจนผู้ใช้ไม่รู้เลย :D