분류 전체보기
-
[Network] CSR, SSR 개념 및 장단점 비교Network Basis 2023. 4. 8. 18:42
들어가기전에 SSR 의 대표적인 도구로 JSP CSR 의 대표적인 도구로 React.js SSR 은 SEO 작업을 해야할 때 사용한다. 학생때는 딱 이 정도 깊이로만 알고 있었는데 HTML을 PDF 로 변환하는 작업을 진행하면서 개념이 정확히 정립된 것 같아 내용을 공유하고자 합니다. SSR 과 CSR 을 구분하는 기준 SSR 과 CSR을 구분하는 기준은 아래와 같습니다. 바로 서버에 요청 시 완성된 HTML DOM 을 Response 로 반환을 하느냐 인데요. 다른말로 표현하자면 JavaScript 가 HTML DOM 을 조작하느냐 아니냐로 구분된다 할 수 있습니다. Response 로 전달된 HTML 가 JS 실행 전과 실행 후가 동일하다면 SSR, 다르다면 CSR 로 보셔도 무방합니다. 글로만 설명..
-
커스텀 어노테이션을 직접만들어 개발비용을 줄여보자!Back End/유지보수 2023. 3. 26. 16:26
개인적인 주관이 섞여있는 포스팅으로 정답은 아닙니다. 범용적이고 관례적인 어노테이션은 동료개발자와 협업에 유리한 이점이 있다는 것 고려하시며 Trade-off 를 저울질 해보시길 바랍니다. 커스텀 어노테이션을 동료개발자와 충분한 협의 없이 사용 시 유지보수비용이 증가하게 됩니다. 필자가 불편했던 어노테이션들 대표적으로 @PreAuthorize, @Sql, @RequestMapping 등과 같이 String 값을 반복적으로 넣어주어야 하는 어노테이션들이 매우 불편하게 느껴졌다. 사용빈도는 꽤 큰 것에 비해, IDE 자동완성 기능 이후 따로 String 값을 지정해주어야 하는 두번의 작업으로 느껴졌다. @GetMapping("/product/vip") @PreAuthorize("hasRole('ROLE_VI..
-
[트러블슈팅] IntelliJ에서 Java 코드 인식 못할 때Back End/트러블슈팅 2023. 3. 22. 20:16
IntelliJ 에서 Java 코드를 인식 못할 때가 있다. 당황스럽기 그지 없는데 매번 이유도 달라 정리해둔다. 1. Gradle Import IntelliJ에서 Gradle 프로젝트 작동안될때 간혹 Gradle 프로젝트를 IntelliJ에서 불러올때 Gradle이 정상작동하지 않을때가 있습니다. 전혀 코드가 작동하지 않는데요. 이럴때 2가지 해결방법이 있습니다. 1. Import Gradle Project 먼저 IntelliJ 우측 jojoldu.tistory.com 2. IntelliJ 캐시 무효화 (Invalidate Cache) 3. gradle 이나 pom.xml 에 SpringBoot 버전과 호환되는 JDK 인지 확인하기
-
[트러블슈팅] Pageable 사용 시 Swagger 에서 쿼리파라미터 불일치 문제 원인 및 해결Back End/트러블슈팅 2023. 3. 22. 20:09
일반적인 Pageable 을 인자로 받는 컨트롤러 보통 Pageable 을 사용한 RestController 는 아래와 같은 모양을 갖는다. @GetMapping("/user/product") fun findUserProducts( @ApiIgnore session : HttpSession, @PageableDefault(size = 24) pageable: Pageable ): ResponseEntity { val userId = session.getUserId() val data = userProductService.findSliceByUserId(userId, pageable) return ResponseEntity.ok(CommonResponse(data = UserProductResponse.o..
-
[트러블슈팅] 이메일 유효성 검사 regex (feat. 특수문자 + 포함, 이메일 구성)Back End/트러블슈팅 2023. 3. 21. 18:58
이메일에 특수문자가 포함될 수 있어? 고객이 이메일로 abc+xyz@gmail.com 를 사용하고 싶은데 계정이 생성안된다고 CS 가 들어왔다. 이메일은 로컬파트@도메인파트 로 구성이 되어있다. 필자는 로컬파트에 + 가 포함된 이메일을 처음 목격한지라 허용을 해줘야하는지에 대해 판단하기 위해 Gmail 에서 + 가 포함된 이메일이 생성가능한지 먼저 검증을 해보았다. 아래의 구글블로그에서 + 를 이메일의 로컬파트에 사용가능하다고 명시하였다. 2 hidden ways to get more from your Gmail address Posted by Robby Stein, Associate Product Marketing Manager I recently discovered some little-known w..
-
[Network] HTTP GET 요청의 QueryParameter 를 List 로 보내기Network Basis 2023. 3. 12. 19:08
뭔가 하찮은 내용의 포스팅이지만 컨트롤러에서 쿼리파라미터를 인식하지 못하는 것에 또 당황할 것을 대비하여 기록한다. Spring 에서 @RequestParam 의 자료형이 List 일 경우 아래와 같이 요청해야 List 임을 인식한다. GET https://{domain}/uri?userIdxList=1,3,5,7,9 (O) 반대로 아래와 같이 요청을 보내면 List 임을 인식하지 못한다. GET https://{domain}/uri?userIdxList=[1,3,5,7,9] (X)
-
[Network] DNS 동작원리 간단정리 (+ nslookup)Network Basis 2023. 3. 12. 18:53
이 글은 아래의 포스팅의 내용을 재구성한 포스팅입니다. DNS란 뭐고, 네임서버란 뭔지 개념정리 | 살살살림 DNS란 건 뭐고, DNS 서버란 건 뭐고, 네임서버란 건 뭐고 이름부터 혼란스러운 개념. 사용자의 입장에서 왜 DNS 역할이 필요한지와 추천할 만한 무료 네임서버에 대해서 알.아.보.자. gentlysallim.com DNS 동작개요 DNS Server 관리 주체 Authoritative DNS Server 를 보통 네임서버라고 부른다. DNS 검색속도 및 캐싱 적중률 대부분의 요청은 통신사의 ISP 서버의 캐싱으로 동작한다. (70%~90% 적중) 캐시가 적중하지 않을 경우 네임서버(Authoritative DNS Server)의 성능에 따라 도메인의 검색속도에 영향을 줄 수 있다. 검색속도 ..
-
[CSS] CSS 속성으로 placeholder 값 지정하기 (input[type="date"] placeholder 적용 처리)Front End/CSS 2023. 3. 5. 21:50
Referecne (CSS) input[type="date"] placeholder 적용 처리 "도움이 되셨다면 공감과 댓글로 지지해주세요!!" 시작일과 종료일에 캘린더 기능을 구현하기 위해 JS의 input type='date'를 이용하였다. input type='date'와 전체 페이지가 조화롭게 보이게 하기 위해 jobcoding.tistory.com 백 오피스 프로그램의 프론트단을 만들다가 유용한 속성인 attr(#variable)을 찾아 기록한다. 자세한 내용은 윗 블로그 참조! 👍 CSS input[type='date']::before { content: attr(data-placeholder); width: 100%; } HTML