본문 바로가기

[모던 자바 인 액션] 6장. 스트림으로 데이터 수집 컬렉터란 무엇인가? 컬렉터 인터페이스 구현은 스트림의 요소를 어떤 식으로 도출할지 지정한다. 리듀싱과 요약 컬렉터로 스트림의 모든 요소를 하나의 결과로 합칠 수 있다. 스트림값에서 최대값 최소값 검색 Collectors.maxBy() 스트림의 최대값 계산 스트림 요소를 비교하는데 Comparator를 인수로 받음 Collectors.minBy() 스트림의 최소값 계산 스트림 요소를 비교하는데 Comparator를 인수로 받음 요약 연산 스트림에 있는 객체의 숫자 필드의 합계나 평균 등을 반환하는 연산 Collectors.summingInt() 객체를 int로 매핑하는 함수를 인수로 받음 int로 매핑된 요소의 총합 계산 summingLong(), summingDouble도 존재 Collectors.ave..
[모던 자바 인 액션] 5장. 스트림 활용 필터링 스트림의 요소를 선택하는 방법 filter: Predicate를 인수로 받아서 일치하는 모든 요소를 포함하는 스트림 반환 distinct: 고유 요소로 이루어진 스트림 반환(중복복을 제거하며 객체의 hashcode, equals로 결정) 스트림 슬라이싱 스트림의 요소를 선택하거나 스킵하는 방법 Predicate를 이용한 슬라이싱 자바 9 에서는 takeWhile, dropWhile 두가지의 새로운 메서드를 제공한다 TAKEWHILE 책 리스트가 최신순으로 정렬이 되어있다. List books = asList(new Book("2022신상책", "양승인", 2022, "IT"), new Book("이순신의 바다", "황현필", 2021, "History"), new Book("갈매기의 꿈", "리처..
[모던 자바 인 액션] 4장. 스트림 소개 스트림이란? 자바 8에 추가된 기능으로 멀티스레드 코드를 이용하지 않아도 간단하게 병렬로 처리하는 어플리케이션을 구현할 수 있다. 자바8 이전과 이후의 차이 java7 //자바 8 이전 - 2020년 이후 발행된 책을 연도순으로 정렬하여 책 이름을 반환 private static List getBooksNameSortedByYearAfter2020(List books) { //2020년 이후 책 List booksAfter2020 = new ArrayList(); for (Book book : books) { if (book.getYear() >= 2020) { booksAfter2020.add(book); } } //연도순 정렬 Collections.sort(booksAfter2020, new Comp..
[모던 자바 인 액션] 3장. 람다 표현식 람다를 어디에 사용할수 있을까? 함수형 인터페이스 정확히 하나의 추상메서드를 지정하는 인터페이스 함수형 인터페이스로 뭘 할수 있을까? 람다 표현식으로 함수형 인터페이스의 추상메서드 구현을 직접 전달할 수 있으므로 전체 표현식을 함수형 인터페이스의 인스턴스 취급 익명 클래스로도 같은 기능을 구현 가능하다. public class Main { public static void main(String[] args) { Runnable r1 = () -> System.out.println("Hello 1"); Runnable r2 = new Runnable() { @Override public void run() { System.out.println("Hello 2"); } }; process(r1); proce..
아이패드 프로 11인치 구매 구매한 아이패드가 주말에 도착하였다. 그동안은 맥북에서 캘린더와 메모를 사용하여 불편함을 몰랐으나 매일같이 들고 다니기에 부담되기도 해서 놓고 다닌 이후로 조금씩 정리가 안 되는 느낌이 들었고 패드를 하나 사는 편이 좋을 것 같아서 구매하게 되었다. 사실 이것은 핑계일 수도 있긴 한데 주로 컨텐츠 소비나 필기 및 메모 정도로 사용할 것 같다 구매 후 이것저것 테스트를 해보니 다행히 양품으로 온 것 같은데 확실히 매직키보드랑 사용하니 11인치임에도 무게감이 느껴진다.
[모던 자바 인 액션] 2장. 동작 파라미터화 소프트웨어 엔지니어링에서 요구사항은 항상 변한다. 시시각각 변하는 요구사항을 반영하면서 엔지니어링적인 비용이 가장 최소화될 수 있으면 좋다. 새로 추가한 기능은 쉽게 구현할 수 있어야 하며 장기적인 관점에서 유지보수가 쉬워야 한다. 변화하는 요구사항에 대응하기 간단한 도서관리 애플리케이션의 예시로 원하는 책들을 찾는 프로그램을 개발한다고 가정하였다. Book 클래스는 아래와 같다. public class Book { private String name; //책이름 private String author; //저자 private Integer year; //출판 연도 private String field; //분야 public Book(String name, String author, Integer yea..
JSX JSX 이해하기 JSX는 Javascript XML의 약자로 React 컴포넌트에서 HTML 마크업을 그대로 사용할 수 있게 해주며 Javascript의 확장이다. 특히 react에서는 React.createElement()호출을 반복해야 하는 불편함을 해소해주며 레퍼런스에서도 JSX를 소개할 때 JSX 사용을 권장한다고 한다. 중괄호 내에 자바스크립트 표현 JSX에서 javascript를 표현할 때는 중괄호{}로 감싸야 된다. const name = "yang"; const div = Hello {name}; ReactDOM.render(div, document.getElementById("root")); 여러 엘리먼트 사용 시 하나의 엘리먼트로 감싸야 함 function App() { return (..
코드숨 마지막 회고 한 것(Fact) 개인 프로젝트 빌드 배포 자동화 느낀 것(Feelings) 프로젝트 마지막 주에는 그동안 미뤄왔던 화면구성과 빌드 배포 자동화를 진행하였습니다. CI/CD를 지원하는 도구(Jenkins, Circle CI, Travis CI, AWS..등등)은 많이 있지만 각 도구별로 장단점이 모두 다르고 본인한테 맞는 것을 선택하면 되고 저는 그중에서 Github Actions를 선택하였습니다. 사용해보니 몇 가지 장점이 있었습니다. Secret key와 같은 민감정보 등을 레포지토리의 설정에서 등록해놓고 쓸 수 있었습니다. 직접 서버를 호스팅하지 않아도 되어 별도의 추가 비용 없이 사용할 수 있었습니다.(매월 2000분과 500MB는 개인 프로젝트에서 사용하기 충분하였습니다.) github 하나로 ..