웹/ETC에 해당하는 글 4

  1. 알림서비스를 위해 웹소켓 통신을 rabbitMQ로 대체하기 2024.04.22

    전제 조건- 웹소켓 서버에 알림을 발송하는 REST API가 존재함- 여러 개의 클라이언트와 웹소켓 서버가 연결되어 있음- 백엔드 서버도 클라이언트와 같은 방식으로 웹소켓 서버와 연결되어 있음 웹소켓은 양방향 통신이 가능한 프로토콜.실시간성이 엄청 중요한 알림이 아니었기 때문에 굳이 웹소켓을 사용할 필요는 없다. 알림을 발송할 때 필요한 것1. (타겟 유저의 클라이언트가 켜져 있다면) 유저 클라이언트에게 알림을 보낸다.2. 데이터베이스에 알림 이력을 쌓는다. 이러나 저러나 알림 이력을 쌓을거라면 무조건 알림도 보내고 이력도 쌓으면 되지 않나?어차피 API는 이미 만들어져 있으니.. 클라이언트가 꺼져 있다면 알림은 도착하지 않고 재로그인시 n건의 알림이 있다고 알려줄 거니까. 어떤 이유로 잠시 웹소켓이 꺼..


  2. 커스텀 프로토콜로 일렉트론 클라이언트 실행시키기 2024.04.09

    목적 일렉트론으로 빌드한 A,B 클라이언트가 있다고 하자. 커스텀 프로토콜을 활용하여 A 클라이언트 내에서 로그인 후 특정 버튼을 클릭하면, B 클라이언트가 실행되면서 A에서 로그인한 정보까지 넘겨주려고 한다. 슬랙 웹페이지에서 슬랙 애플리케이션을 실행시켜 주듯이... 거기다 특정 페이지로 이동까지 시키는 등 다양한 액션이 필요할 수 있다. 우선! windowsOS와 macOS가 각각 작동하는 방식이 다르기 때문에.. 여기저기서 쿠키를 등록할 수 있으므로 같은 코드 반복을 방지하기 위해 관련 처리 함수를 만든다. const setCookie = async (key: string, value: string) => { session.defaultSession.cookies.set({ domain: ".doo..


  3. 일렉트론 로그 확인하기 2024.04.09

    일렉트론으로 만든 클라이언트를 디버깅할 때 console.log로 찍은 메시지가 클라이언트의 개발자 도구에서 항상 보이지는 않는다. 왜냐하면, 일렉트론에는 메인 프로세스와 렌더러 프로세스가 있고 console.log는 각 프로세스별로 실행되기 때문이다. 메인 프로세스는 애플리케이션의 생명 주기를 제어하고, 렌더러 프로세스는 웹 페이지를 렌더링한다. 따라서 콘솔을 어디서 찍었느냐에 따라 개발자 도구로 확인이 불가할 수 있다. 메인 프로세스에서 콘솔을 찍으면 (VSCode에서 실행한 경우) VSCode의 터미널에서 확인이 가능하고, 렌더러 프로세스에서 콘솔을 찍으면 실행된 애플리케이션의 개발자 도구에서 확인이 가능하다. 그럼 VSCode가 아니라 빌드한 애플리케이션을 따로 실행한 경우에는 메인 프로세스의 ..


  4. 한글단어 자동완성 삽질(용두사미 주의) 2024.01.22

    업무로 검색시 정해진 특정 단어들에 한해 자동완성을 구현해야 했다. 길고 긴 삽질 끝에 결국은 라이브러리를 이용했지만.. 기록삼아 삽질 내역을 남겨 본다. 우선 "조말론" 이라는 단어를 자동완성시키고 싶다고 했을 때, "조말론"은 물론이고 조ㅁ, 좀, 조마, 조말ㄹ,.. 등 해당 단어가 완성되기 위한 모든 중간 과정 단어들을 타이핑했을 때도 "조말론"을 자동으로 완성하고 싶었다. 1. 입력된 키값을 개별로 저장하여 join으로 합쳐 비교하기 단순하게 키값이 입력될 때마다 ㅈ,ㅗ,ㅁ,ㅏ,ㄹ,.. 등의 배열을 만들고 합쳐서 정규식으로 비교하려고 했다. 결론만 말하면, join("")은 사용할 수 없다... 당연하지... 왜 이게 될거라고 생각했을까...^^ join으로 ㅈㅗㅁㅏㄹㄹㅗㄴ으로 조말론을 만들어도 ..