개발 아카이브/개발 관련 지식
REST (Representational State Transfer)란 무엇인가?
REST는 Representational State Transfer 줄임말이며, 웹 서비스 아키텍처의 한 형태입니다. 서버의 자원을 정의하고, 자원에 대한 주소를 지정하는 통신 규약입니다. 통신 규약! 즉,일종의 약속입니다. REST의 기본 원칙 자원 (Resource) 웹 서비스에서 제공하는 모든 것들을 각각의 이름으로 식별합니다. 예를 들어, 사용자 정보 /users, 제품 정보 /products 등 각각이 자원입니다. 표현 (Representation) 각 자원은 클라이언트가 원하는 형식으로 표현되어야 합니다. 흔히 사용하는 형식은 JSON, XML, 텍스트 등이 있습니다. 상태 없음 (Stateless) 서버는 클라이언트의 상태를 기억하지 않습니다. 각각의 요청은 독립적으로 처리되며, 클라이언트는..
V8 Liftoff와 웹 어셈블리: 웹 성능을 향상시키는 강력한 조합
웹 성능은 현대 소프트웨어 개발에서 매우 중요한 측면입니다. 웹 애플리케이션이 점점 더 복잡해지면, 웹 성능을 최적화하여 부드럽고 반응성 있는 사용자 경험을 보장하는 것이 더욱 중요해집니다. 이를 위해 V8 Liftoff와 웹 어셈블리라는 두 가지 기술이 큰 영향을 미치고 있습니다. 웹 어셈블리 (WebAssembly) 란? 웹 어셈블리(WebAssembly) 라는 것은 무엇일까요? 웹을 개발할 때 주로 사용하는 언어는 무엇인가요? 바로 자바스크립트입니다. 우리는 웹을 개발할 때, 자바스크립트 없이는 개발할 수 없습니다. 그러나 만약 자바스크립트가 아닌 다른 언어로 웹 개발을 하는 방법이 있다는 사실 알고 계셨나요? C언어와 C++로 웹 개발을 할 수 있습니다. 이것은 웹 어셈블리가 있음으로써 가능합니다..
[노션 API] 노션 API 연동으로 데이터베이스 사용하기
개요 다들 한 번씩 노션을 사용해 보셨을 겁니다. 노션 안에는 표나 갤러리, 리스트 등 노션 데이터베이스 기능이 있습니다. 이 기능을 잘 쓰면 사용자나 팀원에 좋은 데이터베이스가 되죠. 만약 노션에 있는 데이터가 정말 유용한 데이터라면, 이 데이터를 이용해 서비스를 구축할 수 있습니다. 노션의 데이터베이스를 그대로 사용하면 되기 때문에 따로 데이터베이스를 만들 필요 없습니다. 물론 서비스가 커진다면 DB를 구축해야겠지만, 프로토타입을 위해 빠른 개발이 필요하다면, 노션 데이터베이스를 사용하는 것이 좋은 선택이 될 수 있습니다. 가벼운 사이드 프로젝트를 만드는데도 좋은 선택이 될 수 있습니다. 따로 DB를 구축하지 않고 그 과정에서 생기는 과금도 생길 일이 없습니다. 저도 노션 데이터베이스로 몇몇 사이드 ..
자바스크립트 엔진인 V8에 대해 알아보자
V8 엔진은 구글이 개발한 고성능 자바스크립트 엔진으로, Google Chrome과 Node.js에서 사용됩니다. V8은 ECMAScript 및 Web Assembly를 표준에 맞게 구현하였으며, JavaScript 코드를 컴파일하여 매우 빠른 실행 속도를 보장합니다. Just-In-Time(JIT)이라는 컴파일링 기술을 사용하여, JavaScript 코드를 실행할 때 실시간으로 컴파일합니다. 그리고 안정적이고 안전한 구조를 가지고 있어, 코드가 비정상적으로 동작하거나 메모리 누수가 발생하는 경우를 막습니다. 이렇게 가볍고, 빠르고, 강력한 자바스크립트 엔진이기 때문에, 현재도 여러 응용 프로그램에서 사용되고 있죠. V8엔진의 구조 V8은 다양한 구성 모듈을 포함하고 있습니다. Ignition: 자바스크..
정규식을 이용한 공격 - ReDos
정규식을 이용한 공격 ReDos ReDOS는 정규표현식을 사용자로부터 입력받았을 때 발생할 수 있는 보안 문제입니다. 특정 정규식 패턴은 입력값을 평가하는데 오래 걸립니다. ReDos는 이를 이용해 정규식 평가에 오랜 시간이 걸리게 하는 알고리즘 복잡성 공격입니다. 타깃이 되는 정규식 로직은 자체적으로 반복되는 그룹이 주원인이며, 이 정규식에 어느 정도 만족하는 대량의 문자 등을 입력하여 가용성이 떨어지게 만듭니다. ReDos 원인은 정규식을 평가하는 엔진이 Backtracking을 사용하는 엔진이라면 발생합니다. 주로 NFA (Nondeterministic Finite Automaton) 엔진이 그 원인입니다. NFA 방식은 JAVA, javascript, .NET, PHP, Perl, Python, ..
Postman 대신 사용하는 VS Code API Test Extention - Thunder Client
https://www.thunderclient.com/ Thunder Client - Rest API Client Extension for VS Code Thunder Client is a hand-crafted lightweight Rest API Client extension for Visual Studio Code www.thunderclient.com 비주얼 스튜디오 코드를 사용한다면 Postman을 또 설치할 필요 없이 Rest API를 테스트할 수 있습니다. 사용 화면 Thunder Client의 전반적인 모습입니다. 만든 테스트를 저장하고 불러올 수 있고, 테스트에 필요한 여러 가지 필수 기능들이 있습니다. UI와 디자인이 심플하고 VS Code에 맞춤이라 어려워 보이지 않고 거부감이 없습니..
배워보자 정규표현식! (Regular Expression)
정규표현식이란? 특정한 규칙을 가진 문자열의 집합을 표현할 때 사용하는 형식 언어입니다. 주로 문자열의 특정 부분을 찾거나, 다른 문자열로 대체하거나, 특정 문자열을 추출할 때 사용합니다. 정규표현식은 다른 말로 정규식, Regexp, Regex라고 불리기도 합니다. /^[\w.%+\-]+@[\w.\-]+\.[A-Za-z]{2,3}$/ig 이것이 정규식의 모습입니다. 이메일 패턴을 간단하게 표현한 정규식인데, 처음보면 정말 무슨 소리인지 파악하기 힘들 겁니다. 하지만 개발자는 많은 자연어 속에서 특정 문자를 추출하고 가공하고 수정할 수 있어야 합니다. 불규칙한 자연어 속에서 특정 패턴을 찾아 처리하려면, 일반적으로 if문을 사용합니다. 하지만 if문을 그렇게 사용하다간 if 속에 if, 그 속에 if, ..
gitignore 파일을 쉽게 만들어주는 사이트 gitignore.io
안녕하세요. 오랜만에 사이트 소개 포스팅을 하게 되었습니다. 정말 유용한 사이트인데 지금 보니 소개가 안되어 있어서 저장할 겸 소개하고자 합니다. .gitignore 파일을 만들어주는 gitignore.io 라는 사이트입니다. gitignore이란? gitignore에 대해서 모르는 분들을 위해서 설명하겠습니다. gitignore이란 사용자가 git 리포지토리에 올리고 싶지 않은 파일들을 제외 대상으로 설정해주는 것입니다. 예를 들어 특정 IDE 관련 파일이나 빌드 도구 파일, DB 연결 도구 파일 등의 파일들은 굳이 리포지토리에 공유할 필요가 없겠죠? 그리고 공개 리포지토리인 경우 민감한 정보나 중요한 정보를 업로드하는 것을 방지할 수 있습니다. gitignore 설정은 프로젝트에 .gitignore ..
CI/CD 기본 개념 정리와 툴
CI/CD 란? CI : Continuous Integration 지속적 통합 소프트웨어를 개발하면서 새로운 코드를 작성하거나 코드를 변경하고 빌드 및 테스트하여 공유 리포지토리에 통합되는 것을 말합니다. CI개발을 하려면 개발자들은 코드를 추가, 변경하면 주기적인 일정마다 공유 리포지토리에 병합시켜줘야 합니다. 만약 주기적으로 리포지토리에 공유하지 않고 오랜 시간이 지난 후 병합을 하면 아주 큰 컨플릭트(충돌)가 일어나겠죠? 작은 컨플릭트라면 그나마 다행이지만, 오랫동안 개인만의 개발을 한다면 나중에 병합을 할 때 큰 컨플릭트가 날 확률이 높습니다. 그래서 요즘 IT 기업들은 개인주의 성향의 개발자보다 커뮤니케이션을 중요시하는 개발자를 선호한답니다. CI는 빌드, 테스트, 병합이 모두 자동화되어야 합니..