json editorjson editor
Posted at 2012. 9. 16. 13:32 | Posted in 개발이야기http://jsoneditor.appspot.com/ ? 기능 막강
http://www.thomasfrank.se/json_editor.html ? 다운로드 가능(PC에 다운 받아서 쓰면 됨). 대체로 쓸만함.
http://jsonlint.com/ ? 크롬 확장프로그램으로 설치 가능 (But, “바로가기” 라는거..)
LD_PRELOAD를 이용한 hooking, wrappingLD_PRELOAD를 이용한 hooking, wrapping
Posted at 2012. 1. 25. 20:18 | Posted in 개발이야기hook_gethostname.c
wrap_hostname.c
Makefile
$ make run
을 실행하면,,
참고: BINARY HACKS 해커가 전수하는 테크닉 100선
#include#include int gethostname(char *name, size_t len) { char *p = getenv("FAKE_HOSTNAME"); if (p == NULL) { p = "localhost"; } strncpy(name, p, len-1); name[len-1] = '\0'; return 0; }
wrap_hostname.c
// define to use RTLD_NEXT #define _GNU_SOURCE #include#include #include // function pointer for origin gethostname function. static int (*gethostname0)(char *name, size_t len); // __attribute((constructor)): // main함수가 호출되기 전이나, // 공유 오브젝트가 로드되었을 때 실행해야 하는 함수에 사용. void __attribute__((constructor)) init_gethostname0() { gethostname0 = dlsym(RTLD_NEXT, "gethostname"); //NOTE: dlsym이 실패한 경우는? } // hooking gethostname int gethostname(char *name, size_t len) { char *p = name; if (len > 6) { memcpy(p, "name: ", 6); p += 6; len -= 6; } return (*gethostname0)(p, len); }
Makefile
TARGET_HOOK=hook_gethostname.so TARGET_WRAP=wrap_gethostname.so all: gcc -shared -fPIC -o $(TARGET_HOOK) hook_gethostname.c gcc -shared -fPIC -o $(TARGET_WRAP) -ldl wrap_gethostname.c clean: rm -f $(TARGET_HOOK) $(TARGET_WRAP) hook: all @echo "" @echo "- hostname -------------------------------------------------------------" /bin/hostname @echo "" @echo "- hostname hooking gethostname(libc.so) --------------------------------" FAKE_HOSTNAME=fake.hostname LD_PRELOAD=./$(TARGET_HOOK) /bin/hostname wrap: all @echo "" @echo "- hostname wrapping gethostname(libc.so) -------------------------------" LD_PRELOAD=./$(TARGET_WRAP) /bin/hostname run: hook wrap
$ make run
을 실행하면,,
gcc -shared -fPIC -o hook_gethostname.so hook_gethostname.c gcc -shared -fPIC -o wrap_gethostname.so -ldl wrap_gethostname.c - hostname ------------------------------------------------------------- /bin/hostname deepblue-ubuntu - hostname hooking gethostname(libc.so) -------------------------------- FAKE_HOSTNAME=fake.hostname LD_PRELOAD=./hook_gethostname.so /bin/hostname fake.hostname - hostname wrapping gethostname(libc.so) ------------------------------- LD_PRELOAD=./wrap_gethostname.so /bin/hostname name: deepblue-ubuntu
참고: BINARY HACKS 해커가 전수하는 테크닉 100선
Adobe - EdgeAdobe - Edge
Posted at 2011. 10. 23. 21:42 | Posted in 개발이야기플래시를 버릴건가?
http://labs.adobe.com/technologies/edge/
http://koko8829.tistory.com/m/1093
http://labs.adobe.com/technologies/edge/
http://koko8829.tistory.com/m/1093
RSS feed가 valid한지 검사해보자.RSS feed가 valid한지 검사해보자.
Posted at 2011. 8. 14. 18:11 | Posted in 개발이야기http://feedvalidator.org
직접 URL 호출할 경우: http://deepblue28.tistory.com/rss
http://feedvalidator.org/check.cgi?url=http%3A%2F%2Fdeepblue28.tistory.com%2Frss
직접 URL 호출할 경우: http://deepblue28.tistory.com/rss
http://feedvalidator.org/check.cgi?url=http%3A%2F%2Fdeepblue28.tistory.com%2Frss
concurrent 도구 간단 정리concurrent 도구 간단 정리
Posted at 2010. 11. 11. 11:32 | Posted in 개발이야기POSIX-pthread나 이를 wrapping한 여러 라이브러리들, java concurrent 패키지 등에서 유사한 이름으로 사용되는
concurrent 관련 객체, 메소드 등을 간단히 정리한다.
Mutex: 한번에 하나의 thread만 critical section에 진입 가능 (lock, unlock)
- lock: 하나의 thread만 lock을 획득할 수 있고, 다른 쓰레드는 lock이 풀릴때 까지 대기.
- tryLock: lock의 성질에 의해 진입할 수 없는 경우, false등을 반환하여 lock획득에 실패했음을 알리고 즉시 리턴.
(아무도 lock을 안잡았으면 잡고, lock이 잡혀있으면 즉시 리턴) - timedTryLock: tryLock과 동일하나 lock 획득을 위해 일정시간 대기한다.
- unlock: lock을 해제
Semaphore: N개의 thread만 critical section에 진입 가능 (acquire, release)
- acquire: lock과 동일하나 N개의 thread가 진입할 수 있다.
- tryAcquire: semaphore의 성질에 의해 진입할 수 없는 경우, false등을 반환하여 lock획득에 실패했음을 알리고 즉시 리턴. (semaphore를 획득할 수 있으면 획득, 아니면 즉시 리턴)
- timedTryAcquire: tryAcquire와 동일하나 semaphore 획득을 위해 일정시간 대기한다.
- release: acquire로 얻은 semaphore(lock) 반납.
ConditionVariable: 상태 변수 (wait, notify(또는 signal)). Lock 객체와 연계하여 사용됨.
- wait: 특정 상태가 변경될 때까지 대기함(notify(signal) 또는 notifyAll(broadcast) 이 호출될 때까지 기다림).
- timedWait: wait와 동일하나 특정 시간 동안만 대기한다.
- notify(or signal): 대기 상태에 있는(wait를 호출한) thread를 깨운다. 동시에 여러 thread가 대기하고 있는 경우 임의의 thread 하나만 깨어난다.
- notifyAll(or broadcast): 대기 상태에 있는(wait를 호출한) 모든 thread를 깨운다.