목록분류 전체보기 (14)
seonggoc
델타 탐색델타 탐색은 인접한 배열을 탐색하기 위해 사용된다.dx,dy 배열을 만들고, 현재 좌표를 돌 때 dx, dy를 순회 (인접 배열 순회)하면 된다.#include using namespace std;int dx[4] = {-1, 1, 0, 0}; // 위, 아래, 왼쪽, 오른쪽int dy[4] = {0, 0, -1, 1};int main() { int x = 2, y = 2; // 현재 위치 cout (" 프로그래머스 안전지대에서 8방향으로 탐색할 때 사용했다.#include #include #include using namespace std;// 상 하 좌 우 좌상 우상 좌하 우하int dx[8] = {0, 0, -1, 1, -1, 1, -1, 1};int dy[8] = {1, -1..

웹 MVC 개발하는 부분이다. Controller가 정해진 API를 통해 홈페이지를 반환하거나, 정적 페이지를 반환하는 것이다.정적 컨텐츠@Controllerpublic class HomeController { @GetMapping("/") public String home() { return "home"; }}controller/HomeController 부분에 위에 코드를 넣고 Hello Spring 회원 기능 회원 가입 회원 목록 template/home.html에 위와 같이 코드를 넣으면 된다.그러면 회원 가입과 목록 하이퍼링크가 있는데, 하이퍼 링크로 가면 Whitelabel..

기술적인 부분은 영어 표현이 더 많이 쓰이므로 스프링과 연관된 기술 부분은 영어로 표기를 진행한다.앞서 만든 Spring 예제에서 Controller가 Service를 통해 회원가입과 조회 기능을 쓸 수 있어야한다.실행하면 Controller가 MemberService를 통해 가져와야하는데 Spring Contatiner에는 MemberService가 없어 등록을 해줘야한다.Spring Bean은 등록하는 과정이라고 볼 수 있다.기능을 사용하기 위해서는 2가지 방법이 있다.Component Scan과 Automatic Dependency InjectionJava 코드로 직접 Spring Bean 등록Component Scan과 Automatic Dependency InjectionSpring Bean :..

강의에서 회원 관리 예제 프로젝트를 만들기를 진행한다.예제 프로젝트는 회원 관리 프로젝트로 비즈니스 요구사항을 정리하고 진행한다.1. 비즈니스 요구사항웹 어플리케이션 계층 구조컨트롤러 : MVC 컨트롤러와 API 만드는 컨트롤러 역할서비스: 핵심 비즈니스 로직이 들어가 있음 (회원 가입 중복이나 비즈니스에서 설정한 로직)도메인 : DB에서 관리되는 비즈니스 도메인 객체레파지토리 : 비즈니스 도메인 객체를 가지고 동작하는 객체클래스 의존관계비즈니스 요구 사항에서 회원 ID, 회원 이름을 사용하고, 회원가입, 조회 기능을 요구한다.회원 비즈니스 로직에 MemberService가 존재하고, MemberRepository는 Interface로 설계한다.DB를 정하지않아 단순하게 메모리에 저장하고 나중에 DB가 ..

Spring은 3가지 방식으로 응답을 한다.정적 컨텐츠MVC와 템플릿 엔진API위 3가지 방식으로 응답을 하는데, 이전 Django 프로젝트를 보면 API, MVC, 정적 컨텐츠 순으로 많이 활용할 것 같다.웹 개발 기초1. 정적 컨텐츠정적 컨텐츠는 src/main/resources/static 폴더에서 그냥 정적으로 파일만 전달하는 역할을 한다.Webserv 프로젝트를 했을 때 C++로 Nginx를 구현했었는데... 그게 여기서 도움이 되는 것 같다.TMI를 하자면 그때 기억나는 게 모든 파일을 string으로 보냈었는데 그림과 같은 파일에 수많은 0이 있다 보니 문자열 끝 NULL로 받아들여서 고민하다가 vector로 변경했던 기억이 있다.아무튼 정적 컨텐츠는 서버가 가지고 있는 파일을 있는 그대로 ..

