본문 바로가기 메뉴 바로가기

기록하는 개발자

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

기록하는 개발자

검색하기 폼
  • 분류 전체보기 (127)
    • JAVA (6)
    • Spring (38)
    • Django (7)
    • 알고리즘 (28)
    • Network (16)
    • 회고 (17)
      • 우아한테크코스 (11)
    • Linux (11)
    • 이슈 (2)
    • 인프라 (2)
  • 방명록

분류 전체보기 (127)
[Django] Cookie SameSite 이슈

프로젝트에서 백엔드 서버 구성을 담당하는 역할을 맡고 있다. 백엔드 서버와 프론트엔드 서버를 독립적으로 설계하였는데, 서버에서 클라이언트로 쿠키를 전달하는 과정에서 SameSite 이슈를 발견했다. 웹 사이트에 로그인하는 과정에서setCookie 헤더로 토큰 값을 넣어둔 뒤, 이후 요청부터 전송될 쿠키의 헤더에 토큰 ID를 읽어 어떤 사용자가 보낸 요청인지 판단하는 방식으로 사용하려고 하는 과정에서 에러를 마주했다. 처음 보는 에러라 일단 구글링부터 했는데 20년 2월 4일 릴리즈된 구글크롬(Google Chrome)80버전부터 새로운 쿠키 정책이 적용 되어 Cookie의 SameSite 속성의 기본값이 "None"에서 "Lax"로 변경되어 발생하는 에러라고 한다. 스택 오버플로우 등등 많은 사이트를 돌..

Django 2022. 2. 4. 22:45
[Spring] 스프링 MVC 패턴 (Model-View-Controller)

MVC 패턴 - 개요 각자 자기가 맡은 일만 하자! 하나의 서블릿이나 JSP만으로 비즈니스 로직과 뷰 렌더링까지 모두 처리하게 되면, 너무 많은 역할을 하게되고 결과적으로 유지보수하기 어려워진다. 비즈니스 로직을 호출하는 부분에 변경이 발생해도 해당 코드를 손대야 하고, UI를 변경할 일이 있어도 비즈니스 로직이 함께 있는 해당 파일을 수정해야한다. 즉, 하나의 파일 안에 비즈니스 로직 코드와 UI를 담당하는 코드가 함께 있다는 것이다. HTML 코드 하나 수정하는데 수백줄의 비즈니스 로직 코드가 함께 있는 것은 매우 비효율적이고, 이와 반대의 경우에도 정말 비효율적이다. 이를 현실에서 비유해보면 경찰서에서 소방업무까지 담당하고 있다면..? 생각만 해도 혼란스럽다 JSP같은 뷰 템플릿은 화면을 렌더링 하..

Spring 2022. 2. 2. 16:33
[Spring] Servlet, JSP와 MVC

What is Servlet and JSP ? 스프링 MVC패턴을 공부하기 위해서 서블릿과 JSP의 이해는 필수적이다. 스프링이 탄생한 배경의 이유 중 하나로 서블릿과 JSP가 관련되어있다. HTTP 통신 기반의 클래스를 살펴보면 어노테이션 기반으로든, 파라미터로든 서블릿 클래스가 활용된다는 것을 알 수 잇다. 서블릿은 클래스 내부에 직접 HTML 코드를 작성하여 요청에 대한 응답한다. HTML을 코딩하기 너무 어렵고 불편해서 HTML 내부에 Java코드를 삽입하는 형식이 JSP이다. 다시 말해 서블릿의 단점을 보완하고자 만든 서블릿 기반의 스크립트 기술이다. 서블릿을 이용하게 되면 웹프로그래밍을 할 수 있지만 자바에 대한 지식이 필요하며 화면 인터페이스 구현에 너무 많은 코드를 필요로 하는 등 비효율적..

Spring 2022. 1. 31. 22:05
[Django] User Authenticate / 유저 인증

웹을 개발하는 개발자에게 유저 인증은 기본적이면서도 중요한 절차이다. 회원가입, 로그인, 로그아웃 등 유저를 기반으로 한 기능을 구현하는 단계에서 유저 인증에 관하여 궁금한 점이 생길 것이다. (아마도...?) 최근 여러 블로그들을 살펴보면 Rest Framework 라이브러리의 JWT를 이용해 쉽게 JWT 인증을 구현하는 것을 볼 수 있다. JWT를 사용하고 있지만 어떻게 토큰이 만들어지고, 왜 JWT가 유용한지 정리해보자한다. https://www.qu3vipon.com/django-jwt 위 블로그 내용을 참고한 내용을 바탕으로 정리하였습니다. Session based authentication WT를 알아보기 전 먼저 session based authentication에 대해 알아야한다. JWT를..

Django 2022. 1. 30. 13:59
[HTTP] Request 요청 데이터를 전달하는 방법

클라이언트와 서버간의 통신에서 HTTP 통신을 사용할 때 request, response를 사용한다. HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법은 3가지가 있다. 1. GET - 쿼리 파라미터 2. POST - HTML FORM 3. HTTP API message Body GET - 쿼리 파라미터 먼저 GET 쿼리 파라미터를 이용한 방식부터 알아보자. "/url?username=kim&age=20" 처럼 메시지 바디 없이 URL의 쿼리 파라미터에 데이터를 포함해서 전달한다. 검색, 필터, 페이징등에서 많이 사용하는 방식이다. 쿼리 파라미터는 ?를 시작으로 보낼 수 있고 추가 파라미터는 &로 구분하면 된다. 자바코드를 이용해 쿼리 파라미터를 조회하는 과정을 살펴보면 Strin..

