디자인 패턴이란 소프트웨어 개발시 자주 나타나는 구조나 방식, 패턴을 구체적이고 체계적으로 나누어 정리한 것이다. 다음은 디자인 패턴을 잘 사용하면 해결 할 수 있는 내용들이다. 코드의 응집성 Up 어떠한 로직 부분을 변경하고자 할 때, 코드가 산재되어있어서 그 부분들을 일일이 변경시켜줘야 하지만 디자인 패턴을 이용한다면 최소한의 코드 변경으로 변경 할 수 있다. 코드의 결합성 Down 코드 한 부분을 변화시키면, 다른 부분까지 변화시켜야 하는 것이 아니고 각각 맡은 부분이 깔끔하게 분리되어 있어서 서로간에 쉽게 변경이 가능하고 대체 가능한 것을 뜻한다. 코드의 재활용성 up 한번 작성한 로직을 다시 작성하지 않도록 미리 정해놓은 패턴에 따라 구성해 놓는 것을 뜻한다. 코드의 효율성 Up 이미 다듬어진 ..
이번에 진행하는 프로젝트에서 영상 및 JSON 파일을 object storage에 저장하는 서비스 로직을 추가하게 되었다 설명에 앞서 Amazon의 S3가 아닌 Ncloud의 objectStorage를 선정한 이유는 크게 4가지다. 1. 국내서비스라 문서읽기가 매우편함. 2. 최근 Ncloud의 Server, DB 등등 사용해봐서 익숙함. 3. AWS 과금에 당한적이있음. 4. objectstorage 1주간 사용해봤는데 파일 크기가 얼마안되는지 아직까지 0원 청구됨. (매우쌈) Amazon의 S3랑 완벽하게 호환되고 국내서비스라 Docs를 읽을때 좀 더 쉽게 이해할 수 있었다 나는 spring boot 즉 java 언어를 사용하기 때문에 아래와 같은 Docs를 참고하여 사용하였음 https://guid..
https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net 이문제는 BFS를 이용해 l * l 맵 에서 처음가보는 장소가 있다면 직전거리(graph)에다 + 1을해가며 (visited)방문처리를 해주었다. 마지막으로 graph[e_y][e_x]를 해주면 목표지점의 거리가 나올것이다. from collections import deque import sys input = sys.stdin.readline dx = [2, 2, -2, -2, 1, -1, 1, ..
nohup sudo {node server.js} (백그라운드 실행) rm {test} (파일삭제) rm -r {home/} home디렉토리 삭제 ls (현재 디렉토리에 있는 파일 list 확인) ps -ef (pid 확인) kill {pid} (프로세스 죽이기) pwd - 현재 위치 요즘 라즈비안을 통해 웹서버 구동중인데 그냥 전원을 뽑을 시 micro sd카드에 손상이 가서 아래 명령어를 통해 종료 확인 후 전원을 해제 해야 한다네요~ sudo shutdown -h now - 즉시종료 (적색 LED만 남으면 종료된 것) sudo shutdown -r now - 리부팅 깃에 올려놓은 파일 가져올 때. 파일 가져오고 싶은 폴더에 이동 후 git init - 새로운 Git 저장소(repository)를 생..
BFS 함수를 2개만들었다. 1. 1년마다 녹는걸 구현하는 BFS 2. 그 후에 몇덩이로 나눠졌는지 확인하는 BFS를 구현했다. 까다로웠던 부분은 첫번째 BFS에서 바다인 부분은 방문처리를 하면 안된다는 부분이다. 왜냐면 빙산은 상하좌우 빙하의 개수에 의해 깎여나가는데 바다를 방문처리해서 들리지 않게 된다면 깎이는 부분이 적어지기 때문이다. from collections import deque n, m = map(int, input().split()) graph = [list(map(int, input().split())) for _ in range(n)] dx = [0, 0, -1, 1] dy = [-1, 1, 0, 0] time = 0 def bfs(a, b): global time visited =..
모든 행, 열을 완전탐색하여 1인곳을 찾아 DFS 혹은 BFS로 들어가면된다. BFS 좀 해메었지만 원리는 단순하다. 방문처리가 필요없이 방문한 곳들을 0으로 만들어 주고 cnt를 늘리는 방식으로 단지가 몇개인지 세면된다. from collections import deque n = int(input()) graph = [list(map(int, input())) for _ in range(n)] # 모든 인덱스를 확인하여 1이 있으면 bfs로 지난부분 0으로 만들기., 다 파고들면 다시 방문안한 1부터 dfs house = [] dx = [0, 0, -1, 1] dy = [-1, 1, 0, 0] def bfs(r, c): q = deque() q.append((r, c)) graph[r][c] = 0 ..