일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 클린코드
- 애자일기법
- database
- 애자일프로그래밍
- Baekjoon
- mongoDB
- 읽기쉬운코드
- framework
- 스프링
- Elasticsearch
- 코딩테스트
- API
- 코드
- Spring
- 자바
- 개발
- ES
- 그리디
- 그리디알고리즘
- 엘라스틱서치
- cleancode
- JPA
- 알고리즘
- 프레임워크
- 개발자
- spring boot
- 백준
- 데이터베이스
- 코딩
- Java
- Today
- Total
목록프로그래밍 (8)
튼튼발자 개발 성장기🏋️
코틀린(Kotlin)은 함수형 프로그래밍(FP)을 지원한다. 코틀린에서는 함수가 중요한 구성 요소로, 이를 통해 간결하고 표현력 있는 코드를 작성할 수 있다. 일단 함수형 프로그래밍의 기본 개념인 부분 함수(partial function), 전 함수(pre-function), 커리한 함수(currying) 에 대해 설명하고, 이를 어떻게 활용할 수 있는지 알아보자. 1. 부분 함수(Partial Function)부분 함수는 입력값에 대해 정의된 범위 내에서만 동작하는 함수다. 즉, 어떤 함수가 모든 가능한 입력에 대해 정의된 것이 아니라, 일부 입력에 대해서만 유효한 함수일 때 사용된다. 이 개념은 주로 예외 처리나 특정 조건에 맞는 함수를 정의할 때 유용하다.예를 들어, 코틀린에서 map 함수는 nul..
1. 자원 관리Java에서 자원 관리에는 Java 7부터 도입된 기능으로 try-with-resources 문을 사용한다. AutoCloseable 또는 Closeable 인터페이스를 구현한 객체에 대해 자원 해제를 자동으로 처리할 수 있도록 한다.Kotlin에서는 use 확장 함수를 제공하여 자원을 자동으로 닫는 기능을 간결하게 구현할 수 있다. 이 방식은 Java의 try-with-resources 구문과 유사하지만, Kotlin의 확장 함수를 활용해 더 간결하고 직관적으로 작성할 수 있다.간결성: Kotlin의 use 함수는 확장 함수로 제공되어, 자원을 자동으로 닫는 코드가 매우 간결하고 직관적이다. 자원 해제 처리를 명시적으로 작성할 필요 없이 use 블록 안에서만 자원을 사용할 수 있다.안전성..
1. 패키지패키지는 여러 클래스를 묶어서 네임스페이스를 제공하는 개념이다. 패키지를 사용하면 이름 충돌을 방지하고, 코드의 구조를 명확히 하며, 다른 프로그램에서 클래스들을 쉽게 가져다 쓸 수 있게된다.네임스페이스 관리: 같은 이름을 가진 클래스를 여러 개 정의할 수 있게 해준다. 예를 들어, com.example.utils와 com.example.models 같은 서로 다른 패키지에 같은 이름을 가진 클래스가 있을 수 있다.코드 관리: 프로젝트를 더 나은 구조로 나누어 관리할 수 있게 해준다.접근 제어: 패키지 내에서 클래스를 어떻게 접근할 수 있는지 제어할 수 있다.Kotlin에서의 패키지 사용법Kotlin에서는 package 키워드를 사용하여 클래스를 패키지에 포함시킨다. 패키지는 코드 파일의 첫 ..
1. 필드와 변수Java에서 클래스의 필드는 반드시 명시적으로 선언된 타입과 함께 접근 제어자가 필요하다. 반면, Kotlin에서는 필드 선언이 더 간결하고 유연하다. Kotlin은 기본적으로 val(불변 변수)과 var(가변 변수)로 구분하며, var는 Java의 mutable 변수와 비슷하고, val은 Java의 final 변수와 유사하다.Java code와 Kotlin code를 비교해보자.val은 name처럼 불변(읽기 전용) 필드를 정의하며, var는 age처럼 가변 필드를 정의한다.Kotlin에서는 getter와 setter를 자동으로 생성해준다. name은 val이기 때문에 setter가 없고, age는 var이므로 setter가 자동으로 생성된다. public class Person { ..
나는 java를 공부하고 사용할 때 "객체지향적으로 코딩해야한다!"(OOP)라는 생각으로 접근한다고 주입식 교육(?)을 받아왔다. 그런데 java1.8 부터 바뀐 많은 부분 중에 가장 대표적으로 "함수형 프로그래밍 기법"이 도입되었다. 차이점을 예를들어 이야기 하자면 아래와 같다. ex) 각 유저의 정보를 갖고 있는 유저 리스트가 있을 때, unvalified email을 추출한다. OOP 이메일을 담을 리스트 A 선언 반복문을 돌면서 email validation check unvalified email를 A에 추가 함수형 프로그래밍 user list에서 unvalified email을 갖고있는 유저만 추출 추출된 user list에서 email만을 리스트로 추출 접근 방식에 차이점이 보인다. OOP의..

