전체 글
-
네이버 이메일 회원가입 인증 시 존재 유무 확인하기컴퓨터/파이썬 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 프로젝트에서 쓰고 있는 라이브러리들의 파일 크기를 구하는 간단한 유틸리티이다. 리팩토링 하다가, 비동기로 만들어 놓고 각각 계산을 비동기로 돌리면 되는데 하나씩 기다리고 있었다. 우선 원..
-
HyperLogLog 데이터 구조컴퓨터/Go language 2024. 4. 3. 17:49
매일 접속한 unique 사용자들을 어떻게 알 수 있을까? (google analytics 무시) 수백만 명이 접속해 있다면 정확하진 않더라도 n 명 접속 중을 빠르게 표시할 수 있는 자료 구조가 있을까? 해쉬맵을 통해 모든 유저를 저장하면, 서버 메모리보다 커지지 않을까 등을 생각하다가 HyperLogLog 데이터 구조란 것을 알게 되었다. (다른 방법도 많을 것이다) https://www.youtube.com/watch?v=lJYufx0bfpw&t=479s HyperLogLog 추정치를 구하기 때문에 정확한 값을 원하면 옳지 않다. 이름이 왜 하이퍼로그로그 일까? 먼저, "LogLog"는 알고리즘이 고유한 요소들을 (유니크) 효율적으로 계산하기 위해 log 함수들을 사용함으로 셀 수 있는 요소들의 수..
-
Neo4j: 그래프 데이터베이스 시작 (Graph)컴퓨터 2024. 4. 1. 21:32
Download Neo4j Desktop Experience Neo4j 5 on your desktop. Get started with the free graph database download today and avoid the costs of self-hosted deployment. neo4j.com Neo4j Desktop 을 이용해 간단하게 서버를 열고 db를 만든다. 사실 위치 데이터만 갖고 있는 필드들이라 관계가 필요 없는데 Neo4j spatial 과 mysql spatial을 비교해보기 위해 사용하였다. 우선 MySQL에서 데이터를 불러오기 위해, json으로 필드들을 저장했다. 그리고 Neo4j 에서 DB 선택 후 우측 APOC 플러그인을 설치한다. 그리고 로컬 import 폴더에서 파..
-
Go: 백엔드 웹소켓 채팅 (fiber v2 + websocket + rabbitmq)컴퓨터/Go language 2024. 3. 31. 16:02
여러 가지 방이 있고 각 유저들이 있는 채팅 서비스를 만들고 싶었다. 우선 분산 시스템을 고려하지 않고 베이스를 만들어 준다. 싱글 서버 웹소켓이 양방향이라 (bi-directional) 선택했고, 객체를 저장하고 있으면 계속 주고받을 수 있다. 채팅 서버에서 websocket 연결 객체를 저장하고 있어야만 메시지를 전송할 수 있다. var WsRoomManager *RoomConnectionManager = NewRoomConnectionManager() type RoomConnectionManager struct { connections *haxmap.Map[string, []*websocket.Conn] // roomid and users } Concurrent Map 연결 객체들을 해쉬 맵에 저장..
-
Go: WGS84를 WCONGNAMUL로 변환 함수컴퓨터/Go language 2024. 3. 24. 19:44
Go언어 백엔드에서 카카오맵 API를 이용하다 보니, WCONGNAMUL로 전환하는 일도 꽤 생겼다.근데 외부 API를 부르자니 뭔가 싫고 공부겸 값을 찾아보기로 했다.(사실 마음 편하게 카카오 API를 이용하자: https://developers.kakao.com/docs/latest/ko/local/dev-guide#trans-coord) 우선 변환된 값들을 이용해서 python numpy의 lstsq로 linear 하게 계수를 찾아보는 방법을 택했다. numpy.linalg.lstsq — NumPy v1.26 ManualCut-off ratio for small singular values of a. For the purposes of rank determination, singular values..