본문 바로가기

js25

[자료구조, 알고리즘] 리스트#3 - js로 CircularLinkedList 구현, 자바로 생각해보기 [연결리스트]- 메모리 상에서는 떨어져있는 데이터 : 각각 연결하여 1열의 개념의 데이터 저장공간을 만듦- 핵심(1) node : 현재 데이터와 현재와 연결된 다음 데이터를 가리키는 주소를 함께 저장 - node -> data, next(2) node 간 어떻게 연결할 것인가, 연결되어져있는 node 탐색방법 - 연결 형태에 따라 단순/원형/양방향 연결리스트 나뉨 [원형 연결리스트]- 단순 연결리스트와 마찬가지로 단방향 : 역방향까지 지원하는 양방향 연결리스트는 다음 포스팅!- 처음 추가된 node와 마지막 node가 연결되어 원형을 띔 - 단순 연결리스트는 head -> tail node로 가기위해 tail에서 next node로 순차탐색=> 위의 그림처럼 head를 둬도 되지만, 원형 연결리스트의 특.. 2017. 9. 6.
[자료구조, 알고리즘] 리스트#2 - LinkedList 구현, syntax + develop tip [연결리스트 특징 및 구현할 때 생각해야할 것]- ArrayList는 배열(array)로 구현된 List, 연결리스트는 메모리에 동적으로 할당되는 데이터들을 하나의 리스트로 만듬- Node 인스턴스(object)를 동적으로 할당하되 하나의 리스트로 엮음 : LinkedList- 구현하면서 가장 중요하게 생각해야하는 것 : node간 연결방법, node를 순차적으로 탐색하는 방법 [자바스크립트로 LinkedList 구현하기(feat. 자바스크립트 프로토타입 기반 객체지향)]- node를 head로만 추가함=> head 와 tail 추가하는 방법을 구현하면됨=> 중간 node를 제어하는 방법도 생각해봅시다 : setRuleList 추가 - LinkedList 객체 : 추상화, private / public .. 2017. 9. 1.
[자료구조 알고리즘] 리스트#1 - ADT, ArrayList js구현, syntax tip [리스트 특징]- 1열에 나란히 데이터를 저장함 : 1줄로 연결된 형태, 탐색- 중복된 데이터를 허용함 - 데이터 참조가 쉬움, 내부적으로 index를 기반으로 first / next 동작 - 삭제 과정에서 이동이 빈번하게 일어남, 외부적으로는 index를 기준으로해서 옮기는 것이 아니라 first / next 함수를 호출해서 cursor를 움직임=> 탐색이 빈번하게 일어나는 기능에서 자료를 저장하는 구조로서는 부적합 [리스트 구현방법에 따른 종류]- 주의할 점 : 구현 방법에 따라 나눈 것이지 ADT가 다른 것이 아님- 순차리스트 : 배열을 가지고 구현한 리스트- 연결리스트 : 메모리 동적할당을 가지고 구현한 리스트 [C로 배운 리스트 자바스크립트로 구현하기]- 어차피 ADT가 달라지는 것도 아니고, .. 2017. 8. 26.
[node.js] 프로젝트 - 로그인 구현 : 파이어베이스 [시작하기]1) 파이어베이스 프로젝트 생성 -> 콘솔 -> Authentication -> 페이스북 활성화 -> 인증 토큰 리디렉션 URL 복사 2) 페북 개발자 페이지 -> 프로젝트 생성 -> 콘솔 -> 제품 추가 - 로그인 -> 로그인 메뉴 - 설정탭 - 인증 토큰 리디렉션 URL 붙여넣기 - 저장 => 정해진 URL로만 인증토큰이 전송됨 : 파이어베이스 API 키가 노출되더라도 큰 피해가 없지만… 3) 페이스북 프로젝트 대시보드 -> 앱 ID / 시크릿 코드 복사 -> 파이어베이스 Auth 페이스북 대시보드에 붙여넣기 4) 프로젝트에서 파이어베이스 API키로 파이어베이스를 이용하려면 Authentication 대시보드 > 승인된 도메인에 프로젝트 도메인을 추가해야함 => https://support.. 2017. 8. 5.
[자바스크립트] 필수 개념 - 어렴풋이 알면 모르는 것 [기본이자 필수개념 - js 프로그래밍 할 때 모르면 코드 못짜, 다른 사람 코드 못봐] 1) 브라우저 환경에서 자바스크립트는 샌드박스 환경에서 실행됨 : 파일 입출력 막기2) 함수를 통해 생성된 객체는 __proto__ (부모 객체의 프로토타입을 저장하는 프로퍼티가 존재함) => new String, new Object, new 사용자함수 등 => 사용자 함수를 선언하는 것 : new Function()=> 리터럴로 string을 생성하는 경우에는 x=> 부모 객체의 prototype 객체 프로퍼티에 추가를 하면 상속받는 객체들이 추가된 메서드나 변수를 사용할 수 있음 => 프로토타입 체인 : 해당 객체에 프로퍼티가 존재하지않을 경우 부모 객체로 올라감 => 즉시 반영 : 부모 역할을 하는 functi.. 2017. 7. 28.
[자바스크립트] 빌트인객체(2) js 전역객체와 기본제공 객체 [먼저 봐야하는 게시글]- 빌트인객체(1) 브라우저와 웹페이지를 위한 객체 : http://jinbroing.tistory.com/101 [전역객체란]- 전역객체 : (클라이언트 사이드 : window), (서버사이드(nodejs) : global) / 모든 객체의 유일한 최상위객체- 브라우저 화면 뿐만 아니라, 코드 상의 자바스크립트를 다룰 수 있는 최상위 객체, 그래서 루트 객체라함- 전역객체의 자식 객체로 기본적으로 제공하는 객체(빌트인 객체)도 프로퍼티로 포함됨- BOM에서의 window와 전역객체인 window 같음 - constructor가 없음 === new 키워드를 통해 새롭게 생성할 수 없음(유일한 객체)- document와 같은 widnow 하위 객체를 통해 제어를 할 때 window는.. 2017. 4. 25.
[자바스크립트] 빌트인객체(1) - 브라우저와 웹페이지를 위한 객체 [먼저 보면 좋은 게시글]- DOM : http://jinbroing.tistory.com/90 , http://jinbroing.tistory.com/86 [빌트인객체란]- 자바스크립트 내장 객체를 말함- 개발자가 모든 기능을 구현하지않고, 편하게 개발할 수 있도록 자바스크립트에서 기본적으로 제공하는 객체- 자료형 객체 관련 메서드를 제공함(Standard Builtin Object - String, Array 등)- 웹페이지 제어 및 동작을 추가하기위한 공통의 기능을 제공함(Native Object - BOM, DOM)- 반대로는 호스트 객체(Host Object)가 있는데, 호스트 객체란 개발자가 만들어내는 객체임 [브라우저와 웹페이지를 위한 객체]- 빌드인객체 중 브라우저와 웹페이지 제어 및 동작.. 2017. 4. 25.
[자바스크립트] 함수 호이스팅 [목표]- 자바스크립트 내부 동작 잘 이해하기 : 코드를 복붙하더라도 알고 써야지! [호이스팅이란]- 선언문이 최상위에서 처리되는 것을 호이스팅이라 함- 글로벌 영역(전역)으로 선언되어있는 변수, 함수 선언문들을 먼저 수집하여 전역객체(window)의 프로퍼티로 등록함- 할당문은 자바스크립트 코드 실행(런타임 과정) 시 할당됨 [발생하는 이유]- 자바스크립트의 선언문은 자바스크립트 인터프리터가 해석을 할 때 가장 먼저 처리함(최상위) [호이스팅 예시 - 함수]1234567function foo(){ console.log("함수선언식")} var foo = function(){ console.log("함수표현식")}cs- 같은 함수인 것 같지만, 호이스팅에서 차이가 남, 아랫글이 차이에 대한 부분임 1-1.. 2017. 4. 20.
[자바스크립트] 함수 내부 동작 [함수 내부동작]- 자바스크립트 엔진의 내부를 살펴보면 함수가 실행스택에 쌓일 때 함수는 객체를 생성함- 객체는 Variable Object(줄여서 VO 라 함)임 - 객체 내부(프로퍼티)는 아래와 같음1) arguments 객체 : 함수로 넘어오는 인자 정보를 담는 객체, 배열은 아니지만 배열과 유사한 형태(배열객체가 제공하는 메소드 사용X)로 저장2) 지역변수, 함수 3) scope chain : [[Scopes]] 프로퍼티 참고- 변수의 범위를 담은 프로퍼티- 선언된 지역변수는 지역변수의 값, 그렇지않은 것은 전역객체의 변수 프로퍼티값 참조- 전역객체에서도 없으면 undefined (상위 객체에서도 없을 때에 undefined 즉, 선언되지않은 값) [함수 상세하게 보기]1) 콘솔창에 함수 만들기1.. 2017. 4. 19.
[자바스크립트] 느슨한 타입 [목표]- 자바스크립트 특징 이해하기 : 그냥 아 그렇구나하고 넘어가는게 아니라... [느슨한 타입이란]- 타입없이 변수를 선언하는 것- 자바스크립트가 변수를 선언할 때 타입없이 var(variable 약어)로만 선언함- 느슨한타입과 반대되는 말은 강력한타입, 강력한타입은 반대로 변수를 선언할 때 타입을 선언해야함1234567/* javascript (loose typing) */var a = 1 // typeof(a) === Numbervar b = "str" // typeof(b) === String /* java (strong typing) */int a = 1;String b = "str"cs - 타입없이 선언했다고해서 변수의 타입이 없는 것은 아님 : 내부적으로 정해짐- 내부적으로 변수의 타입이.. 2017. 4. 19.