전체 글 131

1. 계기

어쩌다 보니 처 조카 두 명이 IT관련 학과에 다니고 있습니다. 인공지능 붐과 함께 제2의 스타트업 전성기를 맞아 개발자의 몸값이 치솟고 있는 요즘 분위기에 놀랄 일은 아닙니다. 최근 회사에 지원하는 졸업생들의 이력서를 보면 제2전공으로 IT 관련 학과를 선택하는 학생들도 많습니다. 사실 40대 중반인 저도 기계과를 졸업하고 대학원을 진학할 때 신분세탁(?)을 했습니다. 제가 사회에 나올 때만 해도 1세대 창업 붐이 휩쓸고 지나갔음에도 불구하고, IT 직군은 노가다라고 비하하며 사내에서도 중요하게 생각하지 않는 경우가 많았습니다. 마치 언제든지 다른 인원으로 대체할 수 있고 기획 부서에서 짜 놓은 판을 열심히 구현만 하도록 하길 원하는 분위기였지요. 특히나 자신의 솔루션을 가지지 않고 외주 용역으로 운영..

소프트웨어 라이선스의 이해

전 직장에서 안드로이드 앱을 개발할 때는 사용하는 라이브러리를 모두 조사하고 법조팀에서 라이센스 위반인지 조사해 주었습니다. 막연히 알고 있던 오픈 소스의 개념과 사용할 수 있는 것과 아닌 것에 대해 이해를 조금 더 높이고자 자료를 정리합니다. 아래 내용은 대부분 책 오픈소스 소프트웨어 라이선스에서 가져온 것임을 밝혀 둡니다. 용어 정리 오픈소스 국내에서는 “오픈소스”를 지칭하는 용어로 OSS(오픈소스 소프트웨어), 공개 소프트웨어, 오픈소스라는 용어를 주로 사용합니다. 하지만 국외에서는 FOSS (Free Open Source Software)라는 용어를 더 익숙하게 사용하고 있습니다. 여기서 Free는 "공짜"를 뜻하는 게 아닌 "자유"를 뜻합니다. 행위자 오픈소스와 관견된 행위자는 3가지로 분류할 ..

Tips/잡다구리 2022.02.15

슬라이딩 세션과 리프레시 토큰

토큰을 사용하면 서버에 사용자의 상태를 저장하지 않는다는 장점이 있는 반면 공격자가 토큰을 탈취한 경우 토큰을 즉시 무효화시키지 못하는 보안 취약점을 가집니다. 이를 방지하고자 토큰의 유효시간을 짧게, 즉 만료시간을 생성시간에서 얼마 지나지 않은 시간으로 설정할 수 있습니다. 하지만 이 방법은 만료된 토큰으로 들어온 요청을 무시하고 다시 사용자에게 로그인 정보를 입력하게 할 수 밖에 없습니다. 사용자가 페이지를 이동하거나 어떤 동작을 수행하려 할 때마다 로그인을 해야 한다면 아무도 그 서비스를 사용하려 하지 않을 것입니다. 비상태저장 방식인 토큰의 보안 취약점을 보강하고 사용자 편의성을 유지하기 위해 슬라이딩 세션을 사용합니다. 슬라이딩 세션은 로그인 정보를 다시 입력하지 않고 현재 가지고 있는 토큰을 ..

Tips/인증 인가 2021.11.17

인증(Authentication) vs. 인가(Authorization)

인증(Authentication)과 인가(Authorization)는 항상 함께 등장하는 개념이면서 사용하기에 헷갈리는 용어이기도 합니다. 문맥상 어색하지 않은 경우가 있어 이 둘의 차이를 두지 않고 사용하는 경우도 빈번합니다. 인증/인가 서비스를 제공하는 Auth0 사의 블로그에 이 둘에 대한 설명이 잘 소개되어 있어 번역해 보았습니다. 인증과 인가는 최신 컴퓨터 시스템에서 널리 사용되지만 사람들이 종종 혼동하는 용어입니다. 이 두 용어는 모두 보안과 관련이 있습니다. 인증이란? 인증은 어떤 개체(사용자 또는 장치)의 신원을 확인하는 과정입니다. 개체는 보통 어떤 인증요소를 증거로 제시하여 자신을 인증합니다. 예를 들어 은행에 가서 돈을 인출하려면 하면 은행직원은 여러분이 누구인지 확인하기 위해 신분증..

Tips/인증 인가 2021.11.14

JWT (JSON Web Token)

JWT([jot]라고 읽는다고 하지만 국내에서는 그렇게 읽는 사람을 본적은 없습니다.😅)는 RFC 7519에 소개된 것으로써 문서의 초록에 따르면 다음과 같습니다. JWT는 두 당사자 사이에 이전될 수 있는 클레임을 나타내는 간결하고 URL에 안전한 방법입니다. JWT에 포함된 클레임은 JSON 객체로 인코딩되어 JSON 웹 서명(JWS, JSON Web Signature)의 페이로드 또는 JSON 웹 암호화(JWE, JSON Web Encryption)의 일반 텍스트로 사용됩니다. 클레임을 디지털 방식으로 서명하거나 메시지 인증 코드(MAC, Message Authentication Code)로 암호화 되어 무결성을 보호합니다. jwt.io 에서 JSON 객체로 JWT를 인코딩해 보거나 인코딩되어 있는..

