backend
-
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 == "" { ..
-
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..
-
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..
-
Rust 백엔드: REST API (Rocket + MySQL)컴퓨터/Rust 2021. 7. 14. 14:11
Rocket Rust 언어용 웹 프레임워크 Rocket - Simple, Fast, Type-Safe Web Framework for Rust Forms? Check! Handling forms is simple and easy. rocket.rs Rust Rocket 기본 설정 프로젝트 시작 cargo new rustweb --bin cd rustweb 기본 src/main.rs #[macro_use] extern crate rocket; #[get("/")] fn index() -> &'static str { "Hello, world!" } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![index]) } cargo build carg..