분류 전체보기 37

Event Loop & 비동기 정리

자바스크립트는 동기 자바스크립트는 싱글 스레드 언어, 즉 동기식 언어이다. 하나의 콜 스택(Call Stack)으로 동작하며, 콜 스택에서 작업을 하나씩 뽑아서 한번에 한개의 작업을 실행한다. 따라서 콜 스택에 있는 작업들을 순차적으로 처리할 수 밖에 없다. 이미지 출처: https://dev.to/lydiahallie/javascript-visualized-event-loop-3dif 즉, 자바스크립트는 병렬 처리를 할 수 없으며, 작업들은 동기적으로 처리된다. 그러나! 이벤트 루프(Event Loop)를 통해 비동기 처리를 할 수 있다. 자바스크립트 혼자서는 동기식으로 동작하지만, 브라우저 or Node.js의 이벤트 루프를 통해 비동기적인 처리를 할 수 있다. 비동기적 처리를 할 수 있다니, 이게 ..

개발/Node.js 2023.07.26

[OS] 프로세스 스케줄링

프로세스란?프로세스(Process)는 CPU가 처리하는 작업(Task)이며 실행중인 프로그램을 의미한다.구체적으로는, 디스크에 저장되어 있던 실행 가능한 프로그램이 메모리에 적재되어 운영체제가 관리하는 상태를 의미한다.프로세스 스케줄링스케줄링이란?CPU는 한번에 한가지 작업만을 처리할 수 있다. 하나의 작업이 끝나면 다음 작업을 수행해야 하는데, 이때 OS는 프로세스 스케줄링 알고리즘을 이용하여 다음에 실행할 프로세스를 선택한다.선점(Preemptive) 스케줄링프로세스가 CPU를 점유하고 있는 동안 (I/O 이벤트 또는 인터럽트가 발생한 것이 아니고 작업이 끝난 것도 아닌 상태에서) 다른 프로세스가 해당 CPU를 강제로 점유할 수 있다.비선점(Non-preemptive) 스케줄링한 프로세스가 CPU를 ..

운영체제 2023.07.20

객체 지향 프로그래밍(OOP)이란?

객체(Object)란? 데이터와 데이터를 처리하는 함수를 묶어 놓은(캡슐화한) 하나의 독립된 존재. 소프트웨어 모듈. 데이터: 객체가 가지고 있는 정보. 속성(attribute) 함수: 객체가 수행하는 기능으로 객체가 갖는 데이터(속성, 상태)를 처리하는 알고리즘. 객체의 상태를 참조하거나 변경하는 수단. 메서드(method) 객체 지향 프로그래밍(Object Oriented Programming, OOP) 프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아닌, 프로그램을 수많은 객체로 나누고 이들의 상호 작용으로 서술하는 방식. 객체 지향 프로그래밍의 특징 추상화 (Abstraction) 다형성 (Polymorphism) 상속 (Inheritance) 캡슐화 (Encapsulation) 객체 지향..

개발 2023.07.18

크론탭(crontab)을 이용한 스케줄링

cron, crond, crontab cron, crond, crontab은 Unix 계열 운영체제에서 작업을 예약하기 위해 사용되는 도구이다. 크론탭(crontab)이란? 크론탭은 cron에 의해 실행될 명령이나 스크립트의 목록을 포함하는 파일로, 크론 테이블(table)의 줄임말이다. 이 파일에는 해당 사용자가 예약하려는 작업이 특정한 시간에 실행되도록 정의되며, 사용자가 작성한 작업을 할당할 수 있다. 크론탭 문법 연습 사이트 https://crontab.guru 크론탭 설치 명령어 sudo apt install cron # 크론탭 설치 sudo service cron status # 크론탭 상태 보기 sudo service cron start # 크론탭 실행 크론탭 작업 할당 크론탭 스크립트 열기..

운영체제 2023.07.11

[JS] 자바스크립트 표준입력, 정규표현식, 2차원 배열

Javascript 표준 입력 표준 스트림(standard streams) 표준 입력(stdin), 표준 출력(stdout), 표준 에러(stderr) 3가지를 표준 스트림이라고 하며, 운영 체제에서 기본적으로 제공하는 추상화된 입출력 장치를 의미한다. 표준 입력(stdin): 프로그램으로 들어가는 데이터(보통 문자열) 스트림이다. 표준 입력 장치의 ID는 0이며 일반적으로는 키보드가 된다. 표준 출력(stdout): 출력을 위한 데이터 스트림이다. 표준 출력 장치의 ID는 1이며 일반적으로는 현재 쉘을 실행한 콘솔(console)이나 터미널(terminal)이 된다. 표준 에러(stderr): 에러를 위한 데이터 스트림이다. 표준 출력 장치의 ID는 2이며 일반적으로 표준 출력과 동일하다. 출처: 표준..

[백준] 19236번 청소년 상어 - Python 풀이 (+ 파이썬의 동적 타입)

✏️문제 링크https://www.acmicpc.net/problem/19236문제 풀이델타 이동 구현 + DFS로 풀었다.문제의 요구사항에서 물고기 이동 단계와 상어 이동 단계가 반복되므로 각 단계를 함수로 만들었다.상어 이동 단계는 상어가 이동 가능한 위치가 여러 개 있을 수 있고 모든 경우의 수를 탐색해야 하므로 DFS를 적용하여 재귀적으로 탐색했다.제출 코드import sys import copy input = sys.stdin.readline drc = [(-1, 0), (-1, -1), (0, -1), (1, -1), (1, 0), (1, 1), (0, 1), (-1, 1)] arr = [[0] * 4 for _ in range(4)] # 물고기 배치. (fish, direction): 물고기..

알고리즘 2023.07.05

[백준] 16236번 아기 상어 - Python 풀이(Feat. 1년 전 코드 다시보기)

✏️문제 링크 https://www.acmicpc.net/problem/162361년 전 처음으로 백준 사이트에 가입할 때 이 문제를 보고 제목이 귀여워서 아이디를 baby_shark로 지었었다.닉값을 하기 위해 아기 상어를 풀고 싶었지만 귀여운 제목과는 달리 골드 난이도의 문제였고, 당시에 나는 프로그래밍 공부를 시작하는 단계였기 때문에 BFS가 뭔지 몰라서 풀 수 없었다😂이 문제를 풀고싶어서 알고리즘을 열심히 공부한 것도 일정 부분 있지 않을까? 아무튼 골드 문제 중에서 처음으로 도전했던 문제이고, 기념비 삼아 첫 게시물로 올려본다....그런데 1년이 지나고 코드를 다시 보니 개선될 여지가 많아서 성능 및 가독성을 향상시킨 v2 코드를 새로 작성하였다.1년 전 풀이N = int(input()) fis..

알고리즘 2023.07.04