파워쉘을 사용한 주/월 단위 hyper-v 백업하기

가상머신들을 백업할 일이 있어 작성한 스크립트입니다. 윈도우에서 자체적으로 제공하는 WSB로는 일단위 백업밖에 제공하지 않아 VHD 파일만 따로 압축하여 저장하는 식으로 구성하였습니다. 백업 유형에 따라 -type 인자에 Month/Week 중 적절한것을 선택하여 작업 스케줄러에 등록해 주시면 됩니다. 아래 스크립트는 다음과 같은 과정을 거쳐 실행 됩니다. Window Server 2012 R2에서 작동을 확인했습니다. volume shadow copy 만들기 심볼릭 링크를 […]

C++ Rest SDK(Casablanca)를 사용한 네이버 영어사전 카카오톡 봇 구현 2 – /message 구현해보기 (+ 크롤러)

[Development Environment] Ubuntu 16.04/clang++/Nginx on AWS EC2 전 게시물에서 /keyboard에 GET 요청을 처리하는 리스너를 작성하였는데, 이번엔 /message에 POST요청을 처리하는 리스너를 작성해보려 한다. 이번 리스너는 카카오톡 봇을 통해 유저가 메시지(검색할 단어)를 전송하면, Reply에 검색 결과를 포함해 답장해주면 된다. 이전과 같은 형식의설명과 스펙을 보자. 5.2. 메시지 수신 및 자동응답 API – 사용자가 선택한 명령어를 파트너사 서버로 전달하는 […]

C++에서 전위연산자(postfix)와 후위연산자(suffix)의 성능 차이

원본글 – Is there a performance difference between i++ and ++i in C++? 요약 : 경우에 따라 다르지만, 특별한 이유가 없다면 i++ 대신 ++i를 쓰세요 우선 C부터 알아보자면, 컴파일러와 시스템에 따라 다르지만 대부분 차이는 없다.  하지만 사실은 잠재적(?)으로 i++이 ++i보다 느리다. 왜냐하면 후위연산이 이루어지기 전의 값을 저장하기 위해 임시변수를 만들기 때문이다. 하지만 요즘 컴파일러들은 최적화 […]

clang++에서 std::thread 사용할 땐 꼭 -pthread 옵션을

clang++로 링킹할 때 -pthread옵션을 꼭 붙여야 한다. C++11부터 std::thread를 지원하길래 단순히 -std=c++11만 사용하면 될 줄 알고 링킹이 안되는 이유로 애꿏은 로직만 탓하고 있었는데, 알고보니 pthread(POSIX Threads)를 꼭 포함해야 한다고 한다. 음;; 처음부터 난항인 멀티스레드의 세계;;  

C++ Rest SDK(Casablanca)를 사용한 네이버 영어사전 카카오톡 봇 구현 1 – /keyboard 구현해보기

[Development Environment] Ubuntu 16.04/clang++/Nginx on AWS EC2 이전 글에서 지금부터 작성할 url 리스너의 베이스가 될 Listener class를 작성했다. 이번 글 부터는 실제로 카카오톡 봇에게 피드백을 받을 수 있도록 코드를 작성해보자. 우선 카카오톡 봇을 입장하면 Home Keyboard API를 호출해야 한다. 5.1. Home Keyboard API 이용자가 최초로 채팅방에 들어올 때 기본으로 키보드 영역에 표시될 자동응답 명령어의 목록을 […]

C++ Rest SDK(Casablanca)를 사용한 네이버 영어사전 카카오톡 봇 구현 0 – 카사블랑카 설치 및 세팅, 기초 설명

[Development Environment] Ubuntu 16.04/clang++/Nginx on AWS EC2 이번에 개인 프로젝트로 REST를 살짝 맛보기 위해 C++ REST SDK(casablanca)를 사용하여 카카오톡 자동응답 봇을 만들었는데, 아직 손 볼 부분이 많다. 근데 뭐.. 솔직히 봇 만드는거 자체는 생각보다 쉬웠다. 이전에 게시글로 작성한 크롤러를 직접 만드는게 좀 걸렸을 뿐 .. (예제가 별로 없어서 좀 슬프긴했다..) 어쨌든 자동응답 API 도큐먼트 를 읽어보면, […]

libcurl C-Style CURLOPT_WRITEFUNCTION callback -> Lambda(C++11)

  libcurl은 기본적으로 C언어의 라이브러리이기 때문에 CURLOPT_WRITEFUNCTION를 인자로 설정했을 시  ‘콜백’ 함수를 넘긴다. 잠시만! 여기서 우선 콜백이란? 피호출자가 호출자를 호출하는 것 주로 콜백은 WIN32 API 코딩을 하다보면 많이 사용하게 된다. 시스템 관련 함수를 사용하면 내가 직접 운영체제에서 얻는것이 아닌 운영체제에서 제공된 인터페이스를 통해 답을 받는 식이므로.. 그래서 우리에게 익숙한 Asynchronous I/O에서는 요청자가 처리자의 처리가 다 끝날 […]

libcurl + libxml2로 C++에서 네이버 영어사전 크롤러 구현

HTMLCrawler 클래스로 구현했습니다. Ubuntu16.04에서 clang++로 테스트 해 정상 작동 확인하였습니다. constructor : url 받음 getHTML(): html 받음 – 추후 기능 추가 write() : html 파일 씀 parse_all(bool isFile, bool printText, const::std::string sourceHTML, const std::string Parsetag) isFile이 true면 sourceHTML에 파일 이름을, false면 버퍼의 이름을 입력하고, printText가 false일 시에는 태그를 포함한(ex. <p class=~~ “hi</p>), false일 시에는 text만 […]

bs4를 이용한 네이버 영어사전 크롤링하기

잘 쓰고 있는 크롬 익스텐션인 네이버 영어사전이 요즘 말썽이여서 걍 파이썬으로 하나 만들어보긴 했다. 그냥 이건 단순 크롤러고 여기에 뭐 붙이면 되는데..  casablanca에 붙일 예정이라 C++써서 다시 libcurl + libxml2로 다시 구현할 예정이다 ㅎ 솔직히 쉬운데 ..태그 구조를 파악해야해서 좀 귀찮다. 그래서 내가 해놨으니 갖다만 쓰면 된다!

모바일 페이지에서 파싱하는게 좀 시원시원하고 쉽다. 다음은 결과 […]