코드잇 앰배서더 2기로서 참여하는 첫 활동 발대식 에 다녀왔다 비대면으로 진행되었던 1기와는 다르게 코드잇 본사가 위치한 서울 을지로 시그니처 타워에서 대면으로 진행되었다 내가 소속된 대학에도 뛰어난 동기, 선배들이 많이 계시지만 최근에 아르바이트와 계약직 업무, 교내 /교외 연합으로 진행되는 여러스터디와 동아리에 참여하며 학교에서 배울 수 있는 것은 현업과 거리가 멀기도 하고 다양한 사람들과의 교류를 통한 배움이 중요하다는 것을 아주 아주 크게, 절실하게 느끼고 있던 터라 대면 커뮤니티 활동과 현직자 대면 만남이 가능하다기에 코드잇 앰배서더 합격을 더 기뻐했었던 것 같다 - [ 2024 - 01 - 04 - 목 ] 퇴근 후 발대식 시작 시간인 5시에 맞춰 을지로로 향했다 30분 정도 일찍 시그니처 타워..
전체 글
주 - 컴퓨터공학 / 복수 - 사이버 보안*** 공감 주의 *** 컴퓨터공학과 입학을 위해 자소서를 쓰던 고3이 어제 같은데 벌써 컴공 2학년 2학기가 끝나고 3학년을 앞둔 겨울방학이 되었다 2학년 2학기 기말고사를 앞둔 시점부터는 며칠 후에 고학년이 된다고 생각하니 정말 방학을 알차게 보내야할 것 같았다 프로젝트, 대회, 자격증, 인턴, 대외활동, 어학, 코테 준비 등 ... 해야할 것들은 정말 많은데 프로젝트나 대회에 참여하기에는 React, Node.js, Next.js, Django, SQL 등 능숙하게 다룰 수 있는 것이 없었다 나만 이룬 것 없이 살았나 싶어 가까운 동기들에게도 물어보았지만 동기들도 모두 참여하고 싶은데 민폐가 될까봐 두려워 참여할 수가 없다고 했다 이번 방학이 프로젝트에 필요한 기본적인 스택들을 학습할 수 있는 마지..
2024 . 01 . 02 ~ 2024 . 01 . 08 코드잇 수강 1주차 코드잇은 본인의 학습량을 직관적으로 파악하고 다른 학습자와 비교할 수 있다는 점에서 학습적인 동기부여를 많이 받을 수 있다 내가 참여한 코드잇의 도전 30일 코딩 캠프는 30일 간 24회 이상 출석하고 7개 이상의 토픽을 수료하면 코딩 캠프 수료 인증이 되고 활동 인증서와 강의 수료증, 장학금을 받을 수 있다 장학금은 한 가지도 아니고, 수강랭킹 / 개근 / 학습 일기 챌린지 총 세 개의 부문으로 받을 수 있어 더욱 열심히 참여하고 싶은 마음이 들게 한다 코드잇 강의는 레슨과 챕터, 토픽 단위로 구성되는데 레슨은 강의, 노트, 퀴즈, 과제를 의미하는 가장 단위의 수업이고 레슨을 묶은 것이 챕터, 챕터를 묶어서 선택적으로 수강하도..
다양한 의존 관계 주입 방법 중 지금까지 생성자 주입 방식을 사용했으며 수정자 setter를 주입하는 방법, 필드에 바로 주입하는 방법, 일반 메서드를 통해 주입하는 방법, 자동 주입 대상을 옵션으로 처리하는 방법이 있다. 생성자 주입 방식을 선택하는 이유는 프레임 워크에 의존하지 않고 순수 자바 언어의 특징을 살리기 위함이다 생성자 주입을 사용하는 것이 기본적이며 필수 값이 아닌 경우에는 setter 주입 방식을 옵션으로 부여하는 방식을 사용할 수 있다. 생성자 주입과 수정자 주입을 동시에 사용할 수 있으며 생성자 주입 방식을 추천하는 편이다. Lombok 라이브러리를 제공하면 코드를 비교적 간단하게 정리할 수 있으며 final 키워드가 있는 필드들만 모아 생성자를 자동으로 만들어주는 @Required..
컴포넌트 스캔(Component Scan) 설정 정보(AppConfig.class) 없이 자동으로 스프링 빈을 등록하는 컴포넌트 스캔 기능을 제공 스프링 빈 등록 ->직접 자바 코드로 등록하는 방법, 컴포넌트 스캔과 자동의존관계를 설정하는 @Autowired 사용 방법 @ComponentScan은 탐색 위치에 @Component가 붙은 모든 클래스를 스프링 빈으로 등록 기본적으로 빈 이름은 맨 앞글자를 소문자로 변경해서 사용하고 어노테이션 뒤에 ("문자열")을 사용해 직접 설정할 수도 있음 탐색범위(basePackages) 필요한 위치부터 탐색할 수 있도록 탐색 시작 위치를 지정할 수 있음 basePackages : 탐색 시작 위치 지정, 해당 패키지부터 하위까지 basePackagesClasses : ..
순수 의존성 주입 컨테이너 - 클라이언트 요청마다 생성하는 문제 - 메모리 낭비 객체 하나만 생성하고 공유하도록 설계하여 해결 = 싱글톤 패턴 싱글톤 패턴 -> 클래스의 인스턴스가 단 하나만 생성되도록 보장하는 디자인 패턴 -> private 접근지정자로 설정 - new 연산자를 활용한 (동적할당) 외부에서의 접근, 객체 인스턴스 추가 생성을 방어함 private 접근지정자로 선언되었으므로 getter 메서드를 통해서만 조회 가능하고 해당 메서드 호출하면 항상 같은 인스턴스를 반환함 싱글톤 패턴이 언제나 좋기만 한가? - 당연히 NO 구현하는 코드가 길어짐 클라이언트가 구체 클래스에 의존하게 되는데 DIP 위반, OCP 위반 내부 속성 변경 및 초기화 難 (어려울 난) Private 접근지정자로 인해 자..
1. 스프링 컨테이너 스프링 컨테이너는 자바 객체의 생명 주기를 관리하며 생성된 자바 객체들에게 추가적인 기능을 제공한다. 스프링에서는 자바 객체를 빈이라고 부르기 때문에 스프링 컨테이너는 내부에 존재하는 빈의 생명주기를 관리하며 생성된 빈에게 추가적인 기능을 제공하는 것이다. xml, 어노테이션 기반의 자바 설정 클래스로 만들 수 있으며 스프링 부트가 등장하면서 대부분 사용하지 않게 되었다. 의존성 주입을 통해 애플리케이션의 컴포넌트를 관리할 수 있으며 서로 다른 빈을 연결하여 애플리케이션 빈을 연결하는 역할을 한다. 2. 스프링 컨테이너 구성 인터페이스 스프링 컨테이너는 Beanfactory 와 ApplicationContext 두 종류의 인터페이스로 구현되어 있다. 3. 스프링 컨테이너 생성 과정 ..
# 새로운 할인 정책 개발 다형성 덕분에 새로운 할인 정책 코드를 개발하는 것 자체는 아무 문제가 없다. 다만 적용하려고 할 때 클라이언트코드도 변경해야한다. 인터페이스와 구연 클래스 모두에 의존하기 때문이다. 이건 의존관계 역전 원칙을 위반한 것. # 관심사의 분리 클라이언트가 의존하는 서버 구현 객체를 직접 생성 및 실행하였으나 클라이언트 객체는 자신의 역할을 실행하는 것에만 집중하고 권한이 줄어들어 책임이 명확해졌다. appconfig는 애플리케이션 전체 동작 방식을 구성하기 위해서 구현 객체를 생성하고 연결하는 역할을 책임. # AppConfig 리팩터링 구성 정보에서 역할과 구현을 명확하게 분리하는 것이기 때문에 역할이 잘 드러나게 되고 중복을 제거할 수 있다. # SRP - 단일 책임 원칙 한..
이클립스에서 오류가 발생해서 조금 화나는 마음으로 강의만 먼저 듣고 정리한 후 한결 가벼워진 마음으로 인텔리제이 설치중.. # 프로젝트 생성 start.spring.io 에서 다음과 같이 설정하여 생성 스프링부트 3.0 이상은 java 17 이상, jakarta 패키지로 변경해야함 # Gradle 전체 설정 build.gradle plugins { id 'org.springframework.boot' version '2.3.3.RELEASE' id 'io.spring.dependency-management' version '1.0.9.RELEASE' id 'java' } group = 'hello' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' repos..
# 1. GDSC 소개 GDSC 는 Google Developer Student Clubs 의 약자로 구글 기술에 관심을 가진 학생 개발자들을 위해 Google Developers 가 지원하는 대학교 커뮤니티 프로그램 입니다 Google Developer Community Program 중 하나로 전세계 100여개 국가의 1900개 이상의 대학들에서 챕터가 운영되고 있으며 한국에는 2023-2024 chapter 기준 36개의 챕터가 활동하고 있습니다 # 2. Solution Challenge 소개 매년 GDSC 에서는 Solution Challenge (솔루션 챌린지) 라는 이름으로 구글 기술을 사용하여 UN의 17가지 지속 가능한 개발 목표 중 하나 이상을 해결하는 전세계 대규모 프로젝트 컨테스트를 ..