일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- node.js
- 리스트 뷰
- 자바
- 노트북
- 코틀린
- Python
- Android
- go
- 자바스크립트
- Kotlin
- js
- 오버로딩
- 싱글 스레드
- Overloading
- as?
- ListView
- 안드로이드
- 패널 교체
- 연산자
- Array
- 함수
- HP
- 노트북 추천
- 배열
- Java
- golang
- javascript
- adapter
- 파이썬
- var
- Today
- Total
목록전체 글 (97)
Bbaktaeho
들어가며 현재 Go 언어에서 range에 관련해서 새로운 변화가 생기고 있습니다. 새로운 Go 버전에서 변화된 range를 받아들이기 전에 기존 range에 대해서 자세히 파악할 필요가 있어 이번 기회에 정리하려고 합니다. 이 글은 Go 100가지 실수 패턴과 솔루션 도서를 참고해서 작성되었으며 자세한 내용은 도서를 확인해 주세요. range Go 언어에서 반복하는 로직을 작성하기 위해서 for 키워드만 존재합니다. 보통은 range 키워드와 같이 사용하게 되는데 range가 값을 대입하는 과정을 모르고 사용하다가 실수가 발생하곤 합니다. 어떤 실수들이 존재하는지 예시를 통해 확인해보겠습니다. 개념 range는 index나 종료 조건을 다룰 필요가 없어서 반복하는 로직을 작성하는데 편리합니다. 또한 ra..
들어가며 방대한 양의 데이터가 생성되면서 기존의 데이터베이스들의 데이터를 쪼개서 저장하게 되었습니다. 여기서 기존 데이터베이스들은 관계형 데이터베이스를 의미하며 이들은 태생적으로 분산 처리에 어려움이 있었습니다. 이로 인해 새로운 NoSQL이라는 DBMS들이 개발되었고 많은 기업들에서 도입하기 시작되었다고 하네요. NoSQL 중에서 서비스의 주축 데이터베이스로 가장 많이 선택되는 게 DocumentDB입니다. 가장 사용량이 많은 MongoDB를 중심으로 공식 문서를 통해 DocumentDB를 알아보도록 하겠습니다. Document database (Document-oriented database) 도큐먼트 데이터베이스는 도큐먼트 지향 데이터베이스로 불리기도 합니다. 도큐먼트 데이터베이스는 스키마가 없는 ..
들어가며 최근 데이터베이스의 여러 종류를 찾아보다가 시계열(time series) 데이터베이스를 처음 접하게 되었습니다. 가장 대표적인 데이터베이스로 influxDB가 있었는데요, 전체 데이터베이스에선 29위이지만 시계열 부분에선 1위입니다. 생소한 데이터베이스라 내가 앞으로 적용시킬 수 있는 부분이 있는지 조사해보도록 하겠습니다. 시계열 데이터베이스 (TSDB) 위키백과에서 시계열 데이터베이스는 하나 이상의 시간과 하나 이상의 값 쌍을 통해 시계열을 저장하고 서비스하는데 최적화된 데이터베이스라고 합니다. 여기서 시계열은 일정 시간 간격으로 배치된 데이터들의 수열을 뜻합니다. 시계열 데이터베이스는 시간이 지남에 따라 만들어진 데이터들로 구성되므로 시간 경과에 따른 변화를 추적하는데 용이하며 분석에 특화되..
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+..
들어가며 Ethereum 네트워크에 배포된 컨트랙트로 트랜잭션을 전송할 때 트랜잭션이 실패하는 경우가 있습니다. 일반적인 Gas, Nonce의 문제가 아닌 컨트랙트에서 작성된 코드(require, error, revert 등)에서 에러가 발생할 수 있는데요. 이때 error에 대한 이유를 코드에 작성하게 되는데 이를 Revert reason이라고 합니다. 이번 글에서 컨트랙트로 전송한 실패한 트랜잭션이 어떤 이유로 실패했는지 알아보겠습니다. 테스트용 컨트랙트 여러 에러를 작성한 컨트랙트를 구현해서 테스트하겠습니다. // SPDX-License-Identifier: MIT pragma solidity ^0.8.10; contract RevertContract { error MyError(address se..
[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을 관리하지만, 일련의 맺고 끊음의..
이 글은 https://www.investopedia.com/news/public-private-permissioned-blockchains-compared/ 번역 및 정리한 글임을 밝힙니다. 들어가며 블록체인에는 여러 종류의 블록체인이 있습니다. 각자의 비즈니스 모델에 따라 블록체인 기술을 선택하여 구현하게 되는데, 목적에 따라 보통 3가지 블록체인 기술을 선택하게 됩니다. 이 글에서 public, private, permissioned blockchain에 관하여 이미 작성된 글을 번역하여 간단하게 정리하겠습니다. Public Blockchain 만약 완전히 개방된 블록체인을 만들고 싶다면, 비트코인처럼 누구나 네트워크에 참여하고 기여할 수 있도록 한다면 그건 퍼블릭 블록체인이라고 할 수 있습니다. ..