본문 바로가기

전체 글195

프로그래밍 패러다임 프로그래밍 패러다임 1. Imperative (await, runBlokcing) 내가 어떤 임무를 수행하는지가 명확함 "야 너 이거해", "야 너 이거 가져와" 2. Reactive (rxjs, coroutines) 얘가 이걸 줄 수도 있는데, 만약 주면 내가 이렇게 행동할게 이걸 주면 이걸 수행하고, 저걸 주면 저걸 수행할게 2023. 7. 26.
tailwindcss purge option 이슈 더보기warn - The `purge`/`content` options have changed in Tailwind CSS v3.0.warn - Update your configuration file to eliminate this warning.warn - https://tailwindcss.com/docs/upgrade-guide#configure-content-sourcestailwindcss가 3.0으로 오면서 purge옵션이 content로 옮겨갔기 때문에 뜨는 경고.  기존 tailwind.config.js/** @type {import('tailwindcss').Config} */module.exports = { purge: ['./src/**/*.{js,jsx,ts,tsx}', './pu.. 2023. 7. 24.
[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.
728x90