반응형
[패스트캠퍼스] 완강 후기 - The Red:25개 백엔드 개발 필수 현업 예제를 통해 마스터하는 Java Stream
공부/기타2023. 12. 12. 09:46[패스트캠퍼스] 완강 후기 - The Red:25개 백엔드 개발 필수 현업 예제를 통해 마스터하는 Java Stream

수강 강의 https://fastcampus.co.kr/dev_red_lsh The Red: 25개 백엔드 개발 필수 현업 예제를 통해 마스터하는 JAVA STREAM | 패스트캠퍼스 글로벌 SNS 기업이자 자바 오픈 소스 분야의 강자인 LinkedIn의 시니어 소프트웨어 엔지니어인 이승환 강사의 강의입니다. 이승환 강사는 백엔드 개발자로 LinkedIn에서 회원관리 및 거래 관리 부분 fastcampus.co.kr 완강 후기 총 두 번의 완강을 하였고, 스스로 생각하고 학습하는 방법을 깨달음으로써 한 단계 더 성장할 수 있었다. 처음 강의를 들었을 때 새로운 지식을 학습했으니, 업무를 하는 데 많은 변화가 있을 거라는 기대를 했었다. 하지만 나의 착각이었다. 기술을 학습했을 뿐이지 기술에 대한 이해도 ..

공부/기타2023. 11. 27. 19:33sdkman으로 스프링부트 프로젝트 설치, h2 database 설치 및 접속

sdkman & 스프링 부트 프로젝트 설치 - 강의에서는 Java11에 Spring Boot 2.6.4 버전을 사용하나, 포스팅 기준 Spring Initializr에서는 3.x.x버전과 Java 17부터 지원 - 토비님 강의 통해 알게 된 sdkman 활용해서 프로젝트 생성을 해 봄 1. sdkman 설치 https://sdkman.io/install Installation - SDKMAN! the Software Development Kit Manager SDKMAN! is a tool for managing parallel versions of multiple Software Development Kits on most Unix based systems. sdkman.io 2. JDK 17 설치 및..

[Next Step] 12장 확장성 있는 DI 프레임워크로 개선
독서/📚2023. 11. 23. 13:50[Next Step] 12장 확장성 있는 DI 프레임워크로 개선

12.1 필드와 setter 메소드에 @Inject 기능 추가현재 생성자 주입만 가능한데, @Inject를 활용해서 필드(field), setter 메소드를 통해서도 DI를 할 수 있도록 기능을 추가한다 필드와 생성자 주입@Service public class MyQnaService { private UserRepository userRepository @Inject private QuestionRepository questionRepository; @Inject public MyQnaService(UserRepository userRepository) { this.userRepository = userRepository }} setter 주입@Controllerpublic cla..

[Next Step] 11장 의존관계 주입(DI)을 통합 테스트 하기 쉬운 코드 만들기
독서/📚2023. 11. 21. 14:03[Next Step] 11장 의존관계 주입(DI)을 통합 테스트 하기 쉬운 코드 만들기

11.1 왜 DI가 필요한가?의존관계란 객체 혼자 모든 일을 처리하기 힘들기 때문에 내가 해야 할 작업을 다른 객체에게 위임하면서 발생한다.즉, 내가 가지고 있는 책임과 역할을 다른 객체에 위임하는 순간 발생하는 것이다. (중략..)DI는 객체 간의 의존관계를 어떻게 해결하느냐에 따른 새로운 접근 방식이다.지금까지 우리는 의존관계에 있는 객체를 사용하기 위해 객체를 직접 생성하고, 사용하는 방식으로 구현했다. (중략..)이 같은 방식으로 구현할 경우 유연한 개발을 하는데 한계가 있기 때문에 인스턴스를 생성하는 책임과 사용하는 책임을 분리하자는 것이다.(중략..)이처럼 객체 간의 의존관계에 대한 결정권을, 의존관계를 가지는 객체가 가지는 것이 아니라 외부의 누군가가 담당하도록 맡겨 버림으로써 좀 더 유연한..

[Next Step] 10장 새로운 MVC 프레임워크 구현을 통한 점진적 개선
독서/📚2023. 11. 20. 21:44[Next Step] 10장 새로운 MVC 프레임워크 구현을 통한 점진적 개선