Network 2022. 1. 29. 22:43
[프로그래머스] 괄호 회전하기 - 파이썬

https://programmers.co.kr/learn/courses/30/lessons/76502 코딩테스트 연습 - 괄호 회전하기 programmers.co.kr 문제 설명 다음 규칙을 지키는 문자열을 올바른 괄호 문자열이라고 정의합니다. (), [], {} 는 모두 올바른 괄호 문자열입니다. 만약 A가 올바른 괄호 문자열이라면, (A), [A], {A} 도 올바른 괄호 문자열입니다. 예를 들어, [] 가 올바른 괄호 문자열이므로, ([]) 도 올바른 괄호 문자열입니다. 만약 A, B가 올바른 괄호 문자열이라면, AB 도 올바른 괄호 문자열입니다. 예를 들어, {} 와 ([]) 가 올바른 괄호 문자열이므로, {}([]) 도 올바른 괄호 문자열입니다. 대괄호, 중괄호, 그리고 소괄호로 이루어진 문자열..

알고리즘 2022. 1. 26. 13:52
[프로그래머스] 오픈채팅방 - 파이썬

https://programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 문제 설명 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오픈 채팅방을 개설한 사람을 위해, 다양한 사람들이 들어오고, 나가는 것을 지켜볼 수 있는 관리자창을 만들기로 했다. 채팅방에 누군가 들어오면 다음 메시지가 출력된다. "[..

알고리즘 2022. 1. 25. 00:41
[Spring] Spring 의존관계 자동 주입 (생성자 주입, @Autowired, 롬복)

의존관계를 주입하는 방법은 크게 4가지가 있다. 1. 생성자 주입(Constructor) 2. 수정자 주입(Setter) 3. 필드 주입 4. 일반 메서드 주입 생성자 주입 생성자 주입은 말 그대로 생성자를 통해서 의존관계를 주입 받는 방법이다. 생성자 호출시점에 딱 1번만 호출되는 것이 보장된다. 불변, 필수 의존관계에 사용한다. 앞에서 설명했던 OrderServiceImpl 클래스를 보면, 클래스 내부 멤버 변수들이 private final로 선언된 것을 볼 수 있다. final로 선언된 멤버 변수들은 반드시 생성자 주입을 통해 생성자 호출시점에 딱 1번 호출되어야 한다. final로 선언된 변수는 값을 절대로 변경할 수 없기 때문에 최초에 생성되는 시점에 정의한다. 생성자가 1개 존재하는 경우에는 ..

Spring 2022. 1. 23. 20:49
[Spring] 스프링 컴포넌트 스캔(Component Scan)

지금까지 스프링 빈 설정을 하는 과정을 살펴보면 AppConfig 클래스에 @Configuration 어노테이션을 설정한 후 @Bean을 통해서 직접 등록할 스프링 빈을 설정했다. 앞서 보인 예제는 몇 개 되지 않아 일일이 입력하였지만, 빈 객체가 많아지는 경우 일일이 선언해주기 어렵다(귀찮다) 또 실수로 빈 설정을 누락하는 경우 스프링 컨테이너에 빈 객체가 등록되지 않을 수도 있다. 그러므로 스프링은 설정 정보 없이 자동으로 스프링 빈을 등록하는 컴포넌트 스캔(@Component Scan)을 제공한다. 또한 의존관계를 자동으로 주입하는 @Autowired라는 기능도 제공한다 @ComponentScan, @Autowired 사용하기 우선 컴포넌트 스캔을 사용하려면 @ComponentScan을 설정 정보에..

Spring 2022. 1. 19. 21:24
[Django] Django ModelSerializer

이전 Serializer 포스팅에서 Serializer를 만들 때 필드를 각각 설정했었다. models.py 에서 정의한 모델의 attibute를 다시 반복해서 설정해주는 느낌이 들어서 불편한 점이 있었다. BaseSerializer를 쓴다고 해서 문제가 되지는 않지만 우리는 편리함을 추구하는 개발자이기 때문에! ModelSerializer를 알아보자. joeylee.log님의 게시글을 참고하였습니다. ModelSerializer는 크게 3가지의 기능을 제공한다. 1. 의존하고 있는 모델에 기반해서 Serializer 필드를 자동으로 생성 2. Serializer를 위한 validator 제공 3. Create, Update 함수를 기본으로 제공 아래 코드는 ModelSerializer 클래스에서 제공하..

Django 2022. 1. 18. 17:56
이전 1 ··· 7 8 9 10 11 12 13 다음
이전 다음
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
  • 우테코 회고
  • 백준
  • 2차 데모데이
  • CI/CD
  • 회고
  • 스프링 부트
  • 알림기능개선기
  • 팀프로젝트
  • ZNS SSD
  • ZNS
  • 스프링MVC
  • 피움 6주차 회고
  • 알림개선기
  • 피움
  • 스프링 프레임워크
  • 네트워크
  • 8주차 회고
  • 환경 별 로깅 전략 분리
  • jpa
  • 우테코
  • 프로젝트
  • Spring
  • 파이썬
  • dm-zoned 코드분석
  • dm-zoned
  • 5주차 회고
  • 런칭 페스티벌
  • 3차 데모데이
  • java
  • 스프링 Logback
more
«   2025/07   »
일 월 화 수 목 금 토
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
글 보관함

Blog is powered by Tistory / Designed by Tistory

티스토리툴바