목록분류 전체보기 (63)
백고등어 개발 블로그
오늘 한 일 동기와 비동기에 관해서 다시 생각해보았다. 동기와 비동기, 블락킹와 논블락킹은 절차지향과 객체지향과 같이 개념일뿐이고, 그것을 코드로 표현하다보니 자바스크립트의 콜백으로 표현이 가능할뿐이다 그리고 콜백의 단점을 보완하기 위해 문법적으로 Promise, async/await 키워드가 나왔다 이벤트 루프의 동작으로 설명하자면 callstack 영역은 동기영역, webAPI 영역은 비동기영역으로 말할 수 있다 비동기적으로 동작하는 특정 함수들인 setTimeout, setInterval, AJAX 등등은 내부적으로 처리되는 순서에 따라서 동작되는 순서가 달라질 수 있다 그렇게 뒤죽박죽으로 실행되는 순서를 순차적으로 실행할 수 있도록 하는 방법은 자바스크립트의 콜백(callback)만 사용해서 해결..
오늘 한 일 자바스크립트의 비동기 처리에 관해 학습했다. callback 을 이용한 비동기 함수의 전달 방법과 콜백 지옥을 해결하기위한 비동기 처리 객체인 Promise 와 Promise 의 단점을 보완한 async/await 키워드에 관련해서 학습했다.
오늘 한 일 오늘 N-Queens 문제를 풀었다 N-Queens란? n*n 체스판에 n 개의 퀸을 배치할 때 각각의 퀸들이 서로의 공격범위에 들어오지 않도록 배치할 수 있는 방법이 몇가지가 있는지 알아내야하는 문제이다 문제를 해결하기 위해 생각해야할 것들을 아래와 같이 정리해보았다. 1. 퀸의 공격범위를 어떻게 구현할 것인가? 2. 다음 퀸을 배치할 때 기존에 배치된 퀸의 공격범위에 들어왔을 때 어떻게 처리해야할지? 3. n 개의 모든 퀸들이 서로를 공격하지 않는 배치방법이 하나 발견되고 나서 그다음 배치를 구성할 때 어떻게 기존의 배치와 다르게 구성할 수 있을지? 4. 어떻게보면 n*n 체스판의 모든 칸들을 검사해야하는데 어떻게 모든 칸을 검사할 수 있을지?
오늘 한 일 부트 캠프 과정을 함께 진행하면서 뵙게된 분의 코드를 함께 살펴보면서 새로운 것을 알게 되었다 현재 이벤트가 발생한 객체를 삭제하는 방법에 대해 알게 되었는데 아래의 코드를 사용하면 된다 function childClickDOM0(event) { log("Child click DOM0, removing"); this.parentNode.removeChild(this); } *물론 이벤트 호출 함수에 따라서 this 는 달라진다! 참고 : stackoverflow.com/questions/2732818/if-you-delete-a-dom-element-do-any-events-that-started-with-that-element-contin
오늘 한 일 자바스크립트의 프로토타입과 클래스 키워드를 사용하여 BeesBeesBees 문제를 풀어보았다 프로토타입을 이용하여 상속을 어떻게 구현하는지 알았고, 자바스크립트 ES6부터 도입된 class 키워드를 사용하여 프로토타입의 단점을 보완하는 방법을 배웠다
오늘 한 일 객체지향 프로그래밍에 관해 학습했다. 객체지향 프로그래밍에 대해 알아가면서 절차지향 프로그래밍에 대해서도 알게되었다 두가지 개념을 알게되었을 때 느낀것은 객체지향과 절차지향은 프로그래밍이 발전하면서 나오게된 "개념" 즉 "이론"들이며, 절차또는 객체를 지향할뿐 무조건 정답은 아니라는 것이다 또한 객체지향까지의 발전과정을 간단히 봤을 때 프로그래밍의 방식이 인간친화적인 방식으로 발전한다는 느낌을 받았고 그 과정에서 추상화라는 개념이 들어간 것 같다 결론은 객체지향 프로그래밍의 방식이 실생활에서 이미 사용되는 부분이 많았고 그러한 부분들을 코드로 표현할 때 어떻게 표현할지 생각하면 프로그래밍이 좀더 수월해질것 같다는 것이고 그것이 곧 객체지향 프로그래밍이라는 것이다
오늘 한 일 자료구조 스프린트 과제를 완료한 후 제출했다 그래프, 트리, 이진 탐색 트리를 구현하는 동안에 어떤 기능에 적용하면 좋을지 계속 생각했다 일단 지금 드는 생각은 자료구조와 좀더 친해져야겠다는 생각이다......
객체 지향 프로그래밍(OOP) : 프로그램을 어떻게 설계해야 하는지에 대한 일종의 개념이자 방법론. 절차적 프로그래밍 (Procedural) 초기 프로그래밍 방식은 절차적 프로그래밍 방식이었습니다. 입력을 받아 명시된 순서대로 처리한 다음, 그 결과를 내는 것뿐이라는 생각이 지배적이었습니다. 즉, 프로그램 자체가 가지는 기능에 대해서만 신경을 썼지, 이 프로그램이 대체 어떤 데이터를 취급하는 것인가에는 그다지 관심이 없었던 것입니다. 절차적 프로그래밍의 문제점 조금만 복잡해져도 순서도로 나타내는 것이 거의 불가능할 정도로 꼬여서 유지보수가 어려울뿐만 아니라 다른사람이 들이 보고 이해하는 것이 불가능. 이 문제를 해결하기 위해 구조적 프로그래밍을 제안하였습니다. 프로그램을 함수단위로 나누고 함수끼리 호출하..
오늘 한 일 연결 리스트, 해쉬 테이블, 그래프, 트리, 이진 탐색 트리를 학습하고 구현했다 연결 리스트, 해쉬 테이블, 그래프, 트리와 이진 탐색 트리를 공부하고 구현하느라 3-4일이 어떻게 지나갔는지 잘 모르겠다(오늘까지 합쳐서) 초반 스택과 큐에서 자신감을 얻고 연결 리스트에서 자신감이 떨어진 후, 해쉬 테이블에서 죽었다가 살아났다 그 기운으로 그래프, 트리, 이진 탐색 트리를 방금 끝냈다 우선 중요한건 지금은 조금 머리를 식혀야할 것 같지만 다음날이 어떻게 될지 기대되면서도 잘 모르겠다 주말에 자료구조와 관련된 내용을 전체적으로 정리를 해야겠다.....