0. 이 글의 작성 목적 https://www.youtube.com/watch?v=92NizoBL4uA Redis에 대해 알아보다 이 영상이 너무 설명을 잘해주고 있어서 영상의 챕터별로 조금씩 정리해보고자 한다. 1. Redis 캐시 대부분 Redis를 캐시로 사용할 텐데 이 부분에 대해 잘 사용하는 방법에 대해 짚고 넘어가고자 한다. 우선 Caching이 무엇인지 다시 확인해 보자. Caching은 사용자 입장에서 데이터를 더 빠르고 효율적으로 액세스 할 수 있는 임시 데이터 저장소다. 이때 이 Cache가 유용하게 사용되려면 당연히 원본에 접근하는 것보다 Cache에 접근하는 게 더 쉽고 빨라야 한다. 또한 동일 데이터에 대해 반복적으로 접근하는 경우 사용하는 것이 좋다. 이 조건에 대해 Redis는..
전체 글
흔한 컴공 출신 개발자입니다. 제가 경험하고 공부하고 아는 것을 적어둡니다.0. 이 글을 작성하는 이유 ElasticSearch의 사용법을 알기 위해서는 어떤 구조로 이루어져 있는지 간략하게는 알고 가야 할 것 같아서 정리하기 위함 주요 참고 : https://www.youtube.com/watch?v=JqKDIg8fgd8 1. 파트 Index : Document의 집합으로 RDBMS에서의 Database에 해당함. Indices : ElasticSearch에서는 Index의 집합 Cluster : 독립된 ElasticSearch의 시스템 환경, Cluster가 여러 개더라도 서로 독립된 데이터를 가짐 Node : 실행 중인 ElasticSearch 시스템 프로세스 Document : 저장된 데이터 단위 Shard : Document들에 대한 색인과 검색을 진행하는 작업 단위 ..
0. 이 글의 목적 ElasticSearch8.9를 공식 문서를 토대로 설치하는 과정을 정리하기 위함 1. ElasticSearch 설치 환경 MacOS Docker iTerm 2. 설치 시작 https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html Install Elasticsearch with Docker | Elasticsearch Guide [8.9] | Elastic The container runs Elasticsearch as user elasticsearch using uid:gid 1000:0. Bind mounted host directories and files must be accessible by thi..
0. 이 글을 작성하는 이유 Redis가 어디에 좋고 왜 사용하는지 알아보면서 정리하기 위해 1. Redis란? Redis는 비관계형 데이터베이스 관리 시스템 NoSQL DBMS입니다. Key와 Value로 데이터를 구성하여 별도의 SQL없이 Key로 데이터를 조회할 수 있습니다. 어 어? 동작 그만. 마! Key와 Value는 Java에서도 Map지원하는데 이걸 왜 쓰는데 조회 속도가 빠릅니다. 내가 빙다리.. 아니 컴공과 1학년으로 보이냐 임마. Java의 Map도 Hashing을 사용해서 조회 속도가 빠른데 어?! 성격이 좀 급하십니다. 실은 그게 핵심은 아닙니다. Redis는 RAM에 데이터를 저장합니다. RDBMS는 데이터를 어디에 저장하죠? 보조 기억장치(HDD, SSD)에 저장하죠. (물론 ..
0. 이 글을 쓰는 목적 https://redis.io/docs/getting-started/ Get started with Redis How to get up and running with Redis redis.io Redis 해보려다가 Redis Stack이라는게 보여서 이걸로 연동 맛보기 해보려고함 1. Redis와 Redis-stack의 다른점은? Redis + Additional features 정도로 생각하면 될 것 같다. 2. 환경 구축 우선 Redis-stack은 딱히 이유는 없고 docker로 구축하려고 한다. redis-stack-server와 redis-stack이 반겨준다. 이 중 뭘 골라야할지 고민이 되는데 redis-stack은 redis-stack-server와 GUI Clie..
0. 이 글의 목적 Real MySQL 8.0을 읽으면서 내가 정리하고 싶은 부분에 대해 작성하기 위함 1. 환경 container : docker db : mariadb 10 (아무튼 mariadb는 mysql 서비스를 fork 해서 만들었기 때문에 이걸로 진행) 2. 서버 설정 MySQL 서버는 단 하나의 설정 파일을 사용한다. 확장자는 운영체제의 환경에 따라 다르나 보통 리눅스 환경에서 사용한다고 가정하고 cnf 파일로 진행한다. 리눅스 : my.cnf 윈도우즈 : my.ini 단 하나의 설정 파일을 사용한다고 했는데 이는 공통적으로 my.cnf라는 이름을 사용한다는 것이다. 문제는 이 파일이 여러 경로에 존재할 수 있는데 어느 디렉토리에 있는 my.cnf를 참조하고 있는지 아래 명령어로 확인이 가..
0. 이 글의 목적 JAVA의 finalize에 대해 정말 간단하게 소개하기 위해 1. 일련의 가상 사례를 들어보자. 우리는 브들리(php-5년차, 급하게 java프로젝트 투입)와 찰스(java-3년차)라는 2명의 개발자를 예시로 이야기를 진행한다. 찰스 : 브들리? 이거 finalize는 왜 오버라이딩 했어요? 브들리 : java는 gc가 메모리 수거하잖아요. 로그를 좀 찍어두면 좋지 않을까 해서요. 찰스 : 아니... 이러면 답이 없는데... 하.. finalize가 뭐 하는 메서드인지는 알아요? 브들리 : 알죠? 객체 소멸자. c++에서는 직접 호출해야 하는데 java에서는 gc가 알아서 처리해 주는 거잖아요. 찰스 : ... 2. 일단 당장은 뭐가 문제인가 finalize에 대해 소멸자인 것까지는..
0. 이 글을 쓰는 이유 대부분의 spring security 가이드에서는 csrf를 disable하는데 csrf는 뭐고 왜 disable처리하는지 궁금해서 정리하기 위함 1. CSRF란? Cross Site Request Forgery : 사이트간 위조 요청 웹사이트 취약점 공격 방법 중 하나로 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격 2. Spring Security에서는? CSRF에 대한 예방 기능을 제공한다. https://docs.spring.io/spring-security/reference/features/exploits/csrf.html Cross Site Request Forgery (CSRF) :: Spring Security When..
0. 이 글을 작성하는 이유 엔티티 테스트 하는 방법에 대해 이게 맞는지는 잘 모르겠으나 내가 하고 있는 방식을 공유하고 정리하기 위함 1. 테스트 프레임워크 및 개발 환경 IntelliJ + spring boot 3.x 버전을 사용하면서 같이 들어있는 junit5를 사용 2. 엔티티의 구조 @Entity @Getter public class Bean { @Id @Column(name = "bean_id") @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private Long price; @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.A..
0. 이 글의 목적 https://github.com/0113bernoyoun/easy-discord-webhook-api GitHub - 0113bernoyoun/easy-discord-webhook-api Contribute to 0113bernoyoun/easy-discord-webhook-api development by creating an account on GitHub. github.com 이 프로젝트를 배포하면서 했던 일들 정리하기 위함이 목적 1. 구조 Slack은 라이브러리를 제공해 줘서 참 좋은데 discord는 이게 없다. 그래서 만들면 재미있겠다 싶어서 무작정 만들기 시작했다. 다행히 어떤 parameter가 어떤 역할을 하는지에 대해서는 잘 나와있다. https://birdie0..