DX Data School

1~4주차 복습

Kim J 2024. 1. 30. 09:28

사실 뭐 더 했다 sql도 쫌 했는데 강사님 교체 이슈로 인한 복습......... 틀린거 있으면 지적 바랍니다.

** 개요

1. Application <-> Program <-> Service

- 우리가 하고자 하는 일(복잡하거나 반복되는 일)을 컴퓨터가 할 수 있도록 만든 것

1) 컴퓨터

- 하드웨어와 소프트웨어로 분리

- 하드웨어는 실제 장비이고 소프트웨어는 실제 장비를 코드로 사용할 수 있도록 추상화 한 것

- 운영체제 : 하드웨어와 소프트웨어 사이의 인터페이스

- 하드웨어는 기계어 만 인식하고 운영체제는 대부분 어셈블러와 C 언어로 만듬

- 어셈블러: 어셈블리어를 기계어로 번역

- 유닉스 : C 언어로 만든 운영체제

- 리눅스 : C 언어로 만든 운영체제 깃에 올려놓고 공유

2) Web Browser에서 동작하는 언어

- HTML : 구조를 만드는 언어

앞에서부터 순서대로 읽어서 트리를 만들어서 공간을 확보한 후 컨텐츠를 나중에 주입하는 구조로 동작, 외부 자원을 가져올 때는 캐싱(저장해두는 것 - 목적은 빨리)을 이용 - 경로 기반

- CSS : 디자인

HTML 구조를 전부 읽고 난 후 출력할 때 적용

- Javascript + Typescript : 동작

태그와 함께 위에서부터 순서대로 읽으면서 동작(저장을 함)

3) 프레임워크, 라이브러리, 솔루션

- SDK(Sofrware Development Kit) / API(Application Programming Interface) :

프로그램을 만들 수 있도록 도와주는 도구

- 라이브러리 : 프로그램을 만드는 것에 도움을 주는 별도의 코드들의 모임

 

- 프레임워크 : 프로그램을 만드는 것에 도움을 주는 별도의 코드들의 모임 (프로그램 제작도 해주는 경우) 범용

- 솔루션 : 특정 목적이 있음 ( 타겟이 확실하다 )

4) 자바스크립트 프레임워크

- node.js : 자바스크립트가 브라우저 이외의 환경에서 동작하도록 해주는 플랫폼

- 크로스 브라우징 : 서로 다른 브라우저에서 동일한 컨텐츠를 제공하는 기술

이를 해결하기 위한 라이브러리 : jquery ( 최근에는 사용을 금기시 함 ) - 해결 됨 ( MS에서 스파르탄 프로젝트로 엣지 사용하면서)

- 반응형 웹 : 하나의 코드로 브라우저에 크기에 상관없이 동일한 컨텐츠를 사용할 수 있도록 하는 기술

반응형 웹을 쉽게 만들어주는 라이브러리 : bootstrap

- 그래프를 만들어주는 라이브러리 : d3js

- express.js, nest.js : 서버를 만들기 위한 프레임워크

- SPA(Single Page Application) : 하나의 페이지를 가지고 모든 컨텐츠를 제공

angular.js, vue.js, react.js > next.js

- ajax, fetch API : 외부에서 비동기적으로 데이터를 가져오는 기술

axios 라이브러리

- progressive web : 웹 과 앱의 경계가 무너지면서 웹 이나 앱의 디자인을 유사하게 하도록 하는 기술

구글의 머터리얼 디자인

2.Python

1) 인터프리터 설치

- 순수 파이썬 설치

- 아나콘다 or canopy와 같은 분석 라이브러리를 포함한 배포판 설치

2) 파이썬 애플리케이션 작성

- 코드를 작성

- 가상 환경을 만들어서 작성

가상 환경 : 별도의 파이썬 환경을 생성

애플리케이션을 만들다 보면 외부 라이브러리를 설치해서 만드는 경우가 있는데 이 경우 이 어플리케이션을 다른 곳에 가서 실행하려면 개발한 환경과 동일한 환경을 만들어야하고 외부 라이브러리도 전부 설치를 해야 하는데 이 때 가상 환경을 만들지 않으면 현재 컴퓨터에 있는 모든 라이브러리를 전부 가져가야 함.

가상 환경을 만들면 필요한 라이브러리만 별도로 다운로드 받아서 가져갈 수 있다.

