My Octopress Blog

A blogging framework for hackers.

When We Are in the Flow

Intensely focused on an activity of our own choosing, that is neither under-challenging nor over-challenging that has a clear objective and that receive immediate feedback.

from. Decision Books

สั่ง by Word ขึ้นมาทำงานพร้อม Template และชื่อ File จาก Rake Task

สั่ง By Word ขึ้นมาทำงานพร้อม Template และชื่อ File จาก Rake Task ทำด้วย Code หน้าตาแบบนี้

require 'rubygems'
require 'optparse'
require 'yaml'

desc 'create a new draft post'
task :np do
  OptionParser.new.parse!
  ARGV.shift
  title = ARGV.join(' ')

  path = "_posts/#{Date.today}-#{title.downcase.gsub(/[^[:alnum:]]+/, '-')}.md"

  if File.exist?(path)
    puts "[WARN] File exists - skipping create"
  else
    File.open(path, "w") do |file|
      file.puts YAML.dump({'layout' => 'post', 'published' => false, 'title' => title})
      file.puts "---"
    end
  end
  `osascript ./applescript/open-byword.scpt #{Dir.pwd}/#{path}`

  exit 1
end

open-byword.scpt อยู่ที่นี่

Javascript Scope ตอนที่ 2 [Object, This, Window, Var]

วันนี้มาว่ากันเรื่อง scope แบบดู code เอง แล้วก็สงสัยเองครับ

ผมมี code javascript มาให้ 4 ชุด ลองทาย output กันดูนะครับว่าได้อะไรบ้าง (พร้อมเหตุผลว่าทำไมถึงเป็นเช่นนั้น)

Code ชุดที่ 1

Code ชุดที่ 2

Code ชุดที่ 3

Code ชุดที่ 4

เฉลย:

  1. hello window
  2. hello inside
  3. hello window
  4. hello object

ข้อมูลเพิ่มเติม

  • typeof window
  • typeof this
  • console.log(this===window && ‘this===window’)

discuss กันที่กล่อง comment นะครับ :)

ตัดคำภาษาไทยด้วย Javascript [ตัดคำทาง Service]

Service ตัดคำภาษาไทย

มีให้บริการสองแบบคือ

  • JSON
  • JSONP

วิธีการใช้งาน (json output)

ให้ request ไปที่ atnnazt.appspot.com/tokenizer/index?word=ข้อความที่ต้องการตัด

แต่ถ้าต้องการเรียกใช้งานผ่าน javascript ก็ต้องใช้ jsonp ให้ส่ง callback ไปด้วย

วิธีการใช้งาน (jsonp output)

ระบุ parameter [&callback=your_callback] มาด้วย

http://atnnazt.appspot.com/tokenizer/index?word=ข้อความที่ต้องการตัด&callback=your_callback

Output (JSON Object)

tokenizer

  • text = คำที่ถูกตัด คั่นด้วย => เช่น “ สวัสดี ครับ พี่น้อง
  • list = JSON array ของคำที่ตัดแล้ว =>[“สวัสดี”, “ครับ”, “พี่น้อง”]
  • position = JSON array ของตำแหน่งของอักระที่ถูกตัด => [6, 10, 17]

code ตัวอย่าง [jQuery.getJSON]

jQuery.getJSON('http://atnnazt.appspot.com/tokenizer/index?word=สวัสดีครับพี่น้อง&callback=?',
  function(tokenized) {
    console.log(tokenized, tokenized.text, tokenized.list, tokenized.position);
  });

Code ตัวอย่างใน firebug

jQuery getJSON

เบื้องหลังการตัดคำ

ใช้ LexTo ตัดคำ ซึ่งเป็นการตัดคำแบบ dictionary based ทำงานบน google app engine เป็นเว็บด้วย grails

ซึ่งเปิดเผย source code ด้วย [แต่กากมาก] ทำแค่รันได้ (มันแก้ไขมาน่ะ) เชิญที่ github

ตัดคำตามพจนานุกรม lexitron

เรื่องการตัดคำสามารถหาอ่านได้ในตอนเก่าๆ tag LexTo, ตัดคำภาษาไทย

Validate Facebook Layout

function validate_facebook_session($args, $app_secret) {
  $payload = '';
  ksort($args);
  foreach ($args as $key => $value) {
    if ($key != 'sig') {
      $payload .= $key . '=' . $value;
    }
  }
  $hash_in = $payload . $app_secret;
  $sig = $args['sig'];
  if (md5($hash_in) != $sig) {
    return null;
  }
  return $args;
}