google

Find the treasure, not too hard

posted on 29 May 2008 01:01 by ipats
สวัสดีครับ :)
หลังจากแป๊กกันไปแล้ว กับประโยค
ybtb ng uhaqerq qvi guerr cyhf sbhe.cv naq n dhnegre bs sbhe fvk guerr qbhoyr h

ที่มีคนแปลได้แล้วว่าเป็น
logo at hundred div three plus four.pi and a quarter of four six three double u

แต่ก็ยังไม่มีใครมาคอมเมนท์ตอบเลยว่าเป็นโลโก้อะไร Y-Y
มีเพื่อนบอกว่าอย่าเพิ่งเฉลย รอเค้าหาก่อน อิอิ
เพราะฉะนั้น มาว่าเรื่อง Google treasure hunt ดีกว่า :D

หลังจากเมื่อวาน คำถามข้อที่ 3 จาก 4 ข้อได้ปล่อยออกมา
สร้างความงุงงงอย่างยิ่งว่า.. ทำไมมันง่ายฟร่ะ!!!

ก่อนอื่น ขอเล่าปัญหา และเฉลยก่อนล่ะกัน
ใครยังไม่ได้เล่นไปเล่นก่อน อ่านเฉลยแล้วไม่มัน

ข้อแรก.. ปัญหาการเดินของหุ่นยนต์

ปัญหาคือ มีตารางขนาด n x k อยู่ มีหุ่นยนต์อยู่มัมบนซ้าย ให้เดินไปมุมล่างขวา
โดยหุ่นสามารถเดินได้แค่สองทางคือ.. ขวา กับ ล่าง
ให้หาว่ามีทางเดินทั้งหมดกี่รูปแบบ ตอบเป็นตัวเลขฐานสิบแบบเป๊ะๆ



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

จากที่ว่ามา... ก็จะเห็นเลยว่า รูปแบบการเดินทั้งหมดก็จะเท่ากับ
จำนวนรูปแบบการเลือกเดินในทิศทางใดทิศทางหนึงจากระยะตลอดเส้นทาง
เอิ่ม งง.. (เขียนเองก็งง) สรุปเป็นสูตรเลยดีกว่า

ตาราง n x k จะมีระยะเดิน (n - 1 + k - 1) = (n + k -2)
สามารถเดินไปทางขวาได้ (n - 1) ล่างได้ (k - 1)
(คุ้นๆ ยัง)

เอาไปเข้าสูตรของการเลือก (Combination)
ได้รูปแบบการเดิน (n + k - 2)!/((k - 1)! (n - 1)!)

ง่ายไหม?
ปัญหาอีกอย่างของข้อนี้คือ ตัวเลขที่มหาศาล (ลองคิดถึง 60! ดู)
แต่ไม่เป็นไรครับ อิอิ ผมมี Powertoy Calculator คิดได้มากสุดถึง 512 หลัก อิอิ
(จะบอกว่า รอบแรกตอบไปผิด.. ลืม -1 แหละ เหอๆ)

จบข้อแรก


ข้อถัดมา บวกเลขในไฟล์


มันก็เป็นการบวกเลขธรรมดานี่แหละครับ แต่ยุ่งหน่อยที่ตัวเลขมันอยู่ในไฟล์
ปัญหาข้อนี้ เค้าจะให้ไฟล์ zip มาไฟล์นึง ข้างในมีไฟล์และไดเร็กทอรี่มากมาย
แล้วก็จะให้เงื่อนไขว่า ให้บวกเลขในบรรทัดที่ xxx ของไฟล์ที่มี abc ในชิ่อ
และลงท้ายด้วย .def อะไรทำนองนี้... บางคนอาจจะนั่งบวกมือไป.. ก็ได้นะ แต่เหนื่อยหน่อย

วิธีง่ายๆ มากๆ คือใช้ unix command แล้วก็ pipe ไปเรื่อยๆ แต่... ผมใช้ไม่เป็น!!
ก็เลยเขียนสคริปโง่ๆ มาตัวนึง เป็น directory traversal ใน PHP

โค้ดตามนี้

$root = "/path/to/the/extracted/files/";
$stack = array($root);
$line = line number;
$sum = 0;

while(count($stack) > 0) {
  $c = array_pop($stack);
  $d = opendir($c);
      while (($file = readdir($d)) !== false) {
        if (($file == '.') | ($file == '..')) {
          continue;
        }
        $fpath = "{$c}{$file}";
        $ftype = filetype($fpath); 
        if ($ftype == 'dir') {
          array_push($stack, "{$fpath}/");
        } else {
           if (preg_match("/regexp here/i", $fpath) == 1) {
            $fc = file($fpath);
            $sum += (count($fc) > $line)?$fc[$line]:0;
          }
        }
      }
  closedir($d);
}
echo "{$sum}\n";


