일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 데이터베이스
- visualvm
- docker
- 개인프로젝트
- EC2
- 카프카
- DB
- 프로그래머스
- 시큐리티
- WEB SOCKET
- MYSQL
- JWT
- CentOS
- AWS
- 스프링의 정석
- 생성자 주입
- 웹개발
- 스파르타코딩클럽
- emqx
- @jsonproperty
- 쇼트유알엘
- 스웨거
- Kafka
- 항해99
- Spring
- java
- Spring Security
- 패스트캠퍼스
- JavaScript
- 남궁성과 끝까지 간다
- Today
- Total
목록분류 전체보기 (337)
Nellie's Blog
회사에서 백엔드 개발을 계속 진행했다. 필요한 API 명세가 대략 11개 정도 있었는데 폭풍 개발을 해서 완료했다. 물론 필요한 개발이 많지만 대략 필요한 것만.. 팀장님께 리뷰를 받았는데, 회사에서는 보통 필드 주입으로 @Autowired 를 쓰는데 내가 쓴 생성자 주입이 뭐냐고 물어보셨다. 순간 당황해서 , 조금 더 안전하고 , 불변 객체로 만들어서 쓰는게 권장된다고 알고 있다고 답했다. 사실 공부할 때 주입의 종류 4가지(생성자/필드/세터/일반 주입)가 뭔지 대략만 알고 있었지 사용하는 정확한 이유, 원리를 이해하진 못했다. 가장 기본적인 부분을 모른다는 것이 부끄러웠다. 그 외에 팀장님께서는 패키지 구조를 도메인 별로 구분을 해야 하는 것, ResponseDto, RequestDto 를 쓸 때의 ..
내가 만든 기획서, UI, ERD, 목데이터 목록, API정의서를 만들어 모두 출력하고 본격적으로 개발을 진행했다. 포스트맨으로 테스트를 하며 진행하고 수시로 회사 깃랩에 내 브랜치도 파서 커밋 푸쉬를 했다. 내가 개발한 소스를 다른 동료가 클론 받아서 작업하는 모습을 보니 신기하면서도 감격스러웠다. 아무것도 몰랐던 내가 지금은 한 회사의 개발자로서 협업을 한다는 것이 참 감개무량하다. 오늘 진행한 개발은 개인 프로젝트와 비슷했으나, ERD 설계를 3정규화까지 진행하다보니 JOIN을 삼중으로 쓰는 경우가 발생했다. 혼자 했을때는 귀찮아서 한 테이블에 때려놓고 JOIN을 거의 하지 않고 불러왔었다. 사수님께 이렇게 많이 조인을 해도 괜찮은 거냐고 여쭤보니 어쩔 수 없다고 하셨다. 그 동안 내가 얼마나 주먹..
TIL 을 안쓴지 벌써 8개월이나 되었다. 단순히 공부한 것을 정리하는 포스팅은 꾸준히 했지만, TIL, WIL 등의 회고록을 쓰지 않으니 내가 뭘 공부했는지 막연하게 느껴진다. 앞으로는 사소한 공부와 배운점들을 모두 기록하도록 해야겠다. 11월 1일에 회사 입사 후, 지금까지는 기획 및 DB 설계를 해왔다. DB 설계도 재미있었지만 개발을 못했기에 아쉬움이 남았었다. 오늘은 드디어 회사 깃랩의 소스를 클론 받아, 인텔리제이에서 개발을 시작하였다! 아예 처음부터 진행하는 프로젝트라 소스가 하나도 없이 팀장님께서 샘플 소스만 만들어 놓으셔서 처음부터 개발을 진행했다. 스프링부트, Mybatis, MariaDB 툴을 사용했다. 여기서는 Mapper 인터페이스를 쓰지 않고 Dao 인터페이스를 썼는데, 쓰는 것..

1. MariaDB 설치하기 https://kitty-geno.tistory.com/55 MariaDB | 윈도우 MariaDB 설치 및 접속하기 ▶ MariaDB란? 오픈 소스의 관계형 데이터베이스 관리 시스템(RDBMS)이다. MySQL과 동일한 소스 코드를 기반으로 하며, GPL v2 라이선스를 따른다. 오라클 소유의 현재 불확실한 MySQL의 라이선스 상태에 kitty-geno.tistory.com 위의 블로그를 그대로 따라했다. TCP port 값 설정 시, 3306 기본값이 이미 있어서 3307 로 설정해주었다. 2. DBeaver로 MariaDB에 접속하기 회사의 DB정보 (IP, port번호, ID, PW)를 받았다. 선임께서 디비 정보로 DB에 접근하라고 하셨다. 디비버를 사용해 접근을 ..

