Latest

대량의 더미 데이터 DB에 주입하기

대량의 더미 데이터 DB에 주입하기

대량의 더미 데이터 DB에 주입하기 현재 만들고 있는 토이 프로젝트에서는 대량의 데이터가 존재하는 DB 를 대상으로 여러가지 테스트를 수행한다. 테스트를 수행하기 위해서 더미 데이터를 주입할 방법에 대해서 모색해야했다. SQL Procedure * SQL 문으로 직접 테이블에 데이터를 주입한다. * 직접 Insert into () values (); 와 같은 구문을 작성할 수도 있지만, Procedure 혹은 function 을

By Sungjun Park
Lombok 에 대한 짧은 생각

Lombok 에 대한 짧은 생각

최근 Java / Spring 으로 스택을 변경하면서 작은 프로젝트를 하고 있다. 팀원의 추천으로 lombok 이라는 라이브러리를 사용하게 되었다. Lombok 을 쓰면 정말 간단하다. Getter, Setter, Constructor, equals, hashCode 과 같이 작성해야하지만 작성에 피로를 느끼는 코드들을 annotation을 통해서 너무 쉽게 만들 수 있다. 그런데, 이 라이브러리 사용할수록 필요성에 대한 의문이 생긴다. 생각을

By Sungjun Park
인증 인가 정보는 어디에 담아야할까? (cookie? authentication header?)

인증 인가 정보는 어디에 담아야할까? (cookie? authentication header?)

인증 인가 정보 전달 방법의 결정 요구사항 * HTTP 표준에 부합해야한다. * 보안 이슈를 최소화해야한다. * 클라이언트에서도 처리가 간편해야한다. * 모든 HTTP request 에서 처리 가능해야한다. * JWT, Session 모두 고려해야한다. 고려대상 Request Body * Request Body 에 auth 정보를 싣어 보내는 방법의 경우 GET HEAD DELETE TRACE 와 같은 HTTP Method 에서 사용할 수 없다.

By Sungjun Park
인증 인가의 상태 코드 반환은 어떻게 해야할까?

인증 인가의 상태 코드 반환은 어떻게 해야할까?

인증 인가와 상태 반환 코드 요구사항 * HTTP 표준과 부합해야한다. * Client 입장에서 처리하기 편리해야한다. * 보안을 고려해야한다. 고려대상 * 인증에 실패할 경우 항상 401 (Unauthorized) * 상황에 따른 HTTP Status code * 인증 정보가 있는 경우 * 성공 * 실패 * 잘못된 정보로 인증 하는 경우 * 유효한 인증이나 접근이 불가능 한 경우 * 403 ? 404 ? * 인증 정보가 없는 경우

By Sungjun Park
Java + Spring 에서 NestJS Style Auth Guard 만들기

Java + Spring 에서 NestJS Style Auth Guard 만들기

PassportJava * 새로운 프로젝트에서 인증, 인가 과정에 Spring Security 를 사용하는 것이 적합하다는 의사결정을 내리기는 했으나, NestJS 를 통해 백엔드를 구현했던 입장에서는 Spring Security의 사용에 다소 불편함이 있었다. 때문에, Java + Spring 에서 NestJS Style (AuthGuard + Passport.js) 으로 인증 / 인가 프레임워크를 제작해보고 Spring Security 와의 장단점을 비교해보고자 했다. * 내가 구현하고자 하는

By Sungjun Park
Ghost 블로그 이전 과정 기록

Ghost 블로그 이전 과정 기록

옮기게 된 스토리... 꽤 어린 시절부터 블로그를 했었다. 햇수로 치면 15년 정도 되는 것 같은데, 약 3~5년 정도의 주기로 이번처럼 새로운 플랫폼에서 새로운 시작을 하곤 한다. 이전 블로그는 티스토리에서 https://photogrammers.tistory.com 으로 운영하고 있었고, 개발자의 길로 접어든 때에 시작을 했던 블로그이다. 티스토리 블로그는 큰 목적성을 두고 만든

By Sungjun Park
InfluxDB + Grafana를 통해 Proxmox Host CPU 온도 모니터링 시각화 및 알림 구축

InfluxDB + Grafana를 통해 Proxmox Host CPU 온도 모니터링 시각화 및 알림 구축

Influx DB 와 Grafana 를 통해서 Proxmox 를 모니터링 할 수 있도록 구성했습니다. 기본적으로 제공하는 데이터 이외에도, CPU 온도에 대한 패널을 추가하고 telegram을 통해 알림을 설정하는 과정까지를 담았습니다. Proxmox 모니터링하기 우선, InfluxDB + Grafana 를 통해서 Proxmox 모니터링은 아래 사이트를 따라가시면 쉽게 해결하실 수 있습니다. 서버포럼 - InfluxDB 및 Grafana로 Proxmox

By Sungjun Park
홈서버 구축기  - 서버 구입 및 초기 설정

홈서버 구축기 - 서버 구입 및 초기 설정

언젠가 만들어봐야지.. 하고 마음 먹었던 홈서버. 드디어 구축을 했습니다. Host PC 구매부터 Proxmox 를 통한 가상화까지의 과정을 담았습니다. (티스토리에서 나눠져있던 글을 통합함) 홈서버 구축하기 나는 왜 서버를 구축하게 되었나. 어린 시절부터 나는 "나만의 서버"가 갖고 싶었다. 최근에는 클라우드를 간편하게 사용할 수 있게 되면서 그 필요성이 낮아지고 있지만

