TIL/ETC에 해당하는 글 12

  1. Characters, Symbols and the Unicode Miracle 2025.08.15

    영어공부 겸 코딩 유튜브 해석~ UTF-8 is perhaps the best hack, the best single thing that's used that can be written down on the back of a napkin, and that's how was it was put together. The first draft of UTF-8 was written on the back of a napkin in a diner and it's just such an elegant hack that solved so many problems and I absolutely love it. UTF-8은 간단하지만 강력한 문자 인코딩 방식으로, 처음 초안은 식당에서 냅킨에 적혔다고 전해진다. 이..


  2. nginx http2 설정 (feat. http/1.x 부터 http/3) 2025.08.05

    최근 프록시 서버로써 nginx에서 http2를 설정하면서 알아본 내용을 간략하게 정리해 본다.더보기server { listen 443 ssl; # 예전에는 이 뒤에 http2를 붙였지만 http2 on; # 이제 이렇게 합니다 ssl_certificate ssl/certificate.pem; ssl_certificate_key ssl/key.pem; location = / { ... }} HTTP가 뭔데?널리 알려져있다시피, HTTP는 HyperText Transfer Protocol 의 줄임말이다.HyperText를 전송하는 프로토콜이라고 직역할 수 있다.html 페이지에서 태그로 생성한 요소를 클릭하면 다른 페이지로 이동하게 되는데,이렇게 링크를 통해 다른 ..


  3. 일렉트론 자동 업데이트 설정하기 (electron auto-updater) 2025.07.21

    일반적으로 일렉트론으로 빌드한 클라이언트 프로그램에는 많은 비즈니스 로직을 담지 않는다. 1. 클라이언트는 결국 사용자의 컴퓨터에 설치되기 때문에 작정하고 까보면 내부 코드를 파악할 수 있고,2. 실제 서비스와 관련된 비즈니스 로직을 너무 많이 담으면 유지보수가 힘들어지며,3. 특히나 단순히 WebView Wrapper로서 사용하는 거라면 더더욱 그렇다. 보여지는 것에 집중하지, 내부 로직은 담지 않는다. 그럼에도 불구하고, 부득이하게 내부 정책이나 서버 환경 변동에 따라 업데이트가 필요한 경우가 있다.캡처 방지와 같은 보안 기능을 넣고 빼거나, 로딩 페이지 경로 등 환경변수에 변화가 있을 때에도 다시 빌드해서 배포해 주어야 한다. 이런 점을 고려했을 때,버전이 업그레이드될 때 유저에게 재설치하라는 것보..


  4. fail2ban 설정하기 2025.07.17

    fail2ban?GitHub - fail2ban/fail2ban: Daemon to ban hosts that cause multiple authentication errorslog파일을 참조하여 filter에 정의된 조건에 맞는 IP를 기록하고 차단하기 위한 brute force 방어 시스템이다. jail 과 filter라는 개념을 사용하는데,jail은 특정 필터에 의해 걸러진 IP를 가두는 감옥과 같은 개념으로,감옥별로 차단 단계까지 도달하기 위해 반복될 실패횟수나 시간, 차단할 시간 등을 지정할 수 있다.filter는 간단하게 IP 차단 여부를 판단하기 위한 기준이 되는 필터를 의미한다. 설치(ubuntu 기준)$ apt-get update apt-get install fail2ban 설치를 완료..


  5. VPN 해제 후 공인 IP 기반 서비스 오픈과 보안 구성 2025.07.16

    보호되어 있는 글입니다.


  6. 파이썬으로 Google SheetAPI 사용하기 2025.06.23

    https://developers.google.com/workspace/sheets/api/quickstart/python?hl=ko Python 빠른 시작 | Google Sheets | Google for Developers이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의견 보내기 Python 빠른 시작 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 빠른 시작에서는 Google Workdevelopers.google.com공식문서가 정말... 잘 돼있는데^^열받게도 이 문서를 찾는 게 너무 힘들었다. 사실상 이 글의 내용은 저 링크 하나만으로 충분하긴 하지만...언젠가 또 이런 삽질을 하게 될 지 모르기 때문에 간략하게나마 정리해 ..


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

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


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

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


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

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