목록분류 전체보기 (319)
잡동사니
안녕하세요. 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라는 용..
안녕하세요. yeTi입니다. 오늘은 안영회 대표님의 기술은 쓰임새(use case)에 따라 고르고 조합한다 를 읽고 연관된 생각에 대해 기록으로 남깁니다. 인상 안영회 대표님의 기술은 쓰임새(use case)에 따라 고르고 조합한다 를 보면서 아래 문장이 인상 깊었습니다. 오픈소스를 일종의 협업이나 소프트웨어 개발 방식에 대한 변화로 보지 않고 여전히 솔루션(해결책)으로만 보면 기술을 제대로 활용할 수 없다. 기술은 사회적 맥락속에서의 쓰임새를 중심으로 살펴야 한다. 의미론적으로 굉장히 옳다고 생각하여 생각의 주제로 잡아봤지만 막상 의미를 파악하고자하니 그 뜻을 파악할 수가 없었습니다. 오픈소스 문장들을 다시 곱씹어 보니 아래와 같은 질문들이 나왔습니다. 오픈소스를 사용한다는 것은 해당 커뮤니티에 조인한..
안녕하세요. yeTi입니다. 오늘은 개발자로써 느낀 시야와 이어진 통찰 그리고 업(業) 에 대한 이야기를 해보고자 합니다. 계기 12월 초에 안영회 대표님을 뵙고 대화를 하던 중 대기업에 가고 싶은 이유에 대해 설명드렸던 시간이 있었습니다. 듣고 계시던 대표님께서는 다음과 같은 답변을 주셨습니다. 시야의 문제네요. 당시에 저는 증명에 대해 말씀드리고 있는데 시야를 언급하셔서 내가 설명을 잘못하고 있었나? 라는 생각을 하며 의도가 정확히 전달된거 같지 않아 아쉬운 마음이 들었습니다. 그런데.. 이상하게도 시야 라는 단어가 머리속에 멤돌며 정리를 해야할것만 같은 찜찜한 기분을 만들어내곤 했습니다. 대기업에 가고싶은 이유 스스로를 증명하고 싶기 때문입니다. 내가 알고 있는 지식이 어느 정도 트래픽을 버티는지 ..
안녕하세요. yeTi입니다. 오늘은 알고리즘 공부 중 정렬(sort)에 대해 학습한 내용을 공유하려고 합니다. 강의 : 권오흠 교수님의 2015 봄학기 알고리즘 개요 정렬은 프로그래밍에서 기본적이고 중요한 개념입니다. 저는 강의에서 공감을 했던 부분이 데이터를 탐색함에 있어서 정렬된 데이터를 유지하느냐 그렇지 않느냐에 따라 시간복잡도가 다를 수 있다는 것을 깨닫게 되었기 때문입니다. 조금 더 구체적으로 얘기해보면 무작위 순서를 가진 데이터에서도 순차적으로 데이터를 탐색하며 원하는 결과를 얻을 수도 있지만, 데이터가 정렬되어 있다면 탐색을 효율적으로 할 수 있기 때문입니다. 한 예시로 정렬되지 않은 배열 [5, 8, ..., 1]에서 7이 위치한 인덱스를 찾고 싶으면 첫 번째 원소부터 탐색을 해야하지만 정..
안녕하세요. yeTi입니다. 오늘은 알고리즘 강의의 시작인 recursion 에 대한 정보를 공유하고자 합니다. 의문 강의를 시작하면서 다음과 같은 의구심이 들었습니다. 알고리즘을 공부하는데 왜 recursion 부터 시작할까?? 문제를 푸는 방식에 대한 강의가 중요한거 아닌가?? 문제의 부분화 Recursion 은 프로그래밍에서는 재귀함수를 표현하는 의미로 쓰입니다. Recursion 은 문제를 해결하는 범위를 축소시키는 사고를 하기위한 방식이라는 느낌을 받았습니다. 예를 들어, 다음과 같은 문제가 주어진다면 주어진 n개의 수들에 총합을 구하라 직관적인 해결책은 절차적인 방식으로 반복문을 활용하여 n 회 반복하며 모든 수의 총합을 구하는 방식입니다. 하지만 recursion 을 활용하면 다음과 같이 사..
안녕하세요. yeTi입니다. 오늘은 지난 2022년 10월 15일에 판교 데이터센터의 화재를 시작으로 카카오의 서비스들이 장애가 발생한것에 대한 회고를 보고 느낀점을 공유해보려고 합니다. 사고 발생 2022년 10월 15일 오후 3시 19분경 SK C&C 판교 DC(Data Center) 화재 사로고 인해 카카오의 3.2만대의 서버가 작동 불능 상태가 되었다고 합니다. (3.2만대는 카카오 전체 서버의 1/3의 규모) 이후 10월 20일 오후 11시가 되어서야 카카오의 모든 서비스가 복구되었습니다. 자세한 경위는 다음과 같습니다. 10월 15일 15시 19분경 데이터 센터의 화재에 따른 카카오 서버 전체의 전원 공급 차단 1-1. UPS의 배터리에서 스파크가 일어나 화재 발생 1-2. 자동소화 설비 작동..