본문 바로가기

분류 전체보기

(31)
문제를 정의 하는 방법에 대해서 Outline전략 기획을 담당하는 분과 대화를 하면서, 느꼈던 점에 대해서 정리한다.Contents대부분의 사람들이 해당하겠지만, 나는 문제를 직감적으로 느끼는 편인 것 같다. 사람들과 비즈니스 대화를 하거나, 일을 하거나 무언가 생산적인 일을 할때 현재 수면위로 올라오지 않은 문제점을 직감적으로 느낀다.예를 들면, 보통 대화나, 일을 하다 보면 다음과 같은 생각이 들 때가 있다.왜 이 주제로 대화가 나왔지?나는 왜 이 상황을 모르지?이 작업이 왜 반복되지?내가 가져야할 목표는 뭐지?우리의 목표는 뭐지?개발자라는 직업을 가져서 인지, 문제를 발견하면, 해결책을 고민하게 되는데 이 부분이 대해서 전략기획 담당자와 대화를 했다.내가 꺼냈던 말은 다음과 같다. 나: "책을 읽어보니, 사용자 스토리 맵이라는 방..
[python documents] python3.11 pep594 사용 중단된 기본 모듈 목록 Why?영어 공부 및 지식 습득Summarypython3.13부터 삭제될 모듈들을 사용 중단 처리 하였다.내용중단된 모듈 리스트aifcchunkmsilibpipestelnetlibaudioopcryptnissndhdruucgiimghdrnntplibspwdxdrlibcgitbmailcapossaudiodevsunau추가 정보asynchat, asyncore, smtpd이 3개의 모듈은 python3.6부터 사용 중단 처리되어 있었는데, 이제 python3.12에서 삭제 됨을 문서에 업데이트 했다.lib2to3, 2to3 패키지는 python3.10버전 이상으로 parsing이 정상적으로 동작하지 않을 수 있다. 새로운 PEG parse에 대해서는 pep617을 확인하면 된다.삭제 이유더 이상 잘 사용되지..
[python documents] python3.11 pep 681(Data class transforms) Why?영어 공부 및 지식 습득summary몇몇 인기 있는 라이브러리에는 dataclasses와 유사하지만, standard type annotation을 사용해서 설명할 수는 없다.위에 해당하는 라이브러리는 attrs, pydantic, ORM 등을 말한다.contentsmotivationdataclass와 비슷한 라이브러리가 type checker들에 자신의 동작을 선언할 수 있는 표준 방법이 없다.커스텀 라이브러리가 존재하나, 유지가 어렵고, 파이썬 개발자도 다운로드, 설정하고 사용해야한다.rationale(이유)dataclass와 비슷한 모든 라이브러리의 기능을 지원하는 것은 아니다.라이브러리들의 일반적인 기능을 정적 타입 체크와 호환되는 방식으로 사용할 수 있게 한다.라이브러리들이 지원하지만, ..
[python documents] python3.11 pep654(ExceptionGroup) Why?영어 공부 및 지식 습득Summarypep654는 프로그램이 관련없는 에러, 예외 사항 여러개를 동시에 발생시키고, 처리할 수 있게 한다.ExceptionGroup, BaseExceptionGroup이라는 기본 type으로 이를 가능하게 한다.except* 문법은 예외 그룹의 하위 그룹과 일치하도록 일반화 할 수 있다.(ExceptionGroup 처리)contentsneeds지금까지 interpreter는 순간에 1개의 에러만 전파하는게 가능했다. chaning기능은 원인과 내용으로 서로 관련된 예외를 연결하지만, 스택이 풀릴 때 관련이 없는 여러 에러들이 전파되기를 원할 수 있다.real world use casesconcurrent errorsmultiple failures when retry..
[Python documents] python3.11 속도 Why?영어 공부도 할겸, 필요한 부분만 번역서론python3.11은 공식문서에 따르면, 10 ~ 65% 빨라졌다.일반적인 경우를 벤치마크한 결과 약 1.25배의 성능 향상을 보인다.내용측정 방법Ubuntu Linux에서 GCC로 컴파일을 진행하여, pyperformance benchmark suite로 성능 측정 결과 Cpython3.10 보다 25% 빠르다.Interpreter 실행이 빨라진 이유python 3.10python3.10의 경우 module을 실행할 때 다음과 같은 순서로 진행된다.Read __pycache__ -> Unmarshal -> Heap allocated code object -> Evaluatepython 3.11python3.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..