전체 글

뚜렷한 기억보단 흐릿한 잉크를

    자바와 JUnit을 활용한 단위테스트 후기

    http://www.yes24.com/Product/Goods/75189146?OzSrank=2 자바와 JUnit을 활용한 실용주의 단위 테스트 - YES24 『실용주의 프로그래머』의 앤디 헌트와 데이브 토마스가 알려주는실용주의 단위 테스트!클린 코드의 핵심인 단위 테스트, 어디서 어떻게 시작해야 할까? 책에서는 단위 테스트의 개념과 작성 www.yes24.com JUnit을 처음 사용하거나 자바 프로젝트를 많이 진행하지 않았다면 어려운 책이다. 책도 그렇게 친절하진 않아서 메인 클래스 외엔 따로 깃에서 코드를 찾아봐야한다. 메인 클래스만 보고 다른 클래스의 내용을 짐작할 수 있다면 큰 문제는 없다. 테스트의 개념을 잡는데 입문자가 봐도 좋은점이 있다. 이해가 되지 않은 부분은 넘기고 보고 두껍지 않은 ..

    처음 배우는 스프링부트2 후기

    http://www.yes24.com/Product/Goods/64584833 처음 배우는 스프링 부트 2 - YES24 ★ 구현 순서에 맞춰 프로젝트를 진행하며 배우는 실전 입문서★ 이 책은 스프링 부트 입문자의 눈높이에 맞춰 스프링 부트 환경 설정부터 커뮤니티 게시판 구현까지를 다룬다. 스프링 부트의 www.yes24.com 앞에 '처음 배우는' 부분은 빼고 제목을 지었으면 어땠을까... 스프링으로 프로젝트를 개발하고 부트 관련 인강도 한 번 들었지만 이해하기 어려웠다. 이 책은 부트를 처음 접하는 사람보다 많이 접해본 사람들이 대상이다. 대략적인 진행방식은 이렇다 챕터가 시작되면 빈 메서드를 적고 설명한다 그 후 모든 기능을 다 넣은 뒤에 필요한 부분만 설명하고 넘어간다 그래서 어렵다. 모던 자바 ..

    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 나를 바꾸는 프레임 까지 읽었다. 우리는 살아가면서 프레임이라는 틀 속에 갇혀 지낸다. 프레임은 무의식적인 결정을 내리고 우리의 생각과 행동에 막대한 영향을 미친다. 그런 프레임을 인지하고 세상을 다른 프레임으로 바라보자는게 이 책의 요지다. 같은 말 이더라도 아 다르고 어 다르다. 앞뒤 다 자르고 특정 부분만 캡처한 대화내용을 본다면 누구나 화자의 의견을 오해하기 십상이다. 즉 앞뒤내용 = 맥락을 인지해야 상대방의 의도를 이해할 수 있고 그런 부분 없이 상대방의 행동에 대해 평가를 한다는건 내가 본 틀로만 상대를 해석하는 것이다. 같은 말을 들어도 받아들이는 느낌이 다르다. '오늘 나의 하루는 어제 죽은 사람이 그토록 바라던 하루이다.' 는 말은 너무 식상해서 이제는 들어도 별 느낌이없었다..

    텍스트 전처리: 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의 ..

    cs50-2 컴퓨터는 많은 정보를 어떻게 저장할까?

    기억장치에는 여러종류가 있다. 대표적으로 하드디스크, 램이다. CPU는 연산을 기억장치에 저장돼있는 비트, 바이트를 가지고 와서 처리한다. CPU의 속도가 고정이라면 기억장치의 속도가 빠를 수록 CPU의 연산 처리 속도는 빨라지는 경향이 있다. 더 빠르게, 더 많이 CPU에게 비트와 바이트를 줄 수 있기 때문이다. 하드디스크는 전원이 꺼져도 유지가 되며 램은 전원이 끄면 데이터가 사라진다. 하지만 램이 하드디스크에 비해 용량대비 훨씬 빠르고 비싸다. 그렇기에 하드디스크에서 꺼낸 정보를 램에서 일부 들고와서 CPU로 보낸다. (램이 하드보다 빠르기 때문에) 램이 하드디스크보다 상대적으로 빠르지만 컴퓨터입장에선 여전히 느리다. 그래서 CPU내부에 L1캐시와 L2캐시가 있다. 이 또한 휘발성이며 램보다 용량이..

    부스트코스 -7 스프링MVC

    부스트코스 -7 스프링MVC

    MVC는 모델 뷰 컨트롤러의 약자이다. 모델은 데이터가 들어있는 데이터셋이다. 주문목록, 사용자정보, 주문내역이 이에 해당한다. 뷰는 보이는 화면이다. 모델의 데이터를 사용해서 렌더링한다. jsp나 pdf, xml등의 파일로 구현한다. 컨트롤러는 사용자의 액션에 응답하는 컴포넌트다. 사용자가 데이터입력을 하면 컨트롤러가 입력한 데이터를 모델에다 넣는등 이벤트를 다루는 것을 의미한다. 스프링 MVC 기본 동작 흐름 그림에서 파란색 부분은 스프링에서 제공한다. 그림의 순서를 살펴보자 1. 클라이언트가 요청한다. 클릭을하던, url을 입력하든 등등... 그런 모든 요청들이 DispatcherServlet이 받는다. 2. 요청을 분할하기 위해 HandlerMapping에게 물어본다. 어떤컨트롤러, 어떤 메소드를..