분류 전체보기
-
[클린코드] 의미 있는 이름📚 개발 도서/클린코드 2023. 4. 29. 11:33
다음 규칙들을 적용해서 코드 가독성이 높아져보자! 의도를 분명히 밝혀라 좋은 이름을 지으려면 시간이 걸리지만 좋은 이름으로 절약하는 시간이 훨씬 더 많다. 그릇된 정보를 피하라 일관성이 떨어지는 표기법은 그릇된 정보다. 의미있게 구분하라 컴파일러나 인터프리터만 통과하려는 생각으로 코드를 구현하는 프로그래머는 스스로 문제를 일으킨다. 다른 클래스를 ProductInfo 혹은 ProductData라 부른다면 개념을 구분하지 않은 채 이름만 달리한 경우다. Info나 Data는 a, an, the와 마찬가지로 의미가 불분명한 불용어다. 불용어는 중복이다. 읽는 사람이 차이를 알 수 있도록 이름을 지어라. 이름이 달라야 한다면 의미도 달라져야한다. 발음하기 쉬운 이름을 사용하라 발음하기 쉬운 단어를 사용할 때 ..
-
[클린코드] 깨끗한 코드📚 개발 도서/클린코드 2023. 4. 18. 20:17
코드가 존재하리라 코드는 요구사항을 표현하는 언어이다 언어는 요구사항에 가깝게 만들 수 있다. 요구사항에서 정형구조를 뽑아낼 수 있는 도구를 만들 수 있다. 나쁜 코드 회사가 망한 원인은 바로 나쁜 코드 탓이었다. 버그가 남아있고, 프로그램이 죽는 횟수가 늘고, 출시하기에 바빠 코드를 마음대로 짜고, 기능을 추가할수록 엉망이 되어갔다. 고행(wading) 나쁜 코드를 헤쳐나간다. 르블랑의 법칙 나중은 결코 오지 않는다. 나중에 손보겠다고 한 코드와 돌아간다는 사실에 안도감을 느끼며 위로함 → 나중은 결코 오지 않는다. 나쁜 코드로 치르는 대가 나쁜 코드가 쌓일수록 팀 생산성이 떨어진다. 태도 “우리에게”라는 단어가 자주 나온다 좋은 코드를 사수하는 일은 바로 우리 프로그래머들의 책임이다. 원초적 난제 나..
-
[자료구조] 자료구조란?📖 개발 공부/자료구조 2023. 4. 16. 14:27
자료구조의 정의 자료구조는 데이터를 효율적으로 저장하고 조작하기 위한 방법을 다루는 컴퓨터 과학의 분야이다. 컴퓨터 프로그램에서 데이터는 배열, 연결 리스트, 스택, 큐 등의 자료구조로 구성된다. 이러한 자료구조들은 특정 알고리즘의 작동에 필수적이며, 프로그램의 효율성과 성능에 큰 영향을 미친다. 자료구조의 특징 효율성: 상황에 맞는 자료구조를 사용하면 데이터 처리의 효율성이 높아진다. 데이터 접근, 삽입, 삭제, 검색 등의 연산이 빠르고 효율적으로 이루어져야 한다. 추상화: 추상화란 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추리는 것을 말한다. 자료구조는 데이터를 추상화하여 다양한 형태로 표현할 수 있다. 자료구조를 이용할 때 자료구조를 구현하는 자세한 작동원리보다는 사용 방..
-
[데이터 중심 애플리케이션 설계] 응답 시간 (p50, p95, p99)📚 개발 도서/데이터 중심 애플리케이션 설계 2023. 4. 13. 01:21
“전형적인” 응답 시간을 알고 싶다면 평균은 좋은 지표가 아니다. 얼마나 많은 사용자가 실제로 지연을 경험했는지 알려주지 않기 때문이다. 일반적으로 백분위를 사용하는 편이 좋다. 응답 시간 목록을 가지고 가장 빠른 시간부터 제일 느린 시가가지 정렬하면 중간 지점이 중앙값(median)이 된다. 사용자가 보통 얼마나 오랫동안 기다려야 하는지 알고 싶다면 중앙값이 가장 좋은 지표다. 중앙값 == 50분위(p50)사용자 요청의 절반은 중앙값 응답 시간 미만으로 제공되고, 나머지 반은 중앙값보다 오래 걸린다.사용자가 여러 개의 요청을 보내면 최소한 하나의 요청이 중앙값보다 느릴 확률이 50%보다 높다. 특이 값이 얼마나 좋지 않은지 알아보려면 상위 백분위를 살펴보는 것도 좋다.95분위, 99분위, 99.9분위가..
-
[데이터 중심 애플리케이션 설계] BASE와 ACID📚 개발 도서/데이터 중심 애플리케이션 설계 2023. 4. 12. 00:04
BASEBasically Available, Soft State, Eventually Consistent데이터 가용성과 데이터 처리 성능이 향상되도록 한다!Basically Available(가용성) : Master 서버에 장애가 발생해도, 여러 Slave 서버로 인해 무중단 서비스가 가능하다. (가용성을 제공한다.)Soft State(소프트 상태) : 각각의 데이터가 도달한 시점에 데이터가 갱신된다. (유연한 상태를 가진다.)Eventually Consistent(결과적 일관성)→ 시스템 부하 및 네트워크 속도에 따라 서버에 복제하는 시간이 다를 수 있으나, 최종적으로는 모든 서버에 데이터가 복제된다.복제 메커니즘에 의해 모든 서버에 데이터 복제가 동시에 실행될 수 없다.ACIDAtomicity, Co..
-
[Flutter] TabBar, TabBar 정렬📖 개발 공부/flutter 2023. 4. 11. 23:30
DefaultTabController, TabBar, TabBarView를 사용하여 탭을 넣어보자. TabBar DefaultTabController 선택된 탭과 컨텐츠를 동기화하고, 기본 컨텐츠를 유지하려면 TabController가 필요하다. const DefaultTabController({ super.key, required this.length, this.initialIndex = 0, required this.child, this.animationDuration, }) length: 탭의 개수 (필수 파라미터) TabBar Tab Widget 목록 탭을 문자, 아이콘 또는 하위 Widget을 명시할 수 있다. Align( alignment: Alignment.centerLeft, child: ..
-
배포 전략 (Rolling Update, Blue/Green, Canary)📖 개발 공부 2023. 4. 9. 23:37
Rolling Update 구 버전에서 신 버전으로 트래픽을 점진적으로 전환하는 배포이다. 배포되어있는 팟들을 동시에 업데이트하는 것이 아니라 1개, 2개 등 퍼센테이지를 정해 교체해 나가는 방식이다. 즉, 새 버전 인스턴스를 하나씩 늘려가고 기존 버전의 인스턴스를 하나씩 줄여나가는 방식이다. 서비스의 중단이 발생하진 않지만, 서비스가 받는 부하가 커지며 구버전과 신버전이 공존하는 시기가 존재할 수 있는 단점이 있다. 관리가 편하지만 배포 중 한쪽 인스턴스의 수가 감소되므로 서버 처리 용량을 미리 고려해야 한다. 롤링 업데이트를 하기 위해서는 RS(Replica Set)이 2개가 필요하고, replica의 수를 단계적으로 조절해줘야 한다. 배포가 잘못되었을 경우, 롤백을 하기 위해 순서를 거꾸로 실행해야..
-
[Kotlin] sortedBy와 sortedWith의 차이점📖 개발 공부/kotlin 2023. 4. 9. 23:23
sortedBy sortBy는 원본 리스트를 바꾸고, sortedBy는 원본 리스트를 바꾸지 않고 소팅된 리스트를 리턴한다. selector을 지정하면 소팅 기준을 정할 수 있다. strings.sortedBy { it } 페어를 사용할때도 하나의 기준을 두고 정렬하고 싶을 때 사용하면 된다. pair에 접근할 때는 it.first, it.second로 접근하면 된다. 내림차순으로 정렬할 땐 sortedByDescending()을 사용하면 된다. sortedWith 역시 원본 리스트를 바꾸지 않고 소팅된 리스트를 리턴한다. sortedBy()와 다른 점 은 comparator을 지정해서 다중 기준을 둘 수 있다는 점이다.