ex)

A라이브러리

B라이브러리

C라이브러리 추가

D라이브러리 추가

1번 프로그램을 만들 때 C를 추가 : A, B, C

2번 프로그램을 만들 때 D를 추가 : A, B, D ( 2번이 필요할 경우 무쓸모 C까지 같이 줘야함 낭비 )

3번 프로그램을 만들 때 나만의 가상 환경(A, B 라이브러리 존재함)을 생성

A, B, X

X라이브러리 사용

- 파이썬 가상환경 만들기

디렉토리 안에서 python -m venv 가상환경 이름 (가상환경 생성 - 디렉토리가 만들어짐)

cd 가상환경 이름 : 가상환경 안으로 디렉토리 이동

- 가상환경 활성화

windows : 가상 환경 이름/Scripts/activate (비활성화 deactivate)

windows 이외 : source 가상 환경 이름/bin/activate

이제부터 pip로 설치하는 패키치는 가상환경 안에 설치되서 가상환경 안에서만 사용 가능

설치한 패키지 목록을 텍스트 파일로 내보내기 :

- pip freeze > 파일명 (관습적으로 requirements.txt)

다른 곳에서 패키지를 전부 설치 : pip install 파일명

cicd 무중단배포 애플리케이션 개발 단계를 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법

3. 객체 지향 프로그래밍

1) 함수형 프로그래밍과 객체 지향 프로그래밍

- 함수형 프로그래밍은 기능 단위로 작성하는 프로그래밍 방식 유사한 동작을 하는 함수들은 파일로 묶어서 구분

장점 : 일반적으로 속도가 빠르고 불필요한 내용을 포함하지 않는다.

(빅데이터 처리 분야에서 많이 사용)

- 객체 지향 프로그래밍은 유사한 동작을 하는 함수나 데이터를 하나로 묶어서 프로그래밍 하는 방식 유사한 동작을 하는 함수와 데이터를 클래스라는 템플릿으로 묶고 템플릿을 이용해서 인스턴스를 생성해 사용하는 방식으로 클래스도 하나의 인스턴스로 취급

** 클래스, 인스터스 생성 상속(클래스를 확장), 오버라이딩(기능추가)

2)객체 지향에서 중요한 3가지

- Encapsulation(캡슐화) : 클래스를 만들고 인스턴스를 만드는 것

- Inheritance(상속) : 상위 클래스의 모든 것을 하위 클래스가 물려 받는것

프레임워크에서는 대부분 제공되는 클래스의 기능을 확장시키기 위해서 상속을 수행

객체 지향 프로그래밍의 기본 원칙에서는 여러 하위 클래스에 공통으로 존재하는 기능을 상위 클래스로 올려보내는 것으로 간주 ( 상위 클래스 <<< 하위 클래스 )

- polymorphism(다형성) : 동일한 메세지에 대하여 다르게 반응하는 성질

동일한 코드가 인스턴스를 만든 클래스에 따라 각기 다른 메서드를 호출하는 것

상속과 오버라이딩으로 구현

3) 클래스와 인스턴스 만들기

- 클래스 만들기

class 클래스 이름:

내용 # 내용을 나중에 만드는 경우는 pass라고 적어도 됨

- 클래스 와 함수의 특징

클래스와 함수를 만들면 모두가 접근할 수 있는 영역에 생성되고 프로그램을 종료할 때 까지 소멸되지 않음.

- 인스턴스 만들기 : 메모리에 인스턴스를 생성하고 인스턴스의 참조(id)를 리턴

클래스이름(매개변수 나열...) 재활용 x - 추후 자동으로 메모리 정리 됨

참조변수 = 클래스이름(매개변수 나열) 재활용 o - 참조변수가 있는 한 메모리 정리 X

- 인스턴스를 생성하고 참조하는 데이터가 없다면 언제인지는 알 수 없지만 자동으로 메모리가 정리 됨

- 일반적으로 클래스의 이름은 대문자로 시작하고 Camel 표기법을 따름

- 클래스에 작성할 수 있는것

데이터(속성 - attribute)

클래스 속성 : 클래스 안에 데이터를 만들고 클래스와 인스턴스가 공동 사용하는 것

인스턴스 속성 : 인스턴스 안에 만들어서 인스턴스만 사용할 수 있는 것

