일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 프로그래머스
- WEB SOCKET
- @jsonproperty
- 스파르타코딩클럽
- 시큐리티
- Spring
- emqx
- java
- DB
- AWS
- 카프카
- docker
- visualvm
- 웹개발
- 생성자 주입
- EC2
- JavaScript
- 항해99
- CentOS
- 데이터베이스
- 개인프로젝트
- 쇼트유알엘
- JWT
- 패스트캠퍼스
- MYSQL
- 남궁성과 끝까지 간다
- 스웨거
- 스프링의 정석
- Kafka
- Spring Security
- Today
- Total
목록회고록 (120)
Nellie's Blog
회사에서 일주일간 첨부파일 업로드, 글과 이미지를 함께 저장하는 기능을 개발했다. 포스팅도 꼼꼼히 하려고 노력했다. https://yeees.tistory.com/427 파일 업로드 기능 개발 (공통 모듈 개발) 업무 중에 개발했던 파일 업로드 기능 구현 과정을 정리해보았다. 아래 순서로 진행하면 편하다. (자바8, 스프링부트2.7.16, MyBatis, MariaDB, DBeaver사용) 1. common패키지를 작성하여 파일 업로드 공통 yeees.tistory.com https://yeees.tistory.com/429 [JAVA] 글과 이미지를 함께 저장하기 (Jsoup을 사용하여 추출) 업무 중에 [공지사항] 화면의 글 작성 기능을 개발하며 정리한 글이다. (자바8, 스프링부트2.7.16, My..
며칠 코딩 안했다고,, 감이 떨어졌나보다. 대댓글 구현하는데 왜이렇게 자꾸 머리가 안돌아가고 멍한지 ㅜㅜ https://yeees.tistory.com/425 댓글/대댓글 기능 구현 2 depth 의 대댓글 기능을 구현했다. 무한 대댓글 구현을 계층형 쿼리로 구현해본 적은 있는데, 2 depth로 대댓글까지 구현은 처음이어서 조금 헤맸다. CommunityRplSvcImpl @Service public class CommunityRplSvcImpl yeees.tistory.com 앞으로 사용할 일이 많을 것 같으니 꼭 잘 숙지해놓기..! 리팩토링이 필요하지만,, 그건 내일 해야겠다.
https://yeees.tistory.com/423 [MyBatis] getter 메소드 자동 사용(?)Dto의 getter 메소드는 sql 문에서 사용될 수 있을까??? SELECT c.idx, c.member_idx, c.title, c.contents, c.crte_dt, c.del_yn FROM tb_community c c.del_yn = 'N' AND c.title LIKE '%${keyword}%' ORDER BY crte_dt DESC LIMIT #{pSize} OFFSET #{pIndexyeees.tistory.com 이 기능이 있는 줄 몰랐는데 신기한 기능이다. 조만간 마이바티스 기능에 대해 포스팅 해야겠다. 오늘은 회사 신규 프로젝트의 CRUD를 완료했다.
2일하고 2시간걸려서 젠킨스를 구축완료했다. 포스팅은 아직 못했다. 권한 문제때문에 반나절을 고생했다.. 회사 선배가 리눅스를 아주 잘다뤄서 많이 물어봤다. 배운점 1. root로 리눅스 작업하지말자. 나중에 꼬인다. 사용자에서 접근 못해서... 2. 뭐가 안되면 대부분 권한 문제다. 권한 명령어를 잘 알아놓자.
어제부터 젠킨스 구축을 하라는 임무를 받고 오늘도 하루종일 젠킨스를 만졌다. 어제 오후 3시부터 시작했는데 2시간동안 거의 다 마무리가 되어서 좀 쉽게 생각했는데... 이런 생각을 하면 안된다는 듯이 오늘 에러가 팡팡 터졌다...ㅎ 1. 처음으로는 서비스 실패오류 자바 8에서 11로 업그레이드 해서 해결 2. 젠킨스 credential 오류 젠킨스에 ssh를 등록하니 자꾸 오류가 났다. 깃랩에서 시크릿키를 발급받고 credential을 등록하니 에러가 안남. 드디어 젠킨스에서 빌드 성공. 3. 그런데 기본 프로젝트를 생성해서.. 메이븐 프로젝트로 다시 깔라고 해서 깔았는데.. 이번엔 젠킨스에서 자꾸 빌드가 안됨. ㅠㅠ 아래 4번의 시도 끝에 성공.. 휴ㅜㅜ 어렵다...ㅋ 쉬운 게 아니었다 역시 내일은 젠..
https://yeees.tistory.com/379 @RequestBody 호출 시 일어나는 일을 간단히 알아보기 (feat. MessageConverter, ObjectMapper) Http 요청 시 항상 보게되는 @RequestBody 어노테이션이 있다. @ModelAttribute 어노테이션과 항상 비교되는 어노테이션이다. 오늘은 @RequestBody만 딥하게 파보도록 하겠다. 지금까지는 @RequestBody를 '스프링 yeees.tistory.com 할 일이 없어서 하루종일 공부를 하며 포스팅을 했다. ㅎㅎ 꿀~~
https://yeees.tistory.com/376 [Vue] Visual Studio Code에서 Vue3 설치 (NodeJS) 1. nodeJS 설치 https://nodejs.org/en/download Download | Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 2. vue 개발환경 다운로드 npm install -g @vue/cli 를 입력하여 vue 개발환경을 빠르게 yeees.tistory.com 오후 5시까지 회진관리 백엔드 소스 리팩토링을 했다. 쿼리랑 주석 등 을 수정했다. 오후 6시까지는 Visual Studio Code에서 Vue3 을 설치해보았다.
https://yeees.tistory.com/374 [회진 관리] 업무 정리 ERD Ⅰ. round_rule 테이블 - round_rule_detail 테이블 관계 '정기 회진 관리' 좌측 페이지에는 정기 회진이 등록되어 있는 의사 목록이 조회된다. 의사 목록 중 한 의사를 클릭하면, 우측 페이지에 해당 yeees.tistory.com https://yeees.tistory.com/373 Vue3 샘플 페이지 만들기 샘플 1 {{name}} 이름 {{job}} 샘플 2 Hello, Vue.js Hi {{main_content2}} {{today_weather}} 오늘의 날씨보기 오늘의 운세 {{today_lucky}} {{book.title}} {{book.author}} yeees.tistory.co..
https://yeees.tistory.com/369 MariaDB / DBeaver 에서 컬럼 Auto increment 설정하기 1. 인덱스 생성 Indexes 탭 - 우클릭 - 인덱스 생성 - 원하는 컬럼 선택, Unique 선택하고 확인! 2. 원하는 컬럼의 Auto Increment에 V 체크!! yeees.tistory.com 디비 다룰 때 자동 생성 인덱스를 초기화하는 방법을 배웠다. 지금까지 회진관리업무를 맡아서 백엔드개발을 했는데, 오늘 최종리뷰를 받았고, 예외처리, 비슷한 메소드 모듈화하기 정도의 리뷰만 받고 나머지는 다 통과했다!! 내일부터는 vue로 프론트 개발을 시작한다!! 매일매일이 배움과 설렘과 당황의 연속이다.
테스트 케이스로 체크하면서 기능 하나하나 실행해보니 안되는게 많았다. 기획도 조금 바꾸고, 예외적인 부분도 많아서 은근히 손이 많이 갔다. ㅠㅠ 오늘은 디비버 다루는 방법, 스케줄러 생성하는 것을 배웠다. 스케줄러로 10분마다 DB 를 긁어와서 알람을 보내주는 로직을 작성했다. 오늘 커밋 기록! 진행한 테스트 케이스! https://yeees.tistory.com/369 MariaDB / DBeaver 에서 컬럼 Auto increment 설정하기 1. 인덱스 생성 Indexes 탭 - 우클릭 - 인덱스 생성 - 원하는 컬럼 선택, Unique 선택하고 확인! 2. 원하는 컬럼의 Auto Increment에 V 체크!! yeees.tistory.com
오늘은 하루종일 테스트케이스를 작성하고 , 테스트를 했다. 스프링 스케줄러도 적용을 했는데, Cron방식은 처음 써봤다. 잘 알아둬야겠다. https://yeees.tistory.com/367 [회진 관리] 정기 회진 규칙 스프링 스케줄러 적용 정기 회진 규칙을 일요일 자정마다 스케줄러로 7일치를 읽어와서 회진 스케줄 목록에 인서트 하는 로직을 만들었다. 1. SpringBootApplication 클래스에 @EnableScheduling 추가 @SpringBootApplication @EnableScheduli yeees.tistory.com 그리고 날짜 컨트롤 하는 부분도 헷갈렸다. 얼른 테스트케이스 끝내고 백엔드 마무리 지으면 쿼리, 날짜시간컨트롤, 포맷 등등 미뤄놨던 공부를 하도록 해야겠다.
지난주 금,토 워크샵으로 개발을 못했다. 금일업무 내용은 주황색으로 칠한 셀 부분이다. 한방 쿼리를 써야하는데, FOR문 안에 DAO를 박아버렸다.. 혼났다.ㅠㅠ 내가 생각해도 이건 좀 아닌 것 같다. 서브쿼리로 여러줄을 INSERT하는 방법도 몰랐었다. 한방 쿼리를 쓰자!! 개발자 답게!! https://yeees.tistory.com/364 [회진 관리][트러블슈팅] 서브쿼리로 여러 줄을 INSERT 하기 알람 발송시 수신인 테이블에 INSERT 를 시도, 오류 해결 1. 잘못된 쿼리 INSERT INTO recipient ( patient_id, alarm_record_idx ) VALUES ( (SELECT patient_id FROM round_patient WHERE round_schedule..
어제 코드리뷰 받은 내용 중에 절반 정도 수행했다. 오늘은 좀 멍한 상태였다 ㅜㅜ 쿼리가 익숙하지 않아서 힘들었다. 내가 짠 쿼리도 가물가물했다 ㅠㅠ 내일은 피드백 받은거 모두 수정해야겠다!!! 오늘은 좀 멍한 상태였다 ㅜㅜ 쿼리가 익숙하지 않아서 힘들었다. 내가 짠 쿼리도 가물가물했다 ㅠㅠ 내일은 피드백 받은거 모두 수정해야겠다!!!
내가 맡은 파트 백엔드부분이 거의 완료가 되어, 오늘 점심먹고 최종 코드리뷰를 하자고 하셨다. 팀장님께서 간단히 코드를 봐주신 적은 있었지만 팀원 4명이 다 같이 리뷰어로 들어온 코드리뷰는 처음이었다. 깃랩에 올린 소스를 팀장님과 선배님 두 분이서 클론 받고 실행시켜 보셨다. 조용한 분위기여서.. 떨렸다... ㅜㅜ 한시간 정도 리뷰를 해주셨는데, 대부분 코딩할 때의 규칙들과 이렇게 하면 더 편하다 등의 노하우를 대부분 알려주셨다. SELECT 쿼리를 API별로 각각 만드는 것이 아니라, 한번에 SELECT하고 WHERE절로 조건문을 달아서 재활용이 가능하도록 작성할 것, 메소드명은 get/mod/reg/del 로 시작하도록 통일할 것, del_yn 컬럼은 정말 중요하니 INSERT 할 때 빼먹지 않고 모..
오늘 회사에서는 회사에서 사준 PC 세팅을 하느라 하루를 다 보냈다. 퇴근 후 카페에서 작업을 하려고 하는데 SQLNonTransientConnectionException 에러가 떴다. 아래와 같이 디비 자체에서 연결도 되지 않았다. 검색을 해보니 방화벽 문제라고 해서 내 PC의 방화벽을 다 사용안함 처리를 했다. 그런데 더 알아보니, 회사 DB 에서 외부 IP로의 접근을 방화벽을 걸어 막아버린 것이었다. 그랬구나.. 이런 것도 모르고 ㅜㅜ 바보같은 짓을 한시간이나 했다 ㅜㅜ 내일 점심 때는 코드리뷰가 있어서 내일 아침 일찍가서 코딩을 해야겠다. 떨린다 ㅠ-ㅠ
오늘은 Vue 문법을 공부했다. 자바스크립트보다 직관적이었고, SSR(Server Side Rendering)보다 더 편했다. JSP나 Thymeleaf는 서버 단에서 화면을 조작해야하는데 뭔가 버겁다는 생각이 들었다. 그런데 이렇게 Vue를 배워서 CSR로 처리하면 더 깔끔하게 화면을 조작할 수 있을 것 같다. Vue는 조금 더 배워서 정리 포스팅을 올리도록 해야겠다. 그리고 어제 공부한 생성자 주입, 스프링 빈 라이프사이클에 이어서 @Retention 어노테이션도 공부를 해봤다. RetentionPolicy에 따라서 자바 구동시 살아있는 구간이 나뉘어져 있었다. 아래 세 구간으로 나뉜다. SOURCE vs CLASS vs RUNTIME 이렇게 3가지가 있다. RetentionPolicy.SOURCE ..
스프링부트로 개발을 하면서 스프링 빈 라이프 사이클도 제대로 모르고 있었다. 생성자 주입에서 시작된 이 궁금증을 이 참에 해결해 보기로 했다..ㅠㅠ 일은 안하고 하루종일 공부만 했다. 하핫 .. 기본인데 제대로 몰랐다니 부끄럽기도 하다. 제대로 숙지해서 기본은 잘 아는 개발자가 되어야겠다!! 아래는 정리한 포스팅 링크! https://yeees.tistory.com/356 [Spring] 스프링을 구동하면 일어나는 일 / 생성자 주입을 사용해야 하는 이유 (스프링 빈 라이프사 스프링을 구동 (run) 하면 일어나는 일들을 알아보며 생성자 주입과 필드 주입의 차이를 알아보자. 스프링을 구동하면 스프링은 스프링 빈 라이프사이클을 거치며, 7단계의 순서로 진행이 된다. yeees.tistory.com
회사에서 백엔드 개발을 계속 진행했다. 필요한 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 인터페이스를 썼는데, 쓰는 것..
배운점 및 느낀점 김영한 HTTP프로토콜 강의완강했다. 흩어진 지식들이 정리가 쫙 되는 느낌 너무 좋다. 김영한 커리 모두 완료하면 자신감이 붙을 것 같다!!
배운점 및 느낀점 김영한 MVC1강의 정리 완료했다. 너무 지루하고 길었다. ㅠ그래도 뿌듯하다...
배운점 및 느낀점 김영한 MVC1강의 절반을 정리했다. 내일 정리 완료예정이다. 배웠던 것들이 총 정리되는 기분이다.
배운점 및 느낀점 공부시간이 잘 안나와서 속상하다,, 체력이 너무 약해진 것 같다ㅠ 강의 조금 들었다.
배운점 및 느낀점 김영한 MVC1 강의를 1/3 수강했다!! 정리가 잘 되는 느낌이다. 역시 유명한 이유가 있는 것 같다.
배운점 및 느낀점 스프링 기본편 수강 정리를 완료하고 정리도 완료했다. 너무 좋은 강의인 것 같다!!! 정리는 요즘 블로그에 안해서 쓸게 없다..ㅠ
배운점 및 느낀점 스프링 기본편 의존성주입까지 수강했다.