목록2020/05/28 (12)
개발블로그
Linking이란? Symbol Resolving &Relocation 어떤 object file이 어떤 symbol을 포함하는지 결정 object code들을 합병하여 하나의 수행파일로 만듦 symbol의 location을 결정 및 실제 주소에 배치 Symbol이란 전역변수나 함수의 이름들을 지칭한다. Static vs Dynamic Linking static linking이란 필요한 모든 심볼들을 수행파일에 병합하여 만드는 방식이다. 라이브러리의 함수를 사용했다면, 수행파일이 생성될 때 해당 라이브러리 파일의 함수부분이 수행파일에 복사됩니다. 그렇기 때문에 수행파일의 크기가 굉장히 크다는 단점이 있습니다. dynamic linking이란 수행파일에 라이브러리 코드가 포함되지 않으며, 필요로 할 때 l..
Array 논리/물리적 저장 순서가 일치 (연속적인 메모리 공간에 저장) index를 통한 배열 원소 접근 가능하며, 접근의 시간복잡도는 O(1) 원소 삽입/삭제 시 기존 원소들을 shift해야 하므로 O(n)의 시간복잡도를 가진다. 제약적 공간을 가진다. LinkedList 논리/물리적 저장 순서 불일치 (다음 노드의 주소값을 가짐) index 사용 불가. 접근 시 리스트를 순회해야 하므로 시간복잡도는 O(n) 원소의 삽입/삭제가 Array에 비해 빠름. LinkedList의 원소 삽입/삭제 자체는 빠르지만, 해당 원소를 찾는데 O(n)의 시간이 걸린다. (Bottle neck) (맨 앞/뒤에만 원소를 삽입한다고 가정하면 O(1)의 시간복잡도를 가진다.) 하지만, 원소를 삽입/삭제할 때마다 메모리의 할..
1. React Native: 웹 개발자가 한달만에 앱 출시하기 (발표자료: https://www.slideshare.net/deview/121react-native) React Native Facebook, Instagram, Discord 등 많은 플랫폼에서 React Native가 사용되고 있다. 네이티브 앱에서 React Native로 전환한 후 많은 덕을 보았다. 빠른 개발속도, 98%에 육박하는 iOS, Android간의 코드 공유 등 탁월한 선택이라고 이야기함. React Native의 장점은 투입한 개발 리소스에 비해 결과물의 퀄리티가 좋다는 점과 플랫폼간 공유 코드를 생성함으로써 유지 보수비용이 낮아진다는 점이다. ‘단 기간에 프로덕션 레벨의 크로스 플랫폼을 만들어야 할 때 고려할 수 있..
A Promise is an object representing the eventual completion or failure of an asynchronous operation. — (출처: MDN) ‘Promise는 비동기 작업의 최종 완료나 실패를 표현하는 객체이다.’ 쯤으로 해석된다. Promise에 대해서 보기 전에 ‘비동기 작업’에 대하여 알아보도록 하자. Asynchronous 자바스크립트는 single-thread로 동작한다. 쉽게 말하자면 하나씩 하나씩 순차적으로 처리해 나간다는 말이다. 그림을 보자. 사용자의 동작에 의해서 이벤트가 발생하고, 그 이벤트는 메시지 큐에 담긴다. 큐의 맨 앞 이벤트가 실행될 때, 호출스택에 이벤트에 해당하는 함수들이 쌓이고, 순차적으로 처리된다. 전부 다 ..
JavaScript에서의 this In most cases, the value of this is determined by how a function is called. It can't be set by assignment during execution, and it may be different each time the function is called - 출처 : MDN( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this ) 자바스크립트에서 함수의 this키워드는 다른 언어에서의 this와는 조금 다르다고 한다. 대부분의 경우에 this는 함수가 어떻게 불렸냐에 따라 결정되는데, 실행중 할당에 의해 정해질 ..
ES6부터 자바스크립트에도 클래스개념이 도입되었다고 한다. C나 JAVA에서 봐왔던, 내가 알던 클래스와는 조금 다르기에 정리해 보려고 한다. 클래스를 사용해보자! // define Person class class Person { constructor(name, age, email) { this.name = name; this.age = age; this.emailList = email ? [email] : []; } introducMyself() { return `I'm ${this.name}, ${this.age}years old.`; } // Getter Method get getEmailList() { return `Email : ${this.emailList.join(', ')}`; } // ..