[Tistory] 230928

due on or before today short mode not done 🍒 오늘 공부한 내용 커넥션 풀링 (Connection Pooling) DataSource 객체를 통해 미리 커넥션을 만들어 두는 것 새로운 커넥션을 생성하는 것이 비용이 많이 들어서 미리 만들어두면 성능상 이점이 있다. (쓰레드 풀에 미리 쓰레드 만들어 놓는 것과 같은 이점) 리소스 관리 쓰레드 재사용 제어 가능한 병렬처리 부하 분산 커넥션 풀링에 미리 만들어둔 커넥션은 재사용 가능 Connection Pooling and Statement Pooling package connectionpool; import com.mysql.cj.jdbc.MysqlDataSource; import com.zaxxer.hikari.Hikari..

[Tistory] [React] 디바운싱을 이용한 추천 검색어, 인기 검색어, 키워드 검색 기능 구현하기

검색 페이지 요구사항 1. 검색 페이지에 맨 처음 진입 시 사용자들이 제일 많이 검색한 위스키 리스트 Top 10을 출력한다. 2. 사용자가 입력한 값이 있을 경우 해당 입력값을 기반으로 입력값이 포함된 위스키 리스트를 출력한다. 3. 사용자가 값을 입력하고 검색 버튼을 클릭했을 경우 바로 해당 키워드가 포함된 위스키 리스트를 출력한다. 4. input에 입력된 값이 아무것도 없을 경우 다시 위스키 리스트 Top 10을 출력한다. 5. 리스트에 출력된 위스키들은 각각 클릭 시 해당 위스키 상세 페이지로 이동한다. 인기 검색어 구현하기 인기 검색어 추적은 사용자가 검색어를 입력하거나 또는 검색 페이지에서 상세 페이지로 넘어갈 때마다 해당 값을 count하는 로직을 백엔드에서 구현한다. 해당 API 호출 시..

[Tistory] JWT 토큰은 어디에 저장해야 할까?

서버에서 발급한 Access Token 및 Refresh Token을 어디에 저장해야 할까? 현재 상황 현재 제 프로젝트에서 JWT 토큰을 활용합니다. Access Token이 탈취됐을 때 대비를 위해 Refresh Token 개념을 도입하여, 두 토큰 모두 쿠키에 저장했습니다. 쿠키에 담아 JS 파일에서 토큰 여부를 확인하기 위해 setHttpOnly()를 설정하지 않았습니다. 문제점 클라이언트 측에서 둘다 갖고 있으면 탈취 당할 가능성이 있지 않을까? 고민 먼저, JWT 인증은 서버가 상태를 갖지 않아 클라이언트 측에서 토큰을 저장하고 있어야 합니다. 클라이언트가 사용할 수 있는 저장소는 쿠키, 세션 스토리지, 로컬 스토리지가 있습니다. 이 중 어떤 저장소에 저장할지 선택하기 위해 각 저장소별 차이점..

[Tistory] Webpack4 패키지 최적화

Webpack 마이그레이션을 진행하면서, 사이드 이펙트를 발생시키지 않고 소스 코드의 구조 변경을 최소화하는 최적화에 대해서 고민을 하며, 어떤 최적화를 할 수 있을까 하다 ‘패키지 최적화’를 진행하기로 선택하였다. 번들링의 방식과 구조를 변경하면서 사이즈를 축소시키고, 웹 페이지 리소스 로딩 속도 개선을 충분히 할 수 있었기 때문이다. 사실, 렌더링 최적화와 로직 최적화는 기존 레거시 구조에서 변경시키는데 상당히 많은 변화를 발생시키기 때문에 선택할 여지가 없었기도 한다. 번들링 사이즈 측정은 webpack-bundle-analyze로 하였고, Chrome의 Network 기능과 Lighthouse를 통하여 측정하였다. 측정결과 [webpack-bundle-analzye] Parsed Size: 10…

[Tistory] 2022년 회고 (소프트웨어 마에스트로 회고)

2022년을 마무리하며 남기는 회고 2022년이 끝이 난 지 13일이 지났지만 별로 실감이 나지 않는다. 2022년 13월인 것 같다.ㅎㅎ 나의 2022년을 되돌아보며 한번 적어본다. 많은 일이 있었던 2022 Timeline 1. 힘들었지만~~ 아무 일 없이 전역을 했다. 나 이후로 전역하는 친구들이랑 자주 만난다. 역시 인생은 어떻게 될지 모르는 것!! ㅎㅎ 안에서만 보다가 밖에서 만나니 신기하고 반갑다. 이런 친구들이랑 평생 연락하게 되지 않을까 싶다. 전역하고 몇 개월 후에 휴가 나온 같은 부서 막내를 만났는데 잘해줘서 고마웠다고 하니 웅클했다ㅎㅎ 그 친구가 이제 곧 왕고라닝! 얼른 나와 ㅁㄱ형, ㄱ현.. 커피 갈아줄게..ㅎㅎ 전역을 하며 이제 개발 서적도 많이 읽고 개발도 실컷 해보고 싶었다. ..