Spring이라는 기술 자체가 오래되어 양이 너무 방대하기도 하고 현재 진행 중인 프로젝트가 없기 때문에 강의를 통해 스프링에 대해 전반적으로 알아가고자 강의를 듣게 되었다.Spring도 최대한 큰 흐름에 대해 이해하고 이후 자주 쓰는 라이브러리, 이후 세세한 것들에 대해 공부하고자 한다.프로젝트 환경 설정기본적으로 brew를 통해 openjdk와 IntelliJ를 설치했다. (IntelliJ는 선택사항)# brew에서 openjdk 검색brew search openjdk# brew에서 원하는 버전 설치brew install openjdkbrew install IntelliJSpring boot Starter직접 구현하는 방식은 이전에 쓴 튜토리얼을 참고하면 된다.하지만 강의에선 Spring Boot S..

기존까지 나왔던 Docker의 방식만을 사용하면 문제점이 하나 있다.실행 중에 문제가 생겨서 다시 켜게 되면 이전까지 저장됐던 데이터가 모두 롤백된다는 것이다.그 말은 DB로 사용하던 컨테이너를 재시작하는 순간 저장된 모든 데이터가 삭제되어 복구할 수 없다는 것이다.이때 활용할 수 있는 게 Volume이다.Docker Volume이란?Docker 컨테이너의 데이터를 영속적으로 저장하기 위한 방법그냥 내 컴퓨터에 있는 저장공간과 컨테이너의 저장 공간을 공유해서 사용하는 것이다.# Volume 사용 방법docker run -v [호스트의 디렉토리 절대경로]:[컨테이너의 디렉토리 절대경로] [이미지명]:[태그명]호스트의 절대 경로와 컨테이너 절대 경로를 일치시키는 작업이다.‼️ 이때 주의할 점호스트의 디렉토리..
Docker를 사용할 때, 주로 사용하는 명령어는 알아두는 것이 좋다.이미지 관련 CLI1. 이미지 다운로드이미지를 받는 명령어이고, 가장 기본적인 명령어# 이미지 다운로드 명령어 (태그명을 입력하지 않으면 가장 최신버전을 다운받는다)docker pull 이미지명:태그명2. 이미지 조회 / 삭제이미지를 받았으면 local에 있는 이미지를 확인하고, 삭제하는 명령어# local에 있는 이미지 조회docker image ls# 이미지 삭제 (ID는 전부 입력하지 않아도 됨)# rm -f 옵션시 강제 삭제docker image rm [이미지명 또는 이미지ID]# 컨테이너에서 사용하고 있지 않은 이미지만 전체 삭제# docker images -q를 통해 이미지를 가져오고, 모두 삭제$ docker image r..

Docker를 사용해 본 적 있지만, 실제로 pull 해서 사용했다기보다, Debian만 pull 하고, 나머지는 shell script를 통해 직접 설치하였었다.하지만 그 방법보단 이미 만들어진 이미지를 사용하고, 실무에서 사용하는 방법을 공부하고 향후 기억하기 위해 적어둔다.Docker 기본 흐름 과정Docker 사용은 큰 틀로 기본적인 전체 흐름 과정을 익히고, 이후에 디테일한 명령어를 진행하는 것이 좋다.Inception이전에 직접 일일히 구현해 놓은 Nginx, Mariadb, Wordpress인데, 이렇게까진 굳이 필요 없다만, 참고사항아래는 도커를 사용할 때의 흐름이다.# nginx 이미지 pull 해오기docker pull nginx# Docker 이미지 확인docker image ls# ..
1. String을 나누는 방법string을 나누는 방법은 많이 있다. getline, istringstream을 사용해서 나누거나, 직접 순회를 해서 해당하는 값을 처리하는 방법 등 다양한 방법이 있지만, 편하게 그때 그때 처리할 수 있는 범용적인 함수를 만들어 보는 것이 좋은 것 같다.아래는 C++로 구현한 split이다.#include #include std::vector split(const std::string &str, const std::string &delimeter){ auto start = 0; auto end = str.find(delimeter); std::vector result; while (end != std::string::npos) { ..