웹의 기본 목적 : 한 컴퓨터에서 만든 문서를 다른 컴퓨터에서 쉽게 볼 수 있도록 하는 것


웹을 사용하기 위한 컴퓨터의 기능은 서버와 클라이언트로 나눈다.

 

웹 서버 : 문서/이미지/동영상 등 데이터 저장

 

웹 클라이언트 : 웹 서버로 부터 데이터 다운받아 사용자에게 보여주거나 사용자 데이터를 웹 서버에 업로드

 


 

 

여러 인터넷 서비스 중 하나로 문서를 컴퓨터에 올려놓고 인터넷을 통해 클라이언트 컴퓨터에서 읽거나 쉽게 주고 받을 수 있도록 만든 서비스

 

웹 브라우저 웹 서버에 접속해서 웹 페이지, 이밎, 동영상, 음악 등 다양한 데이터를 다운받아 보여주는 소프트웨어

 


<웹 서버와 웹사이트>

 

웹 사이트를 만드는 일은 웹 서버로 사용할 컴퓨터에 웹 서버 소프트웨어를 설치하고, 작성한 웹 페이지를 저장하고, 동영상, 이미지 등의 파일과 데이터베이스를 설치하는 것을 의미

 

웹 서버 소프트웨어 웹 브라우저로부터 요청을 해석하여 웹 문서를 전달하거나 적절한 웹 응용 프로그램을 작동시키고 실행 결과를 다시 전송하는 소프트웨어(HTTPd)

 

웹 서버 응용 프로그램 사용자에게 다양한 서비스를 제공하는 프로그램


<웹 페이지의 주소 url>

 

url의 각 구성요소

 

http://www.oracle.com:80/technetwork/java/index.html

 

1. 프로토콜 - http / https / file / ftp 등 서비스에 따라 달라진다

2. 서버주소 - 웹페이지를 가진 컴퓨터의 이름 혹은 인터넷 주소(IP)

3. TCP/IP 포트번호 - 서버가 브라우저로 부터 접속을 기다리는 TCP/IP 포트 번호, 프로토콜 마다 다르다(예시로 http 경우 80), 포트에 따라 서비스가 다르다. 웹서비스(http)는 80번 포트를 사용하며, 파일 전송(ftp)은 20번 포트.... 

4. 경로명 - 웹 서버 내 웹 페이지 파일의 폴더 경로

5.파일 이름 - 웹 페이지의 파일 이름

 

 


인터넷 4개의 숫자로 이루어진 IP 주소를 부여받고 이 주소로 서로 연결하는 통신의 기본 체계로 웹 탄생 이전부터 존재

Big-O 표기법?

-알고리즘 성능을 수학적으로 표기해주는 표기법

-알고리즘의 시간복잡도(필요한 시간)와 공간복잡도(필요한 메모리)를 표현할 수 있게 해줌

-알고리즘의 실제 러닝 타임을 표시한다기 보다 데이터나 사용자의 증가율에 따른 알고리즘의 성능 예측이 목표


 

Big-O의 시간복잡도 관련 표기법

  • O(1): 입력 크기에 관계없이 알고리즘의 수행 시간이 일정한 상수 시간을 가지는 것을 나타냅니다. (예: 배열에서 인덱스를 사용하여 특정 값을 찾는 경우)
  • O(log n): 입력 크기가 늘어날 때마다 수행 시간이 로그 함수의 증가율로 증가하는 것을 나타냅니다. (예: 이진 검색 알고리즘)
  • O(n): 입력 크기에 비례하여 알고리즘의 수행 시간이 증가하는 것을 나타냅니다. (예: 배열에서 최대값을 찾는 경우)
  • O(n log n): 입력 크기가 늘어날 때마다 수행 시간이 n과 로그 n의 곱으로 증가하는 것을 나타냅니다. (예: 병합 정렬 알고리즘)
  • O(n^2): 입력 크기의 제곱에 비례하여 알고리즘의 수행 시간이 증가하는 것을 나타냅니다. (예: 버블 정렬 알고리즘)
  • O(2^n): 입력 크기가 1 증가할 때마다 수행 시간이 2배

