컴퓨터
-
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언어로 작성된 오픈 소스 검색 엔진이다.이 링크에서 다른..
-
멀티스레드 Phaser - flexible 동기화 장벽컴퓨터/JAVA 2024. 6. 12. 23:57
소개java7 부터 도입된 Phaser. 멀티스레드 프로그래밍을 하다 보면 여러 스레드가 일정 시점에서 동기화되어야 하는 상황이 있었다.ex) 여러 스레드가 동시에 시작해야 하거나, 특정 작업이 완료될 때까지 기다려야 하는 경우 (Go의 sync.WaitGroup 느낌)java에서는 CyclicBarrier나 CountDownLatch를 사용할 수 있지만, 등록된 party 수를 동적으로 변경할 수 없다. Phaser그럼 Phaser는 뭔가?java.util.concurrent에 들어있고, CyclicBarrier와 CountDownLatch의 슈퍼 set 느낌이다.CyclicBarrier: 여러 스레드가 미리 정의된 지점에서 동기화되고 독립적 작업 반복 CountDownLatch: 하나 이..
-
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..