전체 글
-
마이크로소프트의 ChakraCore과 node js공부/오픈소스 분석 2016. 1. 19. 01:09
최근 마이크로소프트에서 새로운 브라우저 Edge의 자바스크립트 엔진인 ChakraCore의 엔진을 공개했는데 공개한 이유가 좀 재미있다. 보통 node js를 돌릴 때 크롬의 v8엔진을 사용하는데 마소가 Chakra를 오픈소스로 공개하고 Chakra를 이용해서 nodejs를 돌리게 해서 edge와 uwp를 이용해서 앱개발을 유도하려고 한다. api도 추가되고 디버거도 공개하고 심지어 우분투15.10 x64에서 컴파일 가능하도록 준비하고 있다. 최근 edge사용해 보면서 나름 성능 괜찮다고 생각하고 있고 벤치마크 점수도 잘 나오고 있어서 앞으로 어떻게 될지 기대된다. https://github.com/Microsoft/ChakraCore http://www.infoq.com/news/2016/01/chak..
-
C++11 tuple implementation공부/c++ 2015. 12. 30. 11:15
C++11 부터 가변인자 템플릿(variadic template)을 지원하게 되면서 tuple의 구현이 재미있어졌다. 가변인자 템플릿을 지원하기전의 tuple은 최대 10개의 타입을 받는 것 까지 가능했다고 한다. 왜그러냐 하면 아래와 같이 N개 까지의 클래스를 모두 따로 정의해 뒀기 때문이라고 한다... (VC2010기준 아래는 boost의 tuple) C++11 가변인자 템플릿을 이용할 경우 이런식으로 구현 할 수 있다. vs2015에 implemetation된 tuple클래스 인데 그냥 최소한의 소스만 가져왔다. tuple의 각 value는 tuple_val에 저장한다. tuple class같은 생성자에서 상속 받는 방법을 이용하여 recursive specialization을 사용해 모든 인자들에..
-
[lob] nightmare -> xavius공부/LOB 2015. 8. 21. 01:45
[nightmare@localhost nightmare]$ cat xavius.c /* The Lord of the BOF : The Fellowship of the BOF - xavius - arg */ #include #include #include main() { char buffer[40]; char *ret_addr; // overflow! fgets(buffer, 256, stdin); printf("%s\n", buffer); if(*(buffer+47) == '\xbf') { printf("stack retbayed you!\n"); exit(0); } if(*(buffer+47) == '\x08') { printf("binary image retbayed you, too!!\n"); ex..
-
Go variable export unexport & Gorp reflect panic공부/프로그래밍 2015. 7. 10. 02:20
Go에는 database를 편하게 사용 할 수 있는 Gorp라는 라이브러리가 존재한다. (https://github.com/go-gorp/gorp) 일단 여러가지 디비를 지원하고 기본적으로 go에 포함되어있는 sql라이브러리 보다 훨씬 편하다. 제일 좋은점은 struct를 만들어 두고 addtable하면 자동으로 테이블도 만들어주고 디비랑 맵핑해준다. 그런데 막상 이용해보면 Panics if any interface in the list has not been registered with AddTable 라고 뜨면서 화나게 만든다... 국내에는 Go lang을 질문해서 대답해 줄만한 곳이 없어서 stackoverflow에 질문했더니 역시나 바로 달아주신다. Go 에서는 대문자로 변수를 선언 하면 Expo..
-
Golang 변수 초기화 + func init공부/프로그래밍 2015. 6. 15. 10:04
최근 Go를 이용해 프로그래밍을 해보면서 신기한 경험을 많이하고 있다.db를 초기화 해주는 init함수를 만들어 놓고 사용하는 코드를 집어넣지도 않았는데 db가 초기화가 되어있다. 그리고 다른 것 또한 잘돌아간다. main에다 init함수 호출하는 코드를 넣었더니 오류가 난다. 이게 무슨일이지 하고 검색해보니 func init()같은 함수를 만들게 될 경우 main함수 호출 이전에 같은 패키지 안에 있는 init함수들을 호출해준다. 위에처럼 package level의 변수들 같은 경우 선언과 함께 초기화 된다.(단 자신이 초기화 하기위해 사용하는 변수들이 초기화 된 이후 초기화 된다.)변수들을 dependency analysis를 통해 패키지 레벨 변수들은 아직 초기화가 안된 상황에서 초기화를 준비한다...
-
github에 공개한 Suspended Thread공부/c++ 2015. 6. 6. 21:43
https://github.com/jen6/SuspendThread 사실 별건 아니고 기존 std::thread 같은 경우 쓰레드를 만듬과 동시에 돌아가게 된다.그게 싫을 때도 있으니 일단 만들어 놓고 내가 원할 때 쓰레드가 시작될 수 있도록 해놓았다.(다시 멈추는건 안된다!)사실 이동대입연산자도 만들어야 하고 native handle 반환하는 메서드도 하나 따로 빼야하고 프로젝트 구조도 vs뿐만 아니라linux에서도 사용 할 수 있도록 변경해야 하지만...언젠간 하겠지뭐