2024년 취업을 성공하였다.취업 자체가 쉽지 않았다.계속해서 노력하였고 운이 좋아서 원하는 회사에 입사하게 되었다.그 과정에서 느낀 점이나 배운 점 등등 여러 가지 나의 취업 과정을 작성할 것이다.지금 작성하는 이 글도 나중에 보면 매우 큰 의미가 있을 것이라 생각한다.조금은 두서없고 부족하지만 나에게는 의미 있는 인생 이야기이다. 인생에서 처음으로 미래에 대해 생각하다나는 큰 목표나 꿈이 없이 살아왔다. 지금생각해 보면 참으로 시간이 아까웠던 시절이었다.그러던 와중에 친한 동기 형과 함께 개표 알바를 한 적이 있다.이때 다른 동기들의 근황 이야기를 하며 나와는 다르게 목표를 가지고 열심히 살아가는 동기의 근황에 현타를 크게 느꼈다.이때부터 진지하게 나의 미래에 대해 생각하는 계기가 되었다. 본격적..
오늘도 오랜만에 블로깅을 작성하는 것 같다.아무래도 SDC라는 중요한 프로젝트와 취업 준비를 하다 보니 너무 바쁘게 살아왔다.저번주에 SDC 프로젝트가 끝났다. (문제가 되는 사항이 있다면 삭제할 예정입니다) SDC란? 대충 이런 내용을 담고 있다.실제 약 1000명의 교육생 중에 30명 정도만 SDC 프로젝트를 수행할 수 있는 기회가 주어진다. 여러 가지 주제가 있었는데 내가 고른 주제는 web 기반의 오토 레이블링이다.간단히 말하자면 사용자가 수동 레이블링을 진행하고 그 데이터를 바탕으로 모델을 학습시키고 다시 학습한 모델을 바탕으로 나머지 이미지를 오토 레이블링을 하는 서비스이다.이를 이미지로 표현하면 아래와 같다... 프로젝트에 대해 상세하게 다루고 싶지만 어디까지 공개를 할 수 있는지 모르기에..
이번에는 재난 알리미라는 어플을 만들었다.평소에 바쁜 일상 때문인지 나의 나태함 때문인지 글을 오랜만에 작성하게 되었다.프로젝트 전체적인 정리, 핵심기능을 작성하려 한다. 재난 알리미가 무엇인가? 위와 같이 현재 존재하는 재난 알림은 나의 위치기반으로 한 재난 알림만 받을 수 있기에 지인의 정보도 얻을 수 있도록 하고 싶었다.AED나 대피소와 같은 위치 기반 조회 시스템이 부족하다고 생각했다.인위재난의 경우 빠르게 알아채기 어렵다.이러한 니즈를 해소하기 위해 개발을 시작했다. 서비스의 특징 Spring Security 스프링 시큐리티를 활용하여 로그인을 구현하였다. Security Config더보기@Configuration@EnableWebSecurity@RequiredArgsConstructorpub..
item34. int 상수 대신 열거 타입을 사용하라int 상수 패턴public static final int APPLE_FUJI = 0;public static final int APPLE_PIPPIN = 1;public static final int APPLE_GRANNY_SMITH = 2;public static final int ORANGE_NAVEL = 0;public static final int ORANGE_TEMPLE = 1;public static final int ORANGE_BLOOD = 2;특정 경우를 상수 값으로 치환하여 표현하는 방식이다.int 상수 패턴의 단점타입 안전을 보장할 방법 x, 표현력도 안 좋음네임스페이스가 없기에 동일한 접두어가 반복됨오렌지와 사과를 대체해도 == ..
item26.로 타입은 사용하지 말라클래스 혹은 인터페이스 선언에 타입 매개변수가 쓰이면 이를 제네릭 타입이라고 한다.제네릭 타입은 일련의 매개변수화 타입을 정의한다.제네릭 타입을 정의하면 그에 딸린 raw type을 정의한다.raw type은 제네릭 타입에서 타입 매개변수를 사용하지 않은 것 ex) List, Set// 제네릭을 지원하기 전엔 컬렉션을 아래와 같이 선언private final Collection stamps = ...;stamps.add(new Coin(...));for (Iterator it = stamps.iterator(); i.hasNext();) { Stamp stamp = (Stamp) i.next(); // ClassCastException stamp.cancel();}..
item15. 클래스와 멤버의 접근 권한을 최소화하라내부 데이터와 내부 구현 정보를 외부로부터 얼마나 잘 숨겼는지가 중요하다정보은닉, 캡슐화라고 함시스템을 구성하는 컴포넌트를 독립시켜 개발, 테스트, 최적화, 적용, 분석, 수정이 개별적으로 가능해야 함장점컴포넌트 간 의존성 x → 독립적인 병렬 개발이 가능 → 개발 속도 증가컴포넌트별 디버깅이 가능 → 관리 비용이 절약컴포넌트별 최적화가 가능 → 성능 최적화 적용이 쉬움컴포넌트 간 의존성 x → 재사용 가능컴포넌트별 테스트 가능 → 제작 난이도 낮아짐컴포넌트 간 의존성을 없애는 것의 핵심이 접근 제한자임 → 가능하면 가장 낮은 접근 수준을 유지private: 멤버를 선언한 톱레벨 클래스에서만 접근 가능package-private: 멤버가 소속된 패키지 ..
item10. equals는 일반 규약을 지켜 재정의하라 equals() 메서드는 객체의 내용이 동일한지 논리적 동치성을 확인하는 메서드이다.equals를 구현하지 않아야 할 때각 인스턴스가 본질적으로 고유할 때인스턴스의 논리적 동치성을 검사할 일이 없을 때상위 클래스에서 재정의한 equals()가 하위 클래스에서도 문제없이 이용 가능할 때equals를 구현해요 할 때상위 클래스에 equals()를 재사용할 수 없고, 객체 간의 논리적 동치성을 구현해야 할 때주로 Integer, String과 같은 값 클래스의 경우.. 등등equals() 메서드의 일반 규약null-아님 : null 이 아닌 모든 참조 값 x에 대해 x.equals(null)은 false이다.반사성 : x.equals(x)는 true이다..
오늘은 이펙티브 자바를 오랜만에 다시 복습하고 중요한 부분만 간단하게 정리할 예정이다. item1. 생성자 대신 정적 팩토리 메서드를 고려하라.객체 생성을 할 때 생성자가 아닌 정적 팩토리 메서드를 객체 생성 용도로 쓰는 것은 경우에 따라 좋다.장점 1: 생성자가 이름을 가질 수 있다.예를 들면 Integer.parseInt()는 정적 팩토리 메서드이다.이름에서 무엇을 의미하는지 파악하기 쉬움 → 의도가 명확함장점 2: 매 호출 시 인스턴스를 새로 생성할 필요가 없다.public final class Boolean implements java.io.Serializable, Comparable{ /** * The {@code B..
오랜만에 블로깅을 하는 것 같다.핑계이지만, 싸피와 여러 학습을 병행하기에 시간이 없었다. 오늘은 싸피 1학기를 수료하였고 방학을 시작하여 글을 쓰기로 하였다.블로그 카테고리가 회고랑 활동이랑 섞인 느낌이어서 애매해진 감이 있긴 하다.아무튼 오늘은 회고로 작성할 예정이다. 내가 처음 싸피에 들어온 목적은 여러 가지가 있지만, 여러 사람들과 소통하며 성장하고 싶었기 때문이다.이를 달성했는지 돌아보면.. 달성한 것내가 싸피에 와서 크게 느낀 것은 좋은 사람들은 많고, 내가 성장하기 위해 스스로 열심히 해야 한다는 것이다.실제로 열심히 하는 사람들이 많아서 나 역시도 자극을 받고 여러 도전을 했었다.이전에는 자격증을 신경 쓰지 않았는데, 싸피에서 여러 사람들과 소통하며 SQLD, 정보처리기사를 시도하고 취득하..
현재 여행 관련 서비스를 제공하는 웹 프로젝트를 진행 중이다. 서블릿과 jsp를 사용하여 틀을 만들었다. 우선 지금까지 만든 정보를 기록하려고 한다. 웹 서블릿과 jsp를 중점으로 플젝을 진행한 적은 처음이라 아직도 어색하고 부족한 부분이 많았다. 그래도 확실히 로우레벨로 개발을 하다 보니 기초가 많이 늘었다고 생각한다. 이후 이걸 프레임워크를 사용하여 더욱 발전시킬 생각이다. 프로젝트 내용이 많아서 전체적으로 요약하며 설명할 예정이다. 주요 기능 header와 footer를 사용하여 중복되는 화면을 재사용하였다. 다른 jsp에서 include를 사용하여 그대로 가져갈 수 있다. 또한 로그인과 회원가입의 경우 간단하게 modal 창을 사용하였다. 이전 프로젝트는 백엔드만 맡아서 진행하였기에 검증의 경우도..