2022/03 20

[웹 프로그래밍] 두 번째 수업

수업 날짜: 2022.03.10 웹프 과제로 해당 사진처럼 만드는 것을 하였습니다. 404 고양이는 아무 사진이나 상관없다고 하셨기에 404 고양이로 하였습니다. 전체코드는 다음과 같습니다. 첫 번째 블록 안녕하세요. 2217 내 이름 버튼 버튼2 구글로 이동 두 번째 블록 1 2 3 A B C 테이블 이름 이름 나이 지역 철수 12 서울 영희 14 부산 세 번째 블록 체크박스 아메리카노 카페라떼 에스프레소 완료 이상입니다.

[공부/디자인 패턴] Strategy 패턴

Strategy Pattern 알고리즘의 인터페이스를 정의하고, 각각의 인터페이스를 캡슐화하여 동적으로 교체 사용 가능하도록 구현하는 디자인 패턴입니다. 클라이언트와는 독립적으로 구현되기에 새로운 알고리즘을 추가하거나 기존의 알고리즘을 쉽게 변경할 수 있습니다. Strategy Pattern Structure Context: 실제 각각의 알고리즘에 대한 인스턴스를 가진다. Interface: 각각의 알고리즘을 가져야할 공통적인 인터페이스 Algorithm1, Algorithm2: 실제 인터페이스 구현. 각각의 알고리즘을 구현 예제 코드 public interface PersonInterface { void action(); } PersonInterface로 공통 인터페이스인 #action을 가집니다. p..

[소프트웨어 공학] V 모델

※ 본 글은 소프트웨어 공학 수업 중 발표 준비를 위해 다시 한번 더 핵심을 이해하고자 작성합니다. ※ 당시에 자료 조사, 준비 등을 했던 순서대로 글을 작성합니다. 순서가 뒤죽박죽이 될 수 있습니다. V 모델이란? 소프트웨어 개발 모델 중 하나로 폭포수 모델(선형 순차적 모델)의 변형인 모델로서 테스트 단계가 추가 확장된 모델입니다. 폭포수 모델 Vs V 모델 폭포수 모델 문서 중심의 모델 (문서와 결과물에 중점을 둠) V 모델 각 개발 단계를 검증하는 모델 (작업과 결과의 검증에 초점을 둠) 테스트 단계 종류 단위 (unit, module) 테스트 개별 module 검증 시스템을 구성하는 모듈(함수, 서브루틴, 컴포넌트 등)이 기능을 올바르게 수행하는지 판별 내부에 존재하는 논리적인 오류를 검출 상세..

[Spring] AOP 예제

※ 본 글은 AOP에 대해 어느 정도 이해를 하고 있다는 가정 하에 작성된 글입니다. AOP에 대해 자세히 모르시는 분들은 이 글을 참고해주세요. ※ [Spring] Spring AOP/PSA 설명 이전 포스트에서 POJO를 간단하게나마 설명하였습니다. 그중에서 IOC와 DI는 짧게라도 설명한 적이 있으나, AOP와 PSA는 없었기에 이번 기회에 포스트하고자 합니다. AOP란? Aspect Oriented Programming의 약 workshop-6349.tistory.com 일단, 간단한 REST API를 만들어 해당 API가 소요되는 시간, 그리고 리소스 요청 횟수를 제한, 이 2가지를 간단하게 하는 포스트를 하고자 합니다. 가상의 시나리오 클로버 도서관은 현재 코로나가 더 심해진 결과, 온라인에서..

Spring 2022.03.14

[웹 프로그래밍] 첫 수업

수업 날짜: 2022.03.08 웹 프로그레밍 수업에서는 SpringBoot를 진행을 합니다. 수업은 java → jsp → spring → springboot → CSS...(FE) 순으로.. (결론은 SpringBoot를 배운다는 것 같습니다.) 첫 수업인 만큼 JSP, java 11, Tomcat 9 설치, 그리고 이클립스 설치.. (저 같은 경우에는 java, kotlin을 자주 하다보니 인텔리제이가 이미 설치되어 있고, 왠만한 JDK들도 다 있기에 굳이 따로 설치는 하지 않았습니다.) 계속 오류가 발생하여 의도치 않게 삽질을 하여 결국 작동시켰습니다. 다른 친구들도 저와 같이 인텔리제이로 시도하려다가 결국 선생님께 Help 쳐서 이클립스로 끌려갔습니다. 그리고 가장 기본적인 JSP로 Hello,..

일상이에요

