분류 전체보기

    뜨겁게 불태웠던 초보 개발자의 2021년 회고

    개발 블로그를 시작하게 된 내용과, 학생의 신분을 벗어나 첫 직장인이 되어 바쁘게 살아왔던 2021년 한해를 회고하려 합니다. 개발 블로그 시작 ✨ 개발 블로그를 시작한 지는 2020년 9월 즈음입니다. 처음 블로그를 시작하게 된 이유는 명확했습니다. 항상 공부하고 나서 1주일만 지나면 모든 걸 하얗게 잊어버리는 나 자신을 보면서 "아, 어딘가에 정리하면 좋을 것 같은데.." 에서 시작되었습니다. 처음에는 단순히 나 혼자만의 정리 노트를 작성하는 느낌으로 게시물을 올렸습니다. 그렇게, 매일 공부한 것들을 정리하고 회고를 하다 보니 게시글은 쌓여만 갔는데 내용의 질은 그렇게 좋지 못하였습니다. 공부하면서 많은 블로그를 통해 정보를 얻었던 것처럼 저 역시도 양질의 내용을 사람들에게 공유하는 것을 늘 꿈꿔왔습..

    [프로그래머스]정수 삼각형 - DP

    https://programmers.co.kr/learn/courses/30/lessons/43105 코딩테스트 연습 - 정수 삼각형 [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30 programmers.co.kr Top Down 방법 def solution(triangle): height = len(triangle) # Top-down 방법으로 풀이 for i in range(1, height): for j in range(i+1): print(i, j) # 가장 왼쪽의 경우 왼쪽수를 모두 더하면서 내려감 if j == 0: triangle[i][j] += triangle[i-1][j] # 가장 오른쪽의 경우 오른쪽수를 모두 더하면서 내려감 el..

    [프로그래머스]N으로 표현 - DP

    https://programmers.co.kr/learn/courses/30/lessons/42895 코딩테스트 연습 - N으로 표현 programmers.co.kr def solution(N, number): # N과 number가 같은 경우라면 1을 반환한다. if N == number: return 1 # N은 최대 8번까지 이용할 수 있으므로, 8개의 set(집합)을 가진 리스트를 만든다. dp = [set() for _ in range(8)] # N을 N번 나열하는 것에 대한 경우를 미리 초기화해서 넣어준다. # 마지막에 추가하지 않는 이유는 해당 수를 사용해서도 사칙연산이 가능하기 때문이다. # [{5}, {55}, {555}, ...] for index, case in enumerate(dp..

    [Storage]Cookie vs Local Storage vs Session Storage 차이점

    웹 개발을 하다보면 자연스레 접하게 되는 Cookie, Local Storage, Session Storage의 차이점에 대해서 포스팅해보려고 합니다. 각각 다르다는 것은 알겠지만, 무엇이 어떻게 다를까요? Cookie 란? 쿠키란 인터넷 사용자가 웹 사이트를 방문할 경우 해당 웹 사이트의 서버를 통해 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일입니다. 주로 팝업창과 같은 경우에 이용될 수 있습니다. Cookie 의 특징 웹 사이트에서 쿠키가 설정되면 이후에 일어나는 모든 웹 요청에 쿠키 정보를 포함시켜 웹 사이트의 서버로 전송합니다. 하나의 사이트에서 저장할 수 있는 최대 쿠키 수는 20개이고, 총 크기는 4KB로 제한되어 있습니다. 쿠키는 만료일자를 지정할 수 있어, 지정된 날짜에 자동으로 제거됩..

    [WAS]WAS 와 Web Server의 차이점

    WAS 란? Web Application Server로, 쉽게 말하자면 WSGI + Application Server의 조합을 의미합니다. 클라이언트로 동적인 컨텐츠를 전달해주는 역할을 수행합니다. (주로 데이터베이스 서버와 같이 수행됩니다) 위의 예시와 같은 프로덕션 환경일 경우, Gunicorn + Django의 조합이 WAS가 됩니다. Web Server 란? Web Server는 클라이언트가 요청을 하면 웹 페이지를 클라이언트로 전달하는 역할을 수행합니다. 클라이언트로 정적인 컨텐츠를 전달해주는 역할을 수행합니다. (Static(CSS, JS, Image)파일을 포함한 HTML 문서) 동적인 컨텐츠에 대한 요청이 들어올 경우 WAS에게 요청합니다. (NGINX -> WSGI -> Django ->..

    [SoC]관심사 분리란?

    관심사 분리란? (Separation of concerns) 컴퓨터 프로그램을 구별된 부분으로 분리시키는 디자인 원칙으로, 각 부문은 개개의 관심사를 해결한다 - 위키피디아 https://ko.wikipedia.org/wiki/%EA%B4%80%EC%8B%AC%EC%82%AC_%EB%B6%84%EB%A6%AC 관심사 분리 - 위키백과, 우리 모두의 백과사전 컴퓨터 과학에서 관심사 분리(separation of concerns, SoC)는 컴퓨터 프로그램을 구별된 부분으로 분리시키는 디자인 원칙으로, 각 부문은 개개의 관심사를 해결한다. 관심사란 컴퓨터 프로그램 코드 ko.wikipedia.org 현업에서 개발을 하다보면 처음에는 단순한 기능에 불과했던 것들이 요구사항과 기능들이 추가됨에 따라서 점점 복잡..

    [프로그래머스]여행경로 - DFS/BFS

    https://programmers.co.kr/learn/courses/30/lessons/43164# 코딩테스트 연습 - 여행경로 [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] programmers.co.kr DFS 알고리즘 이용 from collections import defaultdict def solution(tickets): # 특정 티켓의 인접 리스트를 구하는 함수 # 즉, 도착지가 여러개인 경우를 1가지로 모아줌 # defaultdict(, {'ICN': ['SFO', 'ATL'], 'SFO': ['ATL'], 'ATL..

    [프로그래머스]단어 변환 - DFS/BFS

    https://programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr BFS 알고리즘 이용 from collections import deque def solution(begin, target, words): queue = deque() length = len(words) word_length = len(begin) # 단어를 변환할 수 있는지 여부를 체크하는 함수 def can_chan..

    [테스트]테스트 커버리지 0%에서 98%까지의 경험기 2

    테스트 코드는 실제로 가치가 있나요? 테스트 코드의 장점 테스트 코드를 작성하면서 실제로 느낀 장점들은 정말 무수히 많습니다. 그 중 대표적인 몇가지에 대해 이야기해보도록 하겠습니다. 클린 아키텍처 먼저, 테스트 코드를 작성하면 클린한 아키텍처를 지향하게 됩니다. 테스트 코드 작성과 함께 기능을 개발해나가다보니 문득 이런 생각이 들었습니다. "내가 지금 작성하는 코드는 의존도가 너무 높아 뭔가 테스트가 어려울 것 같은데 ?" 평소대로라면 저는 기존에 프로젝트 내에서 사용되고 있는 방법, 스타일을 그대로 사용하여 개발을 하였습니다. 또한, 이미 잘 작동하는 부분일 경우에는 더더욱 코드를 유심히 살펴볼 일이 없었습니다. 하지만 버그 픽스와 같이 소스를 수정하는 경우는 필연적이기 마련인데, 항상 문제가 되는 ..

    [Python]The Zen of Python - 파이써닉한 코드

    파이썬에서의 디자인 원칙을 잘 나타내는 The Zen of Python이라는 것이 존재한다. 여기에 존재하는 원칙들을 바탕으로 자신이 작성한 코드가 파이써닉한 코드인지 아닌지에 대해서도 생각해볼 수 있을 것이다. https://www.python.org/dev/peps/pep-0020/ PEP 20 -- The Zen of Python The official home of the Python Programming Language www.python.org 파이썬 shell에서 import this를 입력하면 The Zen of Python 이스터에그를 확인할 수 있다. >>> import this Beautiful is better than ugly. 아름다운 것이 추한 것보다 낫다. Explicit i..