컴퓨터/Go language
-
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)); ..
-
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 함수들을 사용함으로 셀 수 있는 요소들의 수..
-
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 Manual Cut-off ratio for small singular values of a. For the purposes of rank determination, singular val..
-
Go: fiber v2 백엔드에서 토스 페이 API 사용하기컴퓨터/Go language 2024. 3. 4. 12:20
할 것 Go언어 백엔드 서버에 toss payments API를 연동해보고 싶었다. 우선 API 키를 얻어준다. @링크 API 키 | 토스페이먼츠 개발자센터 토스페이먼츠 클라이언트 키 및 시크릿 키를 발급받고 사용하는 방법을 알아봅니다. 클라이언트 키는 브라우저에서 토스페이먼츠 SDK를 연동할 때 사용합니다. 시크릿 키는 토스페이먼츠 API를 docs.tosspayments.com 테스트 키로 하면 아무리 결제해도 실제 돈은 빠지지 않는다. 이해하기 우선 토스 페이먼츠는 Basic 인증 방식을 사용하고 (Authorization: Basic blah 헤더) 시크릿 키가 ID고 비밀번호는 없는 형태고, 모든 응답/요청은 JSON 이다. @토스 페이먼츠 개발자 샌드박스 토스페이먼츠 개발자센터 토스페이먼츠 결..
-
dismember: 메모리 탐색기컴퓨터/Go language 2022. 7. 6. 16:07
GitHub - liamg/dismember: Scan memory for secrets and more. Maybe eventually a full /proc toolkit. :knife: Scan memory for secrets and more. Maybe eventually a full /proc toolkit. - GitHub - liamg/dismember: Scan memory for secrets and more. Maybe eventually a full /proc toolkit. github.com 리눅스 계열 OS에선 /proc/pid/something에 이런저런 메모리 정보들이 저장된다. 로그인을 한다고 했을 때 여러가지 사이트 정보 네이버 비밀번호 ./dismember grep '..
-
Wails: Go언어를 이용해 크로스 플랫폼 앱 만들기컴퓨터/Go language 2022. 6. 26. 12:38
Wails The Wails Project | Wails Build beautiful cross-platform applications using Go wails.io 소개 Wails는 Go언어를 이용하여 크로스 플랫폼 앱을 만들게 도와준다. (MacOS/Windows/Linux) 프런트엔드는 Svelete, React 등을 사용해서 할 수 있고, wails는 Go언어로 빌드나 함수 -> JS를 도와준다. 설치는 쉬우니 공식 사이트를 확인하면 된다. @공식 문서 만들면서 배운 것 Svelte랑 프런트엔드 쪽은 많이 안 해봐서 쉬운 것부터 시작했다. 대학교 공지 홈페이지에서 각 카테고리별로 Go언어로 파싱하고 앱에 뿌리는 것이다. Go언어 Struct -> TypeScript 우선 Go언어로 짠 struc..