이 전에 프로젝트를 진행하면서 HiChart를 써 본 경험이 있다. 찾아보니, 아파치 이차트 라는 아파치 소프트웨어에서 지원하는 좋은 차트 라이브러리도 있어서 정리를 해보려고 한다. ECharts 개념 아파치 이차트(Apache ECharts)는 아파치 소프트웨어 재단(Apache Software Foundation, ASF)에서 지원하는 자바스크립트(JavaScript) 오픈 소스 시각화 라이브러리입니다. ECharts 특징 및 장점 1. 무료 및 오픈소스인 Apache 라이센스이기 때문에, 프로젝트 사용에 자유로우며 안정성과 신뢰성, 긴 호환성을 보장한다. (가장 큰 특징 및 장점) 2. 버전업/릴리즈 주기가 상당히 빠르다. v5.0.0, v5.0.1, v5.0.2 - 버전업 주기가 한달 미만이다. ..

앞의 두 글에 심화된 내용이다. 설정은 그대로 하고, package com.example.first.aop;import lombok.RequiredArgsConstructor;import lombok.extern.slf4j.Slf4j;import org.aspectj.lang.annotation.AfterReturning;import org.aspectj.lang.annotation.AfterThrowing;import org.aspectj.lang.annotation.Aspect;import org.slf4j.Logger;import org.springframework.stereotype.Component;@Aspect@Component@Slf4j@RequiredArgsConstructorpublic..

단 두 줄만 써주면 된다. application.properties#logging file 경로 지정, 파일의 최대크기는 10mblogging.file.path=C:/error_loglogging.logback.rollingpolicy.max-file-size=10MB경로랑 파일 최대 크기만 지정해주면 끝! 자바 프로젝트가 실행할 때 생기는 모든 로그가지정한 경로에 spring_log 파일이 생성되어 그 안에 저장된다.

1. 종속성 추가implementation 'org.springframework.boot:spring-boot-starter-aop' 2. main 클래스에 @EnableAspectJAutoProxy 추가@EnableAspectJAutoProxy // AOP 활성화public class FirstApplication { public static void main(String[] args) { SpringApplication.run(FirstApplication.class, args); }} 3. AOP Aspect 클래스 생성package com.example.first.aop;import lombok.RequiredArgsConstructor;import lombok.extern..

평소처럼 자바 프로그램을 실행 시키는 중에 아래와 같은 에러가 났다.2023-09-26 09:23:02.151 WARN 23408 --- [ main] o.a.tomcat.util.scan.StandardJarScanner : Failed to scan [file:/C:/Users/weaver-gram-002/.gradle/caches/modules-2/files-2.1/com.oracle.database.security/oraclepki/21.3.0.0/oracle.osdt/osdt_cert.jar] from classloader hierarchyjava.io.IOException: java.lang.reflect.InvocationTargetException at org.apac..

페이징 처리는 막상 해보니, 크게 어려움은 없었는데 변수가 많아서 헷갈렸다. 가장 중요한 변수는 세가지 정도이다. 총 게시물 (boards), 페이지 사이즈 (한 페이지에 담기는 게시물 수, pageSize), 총 페이지 수(총 게시물을 페이지사이즈로 나눈 수, totalPages) 기본적으로 페이지 사이즈는 10으로 잡는다. 나도 10으로 잡았다. 1. BoardController // 게시판 글 조회 (페이징 처리 된) @GetMapping public String getAllBoards(Model model, @RequestParam(defaultValue = "1") int currentPage) { int pageSize = 10; // 페이지당 게시물 수 List boards = boardSe..

ERROR 14924 --- [nio-8080-exec-6] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalStateException: File has been moved - cannot be read again] with root causejava.lang.IllegalStateException: File has been moved - cannot be read again at org.springfr..

