전체 글
-
[Flutter] Line Chart 구현하기📖 개발 공부/flutter 2023. 5. 7. 14:15
다음과 같이 선차트를 flutter에서 그려보려고 한다. fluttergems 사이트에서 차트를 검색하여, syncfusion_flutter_charts 패키지를 찾았다. 이 패키지를 이용하여 LineChart 위젯 클래스를 만들었다. LineChartData라는 데이터 클래스를 이용해서 LineChart를 그리도록 했다. LineChart에 LineChartData 리스트인 dataList, marker 색상, baseValue (위의 분홍색 기준선) 를 파라미터로 넣어 LineChart 클래스를 생성하도록 했다. LineChartData의 name을 String 타입으로 설정하여 x축의 어떤 데이터든(날짜, 년도, 월) 그릴 수 있도록 했다. (위의 차트 참고) 그리고 데이터마다 marker 색상을 ..
-
[클린코드] 함수📚 개발 도서/클린코드 2023. 5. 7. 11:08
3-2 함수가 읽기 쉽고 이해하기 쉬운 이유는 무엇일까? 의도를 분명히 표현하는 함수를 어떻게 구현할 수 있을까? 함수에 어떤 속성을 부여해야 처음 읽는 사람이 프로그램 내부를 직관적으로 파악할 수 있을까? 이 질문들과 함께 챕터를 읽어보자. 작게 만들어라! // 3-3 public static String renderPageWithSetupAndTeardowns ( PageData pageData, boolean isSuite) throws Exception { if (isTestPage(pageData)) includeSetupAndTeardownPages(pageData, isSuite); return pageData.getHtml(); } → 이 함수는 이야기처럼 술술 읽혀진다. 블록과 들여쓰기 ..
-
[Elasticsearch] Elasticsearch 구성요소📖 개발 공부/elasticsearch 2023. 5. 5. 12:12
Cluster 엘라스틱 서치는 기본적으로 클러스터라는 단위로 데이터를 제공한다. 이는 하나 이상의 물리적인 노드로 이뤄져 있으며 각 노드는 모두 데이터 색인 및 검색 기능을 제공하는 일종의 물리적인 서버이기도 하다. Node 물리적으로 실행된 Runtime 상태의 Elasticsearch. 노드는 논리적인 클러스터를 이루는 구성원의 일부이며 실제 데이터를 물리적으로 가지고 있는 단일 서버이다. 실행 시 노드는 클러스터에 의해 UUID가 할당되고 클러스터 내에서는 할당된 UUID로 서로를 식별한다. node의 종류 마스터 노드: 클러스터의 제어를 담당한다. node.master 데이터 노드: 데이터를 보유하고 CRUD, 검색, 집계 등 데이터 관련 작업을 담당한다. node.data 인제스트 노드: 색인 ..
-
[자료구조] 색인(Index), 역색인(Inverted Index)📖 개발 공부/자료구조 2023. 5. 1. 17:37
Elasticsearch의 대표 특징으로 불리는 역색인에 대해 알아보려고 한다. 역색인(Inverted Index)에 앞서, 색인(Index)에 대해 알아보자. 색인(Index)이란? 위의 사진에서 Forward Index이다. 문서에서 키워드를 찾아 보기 쉽도록 정렬 및 나열한 목록이다. 특정한 데이터가 어느 위치에 있는지 미리 저장해두어, 검색 시에 빠른 속도로 찾을 수 있도록 한다. 키워드를 토대로 데이터를 찾을 경우 마지막 데이터까지 확인을 해야할 수 있어 시간이 오래 걸릴 수 있다. 역색인(Inverted Index)이란? 위의 사진에서 Inverted Index이다. 키워드를 통해 문서를 찾아내는 방식이다. 데이터를 색인하는 과정에서 찾고자 하는 키워드를 기준으로 위치를 저장해두어 속도를 개선..
-
[클린코드] 의미 있는 이름📚 개발 도서/클린코드 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분위가..