목록개발 (55)
속도 < 방향
실전 시계열 분석을 보며 정리했습니다. [Last updated : 2022-09-14] 정의 시계열 분석은 시간 순서대로 정렬된 데이터에서 의미있는 요약과 통계 정보를 추출하는 것이다. 과거 행동 진단뿐만 아니라 미래 행동 예측에도 사용된다. 1.1 다양한 응용 분야의 시계열 역사 '과거가 미래에 어떤 영향을 주는가?' 와 같은 인과관계를 다루는 질문으로 시계열 분석에 대해 일축할 수 있다. 1.1.1 시계열 문제로서의 의학 존 그란트(John Graunt)는 1500년대 초반부터 사망 기록 연구를 시작하여, 특정 연령대에 있는 사람이 다음 생일 전에 사망할 확률을 구했다. 그란트는 처음으로 사람의 건강을 문서에 기록한 통계학자이다. 하지만 당시에는 찬밥 신세를 받았다. 그 이유는 당시 생리학, 해부학..
Reference : CS 공부 비서, 티스토리 Q&A Q. 컴파일러와 인터프리터의 차이가 무엇인가요? A. 나의 답변 * 컴파일러는 인풋언어(고급어)를 객체어(기계어)로 변환하고, 하드웨어에 종속적이다. 번역 진행 시 전체 코드를 검사한 뒤에 실행한다. 반면 인터프리터는 line by line으로 번역을 진행하고, 하드웨어에 종속되지 않는 특징이 있다. Best Answers ★ㅇ*님의 답변 컴파일러와 인터프린터는 사람이 작성한 코드(고급언어)를 컴퓨터가 이해할 수 있는 언어(기계어)로 변환하는 작업을 수행해주는 역할을 한다. 컴파일의 경우 고급언어를 한 번에 번역한다. 인터프린터의 경우 고급언어를 한 줄씩 번역을 진행하기 때문에 컴파일 보다 실행시간이 빠르다는 장점이 있다. 그러나 번역을 할 때 실행..
[last updated Aug 05, 2022] reference book : 구글 브레인 팀에게 배우는 딥러닝 with TensorFlow.js 서문 그동안 대부분의 딥러닝 프레임워크(Tensorflow 등)들은 파이썬으로 쓰여있어서, 파이썬이 익숙치 않은 사람들이 프레임워크를 다루는 것에 어려움이 있었다. 구글 브레인 팀은 자바스크립트와 Tensorflow 를 연결하여 자바스크립트 개발자들도 머신 러닝 모델을 구축하고 배포할 수 있도록 하며, 새로운 종류의 on-device 컴퓨팅을 가능하게 만들었다. Tensorflow.js는 자바스크립트를 통해 신경망을 다루며 다양한 데이터 형태의 인풋이 가능하도록 하며 사전학습모델(pre-trained model)을 활용한 학습, fine-tuning, 더 나..
Reference : CS 공부 비서, midas님의 velog Q&A Q. 트랜잭션의 각 격리 수준에 대해서 설명하고, 각 수준에서 일어날 수 있는 문제에 대해 설명해주세요 A. 나의 답변 * 트랜잭션은 데이터베이스의 논리적 수행 단위라고 할 수 있는데, 가지고 있는 여러가지 특징 중 격리성에 대한 특징이 있다. 격리성이란 트랜잭션들이 동시에 실행될 때 서로 영향을 미치지 않도록 격리하는 성질을 의미한다. * 격리 수준은 4가지로 나눌 수 있는데, 하위 단계로 갈수록 격리 수준이 높아지지만 동시처리의 성능은 떨어진다. 1) Read Uncommitted 2) Read Committed 3) Repeatable Read 4) Serializable Best Answers ★김*님의 답변 격리성 관련 문제..
카카오톡 플러스 친구에 좋은 채널이 있어 추가하였다. 하루에 한 개씩 CS 공부를 할 수 있도록 질문을 보내주고 , 답변자에 한하여 그 날이 마무리될때쯤 베스트 답변을 취합하여 다시 알려주는 좋은 채널이라 덕분에 나도 틈날때마다 개념을 정리하려 한다. Reference : CS 공부 비서, 동기와 비동기의 개념, 동기와 비동기의 개념과 차이 Q&A Q. 동기(Synchronous)와 비동기(Asynchronous), 블로킹(Blocking)과 논-블로킹(Non-blocking)에 대해 설명해주세요 A. 나의 답변 * 동기는 요청을 보내는 동시에 결과값을 받을 수 있도록 동시에 일어나는 것에 초점을 맞춘 방식이다. 비동기는 반대로 요청과 결과가 동시에 일어나지 않는다. * 블로킹은 원래는 스포츠(농구)용어..
edwith CS50강의를 보며 정리했습니다. 합병정렬 합병정렬은 원소가 한개가 될 때까지 계속 반으로 나누다가 다시 합쳐나가며 정렬을 하는 방식이다. 합병 정렬은 버블 정렬, 선택 정렬, 삽입 정렬보다 훨씬 빠르고 간결하고 깔끔하게 표현할 수 있다. 합병정렬의 시간복잡도 상한선은 $nlogn$이다. 다른 정렬의 최소 상한선은 $n^2$이고, 이는 $nlogn$보다 크다. 합병정렬은 시간적으로 빠르지만 단점도 존재한다. 합병 정렬은 더 많은 공간(메모리)을 사용한다. 8개의 자료가 있다고 하면, 세 번을 나눈다. $log28$은 3이다. 그리고 그 한번을 실행할 때마다 자료를 n번씩 봐야했기 때문에 $nlogn$으로 표현할 수 있다. 합병 정렬은 병합하는 알고리즘을 포함한다. 실행시간으로 표현을 한다면,..
edwith CS50강의를 보며 정리했습니다. 시간복잡도 앞서 배운 정렬을 진행할 때마다 시간이 소요되는데, 어떤 알고리즘을 수행하는 데 걸리는 시간을 시간복잡도라고 한다. 물리적인 시간이 아닌, 주어진 n개의 값을 활용하여 일반화한 복잡도를 의미한다. 일반적으로, 연산 횟수를 세며 이것이 측정 단위가 된다. 알고리즘을 수행할 때 걸리는 시간을 기준으로 효율성을 분석하는 것이다. 시간의 효율성이란 결국 알고리즘에서 비교와 교환 등이 일어날 때 연산자의 처리 횟수가 적다는 의미이며, 연산자의 처리 횟수가 적다는 건 시간의 복잡도가 낮다는 의미이다. 따라서 시간 복잡도가 낮을수록, 연산자의 사용 횟수가 적을수록 효율성이 높은 알고리즘이 된다. 예를 들어 버블 정렬이라면, 총 n개의 물체를 정렬할 때라고 가정..
edwith CS50강의를 보며 정리했습니다. 선형탐색 우리가 원하는 자료를 탐색할 때 사용되는 알고리즘 중 선형 탐색(linear search)은 자료를 찾을 때까지 모든 자료를 탐색해야 하는 방법이다. 선형(linear)이라는 단어의 뜻 그대로, 선의 모양처럼 일직선을 그대로 따라 탐색하는 방법이다. 만약 리스트의 길이가 n이라면, 가장 최악의 경우에는 가장 마지막에 찾고자 하는 숫자가 있을 때, n-1번만큼 자료를 탐색해야한다. 보통 어떠한 정보도 없거나 자료가 정렬되어 있지 않을 때 사용하는 방법이다. 보통 가장 왼쪽부터 오른쪽으로 하나씩 이동하며 탐색을 한다. 이런식의 무작위 탐색은 굉장히 비효율적이기 때문에, 탐색을 하기 전에 정렬이 필수적인 이유를 알 수 있다. 버블정렬 어릴 때 했던 게임 ..
reference : [도서] 쉽게 배우는 운영체제 https://velog.io/@mquat/OS-%EC%BB%B4%ED%93%A8%ED%84%B0-%EA%B5%AC%EC%A1%B0%EC%84%B1%EB%8A%A5 1.1 하드웨어의 구성 이전 포스팅에서도 언급했듯이, 컴퓨터는 중앙처리장치, 메모리, 입력장치, 출력장치, 저장장치로 구성된다. 메인메모리를 제2저장장치, 하드디스크나 USB를 제2저장장치(보조기억장치) 라고 부른다. 중앙처리장치는 CPU라고 한다. 1.1 CPU와 메모리 CPU는 인간의 두뇌와 같은 역할을 하는데, 명령어를 해석하여 실행하는 장치이다. 메모리는 프로그램과 데이터를 저장하는 곳으로, 바이트 단위로 분할되어 있다. 1.2 입출력장치 입력장치는 키보드, 마우스, 터치스크린 등이 ..
reference : [도서] 쉽게 배우는 운영체제 4.1 유닉스와 리눅스 4.1.1 유닉스의 개발과 확산 유닉스가 만들어진 1960년대에만 하더라도 컴퓨터의 기능은 계산기에 불과했다. 이에, 효율적으로 운영체제를 사용할 수 있도록 다양하게 시도하였고 다중 사용자, 다중 프로세서, 다중 프로세스 기반의 시스템으로 만들어진 것이 '유닉스'였다. AT&T에서 만든 유닉스의 철학은 '일관성과 단순함을 지향하는 운영체제'이다. 1970년대에 고안된 C언어는 어셈블리어로 번역하기 쉽고, 유닉스는 C언어로 다시 소스코드를 만들어 큰 인기를 끌었다. 이후 대부분의 컴퓨터 전공자들은 유닉스와 C언어를 배우게 되었다. 4.1.2 BSD 유닉스의 개발 캘리포니아대학교에서 유닉스 소스코드를 구입하여 수정했는데, 이 버전이 ..