스크립트에서 화면으로 렌더링 하는 과정에서 에러가 발생한 듯하다.. 에러메시지: Uncaught SyntaxError: missing ) after argument list (at (색인):125:50) BoardController @GetMapping public String getAllBoards2(@ModelAttribute("params") final SearchDto params, Model model) { PagingResponse response = boardService.findAllBoards(params); model.addAttribute("boards", response); model.addAttribute("params", para..
board.jsp 코드 페이징 제외한 기능이 되는 상태이다. 로그아웃 마이페이지 게시판 --%> 님 안녕하세요!--%>--%> 글 작성 제목 작성자 작성일 ${board.title} ${board.nickname} ${board.createdAt} ..
https://congsong.tistory.com/26 스프링 부트(Spring Boot) - 페이징(Paging) & 검색(Search) 처리하기 1/2 [Thymeleaf, MariaDB, IntelliJ, Gradle, MyBat본 게시판 프로젝트는 단계별(step by step)로 진행되니, 이전 단계를 진행하시는 것을 권장드립니다. DBMS 툴은 DBeaver를 이용하며, DB는 MariaDB를 이용합니다. (MariaDB 설치하기) 화면 처리는 HTML5 기반congsong.tistory.com https://carrotweb.tistory.com/257 Spring에 Paging(페이징) 처리 및 적용게시판에서 게시물 리스트를 가져올 때 가져올 게시물 리스트 수를 지정하여 가져오지 않으면..

http://antananarivo.tistory.com/63 스프링, 로컬에서 이미지 불러오기 최종. 일주일을 해맸다. 정확히 말하면 5일.결론을 얻은것 같았는데 다시 원점으로 돌아오기를 반복... 그래도 결국 답을 찾아냈다.(스프링 버젼은 4.3, jdk는 1.8, tomcat은 8.0 버젼을 사용중임) 방법은 크 antananarivo.tistory.com 3가지 클래스만 수정해주면 된다. 1. HomeController @RequiredArgsConstructor @Controller @Slf4j @CrossOrigin public class HomeController { private final UserService userService; private final HomeMapper homeMa..
https://momobob.tistory.com/23 [JDBC Error] log4jdbc를 이용한 DB설정 시 에러 해결 Spring boot에서 log4jdbc.sql.jdbcapi.DriverSpy 드라이버를 이용한 DB 설정시 아래와 같은 에러가 발생함 java.lang.RuntimeException: Driver net.sf.log4jdbc.sql.jdbcapi.DriverSpy claims to not accept jdbcUrl, jdbc:log4jdbc:oracle:thin:@l momobob.tistory.com https://makeaplayground.tistory.com/179 Spring Boot SQL 로그 설정 (Log4jdbc) Gradle 적용시키기 Log4jdbc Log..
1. mybatis-config.xml 아래 세팅 추가! // 아래 세팅 추가! 2. mapper.xml 으로 시작하는 설정 추가! DB에 있는 컬럼명을 현재 VO 명과 맞추는 작업이다. 그리고 원하는 쿼리로 내려가서, 만들어준 설정의 값(resultMap = "userResultMap") 을 넣어준다! SELECT "userId", password, name, username, nickname, phone_number, zipcode, street_adr, detail_adr FROM postgres.first_project.users WHERE username = #{username}

HomeController // 4. 로그인 화면 @GetMapping("/login") public String loginForm() { return "login"; } // 4. 로그인 @ResponseBody @PostMapping("/loginTest") public UserDto login(@RequestBody UserDto userDto) throws UserException {// Object a = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); System.out.println("TEST"); System.out.pr..

function register() { // e.preventDefault(); // 폼 제출 방지 // 1. 여기서 내가 화면에서 post 로 입력하는 정보를 하나하나 가져오기 var name = $('#name').val() var nickname = $('#nickname').val() var username = $('#username').val() var password = $('#password').val() var passwordConfirm = $('#passwordConfirm').val() var phoneNumber = $('#phoneNumber').val() var profilePicture = $('#profilePicture').val() var zipcode = $('#zipc..
https://7942yongdae.tistory.com/86 HTML - 부트스트랩으로 회원가입 양식(Form) 화면 만들기 이번에는 간단한 회원가입 양식(Form) 화면을 만들어 보려고 합니다. 단순히 HTML만 사용하지 않고, UI 라이브러리인 Bootstrap도 이용해서 조금 더 유려하고, 유효성 검사까지 포함한 회원가입 폼을 7942yongdae.tistory.com

http://postcode.map.daum.net/guide Daum 우편번호 서비스 우편번호 검색과 도로명 주소 입력 기능을 너무 간단하게 적용할 수 있는 방법. Daum 우편번호 서비스를 이용해보세요. 어느 사이트에서나 무료로 제약없이 사용 가능하답니다. postcode.map.daum.net 카카오 공식문서에서 제공하는 api 예시 코드이다. 내가 작성한 register.jsp 코드 회원가입 이름 이름을 입력해주세요. 별명 별명을 입력해주세요. 주소 입력 우편번호 도로명 주소 상세주소 이메일 이메일을 입력해주세요. 인증 인증번호 인증번호를 입력해주세요. 비밀번호 비밀번호를 입력해주세요. 비밀번호 확인 비밀번호를 다시 입력해주세요. 휴대폰 번호 휴대폰 번호를 입력해주세요. 프로필 사진 이미지 파일을..

컨트롤러 @RequiredArgsConstructor @Controller @Slf4j @CrossOrigin public class HomeController { private final UserService userService; // 1. 회원가입 화면 @GetMapping("/register") public String signupForm() { return "register"; } // 2. 회원가입 @PostMapping("/register") @ResponseBody public void signup(@RequestBody UserDto userDto) { System.out.println("TEST"); System.out.printf("testDto == " + userDto.getEma..

build.gradle에서 아래의 의존성 버전만 지워줌!! // implementation 'org.apache.tomcat.embed:tomcat-embed-jasper:10.1.11' implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' 해결완료!

회원가입 시 아래 에러가 남 에러가 난 상태의 코드.. Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. 2023-09-13T10:26:55.675+09:00 ERROR 11084 --- [ main] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'homeController' defined in file [C:\User..

homeController package com.example.first.controller; import com.example.first.dto.TestDto; import com.example.first.dto.UserDto; import com.example.first.dto.UserRequestDto; import com.example.first.service.UserService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.util.MultiValueMap; import o..

DBeaver tool에서 해당 DB를 컨트롤할 수 있다. 현재 프로젝트의 스키마를 생성해야한다. 프로젝트 명으로 스키마를 생성하자. 이렇게 해당 프로젝트의 명으로 스키마가 생성되었다. 이제 원하는 테이블 생성, 컬럼 생성을 해보자. primary키 생성을 해보자 데이터타입을 serial로 설정하고, id 우클릭 - New Constraint from Selection 클릭!! 완료 후에는, Ctrl + S 를 잊지말자!! persist 확인 ! ㅡㅡㅡㅡ 위의 방법이 자꾸 안되서, 테이블을 삭제하고 다른 방법으로 시도했다. Default 에 nextval('first_project.users_new_user_id_seq'::regclass) 라고 작성해주면 아래와 같이 userId를 써주지 않아도 자동으..

AWS에서 요금이 많이 나올까봐 잠시 인스턴스 중지를 하고 재시작을 눌렀더니, 서버가 안떴다;;; Elastic IP 설정도 해서 IP도 고정을 해놔서, 바로 편하게 중지했다가 재시작이 될 줄 알았는데... 찾아보니 방화벽 설정때문이라는 말이 있어서, 아래의 명령어를 치라고 했다. $systemctl status firewalld그런데 우분투는 이 명령어가 아니고 아래의 명령어라고 해서 다시 쳤다.$sudo ufw status방화벽은 이미 비활성화 상태였다...잉...그럼 뭐가 문제지..해결방법은 쉘파일을 실행안시켜서였다;; 아놔 바보ㅜㅜ 자신이 만들어두었던 쉘파일, 나의 경우는 home/ubuntu/app/travis/deploy.sh 을 실행시켜야 하는 것이었다. 해결 완!!!

💁♀️ 문제 설명 코니는 영어 단어가 적힌 카드 뭉치 두 개를 선물로 받았습니다. 코니는 다음과 같은 규칙으로 카드에 적힌 단어들을 사용해 원하는 순서의 단어 배열을 만들 수 있는지 알고 싶습니다. 원하는 카드 뭉치에서 카드를 순서대로 한 장씩 사용합니다. 한 번 사용한 카드는 다시 사용할 수 없습니다. 카드를 사용하지 않고 다음 카드로 넘어갈 수 없습니다. 기존에 주어진 카드 뭉치의 단어 순서는 바꿀 수 없습니다. 예를 들어 첫 번째 카드 뭉치에 순서대로 ["i", "drink", "water"], 두 번째 카드 뭉치에 순서대로 ["want", "to"]가 적혀있을 때 ["i", "want", "to", "drink", "water"] 순서의 단어 배열을 만들려고 한다면 첫 번째 카드 뭉치에서 "i"..

💁♀️ 문제 설명 사진들을 보며 추억에 젖어 있던 루는 사진별로 추억 점수를 매길려고 합니다. 사진 속에 나오는 인물의 그리움 점수를 모두 합산한 값이 해당 사진의 추억 점수가 됩니다. 예를 들어 사진 속 인물의 이름이 ["may", "kein", "kain"]이고 각 인물의 그리움 점수가 [5점, 10점, 1점]일 때 해당 사진의 추억 점수는 16(5 + 10 + 1)점이 됩니다. 다른 사진 속 인물의 이름이 ["kali", "mari", "don", "tony"]이고 ["kali", "mari", "don"]의 그리움 점수가 각각 [11점, 1점, 55점]]이고, "tony"는 그리움 점수가 없을 때, 이 사진의 추억 점수는 3명의 그리움 점수를 합한 67(11 + 1 + 55)점입니다. 그리워하는..