본문 바로가기

Language

(15)
[Effective Java] builder pattern ** effective java 공부내용 입니다. 매개변수가 많을때에는 builder pattern 사용을 고려하자. python이나 scala의 경우 파라미터가 많은 경우 아래의 예시처럼 named optional pattern 사용이 가능하다. class NutritionFacts: def __init__(self, servingSize, servings, calories=0, fat=0, sodium=0, carbohydrates=0): self.servingSize = servingSize self.servings = servings self.calories = calories self.fat = fat self.sodium = sodium self.carbohydrates = carbohydra..
[Python] __mising__ method (default value) dict 사용시, default value 설정하는 방법은 2개가 있다. 1. dict의 setdefault 사용 2. collections의 defaultdict 사용 파일을 열고 열린 파일 handle을 연결시키는 dict를 사용한다고 할 때, case 1) dict의 setdefault 사용 try: handle = pictures.setdefault(path, open(path, 'a+b')) except OSError: print(f"cannot open path: {path}") raise else: handle.seek(0) image_data = handle.read() 1. open 함수가 항상 호출됨 --> open 함수의 error 처리 해줘야 함 2. setdefault의 예외 처리..
[Python] assignment expression(walrus operator) python 3.8 PEP572 내용. NAME = expr --> (NAME euqal expr) NAME := expr --> (NAME walrus expr) 저렇게 표현하고 읽는다고 합니다. case1) repeated a subexpression Case in point: Guido found several examples where a programmer repeated a subexpression, slowing down the program, in order to save one line of code, e.g. instead of writing: bottles = [] fresh_fruit = pick_fruit() while fresh_fruit: for fruit, count in f..
[Go] 이미지 업로드 + naver cloud platform OCR 써보기 간단한 프로젝트 진행을 하면서 Go로 이미지 업로드 서버 + 업로드한 이미지를 통해 OCR 적용 해보았다. 1. 이미지 업로드 서버 만들기 - exif 태그보고 rotate하기 - io을 다뤄서 파일 저장하기 2. OCR 써보기 - JSON parsing - reqeust하기 1. 이미지 업로드 서버 만들기 - client side - index.html 기능 구현을 위해 post전송을 할 form정도만 구현해놓았다.. form은 post, multipart/form-data를 사용했다. {{.}} - server side main.go가 메인 실행파일, utils안에 코드를 분할, images에 이미지저장, json에 ocr결과를 저장하도록 했다. method에 따라 기능을 분리하고.. func ind..
[Go] defer, panic, recover?? Go 코드를 보다보면 다른 언어와 다르게 defer, panic, recover가 자주등장한다. defer는 키워드로, panic, recover는 내장함수로 지원되는데 어떻게 사용되는지 알아보자 1. defer 2. panic 3. recover defer - defer를 사용하면 list에 함수 호출을 넣는다. - 이러한 list는 주변 함수가 리턴된 이후에 실행된다. (after surrounding function returns) Example - 파일을 복사하는 경우 아래와 같이 src,dst 파일의 열고 닫는 과정이 필요하다. - 이 때, dst 파일의 os.Create호출에서 문제가 발생했을 때, 우리는 src파일의 Close하는 논리과정을 한 번 더 작성해야한다. (아래의 코드는 버그 발생..
[Go] Go 사용하기(코드 구조, package) 한 언어를 제대로 사용하려면 역시 구조를 정확히 알아야한다. 공식 문서를 토대로 알아보자 Code Organization - go 프로그램은 package로 구성되어 있으며, 같은 패키지내의 어떤 소스 파일에 정의된 function, type, variable, constant는 어디서든 사용(visible)가능 * package : A package is a collection of source files in the same directory that are compiled together(같은 폴더에 있는 소스파일) - repository는 1개 이상의 모듈로 구성됨. 루트 폴더에 go.mod 파일에 패키지나 모듈의 상세정보를 기술 * module : A module is a collection o..
[Go] - web programming : postgresSQL연결, CRUD사용해보기 PostgresSQL - 파일을 csv, 메모리에 계속올려두어 사용하는 것은 한정적이다. db서버를 이용해서 데이터를 접근하고 crud가능한 서버를 만들어 보자. 1. PostgresSQL 설치 - url - https://www.enterprisedb.com/downloads/postgres-postgresql-downloads - 다운 받고 실행은 굉장히 직관적이고 쉬워서 설치과정은 생략한다. - 글로벌하게 쓸라면 환경변수 설정해 주자. (자동으로 안잡아준다) [내PC] -> [고급시스템설정] -> [환경변수] -> 시스템 변수에서 변수Path [편집] --> PostgresSQL의 bin 폴더 추가 2. Postgres user생성 및 table 생성 - postgres, db를 쓸라면 기본적으로 ..
[Go] - web programming : csv, gob 패키지 다루기 파일 저장 - 메모리에 데이터를 저장하는게 빠르지만 휘발성 데이터임 (임시로 저장) - 메모리에 저장된 데이터를 비 휘발성 저장 장치(하드)에 저장시키자 - csv는 텍스트포맷(콤마로 구분), gob는 바이너리 포맷 으로 serializing, cahing할 때 효과적 이라 함 CSV 읽기 쓰기 1. 데이터 정의 및 csv파일 생성 - 게시판 어플리케이션을 만든다 생각했을 떄, 아래와 같이 struct를 정의한다. type Post struct { Id int Content string Author string } - post파일을 저장할 csv파일을 생성해준다. (defer와 panic은 추후 공부하자) csvFile, err := os.Create("posts.csv") if err != nil { ..