[Tistory] [GIT&AWS] 깃헙액션으로 CI/CD 배포 자동화 하기!

📖 EC2에 프로젝트 빌드하여 올리는 것까지 완료했다. 이제는 CI/CD 배포 자동화를 해볼 차례! 실제 배포된 인스턴스는 ubuntu이지만 포스팅이 죄다 linux 인스턴스로 되어있어서 일단 연습할 겸 새 인스턴스는 linux 기반으로 생성했다. 연습은 linux대로 하고 실제 적용할 땐 ubuntu 기준으로 살짝만 변경해주면 될 것이다. 1. ec2 인스턴스에서 자동배포를 위해 필요한 codedeploy를 설치해줘야 한다. # 패키지 매니저 업데이트, ruby 설치 sudo yum update sudo yum install ruby sudo yum install wget # 서울 리전에 있는 CodeDeploy 리소스 키트 파일 다운로드 cd /home/ec2-user wget https://aws-..

[Tistory] [Dev] 23.03.24. AWS RDS 인스턴스 생성 및 연결

지난 게시글에서는 AWS EC2 인스턴스를 생성하고, ssh 연결에 대한 작업을 기록했다. 현재 인스턴스에는 아무 것도 존재하지 않으므로 java도 설치하고 mysql도 설치해야 한다. 사실 ubuntu에 mysql을 다운로드해서 연결하고자 했는데, AWS RDB라는 친구가 있다기에 이왕 AWS를 활용해서 뚱땅이는 김에 사용해보려고 한다. 만약 MYSQL을 직접 다운로드하여 활용하고자 한다면 footnote 페이지를 참고하면 되겠다. AWS RDS 인스턴스 생성 EC2와 마찬가지로 검색창에 RDS를 검색하고 서비스를 선택하여 볼 수 있는 페이지이다. 아무런 데이터베이스가 없으니 생성하도록 하겠다. 가장 먼저 ‘데이터베이스 생성 방식 선택’ 항목이다. 표준 생성 방식을 선택하고 넘어간다. ‘엔진 옵션’ 항..

[Tistory] Backend Developer Roadmap (2) – Learn a language [Java]

자바란 무엇인가? 위키백과에서 제공해주는 Java의 간략한 설명이다. 자바(Java)는 자바로 기술된 프로그램 개발 및 실행을 할 수 있는 소프트웨어 모임의 총칭이다. 자바 프로그램은 운영체제나 하드웨어에 의존하지 않는 바이트 코드(중간 언어)인 추상적인 코드로 구현된다. 따라서, 자바 프로그램을 실행하기 위해서는 자바 가상 머신(JVM)과 개발에 필요한 표준 라이브러리 세트와 컴파일러의 환경만 맞추면 자바 프로그램은 모든 환경에서 동일하게 동작한다. 이러한 실행환경과 개발환경을 제공하는 것이 자바 플랫폼이다. 자바의 장점 플랫폼 독립성 (Platform Independence): 자바는 “Write Once, Run Anywhere(WORA)”라는 철학을 가지고 있어서, 한 번 작성한 코드를 여러 플랫..

[Tistory] 이득우 언리얼 참조 사이트

http://www.acornpub.co.kr/book/unreal-c#errata 이득우의 언리얼 C++ 게임 개발의 정석 언리얼 엔진 학습에 목말라하는 게임 개발자에게 단비 같은 언리얼 엔진 프로그래밍 책이다. www.acornpub.co.kr 스마 인턴 프로젝트 UNSEEN https://velog.io/@yoo06?tag=UNSEEN yoo06 (유영준) – velog velog.io UNSEEN 졸업생 https://husk321.tistory.com/category/%EC%BE%8C%EB%9D%BD%EC%97%86%EB%8A%94%20%EC%B1%85%EC%9E%84%20%28%EA%B3%B5%EB%B6%80%29/Unreal ‘쾌락없는 책임 (공부)/Unreal’ 카테고리의 글 목록 husk..

[Tistory] 임베디드 국비교육 복습 – 내용정리 및 참조링크

임베디드 국비교육에서 배웠던 내용 복습 경력이 쌓이고 복습을 반복할 때마다, 이전에 배운 내용이 좀 더 잘 이해가 되고, 왜 이 내용을 설명했는지 알 수가 있다. 여러모로 느낀 바가 많은 시간. 아래는 복습하면서 재정리한 내용과 참조한 링크 * 디바이스 드라이버는 이해하기 좋게 잘 연결되어 있지 않은 것으로 보인다. (내용을 짜집기 하기만 한듯?)추가적으로 책을 구매해 공부할 것. 1. 컴퓨터 아키텍처 – 폰노이만 아키텍처 : 명령어와 데이터를 위한 메모리 인터페이스가 하나인 구조 명령어 메모리(rom)와 데이터가 저장된 메모리(ram)에 접근하는 명령어, 데이터 버스를 공유한다 (즉 명령어 버스와 데이터 버스를 공용으로 사용한다) – 하버드 아키텍처 : 명령어와 데이터를 위한 메모리 인터페이스가 분리되..