전체 288

2022년 연말 개발 회고록

2022년 회고 이전 회고를 쓴지 벌써 1년이 지났다. 개발자로 들어선지 1년이 넘어가고 이것저것 많이 쓰게 당했던 기억들이 있다. 올해 무엇을 했는지 생각해보며 셀프처형을 해보자. 실무 경험의 장벽 스타트업에서 계속 백앤드 개발자로 일하는 동안 다양한 문제를 경험했고, 이를 해결하는 것을 계속 반복했다. 어차피 일을 하게 되는것은 문제를 계속 해결하는 것의 반복이겠지만, 개발자라는 직업 특성상 조금 더 심했던 것 같다. 우당탕탕 스타트업 이라는 말이 딱인 것 같다. 여튼 문제를 해결하기까지는 힘들었으나 문제를 해결하고 나니, 본인과 팀의 지식으로 남게 되어 결과적으로는 좋게 되었다. 아쉬운 것은 너무 맨땅에 헤딩만 한 것 같아서, 이번에도 역시 돌아 간다는 생각이 많이 들었다. 우매함의 봉우리 "더닝 ..

잡다한 이야기 2022.12.31

Programmers 합승 택시 요금

https://school.programmers.co.kr/learn/courses/30/lessons/72413 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 플로이드-와샬 알고리즘을 사용하여 풀이가 가능하다. 플로이드-와샬 임의의 양의 가중치가 있는 graph의 노드 s에서 e까지 가는 길에 m이라는 경유지가 있다고 할 때, 해당 경로의 최단거리를 구하는 알고리즘이다. 다익스트라 알고리즘은 노드 s에서 e까지 가는 길의 최소값만 구하는 알고리즘이다. 다익스트라는 모든 경로를 하나씩 확인하면서 최소값에 대해서 계속 탐색하는 알고리즘이라면, 플로이드-와샬..

Bandit Level 5 해설

❗️모든 문제는 Mac 기준으로 풀이합니다❗️ Bandit Level 5 문제를 풀어 보자. 문제를 요약해 보자. 문제 사람이 읽을 수 있는 유일한 파일에 있다! 해설 인코딩 형식을 확인한다. 사람이 읽을 수 있는 파일을 아스키 코드라고 가정하고 아스키 코드 형식의 파일을 찾는다. 파일을 찾아 보니 한 개의 파일만 아스키 코드로 인코딩 되어 있었다. 정답 file ./-file* cat ./-file07 참고자료 https://linux.die.net/man/1/file file(1): determine file type - Linux man page file(1) - Linux man page Name file - determine file type Synopsis file [-bchikLNnprsvz..

Bandit Level 3 해설

❗️모든 문제는 Mac 기준으로 풀이합니다❗️ Bandit Level 3 문제를 풀어 보자. 문제를 요약해 보자. 문제 파일 이름 사이에 공백이 있는 파일에 암호가 있다. 해설 큰따옴표로 묶어준다. 정답 cat "spaces in this filename" 참고자료 https://appuals.com/how-to-handle-passing-filenames-with-spaces-in-bash/ How to Handle Passing Filenames with Spaces in Bash Linux has a default shell Bash (aka Bourne again shell) to execute commands for the system. Most programmers prefer bash ove..

Bandit Level 2 해설

❗️모든 문제는 Mac 기준으로 풀이합니다❗️ Bandit Level 2 문제를 풀어 보자. 문제를 요약해 보자. 문제 파일 이름은 "-" 이다. 해당 파일안에 암호가 있다. 해설 대시는 기본 파일 입출력에서 dev/stdin 또는 dev/stdout으로 인식할 수도 있다. 해당 파일을 열기 위해서는 전체 위치까지 지정해 주어야 한다. 정답 cat ./- # 또는 cat < - 참고자료 https://stackoverflow.com/questions/42187323/how-to-open-a-dashed-filename-using-terminal How to open a "-" dashed filename using terminal? I tried gedit, nano, vi, leafpad and oth..

Bandit Level 0 해설

❗️모든 문제는 Mac 기준으로 풀이합니다❗️ Bandit Level 0 문제를 풀어 보자. 문제를 요약해 보자. 문제 해당 호스트에 ssh 로그인 하세요. 포트는 2200번 입니다. 해설 -p 옵션을 사용하면 포트를 지정할 수 있다. 정답 ssh bandit0@bandit.labs.overthewire.org -p 2220 참고자료 https://linux.die.net/man/1/ssh ssh(1): OpenSSH SSH client - Linux man page ssh(1) - Linux man page Name ssh - OpenSSH SSH client (remote login program) Synopsis ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address..

LeetCode 790. Domino and Tromino Tiling

https://leetcode.com/problems/domino-and-tromino-tiling/ Domino and Tromino Tiling - LeetCode Domino and Tromino Tiling - You have two types of tiles: a 2 x 1 domino shape and a tromino shape. You may rotate these shapes. [https://assets.leetcode.com/uploads/2021/07/15/lc-domino.jpg] Given an integer n, return the number of ways to tile an 2 x n bo leetcode.com 무슨 문제인지 보아하니, DP를 사용하는 문제 같다. 백준의 ..

Active Record , Data Mapper 패턴에 대하여

공부했던 것들에 대해서 계속 복습 중이다. 여기서는 서버 APP에서 DB의 데이터에 엑세스하는 접근 방식에 대해서 설명하고 있다. 주로 2가지의 패턴이 보이게 되는데, 이에 대한 차이점을 정리해 볼려고 한다. Active Record Pattern 모델 내에서 모든 쿼리(접근자) 메서드를 정의하고 모델 메서드를 통해서 객체의 CRUD를 한다. 이렇게 작성하게 되면 개발이 빨라진다. 하지만 DB와 애플리케이션 로직의 결합으로 인해서 단위 테스트를 하기가 어려워지고, 단일 책임 원칙에 위배된다는 문제도 생긴다. 단위 테스트의 경우에는 테스트를 위한 새로운 계층의 생성으로 해결이 가능할 수도 있으나, 단일 책임 원칙에 위배되는 점은 해결하기 힘들어 보인다. 아래의 예시를 보면 User라는 엔티티에 직접 fin..