전체 글 62

[AWS][DynamoDB] DynamoDB 설계, 키 디자인에 관하여

DynamoDB를 설계할 때 가장 중요한 것이 Key Design이라고 생각된다. 이와 관련된 자료를 찾아보던 중, 정말 만족스러운 Amazon Web Services Korea 유튜브 채널의 영상이 있어 추천한다. https://youtu.be/I7zcRxHbo98?si=C0K9hEcPKeLUZaHg DynamoDB에는 기존의 RDBMS와 다른 액세스 패턴과 키 규칙이 있기 때문에 이를 잘 이해하고 사용해야만 한다. 효율적으로 사용할 수 있는 테이블 설계에 대해 더욱 고민해야겠다. 정렬 키 설계 https://docs.aws.amazon.com/ko_kr/amazondynamodb/latest/developerguide/bp-sort-keys.html 정렬 키를 사용하여 데이터를 정리하는 모범 사례 -..

Web/AWS 2024.03.05

[WPF] UserControl 만들기

사용자 정의 컨트롤에 값을 넘기고, Child Control을 넘기는 방법을 기록한다. 결과 미리보기 위의 Group Box들과 같이 어떠한 비슷한 컨트롤을 여러 번 사용하게 되는 경우가 많다. 이 때 작성하게 되는 긴 코드를 줄이기 위해 Style을 ResourceDirectory에 정의하여 사용해도 같은 코드가 반복된다. 이를 개선하기 위해 중복되는 사항을 캡슐화할 수 있도록 사용자 정의 컨트롤을 만들어 사용해보겠다. Group Box에는 Title 텍스트와 내용으로 들어갈 Child Control만이 다르고 겉 껍데기는 같다. Title을 위한 String을 받고, 하늘색으로 칠해진 부분은 Child로 직접 지정할 수 있게 하면 되겠다. 사용자 정의 컨트롤 생성 Controls/GroupBox.xa..

Application/Windows 2024.02.23

[NodeJS] Node.js 동작 방식

Node.js 동작 방식 자바스크립트 엔진인 V8과 libuv의 조합으로 구성되어 있다. Node.js API에는 FileSystem, Crypto, HTTP 등 여러 API를 가지고 있다. 이 API들은 C++이나 C언어로 작성되어 있는 것도 있어 Javascript에서 처리하기 위해서는 Node.js Binding을 통해 처리한다. V8에서 자바스크립트 작업을 진행하고, 파일 시스템 같은 처리가 필요할 때 Node.js API를 호출한다. Example Node.js가 어떻게 작업을 처리하는지 다운로드를 예로 한 번 보자. 1. Javascript로 다운로드 요청을 보낸다. 2. Node.js의 http module api를 사용해야 한다. 3. Node.js Bidning을 통하여 libuv로 할 ..

Web 2024.02.16

유용한 Public REST API 모음 사이트

샘플 프로젝트를 구현할 때 간단히 사용할 REST API가 필요한 상황을 마주하는 경우가 있다. 이럴 때 참고하면 좋을 만한 무료 REST API를 모아놓은 사이트가 있어 공유한다!🤓 https://github.com/public-apis/public-apis GitHub - public-apis/public-apis: A collective list of free APIs A collective list of free APIs. Contribute to public-apis/public-apis development by creating an account on GitHub. github.com Animal, Book, Dictionaries 등 다양한 카테고리 별로 정리가 되어 있고, 간단한 소개와 ..

ETC 2024.02.13

[MFC] Dialog에 스크롤 막대 적용하는 방법

높이가 긴 다이얼로그를 특정 높이로 지정하고, 스크롤바를 사용하여 모든 내용을 볼 수 있도록 구현하고자 한다. Add Style on Dialog 리소스 뷰를 사용하여 내용이 긴 다이얼로그를 생성한 후 속성에서 모양/세로 스크롤 막대 를 True 하여 다이얼로그에 세로 스크롤 막대를 생성합니다. TestApp.rc 파일을 보면, 해당 다이얼로그의 STYLE으로 WS_VSCROLL가 추가되어 있는 것을 확인할 수 있습니다. 이렇게 세로 스크롤 막대를 True로 지정한다고 해서 곧바로 우리가 원하는 대로 스크롤바가 동작하지 않습니다.🥲 Add Method for Message 클래스 마법사 또는 속성 창에서 WM_VSCROLL 메시지에 대한 함수를 생성합니다. (함수 기본 이름: OnVScroll) void..

Application/Windows 2023.08.24

[GitLab] GitLab 서비스가 실행되지 않는 경우 해결 방법

