2024/11 28

데이터 중심 애플리케이션 설계 5장 정리

복제네트워크로 연결된 여러 장비에 데이터의 복사본을 유지한다는 의미이게 필요한 이유는 여러개가 있는데지연시간이 줄어듬(사용자와 가까운 곳에 데이터 유지)시스템 고가용성(하나 죽어도 다른게 잘 됨)읽기 처리량 늘림(여러곳에서 부하 분산)근데 데이터를 어떻게 똑같이 유지할 것인가그냥 저장만 하는거면 복제하면 된다.그러면 변경해야 한다면?단일리더, 다중리더, 리더없는 복제 3가지 알고리즘이 있다.거의 대부분이 이 3가지중 하나를 쓴다.복제는 많은 트레이드오프가 있다.동기식/비동기식 복제 중 어떤것을 써야할지잘못된 복제를 어떻게 처리할지리더와 팔로워DB복사본을 저장하는 각 노드를 복제서버(replica)라고 한다.이 복제 서버에 모든 데이터가 잘 있는지를 어떻게 보장할 수 있을까리더 기반 복제(능동/수동, 마스..

이론 정리 2024.11.22

IntelliJ plugin의 버전을 변경해 보자 - method tester (4)

https://hello-backend.tistory.com/335 IntelliJ plugin을 만들고 배포해 보자 - method tester (3)IntelliJ plugin을 만들고 배포해 보자 - method tester (3)(이 내용은 플러그인의 테스트와 배포에 관한 내용이다. 구현 부분은 이전 글을 참고하면 좋다.)만들었으니 이거를 테스트하고 배포해 보면 된hello-backend.tistory.com지금까지 IntelliJ 에서 Plugin을 만들고 이를 배포해 보았다.그런데 이게 변경이 필요할 때가 있다. 이 때에 플러그인에 어떻게 반영하는지 빠르게 알아보자. - build.gradle.kts파일을 보면 version =  어쩌고 이런게 있다.거기서 버전을 하나 올려준다.version ..

데이터 중심 애플리케이션 설계 4장 정리

4장 애플리케이션은 시간이 지남에 따라 변한다. 대부분의 경우 애플리케이션 기능을 변경하려면 저장하는 데이터도 변경해야 한다. 근데 보통 바로 적용이 안된다(서버/클라쪽에서 바로 적용이 힘들기 때문) 이를 위해 하위호환/상위호환성을 유지해야 한다. 여기서는 JSON, XML, 프로토콜 버퍼 등등.. 데이터 부호화를 위한 다양한 형식을 살펴본다.데이터 부호화 형식프로그램은 보통 (최소한) 두 가지 형태로 표현된 데이터를 사용해 동작한다.메모리에 객체, 구조체, 리스트, 해시 등등...으로 데이터가 유지되고, 이런 데이터 구조는 CPU에서 효율적으로 접근하고 조작할 수 있게 최적화된다.데이터를 파일에 쓰거나 네트워크를 통해 전송하려면 스스로를 포함한 일련의 바이트열(예를 들어 JSON)형태로 부호화..

이론 정리 2024.11.20

데이터 중심 애플리케이션 설계 3장 정리

대부분 애플리케이션은 하나의 데이터 모델을 다른 데이터 모델 위에 계층을 둬서 만듬그래서 데이터 저장과 질의를 위한 다양한 범용 데이터 모델을 살펴본다.관계형 모델과 문서 모델Relation각 관계는 순서 없는 tuple 모임근원은 비즈니스 데이터 처리(트랜잭션이나 일괄처리)NoSQLNot Only SQLRDB에서 지원하지 않는 특수 질의RDB보다 동적이고 표현력이 풍부한 데이터 모델 요구 등객체 관계형 불일치보통은 개발이 객체지향 프로그래밍으로 이루어짐임피던스 불일치에의 문제관계형 객체 사이의 전환 계층을 필요로 하는것ORM은 이러한 보일러플레이트 양을 줄여주지만 차이를 완벽히 숨길수는 없음예시이력서 같은걸 생각해보면 JSON표현으로 적합JSON을 쓰면 모든 정보가 한곳에 있어서 한번 가져오면 싹다 ..

백엔드 공부 2024.11.19

데이터 중심 애플리케이션 설계 2장 정리

정리이거는 다른사람도 꼭 알아야 한다.(아주 중요)데이터 베이스 질의는 명령형(절차 기술)이 아닌 선언(패턴 지정)형!디비 엔진의 상세 구현이 숨겨져있어서(선언형 질의의 장점) 질의를 변경하지 않고도 성능을 향상시킬 수 있는 이유.. 명령형이 쓰였을 때 안좋은 케이스: css 한줄의 코드를 DOM api 로 작성했을때 여러가지 (예상치 못한 삭제, 태그 변경 등) 상황에 따라 코드를 재 작성 해야 함선언형 방식은 순서보장이 되지 않는 등 디테일한 조작은 불가능하지만, 그래서 최적화가 가능한 것 —> sql 이 기능적으로 더 제한적이라는 사실은 .. 최적화할 수 있는 여지를 더 많이 준다는 의미이거는 알면 좋을 것 같다.(빨간거 다음으로 중요관계형 데이터 베이스와 문서 데이터베이스는 시간이 지남에 따라 점..

이론 정리 2024.11.18

자동 번역 크롬 확장 프로그램 추천 - Trancy

자동 번역 크롬 확장 프로그램 추천 - Trancy개발을 하다보면 의외로 영어를 볼 일이 많다.공식 문서도 영어로 되어있는 경우가 많고, open source를 찾아봐야 한다거나 stackoverflow 등을 볼 때에도 영어는 필수적이다.사실 글을 쓰거나 각잡고 읽으려고 하면 못읽을것도 없지만 그냥 빠르게 훑어보려 할 때나 나는 영어가 아니라 개발을 하고싶은건데 하면 Trancy 라는 확장 프로그램을 쓰면 진짜 좋다.받는건 간단하다. 확장 프로그램 가서 Trancy를 받으면 된다.https://chromewebstore.google.com/detail/ai-subtitles-immersive-tr/mjdbhokoopacimoekfgkcoogikbfgngb?hl=ko&utm_source=ext_sideba..

기타/일상 2024.11.17

[백준 1189번] 컴백홈 - java

문제 설명1. 첫째 줄에 맵의 크기랑 이동거리가 주어진다.2. .은 갈수 있는 곳, T는 장애물로 주어진다.3. 오른쪽 아래부터 시작해서 오른쪽 위까지 이동거리로 이동할 수 있는 경우의 수를 구한다.4. 한번 지나간 길로는 못간다.풀이 과정 1. DFS 문제이다. 2. 한번 지나갔거나, 장애물이 있는 곳은 true, 나머지는 false로 구한다. 3. 현재 위치에서 DFS할 때에 이동할 곳을 이동처리하고 그 DFS끝나면 다시 이동 가능하게 하면 된다. (가게 되면 방문한거니까) 코드/****************************************************************************** Online Java Compile..

알고리즘 공부 2024.11.16

데이터 중심 애플리케이션 설계 1장 정리

정리계산 중심 → 데이터 중심옛날처럼 계산을 막 알고리즘으로 쫘라라라락 하는거 아니고 이제는 애플리케이션은 데이터를 보여주는거에 집중하는 중이다.요즘은 하나의 도구로는 개발이 힘들다. 여러 task를 애플리케이션 단에서 묶어서 처리하는거신뢰성뭔가 잘못되더라도 지속적으로 올바르게 동작함결함 : 사양에서 벗어난 시스템의 한 구성 요소. 장애 : 사용자에게 필요한 서비스를 제공하지 못하고 서비스가 멈춤.하드웨어 결함카카오에서 불난거처럼 고장나는 경우가 많음이런거는 주로 이중화같은 방법으로 처리하는것 같음다중 시스템 구성하면 중단시간 없는 처리 가능소프트웨어 오류하드웨어는 하나 잘못되면 해결방법이 있는데 이거는 주로 상관관계가 얽혀있어서 좌르르르륵 망할수 있다.이거 문제가 뭔가 알수없게 특정 상황이 되면 나타난..

백엔드 공부 2024.11.15

IntelliJ plugin을 만들고 배포해 보자 - method tester (3)

IntelliJ plugin을 만들고 배포해 보자 - method tester (3)(이 내용은 플러그인의 테스트와 배포에 관한 내용이다. 구현 부분은 이전 글을 참고하면 좋다.)만들었으니 이거를 테스트하고 배포해 보면 된다.(사실 근데 테스트는 이미 많이 해야한다 나는 처음부터 된 것처럼 썼지만 엄청 테스트 많이함)Test 방법인텔리제이 오른쪽에 build.gradle을 보면요렇게 선택된 두개가 있다.먼저 runIde에 대해 설명하면저거 한번 수행해보면 intelliJ community 였나? 아무튼 인텔리제이 프로젝트 하나가 나오게 될 것이다.이게 테스트 환경이라고 생각하면 된다.저기서 원하는 프로젝트를 만들거나 열고, 이후에 테스트를 진행해 본다.좋은 점은 문제가 있거나 확인할 부분들이 플러그인 콘..

IntelliJ plugin을 만들어 보자 - method tester (2)

IntelliJ plugin을 만들고 배포해 보자 - method tester (2)(이 내용은 플러그인의 구성 요소와 내용에 관한 글이다. 어떤 로직을 어떻게 구현했는지와 대략적인 플러그인 플로우에 관한 것.)이전 글에서 어떤 것을 만들지에 대한 내용을 찾았다.그러면 이를 실제로 한번 만들어 볼 것이다.https://github.com/JetBrains/intellij-platform-plugin-template젯브레인에서는 플러그인을 만들기 위한 템플렛을 지원한다.플러그인을 만들기 위해서 여기서 fork해서 템플렛을 복제한다.그리고 하나씩 원하는 기능을 만들어 보면 된다.plugin.xml플러그인의 정보와 이후 기능을 부여할 action 동작에 관한 기본적인 정의를 하는 부분이라고 생각하면 된다. ..