전체 글 63

[도서] 엔지니어를 위한 문장의 기술

IT 엔지니어이자, IT 교육 컨설턴트인 논술 과목 첨삭을 지도하는 저자가 말하는 이야기들을 담은 책이다.실무에서 바로 비교해보고 생각해보며 적용할 수 있는 현실과 밀접한 내용이어서 큰 도움이 될 것으로 기대가 된다.   `상대방을 이해시키려는 배려`가 없는 논술의 지적 사항어떤 의미입니까? 설명이 부족합니다.사내에서 사용하는 용어가 아닌 일반적인 용어로 기재해 주세요.장점을 명확하게 설명해 주세요.이유가 불명확하고 설득력이 없습니다.1개의 문장이 접속사로 너무 많이 연결되어 있으며 문장이 길어서 의미를 이해하기 어렵습니다.무엇을 말하고 싶은지 모르겠습니다.이유를 명확하게 기재해 주세요.알기 쉽게 설명해 주세요.주장하는 바가 추상적이고 설득력이 결여되어 있습니다.좀 더 구체적으로 설명해주세요.목적이 무엇..

ETC 2024.09.12

[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