본문 바로가기

개발일기32

[Node] NPM 라이브러리 4개를 개발하며 최근에 NPM 라이브러리를 4개 만들었고, 계속 개발하고 있다. 어렸을 적, 피아노를 좋아했는데 어느 날 죽기전에 이 세상에 나의 작품을 하나 남겨야하지 않겠나라는 생각을 들었다. 그래서 음악을 3곡 정도 작곡을 했었고, 네이버 블로그에 올리기 위해 작곡프로그램까지 배워 midi 파일을 만들고 가상악기를 씌워 음원으로까지 만들었다. 맨 처음엔 단순히 한 번 만든 코드를 나중에 다시 활용하기 위해, 팀원과 공유하기 위해 라이브러리를 제작하기 시작했다. 그 라이브러리가 File Dispatcher이다. 그런데 만들다보니 구현하려는 기능이 단순 Node의 기본 기능만으로는 불가능했다. 그래서 방법을 찾아보았는데, 여기서부터 라이브러리를 만드는 과정에 희열을 느끼게 되었다. 이 때 찾은 방법은 네이티브 애드온이.. 2023. 8. 14.
프로그래밍 패러다임 프로그래밍 패러다임 1. Imperative (await, runBlokcing) 내가 어떤 임무를 수행하는지가 명확함 "야 너 이거해", "야 너 이거 가져와" 2. Reactive (rxjs, coroutines) 얘가 이걸 줄 수도 있는데, 만약 주면 내가 이렇게 행동할게 이걸 주면 이걸 수행하고, 저걸 주면 저걸 수행할게 2023. 7. 26.
[Elixir] Elixir 프로젝트 생성 오류 Elixir 맛만 보려다가 프로젝트 만들어보는 것만 1시간 넘게 걸렸다. 1. Elixir SDK를 제트브레인 IDE에서 인식하지 못하는 문제. 그냥 인식 안하는 것 같다. plugin만 설치하고 나머지는 명령어로 하면 되는듯. JDK처럼 따로 SDK를 인식시켜줘야한다거나 하는 건 없는 듯 하다. 문제인줄 알았지만 문제가 아니었다. vscode에서 해보고 알았다. 2. 파일 이름에 '-'(하이픈)을 쓰지 말아야한다. 왜... 못써요? ...... Erlang의 가상 머신(Beam)의 명명 규칙이라고 한다. ** (Mix) Application name must start with a lowercase ASCII letter, followed by lowercase ASCII letters, numbers.. 2023. 7. 16.
AES, CBC 그리고 IV AES는 양방향 암호화 방식으로 복호화가 필요할 때 쓴다. 가장 대표적인 쓰임새로는 JWT가 있다. SHA는 단방향 암호화 방식으로 복호화가 불가능하기 때문에 비밀번호 저장 등에 쓰인다. CBC는 AES의 암호화 방식 중 가장 많이 쓰이는 방식이다. CBC는 Cypher Block Chaining의 약자로, 주목해야할 건 'Block Chain'이다. 블록체인은 이전의 블록 데이터로 다음 블록을 생성하는 방식이다. 하지만 첫 블록은 데이터가 없기 때문에 IV(Initialize Vector)가 필요하다. Initialize라는 단어를 보면 바로 감이 올 것이다. 정리하면, 첫 블록은 IV로 생성하고 이후의 블록들은 그 전 블록의 데이터를 기반으로 생성된다. 2023. 7. 6.
[Node] native addon과 워커 스레드 요약: 네이티브 애드온은 여러 스레드에서 동시 사용이 불가능하다.  Error: Module did not self-register 스택 오버 플로우에서도 정답이 없고, 한글로 검색하면 비슷한 것도 안나왔다.깃헙 이슈에도 딱히 답이 없었다.단, 한가지 공통점은 대부분 워커 스레드와 연관해서 네이티브 애드온을 사용하려고 할 때 발생했다. 상황은 c++로 애드온 모듈을 만들고 컴파일 해서 .node 파일로 만든 뒤 이걸 워커 스레드에서 가져다 쓰는 식이었다.동시성 문제도 고려해야하고 단순히 노드의 내장 기능으로는 구현할 수 없는 기능이 있어서 .node로 함수를 하나 만들었는데, 두 워커 스레드에서 이 파일에 접근하려고 할 때 `Error: Module did not self-register`에러가 발생했다.. 2023. 7. 2.