분류 전체보기
-
RDB와 NoSQL📚 개발 도서/대규모 시스템 설계 기초 2023. 6. 8. 20:24
쉬운코드님의 유튜브 영상 보면서 정리한 내용입니다. Relation Database의 단점 유연한 확장성의 부족 새로운 column을 추가하고 싶으면 반드시 scheme를 변경해야 한다. scheme를 변경이 필요하여 컬럼을 추가한다면 해당 작업 자체가 굉장히 위험 부담이 될 수 있다. (왜냐하면 기존에 있는 대량 데이터에 대해서 새로운 column을 추가하기 때문에 대용량 write가 필요함) 복잡한 join은 read의 하락 중복 제거(for 데이터의 일관성)를 위해 정규화 진행한다. 이는 데이터 중복을 최소화한다. 하지만 전체 데이터를 읽어오고 싶을 때 join을 많이 해야하는 문제가 발생한다. → 그만큼 DB 서버에 CPU 많이 사용하고, 응답 시간이 늘어난다. 일반적으로 RDB는 scale-ou..
-
intellij로 디버깅 하기📖 개발 공부 2023. 6. 6. 19:40
intellij IDE로 개발을 하고 있는데, 개발을 하면서 실행 결과를 봐야할 때 디버깅을 많이 이용한다. 하지만 디버깅에 여러 방법이 있어서 많이 헷갈렸다 (나만!?) 확실히 각 기능들을 이해하고, 디버깅하기 위해 정리해보려고 한다. 요기 있는 디버깅 버튼들을 알아볼 것이다! (+ resume 버튼) resume 다음 break point로 이동한다. step over 현재 break 된 시점에서 다음 라인으로 이동한다. 그렇기 때문에 다음 break point로 이동하지 않고, break된 시점의 명령어 실행 후 다음 라인으로 이동된다. (이 기능을 몰라서 모든 라인에 break point를 걸었다면, step over을 사용하자.) step into break된 라인에서, 실행되고 있는 라인으로 ..
-
[Git] Git의 다양한 merge 방법 이해하기 (Merge / Squash & Merge / Rebase & Merge)📖 개발 공부/git 2023. 5. 28. 16:13
Merge 커밋 이력을 모두 남길 때 사용한다. 일반적으로 많이 사용된다. 두 개 이상의 브랜치를 병합하여 새로운 커밋을 만든다. 병합 커밋은 두 브랜치의 변경 내용을 모두 포함하며, 두 브랜치의 변경 내용이 충돌할 경우 사용자가 충돌을 해결해야 한다. merge를 사용하면 병합된 커밋 히스토리가 남기 때문에 브랜치 간의 관계가 명확하게 나타난다. 여기엔 두가지 옵션이 있다. fast-forward 옵션 대상 브랜치의 최신 커밋이 현재 브랜치의 커밋을 포함하고 있는 상태로 브랜치 포인터(각 브랜치의 최신 커밋을 가리키는 참조)를 이동시킨다. fast-forward 병합은 병합 대상 브랜치의 커밋 히스토리가 현재 브랜치의 커밋 히스토리에 뒤쳐져 있을 때 사용된다. 이 경우, 단순히 현재 브랜치를 대상 브랜..
-
MVC 패턴카테고리 없음 2023. 5. 28. 12:13
Model Model은 앱이 포함해야할 데이터가 무엇인지를 정의한다. Model은 Data와 애플리케이션이 무엇을 할 것인지를 정의하는 부분으로 내부 비즈니스 로직을 처리하기 위한 역할을 한다. 모델은 컨트롤러가 호출을 하면 DB와 연동하여 사용자의 입출력 데이터를 다루는 일과 같은 데이터와 연관된 비즈니스 로직을 처리하는 역할을 한다. View 사용자에게 보여주는 화면(UI) 사용자와 상호작용을 하며 컨트롤러로부터 받은 모델의 결과값을 사용자에게 화면으로 출력하는 일을 한다. MVC에서는 여러개의 View가 존재할 수 있다. Controller Controller는 Model과 View 사이를 이어주는 인터페이스 역할을 한다. Controller는 앱의 사용자로부터의 입력에 대한 응답으로 Model 또..
-
MVVM 패턴카테고리 없음 2023. 5. 21. 19:32
MVVM(Model-View-ViewModel) 패턴에서는 뷰와 뷰모델 사이의 양방향 데이터 바인딩을 발견할 수 있다. 뷰 모델 안에서 그리고 뷰에게 수정사항들을 자동적으로 이동시킨다. 뷰모델에서 변화를 주기 위해서, 뷰모델은 옵저버 패턴을 사용한다. View에서 사용자의 입력을 ViewModel로 전달 → ViewModel에서 Model로 데이터 요청 및 처리 → View는 ViewModel를 Provider나 Stream 등을 통하여 구독하거나 데이터 상태 관리를 통해 View를 업데이트 Model 데이터 소스는 원격 데이터베이스, 로컬 데이터베이스 또는 RESTful API와 같은 것이 될 수 있다. 데이터 소스에 액세스하는 것은 데이터 레포지토리(Data Repository)를 통해 이뤄진다. 사..
-
[Git] commit을 변경하는 git commands📖 개발 공부/git 2023. 5. 14. 22:32
git commit —amend git commit 커맨드에 —amend 옵션을 붙이면 직전에 남긴 커밋 메시지를 수정할 수 있다. 예를 들어 다음과 같이 오타를 포함한 커밋을 한다고 치자. git commit -m "feat: date_pickeㄱ 구현" 이를 —amend 옵션을 통해 수정할 수 있다. 다음과 같은 텍스트 에디터가 나오면, 커밋 메시지를 수정하면 된다. --amend 를 실행하면 commit id가 완전히 변하게 된다. git cherry-pick 다음 명령어는 다른 브랜치에 있는 커밋을 선택적으로 현재 브랜치에 적용시킬 때 사용하는 커맨드이다. 현재 branch에 붙는 commit은 새로운 commit id가 부여된다. -n flag를 추가하면 add만 수행하고 commit은 하지 않..
-
[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(); } → 이 함수는 이야기처럼 술술 읽혀진다. 블록과 들여쓰기 ..