클래스 안에서 변수를 만들면 클래스 속성이 됨

메서드 안에서 메서드의 첫번째 매개변수이름.속성 으로 만들면 인스턴스 속성

클래스나 인스턴스를 이용해 속성에 접근 할 때 내부에서는 이름만으로 가능,

외부에서는 클래스나 인스턴스 이름.속성으로 접근

기능(메서드)

클래스 안에 함수를 만들면 메서드(Method)

메서드의 종류

초기화 메서드(__init__) : 인스턴스를 만들 때 호출되는 메서드로 만들지 않아도 기전적으로 아무일도 하지 않는 초기화 메서드가 존재하며 다른 초기화 메서드를 만들면 이 메서드는 제거 됨, 다른 언어에서는 생성자(Constructor)라고 함.

클래스 메서드 / 스태틱 메서드 : 클래스 안에 특별한 decorator와 함께 만드는데 클래스와 인스턴스 모두 호출 가능한 메서드 ( 이 메서드는 인스턴스 속성을 만들 수 없고 소유할 수 없음 목적은 인스턴스 속성이 필요하지 않은 동작을 하고자 할 때 사용함.)

인스턴스 메서드 : 클래스 안에 만들어지는 함수로 무조건 1개의 매개변수(객체 자신의 참조)를 가지고 인스턴스만 호출할 수 있고 인스턴스 속성 생성이 가능함.

인스턴스 메서드 호출 방법

Bound 호출 : 인스턴스.메서드(매개변수 나열 -self 을 대입하지 않음)

Unbound 호출 : 클래스.메서드(인스턴스, self 제외한 매개변수 대입)

인스턴스 메서드 안에서 첫번째매개변수.속성이름 = 값의 형태로 만들면 인스턴스 속성이 만들어 짐.

이 속성은 인스턴스 이름으로 접근하고 인스턴스 마다 별도로 만들어 진다.

(함수의 기능에 Return이 있으면 원본을 변환해서 돌려줌 없으면 원본 데이터 자체를 변환시킴).

# 자동차를 표현하는 클래스
# 일반적으로 클래스 이름은 대문자로 시작하고 Camel 표기법을 따름
class Car:
    # 클래스 속성 - 클래스와 인스턴스 모두 접근 가능, 공유
    maker = "BMW"

    # 인스턴스 메서드 - 첫번째 매개변수는 인스턴스 자신의 참조(필수)
    def bmw3(self):
        print("인스턴스 메서드")

# Car 클래스의 인스턴스를 생성
car = Car()
# car = None 있을경우 여기서 메모리 정리 // 없을경우 print("hello") 가 마무리 될 때 메모리 정리

print(car.maker)
print(Car.maker)

Car.maker = "KIA" 
print(car.maker)
print(Car.maker)

# 메서드 호출
car.bmw3() # 바운드 호출 / 인스턴스.메서드()
Car.bmw3(car) # 언바운드 호출 / 클래스.메서드(인스턴스)

- 데이터 분류

mutable(variable) 과 immutable(constant + literal) :

mutable은 변경 가능한 데이터이고 immutable은 변경 불가능한 데이터

constant : 변수에 입력하는 데이터

literal : 직접 입력하는 데이터

scala data 와 vector data :

scala data 는 1개의 데이터이고 vectro data는 0개 이상의 데이터 모임

scala data는 참조 자체가 데이터이고 vectro data는 참조가 데이터의 시작 위치를 의미하고 인덱스나 키를 이용해서 접근한다.

인스턴스 : mutable 이면서 vector data

클래스 : immutable 이면서 vector data

정형 데이터 : 모양이 동일한 데이터, 테이블 형태의 데이터

비정형 데이터 : 모양이 일정하지 않은 데이터 ex) 텍스트와 음성 등

반정형 데이터 : 대부분의 경우 텍스트로 메타 데이터를 확인하면 정형 데이터로 변경 가능한 데이터

ex) csv, tsv, txt, json, xml, yaml 등

'DX Data School' 카테고리의 다른 글

Transaction 실습  (0) 2024.01.30
[SQL]DDL, DML, DCL, DQL, TCL 개념과 종류  (0) 2024.01.30
홈페이지 만들기  (1) 2024.01.30
HTML  (1) 2024.01.30
[LG 헬로비전 DX Data School 2기] 2일차  (1) 2023.12.26