IT

    AWS EC2 ubuntu 배포 스프링부트 + React

    AWS EC2 ubuntu 배포 스프링부트 + React

    ubuntu에 디비, 엔진엑스, 스프링부트, react를 이용해서 수동 배포를 진행해보자 이 게시글의 1차목표는 인간젠킨스가 돼서 수동 배포를 완료하는 것! ec2를 발급받고 터미널은 ubuntu, 탄력적 Ip를 발급받았다는 기준으로 설명하겠다. 1. ec2 등록 Aws에서 ec2 pem키를 발급받았고 탄력적IP를 등록했다면 MobaXterm을 설치하자 https://mobaxterm.mobatek.net/download.html MobaXterm free Xserver and tabbed SSH client for Windows The ultimate toolbox for remote computing - includes X server, enhanced SSH client and much more! ..

    MVC패턴

    MVC패턴

    MVC탄생 배경 기존에 만들었던 서블릿은 모든 기능을 혼자서 처리한다. 서블릿이 데이터를 처리하고 화면을 작성하며 비즈니스 로직도 작성했다. 규모가 커지면 분업해야한다. 회사 규모가 커지면 직무별로 나누듯 개발도 기능별로 나누어야 유지보수하기 편하다. 이렇게 기능을 나눈 것을 MVC라고 한다. MODEL, VIEW, CONTROLLER라는 기능으로 분리해서 개발을 진행한다. 기존에 서블릿 혼자서 담당하던 일을 세 컴포넌트가 처리한다. 올인원 방식때보다 설계 시간은 오래 걸리지만 유지보수와 확장측면에서 큰 이점이 있다. 헷갈리기 쉬운 점 MVC모델을 봤던 사람이라면 MVC의 뜻은 안다. 하지만 서로서로 어떻게 연결이되는지, 또 M,V,C 세개의 컴포넌트인데 CONTROLLER, DAO, DTO, SERVI..

    서블릿과 JDBC

    서블릿 서블릿의 흐름을 최대한 이해하기 쉽게 작성하려고 노력했다. 코드영역과 설정부분은 최대한 배제하고 서블릿에서 스프링까지 디테일보다는 큰 개념을 잡는데 주력했다. 서블릿이 뭔가요? 사용자가 크롬에게 www.naver.com 입력한다. 크롬은 웹 서버에게 이 위치의 파일을 요청하고 웹 서버는 요청한 프로그램을 찾아서 작업을 수행한 뒤 그 결과를 웹 서버에게 돌려준다. 웹 서버는 HTTP형식에 맞게 크롬에게 응답하고 크롬은 사용자에게 화면을 보여준다. 웹 서버와 프로그램 사이의 데이터를 주고받는 규칙을 CGI라고 한다. CGI규칙에 따라 웹 서버와 데이터를 주고 받도록 작성된 프로그램을 CGI프로그램이라고 한다. 서블릿이란 자바로 만든 CGI프로그램이다. 서블릿 컨테이너 덕분에 개발자는 CGI규칙에 대해..

    스프링: 느슨한 결합력과 DI

    느슨한 결합력 Service: 사용자의 요구사항이 담기는 곳 Dao: 자바를 사용해서 Service에서 요청하는 요구사항을 전달함 (데이터베이스에 접근하여) 시나리오 사용자가 요구사항 전달함 Service가 딱 보니 Dao1로 해결가능 Dao1이 DB에 접근하여 데이터를 가져와서 Service에 전달 Service는 사용자에게 전달 사용자가 받은 후 아... 이거 조금 바꿔달라 요구함 Service는 Dao2를 생성 후 다시 사용자에게 전달 사용자가 다시 수정해달라함 반복... 수정하는 방법엔 두 가지가 존재한다. dao1코드를 수정 dao1은 그대로 두고 dao2를 생성 1번 방식은 다시 dao1이 필요한 경우 다시 수정을 해야한다 2번 방식은 service는 dao1을 가리키고 있기 때문에 servi..

    3주차

    1. 2주차 미흡한 부분 완료 (학점 산출 프로그램을 람다 및 스트림 활용해서 제작하기까지) 2. 모던 자바 인 액션 (2,3,4,5,9,10,11장) 빠르게 훑어보기 3. https://repo.yona.io/doortts/blog/issue/1 책 빠르게 훑어보기 (다음주 개발에 필요함) 4. CRUD프로그램 제작 후 배포 사용자별 게시글 생성 수정 삭제기능 TDD방식으로 제작 Restful하게 구현 객체지향 제약조건 지키기 한 메서드에 오직 한 단계의 들여쓰기만 허용 https://developerfarm.wordpress.com/2012/01/26/object_calisthenics_2/ 함수는 10줄 이하로 작성 줄여쓰기 금지 (추후 페어프로그래밍 대비) else 최대한 사용 금지 Outh2 로..

    2주차

    1. Junit 도서: https://book.naver.com/bookdb/book_detail.nhn?bid=15064709 완독 후 블로그에 리뷰 2. 스프링부트 도서: http://www.yes24.com/Product/Goods/83849117 완독 후 블로그에 리뷰 3. Doit 자바 프로그래밍 입문 마지막장 학점 산출 프로그램 만들기 구현 (도서관에 빌려서) 4. 평일 아침 알고리즘 문제 풀고 인증 -규칙 테스트 코드를 먼저 작성하면서 실제 코드 구현하며 코드를 한번 작성할 때마다 깃에 commit 테스트 위주로 책에 있는 코드 구현을 완료했으면 모던 자바 인 액션 + Doit 자바 프로그래밍 입문(람다 스트림)의 지식 최대로 활용해 코드 수정하기 for문은 최대한 스트림으로, 함수는 할 수..

    텍스트 전처리: 2.정제와 정규화

    앞으로 알아보기 쉽게 코퍼스를 텍스트 데이터라고 칭하겠다. 정제: 얻어낸 텍스트 데이터중에 쓸모없는 노이즈 데이터를 제거하는 작업이다. 토큰화 전, 후로 사용하며 노이즈 데이터를 완전히 없앨 수는 없기 때문에 적당한 선에서 타협한다. 정규화: 의미는 같지만 표현방법이 다른 단어들을 같은 단어로 묶는다. ex) USA US , ex example ... 정규 표현식(Regular Expression) 얻어낸 텍스트 데이터에서 노이즈데이터의 특징을 잡아낼 수 있다면 정규표현식을 이용해 제거할 수 있다. 예를들어 HTML로 긁어온 문서는 내부에HTML태그가 있다. 이것을 정규표현식을 사용해 제거할 수 있다.

    텍스트 전처리: 1.토큰화

    추천 알고리즘을 설계하기 전에 관련 개념을 짚고 넘어가고자 한다. 바로 주먹구구식으로 구현하려 하니 이해도 안되고 내가 원하는 방식으로 구현할 수 있는지도 모르겠다. 그래서 딥러닝을 이용한 자연어 처리 입문 이라는 책을 참조하여 책 내용을 여기다 정리하면서 복습하고 코딩을 하려한다. 토큰화(Tokenization) 크롤링으로 수집한 텍스트 데이터가 전처리 되지 않은 상태라면 해당 데이터를 용도에 맞게 토큰화, 정제, 정규화 하는 일을 한다. 단어 토큰화 토큰화란 주어진 코퍼스(=말뭉치)에서 토큰이라 불리는 단위로 나누는 작업이다. 토큰의 뜻은 보통 의미있는 단어를 의미한다. 의미있는 단어란 단순히 단어별로 나누는 것이 아닌 특수문자, 숫자등을 고려해서 하나의 단어로 보는 것이다. 그게 단어별로 나누는거랑..

    CS-50 컴퓨터는 이미지를 어떻게 인식할까?

    이미지 형식(jpeg, png, bmp...)은 맨앞 비트의 형식이 고정값으로 구성돼있다. 그렇기 때문에 컴퓨터는 그 비트값을 읽고 아 이것은 이미지구나!! 하면서 바로 그래픽을 띄운다. 예를들어 특정 파일의 앞3비트가 255, 215, 255 라면 컴퓨터는 이 비트를 읽고 아 이건 jpeg파일이겠구나 라고 인식한 후 그래픽 작업을 한다. 그렇다면 컴퓨터는 비트로 어떻게 이미지를 나타낼까? 비트가 나열되어 있으면 컴퓨터는 픽셀마다 0이면 비우고 1이면 색칠한다. 이렇게 나열된 비트대로 색칠해서 이미지를 완성시킨다. 복사해서 붙여넣더라도 이미지가 같은 이유가 이것이다. 숫자값으로 이미지를 받으니 컴퓨터는 그 숫자대로 색칠하면 된다.

    CS50-ASCII코드와 16진수

    ASCII코드는 알파벳을 숫자로 나타낸것이다. A = 숫자 65처럼 알파벳마다 대응하는 숫자가 있다. 왜 이런식으로 나타낸걸까? 그건 가독성을 위해서다. A = 65라면 65는 이진수로 다시 나타내서 컴퓨터가 해석한다. 하지만 그 이진수는 길이가 매우 길기 때문에 한번에 보기쉽게 65라는 십진수로 나타낸다. 16진수 16진수는 숫자를 16진법으로 나타낸것이다. 0~9 + a,b,c,d,e,f,까지 총 16개다. 16진수로 나타내는 이유는 마찬가지로 가독성이다. 한가지 예로 jpeg파일의 경우 앞의 세자리 비트수가 255 216 255 인데 이걸 이진수로 바꾸면 8자리가 된다. 즉 8비트인데 이 8비트를 절반으로 나눈 4비트값이 16진수 숫자에 하나씩 대응된다. 예를들어 4비트중 가장 큰 값인 1111의 ..