전체 글
ES class와 prototype
ES class ES class란 JavaScript에서 객체 지향 프로그래밍을 구현하기 위해 정의된 문법적 구조를 의미한다. class Car{ constructor(brand){ this.brand = brand } move(){ console.log("moving"); } } c++등의 객체 지향 언어와 유사하게, constructor를 정의하여 object 생성 시 초기화 작업을 수행하도록 할 수 있다. 또한 다음과 같이 상속을 구현 할 수 있다. class Car{ constructor(brand){ this.brand = brand; } move(){ console.log("moving"); } } class ElectricCar extends Car{ constructor(brand, bat..
[Database System] Introduction
CMU의 Intro to Database System / Fall 2022를 바탕으로 정리 한 것입니다. Lecture 1. Introduction relation Relation이란 속성들의 관계를 포함하고 있는 unordered set을 말한다. tuple tuple은 relation 안에 있는 attribute values 들의 set이다. 이 value들은 일반적으로 atomic/scalar하며, 만약 NULL값을 허용한 경우, NULL은 모든 domain의 member가 될 수 있는 special 한 값이다. Primary key primary key란 하나의 튜플을 유일하게 식별할 수 있는 key를 말한다. 일부 DBMS의 경우 자동으로 internal primary key를 생성하는데, My..
(JavaScript) Fetch API
Fetch API Fetch API는 HTTP 파이프라인을 구성하는 요청과 응답 등의 요소를 JavaScript에서 접근하고 조작할 수 있는 인터페이스를 제공한다. Fetch API가 제공하는 fetch() 함수를 활용하여 네트워크 리소스를 쉽게 비동기적으로 취득할 수 있다. 기본적인 리소스 취득 요청은 다음과 같다. async function logJSONData() { const response = await fetch("http://example.com/movies.json"); const jsonData = await response.json(); console.log(jsonData); } 위 소스는 입력된 네트워크를 통해 JSON 파일을 취득하여 콘솔에 출력한다. 가장 단순하게 호출한 fetc..
Scope Chain 이란?
스코프 체인 스코프 체인이란 프로그래밍에서 변수와 함수 등을 참조할 때 해당 변수 또는 함수의 유효 범위를 결정하는 개념을 말한다. 특히 JavaScript와 같은 동적 스크립트 언어에서 중요한 역할을 한다. 스코프 체인은 변수나 함수를 찾을 때 어떤 순서로 범위를 확인할 지 정의하는데 일반적으로 다음과 같은 우선순위로 작동한다. 현재 스코프 코드가 실행 중인 현재 범위 내에서 변수 또는 함수를 찾는다. Outer 스코프 현재 범위의 바깥 범위에서 변수 혹은 함수를 찾는다. 이러한 계층 구조를 따라가며 변수를 찾을 때까지 부모 범위를 검사한다. Global 스코프 모든 범위의 부모에 해당하는 전역 범위에서 변수나 함수를 찾는다. 즉, 전역 범위는 모든 스코프 체인의 최종 도착지에 해당한다. 실행 컨텍스트..
Linear-time Temporal Logic guided Greybox Fuzzing 정리
이 글은 Linear-time Temporal Logic guided Greybox Fuzzing 논문을 바탕으로 정리한 것입니다. Abstract 소프트웨어 모델 체킹 및 런타임 체킹은 소프트웨어 시스템의 시간적인 속성을 확인하기 위해 널리 사용되는 기술이다. 이러한 기술은 주로 '버그 찾기' 즉, 시간적인 속성 위반을 찾는 실제 응용에서 주로 사용된다. 이 논문은 선형 시간 시계열 논리, 즉 LTL 속성 위반을 찾기 위한 그레이박스 fuzzing framework에 대해 소개하고 있다.해당 프레임워크는 C/C++ 로 작성된 순차 프로그램과 LTL 속성을 입력으로 받는다. 이후 상태를 가진 소프트웨어 시스템에서 LTL 속성 위반 또는 counterexample trace를 찾는다. 하지만 이 자체로 검..
MySQL 개념
MySQL이란? MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)이다. 데이터를 테이블 형태로 구조화하여 저장하며, 테이블은 행과 열로 이루어져 있다. SQL(Structured Query Language)을 사용하여 데이터를 조작하며 데이터를 조작하는 등 다양한 기능을 수행할 수 있다. 트랜잭션 DBMS가 제공하는 가장 강력한 기능 중 하나로, 데이터베이스에서 수행되는 하나의 논리적인 작업 또는 단위를 나타내는 개념이다. 트랜잭션은 다음과 같은 특성을 만족시켜야한다. 원자성 트랜잭션은 반드시 atomic해야한다. 이는 트랜잭션이 데이터베이스에 모든 변경 사항을 반영하거나 아무것도 반영하지 않는 두 상태 중 하나만 가질 수 있음을 의미한다. 즉 일련의 과정 중 단 하나만 실패해도 트랜잭..
Express란?
Express Express는 nodeJS를 활용하여 REST 서버를 구현하게 해주는 프레임워크에 해당한다. 사용 방법 가장 단순하게 html을 통해 서버 렌더링을 하는 코드는 다음과 같다. const express = require('express'); const app = express(); const port = 3000; app.get('/', (req, res) => { res.render("렌더링 할 html의 경로") }); app.listen(port, () => { console.log(`server is listening at port:${port}`); }); 우선 다음코드는 Express application을 생성한다. const express = require('express')..
(TIL) Model Checking
이 게시글은 크티스텔 바이어의 Principles of Model Checking을 학습한 내용을 정리한 것입니다. 소프트웨어 검증의 필요성 소프트웨어를 개발할 때, 30~50%의 비용은 소프트웨어를 테스트하는데 소모된다. 그만큼, 소프트웨어가 버그가 없는지 확인하는 과정은 제품을 출시함에 있어 매우 중요한 과정이다. 왜냐하면, 소프트웨어에서 버그는 빨리 찾을 수록 미래에 발생할 수 있는 어마어마한 비용을 절감할 수 있기 때문이다. 실제로 소프트웨어의 결함을 고치는데 사용되는 비용은 maintenance 과정에서 버그픽스가 이루어질 경우 design phase에서에 비하여 약 500배의 비용이 소모된다고 한다. 이러한 비용적 측면에서, 소프트웨어를 미리 철저하게 검증하는 과정이 중요함은 너무나 명실상부하..