CS 50 2019: C
이미 알고 있는 내용이 대부분이라 필기가 거의 없었다.

 

'study > CS50 (2019)' 카테고리의 다른 글

CS 50: Data Structures  (0) 2020.02.26
CS 50: memory  (0) 2020.02.26
CS 50: Algorithm  (0) 2020.02.20
CS 50: Array  (0) 2020.02.19
CS 50: Computational Thinking, Scratch  (0) 2020.02.17

파이썬과 c, c++을 이미 알고 있다면 거의 대부분의 명령어가 이미 익숙할 것이다.
강의 들으면서 좀 다른 부분들을 정리했다.

'AI, 빅데이터 > R programming' 카테고리의 다른 글

Ubuntu 18.04에 R 설치하기  (0) 2020.02.17

CS 50 2019: Computational Thinking, Scratch

'study > CS50 (2019)' 카테고리의 다른 글

CS 50: Data Structures  (0) 2020.02.26
CS 50: memory  (0) 2020.02.26
CS 50: Algorithm  (0) 2020.02.20
CS 50: Array  (0) 2020.02.19
CS 50: C  (0) 2020.02.18

CS 377 Spring ‘14 Operating System

전체적인 Course의 Out line은 다음과 같다.

  • Course Outline & Topics
    1. Process and Threads
    2. Memory Management
    3. Storage and File Systems
    4. Distributed Systems

Lecture 01. Introductions


Operating System의 정의

User와 Arichitecture 사이의 인터페이스 또는 Raw hardware보다 프로그래밍하기 쉬운 가상 머신

 

Operating System

 

 즉, User와 Architecture 사이에서 architecture의 detail은 감추면서 동시에 보다 프로그래밍이 간편하게 만들어 주는 것이 Operating System이다.


Operating System의 특징

  • Services: OS는 표준 서비스를 제공해야 한다.
    – Examples: the file system, virtual memory, networking, CPU scheduling, and time-sharing
  • Coordination: OS는 여러 응용 프로그램과 사용자의 조절을 통해 공정성과 효율성을 갖춰야 한다.
    – Examples: concurrency, memory protection, networking, and security.
  • Goal: 기계가 사용하기 편리하고 효율적이게 OS를 설계해야 한다.

Operating System의 역사

  1. Sigle-User Computers : hardware의 가격은 비싸고, 인건비는 비교적 저렴했다. 컴퓨터는 한 번에 하나의 함수밖에 실행할 수 없었기 때문에 Overlap이 없었다. User는 Console에서만 Debugging을 할 수 있었다.
  2. Batch Processing : 다양한 업무를 일괄적으로 처리하였다. (Scheduling은 당연히 인간이 해야했다.)
  3. Overlap I/O and Computation : 비교적 새로운 방식이 적용되었다. Output 이전에 buffer 단계를 추가하였고, I/O event의 경우, interrupt를 통해 처리할 수 있게 만들었다. 그러나 여전히 한 번에 하나의 업무만 수행할 수 있었다.
  4. Multiprogramming : 몇 개의 프로그램이 동시에 수행가능하게 되었다. 또한, scheduling이 OS에 의해 수행되었다.

