NHN 신입사원 기술교육 기간 동안, Java와 Spring에 대해서도 배우고, html/Javascript에 대해서도 배우고, 개발을 어떻게 하는가에 대해서도 배우고, DB와 인프라 영역에 대해서도 배우게 되었다.
이 일지에서는 그동안 미뤄왔던 읽을거리들을 정리하는 시간을 가지고자 한다.
Spring 시작하기
https://start.spring.io/
세션과 쿠키, 캐시
https://hahahoho5915.tistory.com/32
https://velog.io/@kimtaeeeny/%EC%BF%A0%ED%82%A4cookie-%EC%84%B8%EC%85%98session-%EA%B3%BC-%EC%BA%90%EC%8B%9Ccache-FE-study9
https://chrisjune-13837.medium.com/web-%EC%BF%A0%ED%82%A4-%EC%84%B8%EC%85%98%EC%9D%B4%EB%9E%80-aa6bcb327582
https://sy34.net/what-is-cookie/
https://andamiro25.tistory.com/189
https://dreamstorage.tistory.com/160 (유효시간)
https://github.com/im-d-team/Dev-Docs/blob/master/Network/Cookie%EC%99%80%20Session%20%EA%B7%B8%EB%A6%AC%EA%B3%A0%20Redis.md
https://cjh5414.github.io/cookie-and-session/ (쿠키와 세션, 로그인 동작 방법)
https://beginnersbook.com/2013/05/http-session/
https://thecodinglog.github.io/spring-session/2020/08/07/filter-chain.html
소프트웨어 디자인 패턴, Controller, Service
https://www.oreilly.com/library/view/software-architecture-patterns/9781491971437/ch01.html
https://yoojin99.github.io/java/Service/ (Service는 뭘까?)
https://xlffm3.github.io/spring%20&%20spring%20boot/ServiceAndControllerAbstraction/ (Generics를 활용한 CRUD Controller 및 Service 추상화)
http://jmlim.github.io/spring/2019/09/30/spring-redirect-to-an-external-url/
https://admm.tistory.com/54
https://okky.kr/article/367591 ([Spring] Controller 가 아닌 Service 에서 비즈니스 로직을 작성하는 이유?)
https://onlyformylittlefox.tistory.com/10 (SpringBoot Controller, Service, DAO 이해 - Controller(1))
https://medium.com/stackavenue/why-to-use-service-layer-in-spring-mvc-5f4fc52643c0
테스트 코드
https://brunch.co.kr/@springboot/292 (Given-When-Then Pattern)
https://mvnrepository.com/artifact/org.mockito/mockito-all (mockito 사용 버전)
https://jojoldu.tistory.com/226 (SpringBoot @MockBean, @SpyBean)
http://wonwoo.ml/index.php/post/1453 (Mockito를 이용한 Test)
https://wedul.site/648 (Junit5와 Mockito를 이용한 Test)
https://velog.io/@lxxjn0/Mockito%EC%99%80-BDDMockito%EB%8A%94-%EB%AD%90%EA%B0%80-%EB%8B%A4%EB%A5%BC%EA%B9%8C (Mockito와 BDDMockito의 차이)
https://mskwon25.github.io/tdd/MockitoBBD/ (BBD스타일을 위한 MockitoBBD)
https://medium.com/@SlackBeck/mock-object%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-85159754b2ac (Mock Object란?)
https://velog.io/@gillog/SpringBoot-WebMvcTest-%EB%8B%A8%EC%9C%84-%ED%85%8C%EC%8A%A4%ED%8A%B8%EC%8B%9C-Bean-%EC%A3%BC%EC%9E%85-%EC%97%90%EB%9F%AC (@WebMvcTest 단위 테스트시 Bean 주입 에러 발생 이슈)
https://velog.io/@lxxjn0/Test-Double%EC%9D%84-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90 (Test-Double 알아보기)
https://goddaehee.tistory.com/212?category=367461 (SpringBootTest 단위 테스트 - @WebMvcTest, @DataJpaTest, @RestClientTest)
https://thepracticaldeveloper.com/guide-spring-boot-controller-tests/#Better_Assertions_with_BDDMockito_and_AssertJ (Controller Layer 테스트하기)
https://galid1.tistory.com/772 (Service Layer 테스트하기)
https://webcoding-start.tistory.com/20 (SpringBoot @DataJpaTest)
https://www.baeldung.com/junit-testinstance-annotation (@TestInstance Annotation in JUnit 5)
https://yoojin99.github.io/java/Spring-Boot-Controller-test/ (Spring boot Controller Test - JPA meta model 오류 해결기)
https://sas-study.tistory.com/314 (JUnit5 기본 어노테이션)
https://blog.outsider.ne.kr/1129 (before, after, beforeEach, afterEach의 실행 순서)
https://goddaehee.tistory.com/211 (@SpringBootTest로 통합테스트하기)
https://gist.github.com/arahansa/20777ea80ad15094cc5e04decd3bff04
https://thepracticaldeveloper.com/guide-spring-boot-controller-tests/#Better_Assertions_with_BDDMockito_and_AssertJ
https://stackoverflow.com/questions/34447446/is-there-a-way-to-use-assertj-assertions-with-spring-mvc-test
https://www.whiteship.me/springboot-no-more-runwith/ (스프링 부트, @RunWith가 더이상 보이지 않는 이유)
https://pjh3749.tistory.com/241 (AssertJ : Junit과 같이 쓰기 좋은 AssertJ 필수 부분 정리)
https://gmlwjd9405.github.io/2019/11/26/junit5-guide-basic.html (Junit5 사용법 - 기본)
https://www.daleseo.com/assertj/ (AssertJ 소개)
https://www.baeldung.com/junit-5-migration#1-annotations (Junit4 to Junit 5)
https://javacan.tistory.com/entry/spring-boot-2-junit-5 (스프링 부트 2와 Junit 5 사용)
https://sup2is.tistory.com/107 ([jpa + junit] 슬라이스 테스트 도중 JPA metamodel must not be empty! 해결)
https://thepracticaldeveloper.com/guide-spring-boot-controller-tests/#Better_Assertions_with_BDDMockito_and_AssertJ
https://jongmin92.github.io/2020/03/31/Java/use-assertthat/
https://spring.io/guides/gs/testing-web/
https://woowacourse.github.io/javable/post/2020-08-31-entity-lifecycle-1/
https://galid1.tistory.com/772
https://withhamit.tistory.com/300
https://sas-study.tistory.com/314
https://psawesome.tistory.com/32
H2 데이터베이스
https://iw90.tistory.com/275 (Spring Tutorial H2 설정, Hibernate, Dao 작성 및 Junit Test 사용하기)
http://yoonbumtae.com/?p=2555 (Spring Boot : Spring JPA + H2 데이터베이스 기초 + 단위 테스트)
https://kaminion.tistory.com/40 (H2 데이터베이스 의존성 문제)
https://blog.naver.com/PostView.nhn?blogId=varkiry05&logNo=221193324476&parentCategoryNo=&categoryNo=107&viewDate=&isShowPopularPosts=true&from=search (log4jdbc를 이용하여 MariaDB 연결 시 에러 - DriverSpy claims to not accept jdbcUrl)
https://joanyi.tistory.com/25 (H2 In-Memory 사용법)
https://jungguji.github.io/2020/07/05/H2-DB%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-Repository-Test/ (H2 DB를 이용한 Repository Test)
https://deep-dive-dev.tistory.com/31 ([Spring Boot/JPA] hibernate.ddl-auto 옵션으로 서버를 실행할 때마다 DB 초기화하기)
https://pravusid.kr/java/2018/10/10/spring-database-initialization.html
https://deep-dive-dev.tistory.com/31
Spring Shell
https://docs.spring.io/spring-shell/docs/current-SNAPSHOT/reference/htmlsingle/ (공식 가이드)
https://docs.spring.io/spring-shell/docs/current/api/org/springframework/shell/jline/InteractiveShellApplicationRunner.html
Optional 올바르게 사용하기
https://jaehun2841.github.io/2019/02/24/effective-java-item55/#optional%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EC%A7%80-%EC%95%8A%EC%9D%80-%EC%98%88%EC%A0%9C
https://www.latera.kr/blog/2019-07-02-effective-optional/#8-optional-%EC%9D%84-%ED%95%84%EB%93%9C%EC%9D%98-%ED%83%80%EC%9E%85%EC%9C%BC%EB%A1%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EC%A7%80-%EB%A7%90-%EA%B2%83
Spring Data JPA - Reference Documentation
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.limit-query-result
https://eclipse4j.tistory.com/201
https://www.baeldung.com/spring-data-jpa-query
https://siyoon210.tistory.com/57 (JPA 조인 전략 변경하기)
https://dotoridev.tistory.com/6 (JPA insert시 default 값 적용)
JPQL
https://www.objectdb.com/java/jpa/query/jpql/date (Date and Time in JPQL and Criteria Queries)
https://data-make.tistory.com/614
https://stackoverflow.com/questions/44565820/what-is-the-limit-clause-alternative-in-jpql (JPQL에서 limit를 사용할 수 없다 (PageAble 사용))
https://velog.io/@max9106/JPA-%EC%8A%A4%ED%94%84%EB%A7%81-%EB%8D%B0%EC%9D%B4%ED%84%B0-JPA-%EC%BF%BC%EB%A6%AC-%EB%A9%94%EC%84%9C%EB%93%9C (스프링 데이터 JPA 쿼리 메서드)
https://arahansa.github.io/docs_spring/jpa.html (스프링 데이터 JPA 레퍼런스 번역)
https://bebong.tistory.com/entry/JPA-Lazy-Evaluation-LazyInitializationException-could-not-initialize-proxy-%E2%80%93-no-Session
Lombok
https://hilucky.tistory.com/238 (@Data)
https://dingue.tistory.com/14 (@Getter/@Setter , @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor)
Spring - Bean과 annotation
https://perfectacle.github.io/2019/06/23/auto-scanning-annotation-based-bean/
https://dev-troh.tistory.com/165 (@Embeddable annotation)
https://galid1.tistory.com/592 (JPA - Entity의 가독성을 높이자 - @Embedded, @Embeddable, @AttributeOverride의 사용법)
https://deveric.tistory.com/48 (@Entity, @Id, save)
https://sooin01.tistory.com/entry/Spring-4-interceptor-custom-annotation
https://velog.io/@max9106/Spring-Boot-%EC%99%B8%EB%B6%80%EC%84%A4%EC%A0%95-4xk69h8o50 (SpringBoot 외부설정2 - @ConfigurationProperties)
https://thingsthis.tistory.com/326 (@Value annotation 이슈)
https://goddaehee.tistory.com/167 (@Transactional 정리 및 예제)
https://www.baeldung.com/spring-boot-bean-validation
Spring properties
https://sas-study.tistory.com/273 (@Value annotation으로 properties 값 읽어오기)
https://pjh3749.tistory.com/216 (스프링 Properties 관리하기)
https://www.baeldung.com/spring-profiles
https://bottom-to-top.tistory.com/46 (Spring Boot에서 Properties 값 주입받기)
https://blog.voidmainvoid.net/40 (spring boot application.properties 설명)
https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html
Spring 생성자 주입, 필드 주입
https://madplay.github.io/post/why-constructor-injection-is-better-than-field-injection
Spring
https://java119.tistory.com/74 (GET 파라미터 받기)
https://engkimbs.tistory.com/696 (스프링세션, 쿠키 구현)
https://a1010100z.tistory.com/106 (ResponseEntity)
https://advenoh.tistory.com/46 (RestTemplate)
https://webdevtechblog.com/reqeustbody%EC%99%80-responsebody-%EC%96%B8%EC%A0%9C-%EC%82%AC%EC%9A%A9%ED%95%A0%EA%B9%8C-2efcab364edb (@RequestBody, @ResponseBody)
https://beagle-dev.tistory.com/80 (Query 이슈)
https://blog.leocat.kr/notes/2019/05/26/spring-data-using-entitygraph-to-customize-fetch-graph
https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-testing-spring-boot-applications-testing-with-mock-environment
https://spring.io/reactive
https://dadadamarine.github.io/java/spring/2019/04/19/spring-sqlException-%EC%B2%98%EB%A6%AC.html
https://jojoldu.tistory.com/146
Jackson + ObjectMapper
https://mommoo.tistory.com/83 (Jackson 라이브러리 이해하기)
https://tychejin.tistory.com/134 (JSON library Jackson 사용법)
https://www.lesstif.com/java/java-json-library-jackson-24445183.html
https://www.baeldung.com/jackson-object-mapper-tutorial
https://ramees.tistory.com/33 (Jackson으로 Json <-> Object 변환(Transformation)하기)
https://bear1227.tistory.com/17 (ObjectMapper의 readValue 이용 시 모르는 value 무시하기)
https://velog.io/@hanblueblue/%EB%B2%88%EC%97%AD-Intro-to-the-Jackson-ObjectMapper-%EC%98%88%EC%A0%9C-%EC%BD%94%EB%93%9C (Jackson objectmapper 예제 코드)
정규표현식
https://m.blog.naver.com/syung1104/220847918251
https://regexper.com/#%5E%5C%5B%5B0-9%5D%5C%7B4%2C4%5C%7D
https://regexr.com/
http://1004lucifer.blogspot.com/2019/06/regex.html
https://m.blog.naver.com/PostView.nhn?blogId=lionlyloveil&logNo=220661165554&proxyReferer=https:%2F%2Fwww.google.com%2F
https://devfunny.tistory.com/19
https://jsikim1.tistory.com/104
자바스크립트
https://webisfree.com/2017-04-07/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EB%82%A0%EC%A7%9C%EC%97%90%EC%84%9C-gettime()%EC%9C%BC%EB%A1%9C-%EC%96%BB%EC%96%B4%EC%98%A8-%EA%B0%92%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94 (날짜)
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Date (날짜)
https://okky.kr/article/323404 (변수(var)의 값을 <body>에 출력하려면)
https://mine-it-record.tistory.com/265 (자바스크립트에서 세션 사용하기)
https://blog.sonim1.com/206 (자바스크립트 정규표현식)
https://www.codingfactory.net/10429 (Javascript Object String.substring() 문자열 추출하는 메서드)
https://webisfree.com/2015-02-05/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A1%9C-%EB%B0%98%EB%B3%B5%EB%AC%B8-%EB%A7%8C%EB%93%A4%EA%B8%B0 (자바스크립트로 반복문 만들기)
https://developer.mozilla.org/ko/docs/Web/API/Node/insertBefore
https://blog.outsider.ne.kr/361 (Javascript에서 String to number)
https://www.codingfactory.net/10419 (JavaScript / Object / Element.setAttribute() / 요소의 속성 값을 정하는 메서드)
https://m.blog.naver.com/PostView.nhn?blogId=diceworld&logNo=220168932456&proxyReferer=https:%2F%2Fwww.google.com%2F (자바스크립트 날짜함수)
https://jhonnywest.tistory.com/107 (자바스크립트 Date에 일, 시간, 분 더하기)
https://hianna.tistory.com/451 (현재 시간을 항상 한국시간으로 설정하기)
https://jootc.com/p/201811241474 (자바스크립트 현재 날짜 및 시간 구하기)
https://chan2727.tistory.com/entry/JavaScript-%ED%95%A8%EC%88%98%ED%98%B8%EC%B6%9C%EC%9D%84-%ED%86%B5%ED%95%B4-POST%EB%B0%A9%EC%8B%9D%EC%9C%BC%EB%A1%9C-%ED%8E%98%EC%9D%B4%EC%A7%80-%EC%9D%B4%EB%8F%99A%ED%83%9C%EA%B7%B8-%EC%82%AC%EC%9A%A9 (함수호출을 통해 POST방식으로 페이지 이동)
https://codingmania.tistory.com/103 (자바스크립트 변수를 form 태그의 value로 보내는 방법)
https://blog.naver.com/PostView.nhn?blogId=aneminw&logNo=221442316792&parentCategoryNo=&categoryNo=33&viewDate=&isShowPopularPosts=true&from=search ([JavaScript] 시간 지연 함수, 일정 시간 뒤 실행시키기, SetTimeout() {})
https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Modules#creating_a_module_object
https://www.caniuse.com/?search=promise
https://d2.naver.com/helloworld/12864 (JavaScript 표준을 위한 움직임: CommonJS와 AMD)
https://baeharam.netlify.app/posts/javascript/module (JS : 모듈에 대한 이해와 사용법)
https://blog.naver.com/PostView.nhn?blogId=occidere&logNo=220798632813 (JSON Array 파싱)
HTML
https://luckybaby.tistory.com/53 (스크립트 변수를 html 코드에서 보여주기)
https://codingnuri.com/javascript-tutorial/changing-html-content-using-html-dom.html (HTML DOM을 이용한 HTML 내용 변경)
https://www.zerocho.com/category/HTML&DOM/post/5a76d1eaabd090001b981ba6 (HTML에 데이터 저장하기)
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/datetime-local
https://dullyshin.github.io/2019/08/07/HTML-buttonLink/
https://jsunnylab.tistory.com/38
HttpServletResponse
https://m.blog.naver.com/PostView.nhn?blogId=islove8587&logNo=220350280253&proxyReferer=https:%2F%2Fwww.google.com%2F
MultipartFile & FileInputStream
https://stackoverflow.com/questions/35479290/multipart-file-to-file-inputstream/35481763
Spring Thymeleaf
https://hakurei.tistory.com/302 (이슈)
https://comnic.tistory.com/18 (Thymeleaf 값 출력 방식 정리)
https://www.thymeleaf.org/doc/articles/standardurlsyntax.html (Standard URL Syntax)
https://shlee0882.tistory.com/134 (Thymeleaf 문법 정리)
GET vs POST
https://hongsii.github.io/2017/08/02/what-is-the-difference-get-and-post/
웹에서 파일 업로드 구현
https://kutar37.tistory.com/entry/%EC%9B%B9%EC%97%90%EC%84%9C-%ED%8C%8C%EC%9D%BC-%EC%97%85%EB%A1%9C%EB%93%9C-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0-1
maven build 에러 해결하기
https://zorba91.tistory.com/22
SpringBoot DataSource
https://krksap.tistory.com/1276
https://www.baeldung.com/spring-boot-configure-data-source-programmatic
https://yangyag.tistory.com/165 (basicdatasource가 없다고 할 경우)
https://commons.apache.org/proper/commons-dbcp/api-1.4/org/apache/commons/dbcp/BasicDataSource.html (basicdatasource reference)
https://blog.woniper.net/208 (Spring 동적 Datasource 생성)
https://deep-dive-dev.tistory.com/31 (SpringBoot / JPA - hibernate.ddl-auto 옵션으로 서버를 실행할 때마다 DB 초기화하기)
Rest
https://yoojin99.github.io/cs/REST-api/ (REST, REST API, RESTful란?)
ajax / jQuery
https://velog.io/@dsunni/Spring-Ajax%EB%A1%9C-Controller%EC%97%90-%EA%B0%92-%EB%84%98%EA%B8%B0%EA%B8%B0 (ajax로 Controller에 값 넘기기)
http://javakorean.com/%EC%8A%A4%ED%94%84%EB%A7%81-ajax-%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0-%EB%B0%9B%EA%B8%B0/ (스프링 ajax 파라미터 받기)
https://jeffrey-oh.tistory.com/322?category=908913 (Ajax를 통한 JSON 데이터 주고 받기)
https://zero-gravity.tistory.com/241 (jQuery : ajax 데이터 넘기기)
https://huskdoll.tistory.com/902 (Ajax 배열, 리스트 데이터 넘기기(jQuery)
https://stackoverflow.com/questions/40223142/error-uncaught-referenceerror-is-not-defined (jQuery include 이슈)
https://m.blog.naver.com/PostView.nhn?blogId=mk1126sj&logNo=221016837263&proxyReferer=https:%2F%2Fwww.google.com%2F (ajax와 FormData를 이용한 비동기 파일 업로드)
https://blog.naver.com/mk1126sj/221007727585 (ajax 데이터를 FormData로 사용할 경우 발생하는 문제)
https://jaweb.tistory.com/entry/ajax-error-message-%ED%8E%B8%ED%95%98%EA%B2%8C-%EB%B3%B4%EA%B8%94 (ajax error message 편하게 보기)
https://okky.kr/article/709256?note=1965005
오픈소스 로드밸런서 HAProxy
https://d2.naver.com/helloworld/284659
MySQL
http://rapapa.net/?p=311 (Left, Right, Outer, Inner join)
https://homeresidents.tistory.com/entry/%EA%B0%80%EC%9E%A5-%EC%B5%9C%EA%B7%BC-%EB%82%A0%EC%A7%9C%EC%9D%98-%EA%B0%92%EC%9D%84-%EA%B0%80%EC%A0%B8%EC%98%A4%EB%8A%94-%EB%B0%A9%EB%B2%95 (가장 최근 날짜의 값 가져오기)
https://okky.kr/article/650086 (Spring boot, gradle, jpa mysql 연동문제 - test시, Jenkins 연동)
https://uiandwe.tistory.com/648 (MySQL 유저 생성 에러)
https://allmana.tistory.com/7 (날짜 더하고 빼기)
https://medium.com/watcha/%EC%BF%BC%EB%A6%AC-%EC%B5%9C%EC%A0%81%ED%99%94-%EC%B2%AB%EA%B1%B8%EC%9D%8C-%EB%B3%B4%EB%8B%A4-%EB%B9%A0%EB%A5%B8-%EC%BF%BC%EB%A6%AC%EB%A5%BC-%EC%9C%84%ED%95%9C-7%EA%B0%80%EC%A7%80-%EC%B2%B4%ED%81%AC-%EB%A6%AC%EC%8A%A4%ED%8A%B8-bafec9d2c073 (보다 빠른 쿼리를 위한 7가지 체크리스트)
https://m.blog.naver.com/PostView.nhn?blogId=onlyu&logNo=220424655515&proxyReferer=https:%2F%2Fwww.google.com%2F (MySQL Count와 SUM)
https://linuxism.ustd.ip.or.kr/510 (MySQL DATE 포맷 및 함수)
https://velog.io/@p4rksh/RDB%EC%9D%98-%EB%8F%99%EC%8B%9C%EC%84%B1%EA%B3%BC-%EC%9D%BC%EA%B4%80%EC%84%B1-%EC%9D%B4%EC%8A%88%EB%A5%BC-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%B2%98%EB%A6%AC%ED%95%A0-%EA%B2%83%EC%9D%B8%EA%B0%80 (RDB의 동시성과 일관성 이슈를 어떻게 처리할 것인가?)
https://pkgonan.github.io/2020/04/stock (쿠폰 재고의 설계 및 개발)
Redis
https://helloworld.kurly.com/blog/redis-fight-part-1/
https://jeong-pro.tistory.com/140 (자바에서 Redis 사용하기)
https://jyejye9201.medium.com/%EB%A0%88%EB%94%94%EC%8A%A4-redis-%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-2b7af75fa818 (Redis란 무엇인가)
https://swiftymind.tistory.com/62 (MacOS에서 Redis 설치 및 실행하기)
https://hyunki1019.tistory.com/138 (Redis 로그인 시 이슈)
https://deveric.tistory.com/76 (Spring Session을 Redis에 저장했을 때 어떻게 저장될까?)
https://spring.io/guides/gs/messaging-redis/
https://github.com/redis/jedis
https://yunb2.tistory.com/6
https://velog.io/@ehdrms2034/Spring-Security-JWT-Redis%EB%A5%BC-%ED%86%B5%ED%95%9C-%ED%9A%8C%EC%9B%90%EC%9D%B8%EC%A6%9D%ED%97%88%EA%B0%80-%EA%B5%AC%ED%98%84
https://jjeda.tistory.com/13
https://sungwookkang.com/1316?category=868126 (redis 데이터 타입)
https://kimpaper.github.io/2016/07/27/redis-datatype/ (redis data type 종류)
https://www.baeldung.com/jedis-java-redis-client-library
https://medium.com/garimoo/%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-%EB%A0%88%EB%94%94%EC%8A%A4-%ED%8A%9C%ED%86%A0%EB%A6%AC%EC%96%BC-01-92aaa24ca8cc (개발자를 위한 레디스 튜토리얼 01)
https://redis.io/commands/HDEL
https://charsyam.wordpress.com/2016/08/04/%EC%9E%85-%EA%B0%9C%EB%B0%9C-jedis-2-1-0-%EC%9D%84-%EA%B0%80%EC%A7%80%EA%B3%A0-%EC%82%BD%EC%A7%88%ED%95%9C-%EC%9D%B4%EC%95%BC%EA%B8%B0/ (Jedis 2.1.0을 가지고 삽질한 이야기)
https://dydtjr1128.github.io/redis/2019/04/03/Redis.html (Spring에서 레디스 사용하기)
Log4j
https://cofs.tistory.com/354
https://mdj1234.tistory.com/63 (log4j 로그레벨)
Github
https://gardeny.tistory.com/19 (protected branch 설정)
https://wikidocs.net/17172 (git show)
https://velog.io/@yjok/Git-Orphan-Branch-%EC%83%9D%EC%84%B1 (Git Orphan Branch)
자바
https://www.baeldung.com/reading-file-in-java (자바에서 파일 읽기)
https://blog.jiniworld.me/74 (long to int)
https://www.lesstif.com/java/java-ipv4-tomcat-was-request-getremoteaddr-ipv4-21430821.html (Java에서 IPv4 사용하기)
https://all-record.tistory.com/168 (스프링에서 사용자 IP 가져오기)
https://www.lesstif.com/java/spring-client-ip-18220218.html (스프링에서 클라이언트IP 가져오기)
https://stackoverflow.com/questions/19112357/java-simpledateformatyyyy-mm-ddthhmmssz-gives-timezone-as-ist (DateFormat 변환 이슈 ‘Z’)
https://www.javatpoint.com/java-fileoutputstream-close-method
https://stackoverflow.com/questions/4752266/why-doesnt-java-io-file-have-a-close-method
https://codevang.tistory.com/156
https://qkrrudtjr954.github.io/java/2017/11/13/create-file-and-file-method.html
https://loco-motive.tistory.com/58
https://huskdoll.tistory.com/538
https://lecafecreme.tistory.com/45 (Map-value로 key찾기)
https://wickso.me/java/java-8-date-time/ (날짜와 시간 api)
https://coding-factory.tistory.com/529 (자바 정규표현식)
https://offbyone.tistory.com/400 (자바 정규식 사용하기)
https://cbs5295.medium.com/java-%EC%A0%95%EA%B7%9C-%ED%91%9C%ED%98%84%EC%8B%9D-regular-expression-%EC%9D%98-%EC%9D%B4%ED%95%B4-31419561e4eb (자바 정규표현식의 이해)
https://alwayspr.tistory.com/28 (Java의 List를 상황에 맞게 생성해보자)
https://stackoverflow.com/questions/22463062/how-to-parse-format-dates-with-localdatetime-java-8 (날짜)
https://all-record.tistory.com/112 (String 타입을 Date 타입으로 변환)
https://krksap.tistory.com/1158 (자바로 시간 다루기)
https://blog.leocat.kr/notes/2017/07/25/java-add-days (자바 날짜 더하고 빼기)
https://lelecoder.com/115 (LocalDateTime 값을 yyyyMMdd 문자열로 포맷팅)
https://madplay.github.io/post/java8-date-and-time
https://leebaro.tistory.com/entry/javatimeformatDateTimeParseException-Text-2020-09-16-1624080-could-not-be-parsed-unparsed-text-found-at-index-19-%EC%99%80-%EA%B0%99%EC%9D%80-%EC%97%90%EB%9F%AC%EA%B0%80-%EB%B0%9C%EC%83%9D%ED%95%98%EB%8A%94-%EA%B2%BD%EC%9A%B0%EC%97%90-%EC%A1%B0%EC%B9%98-%EB%B0%A9%EB%B2%95 (java.time.format.DateTimeParseException: Text ‘2020-09-16 16:24:08.0’ could not be parsed, unparsed text found at index 19 와 같은 에러가 발생하는 경우에 조치 방법)
https://java119.tistory.com/52 ([Java] LocalDate,LocalTime,LocalDateTime 총 정리)
https://willbesoon.tistory.com/215 (Java8 ZonedDateTime을 이용한 날짜 변환)
https://www.daleseo.com/java8-zoned-date-time/ (ZonedDateTime 사용법)
https://wickso.me/java/java-8-date-time/
https://perfectacle.github.io/2018/09/26/java8-date-time/
https://yhmane.tistory.com/125
https://yangbox.tistory.com/24
https://minasb.tistory.com/11 (자바에서 UUID를 생성하는 방법)
https://dpdpwl.tistory.com/76 (자바 UUID 생성)
https://wakestand.tistory.com/361 (자바 UUID란? 개념부터 생성, 사용법 정리)
https://www.baeldung.com/java-random-string
https://swiftymind.tistory.com/63 (Java에서 Redis 연동 테스트)
https://commons.apache.org/proper/commons-lang/javadocs/api-3.9/org/apache/commons/lang3/RandomStringUtils.html
https://mkyong.com/java/java-how-to-generate-a-random-string/
https://multifrontgarden.tistory.com/205 (Objects 클래스)
https://stackoverflow.com/questions/47534436/sonarlint-complains-null-pointers-should-not-be-dereferenced-squids2259-des
https://devjjo.tistory.com/33 (람다식 코딩)
SecureRandom
https://gosasac.tistory.com/26 (random과 SecureRandom의 차이)
https://javafactory.tistory.com/1430 (사용법)
https://www.debugcn.com/ko/article/1578427.html (tomcat 연동시 느린 시작)
https://blog.eomsh.com/37 (느린 이슈 처리)
https://stackoverflow.com/questions/137212/how-to-deal-with-a-slow-securerandom-generator
https://lawmin.tistory.com/294
https://gt1000.tistory.com/entry/SecureRandom-%EC%A7%80%EC%97%B0%EC%9D%B4%EC%8A%88 (지연 이슈)
리눅스
https://121202.tistory.com/45 (프로세스 확인 및 죽이기)
https://banbanmumani.github.io/2017/12/19/%EB%A6%AC%EB%88%85%EC%8A%A4%ED%8F%AC%ED%8A%B8%EB%A1%9C%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%A3%BD%EC%9D%B4%EA%B8%B0/ (포트번호로 특정 프로세스 죽이기)
https://m.blog.naver.com/PostView.nhn?blogId=gksgus092&logNo=220986318932&proxyReferer=https:%2F%2Fwww.google.com%2F (리눅스 프로세스 정보 확인)
https://recipes4dev.tistory.com/171 (리눅스 awk 명령어 사용법)
https://philip1994.tistory.com/6 (address already in user(bind failed) 에러 해결)
https://m.blog.naver.com/PostView.nhn?blogId=pxkey&logNo=221276188823&proxyReferer=https:%2F%2Fwww.google.com%2F (리눅스 네트워크 포트상태 확인 (netstat))
https://gracefulprograming.tistory.com/111 (chmod로 파일 권한 변경)
https://twpower.github.io/64-use-chown-to-subfiles-and-subfolders (chmod 하위폴더 적용)
https://m.blog.naver.com/PostView.nhn?blogId=crehacktive3&logNo=221242381023&proxyReferer=https:%2F%2Fwww.google.com%2F (ssh 서비스 포트 변경)
https://gracefulprograming.tistory.com/127 (kill 프로세스 안전하게 종료시켜보자)
http://blog.naver.com/PostView.nhn?
https://rainofpainki.github.io/linux-fuser/ (리눅스 fuser 명령어 사용법)
https://m.blog.naver.com/PostView.nhn?blogId=ryangjm&logNo=220006606991&proxyReferer=https:%2F%2Fwww.google.com%2F (netstat 명령어)
https://coconuts.tistory.com/133 (네트워크 netstat 통신 상태 확인)
https://ktdsoss.tistory.com/282 (netstat 상태값, 옵션 정리)
https://kyome.tistory.com/65 (Tomcat 실행 시 에러, JAVA_HOME 설정)
https://hamtol.tistory.com/13 (Tomcat 시작시 원하는 jdk로 시작)
https://naaya.tistory.com/17 (PORT 번호로 실행중인 PID찾기)
https://stackoverflow.com/questions/14168351/cant-listen-on-port-80-with-my-server
https://blog.pages.kr/292 (losf 이용한 시스템 조사 및 분석)
https://faq.hostway.co.kr/Linux_ETC/1559 (리눅스에서 fuser 명령어 사용하기)
https://valuefactory.tistory.com/162 (linux cmd 명령어 사용하기)
쉘 스크립트
http://blog.naver.com/PostView.nhn?blogId=bb_&logNo=220971974132&parentCategoryNo=&categoryNo=66&viewDate=&isShowPopularPosts=true&from=search (특정 프로세스 종료시키는 쉘 스크립트)
https://bloodguy.tistory.com/entry/Bash-Bash-Script-%EC%97%90%EB%9F%AC%EB%B0%9C%EC%83%9D%ED%95%B4%EB%8F%84-%EB%8B%A4%EC%9D%8C-%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EA%B3%84%EC%86%8D-%EC%8B%A4%ED%96%89%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95 (bash 에러시에도 다음 스크립트 계속 실행하는 방법)
http://tech.ezphp.net/8 (script 실행 도중 에러 발생시 script를 멈추게 / 계속 가동하게 하는 방법)
https://euless.tistory.com/48 (시간 출력)
https://daeunginfo.blogspot.com/2019/04/linux-shell-script-sleep.html (쉘 스크립트 sleep 사용법)
https://koreaninbeijing.tistory.com/449 (쉘 스크립트 while)
https://jhnyang.tistory.com/191 (쉘 스크립트 반복문)
https://jink1982.tistory.com/48 (쉘 스크립트 if)
https://m.blog.naver.com/dsz08082/221843561335 (쉘 스크립트 명령 성공 여부)
https://bakyeono.net/post/2016-05-02-rest-api-client-for-cli.html (커맨드라인 환경에서 REST API(HTTP) 요청 보내기)
https://systemdesigner.tistory.com/51 (grep으로 다중 문자열 검색)
http://bahndal.egloos.com/606482
http://egloos.zum.com/mcchae/v/11221790 (쉘스크립트에서 성공여부 확인 방법)
https://ondemand.tistory.com/254 (grep으로 찾은 문자열 전후의 행 출력)
인텔리제이 설정, 단축키
https://cishome.tistory.com/121
https://ndb796.tistory.com/132
https://ifuwanna.tistory.com/241
https://www.letmecompile.com/intellij-shortcut-keys-mac/
https://gmlwjd9405.github.io/2019/05/21/intellij-shortkey.html
기타
chrome-extension://aejoelaoggembcahagimdiliamlcdmfm/index.html#requests (tenant api tester)
https://carbon.now.sh/?bg=rgba%28171%2C+184%2C+195%2C+1%29&t=material&wt=none&l=text%2Fx-java&ds=true&dsyoff=20px&dsblur=68px&wc=true&wa=true&pv=56px&ph=56px&ln=false&fl=1&fm=Hack&fs=14px&lh=133%25&si=false&es=2x&wm=false&code= (carbon : Create and share beautiful images of your source code. Start typing or drop a file into the text area to get started.)