728x90

Programming Language 33

[TypeScript] 클래스 상속 시 편하게 입력하기

상황 최근 PG사 연동 업무할 일이 생겼는데, 파라미터로 넘겨야 할 항목들이 꽤 많았다. 차근차근 뜯어보니 클라이언트 쪽에서 넘겨야 할 변수는 적은데 비해, 서버쪽에서 넘겨야 할 값들은 거의 상수에 가까웠다. 처음에는 TypeScript 에서 제공하는 DTO 형태로 모든 파라미터를 다 넣었더니 너무 많아서 조잡해보였고, 간단하게 만들기 위해 유저가 받는 DTO를 따로 둔 뒤, 상속받아서 쓰는 게 좋겠다고 생각이 들었다. 근데 여기서 문제는 파라미터를 하나씩 주입시키자니 너무 비효율적이였다. 예를 들면 이렇다. # 유저 입력 DTO export class BaseDTO { param1: number; param2: string; param3: number; param4: string; constructor..

[Python] String type 한글 바이트 -> 한글 변환

유니코드를 변환하고 받아오는 과정에서 타입이 변환되는 경우가 생긴다. 나의 경우는 대략 이렇다. 아래와 같이 입력부터 한글로 들어왔다면 인코딩을 utf-8로 했다면 디코딩도 utf-8로 진행하면 되므로 문제가 되지 않는다. a = "파이썬" a = a.encode('utf-8') print(a, type(a)) b'\xed\x8c\x8c\xec\x9d\xb4\xec\x8d\xac' 문제는 아래와 같은 상황인데, 유니코드가 byte로 넘어왔는데 인식이 잘못되어 string으로 변환된 경우이다. a = "\\xed\\x8c\\x8c\\xec\\x9d\\xb4\\xec\\x8d\\xac" # 한글, utf-8로 파이썬 print(a, type(a)) # \xed\x8c\x8c\xec\x9d\xb4\xec\x8..

[Go] 테이블 주도 테스트란? Table Driven Test

최근에 테스트 주도 개발(Test Driven Development, TDD)에 관해 관심이 있어서 알아보았고, 그러던 중 당근마켓에서 쓴 글을 읽다가 알게된 테이블 주도 테스트라는 것이 있어 새롭게 배운 것 같아 몇개 더 알아보다가 글을 써본다. https://medium.com/daangn/how-to-write-a-testable-golang-code-4c0e67612bb8 유연하고 테스트 가능한 Go 코드 작성하기 Go 언어는 개발자에게 코딩의 즐거움을 일깨워주는 언어입니다. Go가 가진 명확한 한계(가비지 컬렉션으로 인한 성능 저하, 제네릭을 지원하지 않음)에도 불구하고 말이죠. medium.com 먼저 TDD를 간단하게 설명을 하면 테스트를 통해 개발해보자는 의미로, 개발을 한다음에 테스트하는..

[Golang] 자료형, 배열, 슬라이스

Go는 병행성, 동시성에 초점을 두고 개발된 컴파일 언어이다. 꼭 그렇진 않지만, 대부분의 컴파일 언어들은 자료형 명시를 필요로 한다. 왜냐하면, 기계어로 번역하고 해석하는 과정에서 자원을 할당해야 하기 때문이다. Go는 유연하게 자료형 추론이 가능한 방식이여서 변수 타입을 꼭 설정하지는 않아도 된다는 장점이 있지만, 코드의 효율을 높이는데 있어 자료형과 배열 선언은 중요하다. 오늘은 Go에서 쓰이는 자료형과 배열 선언 방법에 대해 공부하였다. 자료형 Go에서 쓰이는 자료형은 C++과 비슷하다. 이름 표현 공간 비고 bool 참, 거짓 1byte int 정수형 4byte uint, int8, int16, 등 존재 float 소수 표현 8byte float32, float64 char 문자(ASCII) 1..

[Go] Gin 에러 Error:Field validation for 'Value' failed on the 'required' tag

나의 경우 Gin 에서 Binding으로 데이터를 받고 있었는데 생긴 문제로, int 값으로나 bool에서 0을 넣었을 때 에러가 발생하였다. Error:Field validation for '{Value}' failed on the 'required' tag 원인은 이렇다. Required 기준으로는 0 값이 허용되지 않는다고 한다. 그럼 0이나 false라도 required이면 어떡하지 싶겠지만, 그냥 required 를 빼면 된다. 참고 https://chowdera.com/2021/08/20210810234909044E.html

[Go] Gin 설치 에러

요약 : Golang 1.17 을 설치하면 깔끔하게 해결된다. https://nextgentips.com/2021/12/11/how-to-install-go-1-17-on-ubuntu-20-04/ 나의 경우 apt-get install golang 설치 시, 1.13 버전으로 설치되서 진행했을 때 생긴 문제였다. 1. package gopkg.in/yaml.v2: exit status 128 ca-certificates 라는 리눅스에서 인증 문제로 생기는 에러로, 다음의 내용을 추가하면 된다고 해서 해봤더니, 다음 에러가 생겼다. sudo apt-get update && sudo apt-get install ca-certificates libgnutls30 -y 2. /root/go/src/golang...

[Go] Go 공부 시작

Go 공부 시작하게 된 배경 목표 : 저사양 PC에서 동작하는 프로그래밍 - 기존에는 Python을 주로 써왔는데 인터프리터의 한계인지, ARM 코어에서 써보니 저사양 PC에선 적합하지 않다고 느꼈다. (느렸다) 동시성 - 위와 비슷한 맥락이지만, Python 이 GIL(Global Interpreter Lock)으로 인해 여러 프로세스를 띄울 시, 느렸다. 설치 - 파이썬에서는 Numpy, scipy 와같은 라이브러리가 매우 좋다. 다만, 첫 설치부터 과정을 생각해보면, python 버전을 맞춰서 깔아야 하고, pip 버전도 깔아야 하고, requirements 에 따라 종속성 라이브러리도 깔아야 된다. 저사양의 ARM에서는 이런 라이브러리 설치하는 것도 매우 오래 걸렸다. numpy 하나 설치하는데 ..

728x90