일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링부트
- java
- HTTP
- 스프링 부트
- Spring
- 파이썬3
- Python
- 디자인 패턴
- ORM
- rabbitmq
- db
- BCI
- Spring Boot
- 장고
- JPA
- 웹
- 파이썬
- python3
- 자바
- 안드로이드
- 자료구조
- django
- 보안
- bytecode
- 웹 개발
- 스프링
- node.js
- mysql
- 개발
- 데이터베이스
- Today
- Total
목록개발/Java (34)
semtax의 개발 일지
개요 이번 포스팅에서는, 지난 포스팅에 이어서 페이징 기능에 검색기능을 추가할 예정이다. 정확히는, 제목이나 본문에 검색어가 포함된 게시물을 전부 페이징으로 보여주는 기능을 구현 할 예정이다. 검색기능을 어떻게 구현할까? 그렇다면 검색기능을 어떤 식으로 구현 해야 할까? 일단, 스프링 Data JPA나 이런 것들도 결국 SQL(정확히는 JPQL)문을 통해서 데이터를 가져오는것 이라는 생각을 할 수 있다. 그렇다면 SQL문으로 위에서 언급한, "제목이나, 본문에" 검색어가 포함된 데이터들을 가져오면 되는 문제를 풀면 된다는 사실을 알 수 있다. 데이터베이스 수업시간때 들은 SQL문들을 잘 떠올려 보자. 보통 검색하려는 문자열이 포함된 데이터를 검색할 때, "LIKE" 문을 ..
개요 이번 포스팅에서는, 게시글 페이징을 구현하는 시간을 가지도록 하겠다. ##페이징을 왜 쓰는건가? 사실, 이 글을 읽는 사람들 중에서 이런 생각을 하는 사람도 있을것이다. 굳이, 페이징 안쓰고 한꺼번에 보여주면 안되는건가? 왜 귀찮게 잘라서 보여주려는거지? 물론 유저의 숫자도 적고, 데이터의 양이 10개, 100개 처럼 양이 적은 경우에는 굳이 페이징을 안하고 한꺼번에 로딩해서 보여줘도 된다. 하지만, 유저수가 많아지고, 불러와야 하는 데이터의 양도 많아지고, 처리해야되는 로직이 복잡해진다면 이는 크나큰 성능 병목으로 이어지게 된다. 여담으로, 실제로 필자가 겪어본 서비스 중에, 동시 접속자 수가 30005000 정도 되는 서비스인데, 페이징 기능이 구현이 안되있어서 로딩에 거의..
개요 이번 포스팅에서는, 지난 시간에 구현한 내용들을 기반으로 글을 쓴 사용자/댓글을 단 사용자만 글을 수정, 삭제 할 수 있게 하는 기능을 구현해보도록 하겠다. Authorization? 먼저 기능 구현에 앞서서, Authorization이 무엇인지 알아보도록 해보자. 역시나, 위키피디아의 정의를 찾아보면 아래와 같다. Authorization is the function of specifying access rights/privileges to resources, which is related to information security and computer security in general and to access control in particular.[1] More f..
개요 이번 포스팅에서는 Data Auditing(데이터 이력 관리) 에 대해서 다루어 보도록 하겠다. Data Auditing? 상황을 1가지 가정해보자, 만약 당신이 게시판 관리자고, 관리자 페이지를 통해서 게시글 댓글목록을 관리 하고 있다고 가정을 해보자. 그렇다면 언제 이 글이나 댓글을 작성했는지 라던가, 누가 작성했는지를 알아야, 나중에 차단을 시키던지 다른걸 하던지 관리를 할 수가 있다. 또한, 사용자에 따라서 글 쓰는 기능을 제한 하는 기능도 위의 Data Auditing이 있어야 가능하다. 바로 위와 같은 이유들 때문에, 이러한 데이터 이력관리가 중요하다는 것을 알 수 있다. 하지만 이러한 데이터 이력관리를 처음부터 만들기에는 뭔가 귀찮다. 뭔가..
개요 이번 포스팅에서는 지난 포스팅에 구현 한 회원가입 기능에 이어서, 로그인 기능을 구현하도록 하겠다. 추가적으로, 로그인 기능을 구현하면서 인증(Authentication)의 개념과 세션, 그리고 인터셉터에 대해서도 알아보도록 하겠다. 인증(Authentication) 이란? 먼저, 인증이란게 어떠한 개념인지 알아보도록 하자. 위키피디아에 인증에 대한 개념을 검색하면 아래와 같은 결과가 나온다 Authentication is the act of proving an assertion, such as the identity of a computer system user. In contrast with identification, the act of indicating a pe..
개요 이번 포스팅에서는 회원가입 기능을 추가해보도록 하겠다. 설계 먼저 회원 정보는 간단하게 아래의 데이터만을 가지고 수행하도록 한다. 아이디 패스워드 이메일 회원 가입 기능은 대략적으로 아래와 같은 흐름을 따라서 만들어 진다. 사용자가 서버에 회원 정보를 전송한다. 서버는 회원 정보를 받고 아래와 같은 작업을 수행한다. 먼저 데이터베이스에 중복된 아이디가 있는지 확인 한다. 만약 중복된 아이디가 있는 경우, 이미 있는 회원이라 가입이 안된다는 메시지를 보낸다. 그렇지 않은 경우 전달 받은 데이터를 데이터베이스에 추가 한다. 이때, 전달받은 패스워드를 해싱해서 저장한다. 회원가입을 성공했다는 메시지를 전달한다. 구현 먼저 아래와 같이 실제 회원 정보에 해당하는 Accoun..
개요 이번 포스팅에서는, JPA를 이용해서 기존 예제에 댓글기능을 추가하는것을 다루려고 한다. 먼저, JPA를 이용해서 댓글 기능을 추가하기전에 기본적으로 알아야 할 내용들을 짚어보고 가도록 하자. 데이터 베이스 Relationship 보통 프로젝트를 수행하면서, 데이터를 DB에 넣기 좋게 모델링을 할때 E-R 다이어그램을 사용해서 모델링을 해보았을 것이다. 혹은 학교 데이터 베이스 수업때, E-R 다이어 그램을 이용해서 모델링을 해 보았을 것이다. 모델링을 하다 보면 아래와 같은 형태의 다이어그램을 많이 그리거나 보았을 것이다. 위의 그림에서, Course나 Instructor와 같은 사각형을 보고 엔티티(Entity)라고 부르고, 마름모 모양 과 닭발 같이 생긴 선을 보고 관계(Relationship..
개요 이번 포스팅에서는 스프링 부트를 이용해서 게시판을 작성하면서 발생하는 예외들을 처리하는 법에 대해서 학습을 하도록 하겠다. 입력값 검증 및 예외 처리 소프트웨어를 개발하면서 피할 수 없는 것들이 3가지가 있다. 바로 소프트웨어 버그, 입력값 검증, 그리고 장애 대응이다. 어떠한 프로그램이나 서비스를 외부에 공개한다는 것은, 전장터 한복판에 던져지는 것과 매우 흡사하다. 엄청나게 많은 트래픽, 수많은 사용자들의 이상한 값 들(id 필드에다 부동소수점이나 특수문자들을 넣는 거라던가..), 엄청나게 쌓이는 파일로 인한 용량초과, 수 많은 데이터베이스 커넥션 생성으로인한 DB커넥션 에러, 엄청나게 많은 입력값들과 그에 따른 버그, 예외사항들이 발생하게 된다. 따라서, 저러한 수 많은 예외들을 처리하지 않으..