분류 전체보기
-
Kotlin in Action: 5.3 지연계산(lazy) 컬렉션 연산Book/Kotlin in Action 2022. 11. 18. 00:50
5.3 지연계산 컬렉션 연산 map이나 filter같은 컬렉션 함수는 결과 컬렉션을 "즉시" 생성한다. 이는 컬렉션 함수를 연쇄하면 매 단계마다 계산 중간 결과를 새로운 컬렉션에 임시로 담는다는 말이다. 시퀀스를 사용하면 중간 임시 컬렉션을 사용하지 않고도 컬렉션 연산을 연쇄할 수 있다. 아래 부분은 책에 있는 그대로 적은 건데 번역본이라서 그런지 이해가 잘 되지 않는다. 더보기 코틀린 지연 계산 시퀀스는 Sequence 인터페이스에서 시작한다. 이 인터페이스는 단지 한 번에 하나씩 열거될 수 있는 원소의 시퀀스를 표현할 뿐이다. Sequence안에는 iterator라는 단 하나의 메소드가 있다. 그 메소드를 통해 시퀀스로부터 원소 값을 얻을 수 있다. 시퀀스 원소는 필요할 때 비로소 계산된다. 따라서 ..
-
Kotlin in Action: 5.2 컬렉션 함수형 APIBook/Kotlin in Action 2022. 11. 17. 23:56
1. 필수적인 함수: filter와 map filter와 map은 컬렉션을 활용할 때 기반이 되는 함수다. 대부분의 컬렉션 연산을 이 두 함수를 통해 표현할 수 있다. filter 함수는 컬렉션을 이터레이션하면서 주어진 람다에 각 원소를 넘겨서 람다가 true를 반환하는 원소만 모은다. 결과는 입력 컬렉션의 원소 중에서 주어진 술어(참/거짓을 반환하는 함수를 술어라고 한다)를 만족하는 원소만으로 이뤄진 새로운 컬렉션이다. data class Person(val name: String, val age: Int) val people = listOf(Person("Alice",29),Person("Bob",31) println(people.filter{it.age (Person::name) 그리고 30살 이상..
-
[우아한테크코스] Java 백엔드 프리코스 3주차 회고ヽ(✿゚▽゚)ノ 2022. 11. 17. 14:51
3주차 과제를 진행하며... 로또 과제를 진행하면서 막혔던 부분들과 얼렁뚱땅.. 해결하고 넘어갔던 부분을 공유하고자 합니다! 참고로 저는 프로그래밍의 완전 초보로써,, 제 회고록(회고..라기보다 반성..에 가까운)이 그 누구에게도 도움이 안될 수도 있습니다..(안돼요 그냥 안돼요ㅎ) 이번 회차에서 새로 추가된 요구사항과 내가 그 요구사항을 활용한 방법은 다음과 같다. 1. enum을 활용한다. - 문자열을 모두 enum을 사용해 저장해 두었다. 2. 함수의 길이가 15라인이 넘어가지 않도록 구현한다. - 최대한 넘어가지 않게 구현했지만.. ....(생략) 3. else 예약어를 쓰지 않는다 - 힌트 처럼 if 안에서 return하는 방식으로 구현했다. 다른 추가된 요구사항(도메인 로직에 대한 단위 테스트..
-
Kotlin in Action: 5.1 람다로 프로그래밍Book/Kotlin in Action 2022. 11. 15. 18:17
-이 글은 책 Kotlin in Action의 5장을 정리한 글입니다. 5.1 람다 식과 멤버 참조 1. 람다란 무엇일까? : 코드 블록을 함수 인자로 넘기기 이벤트가 발생하면 이 핸들러를 실행하자, 데이터 구조의 모든 원소에 이 연산을 적용하자 와 같은 생각으로 코드를 표현하기 위해 일련의 동작을 변수에 저장하거나 다른 함수에 넘겨야 하는 경우가 자주 있다. 예전 자바에서는 무명 내부 클래스를 통해 이 목적을 달성했다. 근데 이 방법은 매우 번거롭다. 무명 내부 클래스(내부 무명 클래스)에 대한 내용은 다음과 같다. 내부 클래스란, 하나의 클래스 안에 다른 클래스를 정의한 클래스이다. 자바에서는 다중 상속이 되지 않기 때문에 2개 이상을 사용할 경우에는 한개를 내부클래스를 사용하게 되면 한개를 상속받아..
-
자바 ORM 표준 JPA 프로그래밍 - 기본편 섹션08BACKEND/Spring 2022. 11. 14. 21:59
프록시 프록시는 왜 사용해야할까? 멤버를 조회할 때 team도 함께 조회를 해야할까? 라는 질문을 던져보자. 이건 비지니스 로직에 따라 달라진다. 만약 비지니스 로직에서 멤버와 팀을 같이 출력한다면, 멤버의 팀 정보를 불러온 다음에 연관된 팀도 가져오게 된다. 만일 멤버만 출력한다면, member.get만 챙겨오면 된다. 이럴 때 연관관계가 있다고 팀까지 가져오면 손해이다. 이런 경우에는 어떻게 해야할까? 이것을 해결하려면 프록시를 정확하게 이해해야 한다. 프록시 기초 • em.find() vs em.getReference() • em.find(): 데이터베이스를 통해서 실제엔티티 객체 조회 • em.getReference():데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회 프록시 특징 • 실..
-
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 섹션 1(작성 중)BACKEND/Spring 2022. 11. 13. 23:44
Spring Initailizr에서 프로젝트 만들기 여기서 H2 DATABASE와 lombok도 추가해줘야함. lombok은 지루하게 반복되는 코드를 제거해주는 라이브러리 https://start.spring.io/ 에서 만들 수 있다. 근데 강의에서의 버전이 달라서 기본 설정되어있는 걸로 버전을 선택했다. 여기선 jpa는 유틸리티성 라이브러리라고 생각하면 된다. 걸 이제 generate 하고 다운 받은 후 압축 풀고 IntelliJ에서 열어주면 되는데.. 맨처음에 열때 라이브러리 생성하는데 10분 이상 걸린다... 라이브러리 다운받다가 컴퓨터 끌 뻔 그렇게 라이브러리가 다 다운이 되고 나면 Application main 함수를 실행할 수 있다. 이렇게 실행시켜준 후 localhost:8080으로 들어갔..
-
[우아한테크코스] JAVA 백엔드 프리코스 2주차 회고록ヽ(✿゚▽゚)ノ 2022. 11. 13. 16:24
2주차 과제를 진행하며.. 우테코 하면서 뼈저리게 느끼는 것 중 하나는 새로운 알고리즘을 짜는 것보다 내가 썼던 코드를 다시 보고 어떻게 하면 제대로 리팩토링 할 수 있을까 고민하면서 더 성장을 한다는 것이다. 이번 주차 과제부터 테스트 코드를 작성하는 과제가 더해졌는데, 제대로 해내지는 못헀지만, 테스트를 진행하면서 코드를 어떻게 수정해야 한 기능을 대표해서 하는 코드가 될 수 있는지 계속 생각하게 되었다. 그리고 지금부터 내가 의아하고 어려웠던 부분이 뭐였는지 얘기해보겠다. 테스트 코드 작성하기 얼마전에 김영한쌤 Spring 강의를 들을 때 테스트 코드의 중요성을 되게 강조하셨던 것 같은데, 그거에 대해서 되게 가볍게 여기고 넘어갔었다. 근데 과제로 테스트 코드를 작성하는게 나와버려서 하는 방법도 모..