본문 바로가기

분류 전체보기

(101)
Component & Module 저번 시간에 배운 기본 개념에 이어 이번 시간에는 module, component 에 대해 자세히 살펴보겠습니다. Module app.module.ts 파일을 살펴보면, imports 를 통해 component 에서 사용할 module 을 설정해줍니다. 또한 생성한 moduel 파일은 위 그림과 같이 AppModule 이름으로 export 해주었습니다. bootstrap은 가장 먼저 동작할 컴포넌트를 의미합니다. Main.ts 모듈은 main.ts 에서 사용되고 있습니다. main.ts 는 앵귤러 프로젝트가 실행될 때 가장 먼저 동작하는 곳입니다. bootstarpModule() 함수는 앵귤러 프로젝트 동작시 가장 먼저 사용할 모듈을 나타내줍니다. 따라서 AppModule이 가장 먼저 동작하게 됩니다. ..
프로세스와 스레드 프로세스 운영체제로부터 시스템 자원(독립된 시간, 공간 자원)을 할당받아 메모리에 적재되어 실행되고 있는 *프로그램을 의미합니다. *프로그램이란, 실행 가능한 명령어의 집합입니다. 프로세스는 커널에 의해 직접 관리되며 커널 메모리 안에는 각 프로세스마다 관리하고 있는 프로세스에 대한 데이터들(PCB)이 있습니다. 사용자가 사용하는 메모리 공간상의 프로세스 정보는 Code, Data, Heap, Stack 으로 나뉩니다. Stack: 함수에서 다른 함수를 실행하는 등 서브 루틴들의 정보를 저장 Code: 프로그램의 실제 코드를 저장 Heap: 프로세스 런타임 중 동적으로 할당되는 변수들을 저장 Data: 프로세스가 실행될 때 정의된 전역 변수, Static 변수들을 저장 운영체제는 각각의 프로세스를 독립적..
기본 개념 1. Angular 앵귤러는 웹 브라우저에서 동작하는 클라이언트 코드입니다. DB 연동, 다른 서버와 직접 연동은 직접 할 수 없습니다. 따라서 이 부분은 서버 개발자가 수행하거나 혹은 Angular 개발자가 직접 서버 부분까지 개발해야 합니다. 앵귤러는 타입 스크립트 기반으로 구성되어있습니다. 타입 스크립트는 자바스크립트와 거의 동일하지만 데이터의 type이 있단 차이가 있습니다. 3D Angular Angular는 3D로 구성되어 있습니다 :) 여기서 말하는 3D란 Data-binding, Directive, Dependency Injection을 의미합니다. 1. Data-binding Angular로 작성된 애플리케이션을 실행하면 컴파일러가 템플릿을 컴파일하여 일정 변형 과정을 거친 후 DOM으로..
Thread Safe Thread safe 란, 멀티 thread 프로그래밍에서 여러 쓰레드로부터 동시에 접근이 이뤄져도 프로그램의 실행에 문제가 없음을 뜻합니다. 하나의 함수가 한쓰레드에서 호출되어 사용중일때 다른 쓰레드가 그 자원을 동시에 함께 사용하더라도 각 쓰레드에서 함수의 수행 결과가 올바로 나옵니다. 위키피디아 정의에 따르면, "Thread-Safe는 멀티 스레드 프로그래밍에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없음을 뜻합니다. 보다 엄밀하게는 하나의 함수가 한 스레드로부터 호출되어 실행 중일 때, 다른 스레드가 그 함수를 호출하여 동시에 함께 실행되더라도 각 스레드에서의 함수의 수행 결과가 올바로 나오는 것으로 정의합니다. " Threa..
컴파일 과정 Java 컴파일 과정에 대해 설명하겠습니다. Java 는 OS에 독립적입니다. JVM이 OS와 프로그램 사이에서 기계어로 해석해주는 역할을 수행하고 있기 때문입니다. 실행과정 1. .java 파일을 생성하고 build 수행 - complier 의 javac 명령어를 사용해 .class 파일을 생성합니다. - .class 파일도 아직 java byte code로 컴퓨터가 읽을 수 없습니다. 변환 과정이 필요합니다. 2. .class 파일을 java.exe 로 실행 .class 파일은 클래스로더를 통해 JVM내 로드됩니다. 그 후 *실행엔진에 의해 binary code로 변환되어 메모리상 배치됩니다. * 실행엔진(Excution Engine) 실행엔진에는 인터프리터와 JIT컴파일러가 있습니다. 인터프리터는 ..
통신종료 서버와 클라이언트는 OS 의 프로토콜 스택을 통해 통신을 하고 있습니다. 오늘은 소켓을 말소하는 과정에 대해서 설명드리겠습니다. 프로토콜에 따른 종료 요청 HTTP1.0 프로토콜을 사용하는 경우 서버측에서 응답 데이터를 보내고 나면 데이터 보내기가 완료된 상태이기 때문에 서버측이 연결 끊기 단계에 들어갑니다. HTTP1.1 프로토콜을 사용하는 경우 클라이언트가 계속 다음 리퀘스트 메시지를 보내도 좋게 되어 있기 때문에 클라이언트측에서 연결 끊기 단계에 들어갈 수 있습니다. Server와 Client의 연결 끊기 서버측이 먼저 연결 끊기 단계에 들어간다고 생각하고 설명 드립니다. 서버측의 어플리케이션이 먼저 Socket 라이브러리의 close를 호출합니다. 서버측 프로토콜 스택이 TCP 헤더를 만들고 컨트..
HashMap & HashSet HashMap 과 HashSet에 대해서 정리하겠습니다. 둘 다 Collection Framework에 속한 클래스들입니다. HashSet Set인터페이스를 구현한 것으로 들어오는 객체 중 중복된 객체는 허용하지 않습니다. HashSet에 들어가는 객체는 반드시 equals(), hashCode() 메소드를 구현해야 HashSet에 들어갈 때 중복된 객체를 확인할 수 있습니다. HashMap Map 인터페이스를 구현한 것으로 key-value형식의 데이터를 저장합니다. 중복된 key값을 허용하지 않습니다. Map 인터페이스를 구현한 클래스에는 HashMap, TreeMap이 있습니다. TreeMap은 넣은 순서를 유지하는것에 반해 HashMap은 순서를 유지하지 않습니다. HashSet에 비해 조회하는 ..
보안 XSS, CSRF, SQL Injection 에 대해 정리해보았습니다. XSS(Cross Site Script) 사용자 입력 값에 대해 필터링이 제대로 이뤄지지 않아 공격자가 악의적인 스크립트를 삽입하여 해당 스크립트를 희생자측에서 동작하도록 설정하는 악의적인 행위를 수행하는 취약점입니다. 이를 이용하여 사용자의 개인정보를 비롯해 쿠키정보, 악성코드 감염, 웹 페이지 변조 등의 공격을 수행할 수 있습니다. XSS 공격에 대응하기 위해서는 사용자 입력값 검증을 반드시 서버단에서 수행해야합니다. 사용자 입력 문자열에서 HTML 코드로 인식될 수 있는 '특수문자'는 일반문자로 치환하여 처리해야합니다. 예를 들어 '