0

wordcut 0.7.0 เรียกใช้จาก command line ได้แล้วครับ

wordcut คือโปรแกรมตัดคำ (word segmentation)

วิธีติดตั้ง

npm install -g wordcut

เวลาใช้ก็จะประมาณนี้อะครับ

$ wordcut
กากากา
กา กา กา

คือพิมพ์ กากากา เข้าไปมันก็ตัดได้ กา กา กา ออกมา

More info: http://github.com/veer66/wordcut

0

Ruby – return

เรื่องหนึ่งอาจจะยากที่สุดเวลาเขียน Ruby สำหรับคนที่เขียน Java มาก่อนอาจจะเป็นเรื่อง return

ผมว่าดูตัวอย่างพวกนี้แล้วก็จะเข้าใจได้ไม่ยาก

เหมือนกัน


def func1
  return 10
end

def func1
  10
end

ไม่แน่ใจว่าเหมือนกันไหมแต่ return ค่าเดียวกัน


def func2 a
  if a > 100
    return 10
  else
    return 20
  end
end

def func2 a
  if a > 100
    10
  else
    20
  end
end

แต่ถ้ามันมีหลาย ๆ คำสั่ง มันก็จะเอาคำสั่งสุดท้าย แบบข้างล่างนี่ก็จะได้ผลเหมือนกัน

def func3
  func4(10)
  return func5(20)
end

def func3 a
  func4(10)
  func5(20)
end

มีคนถามว่าแล้วจะมี return ไปทำไม มีคนตอบว่ามันทำให้ function หยุดตรงกลางได้ เช่น

แบบข้างล่างถ้า a = 101 มันก็จะ return 20 แล้วก็ไม่ไปทำ puts ข้างล่าง

def func6 a
  if a > 100
    return 20
  end
  puts 30
  puts 40
  50
end

ปกติแล้วเวลาเขียน Ruby เราต้องติดเสมอว่าจะ return อะไร

… ถ้ามั่วก็ขออภัย

ป.ล. ท่าพวกนี้ Ruby น่าจะได้มาจาก Scheme แต Scheme จะเขียนหลาย ๆ คำสั่งต่อกันเลยไม่ได้ ต้องมีบางทีต้องไปอยู่ใน (begin ) … แต่ช่างเถอะ :-P

0

คำแนะนำเกี่ยวกับ PHP บน Windows

มิตรสหายหลายท่านเขียน PHP กันบน Windows ครับ ผมก็ไม่ได้ใช้นานแล้ว ตอนโน้นผมใช้ XAMPP มันก็ ok อยู่นะครับ แต่ถ้า project ที่คิดว่าจะใช้เร็ว ๆ นี้ก็อาจจะเลือกตัวเก่า ๆ หน่อยนะครับสัก PHP 5.3 เพราะว่า server หลายตัวยังใช้อยู่ อย่างเช่น Ubuntu 12.04 LTS ก็ยังใช้ PHP 5.3.10 อยู่ เป็นต้น ครับ

0

ใช้ node.js กับ Apache HTTP server

ผมต้องการใช้ node.js กับ Apache HTTP server โดยที่ถ้ารับ request มาแล้วเป็นรูปภาพที่เป็น static file ก็ให้ Apache HTTP server เอามาแสดงผลเลย นอกจากนั้นก็ทำตัวเป็น reverse proxy ส่งต่อไปให้ node.js อีกที

สมมุติว่าเปิด node.js ไว้ที่ port 3000 แล้วกัน ที่ Apache HTTP server ผมต้องลง mod_rewrite และ mod_proxy_html มี set ค่าของ proxy นิดหน่อย ปกติใส่ในไฟล์ของ site ที่อยู่ใน /etc/apache2/site_enabled ถ้าใช้ Debian ตามนี้

  ProxyRequests off
  <proxy *>
     Order deny,allow
     Allow from all
  </proxy>

แล้วก็ใน .htaccess ผมใส่สิ่งนี้ไว้สำหรับ mod_rewrite อ่อแต่อย่าลืม AllowOveride ก่อนนะครับ

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/img
RewriteRule (.*)$ http://localhost:3000/$1 [P]

อันนี้ RewriteCond ก็จะบอกประมาณว่าอะไรที่อยู่ใน img ไม่ต้องทำ rewrite ส่วน url ที่เหลือก็ทำตัวเป็น proxy ( [P] ) ไปเรียกที่ node.js อีกที

ผมก็มั่ว ๆ นะครับพึ่งเคยใช้ก็อย่าเชื่อมาก ปกติใช้ nginx น่าจะง่ายกว่า แต่ในกรณีที่มันไม่มีก็นะ …

0

Keon + Thai keyboard

Keon + Thai keyboard

 

ขอบคุณ patch โดย @pittaya และวิธี install จาก https://hacks.mozilla.org/2013/06/updating-and-tweaking-your-firefox-os-developer-preview-phonegeeksphone/

สิ่งที่ผมลงไปคือ สิ่งนี้ วิธีคร่าว ๆ ก็คือลง rom nightly แบบวิธีตาม link ข้างบนแล้วก็ clone Gaia มา build แต่ว่าใช้ branch master เลย แล้วก็ merge กับ patch ของ @pittaya

0

ใช้ $q กับ $http.post ใน Angular.js

$http.post ใน Angular.js มันก็เอาไว้เรียก HTTP request ที่แน่นอนเป็น async


