본문 바로가기

전체 글135

[JAVA] Java의 ArrayList를 변경불가능(Immutable)로 생성하는 방법 Java의 ArrayList를 변경불가능(Immutable)로 생성하는 방법에 대해 알아봅니다. ArrayList를 변경불가능하게 만들기 위해서는 JDK에서 지원하는 방법, Guava 라이브러리를 이용하는 방법 그리고 Apache Commons Collections 라이브러리를 이용하는 방법 세가지가 있습니다. JDK에서 지원 1) Collections 클래스를 이용하는 방법 Collections.unmodifiableList(list); 2) Java9 Java9에서는 List.of 인 static factory method를 이용해서 리스트를 생성하면 됩니다. ArrayList list = List.of("a","b","c"); Guava 라이브러리 ImmutableList.copyOf(list); .. 2022. 3. 17.
[Tistory] 티스토리 구글 애드센스 신청방법 - 2022년 최신, 초보자 가이드 쉽게 따라하기 티스토리에 구글 애드센스를 신청하는 방법을 소개해 보겠습니다. 1. 시작하기 티스토리 1. 설정 > 수익 > Google AdSense 연동하기 클릭 2. 구글 로그인 구글 애드센스에 회원가입이 되어있지 않을경우, 오류 알림창이 뜨고, 새창으로 구글 애드센스 사이트 등록창이 열립니다. 구글 애드센스 티스토리 설정 > 수익 > Google AdSense 연동하기 클릭 연동후 Google AdSense 검토요청 클릭 확인 2022. 3. 17.
[SpringSecurity] SpringSecurity에서 user detail 정보를 획득하기 이번에는 SpringSecurity에서 인증된 user detail 정보를 얻어오는 방법에 대해 알아봅니다. Bean 안에서 인증된 User 획득하기 SecurityContextHolder의 context에서 인증된 정보에서의 User의 name을 획득하기 Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); String currentPrincipalName = authentication.getName(); 혹은 아래처럼 인증된 타입에 따른 분기를 추가하는게 더 좋을수도 있겠죠? Authentication authentication = SecurityContextHolder.getContext().ge.. 2022. 3. 17.
[JUnit] JUnit5 기본 설정 및 어노테이션 이번에는 Junit5에 대해서 알아보도록 하겠습니다. 참고로 Junit5 버전을 사용하기 위해선 Java8 버전 이상, Gradle은 4.6 버전이상을 사용해야 합니다. Junit5 기본 설정 build.gradle 파일에 아래내용을 명시해줘야합니다. (junit5 dependency를 추가합니다) test { useJUnitPlatform() } dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' } Junit 플랫폼 JUnit Jupiter @TestFactory – 동적 테스트를 위한 테스트 팩토리인 .. 2022. 3. 16.
[JAVA] Java8 Stream API - findFirst() 와 findAny() Java8 Stream API - findFirst() 와 findAny()에 대해 알아봅니다. Stream.findAny() Stream 에서 모든 요소를 ​​찾을 수 있습니다. 이 메서드는 Stream 이 비어 있는 경우 비어 있는 Optional 인스턴스를 반환합니다. @Test public void testFindAny() { List list = Arrays.asList("1","2","3"); Optional result = list.stream().findAny(); assertTrue(result.isPresent()); assertThat(result.get(), anyOf(is("1"), is("2"), is("3"))); } 병렬이 아닌 작업에서는 Stream 의 첫 번째 요소를 반환.. 2022. 3. 15.
[Kotlin] 코틀린 클래스와 프로퍼티 코틀린에서의 클래스와 프로퍼티에 대해 알아봅니다. 코틀린 클래스(Class) 자바에서 아래와 같은 Person 클래스를 public class Person { private final String name; public Person(String name) { this.name = name; } public String getName() { return name; } } 코틀린 코드로 바꿔보면? 단! 한줄로 가능합니다. class Person(val name: String) 코틀린에서는 명시하지 않아도 기본적으로 public 접근제한자여서 생략이 가능합니다. 코틀린 프로퍼티(Property) 요즘 나온 언어들과 같이 프로퍼티에 읽기 전용과 변경 가능한 프로퍼티가 있습니다. val : 읽기 전용 프로퍼티 v.. 2022. 3. 15.
[Spring] @SpringBootApplication 어노테이션 @SpringBootApplication은 아래 어노테이션을 추가한 편의성 어노테이션입니다. @Configuration 애플리케이션 컨텍스트에 대한 빈 정의 소스로 클래스에 태그를 지정합니다. @EnableAutoConfiguration Spring Boot에 클래스 경로 설정, 기타 Bean들과 다양한 property 설정을 기반으로 bean을 추가하도록 한다. 예를 들어 spring-webmvc가 클래스 경로에 있는 경우 이 어노테이션은 애플리케이션에 웹 애플리케이션으로 플래그를 지정하고 DispatcherServlet 설정과 같은 주요 동작을 활성화합니다. @ComponentScan Spring이 예를들어 com/example/demo 패키지에서 선언된 components, configuration.. 2022. 3. 15.
[Spring] 스프링 웹 어노테이션 (Spring Web Annotation) Spring에서의 Spring Web 어노테이션을 이용하여 RESTful 웹 서비스를 만들어보자. http://localhost:8080/greeting API GET 요청으로 아래의 JSON 응답을 받는 API를 작성해보자. {"id":1,"content":"Hello, World!"} 먼저 greeting 모델 클래스를 만들자. package com.example.demo; public class Greeting { private final long id; private final String content; public Greeting(long id, String content) { this.id = id; this.content = content; } public long getId() { ret.. 2022. 3. 15.
[드라마] 스물다섯 스물하나 10화 명대사 요즘 푹 빠져있는 드라마 스물다섯 스물하나. 김태리와 남주혁의 직진 사랑 고백에 봄처럼 설레이는 마음으로 헤어나올 수가 없습니다. 드라마의 대사 하나 하나가 다 명대사라서 한 회에도 명대사들이 주르륵 쏟아져나오네요. 오늘은 3월 13일에 방송된 tvN '스물다섯 스물하나' 10화 명대사를 읊어봅니다. 사랑이야 난 널 사랑하고 있어 나희도. 무지개는 필요 없어 난 네가 뭘 하든 어떤 모습이든, 있는 그대로 너 자체를 사랑하고 있고, 이 고백으로 네가 좀 더 행복해진다면 난 바랄게 없어 - 백이진(남주혁) 듬성듬성 비어 있던 세상이 가득 차는 기분 모든 낯선 것과 친구가 되고 닥쳐 올 불행과도 잘 지낼 수 있을 것 같은 기분. 강해지는 기분. 한순간에 두려운 게 없는 사람이 되었다 나희도(김태리) 우리가 이.. 2022. 3. 15.
[Spring] @Controller 과 @RestController 어노테이션 Spring MVC에서 @Controller와 @RestController 어노테이션의 차이점에 대해 알아봅니다. @RestController 어노테이션은 Spring 4.0 에서 새롭게 추가가 되었습니다. 기존의 @Controller와 @ResponseBody를 결합한 어노테이션으로 모든 요청 처리에 대해 @ResponseBody를 추가할 필요가 없습니다. @Controller을 사용 package com.example.demo; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; @Controller @RequestMapping("users") public class User.. 2022. 3. 14.
[크롬확장프로그램] 크롬 화면 캡쳐, lightshot 라이트샷 구글 크롬에서 화면 캡쳐 프로그램 lightshot 설치 크롬 웹스토어에 들어갑니다. lightshot을 검색합니다. chrome에 추가를 선택합니다. 사용 웹브라우저 주소창 옆의 보라색 깃털을 클릭합니다. 그럼 현재화면을 캡쳐하고 영역 선택을 할 수 있는 창이 뜹니다. 사용할 영역을 선택후 복사 또는 저장을 합니다. 또는 특정 영역을 색을 바꿔 네모칸으로 영역을 표시하는 것도 가능합니다. Lightshot is the fastest way to take a customizable screenshot. Simple interface, nothing useless and light weight. Features: * take screenshot and share it in few clicks * selec.. 2022. 3. 14.
[Spring] Spring Boot 프로젝트 시작하기 Spring Boot 프로젝트 시작하기 start.spring.io 사이트에 접속해서 web project를 생성합니다. Spring initializr에서 해당 화면에서 Project, Language, Spring Boot 버전등을 원하는 대로 선택하고, Depedencies > ADD DEPENDENCIES.. 를 클릭합니다. ADD DEPENDENCIES.. 를 눌러서 Spring Web 을 선택하면, 창이 닫히고 Spring Web이 추가되어있는 것을 확인할 수 있습니다. 하단의 GENERATE 버튼을 클릭하면 demo.zip 파일은 다운로드 합니다. 방금 다운로드 받은 파일을 IDE의 프로젝트를 열어봅니다. (저는 인텔리제이를 사용하여 프로젝트를 열어봅니다.) NEW > Project from.. 2022. 3. 14.