분류 전체보기 21

[JS] V8: 전체 컴파일러

V8 가비지 컬렉션을 공부하다가, 이게 맞나란 생각을 좀 많이 하면서 V8이 무엇인지 좀 자세히 알아보기 위해 A tour of V8: full compiler를 번역하여서 공부해보고자 한다. 번역하다가 이해하기 쉽게 가감한 면이 있지만 이해가 잘 되었으면 좋겠다. JavaScript 가상 머신에서 해석하다 JIT(Just-In-Time) 컴파일로 전환되면서 성능이 엄청나게 빠르게 증가했다. 이로 인해 JavaScript와 웹 앱의 유용성이 크게 증가했다. 그 결과, JavaScript는 이제 HTML5, 즉 웹 기술의 다음 세대를 이끄는 메인이 되었다. 네이티브 코드를 생성하고 실행하는 최초의 자바스크립트 엔진 중 하나인 V8 엔진은 구글 크롬, 안드로이드 브라우저, WebOS 및 Node.js와 같은..

JavaScript 2023.04.20

[Js] V8 가비지 컬렉션 - 1/2

이전에는 자바스크립트의 가비지 컬렉션에 대해서 알아보았다. 이번에는 JavaScript의 많은 변화를 준 V8 엔진의 자바스크립트에 대해서 알아보고자 한다. 가비지 컬렉션은 긍정적인 측면 프로그래머가 메모리를 더 이상 직접 관리할 필요가 없어졌기 때문에 유지보수가 간편해졌다. 장기간 실행되는 대규모 어플리케이션의 경우 많은 종류의 오류, 메모리 누수를 줄여주어 성능을 향상시켜준다. 그러나 가비지 컬레션을 사용한다는 것은 메모리 관리 방식에 대한 제어권을 포기한다는 의미이다. JavaScript의 경우 메모리 관리 방법에 대한 모든 제어 권한을 포기한다. ECMAScript의 가비지 컬레션은 인터페이스를 노출하지 않는다. 그래서 웹 앱이 메모리 사용량을 측정하거나 기비지 컬렉션에 대한 단서를 제공해주지 않..

JavaScript 2023.04.12

[Js RoadMap] 02. 가비지 컬렉션

자바스크립트는 눈에 보이지 않는 곳에서 메모리 관리를 수행한다. 원시값, 객체, 함수 등 우리가 만드는 모든 것은 메모리를 차지한다. 자바스크립트 엔진은 더는 쓸모 없는 것들을 어떻게 처리하는지 알아보자. 가비지 컬렉션 기준 자바스크립트는 도달 가능성(reachability)이라는 개념을 사용하여 메모리 관리를 수행한다. '도달 가능한(reachable)'값은 쉽게 말해 어떻게든 접근하거나 사용할 수 있는 값을 의미한다. 도달 가능한 값은 메모리에서 삭제되지 않는다. 태생부터 도달 가능하기 때문에, 명백한 이유 없이 삭제되지 않는 값 (root) 현재 함수의 지역 변수와 매개변수 중첩 함수의 체인에 있는 함수에서 사용되는 변수와 매개변수 전역 변수 기타 등등 이런 값을 루트(root)라고 부른다. 루트가..

JavaScript 2023.04.06

[우아한 테크세미나] 테크 리더 3인이 말하는 "개발자 원칙" 정리

제어할 수 없는 것에 의존하지 않기 / 인프랩 이동욱 CTO "일정은 지키지만 버그가 많은 것 vs 일정은 못 지키지만 버그가 없는 것" 프로그래머에게 요구되는 것은 100점이 아닌 80~90점짜리 프로그램을 기한 내에 완성하는 일이다. - 나카지마 사토시 "프로덕트 엔지니어의 일은 고객이 원하는 기능을 고객이 원하는 시점에 전달하는 것"이 프로덕트 엔지니어로써의 해야할 일이다. 퀄리티 보다 일정이 중요한가? 아무리 급해도 항상 80~90점짜리 소프트웨어를 일정 내 개발하는 방법이 중요하다. "일정을 항상 잘 지키는 분들의 공통점" 가장 좋은 코드를 선택하는 방법은? "본인만의 기준과 원칙으로 빠르게 결정" "선택의 순간마다 고민 하는 사람"보다는 "원칙에 따라 빠르게 결정하고 중요한 것만 고민하는 사람..

readme.md 2023.03.30

[FE RoadMap] 00.Internet 좀 봐봐

" 프론트엔드 개발자 로드맵을 통해 공부해보고자 만들었다. " 인터넷은 어떻게 동작하는가? : 개발자로써 인터넷은 무엇이며 어떻게 동작하는지 확실히 이해하는 것이 중요하다. 인터넷 소개 인터넷을 배우기 전에 네트워크가 무엇인지 이해가 필요하다. | 네트워크 | : 서로 연결된 컴퓨터 또는 기타 장치 그룹 예를 들면, 나의 집에 네트워크가 있고 있을 수 있고, 옆집에도 비슷한 네트워크를 가지고 있을 수 있다. 모든 네트워크가 함께 연결되면서 인터넷을 형성한다. | 인터넷 | : 네트워크의 네트워크 인터넷은 1960년대 후반 미국 국방부에서 핵 공격을 견딜 수 있는 분산형 통신 네트워크를 만드는 수단으로 개발되었다. 수년에 걸쳐 전 세계를 아우르는 복잡하고 정교한 네트워크로 발전했다. 인터넷 작동 방식: 개..

