본문 바로가기

프로그래밍 언어

(4)
자바스크립트 스코프 ( scope ), 전역 객체 C++ 에서 보면 using namespace std; 라고 자주 보인다. std 네임스페이스를 쓰겠다는 뜻이다. 네임스페이스는 여러가지 정보가 저장된 공간이라고 봐야 한다. 우리가 도서관에 있다면 우리는 도서관 namespace 에 있는 것이고, 그 공간안의 정보를 활용할 수 있다. 물론 핸드폰, 노트북 등을 통해서 인터넷 검색을 할 수도 있다. 그렇다면 그것은 일종의 global namespace 일 것이다. 모든 정보를 global 에 배치해두고 써도 되겠지만, 아래와 같이 문제가 많다. 하나의 도서관에 이 세상 모든 책을 보관할 수는 없다. 공간이 부족하기 때문이다. 또한 사람들이 필요로 하지 않는 책도 많을 것이다. 하나의 책을 여러 사람이 필요로 할 때도 문제가 된다. 그 외에도 여러가지 문제..
자바스크립트의 비동기 처리 (배열에서의 비동기 처리) - 2 앞선 포스팅에서 비동기 처리의 기본적인 부분을 살펴보았다. 이번에는 그것보다는 까다로운 케이스, 배열에서의 비동기처리를 알아보겠다. 쿼리의 결과로 리스트를 받으면 그것에 대한 추가 가공을 해야 하는 경우가 생기는데 그때 다시 필연적으로 배열에서의 비동기 처리가 필요하다. 이번에도 예제를 통해 작동 방식을 알아보자 b = [1, 3, 4] const f = async arr => { return arr.map(e => e + 3) } console.log(f(b)) 일단 위와 같이, 간단하게 1차원 배열 b부터 시작하자. f라는 함수에 배열을 넣으면 각 원소에 3을 더해서 리턴해준다. 근데 콘솔에 찍히는 건 프로미스가 붙어있다. 이제 이건 예상할 수 있어야 한다. async함수이기에 리턴에는 프로미스가 붙..
자바스크립트의 비동기 처리 (async - await , promise , then ) - 1 비동기 관련한 글을 쓰겠다고 생각한지 정말 오래되었는데 이제야 쓰게 되었다. 부지런히 글을 쓰겠다고 계속 다짐하지만 실천이 참 힘들다.. 비동기 주제를 한 번에 다 정리할 순 없으니 계속 조금씩 추가 및 수정하도록 하겠다. 개발을 하다보면 데이터베이스를 다루게 되는데, 그때 필연적으로 비동기 처리와 만나게 된다. 이전 Node.js - MySQL 글에서 말했듯이, 보통 커넥션 풀 (pool)에서 커넥션을 가져와 처리 후에 반납하는 형태가 된다. 이 과정이 비동기이므로 callback(콜백)함수, async-await, promise, then 등을 활용하여야 한다. 그리고 동시에 let a=3, console.log('abc')이러한 명령들은 '동기 처리'라는 걸 알 수 있다. 일단 promise는 약속..
파이썬 자료구조 dict (dictionary)에 대해서 파이썬에는 dict( )라는 명령어가 있다. 맵 구조를 만들어준다. a=dict() a[3]=1 a[5]=3 a['abc']=5 위에서 [ ]안에 들어가는 것이 key이고 =뒤에 있는 것이 value이다. 이는 다른 언어의 해시테이블, 해시맵과 유사한 느낌으로 사용 가능하다. 필자는 이 맵 구조를 대단히 좋아하는데, 배열에서는 어떠한 값들을 선형구조로 기록할 때, 인덱스로 접근하지만, 맵은 인덱스를 임의의 값으로 바꿔놓을 수 있기때문이다. 물론 인덱스 값만 바뀌고 배열의 성질을 그대로 갖는 것은 아니지만, 편의성이 좋아서 자주 사용한다. a=[1,2,5,3]이라는 배열이 있다면, a[3]=3이고, a[2]=5다. 0~3이라는 인덱스를 통해 배열 안의 값에 접근할 수 있다. 그리고 이 인덱스는 항상 0부터..