본문 바로가기

분류 전체보기

(153)
JavaScript - 비동기와 동기 (Asynchronous and Synchronous) 자바스크립트의 비동기와 동기에 대해서 알아보자. 동기적 실행 (synchronous) 이란 동시에 일어난다는 이야기이다. 요청과 그 결과가 동시에 일어난다는 일종의 약속이다. 요청을 하면 시간이 얼마가 걸리던, 요청한 자리에서 결과가 주어져야 한다. 즉, 요청과 결과가 한 자리에서 동시에 일어난다. A 노드와 B 노드 사이의 작업 처리 단위 (transaction) 를 동시에 맞춘다. 반면 비동기적 실행 (Asynchronous) 은 동시에 일어나지 않는다를 의미한다. 즉 요청과 결과가 동시에 일어나지 않는다는 약속이다. 요청한 그 자리에서 결과가 주어지지 않는다. 노드 사이의 작업 처리 단위를 동시에 맞추지 않아도 된다. 각각에는 장단점이 있으며, 맞는 쓰임새가 있다. 먼저 동기방식은 설계가 간단하고 ..
7-2-2. 큐, 우선순위 큐, 힙, 연결 리스트 예제 (Other Types Examples): 파이썬 자료구조와 알고리즘 큐 데크와 회문 데크를 사용하면 문장이 회문인지 쉽게 확인할 수 있다. 내 정답: from deque import Deque def check_palindrome(string): d = Deque() for i in string: d.enqueue_back(i) h_leng = d.size() // 2 for i in range(h_leng): if d.dequeue() == d.dequeue_front(): continue else: return False return True palindrome = '다시합창합시다' not_palindrome = '안녕하세요' print(check_palindrome(palindrome)) print(check_palindrome(not_palindrome)) 책의 ..
7-2-1. 스택 연습문제 (Stack Examples): 파이썬 자료구조와 알고리즘 문자열 반전 스택의 데이터를 역순으로 정렬하거나 검색할 때 사용할 수 있다. 7-1 에서 구현한 스택 클래스를 써서 구현해보자. 내 정답: from stack import Stack def reverse_string_with_stack(string): s = Stack() result = '' for i in string: s.push(i) while not s.isEmpty(): result += s.pop() return result print(reverse_string_with_stack('Hello World!')) 결과 PS C:\Users\bumsu\Desktop\Python\DSA> & C:/Python38/python3.exe "c:/Users/bumsu/Desktop/Python/DSA/..
Node.js 기초 6 - 모듈 프로그램 당 사용하는 함수, 변수, 객체 등이 많아질 수록 프로그램은 점점 복잡해지고 난해해진다. 만약 우리가 원하는 프로그램이 굉장히 복잡하고 코드가 길다면, 추후에 우리는 그 프로그램을 다시 이해하고 유지보수 또는 변경하고 싶을 때 굉장히 오래 걸릴 것이다. 따라서 우리는 원하는 코드를 객체의 형태로 밖으로 내보낼 수 있다. 이 경우 내보내는 것을 모듈 (객체의 모음) 이라고 하며, 내보내는 것을 export 라고 한다. 새 디렉터리에 mpart.js라는 파일에 아래와 같은 코드를 작성해 모듈을 만들자. const M = { v: 'v', f: function() { console.log(this.v); } } module.exports = M; 이후, muse.js라는 파일에 이를 가져와 실행시켜 ..
Node.js 기초 5 - 파일 목록 읽기 노드js에서 특정 디렉터리 하위에 있는 파일과 디렉터리의 목록을 알아내 보자. 먼저 새로 디렉터리를 만들어 read_dir.js라는 파일을 만들자. 그 후, 그 디렉터리 하위에 새로운 폴더, data 라는 폴더를 만들어 안에 sample1.txt, sample2.txt, sample3.txt라는 파일을 만들어 주자. 이제 read_dir.js에 다음과 같은 코드를 작성해 준다. const testFolderDir = './data'; const fs = require('fs'); fs.readdir(testFolderDir, (err, filelist) => { console.log(filelist); }); 실행시키면 다음과 같은 결과가 나온다. PS C:\Users\bumsu\nodejs-projec..
Node.js 기초 4 - 콘솔에서의 입력값 노드js에서 콘솔에서의 입력값에 대해서 알아보자. 먼저, 새 디렉터리에 console.js라는 파일을 만들고 아래와 같은 코드를 입력한다. const args = process.argv; console.log(args); 이제 cmd를 켜 콘솔에서 노드js를 실행시키며 뒤에 값들을 띄어쓰기 구분으로 다음과 같이 입력해 보자. PS C:\Users\bumsu\nodejs-projects\console_log> node console.js hello beomseok [ 'C:\\Program Files\\nodejs\\node.exe', 'C:\\Users\\bumsu\\nodejs-projects\\console_log\\console.js', 'hello', 'beomseok' ] 이와 같이 출력된다. ..
Node.js 기초 3 - 파일 읽기 노드js에서 파일을 다루는 방법을 알아보자. 정보 시스템의 핵심적 메커니즘은 CRUD이다. C는 Create, R은 Read, U는 Update, D는 Delete를 뜻하며, 이 4가지가 정보를 다루는 핵심적 기능들이다. 가장 중요한 것은 C이다. C가 없으면 RUD도 없다. 그 다음으로 중요한건 R이다. R이 없으면 데이터를 작성하는 이유가 없기 때문이다. 노드js에서 파일을 다루려면 fs 모듈을 보통 사용한다. fs란, file system의 약자이다. 파일을 읽기 위해선 readFile 메서드를 사용하면 된다. 먼저 새로운 파일, readfile.js 라는 파일에 다음과 같은 코드를 작성해 주자. const fs = require('fs'); fs.readFile('sample.txt', (err,..
7-1. 추상 데이터 타입 (Abstract Data Type): 파이썬 자료구조와 알고리즘 추상 데이터 타입 (abstract data type, ADT) 은 유사한 동작을 가진 자료구조의 클래스에 대한 수학적 모델을 가리킨다. 자료구조는 크게 배열 기반의 연속 (continuation) 방식과 포인터 기반의 연결 (link) 방식으로 분류한다. 예를들어. 연속적 할당 자료구조는 문자열, 리스트, 튜플, 딕셔너리 등이 있다. 그러나 앞으로 배울 내용들은 좀 더 특화된 연속 구조의 예와 연결 구조의 예를 살펴본다. 스택 스택 (stack) 은 배열의 끝에서만 데이터를 접근할 수 있는 선형 자료구조이다. 스택은 배열 인덱스 접근이 제한되며, 후입선출 (last in first out, LIFO) 구조이다. 책상 위에 쌓여 있는 책을 상상해보자. 맨 위의 책을 가져올 순 있지만, 맨 아래 또는 중간..