Front-End 2023.03.27

[Js RoadMap] 01. JavaScript가 뭔데?

JavaScript JavaScript는 인터프리터(소스코드를 바로 실행하는 환경), just-in-time 컴파일(실행하는 시점에 기계어로 번역) 프로그래밍 언어로 일급 함수(함수를 변수에 저장 가능)를 지원한다. 요즘은 Node.js, Apache CouchDB, Adobe Acrobat 처럼 비 브라우저 환경에서도 사용하며, JavaScript의 특징은 다음과 같다. 프로토타입 기반 : 객체 생성할 때, 클래스를 정의하지 않아도 생성이 가능 다중 패러다임 : 여러가지 방법론이 적용됨을 의미 단일 스레드 : 하나의 프로세스에서 오직 하나의 스레드로 동작 동적 언어 : 컴파일 시 자료형이 결정 객체지향형 : 객체라는 단위로 상호작용을 서술하는 방식 명령형 : 어떻게 해결할 것인가 선언형 :무엇을 해결할..

JavaScript 2023.03.27

데이터 모델링

01.데이터 모델링의 개념 [1] 데이터베이스 생명주기 요구사항 수집 및 분석 -> 설계 -> 구현 -> 운영 -> 감시 및 개선 1) 요구사항 수집 및 분석 : 사용자들의 요구사항을 듣고 분석하여 데이터베이스 구축의 범위를 정하는 단계 // 사용자의 범위(고객, 운영자, 경영자 등)와 서비스 수준을 정하는 것. 2) 설계 : 분석된 요구사항을 기초로 주요 개념과 업무 프로세스 등을 식별하고(개념적 설계), 사용하는 DBMS의 종류에 맞게 변환(논리적 설계)한 후, 데이터베이스 스키마를 도출(물리적 설계) 3) 구현 : 설계 단계에서 생성한 스키마를 실제 DBMS에 적용하여 테이블 및 관련 객체(뷰, 인덱스 등)를 만든다. 또한 관련 소프트웨어에 설계한 데이터베이스를 적용하여 서비스를 제공할 수 있도록 ..

Oracle(오라클) 2020.07.27

004 - SQL 기초

01. SQL 개요 DBMS는 SQL 문을 해석하고 프로그램으로 변환하여 실행한 후 결과 출력. SQL(Structured Query Language)은 1970년대 후반 IBM이 SEQUEL(Structured English QUEry Language)이라는 이름으로 개발한 관계형 데이터베이스 표준 언어로 승인. SQL은 데이터 부속어(data sublanguage)라고 한다. - DB의 Data와 메타 데이터를 생성하고 처리하는 문법만 갖고 있기 때문. SQL은 DBMS에 직접 입력, 클라이언트/서버 응용 프로그램에 삽입하여 사용 가능. HTML 웹 페이지 문서에 삽입, 다른 개발 도구에서 직접 실행이 가능. 구분 SQL 일반 프로그래밍 언어 용도 데이터베이스에서 데이터를 추출하여 문제 해결 모든 문..

Oracle(오라클) 2020.07.15

003 - 관계 데이터 모델

01. 관계 데이터 모델의 개념 [릴레이션] : 행과 열로 구성된 테이블 [1]관계(Relationship)는 두 가지 개념으로 볼 수 있다. 1) 릴레이션 내에서 생성되는 관계. 실제 데이터들의 집합 2) 릴레이션 간에 생성되는 관계. 릴레이션 간의 관계 [2] 스키마와 인스턴스로 이루어진다. 스키마(Schema) : 관계 데이터베이스의 릴레이션이 어떻게 구성되는지 어떤 정보를 담고 있는지에 대한 기본적인 구조를 정의. 스키마는 테이블의 첫 행인 헤더(Header)에 나타남. 각 데이터의 특징을 나타내는 속성, 자료 타입의 정보를 가짐 인스턴스(Instance) : 정의된 스키마에 따라 테이블에 실제로 저장되는 데이터의 집합을 의미. [3] 릴레이션 스키마 : 릴레이션에 어떤 정보가 담길지 정의. 속성..

Oracle(오라클) 2020.07.14

002 - 요구분석과 시스템 설계 그리고 모델링

[정보시스템 구축 절차 요약] 정보시스템을 구축하기 위해서는 일반적으로 분석, 설계, 구현, 시험, 유지보수의 5가지 단계를 거친다. 여기서는 분석과 설계에 대해서 알아보자. *분석 - 시스템 분석 또는 요구사항 분석이라고 부른다. - 우리가 '무엇을(What)'할 것인지를 결정한다. - 분석 결과로 많은 문서를 작성해야한다. 설계 - 시스템 설계 또는 프로그램 설계라는 용어로 부른다. - 우리가 구축하고자 하는 시스템을 '어떻게(How)'할 것인지를 결정한다. [데이터베이스 모델링과 필수 용어] 분석과 설계 과정에서 가장 중요한 과정 중의 하나가 '데이터베이스 모델링'이다. 현실세계에서 사용되는 데이터를 Oracle에 어떻게 옮길지 결정하는 과정. ex) 인터넷 쇼핑몰에서는 사람(또는 회원)이 필요하다..

Oracle(오라클) 2020.07.07