[Dart] Optional positional & named params


เริ่มจาก function ทั่วไปก่อน
function ธรรมดาต้องถ้ามี param ก็ต้องใส่ไปตามลำดับแบบนี้

import "dart:core";
String shout(String msg,int exclamations) {
  var buffer = new StringBuffer(msg.toUpperCase());
  if( exclamations != null) {
    for (var i =0 ;i< exclamations; i++) {
      buffer.write("!");
    }
  }  
  return buffer.toString();
}
main() {
  print(shout("Hello, World" ,1 ));
}
// HELLO, WORLD!

แต่ว่าถ้าเป็น positional , named จะมีการ define ใน function แบบนี้
optional positional

String shout(String msg,[int exclamations]) //กรณีนี้ควร check ว่ามีการ set ค่า exclamations มาหรือเปล่า

หรือแบบให้มีค่า default

String shout(String msg, [int exclamations=1])

ทำให้เรียกใช้ได้แบบนี้

print(shout("Hello, World"));

หรือว่าแบบนี้

print(shout("Hello, World", 5));

Read More »

พัฒนาการ การรองรับ input type ของ Browser


ต่อเนื่องจาก https://mossila.wordpress.com/2011/06/28/input-type-vs-browser/

เพราะว่ามันนานมาแล้วมากๆ เลยต้องขุดออกมา update ซะหน่อย
Browser ที่จับมายำวันนี้ได้แก่ Firefox , Chrome , Safari

  1. เรื่องของหน้าตา เรียกว่าดูแว้บแรก ก็รู้เลยว่า chrome มัน support เยอะกว่าเจ้าอื่นแน่ๆ รองลงมาน่าจะเป็น safari และสุดท้ายที่ firefox
    แต่ดูท่าว่า safari และ firefox จะไม่ได้มีการพัฒนาต่อเลยตั้งแต่ blog ไว้คราวนู้นรูปภาพ
  2. autofocus ใช้ได้ทุก browser จ้า
  3. Read More »

Supported HTML5 ‘s input type on Mobile


ต่อเนื่องจาก https://mossila.wordpress.com/2011/06/28/input-type-vs-browser/ ที่เคยทำไว้เมื่อนานมาแล้ว input type อะไรที่ browser support แล้วบ้าง
รอบนี้ขอมาดูของ mobile กับบ้าง focus ไปที่ ios เลยละกัน

input-type number

input-type datetime-local
Read More »

2012 in review


The WordPress.com stats helper monkeys prepared a 2012 annual report for this blog.

Here’s an excerpt:

600 people reached the top of Mt. Everest in 2012. This blog got about 9,400 views in 2012. If every person who reached the top of Mt. Everest viewed this blog, it would have taken 16 years to get that many views.

Click here to see the complete report.

[Xcode] Build แล้วไปไหน


Build เสร็จพวก Binary อยู่ที่นี้

Library/Developer/Xcode/DerivedData/

Run
พวกที่จะไป Run อยู่ในนี้(ios simulator)

~/Library/Application Support/iPhone Simulator/

python Generator(yield)


yield keyword ในภาษา python ที่มีมานานพอสมควรแล้ว(แต่่ผมก็เพิ่งเคยใช้เนี่ยแหละ)

yield มีคุณสมบัติคล้ายๆ กับ return แต่ว่าทุกครั้งที่ return กลับไปมันจะเก็บ state ของตัวเองไว้
แล้วพอผู้เรียก กลับเข้ามาทำงานใหม่อีกครั้งมันก็จะทำต่อจากจุดเดิมด้วยสาเหตุนี้มันจึงถูกเรียกว่า Generator

แล้วมันจะแตกต่างจากแบบเดิมยังไงลองมาดูตัวอย่างกัน
โจทย์คือให้หาค่าคูณสองของกำลังสองของตัวเลขใน list ที่มีมาให้
โดยวิธีการคือ วน for ใน list ที่นำไปยกกำลังสองเรียบร้อยแล้ว

วิธีแรกคือสร้าง list จาก powerListR ที่สร้าง list แล้ว append result ไปเรื่อยๆ แล้ว return กลับไป
วิธีแบบนี้จะใช้ loop ไปถึง 10 รอบ (5 รอบสำหรับยกกำลังสอง + 5 รอบสำหรับคูณสอง)

mylist =[1,2,3,4,5]
def powerListR(mylist):
    print "call doubleListR"
    result = []
    for i in mylist:
        print "calculate from doubleListR"
        result.append(i**2)
    return result
for i in powerListR(mylist):
    print "i*2 =",i*2

แต่ว่าวิธีการที่สอง ให้ทำการ yield result ที่ยกกำลังสองแล้วแทน
วิธีการนี้จะใช้การวน loop แค่ 5 ครั้งเท่านั้น (เมื่อ for รอบต่อไปทำงาน yield ก็ทำงานต่อจากเดิม)

mylist =[1,2,3,4,5]
def powerListY(mylist):
    print "call doubleList"
    for i in mylist:
        print "yield from double List"
        yield i**2
for i in powerListY(mylist):
    print "i*2 =",i*2

สำหรับงานที่มีการประมวณระดับใหญ่ๆ yield จะช่วยเพิ่มประสิทธิภาพให้กับงานได้มหาศาลเลยทีเดียว

ตัวอย่างคำสั่ง alias + bash_profile


alias เป็นคำสั่งที่ทำให้เราจำลองคำสั่งของเคร่ืองเดิมเป็นคำสั่งใหม่ที่เราตั้งเอง
โดยเราต้องระวังไม่ใช้ไปทับกับคำสั่งเดิมของเครื่องเอาเอง
แต่ว่าอันนี้เช็คง่ายๆ
โดยสมมุติเราต้องการ คำสั่ง showhidden สำหรับแสดงไฟล์ซ้อนใน Finder(บน Mac)
ก็ลองพิมพ์ไปเลยว่า

$ showhidden

อาจจะพิมพ์แค่ไม่กี่ตัวแล้วกด tab ดูถ้ามันกดไม่ได้แสดงว่าไม่มีคำส่ังนี้แล้ว
ถ้าเพื่อความชัวล์อยาก enter ดูก็จะได้ว่า

-bash: showhidden: command not found

แสดงว่า command ชื่อนี้ไม่มีอยู่เอามาใช้ได้เลย

วิธิใช้ก็

alias command=""

ตัวอย่าง

alias showhidden="defaults write com.apple.finder AppleShowAllFiles TRUE;killall Finder"

โดยคำสั่ง defaults write com.apple.finder AppleShowAllFiles TRUE;killall Finder
เป็นคำสั่งเต็มสำหรับแสดงไฟล์ซ่อน ใน Finder เราก็จัดการ alias มันสั้นๆ เหลือแค่ showhidden เท่านั้นพอ

ตัวอย่างการใช้งานจริงใน .bash_profile ของผม

export PS1="\T:\W $ "

#alias for 'ls' with color
alias ls="ls -GF"
alias ll="ls -lGF"
alias la="ls -alGF"

# remount file that form windows and may not be show on finder
# this will remove '@' form drwxr-x-r-x@  it may not good for every file
# use only on folder that you can not see it on normal Finder mode. Good luck 🙂
# usage 'windirshow '

alias windirshow="xattr -d com.apple.FinderInfo"

# show hidden file on finder or hide it.
alias showhidden="defaults write com.apple.finder AppleShowAllFiles TRUE;killall Finder"
alias shownormal="defaults write com.apple.finder AppleShowAllFiles FALSE;killall Finder"