รู้สึกว่าข้อนี้จะยากที่สุด เพราะต้องเขียนสคริปท์ (ยาวด้วยง่ะ) - -"
จริงๆ ถ้ารู้คำสั่ง linux คงง่ายกว่านี้มาก

จบข้อสอง


ข้อสุดท้าย (ข้อสาม ข้อปัจจุบัน) เป็นปัญหาเน็ตเวิร์คครับ
โดยเค้าจะให้ routing table มา กำหนดจุด source, destination ให้หา path

(ตัวอย่าง)


ข้อนี้ ถือว่าเป็นข้อที่ง่ายที่สุดในบรรดาสามข้อ
วิธีคือ.. มองไปทีจุดเริ่ม (source) แล้วดูในตารางว่า destination ip ไปตกช่องไหน
เช่น ถ้าเราต้องไป 123.1.2.3 แล้วมีช่องนึงเขียนว่า 123.1.2.3 => 4.5.6.56
ก็ให้ไปหาโหนดต่อไป ที่มี ip = 4.5.6.56 แล้วก็บันทึกไว้เป็นโหนดในเส้นทาง
และก็มองหาต่อไปว่าในบรรทัดของโหนดนี้ มีช่องไหนตรงกับ dest ip อีก
(สังเกตว่า เรามองอยู่ ip เดียวเลย.. คือจะไป dest ip ให้ได้)
ถ้าหาไม่เจอ ก็ไปดูที่ช่องสุดท้าย default route ไล่ๆ ไป จนถึงปลายทางที่ต้องการ

ผมใช้เวลาไปนานมาก.. จริงๆ ควรตอบได้ภายใน 1-2 นาที ความรู้คืนอาจารย์หมด Y-Y


ที่มาเขียนเล่า และเฉลยให้ดูนี่ ก็เพื่อจะบอกว่า...

เห็นไหม?.. มันไม่ยากเลยซักนิด!!

ไปชวนเพื่อนเล่น มันบอกว่าขี้เกียจ เล่นไม่เป็น ยาก ฯลฯ
คิดไปเองครับ :p

สมองคนไทย ไม่แพ้ชาติใดในโลก (ที่เราแพ้ เพราะเราเอาแต่ประท้วง และปฏิวัติ!!)

สัปดาห์หน้า จะมีถามสุดท้าย ข้อที่ 4 ยังไงก็มาเล่นกันนะครับ
ติดตามรายละเอียดได้ที่บล็อกของกูเกิ้ล

และอย่าลืม.. ช่วยหาโลโก้ที่ผมให้หาหน่อยเถอะ.. นะๆ จุ๊บๆ


พอดีเห็นโฆษณาของ AIS (นานแล้ว) ที่ว่า
AIS จับ google มาไว้บนมือถือ

ไอ้ผมได้ยินดังนั้นก็ตะขิดตะขวงใจ.. เหตุใด AIS จึงต้องมาโฆษณากันด้วย
เพราะปกติแล้ว ค่ายไหนๆ มันก็ใช้ได้กันหมด ถ้าเชื่อม internet ได้
วันนี้ผมเลยมาขอเสนอการใช้บริการจาก google บนมือถือ อย่างคร่าวๆ
....
[เครื่องปัจจุบันที่ผมใช้คือ SE W550i นะครับ Browser คือ NetFront]

วิธีใช้ google ผ่านมือถือ เอาเป็นแบบการค้นหาข้อมูลก่อน
วิธีก็คือ ใช้ browser บนมือถือนี่หล่ะ เข้าไปที่ www.google.com ปกติเลย
ถ้ามันเละๆ หรืออาการแปลกๆ เพราะ google ไม่สามารถ detect ได้ว่าเป็นมือถือ
ก็เข้าไปที่ www.google.com/m ได้ ด้วย

แต่ถ้า browser มือถือมันไม่เร็วทันใจ (ผมว่า netfront ช้าอ่ะ)
จะโหลด opera mini มาใช้ก็ได้ครับ http://www.operamini.com/
แค่นี้ก็เหมือนเอา Google มาใส่บนมือถือแล้ว!!

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

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