function ReqCtrl($scope, $http) {
  $scope.seq = "Seq: "
  $http.post('/echo/json/', "delay=2&json={\"x\":10}").success(function (data) {
    $scope.seq += " " + data.x;
  });

  $http.post('/echo/json/', "json={\"x\":20}").success(function (data) {
    $scope.seq += " " + data.x;
  });

  $http.post('/echo/json/', "json={\"x\":30}").success(function (data) {
    $scope.seq += " " + data.x;
  });
}

แบบ code ข้างบนนี่มันก็จะรับประกันไม่ได้ว่า อันไหนจะทำงานก่อนทำงานหลัง ลองเล่นดูที่นี้ได้ http://jsfiddle.net/veer66/KXDX6/

คือจริง ๆ จะเขียนแบบซ้อน ๆ กันไปเลยก็ได้ แต่ว่ามันก็จะซ้อนกัน :-P … เรามีทางเลือกอื่นคือใช้  Q  แต่ว่า Angular.js มี $q ให้ในตัวเลย เขียนแบบข้างล่าง


function ReqCtrl($scope, $http, $q) {
  $scope.seq = "Seq: "
  var deferred = $q.defer();
  var promise = deferred.promise;
  deferred.resolve("nothing");
  
  promise.then(function(promise) {
    return $http.post('/echo/json/',
                      "delay=2&json={\"x\":10}").success(
                                     function (data) {
                                        $scope.seq += " " + data.x;
                                     });
  }).then(function(promise) {
      $http.post('/echo/json/', "json={\"x\":20}").success(
                                          function (data) {
                                             $scope.seq += " " + data.x;
                                          });
  }).then(function(promise) {
      $http.post('/echo/json/', "json={\"x\":30}").success(
                                          function (data) {
                                             $scope.seq += " " + data.x;
                                          });
  });
}

ลองเล่นได้ที่ http://jsfiddle.net/veer66/nxJFH/ จะเห็นได้ว่ามันเรียง 10 20 30 … อันนี้มันใช้ได้ เพราะว่า $http.post มัน return promise ออกมา ในสิ่งที่ถูก return ออกมาจาก function ใน then มันจะถูก check ว่าเป็น promise หรือเปล่าถ้าเป็นมันก็จะใช้ promise นั้นเลย ไม่สร้างใหม่ ถ้าเรา return string หรือ integer หรืออะไรอื่น ๆ มันจะไปสร้าง promise มาครอบให้

เพราะว่ามันใช้ promise เดิม เลยทำให้ $http.post แต่ละตัวเชื่อมกันเป็นลำดับได้

20

โปรแกรมตัดคำ แบบใช้ PHP ล้วน ๆ

ที่ผ่านมามีหลายท่านสนใจถามเข้าหลังจากที่แสดงตัวอย่างเรียก Swath จาก PHP ให้ดู แต่ส่วนมากพอใช้บน Windows หลายคน ก็งง ๆ ผมก็งง ก็เลยจัดอันนี้ไป โปรแกรมตัดคำมันบน PHP ล้วน ๆ เสียเวลาเขียนไปหลายชั่วโมงอยู่ครับ น่าจะมี bug อะไรเต็มไปหมดถ้าท่านใดพบกรุณาแจ้งไปที่ https://github.com/veer66/PhlongTaIam/issue เดี๋ยวนี้ใช้ github แล้วครับ เพื่อท่านใดจะช่วยแก้จะได้ fork แล้ว pull request กลับมาได้เลย ไม่ต้องเสียเวลาย้ายไปย้ายมาให้ลำบากเหมือนโครงการก่อน

เข้าไป download ที่ https://github.com/veer66/PhlongTaIam ได้เลยครับ ถ้าเอาง่าย ๆ ก็ click ที่ปุ่มที่เขียนว่า zip และมีรูปเมฆมีลูกศรชี้ลงครับ ก็ได้ code ไปทั้งหมด เอาไปวางใน htdocs ก็น่าจะใช้ได้เลย

แต่ก็อาจจะเจ๊งบน Windows หรือสิ่งแวดล้อมที่ต่างจากที่ผมใช้อยู่อยู่ดี ถ้าปัญหาอะไรก็ถามไว้ที่นี่ได้ครับ แต่ว่าส่วนมากผมมักจะตอบไม่ได้  แต่ก็เผื่อมีท่านอื่นตอบได้ครับ

0

เริ่มทำ app บน Firefox OS ตอนที่ 1

ทีแรกก็ลง Firefox ก่อนครับ แล้วก็ลง Firefox OS Simulator ทีนี้ก็โหลด app ตัวอย่างมา https://github.com/comoyo/ffos-list-detail วิธีลงก็ตามใน link อะครับ แต่ผมต้อง cd เข้าไปใน bin แล้วค่อยสั่ง sudo ./init.sh ทำแบบในเว็บแล้วเจ๊งเพลียนิด ๆ เสร็จแล้วก็กลับมาที่หน้า Simulator firefox_sim
แล้วก็เอา url ของ app ที่เรารันไว้มาแปะ ในที่นี้คือ http://localhost:8081 แล้วก็สั่ง run เลยใช้ได้แล้ว … ตั้งแต่ลอง mobile os มา ผมว่านี่ง่าย เรื่องน้อย สุด ๆ แล้ว