점차 functionality와 complexity가 증가하였고, OS design에서 complexity를 다루는 것이 중요해졌다. 그리고 이 후, 70년대로 들어서면서 Renaissance를 맞이하게 된다.

  • The Renaissance (1970's) : hardware의 가격이 저렴해지고, 인건비가 더 비싸졌다. User는 terminal을 통해 system을 공유하였다. 또한 대부분의 현대적인 OS의 원형이 된 UNIX가 출시되었다. Multics가 그 기원으로, Shell을 통해 사용자 인터페이스를 제공하였다. 그러나 response time과 thrashing(; 메모리 영역에 접근할 때, 메모리에 page fault가 높은 것) 문제가 있었다.
  • Industrial Revolution (1980's) : hardware의 가격이 매우 저렴해졌다. PC의 사용이 늘어났다. (1981년 IBM PC, 1984년 Macintosh) DOS, MacOS 등 비교적 단순한 OS가 출현하였고, GUI가 추가되었다.
  • The Modern Era (1990's - now) : 요구되는 processing이 더욱 증가하였고, 실질적인 OS가 개발되었다. 다양한 조건에 맞춘 OS가 출시되었다.

 

 

 

'study > CS377 (2014)' 카테고리의 다른 글

CS377: Threads  (0) 2020.03.11
CS377: Scheduling Algorithms  (0) 2020.03.11
CS 377: Processes  (0) 2020.03.11
CS377: Operating System Structures  (0) 2020.03.11
CS377: OS and Architecture  (0) 2020.03.10

최근에 ADsP 자격증 시험에 관심이 생겨서 R programming을 공부하는 중이다.

https://www.inflearn.com/course/R-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EA%B8%B0%EC%B4%88#

불러오는 중입니다...

참고한 강의는 다음과 같다.

 

 

요즘에는 거의 Ubuntu 18.04에서만 작업을 하고, 가끔 개인 노트북으로 작업할 때만 윈도우를 쓰기 때문에 그냥 Ubuntu에 R을 설치했다. 설치하는 방법은 간단하다.

 

CRAN에서 제공하는 외부 repository를 통해 추가해야 한다. 따라서 우선 GPG(Gnu Privacy Guard) key를 설치한다.

> sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9

 

한 번 key를 입력하면 repository를 추가할 수 있다.

> sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/'

package 추가하기 전에 update를 한 번 해주자.

> sudo apt update

 

이제 R을 설치한다.

> sudo apt install r-base

Y를 한 번 해주면 이제 잘 설치가 되었을 것이다.

 

R을 실행하려면 다음과 같이 입력하면 된다.

> sudo -i R

 

참고한 블로그는 다음과 같다.

https://www.digitalocean.com/community/tutorials/how-to-install-r-on-ubuntu-18-04#step-1-%E2%80%94-installing-r

 

How To Install R on Ubuntu 18.04 | DigitalOcean

R is an open-source programming language that specializes in statistical computing and graphics. In this tutorial, we will install R and show how to add packages from the official Comprehensive R Archive Network (CRAN).

www.digitalocean.com

 

'AI, 빅데이터 > R programming' 카테고리의 다른 글

R programming 기본  (0) 2020.02.17

오늘은 TensorFlow를 설치해보도록 하겠습니다.

TensorFlow란 구글에서 제공하는 open source 라이브러리 입니다. Python이라는 언어를 가지고 data flow graph를 활용하여 수학적인 계산을 할 수 있습니다.

 

https://namu.wiki/w/%ED%85%90%EC%84%9C%ED%94%8C%EB%A1%9C%EC%9A%B0

 

텐서플로우 - 나무위키

텐서플로우는 다음과 같은 특징을 가진다. 데이터 플로우 그래프를 통한 풍부한 표현력아이디어 테스트에서 서비스 단계까지 이용 가능계산 구조와 목표 함수만 정의하면 자동으로 미분 계산을 처리 케라스(Keras)는 TensorFlow, Theano, CNTK 등 딥 러닝 라이브러리를 포함하고 있어 쉽게 다층 퍼셉트론 신경망 모델, 컨볼루션 신경망 모델, 순환 신경망 모델, 조합 모델 등을 구성할 수 있다. 텐서플로우 2.0은 대부분의 신경망 구현을 케라스로 하

namu.wiki

 

 여기서 data flow graph란 node에서 계산이 이루어지고 edge가 data를 의미하는 그래프를 말합니다.

설치는 굉장히 간단합니다!

 

pip install --upgrade tensorflow 

 

명령어를 통해서 설치가 가능합니다.

굉장히 간단 ..

 

사실 지금까지 C++을 주 언어로 사용하고 있었다.

그러나 최근 딥러닝을 공부하면서 파이썬을 공부하고 있다!

자료형에서부터 차이가 좀 있었는데, List나 dictionary가 대표적인 것 같다.

 

그럼 List부터 알아보자.

(실행 환경은 Jupyter notebook이었다)

 

우선 List의 정의는 다음과 같다.

List "여러 정보를 하나로 묶어서 저장하고 관리할 수 있게 하는 데이터 구조"

C++에서 Array와 유사한 점이 많은데 선언은 다음과 같이 할 수 있다.

List의 선언

대괄호 안에 , 로 구분하여 값을 입력해주면 된다. List는 문자열, 숫자 등을 원소로 가질 수 있으며 C에서 처럼 자료형을 굳이 명시해주지 않아도 자동으로 자료형을 스스로 인지해준다.

List안의 원소에는 Array와 비슷하게 index로 접근이 가능하다.

 

C++와 다른 독특한 점은 in 과 not in으로 요소가 있는지 없는지 확인이 가능하다는 점이다.

예를 들어 fruit이라는 List안에 apple, banana, orange등의 요소가 있을 때, 다음과 같이 확인이 가능하다.

List 내부 요소 확인

 

List를 순회하는 방법에서도 C++와 차이가 있다. C++에서는 변수를 하나 지정하여 index를 바꿔가면서 참조하는 방식을 사용했다면 Python에서는 다음과 같은 방법으로 List를 순회한다. (물론 index를 사용해서 참조하는 방법 또한 가능하다!)

List의 순회

 

List에서 사용 가능한 함수는 다음 문서를 참조하면 좋다!

http://python-ds.com/python-3-list-methods

 

Python 3 List Methods & Functions

Python 3 List Methods & Functions List of list methods and functions available in Python 3. List Methods Method Description Examples append(x) Adds an item (x) to the end of the list. This is equivalent to a[len(a):] = [x]. a = ["bee", "moth"] print(a) a.a

python-ds.com

 

출력해주는 코드부터 바로 보여주자면 다음과 같다.

 

 

코드를 하나 하나 설명하자면 다음과 같다. 큰 컨테이너 안에 만약 load가 완료되었다면 Weather을 출력해준다. 그렇지 않다면 그렇지 않은 동안 로딩 화면 출력. 이 때 가져오는 온도 값이 켈빈 값이라서 도씨로 바꿔주었다. 만약 위치를 가져오는데서 에러가 났다면 로딩 화면 바닥에 왜 에러가 났는지, 에러 텍스트를 출력해주게 된다.

 

그렇다면 이제 날씨 정보와 온도를 가져왔으니 가져온 변수를 넣어줘야 한다!!

 

참고!

 

날씨 경우의 수는 다음과 같이 뒀다. Rain, Clear, Thunderstorm, clouds, snow, drizzle! 그리고 바꿔준 Weather function은 다음과 같다.

 

 

달라진 부분이라면 weathername과 temp로 변수를 가져온다는거?! 근데 거의 달라진 점없음!! 이렇게 하면 완전완전 끝난거다. 완성된 화면은.. 앞에서 보여줬던 화면과 다를바가 없다... ㅋㅋㅋㅋㅋㅋㅋ 여튼 또 하나 어플리케이션을 완성하였다 ㅎㅎ 뿌듯뿌듯!0!

+ Recent posts