본문 바로가기
반응형

분류 전체보기
반응형
127

[LeetCode] 2. Add Two Numbers (C++) Question 2. Add Two Numbers You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order, and each of their nodes contains a single digit. Add the two numbers and return the sum as a linked list. You may assume the two numbers do not contain any leading zero, except the number 0 itself. Example 1: Input: l1 = [2,4,3], l2 = [5,6,4] Output.. 2021. 12. 6.
[LeetCode] 198. House Robber (C++) Question 198. You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of them is that adjacent houses have security systems connected and it will automatically contact the police if two adjacent houses were broken into on the same night. Given an integer array nums representing the a.. 2021. 12. 2.
[Frontend] Vue.js is assigned a value but never used no-unused-vars 해당 오류 처리는 eslint가 변수를 인지못해 생긴 Error로 해당 라인 끝에 주석을 입력한다. // eslint-disable-line no-unused-vars 2021. 11. 30.
[Frontend] Vue.js 입문 및 환경 설정 실무에서 주로 Java Spring Boot Framework를 활용하여 Backend 개발을 진행하지만 JS를 활용한 Frontend 개발 또한 진행 하곤 한다. (Webs..) 요즘 많이 쓰이는 Vue.js, React, Angular를 활용하는 것은 아니었지만 Vue의 개발 스킬을 필요로 하는 업무가 생겨 Vue.js에 대한 간단한 실습을 해보고 싶었고 후에 다시 살펴보고자 정리하고자 한다. 1. Vue.js? 예전 토이 프로젝트나 학부 시절에 많이 사용했고 그 전 회사에서 운영하던 애플리케이션에서 활용하고 있는 JSP 또는 JQuery 같은 경우 화면의 일부분만 바뀌는 메소드나 동작을 구현 할 수 없고 매번 전체 코드를 다시 읽어 와야 했다. 이는 웹페이지의 느린 속도와 리소스 낭비를 초래 한다... 2021. 11. 28.
[Kafka] 카프카 스트림즈(Kafka Streams) API 카프카는 대규모 메시지를 저장하고 빠르게 처리하기 위해서 개발되었지만 일련의 연속된 메시지인 스트림을 처리 하는데도 점차 사용 되었다. 이번 글에서는 카프카에서 제공하고 있는 스트림 API를 통해 스트림을 처리하는 방법에 대해 정리해보고자 한다. 1. Stream Processing and Batch Processing Stream Processing은 데이터 흐름에 따라 처리 즉 데이터가 분석 시스템이나 프로그램에 도달하자 마자 처리하기 때문에 실시간 분석이라고 하며 Batch Processing은 이미 저장된 된 데이터를 기반으로 분석이나 질의를 수행하고 특정 시간에 처리하는 특징이 있다. Stream Processing의 장점은 다음과 같이 이야기 할 수 있다. - 이벤트에 즉각적으로 반응한다. 이.. 2021. 11. 24.
[Algorithm] B-Tree란 무엇인가? 실무에서 조회 기능이 메인인 개발을 진행하다보니 DB Transaction 최적화에 대해 이것 저것 찾아보곤 했다. 우아한 테크 콘서트 리뷰 및 영상을 보며 커버링 인덱스등을 적용하기도 했고 테이블 조인을 진행 했을 때 OR은 Full Scan이라 느리다! 라는 것을 보고는 테이블을 데이터를 조회하며 Application 서비스에서 Merge를 했더니 30% 이상 시간이 단축되는 것을 볼 수 있었다. 그래서 문득 Full Scan, Index-Scan과의 차이점이 궁금했고 Index-Scan에 대해서 찾아보다가 DataBase 엔진에서 Index-Scan은 B- , B+ Tree 알고리즘을 이용한다고 되어 있어 조금 정리해보고자 한다. 1) B-Tree? B-Tree는 보통 Self Balancing 탐.. 2021. 11. 8.
[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.
[DB] Left Join on과 Where의 차이 실무 프로젝트에서 백엔드 개발을 본격적으로 진행하면서 데이터 조회 간 Table간의 연관 관계 및 Join에 대한 쿼리를 작성하며 개발을 진행하였다. 하나의 SPRINT가 끝난 후 데이터의 정합성을 맞추고 쿼리 속도를 빠르게 개선하고자 기개발되어 있는 Table Join쿼리를 다시 점검하는 시간이 있었다. 그 중 무분별하게 적용되어 있는 Left Join을 Inner Join으로 바꾸고 Left Join의 On과 Where를 혼합해서 사용하다보니 DB 조인에 대해 정리하고 다시 되돌아보는 시간이 필요하다고 느꼈다. 그래서 1편에 이은 2편으로 이번에 정리할 내용은 다음과 같다. Left Join On과 Where의 결과 차이 각설 하고 실제 DB 조회를 진행해보자. 지난번 예시 Table을 다시 활용해보.. 2021. 10. 10.
[DB] Table간 Join시 Inner Join과 Left Join 후 where의 차이 실무에서 데이터 조회 시 Spring JPA 및 QueryDSL을 활용하고 있는데 조회 성능이 좋게 나오지 않아 조금 더 나은 조회 성능을 위해 (이를 최적화라 부르기에는 민망했다...) QueryDSL 코드를 이것 저것 뜯어가보면서 수정을 했다. 특히 코드를 수정하고 테스트를 진행하던 중 수정 하기 전에는 데이터가 잘 나왔던 것이 수정 한 후에는 데이터가 나오지 않아 어디가 잘못 된 것인지 고민하고 끙끙 거리고 있었는데 파트원들의 집단 지성으로 문제점을 발견하였다. 지금 생각해보면 별 것 아닌 문제였는데 그 때는 왜 안보였는지 모르겠지만 조회했을 때 원인은 조회 시 Table 조인을 할 때 Table Join on이었던 것이 Table Join where로 수정되어 있었던 문제였다. 그래서 이번 포스팅.. 2021. 10. 2.
[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.