목표✨ (p338)① 레거시 MVC프레임워크와 애노테이션 기반의 새로운 MVC 프레임워크가 동시에 서비스 가능하도록 구현② 인터페이스로 추상화 가능한 부분을 찾아 2개의 프레임워크가 공존 가능하도록 리팩토링 수행  10.1 MVC 프레임워크 요구사항 3단계10.1.1 요구사항 (p335) 아래 RequestMapping 코드를 보면 직접 요청 URL과 컨트롤러를 추가 해야 하는 불편함이 있다. 서블릿과 같이 애노테이션을 활용해 설정을 추가하고 서버가 시작할때 자동으로 매칭되도록 개선해 본다. (힌트: @Controller 애노테이션을 추가하고, 자바 리플렉션을 활용) 10.1.2 자바 리플렉션(p340)Hint① java.lang.Class API의 getConstructors(), getMethods(..

[Java] Reflection API 테스트 학습(with Baeldung)
공부/Java2023. 11. 20. 13:19[Java] Reflection API 테스트 학습(with Baeldung)

목차 *테스트 코드 작성시 JUnit5, Assertj 사용 Baeldung 테스트 학습 class name 활용하여 인스턴스 생성하기 Job 인터페이스 public interface Job { String getJobType(); } MaintenanceJob 클래스 public class MaintenanceJob implements Job{ @Override public String getJobType() { return "Maintenance Job"; } } *PaintJob, RepairJob 클래스도 반환값만 다르고 동일하게 구현 PlatinumJobCard 클래스 setJobType()에 String과 Class 타입으로 받아 인스턴스 생성 후 필드 주입하고, startJob()을 호출하는..

[Next Step] 9장 두 번째 양파 껍질을 벗기기 위한 중간 점검
독서/📚2023. 11. 18. 21:33[Next Step] 9장 두 번째 양파 껍질을 벗기기 위한 중간 점검

실습 프로젝트 저장소실습의 경우 처음에 fork 받았는데, 깃 허브 잔디가 심어지지 않아 기술 블로그 참고(링크)하여 저장소 설정을 변경하도록 함 jwp-basic https://github.com/slipp/jwp-basic/tree/step7-self-check GitHub - slipp/jwp-basic: 자바 웹 프로그래밍 기본 실습자바 웹 프로그래밍 기본 실습. Contribute to slipp/jwp-basic development by creating an account on GitHub.github.com자체 점검 요구사항(필수)① 로컬 개발 환경에 톰캣 서버를 시작하면 서블릿 컨테이너의 초기화 과정을 설명하라 (아래 참고) ② 로컬 개발환경에서 톰캣 서버를 시작한 후 http://loc..

[Next Step] 8장 Ajax를 활용해 새로고침 없이 데이터 갱신하기
독서/📚2023. 11. 17. 18:31[Next Step] 8장 Ajax를 활용해 새로고침 없이 데이터 갱신하기

실습 프로젝트 저장소실습의 경우 처음에 fork 받았는데, 깃 허브 잔디가 심어지지 않아 기술 블로그 참고(링크)하여 저장소 설정을 변경하도록 함 jwp-basic https://github.com/slipp/jwp-basic/tree/step4-qna-getting-started GitHub - slipp/jwp-basic: 자바 웹 프로그래밍 기본 실습자바 웹 프로그래밍 기본 실습. Contribute to slipp/jwp-basic development by creating an account on GitHub.github.com 8장 AJAX를 활용해 새로고침 없이 데이터 갱신하기- 이번 장에서는 질문 목록/상세, 답변 목록/생성/삭제 화면 및 기능 구현 후 리팩토링을 수행한다- 책에는 없는 내..

[Next Step] 7장 DB를 활용해 데이터를 영구적으로 저장하기
독서/📚2023. 11. 17. 11:24[Next Step] 7장 DB를 활용해 데이터를 영구적으로 저장하기

실습 프로젝트 저장소실습의 경우 처음에 fork 받았는데, 깃 허브 잔디가 심어지지 않아 기술 블로그 참고(링크)하여 저장소 설정을 변경하도록 함 jwp-basic https://github.com/slipp/jwp-basic/tree/step2-user-with-mvc-framework GitHub - slipp/jwp-basic: 자바 웹 프로그래밍 기본 실습자바 웹 프로그래밍 기본 실습. Contribute to slipp/jwp-basic development by creating an account on GitHub.github.com  자바 진영은 데이터베이스에 대한 접근 로직 처리를 담당하는 객체를 별도로 분리해 구현하는 것을 추천한다. 이 객체를 DAO(Data Access Object)라..

[Next Step] 6장 서블릿/JSP를 활용해 동적인 웹 애플리케이션 개발하기
독서/📚2023. 11. 16. 21:01[Next Step] 6장 서블릿/JSP를 활용해 동적인 웹 애플리케이션 개발하기

실습 프로젝트 저장소실습의 경우 처음에 fork 받았는데, 깃 허브 잔디가 심어지지 않아 기술 블로그 참고(링크)하여 저장소 설정을 변경하도록 함 jwp-basic (6.1)https://github.com/slipp/jwp-basic/tree/step0-getting-started GitHub - slipp/jwp-basic: 자바 웹 프로그래밍 기본 실습자바 웹 프로그래밍 기본 실습. Contribute to slipp/jwp-basic development by creating an account on GitHub.github.com  web-application-server https://github.com/slipp/web-application-server GitHub - slipp/web-ap..

[Next Step] 5장 웹 서버 리팩토링, 서블릿 컨테이너와 서블릿의 관계
독서/📚2023. 11. 16. 11:07[Next Step] 5장 웹 서버 리팩토링, 서블릿 컨테이너와 서블릿의 관계

실습 프로젝트 저장소실습의 경우 처음에 fork 받았는데, 깃 허브 잔디가 심어지지 않아 기술 블로그 참고(링크)하여 저장소 설정을 변경하도록 함 web-application-server (3 ~ 6장)https://github.com/slipp/web-application-server GitHub - slipp/web-application-server: 웹 애플리케이션 서버 실습을 위한 뼈대웹 애플리케이션 서버 실습을 위한 뼈대. Contribute to slipp/web-application-server development by creating an account on GitHub.github.com  4장에서 구현한 HTTP 웹 서버를 리팩토링하면서 설계를 개선하는 경험을 해보자  https://..

[Next Step] 3~4장 HTTP 웹서버 구현을 통해 HTTP 이해하기(No Framework)
독서/📚2023. 11. 15. 11:21[Next Step] 3~4장 HTTP 웹서버 구현을 통해 HTTP 이해하기(No Framework)

로컬 개발 환경 구축 https://dev-ljw1126.tistory.com/294 [Next Step] 3.3 원격 서버에 배포 (p84) 정리목차 요구사항 로컬 개발 환경에 설치한 HTTP 웹 서버를 물리적으로 떨어져 있는 원격 서버에 배포해 정상적으로 동작하는지 테스트한다. 이때 HTTP 웹 서버 배포 작업은 root 계정이 아닌 배포를dev-ljw1126.tistory.com 실습 프로젝트 저장소실습의 경우 처음에 fork 받았는데, 깃 허브 잔디가 심어지지 않아 기술 블로그 참고(링크)하여 저장소 설정을 변경하도록 함 web-application-server (3 ~ 6장)https://github.com/slipp/web-application-server GitHub - slipp/web-a..

[Next Step] 12.8 웹서버 도입을 통한 서비스 운영(p458) 정리
독서/📚2023. 11. 10. 21:35[Next Step] 12.8 웹서버 도입을 통한 서비스 운영(p458) 정리

4-1. nginx 설치 및 설정 디렉토리$ apt-get install -y nginx$ sudo service nginx start$ netstat -tnlp  서버 아이피 접속시(80포트) nginx default 페이지 확인 가능하다80/tcp 접근 되지 않을 경우 ufw 방화벽 설정 확인해보기 주요 디렉토리 - /etc/nginx/sites-available- /etc/nginx/sites-enabled  참고. 강의 https://www.youtube.com/watch?v=7GlCo6RHBns4-2. nginx 와 tomcat 서버 연동nginx 와 tomcat 연결 설정$ cd /etc/nginx/sites-availabe$ sudo vim jwp-basic# 아래 내용 작성 후 저장 - t..

[Next Step] 10.4 배포 자동화를 위한 쉘 스크립트 개선 (p362) 정리
독서/📚2023. 11. 10. 17:17[Next Step] 10.4 배포 자동화를 위한 쉘 스크립트 개선 (p362) 정리

요구사항소스 코드를 배포한 후 문제가 발생할 경우 빠르게 원복(롤백, rollback)할 수 있는 환경을 구축한다  ① 배포 스크립트( deploy.sh ) 개선② 원복(롤백) 스크립트( rollback.sh) 구현 참고. 영상 자료https://www.youtube.com/watch?v=UqocnEIX-mAhttps://www.youtube.com/watch?v=7OSzN16FqCw1. 배포 스크립트( deploy.sh ) 개선개선할 부분① /home/releases/프로젝트 디렉토리 생성하여 빌드 디렉토리를 rename 하여 이동시킨다② 배포할 디렉토리를 TOMCAT_HOME/webapps의 ROOT로 심볼릭 링크 생성 후 톰캣 재시작한다 deploy.sh 수정#!/bin/bashREPOSITORY_..

[Next Step] 6.6 쉘 스크립트를 활용한 배포 자동화(p218) 정리
독서/📚2023. 11. 3. 22:22[Next Step] 6.6 쉘 스크립트를 활용한 배포 자동화(p218) 정리

요구사항-지금까지 구현한 기능을 개발 서버에 톰캣 서버를 설치한 후 배포한다-서버가 정상적으로 실행되고 있는지 톰캣 로그 파일( catalina.out )을 통해 모니터링 한다-쉘 스크립트를 만들어 배포 과정을 자동화 한다 ① 톰캣 서버 설치② 실습 코드 배포③ 톰캣 서버 로그 모니터링④ 쉘 스크립트 통해 배포 자동화  참고. 영상 자료https://www.youtube.com/watch?v=ZsiO27LeW34https://www.youtube.com/watch?v=9Rr4gMRyUtQhttps://www.youtube.com/watch?v=bzM1WL4qdoA1. 톰캣 서버 설치톰캣 디렉토리 구조 - bin : 톰캣 서버 시작/종료,  catalina.sh 옵션 설정도 가능 - logs : 톰캣 실행..

무료 전자 도서관 이용 후기 (with 교보문고 전자 도서관 앱)
독서/📚2023. 11. 3. 09:58무료 전자 도서관 이용 후기 (with 교보문고 전자 도서관 앱)

최근에 알게 된 전자 도서관 이용 후기 대해 포스팅합니다 개인적으로 읽고 싶은 책이 있을 때 매번 서점에 방문하여 도서 구매하거나, 알라딘 ebook과 같은 전자책을 구매해 왔습니다 규모가 큰 서점에도 불구하고 없는 도서가 있을 때는 어쩔수 없이 후기와 목차만을 읽고 구매하기도 여러번, 최근 "전자도서관" 키워드를 접해 이와 관련해 찾게 되었고, 어플 설치와 도서관별 회원가입을 통해 쉽게 ebook 대출할 수 있다는 점에서 큰 매력을 느끼게 되었습니다 교보 전자도서관 어플은 뷰어이고, 각 도서관별 대출시 ebook 내려받아 읽기 가능한 구조로 파악됩니다 참고. 교보문고 전자도서관 소개 https://ebook.kyobobook.co.kr/dig/cff/e-library 교보 전자도서관을 소개합니다 - 교..

[BOJ21923] 곡예 비행 (동적 프로그래밍)
알고리즘/동적 프로그래밍2023. 10. 6. 22:25[BOJ21923] 곡예 비행 (동적 프로그래밍)

문제링크 https://www.acmicpc.net/problem/21923 21923번: 곡예 비행 동헌이는 모형 비행기 조종 대회에 참가하였다. 이 대회에서는 격자 모양의 공간에서 모형 비행기를 조종하여 얻는 비행 점수로 순위를 매긴다. 격자의 각 칸에는 점수가 부여되어 있고, 비행 www.acmicpc.net 문제풀이 처음 격자형 그래프에 대해 BFS로 풀이하려 함 그런데 상승에서 하강으로 바뀌는 시점에 처리가 모호했고, 제한된 시간 40분을 초과하여 풀이 방법을 확인함 - 동적 프로그래밍 풀이 - 상승과 하강일때 dp 테이블을 각각 구한 후 반복문 돌며 합했을 때 최대치를 구하면 됨 - 시간 복잡도 : N, M이 각 1000이라 해도 대략 O( 3 * 10^6 ) 보다 적게 연산 된다. 예시 예제..

[BOJ21925] 짝수 팰린드롬(그리디, 탐욕 알고리즘)
알고리즘/탐욕(그리디)2023. 10. 6. 21:27[BOJ21925] 짝수 팰린드롬(그리디, 탐욕 알고리즘)

문제링크 https://www.acmicpc.net/problem/21925 21925번: 짝수 팰린드롬 (1, 1), (5, 6, 7, 7, 6, 5), (5, 5) www.acmicpc.net 문제풀이 그리디 알고리즘 풀이 방법을 알게 되어 풀이시 메모리와 시간적 측면에서 앞서 직접 DP 풀이한 방식보다 나은 것을 확인가능했다. - 그리디 알고리즘 풀이 - 핵심 아이디어 : 큰 짝수 팰린드롬은 작은 짝수 팰린드롬으로 구성이 된다. 그러므로 1) i와 j 포인터를 사용해서 최소가 되는 짝수 팰린드롬 구하면 결과값 증가시키고 포인터 이동 (i < N까지) 2) i 시작점에서 팰린드롬을 찾지 못하는 경우 종료 후 -1 출력 (투 포인터 방식) 제출코드 import java.util.*; import jav..

반응형
image