0

Range ใน Javascript

Range นี้ผมใช้ตอนอยากจะดูว่า ข้อความ อะไรที่ถูกเลือกอยู่บ้าง เวลาใช้ก็เขียนแบบนี้

var sel = window.getSelection();
if(sel.rangeCount > 0) 
    var r = sel.getRangeAt(0);

เขียน code แบบนี้ก็จะได้ r ที่เป็น range ออกมา อ่อผมใช้กับ Firefox 3.0.x และ Opera 10.x นะครับ IE 6-8 เข้าใจว่าใช้ไม่ได้ ส่วน chrome กับ safari ก็ยังไม่ได้ศึกษาเท่าไหร่

พอได้ range มา ผมก็รู้ได้ว่า element ไหน โดนเลือกตัวเริ่ม ตัวไหนตัวปิดโดยดูจาก r.startContainer และ r.endContainer ตามลำดับ แต่ว่าใน container อาจจะเป็น Text ก็อาจจะถูกเลือกแค่บางตัวในนั้นก็ต้องมาดู r.startOffset และ r.endOffset อีก

เท่านี้ก็คงพอใช้งานได้แล้ว …

1

Mockito: when … thenReturn แบบปริยาย และมีข้อยกเว้น

ผมอยากเขียน mock แบบได้ค่าอะไรมาก็ตามก็ให้ return 30; ไป แต่ถ้ารับ 20 มาให้ return 20; ไปก็เลยมาลองๆ ทำดูมั่วๆ ใช้ไม่ค่อยเป็นด้วย

package funfun;
import static org.mockito.Mockito.*;

public class Moki {
	public int foo(int x) {
		return 10;
	}

	public static void main(String[] args) {
		Moki ki = mock(Moki.class);
		when(ki.foo(anyInt())).thenReturn(30); // ปริยาย
		when(ki.foo(20)).thenReturn(20); // ยกเว้น
		System.out.println(ki.foo(20));
		System.out.println(ki.foo(30));
	}
}

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

0

CakePHP ออก 1.2 RC1 แล้ว

CakePHP ออก 1.2 RC1 แล้ว หลังจากเป็น Beta อยู่นานเหมือนกัน. และตามมาด้วยต้องออกแรงกันนิดหน่อยเพื่อที่จะ migrate จาก beta ไป rc1 ดูได้ที่ http://cakebaker.42dh.com/2008/06/05/migrating-from-cakephp-12beta-to-rc1/

ช่วงนี้ผมคงยังไม่ได้เขียน web แต่เขียน blog ไว้ก่อนกันลืม :-P

0

template สำหรับเริ่มเขียน Python

ผมมักจะมีปัญหาเรื่อง encoding บ่อยๆ เวลาผมจะเขียน Python เลยมักจะเริ่มด้วย code แบบข้างล่าง

# template
import sys

def main():
    reload(sys)
    sys.setdefaultencoding('utf-8')

if __name__ == '__main__':
    main()

ขอบคณคุณ cwt