분류
-
Go: Bleve 인덱싱 한국어 주소 검색 서버 만들기 (Apache Lucene-like)컴퓨터/Go language 2024. 6. 2. 14:09
GitHub - blevesearch/bleve: A modern text/numeric/geo-spatial/vector indexing library for goA modern text/numeric/geo-spatial/vector indexing library for go - blevesearch/blevegithub.com ZincSearch (ElasticSearch-like)를 이용해 한국 주소 검색 시스템을 이용하고 있었다.웹 서버는 단일 서버로 돌리다보니 굳이 검색 서버를 따로 열어서 호출하는 것이 마음에 들진 않았다.프로젝트가 Go언어이다보니 모든 것을 Go언어로 된 것을 이용하려고 노력하다가 Bleve를 찾게 되었다. DoorDash 개발자 블로그를 읽다가 ElasticSearch를 ..
-
Spring Boot: Repository Extension 패턴 (CustomRepositoryImpl)컴퓨터/Spring Boot 2024. 5. 8. 15:12
소개프로젝트들을 보다 보면 가끔 RepositoryImpl과 같은 파일을 본 적이 있다.그냥 Repository를 다르게 구현한 것일까 하고 넘어갔다가 개발을 하다가 위 방식으로 해결했다. 문제MySQL 에서 spatial 타입을 사용 중이다.POINT 타입으로 저장되어 있기 때문에 클라이언트 JSON에서는latitude/longitude (경/위도)로 float64 (double) 타입으로 반환하고 싶었다.@Entity@Table(name = "Markers")public class Marker { @Id @Column(name = "MarkerID") private Integer markerID; @Column(columnDefinition = "geometry(Point, 43..
-
Go/Java: 금칙어 검사 함수들 벤치마크 및 향상컴퓨터/Go language 2024. 5. 2. 00:28
금지어 리스트를 .txt 에 저장하고 서버 메모리에 로딩했다. (10kb)금지어를 가장 빠르게 체크하는 방법은 무엇일까 궁금해서 벤치마크를 돌려보았다.기준: 10KB input string + 500개 금지어 리스트 1. 정규 표현식 사용성능: 14,260K ns/op메모리 사용: 4321B/op할당 횟수: 24 allocs/op아래처럼 첫 로딩에 regex로 패턴을 모두 컴파일하고, 인풋 string을 확인했다.생각보다 대용량일 수록 굉장히 느리다.func CompileBadWordsPattern() error { var pattern strings.Builder pattern.WriteString(`(`) for i, word := range badWordsList { if word == "" { ..
-
Rust: 스타크래프트1 멀티 실행기 만들기 (windows api)컴퓨터/Rust 2024. 4. 22. 14:25
GitHub - somersby10ml/sc_multiloader Contribute to somersby10ml/sc_multiloader development by creating an account on GitHub. github.com 위 프로젝트를 보고, Rust로 windows-rs API는 개발이 잘되어가는지 궁금해서 위 앱을 Rust로 만들어보았다. (CLI + GUI) windows-rs API 문서 따위 아직 없다. 그냥 알아서 필요한거 찾아서 쓰고, 없는 건 만들어 써야 한다. docs.rs의 검색 기능 때문에 원하는 구조체, 함수 등 찾기는 쉽다. https://microsoft.github.io/windows-docs-rs/ microsoft.github.io 우선 "핸들" 이라는..
-
네이버 이메일 회원가입 인증 시 존재 유무 확인하기컴퓨터/파이썬 2024. 4. 18. 18:36
https://github.com/Alfex4936/naver-email-verifier GitHub - Alfex4936/naver-email-verifier: SMTP로 @naver.com 메일 인증 보내기 전 확인하는 도구 SMTP로 @naver.com 메일 인증 보내기 전 확인하는 도구. github.com 회원가입 시 없는 이메일로 (@naver.com) 보낼 때 SMTP 이용해서 이메일 전송을 못했다고 이메일을 받기보다는 존재 유무를 확인하고 싶었다. (오버헤드가 있지만 이메일 보내는 함수가 어차피 다른 스레드로 하는 게 일반적이라, 1초 정도 차이는 의미 없을 듯) 파이썬으로 라이브러리를 만들었다. (다른 언어는 나중에) pip install naver_email_verifier from n..
-
Go: math/rand/v2 Lemire's algorithm 알고리즘컴퓨터/Go language 2024. 4. 18. 12:31
https://choiseokwon.tistory.com/340 Floating Parsing: Eisel-Lemire algorithm Eisel-Lemire algorithm lemire: Fast function to parse strings into double (binary64) floating-point values, enforces the RF Fast function to parse strings into double (binary64) floating-point values, enforces the RFC 7159 (JSON standard) grammar: 4x faste choiseokwon.tistory.com 위에도 들어있던 Lemire이란 사람의 알고리즘인 것 같다. math/r..
-
Go: 카카오맵 API 정적 지도 이미지에 여러 마커들 추가하기컴퓨터/Go language 2024. 4. 11. 16:45
오프라인 지도 저장 API를 만들어 보고 싶어서, 카카오맵 정적 지도 문서를 봤다.하지만, 하나의 마커만 지원한다.https://apis.map.kakao.com/web/sample/staticMapWithMarker/ 사진 렌더링하는 js 코드를 보면, CX와 CY (마커의 WCONGNAMUL 값)을 하나 밖에 안 받고 렌더링해서 이 부분을 고쳐보고 싶었으나 다른 방식을 택했다.c.Va = function() { var a = this.Gd , b = []; b.push("IW=" + String(this.b.m() | 0) + "&IH=" + String(this.b.i() | 0)); b.push(sf(this)); b.push("S..
-
Rust: 비동기 리팩토링 tokio::task::JoinSet컴퓨터/Rust 2024. 4. 6. 00:37
GitHub - Alfex4936/cargo-depsize: Rust cargo utility that calculates and displays the total size of each dependency in your Rust Rust cargo utility that calculates and displays the total size of each dependency in your Rust project. - Alfex4936/cargo-depsize github.com cargo depsize라는 툴은 Rust 프로젝트에서 쓰고 있는 라이브러리들의 파일 크기를 구하는 간단한 유틸리티이다. 리팩토링 하다가, 비동기로 만들어 놓고 각각 계산을 비동기로 돌리면 되는데 하나씩 기다리고 있었다. 우선 원..