자바 31

[AssertJ] JUnit과 같이 쓰기 좋은 AssertJ 필수 부분 정리

AssertJ가 core document를 새로운 github.io로 이전했네요 :) . 본 글은 AssertJ 공식 문서를 핵심 챕터를 선정하여 번역하며 정리한 글 입니다. http://joel-costigliola.github.io/assertj/assertj-core.html AssertJ란 무엇인가 AssertJ는 많은 assertion(직역: 주장, 행사)을 제공하는 자바 라이브러리이다. 에러 메세지와 테스트 코드의 가독성을 매우 높여주고 각자 좋아하는 IDE에서 쓰기 굉장히 쉽다. junit에서 제공하는 assertEquals에 비해 훨씬 가독성이 올라간다. junit의 assertEquals의 인자순서는 헷갈릴 가능성이 크다. assertEquals(expected, actual); asse..

[JUnit5 개요] Meta 애노테이션과 Assumption, test 실행 순서에 대해

JUnit5 개요 JUnit5 User Guide Junit 공식 문서를 보며 정리해 보았다. 각 챕터 번호는 해당 공식 문서에 매칭되는 번호이다. https://junit.org/junit5/docs/current/user-guide/#overview-what-is-junit-5 1.1 JUnit5란 무엇인가 JUnit5 = JUnit Platform + JUnit Jupiter + JUnit Vintage JUnit Platform : JVM에서 돌아가는 테스트 프레임워크이다. 테스트 엔진 API 으로도 정의되며 더욱이 Gradle과 Maven, JUnit4의 빌드 플러그인을 만들 수 있고 커맨드 라인에서 돌아가는 콘솔 런쳐를 제공한다. JUnit Jupiter : JUnit5에서의 테스트 작성을 위..

[우아한 형제들] 프리코스 마지막 피드백을 받고나서