문제 상황 GitLab 서버는 켜져 있는데, GitLab 서비스가 실행되지 않는 경우가 발생했습니다. 예상하건대, 사내 정전으로 인해 서버가 재부팅되면서 GitLab 서비스 실행에 오류가 있었던 것 같습니다. 해결 방법 위의 이미지와 같이, sudo su 하여 root 권한을 얻은 상태에서 1. GitLab status 확인 gitlab-ctl status 2. 명령어 실행 sudo /opt/gitlab/embedded/bin/runsvdir-start & 3. GitLab 재실행 gitlab-ctl restart 명령어들을 입력하여 재실행한 후 1번의 명령어로 다시 상태를 확인하면 정상 동작하는 것을 확인할 수 있습니다. 참고: https://otzslayer.github.io/git/2022/07/2..

ETC/Git 2023.08.07

Backtracking with Python

백트래킹은 문제 해결 기법으로, 제약 조건 만족 문제에서 해를 찾기 위한 전략이다. 고려할 수 있는 모든 경우의 수를 상태 공간 트리(State Space Tree)를 통해 표현하여 각 후보군을 DFS 방식으로 탐색한다. Promising: 해당 루트가 조건에 맞는지 검사하는 기법 Pruning: 조건에 맞지 않으면 제거하고 다른 루트로 바로 넘어가 탐색 시간 절약하는 기법(가지치기) N Queen 문제 가장 대표적인 백트래킹 문제 유형. NxN 체스판에 N개의 Queen을 서로 공격할 수 없도록 배치하는 문제 ...체스에서 퀸은 가장 강력한 말인데, 수직/수평/대각선으로 이동 및 공격 가능함. 이 체스판 문제를 앞서 말한 대로 상태 공간 트리로 표현하고, Promising 및 Pruning을 하려면 아..

ProblemSolving 2023.06.27

Prim's Algorithm with Python

Prim's Algorithm은 먼저 다루었던 크루스칼 알고리즘과 같은 대표적인 최소 신장 트리 알고리즘이다. 프림 알고리즘이 크루스칼 알고리즘보다 조금 더 복잡하다. 두 알고리즘 모두 탐욕 알고리즘을 기반으로 하는데, Kruskal's algorithm은 단순히 가중치를 기준으로 sorting하여 작은 것부터 선택하며 MST를 구하지만, Prim's algorithm은 특정 정점에서 시작하여, 이 정점에 연결된 가장 작은 가중치의 간선을 선택하며 MST를 구한다. 하나의 정점을 정하고, 이 정점에 연결되어 있는 간선들을 리스트에 담은 후, 이 리스트에서 weight가 가장 작은 간선을 선택하여 cycle이 이루어지지 않는지 확인하고 연결한다. 이 때 간선들을 담는 리스트의 자료형으로 최소힙을 사용하면 ..

ProblemSolving 2023.06.23

Kruskal's Algorithm with Python

지난 Python 강의 기록에서 작성했던 Kruskal's algorithm에 대해 더 작성해보고자 한다. 패스트캠퍼스 Python 코딩테스트 강의 4주차 패스트캠퍼스 Python 코딩테스트 강의 [개발자 취업 합격 패스 with 코딩테스트, 기술면접]를 수강하며 정리한 글입니다🤓 Content 이번에는 앞서 배운 내용들을 바탕으로 고급 정렬 알고리즘을 배 elisom.tistory.com Kruskal's algorithm은 대표적인 최소 신장 트리 알고리즘이다. 신장 트리, Spanning tree. : 그래프의 모든 노드가 연결되어 있으며 트리의 속성을 만족하는 그래프 1. 모든 노드를 포함해야 함 2. 모든 노드가 서로 연결 3. 트리의 속성을 만족 (사이클x) 당장 눈앞의 최소 비용을 선택하여 ..

ProblemSolving 2023.06.23

[Tistory] 코드블럭 들여쓰기 안될 때 해결 방법

'Tistory 코드 블럭 테마' 와 같은 키워드로 검색하면 highlightjs를 적용하는 방법을 알려주는 글들이 많을 것이다. 나 또한 이들을 참고하여 코드블럭에 테마와 라인넘버를 적용했었는데 아래와 같았다. (+CSS 수정도 필요함.) 문제 상황 원하는 테마와 라인넘버가 적용되어 아주 만족스러웠으나.. 들여쓰기가 안된다는 치명적인 문제가 있었다. 가독성이 아예 없는 상황..!😣 해결 방법 종종 다른 블로그에서도 들여쓰기가 안 되고 있는 모습이 보였고, 어떤 블로그에서는 이 이슈를 해결하기 위해 highlightjs-line-numbers 라이브러리 대신 linenumberV2를 사용했다는 글을 보았다. 그래서 라이브러리 교체를 하려던 찰나, 혹시 CSS 문제가 아닐까 싶어 개발자 도구를 켜(F12)..

ETC 2023.06.22