본문 바로가기

분류 전체보기

(11)
[TimescaleDB] TimescaleDB 동작 방식 Why? 동작원리를 이해함으로써 추후 문제의 원인 파악보다 넓은 관점에서 해석 가능하다. TimescaleDB? PostgreSQL을 기반으로하는 오픈소스 시계열 데이터베이스이다. 시계열 데이터를 효율적으로 저장하고, 쿼리를 할 수 있는 기능을 담당한다. 현재의 많은 기업들의 비즈니스 모델이 시계열 데이터를 기반으로 하는 만큼 PostgreSQL 진영에서 많이 사용된다. Hypertable TimescaleDB는 시계열 데이터를 관리하기 위해서 "하이퍼 테이블"을 이용한다. 하이퍼 테이블은 데이터를 시간별로 자동으로 분할하는 PostgreSQL 테이블이다. 하이퍼 테이블의 장점은 일반 PostgreSQL 테이블과 동일한 방식으로 하이퍼 테이블과 상호 작용하지만, 시계열 데이터를 보다 빠르고, 쉽게 관리할..
[클라우드] AWS와 같은 클라우드 컴퓨팅 서비스는 어떻게 모든 EC2에 IPv4를 제공해줄까? 의문의 시작? 과거부터 "IPv4의 공간이 부족해서..." 이런 문장을 많이 접했다. 그래서 사설 IP 개념이 나온 것도 부족한 IPv4를 해결하는데 적합했다라는 내용도 많이 보았다. 그런데 아마존의 AWS와 같이 클라우드 컴퓨팅 서비스를 제공하는 모든 회사들은 IPv4를 통해서 사용자가 서비스를 publish 할 수 있게 해준다. 예를 들어, EC2를 할당 받아서 웹서버를 열면 IPv4 80번 포트로 접근하면 해당 웹서버에 요청을 보낼 수 있다. 의문이 들기 시작한다. IPv4 수가 부족한데, 몇 개나 생성될지 모르는 EC2(클라우드 컴퓨팅)에 하나하나 IPv4를 부여해준다고 ?!?!! 검색 전 나의 생각 1. IPv6 스타링크도 IPv6를 이용한 통신을 한다고 언뜻 들었다. 과거에 IPv6 통신 수가..
[네트워크] WireGuard VPN이란? Virtual Private Network의 약자로 가상 사설망을 말한다. 보통 public network에서 목적지에 데이터를 안전하고, 익명으로 전송하기 위해서 사용한다. 다른 네트워크에 있는 자원에 접근하기 위해서 사용하는 경우가 대부분이기 때문에, 보통 기업에서 많이 사용한다. VPN 용도 온라인 개인정보 보호 향상 원격 서버를 통한 라우팅 VPN을 사용하는 이유 온라인 데이터 보호 외부 컨텐츠 이용 보안된 네트워크 사용 기관의 감시 회피 ISP 트래픽 제한 우회 VPN 프로토콜 VPN을 제공 서비스에 따라서 사용하는 프로토콜이 다르다. 보통 SSL 과 IPSec을 사용한다. SSL IPSec 전용 장비 유무 X O 클라이언트 프로그램 O X 위치 어디서나 고정된 위치의 사용자 사용처..
[NestJS] require() of ES Module(CommonJS 와 ESM 이야기) 개요 Nest.js에서 외부 라이브러리를 이용하고자 할때 NPM과 같은 패키지 매니저를 이용해서 외부 라이브러리을 관리한다. 외부 라이브러리의 버전에 따라서, 지원하는 표준에 따라서 여러 오류를 맞이하게 된다. TypeScript까지 잘 지원하는 라이브러리가 많아지길 기원하며, 이 포스트를 작성해본다. 배경지식 ECMAScript JavaScript의 기반이 되는 표준이다. 즉, JavaScript는 ECMAScript의 사양을 준수하는 범용 스크립팅용 언어인 것이다. CommonJS & ESM CommonJS JavaScript의 역사는 정적인 HTML을 동적으로 표현하기 위해서 만들어졌다. 그러다보니 웹 브라우저에 탑재되었고, HTML 문서상에서 작성을 하다 보니, 모듈이라는 개념이 없었다. 그러나 ..
[CPU] 멀티코어 이야기 개요 대부분 학사레벨에서 CPU를 배우면, 싱글코어를 기반으로 배우거나, 공부하게된다. 멀티코어는 간단하게 넘어가거나, 정확하게 모르고 넘어가는 경우도 많다. 최근에 여러 발표를 보면서, CPU 구조도와 코드와 설명이 서로 매칭이 안되는 발표를 듣게 되었다. 이 원인을 싱글코어와 멀티코어의 차이점을 잘 모르다보니, 그리고 현재의 CPU들에 대해서 잘 모르다보니 발생한 문제라고 판단하였다. 문제는 이 설명이 틀렸다는 것을 눈치챘지만, 나라면 정확히 발표 할 수 있을까?, "현재 사용하는 CPU들은 어떤식으로 동작하는데?" 라는 의문이 생겨 정리해본다. 배경지식 클럭(Clock) 디지털 회로에서 프로세서가 처리하는 명령 하나는 여러 마디로 구분되어지고, 이를 state라고 부른다. 기계어 명령어를 처리하기 ..
[Sort] 프로그래밍 언어들의 sort 함수에 대한 user-defined function에 대한 이야기 개요 요즘 언어들은 정렬 함수 정도는 기본적으로 제공하고 있다.대부분 정렬에 대해서 이해하기 시작하는 단계는 코딩 테스트가 아닐까 싶다. 문제마다 정렬 함수가 굳이 있는데, 매 경우마다 새로운 함수를 만들 필요는 없다. sort 함수들은 대부분 compare 혹은 key 등의 이름들로 사용자 정의 함수를 이용하여, 정렬할 수 있도록 도와준다. 개념을 알고 있다가도, 복잡한 정렬이 필요할때마다 기억이 잘 안나서 정리 해 둔다. 사용자 정의 함수(user-defined function, customize function) 대부분의 언어에서 sort함수가 사용하는 사용자 정의 함수는 true, false 혹은 0 등의 값을 return 하도록 설계한다. c void qsort (void* b..
[Linux] apt update error 개요 impish error로 apt update가 되지 않는다. 개인 서버지만 최근 지인에게 빌려주었고, 지인이 셋팅하다가 문제가 발생했다. 그런데 고치는데 생각보다(?) 시간을 많이 쓰게 되어서 작성해본다. apt update error apt update시 특정 부분에서 update를 할 수 없다고 나온다. http://security.ubuntu.com/ubuntu impish-security Release 404 Not Found [IP: 2620:2d:4000:1::16 80] 해결법 필자의 경우, 문제를 일으키는 리스트들만 찾아서 rm으로 삭제 후, 터미널을 다시 열고 apt update를 진행했다. /etc/apt/sources.list.d/ 에서 해당 파일을 찾을 수 있다. sudo ls..
[SQLI] mysql 기본적인 공격 flow 개요 당연한 얘기지만, 구현이 어떻게 되어 있냐에 따라서 공격하는 방법, 방식등은 얼마든지 바뀐다. 그럼에도 기본적인 공격 flow를 적으려는 이유는, 아무 생각 없이 공격 하는게 아니라, 어떠한 생각, 공격 vector, 내게 필요한 리소스는 무엇인지 등을 전체적으로 이해하고, 상기하고자 작성한다. 구성 간단하게 테스트용 db, table을 구성한다. create database test; create table users ( id int not null primary key auto_increment, password varchar(512), nick varchar(30), email varchar(100) not null); create table rooms ( id int not null prim..
[RN] google map api key 개발용, Release용 나누기 에러내용 debug와 release api key를 나누고 싶을 때 release api key만 입력하여, 에뮬레이터 google map이 보이지 않을 때 원인 - 해결방법 1. debug, release SHA-1 google maps platform에 등록 - 항목 추가로 1개의 api에 등록할 경우, 1개의 api로 release, debug를 동시에 사용이 가능하다. 2. android/app/build.gradle의 buildTypes를 변경한다. buildTypes { debug { buildConfigField("String", "map_api_key", "\"your_debug_api_key\"") } release { buildConfigField("String", "map_api_ke..
[RN] google map app bundle 배포시 중요사항 에러내용 직접 apk 파일로 만들어서 real device에 설치할 경우에는 google map이 정상적으로 동작하는데, app bundle로 만들어서 play store 에 올린후 다운받을 때 google map이 안보이고, marker가 찍히지 않는 오류 원인 apk를 만들어 직접 설치(배포)했을 경우에는, 중간에 구글에서 서명하는 App signing key가 없기 때문에 개발자가 설정한 api key를 그대로 따라간다. 하지만 play store에 올리는 경우, google에서 서명을 한번 더 하기 때문에 SHA-1 인증서 디지털 지문이 변경 된다. 해결방법 1. google play console 설정 -> 앱 무결성 2. 자신이 선택한 프로젝트의 SHA-1 복사 3. google cloud p..
[RN] Task :app:installDebug FAILED 에러내용 Task :app:installDebug FAILED ...app-debug.apk com.android.ddmlib.InstallException: INSTALL_FAILED_VERSION_DOWNGRADE 원인 react-native run-android를 실행 했을 때, 위와 같은 오류와 함께 실행이 되지 않는다면, 해당 device에 같은 package name을 가진 앱이 설치 되어 있는 경우이다. 주로, 같은 프로젝트를 처음부터 진행하겠다는 마음으로, react-native init을 진행 하고, 기존 프로젝트 처럼 셋팅해주기 위해서, package명을 같게 작성하는 경우가 해당한다. 해결방법 1. 에뮬레이터 혹은 디바이스에 설치된 앱과 다른 package명을 사용한다. 2. 기존 앱..