java를 공부했다면 OOP(Object Oriented Programming : 객체지향 프로그래밍)에 대해서 공부했을 것이다. AOP는 Aspect Oriented Programming으로 직역하면 관점지향 프로그램으로써 어떤 프로세스에서 어느 시점을 바라보고 있느냐에 따라 다르게 프로그래밍이 되는 것이다. 어렵다. AOP가 나온 계기를 살펴보자. 우리는 개발하다보면 항상 공통적인 기능이 많이 나온다. 이런 기능을 하나로 묶기위해 상속을 사용한다. 하지만 다중상속이 불가능하고 코어기능과 공통기능이 섞여있는 등 효율성이 떨어질 수 있다. 이러한 문제점들을 보완하여 나온 것이 AOP이다. 코어 기능과 공통 기능을 완벽하게 불리시켜놓고 코어 기능에서 공통기능이 필요할 때마다 가져다 사용하는 방식이다. sp..

요즘 큰 프로젝트가 한참 개발 중이라서 책 볼 틈이 읎다ㅠㅠ (핑계일 수도 있다..ㅋㅋ) 그래도 시간 짬 내서 보려고 노력중👍 이제 정말 내가 읽기에는 어려운 챕터까지 왔다. 이번 챕터는 5번은 읽은 것 같다..ㅠㅠ 클래스는 사실 미로같은 놈이다. 다 아는 것 같으면서도 무지함을 깨닫고 이쁘게 작성한 듯 하면서도 개떡같이 작성하게 바로 클래스.. 우린 담당 서비스를 개발 할 때도 있지만, 추가개발 할 때도 있다. 추가 개발은 변경이 아닌, 확장이다. 클래스는 확장성을 고려하여 범용적이고 수정하기 간편하게 작성되야한다는 것은 상식. 그러나 응집도와 관련해서 생각을 하지 못했다. 너무 어려운 챕터다.. 두 번 보자. 세 번 보자. 이해 될 때까지 보자...😡

러스트의 에러는 크게 두 가지로 나눈다. Recoverable Errors : 복구 가능한 에러 Unrecoverable Errors : 복구 불가능한 에러 복구 가능한 에러의 경우에는 사용자에게 문제를 이야기하고 해당 요청을 재시도 할 수 있도록 한다. 복구 불가능한 에러는 버그의 종류(?)로써, Index를 벗어난다거나, 0으로 나누려고 하는 경우 등과 같이 뻑(?)나는 경우를 이야기 한다. 1. panic! panic! 매크로가 실행되면, 프로그램은 실패 메시지를 출력하고, 스택 해제와 더불어, 정리하고 종료시킨다. panic! 응답으로 인한 중단 혹은 스택 해제 panic! 매크로가 실행되면, 프로그래램은 unwinding(해제)을 시작한다. 이것은 러스트가 panic!을 마주친 함수들로부터 스택..