요즘 JPA를 공부를 하다보니 머리가 어질어질합니다. JPA가 어느정도 익숙해질 때 쯤 되니, 튜닝, 그리고 더 세세한 사항들까지 알아보다보니, 끝도 없는 것 같습니다. Batch Size, IN 쿼리, 즉시 로딩, 지연 로딩, fetch & 조인 등등 ... 위와 같은 내용들을 보고 나니 현타가 찾아왔습니다.. 그제서야 Spring을 왜 다들 어려워하는 지 알 것 같더라고요... 그리고 현재 프로젝트를 실행했을 때 발생하는 쿼리들을 보니... Hibernate: select member0_.id as id1_2_, member0_.email as email2_2_, member0_.name as name3_2_, member0_.nickname as nickname4_2_, member0_.passwo..

일상 2022.03.05

[위대한 삽질] H2 database file is locked

Spring 프로젝트를 진행하던 도중, 제목과 같은 문제가 발생하여, 포스팅하게 되었습니다. 이전에도 자주 보았던 문제이지만, 해결 방법을 자주 까먹는 바람에 기록하고자 합니다. 먼저, 대부분의 원인은 jdbc URL에 TCP 설정을 하지 않았기에 발생합니다. TCP를 설정하지않으면, 다중 접속이 불가능해집니다. jdbc:/h2:tcp:~/{db명} 혹은 jdbc:/h2:tcp:./{db명} 을 하면 됩니다. 전자 방식을 사용시, C:\Users\{이름}\{db명}.mv.db 파일이 생성됩니다. 후자 방식을 사용시, h2\bin\{db명}.mv.db 파일이 생성됩니다. (가능한 전자 방식을 사용해주세요. 후자 방식같은 경우에는 프로젝트 진행 시, 해당 프로젝트 디렉토리에 생기는 경우가 있습니다.) 그리고..

위대한 삽질 2022.03.04

[괴발개발] REST API - 이메일 인증

※본 포스트는 이전 포스트와 이어집니다.※ 지난 번에... 가상의 시나리오들 중 3번을 제외한 나머지들은 개발하였습니다. 비밀번호 변경을 위한 메일 발송을 하기 위해 몇 가지 세팅을 해야합니다. 준비 과정 먼저 지메일(gmail)를 사용하여 이메일을 발송할 것이기에 앱 비밀번호를 추가해줘야합니다. 앱 비밀번호는 2단계 인증을 사용해야하지만 가능한 기능입니다. (보안 탭에서 찾을 수 있습니다.) 기기 선택을 메일을 보낼 기기로 선택하고 생성한 후, 도움말에서 나온 대로 설정해주면 사용 가능합니다. 그후, dependency를 추가합니다. implementation 'org.springframework.boot:spring-boot-starter-mail' dependency를 추가하고 난 후에는 appli..

Spring/괴발개발 2022.03.03

[괴발개발] REST API - 인증

저는 Spring로 인증을 할 때, 늘 WebSecurityConfigurerAdapter를 상속해서 개발했었습니다. 하지만, 이 방법을 하면, SpringSecurity가 필요하였고, SpringSecurity에 아무런 설정이 없다면, 기본 로그인을 해야 하고, 그렇지 않으려면, WebSecurityConfigurerAdapter로 설정을 해주어야 했습니다. 그리고 그 외에도 설정을 해주어야 하는 부분들이 많아 프로젝트의 규모가 크면 클수록 귀찮아지고 하나하나 하기 힘들었습니다. (물론 보안에 있어 많은 모듈들을 지원해주는 것에 있어서는 고마움을 느낍니다.) 그래서 이번 포스팅에서는 SpringSecurity 없이 다음 3가지 인증, 인가 기능을 구현해보는 것을 목표로 세웠습니다. 비밀번호 암호화 이메..

Spring/괴발개발 2022.03.02

[공부/자바] JVM 메모리 관리

Java 메모리 영역 중 Stack, Heap, 그리고 static 이렇게 3가지 영역에 대해 공부하고 기억, 그리고 기록을 남기고자 포스팅하고 있습니다. Static Area 자바 코드 내에 있는 3가지 영역(필드, 생성자, 메소드) 중 필드 부분에서 선언된 변수(전역변수)와 정적변수(static변수)를 static 영역에 데이터를 저장합니다. static 영역의 데이터는 프로그램의 시작부터 종료가 될 때까지 메모리에 남게 됩니다. 따라서 전역변수를 무분별하게 많이 사용할 경우, 메모리가 부족할 우려가 존재합니다. Stack Area 메소드 내에서 정의하는 기본 자료형(이하 타입) [int, double, boolean, byte 등)에 해당되는 지역변수의 데이터 값이 저장되는 영역으로, 해당 메소드가..

공부/Java 2022.03.01