엔드 간 네트워크 통신 한도(rate limit) 조절에 관련된 영어 표현 모음
·
개발이야기/토막글
클라이언트(프론트엔드) 관련 표현Debounce: 어떤 이벤트가 끝나자마자 다음 함수를 호출하지 않고 기다리다가, 같은 이벤트가 다시 반복되면 묶어서 처리하는 기법Throttle: 같은 함수를 다시 실행할 수 있는 최소 주기를 설정하는 것 = 짧은 주기 내에 같은 함수가 지나치게 많이 호출되는 것을 막는 기법Abort: 진행중인 요청을 취소한다는 의미. 서버와의 connection을 끊을 수도 있음. 웹에서는 보통 AbortController를 통해서 구현됨. 요청이 abort되면, 서버는 disconnection을 감지하여 처리를 멈추거나 클라이언트로 응답을 보내지 않는다.Cancel: 기술적인 용어라기보단, UX나 user-facing 관점의 의미. 서버/네트워크 관련 표현Drop: 네트워크 패킷을 ..
TCP의 혼잡제어(congestion control)
·
개발이야기
TCP 연결이 맺어진 두 호스트 사이에는 많은 라우터(router)들이 존재한다. 라우터의 저장공간(버퍼, buffer)은 한정되어 있다. 라우터가 다음 라우터로 패킷을 내보내는 속도보다, 라우터에 패킷이 들어오는 속도가 더 빠르면 버퍼는 점점 차오른다. 버퍼가 가득차있는데 들어온 새로운 버퍼는 모두 드랍(drop)된다. 이런 혼잡한 상황(congestion)에서도 TCP는 데이터를 유실없이 전송하면서도, 통신 채널을 최대한 효율적으로 활용해야 하는 목표가 있다.TCP는 전송 계층(transport layer)의 프로토콜인 한편, 라우터의 기능은 그 하위인 네트워크 계층(network layer)에 그친다. TCP가 혼잡 상황을 알 수 있는 방법은 두 가지가 있다. 네트워크 계층에서 직접 혼잡 상황을 알..
네이버지도에서 매장 정보 수집을 실패하기까지의 고군분투 이야기
·
개발이야기
개인 프로젝트 목적으로 네이버 지도에서 특정 매장의 정보를 수집하고 싶었다.2일정도 이 작업에 매진했는데, 결과적으로는 난관에 봉착했고 현재는 실패 상태로 멈췄다.그 이전까지의 고군분투 과정과 해결하지 못한 포인트를 소개한다.문제 1. 크롤링? 해도 될까?첫번째 문제는 크롤링을 해도 되는지 윤리적/법적/정책적 측면의 고민이 들었다.사이트의 크롤링 허용 여부는 robots.txt를 확인하면 된다. 네이버 지도 사이트의 robots.txt 내용은 아래와 같았다.User-agent: *Disallow: /Allow: /$Allow: /p/$위 내용은 누가 크롤링을 하던지, 정확히 지도의 루트 주소(map.naver.com/와 map.naver.com/p/)를 제외하고는 크롤링을 일체 금지한다는 내용이다. 주소..
파이썬 프로젝트 우아하게 시작하기: pyenv, poetry
·
개발이야기/토막글
여러분의 맥북에는 이미 파이썬(Python)이 깔려있다. 맥 OS의 여러 유틸리티들이 파이썬을 필요로 하기 때문이다.그럼 파이썬 프로젝트를 시작할 때, 파이썬을 별도로 설치하지 않아도 되는 것일까?그렇지 않다. 프로젝트마다 요구하는 파이썬의 버전이 다르기 때문이다.이 글은 파이썬 프로젝트를 우아하게 시작하려면, 반드시 이용해야 할 버전 관리 도구(version manager)와 의존성 관리 도구(dependency manager)의 필요성과 간단한 사용 방법을 소개한다.파이썬의 버전관리버전관리의 필요성프로젝트마다 파이썬 버전을 맞춰야하는 이유가 무엇일까? 무조건 최신의 파이썬을 쓰면 안되는 것일까?- 파이썬 버전을 올리면 지원하는 기본 라이브러리가 사라지거나, 코드의 기능이 달라질 수 있다. 내 컴퓨터에..
Firebase Hosting 도메인 설정 후 Site Not Found에 관하여
·
개발이야기/토막글
Firebase Hosting에 도메인 주소를 추가했는데 아래와 같은 화면이 뜨면 당황스럽다.위 내용대로 3가지 가능성이 있다.1. 아직 배포를 안함(You haven't deployed an app yet)- 그렇지만 website-xxx.web.app 주소는 정상적으로 동작하고 있었기에, 이것은 배제할수 있었다.2. 빈 폴더를 배포함(You may have deployed an empty directory)- 역시 그럴리가 없다.3. 커스텀 도메인이지? 우리가 아직 설정을 덜 끝냄.(This is a custom domain, but we haven't finished setting it up yet.)- 무슨 설정을 덜 끝냈다는 걸까? 아마도 저 페이지는 서빙에 뭔가 문제가 있을 때 땜빵으로 서빙하..
개발 생산성을 높이는 MCP의 개념과 Cursor AI 설정법
·
개발이야기
"바이브 코딩"이라는 단어와 함께 MCP에 대한 관심이 뜨겁습니다. Cursor AI라는 코드 에디터는 LLM이 직접 로컬 프로젝트 파일들을 직접 수정하고 코드를 작성하며 바이브 코딩을 가능케 합니다(Cursor AI에 대해서는 이 글을 참고하세요). 그러나, LLM은 간혹 '할루시네이션' 문제를 일으키거나, 잘못된/버그가 있는 코드를 생성하거나, 최신 정보를 알지 못하여 낡은 답변을 내놓는 등의 한계를 보여줍니다. MCP는 이런 한계점들을 돌파할 수 있도록 LLM에게 쥐어줄 수 있는 도구와 같습니다. 이 글에서는 MCP가 무엇인지와 Cursor AI에서 어떻게 설정할 수 있는지를 소개합니다MCP란?MCP(Model Context Protocol)는 LLM과 외부의 도구를 연결하는 방법에 대한 규약입니다..
OCaml에 대해 실전 속성 압축으로 익혀보기
·
개발이야기
저는 지난 봄학기 어느 전공과목에서, OCaml이라는 언어를 이용하여 과제를 해야했습니다. 당연히 이전까지 OCaml을 몰랐고, 딱 과제를 하는데에 지장없는 수준의 실력을 갖게 된 것 같습니다. OCaml의 모든 것을 알고싶지는 않지만, 당장 OCaml로 뭔가를 해야하는 누군가에게 이 글이 도움이 되기를 바라며 작성해봅니다. 저도 절대 OCaml의 전문가가 아님을 다시 한 번 밝힙니다. 여기 코드들을 VSCode에서 실행해보고 싶으시면, 이 익스텐션을 설치하시면 됩니다.OCaml의 컨셉과 문법함수형 프로그래밍OCaml은 철저히 함수형 프로그래밍 언어입니다. 함수형 프로그래밍이 무엇인지도 익숙치 않을 독자를 위해 간단히 예를 들어 보겠습니다. 보통 일반적인 C나 python등 우리에게 익숙한 명령형 프로..
VSCode 환경에서 make로 빌드되는 c파일 gdb로 디버깅하기
·
개발이야기
이번 학기 전공 과목에서 과제를 디버깅하기 위해 설정해 둔 VSCode의 GDB 설정 파일들을 공유합니다(Cursor AI에서도 당연히 동작합니다). 과제는 C 언어로 작성해야 했으며, 미리 정의된 Makefile을 통해 코드의 빌드, 테스트, 클린 작업이 가능했습니다. Makefile 구성은 대략 아래와 같았습니다. program.c 파일과 관련 헤더 파일들을 하나의 목적 파일(program.o)로 컴파일한 후, 이를 실행 파일로 빌드하는 방식입니다. 특별히 주의할 점은, gcc 명령어를 실행할 때 "-g" 옵션을 넘겨주어야 디버깅가능한 파일로 빌드됩니다. 또, "-O2" 등의 옵션은 디버깅 시에 일부 값을 필터링할 수 있으니 디버깅 목적으로는 사용하지 않아야 합니다.HEADERS = program.h..