전체 글

전체 글

    TIL(45) 21-12-03 : Spring에서 게시글 Pagination 처리하기

    TIL(45) 21-12-03 : Spring에서 게시글 Pagination 처리하기

    Facts 오늘은 게시글 전체와, 게시글 검색결과를 Pagination처리를 해주었다. Findings Pagination 처리 🤔 왜 Pagination처리를 해줄까? 만약, 검색을 할 때, 검색 결과 값이 수천만 개의 문서를 Json 형식으로 받는다면? 메모리가 감당이 되지 않을 것이다. 그러므로, Pagination 처리는 필수적이다. Youtube도 다 Pagination처리를 해서 제공한다. 무한 스크롤로 보이겠지만, 어느 정도 스크롤을 내리면, 로딩 후에 데이터를 제공한다. 이것도 Pagination 처리를 해줘서 제공해주는 것이다. TilRepository pageable이라는 라이브러리를 사용하면, Page object 형식의 게시글들을 가져올 수 있다. public interface Ti..

    TIL(44) 21-11-30 : S3와 CloudFront를 이용한 사진 업로드 구현하기

    TIL(44) 21-11-30 : S3와 CloudFront를 이용한 사진 업로드 구현하기

    Facts ✅ mypage 이미지 S3로 업로드 하기 [Flask → Spring] Findings Javascript에서 이미지를 입력받고 요청을 전송하고 Spring Boot에서 S3에 이미지를 저장하여 업로드 하는 코드를 작성했다. Spring Boot에서 이미지 업로드 요청 처리를 구현할 때, 여러가지 설정과 과정이 필요했다. 1) 먼저 프론트단에서 byte형식의 파일을 보내주기 위해, Multipart/form-data 형식으로 파일을 보내준다. 2) Controller에서 MultipartFile 객체를 받는다. 3) S3 이미지 업로드 하기 위해서는 다음과 같이 구현해 주었다. AWS관련 속성을 적용해주기 위해, yml 파일을 설정해주고, 파일 처리 관련 Service를 여러개 만들어주었다...

    TIL(43) 21-11-28 : Spring Secruity 사용하여, 인증 인가 구현하기

    TIL(43) 21-11-28 : Spring Secruity 사용하여, 인증 인가 구현하기

    Facts ✅ "Spring Security 사용하여, 인증 인가 구현한 부분"의 전체 구조 이해하기 ✅ 모든 페이지에 접근할 경우 로그인해야 접속 가능하게 함 (로그인 페이지 제외하고 모든 페이지) ✅ 로그인 페이지에 접속할 때, 토큰이 있으면 home.html 가게 처리 ✅ get user 처리 (create.html, mytil_page.html, my_page.html user 데이터 뿌려주기) Findings 스프링 시큐리티를 이용한 로그인 처리 Spring Security를 사용하면, 인증 / 인가가 성공할 때에만, Controller에게 UserDetails(회원 정보)를 전달해준다. 로그인 처리 과정 1. 유저가 로그인을 시도하여, 서버에 http 요청이 들어온다. 2. Authentica..

    TIL(42) 11/22 - 11/27 : TDP 사이트 Flask 👉🏻 Spring

    TIL(42) 11/22 - 11/27 : TDP 사이트 Flask 👉🏻 Spring

    Facts ✅ JWT 로그인 처리 구현 ✅ index.html [Flask → Spring으로 변환] ✅ home.html [Flask → Spring으로 변환] ✅ create.html [Flask → Spring으로 변환] ✅ my_page.html [Flask → Spring으로 변환] ✅ mytil_page.html [Flask → Spring으로 변환] ✅ til_board.html [Flask → Spring으로 변환] Findings & Feelings Flask → Spring으로 변환하는 작업을 진행하였다. 처음에는 Spring이 익숙하지 않아 어렵게만 느껴졌다. Controller, Service, Repository를 분리를 어떻게 해야하지 고민도 많이 들었다. 1주일동안 부딪혀보니,..

    TDP 3차 Starting Assignment (21.11.19  ~ 21.12.09)

    TDP 3차 Starting Assignment (21.11.19 ~ 21.12.09)

    개발해야할 기능들 Start (Flask → Spring) [x] 서버사이드 랜더링 배제 [x] Til [x] User [x] Like [x] Comment [x] Flask → Spring으로 변환 [x] sign.html [x] home.html [x] create.html [x] my_page.html [x] mytil_page.html [x] til_board.html [x] til_board_detail.html [x] detail.html 기능 구현 [x] TIL Board - List private / public [x] TIL Board - Pagination [x] Create - Tag [x] 카카오 로그인 [x] Notification (카카오 알림 API를 연결) [x] 새로운 글 ..

    TIL(41) 21-11-20 : 조회수, comment 기능 구현 (Flask)

    TIL(41) 21-11-20 : 조회수, comment 기능 구현 (Flask)

    Facts ✅ 메모장 사이트 조회수 기능 구현 [flask] ✅ 메모장 사이트 Comment 기능 구현 [flask] 조회수 기능 구현 게시글을 클릭할 때마다, 서버에서 게시글 컬럼의 read_count 필드값을 증가시키게 구현했다. function readArticle(idx) { $.ajax({ type: "PUT", url: `/article/${idx}`, data: {}, success: function (response) { console.log(response['article']) let title = response['article']['title'] let content = response['article']['content'] $('#modal-title').html(title); $(..

    TIL(40) 21-11-17 : @Transactional / 스프링 Controller가 Client로 부터 파라미터를 받는 방법 / Lambda와 Stream

    TIL(40) 21-11-17 : @Transactional / 스프링 Controller가 Client로 부터 파라미터를 받는 방법 / Lambda와 Stream

    Facts ✅ 메모장 사이트 CRUD 기능 구현 Findings ✏️ @Transactional 스프링에서 트랜잭션 처리를 하려면, 트랜잭션이 필요한 클래스 혹은 메서드에 @Transactional 어노테이션을 달아주면 된다. @Transactional이 붙은 메서드는 메서드가 포함하고 있는 작업 중에 하나라도 실패할 경우 전체 작업을 취소한다. 클래스, 메서드 모두에 @Transactional 어노테이션을 붙이면 메서드 레벨의 @Transactional 선언이 우선 적용된다. // update @Transactional public Til updateTil(Long id, TilRequestDto tilRequestDto) { Til til = tilRepository.findById(id).orEls..

    TIL(39) 21-11-15 : 도커를 사용해서 컨테이너를 구성해보기

    TIL(39) 21-11-15 : 도커를 사용해서 컨테이너를 구성해보기

    🧭 도커 컨테이너 구성 및 활용 1. 도커, 컨테이너에 대한 이해 2. MariaDB를 컨테이너로 구성 및 Python Flask 연동 3. docker compose를 통해 여러개의 컨테이너를 효과적으로 관리 1️⃣ 도커, 컨테이너에 대한 이해 ✏️ Container (1) Definition ✔️ Container : 하나의 컴퓨팅에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행되도록 코드와 모든 dependencies를 패키징하는 소프트웨어 표준 단위이다. EX) 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정을 패키징한다. Container vs VM 컨테이너 기술을 이해하려면, VM과 비교해보면 쉽다. 컨테이너 = 각각의 프로세스들을 격리시키는 기술 (가상머신 달리 격리된 프로세스들을 ..

    TIL(38) 21-11-10 : Spring Security + OAuth2

    TIL(38) 21-11-10 : Spring Security + OAuth2

    💫 Facts ✅ Spring CRUD API, Auth API(인증 및 인가)의 데이터 흐름 파악 ✅ 토큰 이해 💫 Findings 🧩 Token 토큰 기반 인증 : 인증받은 사용자들에게 토큰을 발급하고, 서버에 요청을 할 때 헤더에 토큰을 함께 보내 유효성을 검사하는 방식 👉🏻 세션과 달리 토큰 기반 인증방식은 다양한 도메인에 대응할 수 있고, 서버의 메모리 부담을 줄일 수 있다. 또한, 서버가 여러 대를 두고 사이트를 운영할 때, 세션 유지가 제대로 안될 수 있지만, 토큰 인가 방식으로는 서버에서 토큰을 발급하고 보내주고 이를 서버에 저장하지 않기에 서버가 여러 대여도 상관없다. 🤯 하지만, 치명적인 단점이 있다. 이미 발급된 토큰에 대해서는 돌이킬 수 없다. 세션/쿠키의 경우 만일 쿠키가 악의적으..

    TIL(37) 21-11-09 : Object Oriented Programming

    TIL(37) 21-11-09 : Object Oriented Programming

    💫 Facts ✅ 객체지향에 대해 나만의 언어로 정립하기 ✅ 쿠키와 세션 이해 ✅ 스프링 시큐리티를 통해 로그인, 회원가입 기능 구현 💫 Findings 🧩 객체지향 (1) 클래스, 인스턴스, 메소드 ✏️ 클래스 : 표현하고자 하는 대상의 공통 속성을 한 군데에 정의해 놓은 것이다. 즉, 객체의 속성을 정의해 놓은 것을 말한다. ✏️ 인스턴스 : 어떠한 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 한다. ✏️ 메소드 : 어떤 작업을 수행하는 코드를 하나로 묶어 놓은 것을 말한다. (2) 생성자 ✏️ 생성자 : 인스턴스가 생성될 때 사용되는 '인스턴스 초기화 메소드'다. 생성자를 이용해서 인스턴스가 생성될 때 수행할 동작을 코드로 짤 수 있다. 대표적으로 인스턴스 변수를 초기화 하는 용도로 사용한..