컴퓨터
-
Spring: Playwright exposeFunction (유튜브 라이브 채팅 읽기)컴퓨터/JAVA 2025. 3. 2. 23:24
Youtube.com 라이브에서 API 없이 실시간으로 채팅을 읽고 싶었다. Spring Boot 3.4 + Java 23 환경에서 Virtual Thread를 켠 상태이다.(새로운 동영상마다 scraper가 생성되는 방식)일단 유튜브 웹사이트가 동적으로 iframe을 불러온다. 처음에는 HTML에서 element를 계속 읽으면 될 것이라고 생각했다.하지만, 유튜브가 DOM을 재활용한다. (보이는 부분만 렌더링?)그래서 이 방식은 어느 순간부터 새로운 메시지를 잘 읽지 못하고, ID도 재사용되는 듯해 uuid를 써서메시지를 처리했는지 일일이 확인해야 했다. 그러면 어떻게 하면 제일 빠르게 읽을 수 있을까? 고민을 하다가 @MutationObserver를 알게 되었다.DOM 트리 변경사항을 감지할 수 있..
-
Grafana + Prometheus docker 기본 셋업컴퓨터/소프트웨어 2025. 2. 2. 12:24
https://github.com/grafana/docker-otel-lgtm/tree/main GitHub - grafana/docker-otel-lgtm: OpenTelemetry backend in a Docker imageOpenTelemetry backend in a Docker image. Contribute to grafana/docker-otel-lgtm development by creating an account on GitHub.github.com 그라파나 공식 레포에 있는 도커 이미지를 사용하면 편하다.(LGTM = Looks Good To Me = Loki + Grafana + Tempo + prometheus Metrics) 1.Server서버에서는 metrics 엔드포인트를 만..
-
Blurhash: 이미지 미리보기 블러 라이브러리 placeholder컴퓨터/Go language 2024. 12. 14. 18:16
Blurhash는 위처럼 사진을 짧고 간단한 string으로 인코딩할 수 있는 것이다.프론트엔드 UI에서 이미지 로딩될 때 쓰면 예쁘다. C언어 버전으로 작성되었는데 hash83, 특이한 방법으로 이미지를 해싱한다.여러 언어들로 클라이언트가 있으니 github을 참고한다.https://github.com/woltapp/blurhash GitHub - woltapp/blurhash: A very compact representation of a placeholder for an image.A very compact representation of a placeholder for an image. - woltapp/blurhashgithub.com 그래서 각 사진마다 thumbnail_url 필드가 있는 것..
-
-
LeetCode 문제 번역 크롬 확장자 만들기컴퓨터/HTML & JS & TS 2024. 11. 9. 11:37
https://chromewebstore.google.com/detail/leetcode-translator/clegkmajaieakemdjngmaiipghfmppgf LeetCode Translator - Chrome 웹 스토어Translate LeetCode problems into multiple languages using GPT.chromewebstore.google.com 크롬 확장자 방식이 궁금해서 만들어보았다.딱히 어려운 것은 없고 단순 html path 싸움과 GPT API 부르는 것이었다.gpt-4o-mini API를 쓰니까 백만 토큰을 써도 0.01 달러이다.그래서 아무리 많이 사용해도 1달러도 안 나올 듯하다. 스토어에 올리고 싶을 때는 아래 사이트 가서 제안해야 한다.https:/..
-
Go: 카카오맵 API 지하철 역 주변 검색하기 (blevesearch)컴퓨터/Go language 2024. 10. 20. 20:21
현재 대한민국 철봉 지도 (https://www.k-pullup.com)검색 기능에 "수원역"처럼 역 이름으로 검색하면 검색이 안 되는 문제가 있다.인덱싱 할 때 주소를 ngram 방식으로 검색하면 쓸모없는 위치가 많이 검색된다.또한 "서울대입구역" 처럼 "서울대입구"는 대한민국 주소상 존재하지 않을 수 있다. 따라서 "서울대입구역"을 검색하면 그 주변 (ex 3km 반경)에 있는 나의 데이터들을 보여주고 싶었다. 1. 데이터 열린데이터광장 메인데이터분류,데이터검색,데이터활용data.seoul.go.kr서울시 역사마스터 정보를 보면 (최신으로 잘 업데이트되는 느낌)750개가 넘는 도시철도 역들의 좌표가 잘 나와있다. (지하철 + 고가철도 etc) (WGS84 좌표계)전국 5대 지하철을 받으려면 위 데이터..
-
Go: Fiber 서버 최적화 하기 (optimization)컴퓨터/Go language 2024. 9. 12. 21:39
Go언어 웹 프레임워크 fiber v2를 사용하면서 얻은 팁들을 정리한 글이다. GitHub - gofiber/fiber: ⚡️ Express inspired web framework written in Go⚡️ Express inspired web framework written in Go. Contribute to gofiber/fiber development by creating an account on GitHub.github.com 1. zero memory alloc []byte stringbyte 배열과 문자열 (json marshal/unmarshal 시 많은 사용)을 아래처럼 하면 allocation을 새롭게 하게 된다.string(byteArr) // var byteArr []byte..
-
Meilisearch: Rust로 작성된 ElasticSearch컴퓨터/Rust 2024. 7. 12. 16:45
[메일리서치] meili는 노르드 신화 (Norse god)에 나오는 신 이름, "사랑스러운 사람"을 뜻https://github.com/meilisearch/MeiliSearch/issues/1182 GitHub - meilisearch/meilisearch: A lightning-fast search API that fits effortlessly into your apps, websites, and workflowA lightning-fast search API that fits effortlessly into your apps, websites, and workflow - meilisearch/meilisearchgithub.com Rust언어로 작성된 오픈 소스 검색 엔진이다.이 링크에서 다른..