본문 바로가기
반응형

개발 지식
반응형
60

[Kafka] kafka 토픽 생성, 메시지 Producer 및 Consumer - 02 (Mac) 2장 첫번째 블로그에서 Docker 컨테이너에 Kafka와 zookeeper에 대한 환경설정을 진행하고 Run까지 진행하였다. 이번 장에서는 카프카 토픽을 주고 받을 수 있는 가장 기본적인 설정을 진행 했으니 TOPIC을 생성하고 메시지를 보내보는 것까지 실습하고자 한다. 우선 Docker 컨테이너에 정상적으로 Kafka와 zookeeper가 돌아가고 있는 지 확인해보자. % docker ps -a er-kafka와 er-zookeeper라는 이름으로 현재 컨테이너가 실행되는 것을 확인 할 수 있다. 이제 설치는 완료 되었고 컨테이너가 정상적으로 돌아가는 것 또한 확인했다. 카프카 및 주키퍼 서버를 Start하고 Topic을 생성 그리고 메시지를 주고 받기 위해서 컨테이너로 접속을 해보자. % docke.. 2021. 11. 4.
[Kafka] kafka 설치 및 실습 - 01 (Mac) 이번 2장은 실제 Kafka를 설치해보는 것을 정리해보려한다. 내가 참고하는 책에서는 Linux Ubuntu 기반의 설치 및 실습을 진행하는데 나에게는 Macbook이라는 훌륭한 개발 머신이 있기 때문에 Macbook에서 설치 및 실습을 하고자 한다. 추가로 Docker를 활용하여 컨테이너에 kafka를 설치하고 실습을 진행해보고자 한다. 후에 Docker는 정리하고자 한다. Docker를 활용한다고 했으므로 Docker부터 설치해보자. https://www.docker.com/products/docker-desktop Docker Desktop for Mac and Windows | Docker Learn why Docker Desktop is the preferred choice for million.. 2021. 10. 27.
[JWT] Spring Boot 환경에서 JWT(Json Web Token)생성 하기 첫번째의 JWT는 JWT에 대한 간단한 설명을 정리했고 2번째는 Spring Boot 환경에서 JWT를 직접 생성해보고자 한다. 사실 JWT 생성은 https://jwt.io/ JWT.IO JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties. jwt.io 해당 홈페이지에서 직접 PayLoad값을 넣어가며 생성할 수 있다. 하지만 실무 백엔드에서 JWT를 활용할 수 있는 간단한 JWT 생성코드를 정리해 보고자한다. 생성에는 jjwt 플러그인을 활용하였다. 1. build.gradle 설정에 io.jsonwebtoken:jjwt 플러그인을 추가한다. im.. 2021. 10. 26.
[Kafka] 카프카란 무엇인가 실무 프로젝트에서 MSA 아키텍처를 활용하여 진행되고 있다. 비동기방식으로 Apache Kafka를 채택하여 개발을 하고 있는데 Kafka를 단순히 메시지를 주고 받고 DTO에 매핑하여 DB에 저장이 아닌 Kafka에 대해 좀 자세히 알고 싶어 카프카 책을 구입했고 이를 정리하고자 한다. https://digital.kyobobook.co.kr/digital/ebook/ebookDetail.ink?selectedLargeCategory=001&barcode=4801196203727&orderClick=LEH&Kc= 카프카, 데이터 플랫폼의 최강자 데이터 플랫폼의 핵심 컴포넌트로 각광받고 있는, 이벤트 기반 비동기 아키텍처를 위한 고가용성 실시간 분산 스트리밍 솔루션 카프카(Kafka)의 모든 것! 국내 .. 2021. 10. 21.
[C++] cout cin namespace overloading 접해보기 예전에 C++ 언어에 대해 정리했던 것을 다시 복습겸 정리 해보려한다. 1. cout cin 익히기 cout은 표준 출력 객체로 like printf( C언어) cin 은 표준 입력 객체로 >> 연산자 함수와 같이 사용한다.. -> like scanf( C언어) 예를 들어 코드를 한번 살펴 보자. #include //C언어에서 stdio.h using namespace std; int main() { int number = 25; double d_number = 17.5; char str[20] = "Hello World"; cout 2021. 10. 16.
[JWT] JSON Web Token? 실무 개발 최적화를 위한 고민을 계속 하던 중 하나의 방법으로 Spring Session에 대해서 자세히 알아보고 정리를 하였다. 그리고 혼자 생각하기 보다 내 개발 멘토이자 친한 친구인 상원님에게 실무에서의 고민을 공유하였는데 JWT를 사용하는 것도 고민해보라고 이야기 해주었다. 그저 듣기만 했던 JWT에 대해 정리해보고자 한다. 서버 개발 같은 경우 주로 프론트와 데이터를 주고 받거나 API 서비스 호출을 통하여 데이터를 주고 받는다. 대부분 XML과 JSON의 데이터 포맷을 가지고 통신하게 되는데 각각의 장단점이 있지만 내가 생각하는 JSON의 큰 장점인 객체에 바로 매핑된다는 점은 많은 프로그래밍에서 XML보다는 JSON 형태를 많이 사용하는 것 같다. 1) JSON Web Token? Json .. 2021. 10. 14.
[JWT] 서명을 위한 알고리즘 HS256과 RS256 JWT를 정리하다보니 JWT에 주로 사용되는 암호화 알고리즘 HS256과 RS256에 대해 언급이 필요할 것 같아 정리를 한다. 암호화 알고리즘 내 자세하고 복잡한 암호화 로직이 있지만 그 부분은 다음,, 언젠가 글로 남기기로 하고 지금은 2가지 알고리즘이 어떠한 프로세스를 가지고 있는지 정리하고자 한다. 1. HS256 (HMAC with SHA-256) 우선 클라이언트와 서버간 또는 서버 대 서버간 메시지를 주고 받았을 때 변조여부를 확인해야 한다. 원본 메시지와 공유된 메시지를 비교하여 변조 여부를 확인하는 것이 MAC(Message Authentication Code)이다. 여기서 HS256의 HMAC의 의미는 다음과 같다. HMAC (Hash based Message Authentication .. 2021. 10. 11.
[Redis Session] Spring Boot에서 Redis Session 활용하기 - 04 2021.09.24 - [개발 지식/Spring Framework] - [Redis Session] Spring Boot에서 Redis Session 활용하기 - 03 [Redis Session] Spring Boot에서 Redis Session 활용하기 - 03 2021.09.23 - [개발 지식/Spring Framework] - [Redis Session] Spring Boot에서 Redis Session 활용하기 - 02 [Redis Session] Spring Boot에서 Redis Session 활용하기 - 02 2021.09.22 - [개발 지식/Spring Fra.. erjuer.tistory.com 이어서 이번 포스팅은 Session을 set하고 get하는 API를 하나 뚫어놓고 redi.. 2021. 9. 26.
[Redis Session] Spring Boot에서 Redis Session 활용하기 - 03 2021.09.23 - [개발 지식/Spring Framework] - [Redis Session] Spring Boot에서 Redis Session 활용하기 - 02 [Redis Session] Spring Boot에서 Redis Session 활용하기 - 02 2021.09.22 - [개발 지식/Spring Framework] - [Redis Session] Spring Boot에서 Redis Session 활용하기 - 01 [Redis Session] Spring Boot에서 Redis Session 활용하기 - 01 회사 프로젝트 내 맡은 파트에서 개.. erjuer.tistory.com 이어서 Spring Boot Framework에 설정은 다 완료했고 실제 redis를 조회하기 위한 redis.. 2021. 9. 24.
[Redis Session] Spring Boot에서 Redis Session 활용하기 - 02 2021.09.22 - [개발 지식/Spring Framework] - [Redis Session] Spring Boot에서 Redis Session 활용하기 - 01 [Redis Session] Spring Boot에서 Redis Session 활용하기 - 01 회사 프로젝트 내 맡은 파트에서 개발을 진행하던 중 로그인 사용자(고객센터 또는 대리점 혹은 대리점 직원)의 정보를 바탕으로 권한을 체크하는 로직이 필요하게 되었다. 전체적인 아키텍쳐 erjuer.tistory.com 이어서 우선 Spring session으로 redis를 활용하기 위해서 프로젝트의 pom.xml 또는 build.gradle에 의존성을 추가한다. // pom.xml org.springframework.session spring-.. 2021. 9. 23.
[Redis Session] Spring Boot에서 Redis Session 활용하기 - 01 회사 프로젝트 내 맡은 파트에서 개발을 진행하던 중 로그인 사용자(고객센터 또는 대리점 혹은 대리점 직원)의 정보를 바탕으로 권한을 체크하는 로직이 필요하게 되었다. 전체적인 아키텍쳐가 MSA로 구성되어 있다보니 각각의 서비스별로 데이터를 관리해야 했고 내가 맡은 서비스 내에서 매번 고객 데이터 조회시 로그인 유저의 권한을 바탕으로 필터링을 해야 했다. 유저의 데이터는 타 서비스의 API 호출을 통해 얻을 수 있었는데 매번 고객 데이터 조회 시 유저 데이터의 API 호출 하는 것은 그 호출 시간 또한 전체 고객 데이터 조회하는 시간에 추가 되어 아주 바람직하지 못한 방법이라 생각했다. 그래서 효과적인 방법을 고민하다가 유저 데이터값들을 session에 보관하고 필요할 때 꺼내쓰는 방법을 생각했다. pac.. 2021. 9. 22.
[JPA] 1. JPA 공부를 시작해보자 약 4개월만에 블로그에 글을 쓰는 것 같다. 작년 12월 LG유플러스 개발자로 입사한 후 프로젝트 투입을 위해 인프런 교육을 신청해서 받았는데 말로만 들었던 JPA에 대해 배울 수 있었다. JPA 기초부터 JPQL, queryDSL 그리고 실제 API 적용 관련해서 정리를 해보고자 한다. 사실 대부분 회사 그리고 전 회사 같은 경우에는 Java Spring Framework와 DB간의 연결을 Mybatis를 이용하여 연동을 진행하였는데 SQL 쿼리 짜는 것에 상당한 리소스가 쓰였고 xml파일에 쓰다보니 약간의 오타가 있을 경우에도 바로 캐치하지 못하고 실행 후 DB 연결하여 조회했을 때 에러 부분(빨간..)을 찾을 수 있었다. 하지만 JPA을 이용하면 개발자가 객체 형태로만 개발을 진행하고 나머지는 JP.. 2021. 6. 21.
[Flutter] Mac Flutter 설치 및 환경 변수 정리하기 올해 목표로 잡은 것이 하나 있다. 토이프로젝트 완성 어떠한 서비스를 만들 것인지는 머리속으로 구상 중에 있고 Front와 Back 모두 공부겸 해보기로 했다. APP 서비스를 생각했기 때문에 Front와 Back 모두 어떤 언어와 프레임워크를 써야할지 고민했고 Front는 Flutter를 사용해보려고 한다. 이렇게 Flutter 첫번째 게시글로는 Mac에 Flutter 설치 및 환경 변수 정리하기라는 제목으로 적어볼 것이다. 1. Flutter 설치하기 flutter-ko.dev/docs/get-started/install/macos#update-your-path 맥OS에서 설치 flutter-ko.dev Flutter 홈페이지에서 호환되는 Flutter를 다운 받는다. Flutter - SDK를 다운.. 2021. 2. 2.
[C++] char*, char[], string 변수의 차이 알고리즘 테스트를 보다보면 각각 회사마다 다른 유형을 볼 수 있다. S사 같은 경우에는 BFS, DFS, DP 그리고 K사 또는 N사는 string 값을 이용하여 알고리즘 대입.. 17년 하반기 이후로 코딩 테스트를 C++언어로 보고 있는데 문자열과 관련된 내용이 나오면 C++을 선택한 것이 후회할 때가 있다. 예를들어 어느 문자열이 주어졌고 공백을 기준으로 잘랐을 때 Java 언어는 String strinput ="Hi Hello Erjuer01!"; String strinputarray[] = strinput.split(" "); /* strinputarray[0] = "Hi" strinputarray[1] = "Hello" strinputarray[2] = "Erjuer01!" */ 로 split .. 2020. 9. 15.
[JSP & Servlet] 서블릿 요청 처리 이번 포스팅은 JSP 또는 HTML에서 from태그를 통해 서블릿 요청 시 서블릿이 어떻게 처리하는지에 대해 적어보려고 한다. form 태그의 Action 처리 method는 두가지 방법으로 GET, POST 방식이 있는데 이 방식은 지난번 포스팅에서 언급하여 이번에는 각설하고 바로 서블릿 처리에 대해 적어본다. 우선 서블릿이 요청 파라미터를 처리하는 메서드는 3가지로 정리할 수 있다. 리턴 타입 메소드명 내용 String getParameter(name) name에 해당되는 파라미터 값을 리턴하고 해당 값이 없을 경우에는 null을 리턴한다. String [] getParameterValues(name) checkbox, radio 태그와 같이 하나의 name에 여러 값을 가지는 경우 사용, name에.. 2020. 8. 9.
[JSP & Servlet] 서블릿 스코프(Scope) : Page, Request, Session, Application 이번 포스팅 주제는 서블릿 스코프(Scope)이다. 서블릿에서는 필요시 임의의 데이터를 저장하고 나중에 저장된 데이터를 사용할 수 있는 4가지 저장소를 제공한다. 1) Page, 2) Request, 3) Session, 4)Application 해당 스코프에 대해서 정리하고 실습을 시작하자. 1. Page 스코프 - 한 번의 클라이언트 요청으로 하나의 JSP 페이지가 응답한다. - 하나의 JSP 페이지 내에서만 데이터를 저장 및 공유 한다. - JSP 파일에는 pageContext가 내정되어 있어 Page 내부에서만 사용 가능하다. - JSP 파일에 태그를 사용하여 JSP 파일 내에서 변수를 사용하는데 이는 Page 스코프에 저장하여 사용하다 2. Request 스코프 - HttpServletReque.. 2020. 8. 7.
[JSP & Servlet] 서블릿 파라미터(init-Param, context-param) 세번째로 서블릿 파라미터와 스코프에 대해서 이야기 해보려 한다. 크게 파라미터는 2개로 나뉠 수 있다. 1) init- param 해당 파라미터 값은 지정해준 서블릿 내에서만 쓸 수 있는 값이다. 변수로 생각하자면 Private 지역변수와 유사하다고 생각할 수 있을 것 같다. 해당 선언은 web.xml에 태그 내에 위치하는데 다음 예시처럼 쓸 수 있다. TestServlet com.controller.TestServlet jdbc.driver oracle.jdbc.driver.OracleDriver filepath c:\\temp 예시의 init-param을 보면 그 밑에 있는 jdbc.dirve은 TestServlet에서만 사용할 수 있는 파라미터 이다. @WebServlet("/TestServlet".. 2020. 8. 7.
[JSP & Servlet] doGet, doPost 그리고 기타 메소드의 lifeCycle 지난 포스팅에서는 서블릿이 어떠한 개념을 가지고 있으며 어떻게 설정을 하는지 이야기했다. 이번에는 그 서블릿이 HttpServlet을 상속 받았을 때의 메소드 관련해서 이야기를 해보려고한다. 반드시 있어야 할 메소드인 doGet(요청의 Default는 Get)과 많이 쓰이는 doPost에 대해서 이야기 해보려고 한다. 다들 들어봤듯 HTTP 통신에서 GET 방식과 POST 방식에 대해서 많이 이야기한다. 요청의 형태는 다음과 같이 5개으로 볼 수 있다 1. 브라우저에서 URL값을 입력 (Get 방식) 2. 새로고침 (Get 방식) 3. 링크 (Get 방식) 4. 사용자 입력 후 버튼 클릭 (Get | Post 방식) 5. javaScript 이용한 location.href ="서블릿" (Get 방식) G.. 2020. 8. 4.
[JSP & Servlet] Servlet 이란 무엇일까? 백엔드 쪽을 개발하게 되면 서블릿이라는 단어를 많이 듣게 되는데 사실 지금 이 순간 서블릿!? 하면 떠오르는 것은 Servlet == Java이라는 생각만 떠올라 다시 한번 정의해 보는 것이 필요할 것 같아 해당 내용을 적어본다. Spring Framework 또는 Java 언어를 활용한 백엔드를 개발하다보면 DispatchServlet, HttpServlet과 같은 단어를 많이 보게 되는데 서블릿 개념은 이렇다 더보기 "서블릿" 은 웹 컨테이너에 의해서 관리되며, 다양한 클라이언트 요청에 의해서 동적인 컨텐츠(content)로 응답 가능한 자바 기반의 웹 컴포넌트이다. 단순한 기능은 안의 동적 컨텐츠 즉 내부 동적 어플리케이션과 연결 해준다고 생각하면 될 것 같다. 외부 요청을 받아 내부 처리 후 클라.. 2020. 8. 4.
[Java] 자바란 무엇일까? JVM 메모리, 각 명칭 및 기능 내가 알고있는 Java에 대한 지식으로는JVM(Java Virtual Machine)은 자바 가상 머신으로 자바라는 언어의 강점이자 자바를 실행시키는 프로그램이다. 그리고 메모리는 JVM에서 알아서 관리해 준다라는 것이 내가 알고 있는 JVM의 전부이다. 어찌보면 익숙한 프로그래밍 언어이기도 하지만 기본을 잘 알고 있지는 못하게 때문에 인터넷에서 알음알음 공부했던 것들과 내가 알고 있는 것들을 블로그에 정리 해둔다. 전체 자바 코드가 실행되는 프로세스는 자바코드(.java) -> 자바 컴파일 -> 바이트 코드(.class) -> JVM JIT 컴파일러 -> 머신 코드 -> 실행 이다. - 자바 컴파일을 통해 바이트 코드(.class)로 변환 뒤 Class Loader를 통해 Class 파일을 JVM으로 .. 2020. 7. 29.