มีทิปเล็กน้อยอีกนิดหน่อย
เนื่องจาก ถ้าใช้มือถือเช็คเมล์จาก account หลักโดยตรง
มันอาจจะมีเมล์เยอะมาก แต่บางทีเราก็ต้องการแค่เมล์ที่สำคัญมากๆ จริงๆ
อันนี้เราก็สามารถแก้ปัญหาโดยการใช้หลาย account แล้ว fwd เอา
เช่น ผมมีเมล์หลักคือ ipats แล้วมีเมล์สำหรับมือถือโดยเฉพาะคือ mymob

ผมก็ตั้ง filter (Settings > Filters)
ให้ที่ ipats ตรวจดูว่าเมล์นั้นส่งมาจากใคร หรือหัวเรื่องอะไร
ถ้าตรงตามที่ผมกำหนด เช่น เป็นเมล์จากแฟน (ที่หวังว่าจะมีซักที)
ก็จัดการ fwd ต่อไปที่ mymob

แล้วที่มือถือก็สั่งให้เช็คเมล์จากแอดเคาท์ mymob
เท่านี้ก็จะได้เฉพาะเมล์สำคัญแล้ว

.. ว่าไปถึงเมล์ของกูเกิ้ลแล้ว
ก็ขอไปหาคู่แข่งนิดนึง.. นั่นคือ msn
ซึ่งสามารถใช้ browser บนมือถือ เข้าไปที่ http://mobile.live.com/
ละก็จะสามารถเช็คเมล์ได้เหมือนกัน รวมทั้งใช้ messenger ด้วย
(ที่หลายคนคงเคยเห็นผม on mobile นั่นหล่ะ)

ส่วน yahoo ก็ไม่น้อยหน้า มี http://m.yahoo.com/ เหมือนกัน :D

สุดท้าย การใช้งาน Google Calendar
ไหนๆ ก็ใส่แผนการณ์ต่างๆ ไว้บนเว็บกูเกิ้ลแล้ว
ไฉนเลยจะเอามายัดมือถือบ้างไม่ได้หล่ะ
... ผมก็ได้ข่าวว่า ถ้าใช้ mac มันจะซิงค์มาได้เลย (จริงเปล่า? ไม่มีให้ลอง)
แต่ผมว่าคนใช้ windows & linux น่าจะเยอะกว่า แหะๆ
เราก็มาซิงค์ผ่านอินเทอร์เน็ตดีกว่า

เนื่องจาก โดยปกติแล้ว google calendar มันจะสามารถ export calendar
ออกมาได้ 3 แบบคือ XML, iCal และ HTML ซึ่งก็น่าเสียดาย
เพราะมือถือส่วนใหญ่มันไม่ได้รองรับพวกนี้ T T
แต่เดี๋ยวก่อน.. เรามีบริการ GooSync ที่เป็นทางออก
GooSync เป็นบริการฟรี (ถ้าเสียตังจะได้ฟีเจอร์เพิ่ม)
เอาไว้สำหรับใช้มือถือซิงค์ปฏิทินกับ google โดยผ่าน SyncML

วิธีสมัครก็ง่ายแสนง่าย สมัครเสร็จก็แอด google account เข้าไป
เสร็จแล้วก็มาตั้งค่าที่มือถือ แถวๆ Organizer > Synchronization
ก็อาจจะต่างกันไปตามยี่ห้อ/รุ่นนะครับ ลองดูคู่มือเครื่องเอา
แอดโพรไฟล์แล้วใส่ค่าต่างๆ ที่แนะนำตามเว็บนั้นไป

มือถือบางรุ่น เว็บนั้นจะซัพพอร์ตการทำ OTA (Over-the-Air) เลย
ก็อาจจะง่ายหน่อย จำไม่ได้ว่าใช้เบอร์ในไทยได้หรือเปล่านะ
แต่ manual ก็ไม่ได้ยากเท่าไหร่

วิธีการซิงค์ ก็แล้วแต่เราตั้งค่าไว้ ถ้าตั้งแบบออโต้ก็ไม่ต้องทำอะไร
มันจะซิงค์ให้เองตามเวลาที่กำหนดเป็นระยะๆ
แต่ถ้าไม่ได้ตั้งไว้ ก็สั่งให้มันซิงค์เองตามสะดวก

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

ถัดมา..
คราวนี้ จะเป็นวิธีการแจ้งเตือนเหตุการณ์ใน Google Calendar ผ่านทาง SMS
ค่ายที่ใช้ได้ก็คือ AIS, DTAC และ True Move

