return

function ใน Lisp Ruby Rust หรือแม้แต่ JavaScript ใหม่ ๆ เวลาใช้ลูกศร มันไม่ต้องใส่ return
 
ผมคิดมันก็น่าจะเป็นแบบนั้นอยู่แล้ว สมัยเด็ก ๆ คิดถึง function ก็จะถึงประมาณ f(x) = 2*x + 5 ทำนองนี้ ไม่เคยเห็นว่ามันจะมี return
 
ครั้งแรกที่ผมรู้จัก return คือเห็นมันใช้คู่กับ gosub ใน MBasic ซึ่ง sub ย่อมาจาก subroutine ในภาษา Basic เวลานั้นมันก็เป็นเลขบรรทัดต่อไปเรื่อย ๆ ไม่ได้มี block อะไร พอสั่ง return ตอน subroutine จบโปรแกรมก็กระโดดมาทำงานคำสั่งต่อจาก gosub ไม่ได้ส่งค่าอะไรออกมาแบบ function ตอนนั้นผมก็คิดว่าดูตรงไปตรงมาดี
อาจจะทำให้เวลาเขียนโปรแกรมในภาษาที่มันไม่ต้องใส่ return ก็เลยไม่ได้รู้สึกว่าขัดใจอะไร

ใช้ nodemcu เปิด/ปิด LED ผ่านเว็บ

  • ทีแรกก็เริ่มจากซื้อ nodemcu มาก่อนครับ 270 บาท แล้วผมก็ต่อไปจากขา D2 ผ่าน R เข้าหลอด LED อีกขาก็ต้องลง ground
  • flash firmware ของ nodemcu ด้วย esptool (หาได้จาก github)
  • พอ flash แล้วจริง ๆ เราก็จะเริ่มเข้าไปเล่นได้เลย ผมใช้ minicom ที่เคยใช้ตั้งแต่สมัยใช้ modem สั่ง sudo minicom -D /dev/ttyUSB0 -b 9600 ก็เข้าไปพิมพ์คำสั่งในภาษา Lua ได้เลย
  • แต่พิมพ์เป็นทีทีไม่สะดวกเท่าไหร่ ก็เลยใช้ luatool (หาได้จาก github) upload source ขึ้นไปได้เลย โดยสั่ง sudo luatool.py แค่นี้ไฟล์ init.py จะถูกอัพโหลดขึ้นไป พอเรา restart ก็จะถูกเรียกมาทำงานเลย ไม่ก็ใส่ -r เข้าไปด้วยให้มัน restart ให้ก็ได้
  • ผมลองเขียน web ขึ้นมาด้วย node.js อยู่ที่ http://github.com/veer66/switch สามารถเข้าไปกดเปิดปิดไฟในเว็บได้ ท ่านใดสนใจ load ไปเล่นได้เลย ส่วน nodemcu ก็จะเข้าไปอ่านค่าจาก server แล้วก็ไปเปิดปิดไฟ (code อยู่ใน folder nodemcu)

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 ) … แต่ช่างเถอะ😛

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

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

ใช้ route ที่ controller อยู่ใน module


angular.module('mymod', [])
.controller('CorpusCtrl', function($scope) {
$scope.foo = 'bar';
})
.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/corpus', {templateUrl: 'partials/corpus.html', controller: 'CorpusCtrl'}); // อย่าลืมใส่ quote คล่อมชื่อ controller ด้วย

}]);

 

Partials/corpus.html:


{{foo}}

 

index.html:


<!doctype html>
<html lang="en" ng-app="mymod">
<head>
<title>MyMod</title>
</head>

<body>
<div ng-view></div>

</body>
<script type="text/javascript" src="http://localhost:3000/assets/application.js"></script>
</html>

อันนี้มีไฟล์ javascript อะไรบ้างก็ใส่เข้าไป ผมใช้ Rails เลยเรียก application.js  ที่เดียว

Kohana CLI (2)

หลังจาก เรียกใช้ Kohana จาก command line interface ได้แล้ว แต่ทีนี้อยากใส่ค่าตัวแปรอะไรเข้าไปด้วย ก็ทำง่ายๆ เลยมันมี option –get กับ –post อยู่

ยกตัวอย่างเช่น ผมมี controller ชื่อ home และ action คือ index และอยากส่งค่า x=10 และ y=abc เข้าไปทาง post method ก็ทำแบบนี้

php index.php –uri=”home/index” –post=”x=10&y=abc”

เสร็จละ