일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- BCI
- 보안
- 파이썬
- JPA
- 파이썬3
- node.js
- 데이터베이스
- 개발
- rabbitmq
- python3
- Spring Boot
- bytecode
- HTTP
- 자바
- Python
- 스프링부트
- ORM
- django
- db
- Spring
- 자료구조
- 장고
- java
- 디자인 패턴
- 웹
- 웹 개발
- 스프링
- mysql
- 스프링 부트
- 안드로이드
- Today
- Total
목록분류 전체보기 (104)
semtax의 개발 일지
개요 이번 포스팅에서는, 카프카가 무엇인지와 스프링에서 카프카를 사용하는 방법에 대해서 알아보도록 하겠습니다. 왜 메시지 큐를 쓰는가? 메시지 큐를 쓰는 이유는 대략적으로 아래와 같습니다. 먼저, 기존의 단순한 동기식 통신 방식에 비해서 더 뛰어난 응답속도를 보여줍니다. 기존의 동기식 통신 방식은, 사용자로 부터 요청을 받아서 요청을 다 처리할때 까지 Blocking 상태에 빠지게 됩니다. 즉, 요청이 전부 처리가 되어야 사용자에게 응답을 주게 됩니다. 하지만, 메시지 큐를 이용하는 경우 사용자에게 요청을 받으면 큐에다 집어 넣기만 하면 바로 다음 사용자의 요청을 받아들일 수 있기 때문에 응답속도가 향상되게 됩니다. (실제 처리는 쌓여진 큐에서 다른 워커 프로세스가 1개씩..
개요 이번 포스팅에서는, 안드로이드에서 String.format을 쓸 때, 발생했던 문제점을 정리해보고자 한다. 문제점 보통, 특정 서식으로 이루어진 문자열을 만들때, 자바와 같은 경우 String.format 메서드를 써서 포매팅을 수행하게 된다. 하지만, 안드로이드에서는, String.format를 이용해서 부동소수점을 문자열 포맷팅 할때, 일부 디바이스에서 문제가 발생하게 된다. 대략적으로 아래와 같은 예외가 발생하게 된다. Fatal Exception: java.lang.NullPointerException Attempt to get length of null array java.util.Formatter$FormatSpecifier.addZeros (Formatter.java:3505) java..
개요 이번 포스팅에서는, 자바의 모든 예외(Exception)을 한번애 전부 캐치 할 수 있는 방법에 대해서 포스팅을 하도록 하겠다. 자바 예외 처리 자바에서는 보통 아래와 같이 try-catch 문을 이용해서 에러를 핸들링 할 수 있다. public class ExampleClass { public static void main(String[ ] args) { try { int[] numbers = {1, 2, 3}; System.out.println(numbers[10]); } catch (Exception e) { System.out.println("Exception is occured!"); } } } 또한, throws 를 이용해서 예외를 다른곳으로 전파 할 수도 있다. (보통 해당 클래스를 호..
개요 이번 포스팅에서는, Swagger를 이용해서 REST API 문서를 자동으로 생성하는 법을 다루려고 한다. 문서화의 중요성 한가지 상황을 가정해보도록 하자. 만약 여러분이 프론트 개발자, 다른 팀에서 만들어진 REST API를 사용 해야하는 입장의 개발자라고 가정을 해보자. 이때, 프로젝트가 다 됬다고 듣고, API를 사용하려고 봤는데 어떻게 사용하는지에 대한 메뉴얼을 주지 않아서 사용방법을 알아내기 위해 저 API를 개발한 직원을 직접 부르거나 여러분이 직접 저 코드들을 분석해서 사용방법을 알아내느라 1~2주가 소요 되어버렸다. 상상만 해도 정말 끔찍하다. 이런 상황을 어떻게 극복하면 좋을까? 위와 같은 상황을 방지해주기 위해, 저러한 API를 만들고 나서는 A..
개요 이번 포스팅에서는, 파일 업로드 및 다운로드 기능을 구현하도록 하겠다. 또한, 구현 하기전에 실제로 파일 업로드/다운로드가 어떻게 이루어지는지에 대해서도 알아보도록 하겠다. 웹에서는 파일 업로드 / 다운로드를 어떻게 하는걸까? 기본적으로, HTTP 요청/응답 프로토콜의 생김새는 대충 아래와 같이 생겼다. POST /cgi-bin/process.cgi HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT) Host: www.tutorialspoint.com Content-Type: application/x-www-form-urlencoded Content-Length: length Accept-Language: en-us Accept-..
개요 이번 포스팅에서는, 지난 포스팅에 이어서 페이징 기능에 검색기능을 추가할 예정이다. 정확히는, 제목이나 본문에 검색어가 포함된 게시물을 전부 페이징으로 보여주는 기능을 구현 할 예정이다. 검색기능을 어떻게 구현할까? 그렇다면 검색기능을 어떤 식으로 구현 해야 할까? 일단, 스프링 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..