오늘의 기록

    [Java] JUnit 5

    [Java] JUnit 5

    https://www.inflearn.com/course/the-java-application-test 더 자바, 애플리케이션을 테스트하는 다양한 방법 - 인프런 | 강의 자바 프로그래밍 언어를 사용하고 있거나 공부하고 있는 학생 또는 개발자라면 반드시 알아야 하는 애플리케이션을 테스트하는 다양한 방법을 학습합니다., 그냥 개발자를 넘어 '더 나은 개발 www.inflearn.com 강의 내용 정리 JUnit 5 소개 JUnit은 자바 개발자가 가장 많이 사용하는 테스팅 프레임워크이다. 단위 테스트를 작성하는 자바 개발자 중 무려 93%가 JUnit을 사용한다.참고로 JUnit은 자바 8 이상을 필요로 한다. 강의에서는 가장 최신 버전인 JUnit 5를 집중적으로 알아볼 것이다. JUnit 5는 다음과 ..

    [Java] 제네릭

    https://github.com/whiteship/live-study whiteship/live-study 온라인 스터디. Contribute to whiteship/live-study development by creating an account on GitHub. github.com 백기선님 자바 기초 스터디 14주차 목표 자바의 제네릭에 대해 학습하세요. 학습할 것 (필수) 제네릭 사용법 제네릭 주요 개념 (바운디드 타입, 와일드 카드) 제네릭 메소드 만들기 Erasure 제네릭 사용법 제네릭 제네릭은 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능이다. 제네릭의 장점 타입의 안정성을 제공한다. 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해진다...

    [Clean Code] 7. 오류 처리

    [Clean Code] 7. 오류 처리

    오류 코드보다 예외를 사용하라 예외를 사용하지 않고 오류 플래그를 설정하는 등의 방식은 코드를 복잡하게 만든다. 오류가 발생하면 예외를 던지는 편이 낫다. 그래야 코드가 깔끔해진다. 논리가 오류 처리 코드와 뒤섞이지 앟는다. Try-Catch-Finally 문부터 작성하라 예외가 발생할 코드를 짤 때는 try-catch-finally 문으로 시작하는 편이 낫다. 그러면 try 블록에서 무슨 일이 생기든지 호출자가 기대하는 상태를 정의하기 쉬워진다. 미확인 예외를 사용하라 자바 첫 버전이 확인된 예외를 선보였던 당시는 확인된 예외가 멋진 아이디어로 여겨졌다. 메서드를 선언할 때는 메서드가 반환할 예외를 모두 열거했다. 그러나 C#, C++, 파이썬, 루비는 확인된 예외를 지원하지 않음에도 불구하고 안정적인..

    [Clean Code] 6. 객체와 자료 구조

    [Clean Code] 6. 객체와 자료 구조

    자료 추상화 두 예제의 차이를 살펴보자. 두 예제 모두 2차원 점을 표현하다. 그런데 한 클래스는 구현을 외부로 노출하고, 다른 클래스는 구현을 완전히 숨긴다. class Point { public double x; public double y; } ---------------------------------------------- interface Point { double getX(); double getY(); void setCartesian(double x, double y); double getR(); double getTheta(); void setPolar(double r, double theta); } 아래 예제는 점이 직교좌표계를 사용하는지 극좌표계를 사용하는지 알 길이 없다. 그럼에도 ..

    [Intellij] 파일이 있는데, No such file or directory 에러

    [Intellij] 파일이 있는데, No such file or directory 에러

    인텔리제이에서 FileInputStream같은 파일입출력을 수행하던 도중 분명히 소스코드와 파일이 같은 디렉토리에 있는데 읽어올 수 없는 경우가 있다. 다음 예시를 보자. class FileViewer { public static void main(String[] args) throws IOException { FileInputStream fis = new FileInputStream("data.txt"); int data = 0; while ((data = fis.read()) != -1) { char c = (char) data; System.out.print(c); } } } Exception in thread "main" java.io.FileNotFoundException: data.txt (N..

    [Java] I/O

    [Java] I/O

    https://github.com/whiteship/live-study whiteship/live-study 온라인 스터디. Contribute to whiteship/live-study development by creating an account on GitHub. github.com 백기선님 자바 기초 스터디 13주차 목표 자바의 Input과 Ontput에 대해 학습하세요. 학습할 것 (필수) 스트림 (Stream) / 버퍼 (Buffer) / 채널 (Channel) 기반의 I/O InputStream과 OutputStream Byte와 Character 스트림 표준 스트림 (System.in, System.out, System.err) 파일 읽고 쓰기 스트림 (Stream) / 버퍼 (Buffer..

    [Python] Selenium을 사용한 네이버 이미지 크롤링

    [Python] Selenium을 사용한 네이버 이미지 크롤링

    진행 중인 프로젝트에서 음식 이미지를 사용할 일이 있어서 이미지 크롤링에 대해 찾아보기 시작했다. 여러 사이트를 뒤져봤는데, 그 중 네이버 이미지에는 CCL 상업적 이용 가능 옵션이 있어서 보다 안전하게 프로젝트에 사용할 수 있지 않을까 싶어서 네이버에서 크롤링을 하기로 했다. 구글링을 열심히 해서 여러 크롤링 코드들을 참고했지만, 실제로 잘 동작하지 않아서.... 직접 참고한 몇몇 코드를 따와서 재구성해보았다. 일단 beatifulsoup으로 크롤링을 시도했을 때는 특정 태그부터는 parser가 접근을 하지 못해서 (해당 태그에 dataGroupKey 같은 인증 관련된 부분이 있었는데 이 문제인듯 싶다...) selenium을 통해 구현하기로 했다. selenium 설치 우선 selenium 사용을 위..

    [Scikit learn] Linear Model을 사용한 컨텐츠 베이스 추천 + Lasso 모델 적용

    [Scikit learn] Linear Model을 사용한 컨텐츠 베이스 추천 + Lasso 모델 적용

    사용 데이터 MovieLens 영화 데이터 -> ml-latest-small.zip -> movies.csv, ratings.csv를 가공 -> ratings_updated.p, genres.p 생성 https://grouplens.org/datasets/movielens/ import pandas as pd import numpy as np import warnings warnings.filterwarnings('ignore') ratings = pd.read_pickle('[파일 경로]/ratings_updated.p') genres = pd.read_pickle('[파일 경로]/genres.p') ratings_updated.p: 기존 ratings.csv 형식과 똑같다. 단순히 개인적으로 데이터 ..