New

  • 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일이므로..

Hot

  • Python :: 5 - 여러 번 반복하는 일을 하자

    Python :: 5 - 여러 번 반복하는 일을 하자

    앞 장에서 우리는 무한 루프 구조를 살짝 경험해보았다. 프로그램에서 "반복" 이라는 것은 큰 의미를 가진다. 프로그램을 작성하는 것은 결국 우리가 직접 하기 어려운 일들을 컴퓨터에게 맡기는 것인데, 어떤 일을 반복해야 하는 횟수가 클수록 컴퓨터에게 맡겼을 때의 효율은 올라간다. "반복" 하기 위해서는 반복문을 사용하는데, 반복 구조를 사용하면 프로그램이 간결해지게 된다. 예를 들어 동일한 작업을 반복하기 위해 똑같은 문장을 복사하여 붙여넣기 하는 것보다 반복 구조를 사용하는 편이 프로그램을 간결하게 만든다. 또 프로그래밍에 필요한 시간도 단축할 수 있다. 반복문을 간단하게 맛보자. for i in range(100) : print("파이썬을 열심히 공부하자!") 뒤에서 배우겠지만 해당 코드는 문자열을 1..

  • Python :: 14 - 기계학습으로 똑똑한 컴퓨터를 만들자

    Python :: 14 - 기계학습으로 똑똑한 컴퓨터를 만들자

    우리는 이때까지 파이썬에 대해 공부해왔다. 여러 라이브러리들을 사용해보고, 다양한 데이터를 분석하는 것에 초점을 두었다. 이번에는 데이터를 기반으로 학습을 수행하는 기계학습의 원리를 알아보자. 파이썬은 이러한 기계학습을 공부하는 것에 있어서도 다양한 라이브러리를 지원해준다. 우리는 그 중 하나인 sckit-learn 을 이용하여 간단한 분석을 진행해보겠다. 우선 기계학습에 대해 알아보자. 컴퓨터가 사람처럼 스스로 배울 수 있다면 어떻게 될까? 우리는 이때까지 컴퓨터에게 특정 작업을 시키기 위해 프로그램을 작성하고 지시하였다. 하지만 컴퓨터가 데이터를 기반으로 스스로 학습할 수 있다면 컴퓨터는 더욱 더 복잡한 일을 할 수 있을 것이다. 예를 들면 알파고와 이세돌의 바둑 경기가 그렇다. 알파고에게 바둑 경기..

  • Gradle :: Lombok 추가 시 이슈

    Gradle :: Lombok 추가 시 이슈

    Annotation 을 사용하기 위해 build.gradle 에 dependency 를 추가하는 과정에서 여러 이슈들이 있었다. 오늘은 그 이슈들을 해결하는 과정을 리마인더하기 위해 적어보려 한다. 먼저 lombok 을 사용하기 위해 build.gradle 에 다음 문구를 추가했다. implementation('org.projectlombok:lombok') 이후 아래 DTO 코드에 Annotation 을 추가하고 Unit test 를 진행했다. @Getter @RequiredArgsConstructor public class HelloResponseDto { private final String name; private final int amount; } 테스트 코드를 실행했는데 아래 에러 발생.. h..

  • SW마에스트로 프로젝트 회고 :: 백엔드 개발자가 유저 관점에서 서비스 기획하기 (feat: SKY)

    SW마에스트로 프로젝트 회고 :: 백엔드 개발자가 유저 관점에서 서비스 기획하기 (feat: SKY)

    https://twix.tistory.com/33 SW마에스트로 13기 합격 후기 얼떨결에 지원하고 얼떨결에 붙은 소마 아직도 어떻게 붙었는지 의문이긴 하다 🤔 소마 다 끝나고 마저 쓰는 게으름.. 이게 제일 의문.. 왜 소마를 선택했는가 학교에서 수업을 듣고 혼자 토이 twix.tistory.com 13기가 시작되고 멋난이 팀원들, 스카이 멘토와 함께한 소마 프로젝트 과정 후기 팀 빌딩. 소마 시작과 동시에 팀을 구하기 위한 다양한 사람들의 노력들이 돋보인다. 천천히 팀을 빌딩하고 싶었지만 주위 분위기가 그렇지 않기에.. 나 또한 조급해지는 경향이 있었다. 소마 시작하고 첫 멘토링을 온라인으로 진행했는데, 그 때 만났던 형과 함께 팀을 하게 되었다. 창업을 희망하는 반짝이는 눈동자에 나도 모르게 이끌렸..

  • GDB :: gdb 사용법 및 옵션 정리

    GDB :: gdb 사용법 및 옵션 정리

    GDB 라고 부르는 GNU Debugger는 GNU 소프트웨어 시스템을 위한 기본 디버거. GDB는 다양한 유닉스 기반의 시스템에서 동작하는 이식성 있는 디버거로, 에이다, C, C++, 포트란 등의 여러 프로그래밍 언어를 지원. GDB 사용법 % gcc -g test.c -o test % gdb (gdb) file [test] // symbol table을 불러와서 디버깅 준비. (gdb) list // 현재 위치에서 소스 파일의 내용을 10줄 보여줌. (gdb) run (r) // 프로그램 시작. (gdb) break (b) // 라인 번호나 함수 이름을 인자로 줄 수 있음. 특정 라인이나 함수에 브레이크 포인트 설정. (gdb) disas [func or var] // 특정 주소를 disassemb..