본문 바로가기

분류 전체보기

(178)
[DesignPattern] Agile Development * 이 글은 Agile Software Development, Principles, Patterns, and Practices - Robert Martin 책 내용을 번역 및 요약하여 작성하였습니다. The Agile Alliance 소프트웨어 개발 프로젝트에서 명확한 지침이나 효과적인 접근 방식의 부재로 인해 예측 불가능성, 반복된 오류 및 낭비가 발생합니다. 일정 지연, 예산 증가 및 저품질로 인해 클라이언트는 실망하고, 개발자는 더 많은 노력을 기울일수록 점점 나쁜 소프트웨어를 생산하게 됩니다. 소프트웨어 개발 프로젝트는 몇 가지 제한사항과 결과물만으로는 완벽하다고 볼 수 없습니다. 오류가 계속 발생하면 그 오류를 진단하고 앞으로의 오류를 방지하기 위해 더 많은 제한사항과 결과물을 도입합니다. 많은..
[BFS] 프로그래머스 level 2 게임 맵 최단거리 python 풀이 https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr BFS란? BFS (Breadth-First Search, 너비 우선 탐색)는 그래프나 트리와 같은 자료 구조에서 사용되는 탐색 알고리즘 BFS는 큐를 사용하기 때문에 먼저 발견한 노드를 먼저 탐색하고, 더 멀리 있는 노드는 나중에 탐색 너비를 우선으로 시작 노드에서 가까운 노드부터 발견하고 탐색하기 때문에 최단 경로를 찾는 데 유용하며, 그래프의 연결 요소를 찾는 데도 적합 문제 접근 최단 거리를..
[Tip] mac에서 마우스를 트랙패드 처럼 사용하기! Mac Mouse Fix 이 글에서 소개해 드릴 내용은 Mac Mouse Fix 라는 Mac에서 사용 가능한 유틸리티 소프트웨어 입니다. 이 글은 Mac Mouse Fix 2.0 버전 기준으로 작성되었습니다. 1. Mac Mouse Fix? 트랙패드에서 가능했던 스페이스간 이동, 미션 컨트롤 실행, 데스크탑 보기, 퀵 룩 실행 등을 마우스로 할 수 있게 해주는 유틸리티 부드럽고 Responsive한 스크롤 지원 Objective-C 오픈소스(https://github.com/noah-nuebling/mac-mouse-fix) 예를 들어, 다음과 같이 동작합니다. (마우스로 조작한 것 입니다!) 2. 설치 방법 https://mousefix.org/ Mac Mouse Fix - A simple way to make your mou..
인스타그램이 오직 3명의 엔지니어로 1400만 사용자를 확보한 방법 원문 https://engineercodex.substack.com/p/how-instagram-scaled-to-14-million How Instagram scaled to 14 million users with only 3 engineers Instagram's guiding principles and tech stack explained simply engineercodex.substack.com 2010/10 부터 2011/11 까지 약 1년간 0명에서 1400만명 사용자에 도달. 엔지니어는 단 3명 3가지 원칙을 따랐음 간단하게 유지할 것 (Keep things very simple.) 바퀴를 재발명하지 말 것 (Don’t re-invent the wheel.) 가능하면 입증된 견고한 기술을 ..
[Heap] 프로그래머스 level 2 더 맵게 java 풀이 https://school.programmers.co.kr/learn/courses/30/lessons/42626 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Heap 이란? 자료구조 중 하나로, 일반적으로 우선순위 큐(Priority Queue)를 구현하기 위해 사용되는 이진 트리 구조. 힙은 일반적으로 '최소 힙(Min Heap)' 또는 '최대 힙(Max Heap)' 두 가지 종류로 나뉨 최소 힙(Min Heap)에서는 부모 노드의 값이 항상 자식 노드의 값보다 작거나 같다. 최대 힙(Max Heap)에서는 부모 노드의 값이 항상 자식 노드의 값보다..
[정렬] 프로그래머스 level 2 가장 큰 수 python, java 풀이 https://school.programmers.co.kr/learn/courses/30/lessons/42746 처음 떠올린 생각은.. 1. 순열을 써서 가능한 모든 문자열 조합을 나열하고 2. 그걸 싹다 int로 바꿔서 sort 시켜주기 3. 다시 문자열로 바꾸기 아무리 봐도 비효율적인 것 같아서 고민해보다가 구글에 찾아봤다. 해결 흐름 1. int 배열을 모두 string으로 변환 2. 문자열에 sort를 한다. 이때 문자열에 sort를 적용하면 사전식 배열을 하게 되는데, 이는 각 문자의 ASCII 코드 값에 따라 정렬하는 방식을 의미한다. 즉, 문자열의 첫 번째 문자부터 비교하며 정렬하고, 첫 번째 문자가 동일한 경우 두 번째 문자를 비교하고, 두 번째 문자도 동일한 경우 세 번째 문자를 비교하..
[Java] Garbage Collection Garbage Collection 모든 객체는 메모리와 같은 시스템 리소스를 사용합니다. 더 이상 필요하지 않은 경우 리소스를 시스템에 반환할 수 있는 체계적인 방법이 필요하며, 그렇지 않으면 "리소스 누수(resource leaks)"가 발생할 수 있습니다. JVM(Java Virtual Machine)은 더 이상 사용되지 않는 객체가 차지한 메모리를 회수하기 위해 자동 가비지 컬렉션을 수행합니다. Java 객체는 프로그램에 할당된 메모리 섹션인 '힙(Heap)'에 생성됩니다. 객체가 더 이상 필요하지 않을 때, 가비지 컬렉터는 이러한 사용되지 않는 객체를 찾아 추적하고 메모리를 확보하기 위해 삭제합니다. 가비지 컬렉션 없이는 힙이 결국 메모리 부족으로 인해 'OutOfMemoryError' 런타임 오..
무엇이 개발자를 생산적으로 만드는가 무엇이 개발자를 생산적이게 만드는가 많은 요소가 개발자 생산성에 영향을 미침 일부는 명확하고 측정하기 쉽지만, 다른 것들은 측정하기 어려워서 놓치는 경향이 있음 뭘 만들어야 하는지 알기(Knowing what to build) 잘못된 것을 빨리 만드는 것은 전혀 생산적이지 않음 고객이 뭘 요구하는지를 알고, 다른 팀들이 수용가능한 것이 무엇인지 알고(DB 테이블에 몇개의 인덱스가 가능한가, 법적으로 허용되지 않는 정보를 공유가능한가?), 이전에 시도했지만 효과가 없었던 것이 무엇인지 알아야함 더 적은 일을 하기 일을 빨리 완료 하는 것은 좋지만, 아예 "하지 않아"도 되는 것이 더 좋음 회사의 프로세스는 생산성을 떨어뜨리는 "바쁜 업무"를 추가할 수 있음 가끔은 훨씬 적은 작업으로 동일한 가치를 제공하도..