반응형

개발 이야기/개발 및 서비스 69

c++ 와 js간 소켓 통신 예제 + α

Legacy 프로젝트를 모바일 혹은 웹으로 확장 할 일이 있어 겸사 겸사 정리해 보았습니다. 샘플 프로젝트는 아래와 같은 흐름을 가진다고 가정합니다. 모든 연결은 stateful로 연결되어 필요한 경우 수시로 데이터를 주고 받을 수 있게 합니다. 최종 사용자는 제공된 웹 앱 혹은 모바일 앱에서 wss로 javascript server에 연결하여 인증과 기타 필요한 작업을 요청합니다. 그리고 javascript server는 VPC 내부의 서버에 socket으로 연결합니다. c++ server 입장에서는 javascript server를 위해 준비할 사항은 추가적인 패킷 정의 뿐입니다. 이제 실제 샘플을 실행해 보겠습니다. 아래 예제에 사용된 코드는 이 곳에서 다운로드 가능합니다. C++ 서버 준비 우선 ..

OpenSSL을 이용해 사설 인증서 생성과 사용 방법(간략 정리)

인증서와 관련된 이야기는 이 전에 기록한 글이 있어 생략합니다. [[ 인증기관( CA, Certificate Authoroty) 의 개인키와 인증서 생성 ]] CA private key 생성 > genrsa -des3 -out root_private.key 2048 CA의 CSR(Certificate Signing Request) 생성. (csr에는 공개키와 알고리즘 정보를 포함됩니다.) > req -new -key root_private.key -out root.csr CA의 인증서를 생성합니다. > x509 -req -days 3650 -in root.csr -signkey root_private.key -out root.crt [[ 사용처(웹 서버 등)를 위한 개인키와 인증서 생성 ]] 사용처를 위..

Elasticsearch daily snapshot 예제 코드

https://github.com/blackwitch/elasticsearch-shapshot-daily blackwitch/elasticsearch-shapshot-daily Contribute to blackwitch/elasticsearch-shapshot-daily development by creating an account on GitHub. github.com 매일 어제 생성된 인덱스를 백업하는 샘플 코드입니다. 100 line 이내의 코드가 설명할 내용은 길지 않습니다. elasticsearchjs의 문제인지 아닌지 아직 알 수 없으나 생성 후 인덱스 중복 에러가 발생하나 스냅샷은 정상적으로 생성됩니다. 에러 내용은 아래와 같습니다. { "error":{ "root_cause":[{ "ty..

elasticsearch-js로 인데스가 존재하는지 확인하는 방법

nodejs에서 elasticsearch-js를 이용해 데이터 분석, 취합을 할 때, 잘못된 인덱스 이름, 혹은 존재하지 않는 인덱스 이름으로 인해 문제가 발생하는 경우가 있습니다. 이 경우 검색이 중단되고 404 에러가 발생하며 중단됩니다. 에러를 막기위해 검색 시 아래 예제와 같이 ignore키워드를 지정할 수 있습니다. const result = await client.search({ index: 'my-index', from: 20, size: 10, body: { foo: 'bar' } }, { ignore: [404], maxRetries: 3 }) 이 방법은 에러를 막을 수 있지만, 검색이 중단되는 것은 동일합니다. 예를들어 ['seoul', 'busan', 'jeju']라는 인덱스들에서 어..

Nodejs 로 현재 환율 정보 확인 코드 만들기

유료 API 사이트에서 무료 플랜을 이용한 방법과 웹 사이트에서 크롤링하는 두 가지 방법을 정리해 보았습니다. 웹 사이트에서 크롤링 하기 우리은행 사이트 spot.wooribank.com/pot/Dream?withyou=FXXRT0021 에 USD, JPY, EUR 정보가 공유되어 있습니다. 사용자들의 웹 사이트에 무료로 공개할 수 있게 지원해주는 정보인데, 여기서 필요한 정보만 추출해 보았습니다. 저의 주 거래은행은 우리은행입니다. ^^ (환율 변동이 일반적인 상황에서는 크지 않으므로 해당 사이트에 부하를 주지 않기 위해 하루에 한번만 검색해서 저장 후 사용하실 것을 적극 권장드립니다.) 해당 사이트의 html 코드를 가져오기 위해 axios를, DOM Selector로 Cheerio를 사용합니다. h..