프리코스 미션 3주차 피드백을 받았다. 배웠던 것들을 실제로 제대로 활용하지 못했기에 나에게 실망스러웠다. 객체에 메세지를 보내라 2주차 때도 같은 피드백이 있었다. 객체에서 값을 꺼내지말고 메세지를 보내서 구하는 것. 그냥 피드백을 보고 '이해했어!'라고 끝나는 것이 아닌것 같다. 결국 3주차 미션에도 저 피드백을 활용하지 못했다. 프로젝트를 하면서 눈치를 채지 못한것이다. 그럼 난 이해한게 아니다. public Rank match(Lotto userLotto) { int count = (int) userLotto.getNumbers().stream() .filter(i -> lotto.getNumbers().contains(i)) .count(); boolean isBonusMatch ..

[우아한 형제들] 우아한 테크코스 지원부터 프리코스까지 마친 후기

이 글은 우아한 테크 코스를 지원하게 된 동기와 느낀 점을 담은 글입니다. 개인적인 의견이므로 다소 주관적일 수 있습니다. 저 안경안에 java 마크와 노트북의 치킨 마크의 디테일까지. 어떻게 저런 감성이 나올까... 자세한 코스의 내용은 우아한 형제들의 기술 블로그 링크를 들어가서 보면 된다. 자세한 내용은 밑의 링크를 참조하자. http://woowabros.github.io/woowabros/2019/02/08/woowacourse.html '우아한테크코스 - 웹 백엔드' 과정에 참여할 사람을 모집합니다. - 우아한형제들 기술 블로그 우아한테크코스가 뭔가요? woowabros.github.io 먼저 우아한 형제들의 테크코스에 지원한 지원동기에 대해서 이야기해 보겠다. 지원동기는 크게 2가지였다. 첫..

[Nexters]넥스터즈 (URL 단축팀) 활동 - 서버간 통신 gRPC 적용기

gRPC 적용 내용의존성 추가먼저 의존성 추가를 하는데 이렇게 3가지가 들어간다. io.grpc grpc-netty-shaded 1.18.0 io.grpc grpc-protobuf 1.18.0 io.grpc grpc-stub 1.18.0 그리고 컴파일러또한 의존성에 추가해준다. 출처 : grpc 공식 repo 그러면 proto 파일들의 기본 경로가 java폴더와 같은 level에 잡히게 된다. proto 파일의 정의그리고 이 폴더안에 .proto라는 파일을 만들어주게 되는데 자세한 내용은 이 쪽을 참고하였다. 출처 : protobuf from google 이 프로토버프 파일은 언어의 제약이 없다. (거의) 즉 이것의 최고의 장점은 범용성이다. 자바로 짜여진 grpc 서버와 파이썬인 클라이언트와 통신을 할..

[Java] 추상클래스(Abstract Class)와 인터페이스(Interface)에 대한 고찰

추상 클래스(Abstract Class)란 미완성 설계도라고 할 수 있다. 자동차에 비유하면 완성되지 않은 자동차라고 할 수 있다. 차체만 있고 아직 바퀴를 달지 않은 그 상태를 미완성이라고 할 수 있다. 바퀴가 없으면 달릴수가 없으니 이것은 자동차라고 아직은 말 할 수가 없다. 마찬가지로 추상 클래스는 객체를 생성할 수 없다. (즉, 바퀴를 달게 하지 않은 설계도로는 자동차를 만들 수 없다.) 추상클래스의 선언은 class 앞에 abstract를 붙이면 된다. 그리고 추상 클래스는 추상메서드를 포함하고 있고 여느 클래스와 마찬가지로 생성자와 멤버변수도 가질 수 있다. 여기서 인터페이스(interface)와 비교를 해보자. 인터페이스는 추상 클래스에서 더 추상화 된 것이다. 그래서 모든 메서드는 publ..

[Java] 람다(Lamda)식과 함수형 인터페이스 (Functional Interface)

람다식 (Lamda Expression)JDK 1.8 부터 추가된 람다 식은 많은 변화를 가져다 주었다. 람다식이란 메서드를 하나의 식으로 표현해주는 간편한 기능이다. 예를들어, 123456789int max(int a, int b) { return a > b ? a : b;} (int a, int b) -> { return a > b ? a : b ;} (int a, int b) -> a > b ? a : b (a, b) -> a > b ? a : bcs 위의 max함수를 람다식으로 표현하면 밑에 3가지가 될 수 있다. 람다식에 선언된 매개변수는 추론이 가능한 경우 생략할 수 있다고 한다. 람다식은 런타임 때 익명 객체를 생성하기 때문에 대입 되는 값에 따라 자동인식이 되기 때문이다. 그리고 함수 몸체..

[인턴 일지] 스프링 각종 코드 수정 작업 중, 잔 버그 해결

직원 등록 form 에서 3개의 페이지에 걸친 직원 들의 정보를 입력하고 REGISTER 버튼을 누르면 DB에 접근해서 데이터를 넣게 된다. 문제가 없을 줄 알고 DB에 엑셀을 이용해서 데이터를 넣고 있었다. 하지만 실제 사용자가 쓰는 곳은 웹 ui상이므로 나도 테스트 기간에는 데이터를 웹에서 직접 입력한다. 그런데 생각보다 많은 예외와 에러가 발생한다... validation 체크가 확실하게 다 되지 않아 unexpected 한 값이 넘어가는 것을 잡지 않아서 톰캣 로그에서 error가 터진다. 대표적인것은 Duplicate PRIMARY KEY 이다. DB 직원 정보 테이블은 SSN Number (소셜 시큐리티 넘버) 를 주요키로 가지게 된다. 이것은 중복된 값이 들어갈 수가 없다. 사용자는 첫 페이..

[인턴 일지] Amazon S3 이미지 업로드, 다운로드

원래는 각 직원 한 명당 사진 1개씩으로 정해졌지만 갑자기 한 사람당 여러 사진들을 업로드하는 기능이 있었으면 좋겠다고 한다. 자꾸 말 바꾸면 기간만 길어지고 개발진행에 방해가 될거같다고 했다. 예상은 하고 있었다. 결국 알겠다고 바꾸기로 했다. 그러면 아마존 버킷에 각 직원별로 폴더가 생겨야 할것이고 각 폴더에 동적으로 원하는 만큼의 이미지 또는 파일들이 올라가게 될 것이다. 오래 걸릴거 같다고 했는데 2시간만에 끝내버렸다. 제일 먼저 규칙을 정했다. 버킷내에 폴더 명 규칙은 Last Name + First Name + SSN Number (소셜넘버) 으로 정했다. 처음에는 그냥 소셜 넘버만으로 폴더를 만들기로했는데 생각해보니까 버킷을 열었을 때 가독성이 좀 떨어질 것 같아서 이름까지 넣기로했다. 이름..

[인턴 일지] 내 프로젝트의 문제점과 나아가야할 방향

프로젝트를 하면서 드는 생각들... 제일 무서운 생각은 무너지진 않을까... 점점 건물이 높아짐에 따라 가끔씩 휘청거린다. 그럴 때마다 매우 조심스럽게 행동한다. 당연히 기본 뼈대가 튼튼해야 건물이 견고해진다. 이 사실을 인지함에도 뭔가 급한 마음에 막 빨리 쌓으려고 했다. 한 눈에 보이지 않는 코드... 정리가 되어 있지 않은 문맥들... 그래 쌓을 수는 있다. 하지만 수리할 때 문제가 생긴다. 어떤 기능이 어디에 있고 어느 부분을 고쳐야 하는지 바로 보이지가 않는다. 어제의 나와 오늘의 나는 다른 사람인 것을 예전부터 알고 있었다. 어제 분명히 어떤 feel을 받아서 정신없이 코드를 치고 돌아가는 것을 확인했다. 다음날 내가 와서 보면 그건 전혀 내가 한것처럼 느껴지지 않는다. Structure가 중..

반응형