Big-O의 공간복잡도 관련 표기법

  • O(1): 알고리즘이 고정된 메모리 양을 사용하는 경우 (예: 상수 개수의 변수를 사용하는 경우)
  • O(n): 알고리즘이 입력 크기와 비례하는 메모리 양을 사용하는 경우 (예: 입력 배열을 저장하는 경우)
  • O(n^2): 알고리즘이 입력 크기의 제곱과 비례하는 메모리 양을 사용하는 경우 (예: 2차원 배열을 사용하는 경우)
  • O(log n): 알고리즘이 입력 크기에 로그 함수의 증가율과 비례하는 메모리 양을 사용하는 경우 (예: 이진 트리를 사용하는 경우)

그러나 실제로는 Big-O를 사용하여 알고리즘의 성능을 평가하기보다는 실제로 알고리즘을 실행하여 성능을 측정하는 것이 더욱 정확하다.

 


로그 함수는 어떤 수를 다른 수의 거듭제곱으로 나타내는 함수입니다. 예를 들어, 2를 몇 번 거듭제곱해야 8이 되는지를 구할 때, log₂ 8을 계산하면 됩니다. 이 때, 밑이 2인 로그 함수를 사용한 것입니다.

'Computer Science' 카테고리의 다른 글

스택(Stack)과 큐(Queue)  (0) 2023.04.28

리눅스를 사용하는 이유?

프로그래밍을 하고 서비스를 운영할 때 리눅스로 돌아가는 서버를 다뤄야 할 때 

 

리눅스가 많이 사용되는 이유?

윈도우나 안드로이드 같은 운영체제는 개발자가 아닌 일반 사용자가 쓰기 좋게 만들어진 그래픽 유저 인터페이스(GUI)로 사용자가 마우스로 클릭할 수 있게 만들어져 있다. 리눅스는 커맨드 라인 인터페이스(CLI)로 개발자들이 직접 프로그래밍을 하는 데 적합하다.

리눅스는 오픈소스 운영체제로 설계도와 코드를 자유로이 사용할 수 있고 어떤 버전을 사용할 지 정하는 게 중요하다. 

우분투가 가장 대표적인 버전이므로 웬만하면 이 버전을 사용할 것.

 

리눅스의 커널

OS의 기본 기능을 실행하는 부분을 말한다. 응용프로그램이나 주변장치나 조작 감시, 디스크나 메모리 등을 자원 배분, 응용 프로그램의 실행 등과 같은 처리를 실행.

 

리눅스를 사용할 수 있는 방법

1. 가상머신 소프트웨어 VirtualBox : https://www.virtualbox.org/wiki/Downloads

2. 온라인 IDE/터미널

3. 윈도우 10의 WSL - windows server system for linux, 윈도우즈에 리눅스 깔아 쓰는데 완전한 리눅스는 아니고 '리눅스 호환 시스템'임

4. 컴퓨터 운영 체제 리눅스로 바꾸기

5. 클라우드 가상머신에 만들기

 

(저는 클라우드 가상머신을 이용해서 리눅스를 이용할 계획입니다.)

 

UBUNTU 버전 선택

LTS (Long Term Support)가 붙은 버전을 선택해야 오랫동안 보증된다 = 내가 짠 프로그램이 오랜 기간 보장된다

 

 


오늘의 리눅스 명령어

 

ls       현재 위치에 있는 디렉토리와 파일들을 보여준다
ls -a    현재 위치에 있는 숨겨진 디렉토리와 파일까지도 보여준다
/tmp     "/tmp" 디렉토리는 일시적인 파일을 저장하기 위한 디렉토리로 동적으로 생성될 수 있다
date     날짜와 시간 출력
clear    화면 지우기
man      명령 사용 방법을 화면에 출력
passwd   사용자 계정의 명령어를 바꾼다

 

 

