본문 바로가기

분류 전체보기

vscode 에서 원격 디버깅 vscode를 사용해서 g++을 원격으로 디버깅하는 방법을 설명하고자 한다. 1. 먼저 ssh로 접속이 가능하도록 설정 한다. (여기 까지는 공개된 방법이 많이 있습니다) code.visualstudio.com/docs/remote/ssh Developing on Remote Machines using SSH and Visual Studio Code Developing on Remote Machines or VMs using Visual Studio Code Remote Development and SSH code.visualstudio.com 2. 작업 영역을 설정한다. 디버깅은 작업영역을 설정해야 가능 합니다. 3. launch.json 파일에 추가한다. * Run { "name": "process1.. 더보기
Golang으로 Synology 연동 Telegram 봇 만들기 재택근무를 하면서 q10에서 타오 나스를 구매했습니다. 주 용도는 마크 서버 및 torrent 머신인데, 헤놀로지 세팅을 하다 보니 욕심이 생겨서 외부에서도 텔레그램 봇을 통해 torrent파일이나 마그넷 링크로 다운로드할 수 있게 했습니다. 여기서는 그 방법을 공유하려고 합니다. 목표 Telegram bot: 예전에 python으로는 만들어본 적이 있는데, 이번에는 Golang으로 만들어 보려고 합니다. Torrent 파일은 disk station의 감시 경로에 넣어주면 되고, magnet은 Synology API(SYNO API)에서 지원하네요. 시놀로지 세팅: Download Station 감시 설정, API 설정, API 연동용 계정 생성 등을 해야 합니다. 그리고 시놀로지에서는 Golang을 지.. 더보기
jmeter를 사용한 가변길이 TCP Binary 패킷 처리 방법 Use Dynamic Binary Packet for JMeter성능 테스트를 위해 가장 많이 사용된다는 Tool인 JMeter을 사용하기로 했습니다.JMeter는 HTTP, HTTPS, FTP, REST, TCP등 다양한 프로토콜을 지원한다고 하는데, TCP Binary 패킷에 대한 송수신 처리 자료는 찾기 힘들었습니다. 여기서 JMeter를 사용한 가변길이 TCP Binary 패킷 처리를 설명합니다.JMeter의 beanShell을 사용해서 송수신 패킷을 만들고, 별도 제작한 plugin을 사용해 TCP 송수신 처리를 할 것입니다.Test 시나리오테스트할 서버는 로컬에 1234 port를 listen하고 있습니다.요청 패킷에 요청 seq가 포함됩니다.요청/응답 header 패킷은 동일합니다.struc.. 더보기
Windows 에서 포트 포워딩 기능 사용하기. VMWare등을 사용하는데, Bridged 모드로 설정하지 않고 (IP 여유가 없거나, 설정하기 귀찮을때..)기본값인 NAT 모드로 설정해두고 아래 명령으로 하시면 됩니다. CMD 창을 관리자 모드로 열고, * Forwarding 설정 > netsh interface portproxy add v4tov4 listenport=80 listenaddress=192.168.0.100 connectport=80 connectaddress=192.168.229.100 * Forwarding 해제 > netsh interface portproxy delete v4tov4 listenport=80 listenaddress=192.168.0.100 * 설명 - listenport: 내 PC에서 Listen할 Port .. 더보기
FindMSSQL github에 올린 내용 정리해서 올립니다.https://github.com/lmk/FindMSSQL FindMSSQLFind all MSSQL Server같은 네트워크망에 설치된 MSSQL의 정보를 조회 합니다.Visual Studio 2015 MFC 기반에서 코딩해 봤습니다.EnveromentVirsual Studio 2015MFC (v140)How to use함수 원형은 아래와 같습니다.3번째 파라미터를 생략하면 같은 네트워크망의 모든 서버를 검색합니다. (Broadcast)bool GetMSSQLInfo(CString &info, int timeout_sec, CString ip = _T(""));How to implementMSSQL을 설치하면 SQL Server Browser가 함께 설치됩니다.. 더보기
MFC 프로젝트 버전 일괄 변경 툴 MFC 프로젝트가 여러개 일때, 버전 변경을 일일이 수정하는 것이 번거롭습니다.이럴때, 버전을 일괄적으로 변경해 주는 툴입니다. 원리는, 설정 파일에 리소스파일 경로를 넣어둔 목록을 만들고툴에서 파일 목록을 읽어서 아규먼트로 받은 버전으로 일괄 치환 합니다.Visual Studio 2015 C# ( .NET Framework 4.5.2 ) 기반에서 코딩해 봤습니다. 자세한 내용은 github에 올린 내용으로 대체 합니다.( https://github.com/lmk/changeVer ) changeVerAll change FileVersion/ProductVersion on MFC resource filesEnveromentVirsual Studio 2015C#HelpUsage> $ changeVer.ex.. 더보기
Simple Http Server 자세한 소스는 github을 참고하세요.https://github.com/lmk/SimpleHttpServer SimpleHttpServervery simple http serverdefault port: 8080modify source heresupport: linux g++ 4.9.2How to useblock serverHttpServer httpServer; httpServer.Init(5, NULL); httpServer.Run();non-blockNBHttpServer* httpServer = NBHttpServer::getInstance(); httpServer->Init(5); httpServer->Start(); sleep(60); httpServer->Stop(); 더보기
OpenSSL 을 사용한 RSA RSARSA 생성PEM public 키로 RSA 생성하기unsigned char *key = "PEM 형식의 public 키"; BIO *bio = BIO_new_mem_buf(key, -1); RSA *rsa = PEM_read_bio_RSA_PUBKEY(bio, &rsa, NULL, NULL);PEM private 키로 RSA 생성하기unsigned char *key = "PEM 형식의 private 키"; BIO *bio = BIO_new_mem_buf(key, -1); RSA *rsa = PEM_read_bio_RSAPrivateKey(bio, &rsa, NULL, NULL);RSA 생성int bits = 2048; BIGNUM *bn = BN_new(); if ( BN_set_word(bn, R.. 더보기
Code Finder Code Finder개요C/C++ 해더 파일에 enum 또는 define 되어 있는 상수명을 파싱해서 검색해줍니다.ReactJS를 스터디 하기 위해 시작했습니다.C/C++ 해더 파서는 https://github.com/lmk/c_define_parser 를 사용 했습니다.https://github.com/lmk/code_finder 설치git clone https://github.com/lmk/code_finder.git cd code_finder npm install npm run build실행npm run start웹브라우져를 연다.http://localhost:3000/내 해더 파일을 사용하는 방법/build/config.json 파일을 수정합니다.{ "list": [ { "id" : "5RAcQe.. 더보기
C 상수 파서 아주 오래전에 만들어 놓은 것을 github에 올리면서 readme 파일을 작성했습니다.https://github.com/lmk/c_define_parser 개요c 헤더 파일을 파싱해서 '#define', 'enum' 구문으로 정의된 값, 상수명을 검색합니다.사용법error.h 파일의 내용이 아래와 같을 때#define ERROR_NONE 0x00 #define ERROR_LOGIN 0x01 #define ERROR_FILE 0x02 #define ERROR_DEVICE 0x03$ find_const.py 1 1 is ERROR_LOGIN $ find_const.py 0x03 0x03 is ERROR_DEVICE구현 로직모든 파일을 머지한다.주석을 제거한다.enum 구문을 파싱해서 dic_command에.. 더보기