วิธีการก็คือ อย่างแรกเราต้องมี account google calendar ซะก่อน
(ถ้าไม่มีก็ไม่รู้จะใช้ยังไงอ่ะเนอะ)

แล้วก็ไปที่ Setting > Notifications
เลือกประเทศ ใส่เบอร์โทรศัพท์ +668xxxxxxxx
ช่อง Carrier ก็ปล่อยเป็น See Help Center for .... ไป
กด Send Verification Code แล้วรอซักพักจะมี SMS มา

ใส่ code ที่ได้จาก SMS ที่ช่อง Verification code
แล้วก็กด Finish setup เป็นอันเสร็จพิธี ลงทะเบียนโทรศัพท์

ทีนี้ก็ในส่วน Choose how you would like to be notified
ก็ติ๊ก SMS ในเหตุการณ์ที่ต้องการได้เลย
พอถึงเวลาเตือน เราก็จะได้รับ SMS จาก Google มาเลย
ง่ายไหมครับ สะดวกมากด้วย

ทั้งหมดนี้ที่กล่าวมา สามารถเอาไปใช้งานในมือถือรุ่นกลางๆ ได้เกือบทุกรุ่น
ไม่จำเป็นต้องไฮเอนเลย.. และทุกอย่างนี้ผมเองก็ใช้งานจริงทุกอย่าง

เห็นมั๊ย.. ไม่ต้องไปเสียตังซื้อ Pocket PC Phone มาใช้ด้วย อิอิ

ปล. กำลังอยากได้เครื่องใหม่ K550i สวยดี เปลี่ยนจาก W เป็น K อิอิ
นี่เราเข้าไปอยู่ในอารยธรรมโซนี่แล้วเหรอเนี่ย.. อ๊ากกกกก
อีกรุ่นที่น่าสนคือ moto z6 ใช้ linux และซีพียูรันที่ 600MHz!!!

ปล2. การใช้งานแบบนี้ อาจะทำให้ค่าใช้จ่าย GPRS กระฉูดนะครับ
ก่อนลอง เช็คโปรโมชั่นตัวเองให้ดีล่ะ เดี๋ยวจะหาว่าไม่เตือน เหอๆ

ปล3. เล่น msn บนมือถือ มันก็สะดวกดี เสียแต่พิมพ์ลำบากไปหน่อย
แม้จะใช้ T9 ก็เถอะ พิมพ์มากๆ ปวดนิ้วนะเออ

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

ปล5. เคยคุยเรื่อง Pocket PC Phone กับพี่ลิ่ว
พี่เค้าบอก เหมือนเอา notebook มาโทรศัพท์
และยังรับไม่ค่อยได้กับอายุแบตฯ

ปล6. (จะถึงสิบมั๊ยเนี่ย)
opera mini มีสองรุ่น คือ advance กับ basic
ตัว adv จะต้องการหน่วยความจำ กับ cpu แรงกว่าหน่อย
เคยเอาแค่รุ่น basic ไปลงเครื่อง LG (จำไม่ได้รุ่นไหน) รันปุ๊บเครื่องเดี้ยงไปเลย T T
ใครจะซื้อมือถือแล้วเอามาใช้จาวา แนะนำดูที่นี่ก่อน http://www.jbenchmark.com/result.jsp
(K ดีกว่า W แยะเลยง่ะ CPU เร็วกว่าเท่าตัว... อยากได้ๆ เอิ้กๆ)

Google โดนไปอีกดอก

posted on 11 Apr 2007 22:35 by ipats
วันนี้ เวลาประมาณห้าโมงเย็นกว่าๆ
กำลังนั่งทำงานอยู่ที่ออฟฟิศ.. กำลังจะหาข้อมูลอะไรอยู่พอดี
พิมพ์คำค้นใน search box กด enter ปุ๊บ..

ยักษ์ตาเขียว!!!!

ลองรีเฟรชๆ ดู ทำไงก็เจอตาเชียว

ผมเป็นไปประมาณยี่สิบนาทีได้มั๊ง แล้วก็ใช้ได้

ตอนนี้กลับมาที่ห้องแล้ว ก็ใช้ได้ปกติ
แต่ทราบมาว่าที่ยังใช้ไม่ได้ก็ยังมีอีกหลายคน

บางคนบอกว่า.. แค่ google โดน block จะเป็นจะตาย
เว็บอื่นมีให้ใช้อีกเยอะแยะ msn, yahoo, av, etc.

ประเด็นไม่ใช่ว่าจะเลือกใช้อะไร
แต่มันคือ ทำไมต้องบลอค!!?