'Linux' 카테고리의 다른 글

Docker(4) vi 에디터를 이용해서 docker 만들기  (0) 2023.05.02
Docker(3) vi editor 기본  (0) 2023.05.01
Docker(2) 설치 및 기본 사용, vi 편집  (0) 2023.05.01
Docker(1)  (0) 2023.05.01
리눅스의 셸, 파일 디렉토리  (1) 2023.04.28

문제출처

https://school.programmers.co.kr/learn/challenges?order=recent&levels=0&page=1

 


문제

<문제 설명>
문자열 str이 주어질 때, str을 출력하는 코드를 작성해 보세요.


<제한사항>
1 ≤ str의 길이 ≤ 1,000,000
str에는 공백이 없으며, 첫째 줄에 한 줄로만 주어집니다.


<입출력 예>

입력 #1
HelloWorld!

출력 #1

HelloWorld!

 

초반에 생각했던 답

 

str = input("HelloWorld!")
letter_count = len(str)

if 1 <= letter_count <= 1000000:   
    pass

# 그러나 입력값에 미리 출력되야하는 문구를 넣은 상태이기 때문에 조건을 맞추면 pass해야된다는 이상한 조건식이 나옴.

 

 

수정한 답

str = input()

if 1 <= len(str) <= 1000000:
    print(str)
else :
    pass

# 입력값을 비워주고 조건식을 맞추면 입력값이 출력되도록 바꿔주었다.

 


오늘의 python 

 

input() : 사용자로 부터 입력받는다

len() : 괄호 안에 들어간 객체의 길이를 반환

if (조건) : 조건에 맞으면 실행

pass : 아무 동작하지 않는다

 break는 while 또는 for문에서 루프를 중지하는 역할, 헷갈리지 말 것!

coursera의 Supervised Machine Learning: Regression and Classification 강좌 내용입니다.


Jupyter Notebooks

데이터 사이언티스트 실무와 머신 러닝에서 가장 널리 쓰이는 툴.

Jupyter Notebooks에는 두 종류의 셀(cell)이 존재

 

1. Markdown cell : text 작성을 해서 코드를 설명

2. code cell : 셀제로 코드를 입력하는 창, 쉬프트+엔터로 코드를 실행한다.

'machine_learning > [coursera] Machine learning' 카테고리의 다른 글

Linear regression model part 2  (0) 2023.04.29
Linear regression model part 1  (0) 2023.04.29
Unsupervised learning part 2  (0) 2023.04.27
Unsupervised learning part 1  (0) 2023.04.27
Supervised learning part 2  (0) 2023.04.27

coursera의 Supervised Machine Learning: Regression and Classification 강좌 내용입니다.


 

비지도 학습

input x가 필요하지만 label y는 사용하지 않는다.

알고리즘은 데이터에서 구조를 찾는다.

 

비지도 학습 -  clustering(군집)

비슷한 데이터끼리 그룹핑한다.

 

비지도 학습 -  Anomaly detection(변칙 처리)

비정상적인 데이터(움직임)을 감지

 

비지도 학습 -  Dimensionality reduction(차원의 축소)

데이터를 더 적은 수로 압축시킨다.

 

 

Q. Of the following examples, which would you address using an unsupervised learning algorithm?  (Check all that apply.)

 

1. Given a set of news articles found on the web, group them into sets of articles about the same stories.

2.

Given email labeled as spam/not spam, learn a spam filter.

3. Given a database of customer data, automatically discover market segments and group customers into different market segments.

4. Given a dataset of patients diagnosed as either having diabetes or not, learn to classify new patients as having diabetes or not.

 

'machine_learning > [coursera] Machine learning' 카테고리의 다른 글

Linear regression model part 1  (0) 2023.04.29
Jupyter Notebooks  (0) 2023.04.27
Unsupervised learning part 1  (0) 2023.04.27
Supervised learning part 2  (0) 2023.04.27
Supervised learning part 1  (0) 2023.04.27

+ Recent posts