프로그래밍
-
c++17 std::transform과 구조화된 바인딩 예제프로그래밍/코드 조각 2017. 12. 4. 13:21
#include #include #include #include #include int main(){ std::vector a{ 1,2,3,4,5 }; std::vector b{ "6", "7", "8", "9", "10" }; std::vector c; std::transform(a.begin(), a.end(), b.begin(), std::back_inserter(c), [](auto a, auto b) { return std::make_tuple(a, b); }); for (auto v : c) { auto [x, y] = v; std::cout
-
c++ 튜플 순회하기 예제프로그래밍/코드 조각 2017. 12. 1. 19:15
#include #include #include template void tuple_for_each_impl(const T& t, Func f, std::index_sequence){ (f(std::get(t)), ...);} template void tuple_for_each(std::tuple& t, Func f){ tuple_for_each_impl(t, f, std::index_sequence_for{});} int main(){ auto t = std::make_tuple(1, "name", 3.2f); tuple_for_each(t, [](auto v)..
-
구글 플랫버퍼(flatbuffers) 맛보기 in c++프로그래밍/c++ 2017. 11. 30. 12:43
플랫버퍼란?구글의 크로스 플랫폼 직렬화 라이브러리이다. 빠르고 사용하기 편리하다.c, c++, c#, go, java, js, php, python 언어를 지원한다. 간단한 사용법 스키마 파일을 작성한다. 스키마 파일을 컴파일한다. 컴파일하면 각 언어에서 사용될 파일들이 생성된다. FlatBufferBuilder를 이용해 플랫한 바이너리 버퍼를 생성한다. 컴파일된 파일들을 포함하면 손쉽게 바이너리 버퍼를 만들 수 있다. 바이너리 버퍼를 저장하거나, 보내거나 한다. 시작하기 https://github.com/google/flatbuffers/releases 에서 최신 릴리즈를 받는다.(2017-11-30 기준, 1.8.0) flatc_windows_exe, Source Code 모두 받고 압축을 풀어둔다...
-
node.js에서 sqlite 사용 중 콜백으로 last insert id를 받아오지 못하는 경우프로그래밍 2017. 8. 29. 10:10
let db = new sqlite3.Database('C:/Users/user/test.db', sqlite3.OPEN_READWRITE);db.run('INSERT INTO Members(name, email, ip) VALUES(?, ?, ?)', ['1', '2', '3'], (err)=>{ console.log(this.lastID);}); 위 코드엔 이상이 없어보였다. this.lastID가 undefined로 세팅되어 있었고 원인을 파악할 수 없었다. let db = new sqlite3.Database('C:/Users/user/test.db', sqlite3.OPEN_READWRITE);db.run('INSERT INTO Members(name, email, ip) VALUES(?, ?,..
-
node.js에서 파일 등을 읽어서 객체를 생성할 때프로그래밍/의문 2017. 7. 26. 10:13
객체가 생성되는데, 파일을 읽어서 초기화 시키고 싶었다. 왜냐면 깔끔하게 보이니까. const object = new AnyObject("config.json"); 근데 AnyObject 생성자에 readFile등의 비동기 동작이 있었다면 어떨까 class AnyObject{ constructor(fileName){ fs.readFile(...); }} 물론 fs엔 readFileSync가 있다지만 그건 이 상황에 대한 근본적인 해결이 아니다. 만약 sync 함수가 지원되지 않는다면 어쩔건데? 그에 여기에 대한 좋은 의견이 있다. Is it bad practice to have a constructor function return a Promise?Ask yourself: Do you actually n..
-
utf-8 파일 처리 중 bom으로 인한 출력 오류프로그래밍/의문 2016. 10. 11. 19:55
파일을 읽었다. with open(filename, mode="r", encoding="utf-8") as file:return file.readlines() 그런데 readlines()로 가져온 결과물들을 print 하는 부분에서 뜬금 없이 예외가 발생했었다. 예외의 메세지는 /ufeff를 해석할 수 없음! 이유는 윈도우에서 utf-8로 텍스트 파일을 작성하면 파일의 가장 첫 부분에 bom(byte order mask)를 자동으로 붙이는데, 이 bom을 출력하려고 하니 문제가 발생한 것이다. 해결utf-8로 파일을 읽으나, 파일의 첫 부분에 bom이 있을 경우 이를 제거한다. with open(filename, mode="r", encoding="utf-8") as file: # (또는 open 시 e..