본문 바로가기

전체 글

(29)
git command 정리 Simple Git Commend git init : git 저장소를 초기화( 생성 ) 합니다. git status : 저장소의 상태를 확인합니다. git add '파일' : 해당 파일을 staging area에 추가합니다. Tip* git add . 을 사용하면 수정한 모든 file 을 추가합니다. !! 무조건 좋은 방법이 아닙니다. !! git commit -m '커밋 메시지' : staging area에서 local repo로 최종적으로 짧은 메시지를 포함해 저장합니다. git clone '저장소url' : 해당 url의 원격저장소를 clone하여 local 환경에 추가합니다. git remote add '저장소별칭 저장소url' : 로컬 저장소와 원격 저장소를 연결합니다. git remote -v..
Inheritance Patterns 자바스크립트에서 상속을 구현하는데는 여러가지 방법이 있지만 그 중 두가지를 정리해보려 한다. 1. pseudoclassical style var Car = function(name) { this.name = name; this.position = 0; } Car.prototype.move = function() { this.position += 1; } var avante = new Car("avante") 위의 코드를 실행하면 avante는 name과 position이라는 property에 각각 "avante"와 0이라는 값을 갖는다. 또한 move라는 메소드를 가지고 있다. 이러한 Car 클래스를 상속받은 객체를 만들어보자. var SmallCar = function(name, color) { Car..
__proto__, constructor, prototype 의 관계 자바스크립트에서 함수는 객체이다. 그래서 function Person() {} 와 var Person = new Function() {} 은 같은것이다. prototype에 대해 예를 들어 설명해보면, ----------------------------------------------------------------------- function Person(name, first, second) { this.name = name; this.first = first; this.second = second; } Person.prototype.sum = function() {} var kim = new Person("kim", 1, 2) -----------------------------------------..
Time Complexity 시간복잡도란 문제를 해결하는데 걸리는 시간과 입력의 함수관계를 가리킵니다. 주로 빅-오 표기법을 사용하며 나타내며, 이 표기법은 계수와 낮은 차수의 항을 제외시키는 방법입니다. 쉽게 말해, 작성한 코드가 시간이 얼마나 걸리는지 나타내는 방법으로, 최악의 경우 얼마나 시간이 걸릴지 예상해보며, 다른 효율적인 방법을 찾기 위해 사용하게 됩니다. 대표적인 시간 복잡도들을 간단하게 정의해보면, 1) O(1) - constant : 입력값 n이 주어졌을 때, 알고리즘이 문제를 해결하는데 한 단계 만 거칩니다. 2) O(log n) - logarithmic : 입력값 n이 주어졌을 때, 문제를 해결하는데 필요한 단계들이 연산마다 특정 요인에 의해 줄어듭니다. 3) O(n) - linear : 문제를 해결하기 위한 ..
Advanced Data Structure 1. Linked List (연결 리스트) 연결 리스트는 각 노드가 데이터와 포인터를 가지고 연결되어 있는 방식으로 데이터를 저장하는 자료구조이다. 노드의 포인터가 다음이나 이전의 노드와의 연결을 담당하게 된다. 배열과 비교 했을 때, 데이터를 삽입/삭제 할 경우 데이터의 재구성에 용이하다. 반면 특정 위치의 데이터를 검색하기 위해서는 연결리스트를 처음부터 끝까지 순회해야 하므로 비효율적이다. *종류 1) 단일 연결 리스트 각 노드에 데이터 공간과 한개의 포인터 공간이 있고, 포인터는 다음 노드를 가리킨다. 2) 이중 연결 리스트 단일 연결리스트와 비슷하지만, 포인터 공간이 두 개가 있고, 각각의 포인터는 앞의 노드와 뒤의 노드를 가리킨다. 3) 원형 연결 리스트 일반적인 연결리스트에 마지막 노드와 처음..
Basic Data Structure 1. Stack 스택은 위의 그림과 같이 처음 들어간 요소가 마지막에 나오는 특징(FILO)을 가지고 있습니다. 빈 stack에 value가 차곡차곡 순서대로 쌓이고, value를 제거할 때에는 가장 마지막에 쌓였던 것부터 제거됩니다. 구현방법에는 배열을 사용하는것과 연결리스트를 사용하는 것 두가지가 있습니다. 두가지 방법의 장단점은 다음과 같습니다. 1) 배열로 구현하였을 때 (장점 ) 구현이 쉽다. 원하는 데이터의 접근 속도가 빠르다. (단점) 데이터 최대 개수를 미리 정해야 한다. 데이터의 삽입과 삭제에 있어 매우 비효율적이다. 2) 연결 리스트로 구현하였을 때 (장점) 데이터의 최대 개수가 한정되어 있지 않다. 데이터의 삽입 / 삭제가 용이하다. (단점) 한번에 원하는 데이터에 접근이 불가능하다...
About Object 1. OOP (Object Oriented Programming)란? 실제 세계를 모델링하여 소프트웨어를 개발하는 방법이며 다음과같은 3대 특성을 갖는다. 1) 캡슐화 : 데이터를 감추고 외부 세계와의 상호작용은 메소드를 통해서만 하는 방법 2) 상속 이미 작성된 클래스를 이어받아 새로운 클래스를 생성하는 기법으로, 기존 코드를 재활용해 사용할 수 있다. 3) 다형성 하나의 이름 (메소드, 함수 등등)으로 많은 상황에 대처하는 기법으로, 동일한 작업을 하는 함수들에 똑같은 이름을 부여할 수 있으므로 코드가 더 간단해지는 효과가 있다. (장점) 코드의 재활용성이 높다. 코딩이 절차지향보다 간편하다. 디버깅이 쉽다. (단점) 처리속도가 절차지향보다 느리다 설계에 많은 시간이 소요된다. 2. JavaScrip..
Basic information of Programming $ 프로그래밍 언어 : 1. 기계어 : 컴퓨터가 사용하는 언어 (2진수로 구성) (저급언어라고 표현할 수 있음) 2. 어셈블리어 : 기계어에서 숫자를 의미있는 단어로 바꿔서 사람들이 이해하기 쉽게 만든 언어 3. 고급언어 : 사람들이 이해하기 편하도록 만들어진 프로그래밍 언어 (ex. C, C++, JAVA, Java Script) => 고급언어로 갈수록 작성하기가 쉽지만 속도는 느려진다. $ 언어의 종류 1. 절차지향적 언어 : 순차적인 처리가 중요시되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법 (ex. C언어) (장점) 컴퓨터의 처리구조와 유사해 실행속도가 빠르다. (단점) 유지보수가 어렵다. 실행순서가 정해져 있으므로 코드의 순서가 바뀌면 동일한 결과를 보장하기 어렵다. 2. 객..