Tips/인증 인가 2021.11.06

JOIN 조건에 OR를 써야 한다면

결론부터 이야기하면, ⚠️ 어떤 테이블을 JOIN할 때 ON의 조건으로 두개의 컬럼을 OR로 연결하면 안된다. 예를 들어 t1, t2 두개의 테이블이 있다. c1 컬럼은 둘다 primary key이고, t2.c2에는 인덱스가 걸려 있다. create table Test.t1 ( c1 varchar(60) not null primary key, c2 varchar(60) null ); create table Test.t2 ( c1 varchar(60) not null primary key, c2 varchar(60) null ); create index idx_t2_c2 on Test.t2 (c2); 이 두 테이블을 조인해서 조회를 하는데 조건을 다음처럼 걸고 싶은 경우가 있다. SELECT * FROM ..

Tips/Database, ORM 2021.10.09

[MySQL] EXPLAIN을 이용한 쿼리/테이블 최적화

💡 이 글은 MySQL 공식문서를 읽고 정리한 글입니다. SQL에 EXPLAIN이라는 명령문이 있다. DESCRIBE와 비슷한 기능을 가지고 있는데, 일반적으로 DESCRIBE는 테이블 구조에 대한 정보를 보고자 할 때 사용하고 EXPLAIN은 쿼리 수행 계획을 살펴보는데 사용된다. 즉, 쿼리가 어떻게 실행될지 예측한다. MySQL에서는 DESC와 함께 이 셋을 완전히 동일한 명령어로 취급한다. 따라서 문서에 있는 3개 명령어는 그냥 동일한 것이라고 보면 된다. 문법은 다음과 같다. {EXPLAIN | DESCRIBE | DESC} tbl_name [col_name | wild] {EXPLAIN | DESCRIBE | DESC} [explain_type] {explainable_stmt | FOR CON..

Tips/Database, ORM 2021.10.09

AWS Solutions Architect Associate 합격 후기

AWS 자격증을 하나 따야겠다고 마음먹은 건 매주 2시간 정도 진행하는 팀 회의에서였습니다. 새로 회사에 합류해서 CTO 직을 맡게 된 분이 하는 말을 제대로 알아듣지 못했습니다. 앞으로 진행할 프로젝트 적용할 AWS 인프라를 어떤 것을 쓰면 좋고 이런저런 것들이 가능하다고 이야기했는데, 이전 같으면 어렴풋이 그런가 보다 하고 넘어갔을 것들이 무척 답답하게 느껴졌습니다. 사실 작년 이직 후에 AWS 콘솔에서 전 직장에서 사용하지 않던 생소한 것들을 직접 세팅하고 서비스를 구동시키는 작업을 하면서 평소에 인프라 공부를 좀 해 둬야겠다는 생각을 가지고는 있었습니다. 그러던 차에 자격증이 연봉을 올리는 데 도움이 된다는 이야기를 듣고 기왕 공부하는 김에 자격증 따는 걸 목표로 하면 집중해서 공부할 수 있겠다는..

개발자 Life 2021.04.25

vscode에서 편집중인 typescript 파일을 실행하도록 설정하기

tsc --watch를 실행해 두면 매번 변경사항이 발견될 때, 알아서 빌드를 수행한다. 이상태에서 코드를 편집하고 실행을 해도 된다. 하지만 매번 콘솔을 열어 명령어를 쳐 넣는 것도 귀찮다. 그럴 땐 Run 메뉴를 실행할 때 빌드를 하게 해 주자. .vscode/tasks.json 파일 수정 tsc를 tsc-watch로 변경 { "version": "2.0.0", "tasks": [ { "label": "build", "type": "typescript", "tsconfig": "tsconfig.json", "problemMatcher": ["$tsc-watch"], "group": "build" } ] } .vscode/launch.json 파일 수정 { // Use IntelliSense to le..

Tips/Typescript 2020.06.06

Autohotkey로 맥북에서 쓰는 단축키로 설정해 보자

맥북과 윈도우를 함께 사용하다 보니 매번 단축키 때문에 애를 먹는다. 이제 복사/붙여넣기를 할 때 command + c, command + v가 손에 익었고, 손가락에 무리가 가지 않는다는 걸 느꼈다. 윈도우에서 command키 위치에 alt키가 있으니 동일하게 매핑을 해 보자. 일단 Autohotkey라는 프로그램을 설치한다. https://www.autohotkey.com/ AutoHotkey AutoHotkey provides a simple, flexible syntax allowing you to focus more on the task at hand rather than every single little technicality. It supports not only the popular im..

Tips/Windows 설정 2020.05.27