분류 전체보기

    Kotlin :: Backing fields 란

    Kotlin :: Backing fields 란

    코틀린을 공부하면서 계속 어색했던 부분은 프로퍼티(property), Backing fields 라는 표현이었다. 자바에서 접하던 필드, getter, setter 등을 묶어서 코틀린에서는 프로퍼티라고 부르는데, 애매하게 알고 넘어갔더니 뒤로 갈수록 꼬이게 됐다.. 왜 필드처럼 생겨가지고는 먼저 프로퍼티와 custom 접근자에 대해 간단히 알아보고, Backing fields 에 대해 알아보자. Backing fields 가 뭘까 class HttpResponse(val body: String, var headers: Map) 간단하게 예시 클래스를 만들어보자. body 와 headers 라는 프로퍼티를 가지고 있는 클래스이다. 코틀린을 찍먹해본 사람이라면 알듯이, 코틀린 컴파일러는 body 프로퍼티에 ..

    2023 토스 NEXT 서버 직군 합격 후기

    2023 토스 NEXT 서버 직군 합격 후기

    2023년도 토스에서 진행한 Next 개발자 챌린지 전형 후기를 적어본다. Server 직무로 지원했고, 코딩테스트, 1차 기술 직무 인터뷰, 최종 문화적합성 인터뷰까지 경험했다. 아직 최종 결과는 나오지 않았지만, 합격 여부에 상관없이 전형을 밟는 내내 좋은 경험이고 성장의 밑거름이 되었다는 생각이 들어 두고두고 꺼내보면서 동기부여 받고자 한다. 코딩테스트 먼저 코딩테스트는 이전의 후기들에서 본 것들과 동일하게 알고리즘 7문제와 서술형 5문제가 나왔다. 2시간 20분 동안 모든 문제를 해결해야 해서 심리적 압박감이 좀 들었다. 그리고 이번 해의 문제는 난이도가 조금 있었다고 다들 말을 했다.. 알고리즘 문제는 꾸준히 푸는 게 답인 것 같다. 그래도 최선을 다해서 풀었고, 알고리즘 문제는 4.5문제를 맞..

    온프레미스 서버 구축기 (feat: 라즈베리파이4 & Ubuntu22.04)

    온프레미스 서버 구축기 (feat: 라즈베리파이4 & Ubuntu22.04)

    기존에 사용하던 AWS 프리티어가 끝났습니다. 소마할 때는 서버비를 줘서 좋았는데, 사이드를 하면서 사비로 클라우드 비용을 충당하기는 부담이 됐습니다. 그래서 결국 마지못해 기쁜 마음으로 저만의 서버를 구축하기로 했습니다. 캡디 자재비로 라즈베리파이 3개를 대기시켜놨기 때문에 걱정은 하나도 되지 않았습니다 ! 라즈베리파이를 이용해서 개인 서버를 만들고 싶거나, 이것저것 놀아보고 싶은 사람들. 그리고 혹시 미래의 나를 위해 과정을 기록해두었습니다. 그럼 바로 나만의 play ground 를 만들어봅시다 🙌 목표 원래는 라베파가 세개 있어서 공부 겸 쿠버네티스를 적용해보려고 했었는데 서버가 없어서 클라이언트 개발자들의 작업이 멈춘 상태라 일단 개발 테스트용 컨테이너 먼저 올리기로 했습니다. 요약하자면 라베파..

    Docker :: Buildx 와 Github Actions 로 Multi-Platform Image 만들기

    Docker :: Buildx 와 Github Actions 로 Multi-Platform Image 만들기

    에러 로그 The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) 문제 상황 지금 제 프로젝트는 로컬에서 feature 브랜치를 파서 개발한 후 develop 브랜치로 merge 요청을 보내면 Github actions 이 실행되는 구조입니다. Github actions 에서는 Docker 이미지를 빌드 후 hub 에 push 하고, 서버에 ssh 로 접속해 방금 push 한 이미지를 pull 받은 후 docker compose up 을 실행합니다. 이때 정상적으로 빌드해서 push 한 이미지가 서버에서는 run 되지 않는 이슈가 있었습니다. 현재 프로젝트의 개발서버는 제 자..

    프로그래머스 :: 개인정보 수집 유효기간 (Python)

    프로그래머스 :: 개인정보 수집 유효기간 (Python)

    문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/150370 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방식 문제는 2023 카카오 공채 1번 문제. 문제에서 개인정보를 수집한 날짜와 약관별 개인정보 보관 가능기간을 준다. 주어진 오늘날짜와 비교해서 파기해야 하는 개인정보 번호를 출력하는 문제. “날짜 문제는 단위를 통일해서 풀어라” - 내가 좋아하는 개발자의 명언. 그 말 그대로 년,월,일 포맷으로 되어 있는 날짜정보를 일수로 통일하면 바로 풀리는 문제다. 모든 달이 28일이므로..

    프로그래머스 :: 보석 쇼핑 (Python)

    프로그래머스 :: 보석 쇼핑 (Python)

    문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/67258 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방식 문제에서 주어진 보석 배열을 완전 탐색해야하는 문제이다. 그런데 N 이 10만..? 일반적인 탐색 알고리즘은 O(N^2) 이기 때문에, O(N) 인 투포인터를 써야 하나 생각했다. 여기서 left, right 두 포인터를 인덱스로 두고 그 사이에 어떤 보석들이 있는지를 확인해야 하는데, 이 부분에서 효율성 점수가 깎일 수 있다. 어차피 포인터를 하나씩 증가시키기 때문에 gem..

    프로그래머스 :: 두 큐 합 같게 만들기 (Python)

    프로그래머스 :: 두 큐 합 같게 만들기 (Python)

    문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방식 먼저 큐에서 pop 을 할 때 pop(0) 보다 deque 의 popleft() 가 시간복잡도가 작기 때문에 deque 를 사용했다. 문제를 풀 때는 두 가지를 고려했다. 정답을 찾는 방법 반복문 종료 시점 예시를 보면서 Greedy 하게 합이 더 큰 큐에서 합이 작은 큐로 원소를 옮겨나가면 된다고 생각했다. 그럼 이제 언제까지 반복문을 돌아야 할지가 중요한데, 예시에서 q..

    OAuth 정복기 (OAuth1.0 에서 OAuth2.0로)

    OAuth 정복기 (OAuth1.0 에서 OAuth2.0로)

    OAuth : Open Authorization (+Authentication) OAuth 는 “인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹 사이트 상의 자신들의 정보에 대해 웹사이트나 어플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준 프로토콜이다.” (위키백과) 무슨 말인데 이게 예를 들어 “juju” 라는 웹사이트가 있다고 하자. juju 는 사용자 인증을 위해 Google 이나 Kakao 등의 소셜 로그인 방식을 사용한다. 이렇게 로그인하게 되면 juju 는 외부 서비스 (Google, Kakao) 의 특정 자원을 접근 및 사용할 수 있는 권한을 인가 받게 된다. 이때 사용되는 프로토콜이 바로 OAuth ! 접근 권한을 위임 받을 수 있는..