일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- as?
- ListView
- 함수
- HP
- Java
- adapter
- Kotlin
- 코틀린
- 노트북
- 오버로딩
- go
- 패널 교체
- Array
- 싱글 스레드
- 연산자
- 노트북 추천
- 파이썬
- Android
- 자바
- javascript
- golang
- 배열
- Overloading
- js
- 자바스크립트
- 리스트 뷰
- 안드로이드
- var
- node.js
- Python
- Today
- Total
목록프로그래밍 (Programming) (51)
Bbaktaeho
들어가며 현재 Go 언어에서 range에 관련해서 새로운 변화가 생기고 있습니다. 새로운 Go 버전에서 변화된 range를 받아들이기 전에 기존 range에 대해서 자세히 파악할 필요가 있어 이번 기회에 정리하려고 합니다. 이 글은 Go 100가지 실수 패턴과 솔루션 도서를 참고해서 작성되었으며 자세한 내용은 도서를 확인해 주세요. range Go 언어에서 반복하는 로직을 작성하기 위해서 for 키워드만 존재합니다. 보통은 range 키워드와 같이 사용하게 되는데 range가 값을 대입하는 과정을 모르고 사용하다가 실수가 발생하곤 합니다. 어떤 실수들이 존재하는지 예시를 통해 확인해보겠습니다. 개념 range는 index나 종료 조건을 다룰 필요가 없어서 반복하는 로직을 작성하는데 편리합니다. 또한 ra..
2022-11-10: 채널도 내부에서 mutex 이용 들어가며 동시성 프로그래밍을 할 때 독립적인 로직이 아니라면 예기치 못한 오작동을 맛볼 수 있습니다. 심하면 에러를 추적하기도 어려운데요. 특히 여러 고루틴을 수행 후 결과를 slice로 가져올 때 바로 문제에 직면할 수 있었습니다. 이번 글에서 여러 고루틴에서 로직이 수행된 후 slice에 안전하게 append 하는 법을 알아보겠습니다. 단순하게 작성한 코드 단순하게 slice를 선언하고 고루틴에 slice를 append 하도록 코드를 짜 보면 어떨까요? func main() { size := 10 arr := make([]int, 0, size) var w sync.WaitGroup w.Add(size) for i := 0; i < size; i+..
[2022-12-26] infura에서 batch call의 method 목록을 모두 요청 횟수로 카운트되게 수정되었습니다. 또한 batch call의 카운트까지 포함되어 method list + 1 로 카운트됩니다. 들어가며 Ethereum 클라이언트 앱을 개발하다 보면 INFURA를 많이 이용하게 됩니다. INFURA는 하루 10만 건의 요청을 무료로 제공해주며 유료로 사용할 땐 더 많은 요청 횟수를 제공받습니다. 개발할 때 요청 횟수도 신경 쓸 수밖에 없는데요. JSON-RPC 표준에서 한 번의 요청으로 여러 method를 처리할 수가 있습니다. INFURA 또는 RPC Node는 단 한 번의 네트워크 I/O가 발생하게 되어 매우 유용한 기능입니다. 유료 요금제를 사용한다면 요금도 줄일 수도 있구요..
들어가기 전에 Web 서비스에서 Database는 데이터 저장소뿐만 아니라 서비스 성능에도 중요한 부분입니다. DML 쿼리 작성, Table 용량 및 Index등의 여러 요소가 있지만 이번 글에서 다룰 내용은 Connection입니다. Connection을 Go 언어의 MYSQL Driver에서 어떻게 다루는지 살펴보고 Go언어에서 대표 ORM인 GORM에서 어떻게 Connection Pool을 관리하는지 알아보겠습니다. Connection 먼저 Connection이란, Application과 Database Server와 상호 작용을 위한 연결을 유지하기 위해 생성되는 구조(객체)입니다. Database Server와 연결을 맺고 끊음을 반복함으로써 Connection을 관리하지만, 일련의 맺고 끊음의..
Golang 실행 시간 측정 go 언어의 time package를 사용하여 간단하게 실행 시간을 측정할 수 있습니다. import "time" time 모듈은 builtin package이므로 따로 설치할 필요가 없습니다. go 언어의 코드 실행 시간은 각 컴퓨터에 따라 영향을 많이 받으므로 결과는 다를 수 있습니다. start := time.Now() ... // 사이에 실행되는 로직의 시간을 측정 end := time.Since(start) time.Since() 함수에 시간을 가리키는 인수를 받으면 그 시점부터 Since가 실행된 시점까지의 시간을 측정합니다. Since() 함수는 time 패키지에서 그대로 사용할 수 있습니다. 또한 time.Time 구조체의 함수인 Sub() 함수를 이용할 수도 ..
들어가며 좋은 소프트웨어는 깔끔한 코드로부터 시작한다. - 로버트 C. 마틴 건물을 지을 때 좋은 벽돌을 사용하지 않으면 건물의 구조가 좋고 나쁨은 큰 의미가 없다고 합니다. 반대로 좋은 벽돌을 사용하더라도 건물의 구조가 엉망이 될 수 있다고 합니다. 여기서 벽돌은 코드를 나타내고 건물의 구조는 소프트웨어 아키텍처를 나타냅니다. 그래서 좋은 코드로 좋은 아키텍처를 정의하는 원칙이 필요한데, 그게 바로 SOLID 원칙입니다. 모든 예제 코드는 TypeScript로 작성되어 있으며 Samuele Resca님의 코드를 그대로 사용했음을 밝힙니다. SOLID SOLID 원칙은 SRP(단일 책임 원칙), OCP(개방 폐쇄 원칙), LSP(리스코프 치환 법칙), ISP(인터페이스 분리 원칙), DIP(의존성 역전 ..
언젠가 업데이트 예정. 들어가며 두 언어로 알고리즘 문제 풀이를 하면서 둘의 기본 제공 API를 다뤄보고 정리해보려고 합니다. 아주 주관적(?)으로 두 언어가 제공하는 API에 대해 비교해보겠습니다. 보시고 아! 이거 좋다! 이것도 추가해줘! 해주시면 이름과 함께 추가할게요 ㅎㅎ 리스트를 문자열로 변환 파이썬 "".join(["hi ", "everyone"]) # hi erveryone "\n".join([1,2,3,4,5]) # 1 # 2 # 3 # 4 # 5 파이썬은 문자열의 join 함수를 활용하면 "구분자".join()으로 문자열을 생성할 수 있습니다. 자바스크립트 ["hi ", "everyone"].join(""); // hi everyone [1,2,3,4,5].join("\n"); // 1 ..
들어가며 최근, NestJS 프레임워크로 개발하다가 공식 문서에서 assign 메서드의 예제 코드를 봤다. Serialization 문서를 보니 생성자에 Object.assign() 메서드를 사용하고 있다. 여태 이런 꿀팁을 모르고 있어서 정리하기로 했고 스프레드 연산자를 활용한 방법과 비교해보기로 했다. (Partial은 타입스크립트 문법으로 다음에 다뤄보겠습니다) Object.assign 타겟을 지정한 객체로 다른 객체의 속성을 복사한다. 원형 Object.assign(target, ...sources) 간단한 예제로 파악해보자. (MDN의 첫 예제를 그대로 가져왔다) 기본형 예제 const target = { a: 1, b: 2 }; const source = { b: 4, c: 5 }; const..