본문 바로가기

BackEnd

[Spring] Interceptor는 무엇인가? Security와 Filter의 차이점은 무엇이고, 언제 사용할까? 안녕하세요 인포돈 입니다. Spring을 학습하다 보면, 우리는 로그인 구현하기 위해서 Security를 보통 처음 접하게 된다. Security를 통해서 들어오는 요청을 걸러내, 올바른 요청만 Controller에 도착을 할 수 있도록 만들어 로그인 기능을 구현하게 된다. 그렇다면, 우리는 Interceptor와 Security, Filter 3가지에 대해서 파 해치고 Interceptor에 대해 익혀보자. Security와 Filter란? Security에 대한 설명은 정말 무수히 많은 블로그에 정리가 되어있다. 나는 이러한 Security에 대해서는 아주 간략히 접하고 넘어갈 볼 것이다. Security는 사용자의 '인증'과 '권한'에 대한 부분은 Filter의 흐름에 따라 처리하는 Spring의 .. 더보기
[C언어] 변수 타입과 서식 지정자 안녕하세요 인포돈 입니다. 변수 타입 C언어에서 제공하는 변수 타입에 대한 설명이다. 해당 표 하나면 변수 정리가 깔끔하게 끝난다. 기억해 두자 서식 지정자 보통 서식지정자는 화면에 출력할 때 많이 사용해보았을 것이다. 각 타입에 맞는 서식지정자는 아래 표와 같다. %ld long %f float %lf double %c char %s char* %u unsigned int %lu unsigned long 더보기
[Spring] Gradle과 Maven의 차이점 및 트렌드 안녕하세요 인포돈 입니다. Spring을 처음 접하면 빌드 도구를 grdle 또는 maven을 선택하여 프로젝트를 실행하게 된다. 이때 그러면 도대체 gradle은 무엇이고 maven은 무엇인가? 또한 빌드 도구는 무엇인가? 하는 의문이 들어 포스팅을 하게 되었다. 빌드 도구는 무엇이고 gradle과 maven의 차이를 알아보자 빌드 도구란? 빌드 도구를 알기 전에 우리가 작성하는 코드가 어떻게 작동되는지 이해를 해야 한다. 우리가 일반적으로 c언어, java와 같은 언어로 프로그래밍을 하게 됩니다. 그러나 이런 코드들은 컴퓨터들은 알아듣지 못하죠. 컴퓨터는 0과 1만을 이해하고 인식하기 때문이죠. 그래서 우리는 이러한 코드들을 컴퓨터가 알아볼 수 있게 변환해 주어야 합니다. 그런데 우리는 그러한 변환을.. 더보기
Linux / network - 리눅스기초를 활용한 데이터 통신 10(Select, fd_set, FD테이블) 안녕하세요 인포돈 입니다. 본 내용은 우분투를 기본으로 작성되었습니다. Cloud Computing을 활용하여 서버를 구축하였습니다. Select를 활용한 데이터 통합 후 통신 (클라이언트 3, 서버 1) 본 포스팅에서는 Select를 활용하여 3개의 클라이언트에서 들어온 단어를 " " 공백을 활용하여 구분하여 합치고, 정수의 경우 모두 합한 값을 한 줄로 표현하여 다시 클라이언트에 보내주는 프로그램을 목표로 합니다. 그러면 우리는 우선 select가 무엇인지에 대해서 알아야 합니다. - Select int select(in nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout) ndfs : 감시할 파일의 개.. 더보기
Linux / network - 리눅스기초를 활용한 데이터 통신 9(멀티 쓰레드, Mutex, cond_wait, string회전) 안녕하세요 인포돈 입니다. 본 내용은 우분투를 기본으로 작성되었습니다. Cloud Computing을 활용하여 서버를 구축하였습니다. 스레드를 활용한 데이터 통신 (클라이언트 3, 서버 1) 본 포스팅에서는 이전에 프로세스들 간에 데이터를 통신하는 방법에 대해서 다뤄왔다. 그러나 현실적으로는 프로세스를 통해서 다루기보다는 한 프로세스에 여러 개의 스레드를 활용하는 방법이 더욱 대중적이다. 따라서 본 포스팅에서는 스레드를 활용하여 데이터를 통신하는 방법에 대해서 다뤄본다. (본격적인 내용에 앞서서 간단한 이론들을 살펴본다) - 스레드란 스레드를 학습해본 사람은 스레드는 프로세스 내에서 실제로 일을 하는 주체를 의미한다고 알고 있다. 그러나 처음 접해보는 사람은 이해하기가 힘들 수 있다. 따라서 쓰레드를 좀.. 더보기
Linux / network - 리눅스기초를 활용한 데이터 통신 8(sharedmemory, semaphore) 안녕하세요 인포돈 입니다. 본 내용은 우분투를 기본으로 작성되었습니다. Cloud Computing을 활용하여 서버를 구축하였습니다. 3개의 클라이언트 공유 메모리를 활용한 데이터 변환 본 포스팅의 목적은 3개의 클라이언트에서 받은 값들을 rotation 즉, 초당 회전을 시켜서 계속해서 클라이언트에 보내주는 프로그램을 작성해 보려 합니다. 이해가 어려우신 분들을 위해서 이번에는 실행화면을 먼저 띄어 드리겠습니다. 보시는 실행화면과 같이 앞의 string은 한 칸씩 옆으로 이동하고 뒤의 int는 1씩 증가하는 프로그램입니다. 본 프로그램은 pipe를 사용하기보다는 shared memory를 활용해서 사용하는 방법에 대해서 다루어 보겠습니다. - Shared Memory란? 한 프로세스에 해당하는 메모리는.. 더보기
Linux / network - 리눅스기초를 활용한 데이터 통신 7(fork, pipe) 안녕하세요 인포돈 입니다. 본 내용은 우분투를 기본으로 작성되었습니다. Cloud Computing을 활용하여 서버를 구축하였습니다. 3개의 클라이언트 fork를 활용한 데이터 통합 이전 포스팅까지 1개의 서버와 3개의 클라이언트가 연동되어 데이터를 통합하는 형식이었습니다. 그러나 이런 클라이언트가 만약 1억 개라면? 서버는 모든 클라이언트와 순서대로 데이터를 주고받아야 하기 때문에 처리 속도가 떨어질 수밖에 없습니다. 이러한 문제점을 해결하기 위해서 우리는 fork라는 기법을 사용하려 합니다. fork란? 프로세스를 복사하는 함수이다. fork는 기본적으로 복제가 되면 부모와 자식 프로세스가 생기게 된다. 이때 자식과 부모를 구분하기 위해서 pid를 할당해 주게 되는데 부모의 경우 무작위 양수를 할당하.. 더보기
Linux / network - 리눅스기초를 활용한 데이터 통신 6(서버, 클라이언트, 소켓통신, 데이터 합치기) 안녕하세요 인포돈입니다. 본 내용은 우분투를 기본으로 작성되었습니다. Cloud Computing을 활용하여 서버를 구축하였습니다. 3개의 클라이언트 데이터 최소, 최대, 평균값 통합하기 이번 코딩은 3개의 클라이언트에서 각 숫자 데이터를 보내오면 서버 측에서는 최댓값, 최솟값, 평균값을 통합하여 각 클라이언트에 보내줍니다. 이때 최대, 최소의 경우 어디 ip와 port에서 보내오는지 출력이 되게 합니다. 서버 코드 struct info{ char sin_addr[MAXBUF]; int sin_port; int value; }; struct mmv{ char max_addr[MAXBUF], min_addr[MAXBUF]; int max_port, min_port; int max, min; float av.. 더보기