전체 글 283

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..

[NestJS] JWT 인증과 Role 적용하기

JWT인증과 Role인증을 동시에 적용하는 로직을 만드는 연습을 해 보았다. JWT인증에 대해서 정리한 글은 아래의 링크에 나와 있다. https://tre2man.tistory.com/321 로그인 인증 부수기 최근들어 유저의 인증 로직 관련해서 보완해야 할 점이 보여서 수정 중, 이참에 로그인 인증 관련해서 한번 정리해 보고자 글을 작성한다. 배경 지식 먼저 인증과 인가에 대해서 구분을 하자. 인 tre2man.tistory.com JWT인증을 하기 전에 공식 문서를 잘 읽어 보자. NestJS는 공식문서가 잘 되어 있어서 꼼꼼하게 읽어 보는것이 좋다. https://docs.nestjs.com/security/authentication Documentation | NestJS - A progress..

template database "template1" does not exist 에러 해결하기

실수로 postgres의 기본 db를 지워버렸다. 그 이후에 새 db를 만들려고 하니 자꾸 아래와 같은 오류가 나왔다. template database "template1" does not exist 알고보니 postgresql은 db를 수동으로 새로 만들때 템플릿이 있어야 하는 것 같았다. 그래서 기존의 template0, template1 db를 다시 살려야 하는 상황에 왔다. 구글에 검색하니 템플릿 데이터베이스를 따로 만들수 있다고 한다. 아래 명령어를 치니 템플릿이 새로 생성되었다. create database template0 TEMPLATE postgres; update pg_database set datistemplate=true where datname='template0'; 확인하니 기본..

서버 인프라/DB 2022.11.21

웹사이트 접속 시에 무슨 일이 벌어지는가?

이미 다른 블로그에서 한번씩 정리한 것 같지만, 직접 정리하는 편이 낫다고 생각해서 따로 정리해본다. 용어정리 DNS : 도메인 네임 (시스템) 서버는 URL들의 이름과 IP주소를 저장하고 있는 DB이다. 아이피 주소와 URL을 매핑시켜준다. TCP/IP : 데이터가 웹을 이동하는 방법을 나타내는 통신 규격이다. HTTP : 클라이언트와 서버가 통신할 수 있게 하기 위한 언어를 정의하는 어플리케이션 규약. 이제 웹사이트 접속 시에 일어나는 일들을 차례대로 정리해 보자. 브라우저가 해당 도메인주소와 대응하는 IP주소를 확인 먼저 해야할 것은 나의 IP주소, DNS서버의 IP주소를 찾아야 한다. 위 작업을 하기 위해서는 LAN 밖으로 나가는 Gateway Router를 찾아야 한다. 이것의 IP를 얻기 위해..

개발 지식/웹 2022.11.19

대학생은 무슨 노트북을 사용해야 할까?

얼마전에 다나와에서 나온 설문조사를 보았다. 다나와에서 만 14세 이상을 대상으로 노트북 브랜드 선호도를 조사한 결과가 있었다. https://dpg.danawa.com/news/view?boardSeq=64&listSeq=5189216 10대 절반이 '맥북' 노트북 선호... 30대는 삼성전자 노트북 다나와가 오픈서베이에 의뢰해 만 14세 이상 300명(10대부터 50대 각 연령대 별 60명)을 대상으로 노트북 브랜드에 대한 선호도를 조사한 결과 연령대 별로 브랜드 선호 차이가 큰 것으로 나타났다. dpg.danawa.com 결과를 간단히 말하면, 10대 학생들의 맥북 선호도가 50% 정도로 상당히 높은 비율에 속해 있었다. 다나와 사이트 특성상 전자기기에 관심이 많은 사람들이 주로 사용한다는 점과 표..

잡다한 이야기 2022.11.19

슬랙 점심 추천기 만들기

직장에 있을 때 가장 고민을 많이 했던 시간은 역시 점심 먹을 때다. 매번 똑같은 회사생활에서 점심은 색다른 이벤트이며, 점심을 잘 먹였느냐에 따라서 오후 컨디션이 결정될 때가 있다. 여튼 점심을 먹기 위해 고민하는 시간이 길어질수록 점심시간은 짧아졌기에, 이런 현상을 어느정도 줄여줄 수 있는 점심 추천기를 만들어 보기로 했다. 목표 슬랙과 연동하여 점심시간 10분전에 추천을 받았으면 좋겠다. 식당 추가 및 삭제 가능 혹시 모르니 즉시 추천 가능 해당 조건들을 가지고 점심을 추천할 수 있는(사내 직원들만 이용 가능한) 간단한 서비스를 만들어 보기로 했다. 구상 먼저 비용이 적게 들고 빨리 제작할 수 있어야 한다. 이것은 예전에 만들었던 람다를 사용해서 만들어 보기로 했다. 하지만 람다를 사용하게 되면 함..