전체 글

[병아리에서 꿩이 되어가는 과정] 대학교 학부 수업에서 배운 Computer Science 중심으로 IT 관련 내용을 기록하는 곳입니다.
Spring

Maven과 Gradle

Maven과 Gradle은 빌드 관리 도구이다. 빌드 관리 도구는 프로젝트에서 필요한 xml, properties, jar 파일들을 자동으로 인식하여 빌드해주는 것이다. 외부 라이브러리를 참조하여 자동으로 다운로드를 진행하거나 업데이트를 관리하기도 한다. Maven은 자바의 대표적인 관리 도구였던 Ant를 대체하기 위해 개발되었다. 기존 Ant는 빌드의 기능만 가지고 있었다. Maven은 자동으로 라이브러리를 관리해주는 기능을 가지고 있어 Ant를 대체하였다. 만약, 라이브러리에 변동 사항이 있으면 자동으로 업데이트가 가능하다. 그리고 Maven은 pom.xml로 편하게 Dependency를 관리한다. pom.xml ? 1. 프로젝트 정보 관리 2. 해당 프로젝트에서 사용하는 외부 라이브러리 관리 3. ..

개발/Git

git reset 주의할점

이전 커밋으로 git reset을 한다고 해도 그 이후의 커밋들이 삭제되지 않고 남아있다. git reset은 과거의 커밋뿐만 아니라 현재 HEAD가 가리키는 커밋 이후의 커밋으로도 할 수 있다. git reset과 git checkout의 차이점 [git reset] HEAD가 가리키던 브랜치가 다른 커밋을 가리키도록 한다. HEAD도 결국 간접적으로 다른 커밋을 가리키게되는 효과가 생긴다. [git checkout] HEAD 자체가 다른 커밋이나 브랜치를 가리키도록 한다. 브랜치를 통하지 않고, 커밋을 직접적으로 가리키는 HEAD를 Detached HEAD라고 한다.

Node.js

EventEmitter 객체

 EventEmitter는 특정 이벤트에 리스너 함수를 달아서, 이벤트가 발생했을 때 이를 캐치할 수 있도록 만들어진 것이다. (이벤트 기반 프로그래밍, 비동기 프로그래밍) EventEmitter는 다양한 메소드들이 있다. const EventEmitter = require('events'); const myEmitter = new EventEmitter(); myEmitter.on('case', () =>{ console.log('Hello World'); }); myEmitter.emit('case'); 1. on 메소드 on 메소드는 이벤트 핸들러를 설정하는 메소드이다. 같은 용도로 addListener를 사용할 수 있다. 2. emit 메소드 emit 메소드는 인위적으로 이벤트를 발생시키기 위해..

CS/네트워크

네트워크 CS 예상 문제

TCP가 reliable data transfer를 보장하기 위해 사용하는 기법으로 checksum, sequence number, ACK, retransmission timer가 있다. 우선 checksum에 대한 설명입니다. 각각의 character들을 숫자로 mapping해서 그 숫자들을 합한 것을 checksum이라 한다. 원본 문장과 계산한 checksum을 한꺼번에 수신자에게 보낸다. 여기서 어떤 형식으로 보내는지는 프로토콜에 의해서 합의를 한다. 그리고 수신자가 동일한 알고리즘으로 합을 구하고 checksum과 같으면 ok하고 다르면 무시하여 reliable delivery를 보장한다. 다음은 retransmission timer에 대한 설명입니다. sender는 해당 packet에 대응하는..

JavaScript

자바스크립트 : 객체

객체는 중괄호를 통해 만들 수 있다. { Myname : '김민석', Mygender : '남자' } 중괄호 안에 키와 값을 넣어주면 된다. 키와 값, 이들의 한 쌍을 속성이라고 한다. 키 : Property Name 값 : Property Value Property Name은 문자열 타입을 가지고 있다. 따라서, 따옴표를 사용해야 하지만 JavaScript가 암묵적으로 문자열로 형 변환을 하기 때문에 일반적으로 따옴표를 생략해도 된다. 하지만! 따옴표를 생략하기 위한 조건은 1. 첫 번째 글자는 반드시 문자, 밑줄, 달러 기호 중 하나로 시작해야 한다. 2. 띄어쓰기를 하면 안 된다. 3. 하이픈 기호를 쓰면 안 된다. 이런 규칙을 어길 경우, 따옴표를 사용해야 한다. Property Value는 모든..

공부하면서 얻은 지식들

JSX

JSX는 1. XML과 유사하다. 2. JavaScript를 확장한 것으로 React와 함께 사용한다. JSX로 작성한 코드는 브라우저에서 실행되기 전, 소스코드가 번들링되는 과정에서 바벨을 사용하여 일반 자바스크립트 형태의 코드로 변환된다. 번들링 - 리액트를 사용하려면 import React from 'react';를 소스코드 안에 넣어주어야 한다. 모듈을 불러오는 것인데 이를 사용하는 것은 원래 기능이 아니므로 이 기능을 사용할 수 있도록 모듈을 하나로 묶어 사용하는데 이를 번들링이라고 한다. 바벨 - 크로스 브라우징을 지원하기 위한 기능이다. ES6+ 자바스크립트나 타입스크립트, JSX 등 다른 언어로 분류되는 언어들에 대해서 모든 브라우저에서 동작할 수 있도록 호환성을 지켜주는 역할을 한다! J..

CS/소프트웨어공학

[4] 클래스 다이어그램 (Class diagram)

클래스 다이어그램 ? : 시스템에서 사용되는 객체 타입을 정의하고, 그들 간의 존재하는 정적인 관계를 다양한 방식으로 표현한 다이어그램 : 구조적 모델을 가시화, 문서화하는데 필요 구성 요소 개념 Visibility : public(+), private(-), protected(#) 등과 같은 접근 지정자 클래스 표기는 박스를 세 부분으로 나누어 맨 위는 클래스 이름, 가운데는 속성, 맨 아래는 연산을 기술한다. 클래스 간 관계 1. 연관(Association) 하나의 클래스가 다른 클래스에서 제공하는 기능을 사용 2. 집합(Aggregation) Association의 일종 전체와 부분의 관계를 표시 3. 복합(Composition) 전체에 대해 부분이 강한 소속감을 가지고 동일한 생명기간을 가질 때 ..

CS/소프트웨어공학

[3] 액티비티 다이어그램 (Activity diagram)

액티비티 다이어그램? : 객체의 상태가 아닌 처리 로직이나 조건에 따른 처리흐름을 순서에 따라 정의한 다이어그램 특징 1. 처리흐름의 도식화로 프로그램 로직 정의 가능 2. 비즈니스 프로세스 정의 3. usecase의 실현 구성요소 액션 : 더 이상 분해할 수 없는 단일 작업 액티비티 : 액션의 집합 시작 노드 : 액션이나 액티비티의 시작 종료 노드 : 모든 액티비티가 종료 흐름 종료 노드 : 특정 제어 흐름이나 객체 흐름이 종료됨 조건 노드 : 조건에 따라 제어의 흐름이 분리됨, 들어오는 제어 흐름은 한 개, 나가는 제어 흐름은 여러 개 병합 노드 : 여러 경로의 흐름이 하나로 합쳐짐, 들어오는 제어 흐름은 여러 개, 나가는 제어 흐름은 한 개 객체 노드 : 객체 흐름에 연결된 객체 제어 흐름 : 실행..

화서동 병아리
IT 병아리에서 꿩으로