목록Programming Language (59)
이야기박스
카페에 왔는데, 할 것도 없고 심심해서 해보는 flutter 설치하고 간단한 예제도 돌려보았습니다. 참고로 제 컴퓨터는 m2 Air 환경입니다. 아래 설치 방법 및 스크립트는 m2에서 동작하였다는 것을 감안해 주시면 좋겠습니다. 설치 macOS install How to install on macOS. docs.flutter.dev Github을 통해서 설치하는 방법과 빌드된 압축 파일을 이용하여 설치하는 방법 두 가지가 있습니다. 저는 이 중에 후자로 선택하였습니다. 사전에 rosetta 업그레이드 먼저 진행해줍니다. $ sudo softwareupdate --install-rosetta --agree-to-license 이제 flutter를 설치해 봅니다. 저는 임의의 Bin 폴더를 생성하여 거기에 ..
문제 Kotlin SpringBoot JPA를 통하여 자동으로 테이블을 생성한 경우, 컬럼 순서가 원하는 대로 들어가지 않습니다. 상황 application.yaml에 정의되어 있는 jpa 설정은 아래와 같습니다. spring: jpa: database: mysql hibernate: ddl-auto: update generate-ddl: true show-sql: false properties: hibernate: dialect: org.hibernate.dialect.MySQL55Dialect 테이블 정의 Entity는 아래와 같습니다. 원하는 컬럼 순서는 [ id -> name -> age ] 입니다. @Entity @Table(name = "sample") data class Sample( @Id..
Go린이로써 가끔 git에서 context의 key로 빈 struct{}를 사용하는 것을 보고 궁금한 점이 늘 있었습니다. 그래서 오늘은 이 내용에 관한 포스팅을 작성해보려고 합니다. type key struct{} ctx = context.WithValue(ctx, key{}, "my value") // Set value myValue, ok := ctx.Value(key{}).(string) // Get value 이번 포스팅은 아래의 문서를 가져와 작성하였습니다. https://gist.github.com/ww9/4ad7b2ddfb94816a30dfdf2218e02f48 Why use empty struct{} and not int or string for context.Value() key typ..
gRPC는 java로만 개발을 해봤었는데, 이번에 go로도 사용할 기회가 생겨 테스트 코드 진행 겸 포스트를 남겨봅니다. 이번 포스팅은 아래의 gRPC 공식 문서의 Quick start를 바탕으로 작성되었습니다. Quick start This guide gets you started with gRPC in Go with a simple working example. grpc.io 사전 준비 우선 protocol buffer 파일을 이용하여 코드를 생성하기 위해 아래 라이브러리를 설치합니다. go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28 go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1..
Go는 자체적인 내장 testing 패키지를 가지고 있습니다. 덕분에 쉽고 빠르게 테스트 코드 작성이 가능한데요. 제목처럼 한번 가볍게 알아보도록 하겠습니다. 개요 Go의 테스트 파일은 "_test" 접미사를 달고 있으면 됩니다. 즉, "*_test.go" 형식의 이름을 가지면 되는 거죠. Go의 테스트 패키지는 크게 Example, Benchmark, Test 세 가지 기능이 있습니다. Go에서는 이 기능들을 함수 이름에 접두사로 사용하는 것을 권하고 있습니다. 예를 들어 함수의 이름이 다음과 같아지는 거죠. Example***, Benchmark***, Test*** 테스트 실행은 다음과 같은 커맨드로 진행할 수 있습니다. # 전체 테스트 코드 실행 go test -v ./story # 특정 테스트 ..
요약 Subprocess에 *(Asterisk)를 사용하고 싶다면, Shell=True가 필요합니다. If shell is True, the specified command will be executed through the shell. This can be useful if you are using Python primarily for the enhanced control flow it offers over most system shells and still want convenient access to other shell features such as shell pipes, filename wildcards, environment variable expansion, and expansion of ~..
# 개요 Python3에서의 GIL(Global Interpreter Lock)이란 어떤 것인지, 그리고 이러한 환경에서 Thread, Process는 어떻게 사용해야 할지 이야기해보도록 하겠습니다. # Process & Thread [POSIX; 프로세스와 스레드]에 작성된 문서를 바탕으로 정리를 해보았습니다. Python Thread 영역은 CPython과 밀접한 연관이 있고, 프로세스와 스레드의 개념을 잘 설명해주어서 복습한다는 느낌으로 읽어보았습니다. `프로세스`란? 컴퓨터에서 연속적으로 실행되고 있는 프로그램, 즉 작업(Task)들을 일컷는 말. `스레드`란? 프로세스 내부에 실행되는 작은 작업 단위. 스레드는 프로세스의 `code`, `data`, `heap` 영역을 공유하고, `stack` ..
대용량 파일을 분할하려고 하는데, 통으로 읽어서 하려다 자꾸 OOM이 나서 스트림 처리 분할 로직을 만들어 봤습니다. 매번 자바만 하다가 파이썬을 하니 굉장히 재밌더라고요. 대학생 때로 돌아간 것 같고.. # 정책 스택 드라이버 코드를 참고해서 만들었고, 기본 동작 방식은 다음과 같습니다. 1. `block_size` 크기만큼 파일을 읽습니다. --> `block` 2. `block`에서 `marker`가 나올 때마다 해당 값들을 `rows`에 넣습니다. 3. `rows`가 특정 크기 이상되면 파일을 씁니다. # 코드 def split_file(): marker = '{delimiter}' partition_no = 0 max_row_cnt = 500000 block_size = 8192 encoding..