By Sungjun Park
내 Ghost blog는 왜 느릴까? - (1)

내 Ghost blog는 왜 느릴까? - (1)

Ghost 블로그로 옮기고 이상한 문제를 발견했다. 블로그가 너무 느리다는 것. 내 블로그는 대체 왜 느린걸까? 하나 하나 짚어가며 해결하는 과정을 기록해보았다. 문제 상황 일단 속도 저하를 크게 두 가지 경우로 나눌 수 있었다. 문제상황 1 - 첫 로드 상황 특정 페이지에 완전히 첫 접근하는 경우에 문제가 발생했다. 한 포스팅 혹은

By Sungjun Park
이병국의 개발자를 위한 DB 이야기

이병국의 개발자를 위한 DB 이야기

학습을 하던 와중 좋은 DB 시리즈가 있었다. 해당 글에 걸린 링크가 사용하지 못하는 상태라서 따로 링크를 뽑아서 유효한 링크로 정리해뒀다. 물탱크 구조로 알아본 오라클의 블록 옵션 ‘PCTFREE와 PCTUSED’ 이산가족 찾기 생방송을 통해 배우는 DB 원리 개발자에게 맞는 DB 공부방법 찾기: 물리적 분류와 논리적 분류 그리고 인덱스 데이터베이스 인덱스의 오해와 진실

By Sungjun Park
Deep dive into malloc

Deep dive into malloc

malloc 은 어떻게 작동하는 것일까요? malloc을 직접 만들어보면서 작성한 글입니다. 서론 메모리는 컴퓨터 시스템의 가장 핵심적인 자원 중 하나로, 이를 효과적으로 관리하는 것은 프로그램의 성능과 안정성에 결정적인 영향을 미칩니다. 메모리 관리의 중요성에 대해 대부분의 프로그래머들은 인지하고 있지만, 그 뒤에 숨겨진 복잡한 메커니즘들을 완전히 이해하는 것은 쉬운 일이 아닙니다. 이 글을

By Sungjun Park
포인터란 무엇인가

포인터란 무엇인가

글에 들어가기에 앞서, 이 글을 요약하면 다음과 같습니다. * "포인터는 메모리의 주소를 담는 변수이다" * 포인터의 자료형은 **“해당 메모리 주소부터 어디까지를 하나의 자료로 볼 것인가”**를 결정한다. * * 연산자는 해당 포인터가 가리키고 있는 자료의 값을 내뱉어준다. 해당 글은 포인터를 사용하는 방법보다는, 포인터가 무엇을 저장하고 어떻게 작동하는 지에 대해서 중점적으로 설명하는 글입니다.

By Sungjun Park
C++ Iterator 뜯어보기

CPP

Development

C++ Iterator 뜯어보기

C++ 에서 vector 와 같은 컨테이너들을 사용하다보면 마주하는 iterator. 이들은 어떻게 구현이 되어있는 것일까? 같이 함께 뜯어보자. Iterator Iterator의 정의 Iterator Pattern * 컨테이너의 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 수 있는 방법을 제공한다. iterator 를 통해서 컨테이너와 알고리즘을 분리할 수 있으며, 인터페이스를 고치지 않고 새로운

By Sungjun Park
C++ allocator 가볍게 알아보기

CPP

Development

C++ allocator 가볍게 알아보기

C++ STL의 컨테이너 재구현 중 std::allocator 라는 녀석을 발견했다. allocator 는 C++ 에서 어떤 역할을 하는 것일까? 가볍게 같이 알아보자. Allocator? STL 컨테이너를 직접 구현하다보면 STL 컨테이너의 constructor에 allocator가 있다는 사실을 알게된다. 그런데 정작 컨테이너를 직접 사용하면서 allocator를 사용해본 경험은 아마 이 글을 읽는 대부분이 없을 것이다. C++에서

By Sungjun Park
컴퓨터에서 실수 표현하기

Development

C

CPP

컴퓨터에서 실수 표현하기

컴퓨터는 메모리에 0과 1을 이용한 2진수로 정보를 저장한다. 정수의 경우 단순히 2진수로 정확히 표현할 수 있지만, 실수는 그렇지 않다. 컴퓨터에서 실수를 표현하기 위해 메모리에 어떻게 저장하며, 그에 대한 두 가지 방법 부동 소수점과 고정 소수점을 살펴보도록하자. 부동 소수점 IEEE 754 32bits 부동 소수점에 대한 표준 부동 소수점에 대한 표준은 IEEE

By Sungjun Park
가변인자는 무엇이며 어떻게 구성되어 있는가

Development

C

가변인자는 무엇이며 어떻게 구성되어 있는가

C 의 printf 를 사용하면서 어떻게 이 함수는 여러 인자를 받을 수 있는지 궁금한 것이 있지 않은가? 이번 글에서는 C 에서 다중 인자를 받도록 하는 va_arg 를 설명한다. 가변인자 * 함수에서 타입과 개수가 정해지지 않은 여러개의 인자를 받고 싶을 경우가 있다. (printf에서 여러개의 인자를 받는 것이 대표적인 예시) 이를 지원하기

By Sungjun Park