모든 객체의 공통 메서드
·
공부
equals는 일반 규약을 지켜 재정의하라 이번 장에서는 Java의 최상위 객체인 Object에서 사용되는 메서드(equals, hashCode, toString, clone, finalize)들에 대한 주의사항을 소개한다. 이 중 finalize는 생략한다. 처음 다른 언어를 접하고 Java를 배운 사람들은 대부분 ==와 .equals의 차이를 한 번씩은 경험한다. 사소하지만 객체의 동일성은 메모리 주소가 아닌 객체가 가진 상태를 기준한다는 점에서 Java의 객체지향적인 부분이 드러나는 부분이라고 할 수 있다. 이처럼 객체지향언어에서 동치는 물리 또는 논리적 성격 두 가지를 의미할 수 있다. 상속을 통한 확장은 명세가 중요하다. 만약 명세가 제대로 잡히지 않은 메서드를 상속받아 오버라이드(overwri..
나만의 홈랩(HomeLab) 구축기
·
메모
굳이 좋은 클라우드 서비스 나두고 왜? 항상 클라우드 서비스를 사용하면서 내 갈증은 제한된 리소스였다. 대부분의 클라우드 서비스는 학생 또는 신규 가입자에게 무료 플랜을 제공한다. 하지만 제공되는 리소스는 굉장히 제한적이고, 작은 규모의 클라우드 서비스는 Spring 기반의 서버도 올릴 수 없다. (요청 한 번 하면 OOM으로 죽는다...) 정말 서버만 올릴 것이면 만족할 수 있다. 하지만 그 과정에서 배울 점은 EC2 생성, 간단한 리눅스 명령어 좀 더 나아가 github action으로 ci/cd까지하면 많이 경험했다고 생각한다. 하지만 Jenkins, kubernates과 구성된 서버를 접속할 수 있도록 Proxy를 설정하는 등등을 해보고 싶으면 상상도 할 수 없다. 비용은? 처음 홈랩을 만든다고 ..
우당탕탕 k8s 기록
·
메모
문제 ~$ sudo kubeadm init [init] Using Kubernetes version: v1.28.3 [preflight] Running pre-flight checks error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR CRI]: container runtime is not running: output: time="2023-10-24T09:00:31Z" level=fatal msg="validate service connection: validate CRI v1 runtime API for endpoint \"unix:///var/run/containerd/containerd.sock\": rpc ..
첫 번째, TL;DR
·
프로젝트/개발
TL;DR 코드로 하루를 빛내며, 미래를 채워가는 여정에 함께하세요. 내가 놓치고 있던 개발 경험을 데이터화 해보자! 처음 이 프로젝트를 구상한 단계에서 내가 겪은 문제는 파편화된 개발 경험을 관리하기 어려웠던 것이다. 예를 들어서 jira, wakatime, github commit, 알고리즘 문제 등등 내가 했던 경험들이 모두 파편화되어서 이 문제를 어떻게 해결하면 좋을까? 라는 생각이 들었다. 1. 타켓 유저 선정 개발 경험을 가장 외부에 들어냈으면 하는 유저층은 개발 직군으로 취업을 희망하는 관련 학과 학생, 취준생 등등으로 유추했다. 관련해 에브리타임, 카카오톡 IT 직군 취업 준비생, 국비 수강생 등을 대상으로 설문조사를 진행했다. 많은 인원은 아니지만, 총 32명의 설문 결과를 기반으로 서비..
객체 생성과 파괴
·
공부
정적 팩터리 메서드 일반적인 객체지향 프로그래밍 언어들은 객체를 생성할 때 객체의 상태를 초기화할 수 있는 constructor(이하, 생성자)인 특별한 메서드가 존재한다. 각 언어마다 의미하는 키워드는 다르지만, 그 의미는 모두 동일한다. 이 책에서 소개하는 정적 팩터리 메서드를 권장하는 이유를 요약하면 다음과 같다. 이름을 가질 수 있다. 생성할 인스턴스를 제어할 수 있다. 위 이유로 알 수 있듯 기본 생성자는 언어 레벨에서의 제한과 생성할 객체의 상태는 제어할 수 있지만, 인스턴스 자체를 제어할 수 없다. 때문에 상태에 따라 인스턴스를 생성하기 위해서는 constructor overloading 하거나, 클라이언트 측에서 생성된 객체에 대한 상태를 setter를 통해 변경해야한다. 하지만 두 방법 ..
Github 계정 GPG 등록하기
·
공부
개발을 하면서 Github는 빼놓을 수 없는 최애 사이트 중 하나일 것이다. 최근은 커밋이 일기장 같은 느낌으로 와서 이것저것 커밋 내역에 뭐를 달아보고 있다. 최근 달았던 뱃지(?) 중 가장 마음에 드는 것이 바로 지금 소개할 Verified이다. 마치 장인이 자신의 작품에 자신의 이니셜을 새겨 넣는듯한 느낌이 들어서 내 코드에 더 애착이 생기는 것은 덤! 설치 먼저 gpg를 생성/관리하기 위하여 gpg를 설치한다. brew install gnupg2 키 생성 gpg를 설치했다면 이제 사용할 키를 생성해야한다. 키를 생성하기 위해선 --gen-key를 이용해 gpg를 실행한다. gpg --gen-key 이때 주의할 점은 키 생성 시 입력한 암호를 잃어버리면 이후 키 등록 및 사용에 문제가 있으니 기억해..