[Kotlin] 함수 (feat.디폴트 파라미터, 네임드 아규먼트)
2023. 9. 3. 21:30
몰아 넣기
함수 (function) 반환타입이 있는 함수 반환타입이 있는 함수 - fun 메소드명(아규먼트명: 데이터타입) 반환타입 {} fun sum(a: Int, b: Int): Int { return a + b } 반환타입이 없는 함수 Unit은 자바에서 void를 뜻한다 하지만 코틀린에서는 생략도 가능하다. fun printSum(a: Int, b: Int): Unit { println(a + b) } 표현식 스타일 함수 body가 없는 형태로 작성이 가능하다. //표현식 스타일 fun sum2(a: Int, b: Int): Int = a + b //표현식 & 변환타입 생략 fun sum3(a: Int, b: Int) = a + b 만약 sum3에서 바디를 만들었다면 아래 코드처럼 형태가 된다 하지만 에러가..
[Kotlin] 변수와 상수
2023. 9. 3. 21:19
몰아 넣기
변수 변수선언1 코틀린은 var 변수명 : 데이터타입 = 값 으로 변수를 선언할 수 있다. fun main() { var a : Int = 4 var b = 1 } 변수선언2 f는 이미 int로 데이터입이 정해져서 String으로 변경 할 수 없다. var f = 123 // f = "hi" 변수선언3 지역 할당 - 변수명과 데이터타입만 정해주고 이 후에 값을 지정한다. val c : Int c = 3 탑레벨 변수 코틀린은 함수나 클래스에 외에 변수를 선언해서 사용할 수 있는데 이것을 탑레벨 변수라고 한다. var topLevel = 5; fun main() { topLevel++ println(topLevel) // 6 } 상수 상수 선언 val 로 상수를 만들 수 있다. val e : String =..
[Thymeleaf] th:each 사용해서 동적 html 생성하기 (feat.select 태그)
2023. 9. 3. 17:17
몰아 넣기
th:each 란? "th:each"는 반복문 속성(attribute) 중 하나이다 이 속성은 HTML 요소에 추가되어 반복적으로 동일한 요소를 생성하고 데이터의 목록 또는 배열을 순회하면서 각 항목을 처리할 수 있도록 지시하며, "th:each" 속성을 사용하면 템플릿에서 동적으로 목록을 렌더링하거나 반복 작업을 수행할 수 있다. 사용법 1. home.html를 만들어 렌더링해줄 수 있게 로직을 작성한다. 0~9의 리스트를 addAttribute에 같이 담아준다. @GetMapping("/") public String home(Model model) { List integers = IntStream.range(0, 10).boxed().toList(); model.addAttribute("items",..
[Thymeleaf] replace, fragment 사용해서 레이아웃 나누기
2023. 9. 3. 17:03
몰아 넣기
프론트를 구성할 때 Thymeleaf를 주로 사용하는데 레이아웃을 나눌 땐 replace, fragment 를 사용해서 나눈다. 항상 쓸 때마다 검색을 해서 다시 사용법을 확인하는데 찾아보기 힘들어 이제 정리좀 하려고한다. 정의 Fragment "th:fragment" 속성은 템플릿 내에서 명명된 fragment를 정의할 때 사용하며, fragment를 정의한 후, 다른 템플릿에서 "th:replace"나 "th:include"와 함께 해당 fragment를 사용할 수 있다. Replace 해당 속성을 포함한 HTML 요소를 다른 템플릿으로 대체하도록 지시하며, 헤더 또는 푸터와 같은 공통 요소를 별도의 템플릿으로 분리하고, 각 페이지에서 "th:replace"를 사용하여 이러한 공통 요소를 삽입하는 데..
[자바] 람다캡쳐링에 대해서
2023. 8. 19. 18:00
몰아 넣기
"Variable used in lambda expression should be final or effectively final" 개발중 마주하게된 메세지 서치로 찾아본 결과 람다 캡쳐링이라는 키워드를 알게 되었다. 알게된 내용을 정리한다. 람다 캡쳐링이란? 람다 캡처링이란 간단히 말해 외부 범위에서 선언된 변수를 람다 식 내부에서 사용하는 것을 의미한다. 이러한 변수는 자동으로 람다 표현식의 내부에 복사되거나(캡쳐링) 최종적으로 상수로 취급된다 예제로 이해하기 아래 코드일 경우 메모리 상황은 stack에 value =3 와 list 가 쌓이고 heep에 list의 값인 1,2,3,4가 쌓였다. public static void main(String[] args) { int value = 3; List..
[docker] 도커로 PostgreSQL 사용하기
2023. 5. 10. 22:40
도커
도커 이미지 설치하기 postgres - Official Image | Docker Hub Note: the description for this image is longer than the Hub length limit of 25000, so has been trimmed. The full description can be found at https://github.com/docker-library/docs/tree/master/postgres/README.md. See also docker/hub-feedback#238 and docker/ hub.docker.com 위 링크에서 Tags 탭으로 들어가면 버전을 확인할 수 있는데 원하는 버전을 선택해서 docker pull postgres:latest..
[docker] 도커 Docker Desktop requires a newer WSL kernel version. 에러 해결하기
2023. 5. 10. 22:05
도커
정확한 원인은 모르겠지만 링크로 이동해서 알려주는대로 해결하면된다. 하지만 가독성이 안좋아 다음에는 내가 보려고 정리하려고한다. 1. Windows PowerShell을 관리자로 실행하고 아래 명령어를 차례대로 입력한다. dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart 2. Linux 커널 업데이트 패키지 다운로드한다. x64 머신용 최신 WSL2 Linux커널 업데이트 패키지 다운로드 3. Windows PowerShell 에서 아..
[SptringSecurity] 스프링 시큐리티 WebSecurityConfigurerAdapter Deprecated 대처하기
2023. 5. 1. 13:44
몰아 넣기
스프링공식블로그 에 WebSecurityConfigurerAdapter를 사용하는 것을 권장하지 않고, 컴포넌트 기반 설정으로 변경할것을 권장한다고 한다. 그래서 스프링 시큐리티 5.7.0-M2 부터 WebSecurityConfigurerAdapter는 deprecated 되었고 스프링 시큐리티 강의를 보면서 WebSecurityConfigurerAdapter를 쓰지 않고 적용하다보니 시간이 오래걸렸고 이 후 바로 쓰기위해 정리를 했다. HttpSecurity 구성 기존 @Configuration public class SecurityConfiguration extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecu..