전체 글

가치있는 글 쓰기!
· 🔍Kotlin
제네릭 타입 파라미터 코틀린에서는 자바와는 달리, 제네릭 타입의 타입 인자를 프로그래머가 명시하거나 컴파일러가 추론할 수 있어야 합니다. // 1. 컴파일러 타입 추론 val authors = listof("A", "B") // 2. 변수 선언쪽에 타입 선언 val readers: MutableList = mutableListOf() // 3. 변수를 만드는 함수의 타입인자 지정 val readers = mutableListOf() 1. 제네릭 함수 fun List.slice(indices: IntRange): List 제네릭 함수의 타입 파라미터 T를 선언합니다. 2. 제네릭 확장 프로퍼티 val List.penultimate: T 3. 제네릭 클래스 선언 interface List { operator..
· 🔍Kotlin
Field 필드 / Property 프로퍼티 자바에서는 필드와 접근자 메서드를 묶어 프로퍼티라고 지칭한다. 코틀린에서는 필드에 대한 기본 접근자 메서드를 자동으로 만들어주기 때문에 필드 대신 프로퍼티라는 말을 사용한다. Backing Field 프로퍼티의 값을 메모리에 저장하기 위한 필드 대부분의 프로퍼티에는 backing field 가 존재하지만 원한다면 프로퍼티 값을 메모리에 저장하지 않고 바로바로 계산하도록도 할 수 있다 프로퍼티를 선언해줄 때 다음 조건을 만족시킨다면 (메모리에 저장할 필요가 있어지기 때문에) 자동으로 backing field 가 생김 적어도 하나의 접근자가 기본으로 구현되는 접근자를 사용하는 경우 커스텀 접근자가 field 키워드를 통해 backing field 를 참조하는 경우..
https://school.programmers.co.kr/learn/courses/30/lessons/154539 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 정수로 이루어진 배열 numbers가 있습니다. 배열 의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까이 있는 수를 뒷 큰수라고 합니다. 정수 배열 numbers가 매개변수로 주어질 때, 모든 원소에 대한 뒷 큰수들을 차례로 담은 배열을 return 하도록 solution 함수를 완성해주세요. 단, 뒷 큰수가 존재하지 않는 원소는 -1을 담습니다. 제한사..
· ☘️Spring
스프링 시큐리티를 사용하며 의도하지 않은 403 에러가 떴을 때가 제일 스트레스였던 몇 주가 흘렀습니다. 그 동안 공부했던 내용을 한번 정리해보면 다음엔 고생을 덜 하지않을까 싶기도 하고 그 동안 인증에 대해 놓쳤던 개념(특히 익명유저)에 대해 정리해보고자 합니다.스프링 시큐리티 필터 순서FilterChainProxy 가 사실상 스프링 시큐리티 필터 동작의 시작점이기 때문에 디버깅하기에 적당한 곳입니다. 여기서 확인해보니 12개의 필터가 기본적으로 등록되어 있습니다. 모든 것을 알기 어렵지만 제일 중요한 사실은 인증 (Authentication) 후 인가 (Authorization) 필터가 동작한다는 사실입니다.그 외에도 여러가지 필터는 표에서 살펴보면 됩니다.FilterAdded byCsrfFilter..
프로그래머스 개인정보 수집 유효기간 문제 설명 고객의 약관 동의를 얻어서 수집된 1~n번으로 분류되는 개인정보 n개가 있습니다. 약관 종류는 여러 가지 있으며 각 약관마다 개인정보 보관 유효기간이 정해져 있습니다. 당신은 각 개인정보가 어떤 약관으로 수집됐는지 알고 있습니다. 수집된 개인정보는 유효기간 전까지만 보관 가능하며, 유효기간이 지났다면 반드시 파기해야 합니다. 예를 들어, A라는 약관의 유효기간이 12 달이고, 2021년 1월 5일에 수집된 개인정보가 A약관으로 수집되었다면 해당 개인정보는 2022년 1월 4일까지 보관 가능하며 2022년 1월 5일부터 파기해야 할 개인정보입니다. 당신은 오늘 날짜로 파기해야 할 개인정보 번호들을 구하려 합니다. 모든 달은 28일까지 있다고 가정합니다. 다음은..
· ☘️Spring
이번 주는 스프링 시큐리티 적용을 하면서 수많은 삽질을 겪게 되었습니다. 트러블슈팅 경험을 정리하기 전에 먼저 스프링 시큐리티의 기초를 먼저 정리해봅시다! Servlet 이란? Servlet 클래스 관계도 Servlet은 인터페이스이며, 이를 상속받은 것이 GenericServlet (추상클래스)입니다. GenericServlet은 다시 상속받은 것이 HttpServlet (추상클래스)입니다. HttpServlet의 service 메소드는 HttpServletRequest를 인자로 받습니다. 이 때의 HttpServletRequest는 ServletRequest 인터페이스의 구현체입니다. HttpServletRequest 의 역할은 결국엔 서블릿 컨테이너에서 HttpServlet의 service(Http..
· 🔍Kotlin
코틀린이 자바로 컴파일될 때, 그 컴파일 방식이 성능에 영향을 미칩니다. 특히 람다를 파라미터로 전달하는 경우에 대해서 자세히 살펴보겠습니다. 코틀린은 람다를 무명 클래스로 컴파일한다 // 람다 - 무명 객체를 메서드를 호출할 때마다 반복 사용 postponeComputation(1000) {println(42)} // 람다를 컴파일한다면? 무명 인스턴스가 생성됨 postponeComputation(1000, object: Runnable { override fun run() { println("hello") } } ) 코틀린은 기본적으로 람다를 무명클래스로 컴파일하지만 항상 새로운 무명 클래스를 생성하는 것은 아닙니다. 위의 경우는 항상 인스턴스가 생성되지만 사실은 아래와 같이 클래스를 한 번만 생성하..
· 🔒회고
글쓰는 또라이라는 개발자 글쓰기 커뮤니티에 참여하게 되었습니다. 인턴을 하는 동안 꾸준하게 글을 쓰는 습관을 잃지 않기 위해 신청한 활동입니다만. 인턴 한 달 생활해보니 정신이 없어서 ㅋㅋㅋ 글또가 아니었다면 이 글 조차도 쓰지 못했을거 같군요. 글또 9기를 신청한 것이 이번 년 들어 잘한 일 중 하나가 아닐까 싶습니다. 꾸준히 써보는 인턴 회고록은 처음이라 어색하지만 최대한 개인적인 감정은 덜어내고 작성해보도록 합니다. 사실 운이 좋게도 팀 내에서 회고를 하는 시즌이라 회고에 참여해보았습니다. 가끔 동아리에서 회고라는 것을 진행해보았을 땐 특별히 유의미함을 찾진 못하여 회고를 하는 이유에 대한 의문이 들었습니다. 아무래도 플젝 기간이 짧다보니 그 이후의 액션 아이템을 실행할 기회가 없었기 때문입니다. ..
· 🔒회고
요즘 생활기록부를 모바일로 볼 수 있다는 얘기를 듣고 친구랑 장난삼아 구경해보았다. 그리고 예상치 못한 것을 발견해버렸다. 개발자라는 단어가 무엇인지도 잘 모르던 시절에 진로희망에 소프트웨어 개발자라고 쓴 사태에 대하여 과거부터 현재까지 이르러 생각해보는 시간이다. 하루종일 tv를 보던 중학생은 좋아하는 것을 포기했던 것일까? 사실 나의 어렸을 때 꿈은 (내 기억으로는?) 예능/드라마 PD였다. 토요일 무한도전, 일요일 1박2일, 그리고 월화수목금 드라마를 봐야됐었던 나는 친구가 코어타임에 놀자고 하면 안된다고 단호하게 거절했을 정도로 tv를 사랑했었다. 그래서 자연스럽게 장래희망도 분명 PD였는데 왜 생활기록부에는 예상치 못한 진로희망이 적혀있을까? 나는 좋아하는 것을 포기했던 것일까? 아닌거같다. 나..
· ☘️Spring
JPA N+1 이 무엇인지 그리고 어떻게 최적화하는지 알아보도록 하자! ✔️ JPA N+1 문제란? 다대일 관계 Member와 Team를 정의해봅시다. @Entity @NoArgsConstructor @AllArgsConstructor @Builder @Getter @Setter public class Member { @Id private Long memberId; private String memberName; @ManyToOne private Team team; } @Entity @NoArgsConstructor @AllArgsConstructor @Builder @Getter @Setter public class Team { @Id private Long teamId; private String t..
kkyu0718
개발 로그 스토리지