AWS SDK(cpp/c#/js) - Kinesis에 데이터 전송하고 Logstash로 받기

이전에 SQS로 데이터를 보내는 방법을 기록해 보았는데, 이번에는 유사한 kinesis로 데이터를 보내는 과정을 살펴보겠습니다. SQS는 Queue 서비스로 Application 통합, 분산 시스템 연계에 적합하며, Kinesis는 로그, 스트림 데이터 등의 실시간 분석, 전송 목적에 적합합니다. Kinesis Data Streams 생성 데이터 스트림 중 Kinesis Data Streams를 선택 후 생성을 합니다. 저는 어플리케이션의 로그를 전송하고 추후 이를 logstash로 가져와 별도 구축된 Elasticsearch에 저장하기 위해 사용하기 때문에 Kinesis Data Streams를 사용합니다. 생성할 스트림 이름은 "test_stream"으로 명명합니다. 데이터 스트림 용량을 설정할 때 ..

최적화 관련 몇 가지

이 내용은 Dev Weeks 중 https://www.youtube.com/watch?v=4kVffWfmJ60&list=PL412Ym60h6utrWNnHpZYSlG_pwRafryMO&index=28 의 내용을 보면서 인상적이었던 몇 가지만 추려봤습니다. 상세한 내용은 해당 동영상을 보는게 더 좋습니다. 강추입니다!! * Profile Analyzer : 인상적이었던건 수정 전 상황을 불러와서 수정 후 상황과 비교도 가능한 내용이었습니다. * Memory Profiler * iOS는 ogg 지원 안함. MP3 사용 권장. * 오디오 리소스의 경우 메모리에 압축을 풀어서 로드하도록 지정할 수 있지만 메모리 사용량이 증가할 수 있으므로 주의가 필요함. * 같은 리소스 파일을 다른 폴더에 쓰면 메모리에 따로 올..

Windows 서버에서 프로세스 관리하기

레거시 서비스 중 윈도우 어플리케이션에 종종 문제가 발생할 때가 있습니다. 이를 수정하는게 올바른 방법이겠지만 현실적인 문제로 관리자들이 일정 기간마다 재시작을 수행할 때가 있고, 가끔 다운되면 주말에도 접속해서 재가동 해야 하는 일이 발생하곤 합니다. pm2와 같은 윈도우용 프로그램이 있으면 하는 생각을 해봤지만, 그건 주기적인 재실행 처리가 불가능해서 python으로 직접 만들어 보았습니다. python은 자동 테스트 프로그램 개발을 위해 최근에 사용하기 시작했는데 생각보다 훨씬 재밌었습니다. C++/JS/Python을 넘나들면서 코딩하는게 꽤 귀찮긴 하지만... Github(https://github.com/blackwitch/winPM)에도 같이 올려두었으니 참고하시기 바랍니다. 앞으로 편의를 위..

React Native로 앱 개발 - 02. UI 적용

이번 글에서는 간단한 UI를 적용해 보겠습니다. React native 설치 및 프로젝트 세팅 방법은 앱 개발 - 01 을 참고하시기 바랍니다. 앱 개발 - 01 에서 생성한 firstApp 생성된 프로젝트가 있다고 가정한 상태로 설명하겠습니다. 프로젝트가 생성되지 않았다면 앱 개발 - 01를 참고해서 우선 프로젝트를 생성하고 다시 이 글로 돌아와 주세요. 이 글에서는 UI를 다룰 때 필요한 주요 기능을 예제를 통해 정리해 보겠습니다. 순서는 아래와 같습니다. React Native Elements 로 UI 구현 Layout 설정 React Native Navigation 사용하기 Popup 구현 React Native Elements 로 UI 구현 UI 객체 구현은 React Native Element..

React Native로 앱 개발 - 01. 프로젝트 생성하기

React Native는(이하 RN) React를 이용해 Android와 iOS 네이티브 앱을 개발할 수 있는 Framework이며 2020년 2월 현재 0.61 버전입니다. 버전이 1이 안되는데도 불구하고 많은 개발사들이 사용하는걸 보면 Facebook에서 지속적으로 발전시키고 있다는 의미일 겁니다. 이 글은 아래와 같은 내용을 담고 있습니다. 필요한 개발 툴들 React Native CLI 로 프로젝트 생성하기 앱 실행 해보기 필요한 개발 툴들 본격적으로 알아보기 전에 먼저 설치해야 할 개발툴들이 있습니다. 이를 알아보고 진행해 보겠습니다. Node.js : React는 Javascript Runtime인 Node.js를 사용합니다. npm : Node.js의 패키지를 관리하는 툴입니다. React ..

반응형