목록분류 전체보기 (364)
잡동사니
안녕하세요. yeTi입니다. 오늘은 Building web applications with Spring Boot and Kotlin을 참고하여 spring기반에서 코틀린을 사용하기 위한 기본 정보를 얻고자 합니다. 학습 목표는 Html 페이지 구성 부터 RestAPI, JPA, Properties에 이르기까지 웹 어플리케이션을 만들기 위한 기본 환경 및 통합 테스트, API 테스트, JPA 테스트에 이르기까지 개발함에 있어서 필수적인 테스트 환경에 대해서 익히는 것입니다. 샘플 코드 Spring guide 깃헙에서 확인할 수 있습니다. 계기 Kotlin에 대해 관심을 가지게 된 계기는 백엔드 개발자들 사이에서 코프링(Kotlin + Spring)이라는 용어가 생길정도로 코틀린에 대한 관심도가 증가하고 있..
안녕하세요. yeTi입니다. 오늘은 알고리즘 공부 중 최단경로(Shortest Path)에 대해 학습한 내용을 공유하려고 합니다. 강의 : 권오흠 교수님의 2015 봄학기 알고리즘 개요 가중치 그래프에서 경로상의 모든 엣지의 가중치의 합이 가장 작은 경로 (u, v)를 찾는 방법입니다. 이전 그래프 탐색 - BFS에서 그래프에서 BFS를 활용하면 최단 경로의 길이를 구할 수 있다는 내용이 있습니다. 현재 다루는 최단경로(Shortest Path)와 차이점은 그래프에서 BFS 탐색시 찾을 수 있는 최단 경로의 길이는 엣지의 갯수이고 최단경로(Shortest Path)는 가중치의 합이라는 것입니다. 최단경로문제는 다음과 같은 유형이 있습니다. Single-source: 하나의 출발노드에서 다른 모든 노드까지..
안녕하세요. yeTi입니다. 오늘은 알고리즘 공부 중 최소비용신장트리(Minimum Spanning Tree)에 대해 학습한 내용을 공유하려고 합니다. 강의 : 권오흠 교수님의 2015 봄학기 알고리즘 개요 최소비용신장트리는 무방향 가중치 그래프에서 모든 노드를 이었을 때 가중치가 가장 적은 엣지들의 부분집합을 찾는 방식입니다. 이 때, MST(Minimum Spanning Tree) 는 유일하지 않기 때문에 선별한 엣지들을 많은 MST들 중 일부인 부분집합 이라는 표현을 한다. 공학적으로는 계층적 구조의 연결을 트리(rooted tree)라고 인식하지만 수학적으로는 싸이클이 없는 연결된(connected) 무방향 그래프를 트리라고 합니다. 게다가 MST 문제에서 싸이클이라는 것은 중복 경로라는 의미로 ..
안녕하세요. yeTi입니다. 오늘은 알고리즘 공부 중 그래프(graph)에 대해 학습한 내용을 공유하려고 합니다. 강의 : 권오흠 교수님의 2015 봄학기 알고리즘 개요 그래프는 노드와 엣지, 두 집합으로 구성된 자료구조입니다. 그래프의 종류에는 무방향 그래프, 방향 그래프, 가중치 그래프가 있습니다. 그래프는 인접 행렬과 인접 리스트로 표현 가능합니다. 인접 행렬은 n*n 크기의 2차원 행렬로 표현하는 방식으로 저장 공간은 O(n^2)의 크기를 가지고, 인접한 모든 노드를 찾는 시간은 O(n), 엣지의 존재 여부를 찾는 시간은 O(1)의 특성을 가집니다. 인접 리스트는 노드 집합을 표현하는 1차원 배열과 각 노드마다 인접한 노드들을 연결 리스트로 표현한 방식입니다. 저장 공간은 O(n+m)의 크기를 가..
안녕하세요. yeTi입니다. 오늘은 요즘에 핫한 아바타: 물의 길을 본 후기를 공유하려고 합니다. 전작 저는 전작인 아바타 부터 몇 번을 다시 볼만큼 좋아했습니다. 아바타가 가지고 있는 디테일한 세계관이 외계 행성 다큐멘터리를 보는 것처럼 느껴져서 볼 때마다 신비롭게 느껴졌습니다. 외계 행성이라는 소재도 흥미롭고, 인류의 자원 개척이라는 부분도 공감이 되고, 외계 행성이 가지는 대기나 토양의 특성, 원주민, 원주민이 사용하는 언어, 식물, 동물, 그리고 자연이 거대한 데이터 센터라는 에이와라는 존재도 현 인류가 자연을 대하는 태도를 배워야하지 않을까 하는 생각조차 들게 만들었습니다. 이러한 디테일이 아바타가 단순 SF 영화가 아니라 외계 행성의 다큐멘터리라고 느껴졌던거 같습니다. 하이라이트로 제이크 설리..
안녕하세요. yeTi입니다. 오늘은 알고리즘 공부 중 해싱(hashing)에 대해 학습한 내용을 공유하려고 합니다. 강의 : 권오흠 교수님의 2015 봄학기 알고리즘 개요 해쉬 테이블(hash table)은 트리(tree)와 같이 dynamic set을 구현하는 효과적인 방법 중 하나입니다. 적절한 가정하에 Insert, Delete, Search 연산의 시간복잡도는 O(1)을 가지지만 최악의 경우에는 O(n)을 가집니다. Hash Table 해시 테이블은 일반적으로 일차원 배열을 활용하여 데이터를 관리합니다. 이 때, 배열의 인덱스가 특정 데이터의 키를 해시한 값을 활용하여 키를 해시하는 연산 시간만 주어지면 데이터에 바로 접근할 수 있는 특징을 가지고 있습니다. 하지만, 데이터의 크기가 해시 테이블의..
안녕하세요. yeTi입니다. 오늘은 2022년을 마무리하며 회고를 하려고 합니다. 돌아보며 개발자 커리어를 가져오면서 가장 명확한 목표를 가지고 구체적인 결과를 만들면서 보낸 한해가 아니었나 생각을 합니다. 더욱이 내면적으로 성숙할 수 있는 계기가 되었고, 협업적인 측면이나 기술적인 측면이나 서비스적인 측면 등등 많은 부분에서 검증해보고 피드백을 받으며 성장할 수 있었던 한해였다고 생각합니다. 고무적이었던 부분은 그 동안 목말라있던 초기 개발부터 서비스 오픈 그리고 운영(DevOps)에 이르기까지 개발자로써의 능력을 시험해볼 수 있었던 시간이었습니다. 안영회 대표님, 유영모님과 인연이 닿아 그 동안 고민하던 것에 대한 피드백을 받을 수 있어 너무 의미있는 한해였고 내면적으로나 개발자적으로 시야를 넓힐 수..
안녕하세요. yeTi입니다. 오늘은 알고리즘 공부를 해보면서 공부하는 것이 안하는 것보다 프로그래밍을 함에 있어서 도움이 된다고 느낀점을 공유해보고자 합니다. 코테를 위한 알고리즘? 흔히들 알고리즘 공부라 하면 코테(코딩 테스트)를 준비하기 위해서 한다고 인식합니다. 저도 그랬었고 주변 의견을 들어봐도 그렇고, 알고리즘 공부를 한다고 해서 실무에 어디다가 쓰느냐. 좋은 기업에 입사하기 위해, 코테를 통과하기 위해, 알고리즘을 공부한다는 의견이 대다수 입니다. 하지만 최근 제 경험은 개발을 위한 사고를 하는데 도움이 된다고 느꼈습니다. 사고력 훈련 이전 글에서도 알고리즘을 공부해야하는 이유 라는 제목으로 알고리즘 공부의 필요성에 대해 공유한적이 있는데요. 해당 글에서는 논리적인 생각의 코드로써 직관적인 표..
안녕하세요. yeTi입니다. 오늘은 알고리즘 공부 중 트리(tree)에 대해 학습한 내용을 공유하려고 합니다. 강의 : 권오흠 교수님의 2015 봄학기 알고리즘 트리 (Tree) 트리는 계층 구조를 표현하는 자료구조입니다. 트리에서 사용하는 용어는 다음과 같습니다. 노드 (node) 링크 (link) 루트 (root) 부모 (parent) 자식 (child) 형제 (sibling) 리프 (leaf) 조상 (ancestor) 자손 (descendant) 부트리 (subtree) 레벨 (level) 높이 (height) 이진트리 (Binary Tree) 이진트리는 자식 노드가 최대 2개인 트리를 말합니다. 이진트리의 종류에는 full binary tree 와 complete binary tree가 있습니다...
안녕하세요. yeTi입니다. 오늘은 비대면(재택/원격) 근무가 활발해 짐에 따라 업무의 진행을 원활하게 할 수 있는 협업에 대한 생각을 공유하고자 합니다. 개취인정 개취인정이란 용어는 안영회 대표님께서 사용하시는데요. 지금까지는 상대의 방식을 인정한다, 인정만 한다라는 국소적인 의미로 이해하고 있었습니다. Driven 하지만 근래에 TDD(Test Driven Development), DDD(Domain Driven Design)를 고민하고 시도해보면서 Driven 이라는 단어의 의미를 이해했다고 느낀 경험이 있습니다. Driven이라는 용어를 단어적으로 해석하면 주도하다입니다. 문장으로 확대하면 A Driven B, A가 주도하여 B에 영향을 미친다. 입니다. 이해하게 된 예시로 TDD, DDD라는 용..