[노마드북클럽/IT 5분 잡학사전] #13_TIL

2023. 1. 25. 11:35STUDY/BOOK

728x90
반응형

#DAY13  : 에피소드 39 ~ 45

TIL (Today I Learned) 날짜

: 2022.01.25(수)

 

오늘 읽은 범위 :

✔️ 에피소드 39~45

 

오늘 TIL 7줄 요악

  • 현재 인공지능 기술과 머신러닝&딥러닝의 차이
  • REST API를 사용하는 이유
  • 도커가 필요한 이유
  • 암호화폐 알아보기
  • 앱 만드는 여러가지 방법
  • NFT가 뭘까요?
  • 사이버 무기 - 멀웨어, 바이러스, 웜 

 책에서 기억하고 싶은 내용을 써보세요.

 

 

39. [인공지능, 머신러닝, 딥러닝, 아직도 구분하기 힘들다고?]

인공지능에도 급이 있다 ?

✔️  일반 인공지능 - 사람처럼 행동하는 인공지능

인간의 행동을 대부분 할 수 있거나, 인간보다 능력이 더 뛰어났을 때를 말한다. (현실에는 없다. 지금 기술로는 일반 인공지능 만들 수 없다.)

 

✔️  좁은 인공지능 - 한 가지만 잘하는 인공지능

한정된 영역에서만 동작한다는 특징이 있다. (현재 인공지능 기술의 위치는 여기)

ex) 페이스북 얼굴 인식 기능, 애플 시리 음성 인식 기술

 

✔️  머신러닝은 인공지능을 학습시키는 방법

사람 입장에서는 기계를 학습시켜야 인공지능이 만들어진다.

기계를 직접 가르칠 수도 있고, 알아서 배우게 할 수도 있다.

지도 학습 / 비지도 학습

 

ex) 음식 사진을 찍었을 때 핫도그인지 아닌지 판별하는 앱이 있다고 가정하자.

✔️  지도 학습으로 핫도그 판별 인공지능 만들기

  • 소시지가 있다.
  • 형태가 길쭉하다.
  • 보통 소스가 뿌려져 있다.

이러한 특징을 머신러닝에서는 라벨이라고 한다. 이 라벨을 토대로 기계에게 핫도그가 무엇인지를 여러 예를 통해 학습시킨다.

이렇게 기계 자율로 판단하지 않고 인간이 기계에게 준 라벨을 토대로 학습해서 대답하는 것!

 

✔️  비지도 학습으로 핫도그 판별 인공지능 만들기

기계에게 정답을 미리 알려 주지 않고 그냥 핫도그 사진만 수만 장 주는 것이다. 기계는 스스로 어떤 게 핫도그인지 알아차린다.

 

✔️  머신러닝의 하위 개념, 딥러닝

딥러닝은 엄청나게 많은 층으로 구성되어 있는 머신러닝의 한 종류이다.

딥러닝을 대표하는 알고리즘 - 뉴럴 네트워크

 

 

40. [REST API라니, 휴식 API인가? 이게 대체 뭐죠?]

REST = representational state transfer

REST API는 어떤 설계 규칙이다. REST방식으로 설계한 API를 말하는 것일 뿐이다.

 

✔️  영화 REST API를 만드는 과정으로 이해하는 REST API

영화 정보를 저장하고, 읽어 들이고, 수정하고, 삭제하는 영화 API를 만든다고 가정해보자.

  • 영화 정보 생성: /createMovie
  • 모든 영화 정보 조회: /seeMovies
  • 특정 영화 정보 조회(영화 <인셉션>): /getMovie/inception
  • 특정 영화 정보 삭제(영화 <인셉션>): /deleteMovie/inception
  • 특정 영화 정보 수정(영화 <인셉션>): /editMovie/inception

이 URL에는 패턴이 없다는 문제가 있다. 

모든 영화 정보 조회, 특정 영화 정보 조회 둘다 영화 정보를 읽는 기능을 하는데 단어는 see, get으로 다르다.

단어를 혼용하면 무슨 문제가 되냐? -> 이렇게 설계된 API를 백엔드, 프런트엔드 작업을 하게 되는데 어떤 사람이 getMovie를 seeMovie로 입력했다면? 결과는 끔찍.

 

✔️  URL에서 동사 제외하기

동사를 삭제하자!

  • 모든 영화 정보 조회: /movies
  • 특정 영화 정보 조회: /movies/inception

그럼 데이터 삭제 같은 녀석은 어떻게 URL을 만들어야할까?

 

✔️  HTTP 메서드 도입하기

HTTP 메서드란 웹 기술을 뜻하는데, 같은 URL로 백엔드에서 다른 처리를 할 수 있도록 일종의 갈림길을 만들어 주는 녀석이다.

대표적으로 GET, POST, PUT, DELETE가 있다.

  • GET(조회) /movies/inception
  • POST(생성) /movies/inception
  • PUT(수정) /movies/inception
  • DELETE(삭제) /movies/inception

"나는 GET방식으로 API를 요청하겠다"라고 하면, 백엔드에서는 데이터를 조회하는 작업을 진행한다.

4가지 메서드를 다 사용할 필요는 없다. 영화 정보를 전부 삭제하거나 수정하진 않으니까!

동사를 사용하지 않아 얻는 장점은? -> URL이 단순하게 바뀐다. URL 1개로 영화 정보의 조회, 생성, 수정, 삭제를 할 수 있다.

ex) <인셉션> 배우 정보를 조회하는 API를 설계하면?

  • GET/movies/inception/actors

 

✔️  쿼리 도입하기

평점 9.8점 영화를 조회하려면 어떻게 설계해야 할까?

  • GET/movies?min+rating=9.8
  • GET/movies?release_date=2022

 

 

41. [도커가 뭐지? 왜 필요할까?]

✔️  도커란?

도커는 어떤 컴퓨터에서도 같은 개발 환경을 준비할 수 있도록 해주는 도구

운영체제가 서로 다른 상황을 도커가 어떻게 해결할까?

먼저, 윈도우와 서버에 도커를 설치하고, 도커 파일을 생성한다.

 

- 도커 파일에 적혀 있는 환경 목록

  • 우분투 12 버전
  • 파이썬 3.10 버전
  • (생략)

이렇게 도커 파일을 완성하고 컴퓨터(윈도우)와 서버(리눅스)에 전달하면 도커는 자동으로 그 파일을 확인하여 필요한 것을 내려받아서 설치한다.

도커가 준비한 프로그래밍 언어가 동작하는 환경 = 컨테이너

만약 내 컴퓨터에서 여러 프로그램을 개발하고 있다면 개발 환경도 여러 종류가 필요하다. 도커는 그것들을 컨테이너로 나누어서 관리할 수 있어서 개발 환경 준비를 편리하게 만들어 준다.

 

✔️  컨테이너 개념

도커 컨테이너는 서로 분리되어 있고 독립적이라서 컴퓨터 하나에 수많은 컨테이너가 있을 수 있다.

컴테이너를 미리 분리해서 관리하면 개발 환경이 갑작스럽게 변해도 쉽게 대처할 수 있다.

ex) 자바 애플리케이션의 인기가 갑자기 올라서 사용량이 증가하면 자바 컨테이너의 수를 늘리기만 하면 된다. 반대로, 사용량이 감소하면 컨테이너 수를 줄이면 된다.

 

 

42. [암호화폐의 진실]

암호화폐는 정부가 규제할 수 없다.

✔️  암호화폐를 없앨 수 있을까?

비트코인은 네트워크라서 없애 버리려면 세상의 모든 인터넷을 꺼야해서 불가능하다. 거래소를 통제하는 간접적인 방법으로 규제할 수는 있다. 암호화폐를 산 이후에는? 정부가 할 수 있는 건 거의 없다. 

 

✔️  암호화폐의 익명성과 책임의 균형

암호화폐는 사용한 사람을 은행 자체로 만든다. 스스로 관리 책임을 완벽하게 질 수 있는지 고려해야 한다.

 

✔️  암호화폐 개인 정보 보호 문제

암호화폐 세상에는 모든 정보가 공개된다. 

 

✔️  암호화폐로 사기를 당하지 않으려면?

1. 모든 코인에 가치가 있는 건 아니다.

2. 암호화폐에 대해 수식어를 남발하는 사람은 거르자. -> ex) 복잡하고 어렵게 표현한 사이트는 피하는 게 좋다.

3. 코인, 커뮤니티 등 진짜 정보를 살펴라

  • 코드의 마지막 업데이트 날짜는 언제인가?
  • 커뮤니티에 얼마나 많은 사람이 참여했는가?
  • 커뮤니티에서 가격 이야기만 떠들고 있는가?

4. 탈중앙화된 코인인지 살펴라 -> "탈중앙화"된 코인은 만든 곳에서 언제든지 마음대로 할 수 있다. 매우 위험한 코인!

5. 이론상 안전한 코인을 골라라 -> 스테이블 코인은 다른 자산에 코인 가치가 연결되어 있어서 가격 변동이 거의 없다. 

 

 

43. [하이브리드...앱? 뭐라고요?]

✔️  하이브리드 앱

웹 사이트를 보여주는 웹 뷰를 말한다. 웹 뷰로 만든 앱을 웹 앱이라고 한다.

HTML, CSS, 자바스크립트로 개발한 웹 앱을 iOS에서도 안드로이드에서도 쓸 수 있도록 하이브리드로 만들어 앱을 판매하는 구글 플레이스토어나 앱 스토어에 보낸다.

장점 - HTML, CSS, 자바스크립트만 알아도 충분히 개발할 수 있다.

단점 - UI를 하나하나 짜야 한다. 스마트폰의 고급 하드웨어 기능을 활용하기 어렵다. ex) 비디오 프로세싱 같은 작업

 

✔️  크로스 플랫폼 앱

특정한 언어로 코딩하면 된다. 나중에 iOS, 안드로이드가 이해할 수 있는 코드로 변환해서 만든다.

리액트 네이티브 기술을 사용하면 리액트에서 이해할 수 있는 방식으로 코딩하고, 자바스크립트 코드로 변환된다. 그 변환된 코드를 iOS, 안드로이드가 자바스크립트 엔진으로 실행한다. 

플러터라는 기술도 있는데 다트라는 언어로 코딩하면 된다. 이 코드는 결국 C언어나 C++언어로 변환된다.

장점 - 코드를 한 번만 작성해도 iOS, 안드로이드 두 환경에서 실행할 수 있다.

단점 - 네이티브 언어를 변환하는 과정이 있어서 성능에 조금 문제가 있다. 네이티브 앱의 성능 아직 따라가지 못한다.

 

✔️  네이티브 앱

iOS, 안드로이드만을 위한 언어로 코드를 작성하여 개발한 것이다. 

iOS는 스위프트 언어, 안드로이드는 자바나 코틀린 언어를 사용한다.

장점 - 스마트폰 성능 최대한 사용할 수 있다.

단점 - iOS, 안드로이드를 위한 언어를 몽땅 배워야 한다. 유지보수도 따로 해야한다.

 

 

44. [NFT가 도대체 뭐길래?]

✔️  NFT란?

non fungible token의 줄임말로 대체 불가능한 토큰을 말한다.

내가 1달러를 가지고 있고, 상대방도 1달러를 가지고 있다고 하자. 그러면 서로 1달러를 교환할 수 있다. 이것이 대체할 수 있다는 개념이다. 

"대체 불가능하다"는 무슨 뜻? -> 땅, 한정판 신발, 전세 계약 같은 것들을 말한다.

 

✔️  토큰의 의미

토큰은 이더리움(Ethereum)과 같은 블록체인으로 발행한다. 토큰에는 2가지 핵심 기능인 "돈을 받는 기능"과 "돈을 받고 토큰을 보내 주는 기능"이 있다. 그것을 합쳐서 스마트 계약이라고 한다. 토큰을 잘 활용한 예가 코인이다. 

내가 코인을 발행한다면? 코인 계약을 만들면 된다. 코인 계약에는 다음 기능이 포함된다.

  • 누군가 나에게 달러를 주면, 그것을 받는다.
  • 달러를 받고, 내 코인을 보내 준다.

코인은 여러 개 있을 수 있어서 화폐처럼 쓰인다. 여기서 토큰을 딱 1개만 발행할 수 있도록 스마트 계약을 만들면 어떻게 될까? 그리고 그 안에 이미지를 넣는다. 이미지 외에 영상, 노래, 전세 계약서 등을 넣을 수도 있다. NFT가 이렇게 탄생하는 것이다.

 

✔️ NFT 그림은 왜 그렇게 비쌀까?

유일한 원본, 진짜라는 사실이 가치를 높여 주는 것이다. 유일한 원본임을 증명하는 기술이 바로 "NFT"이다. 

트위터 역사의 시작을 알린 첫번째 트윗은 NFT에 담긴 채로 32억에 팔렸다. NFT는 인터넷 세상에서 재산권을 증명하는 기술이 될 것이다.

 

 

45. [멀웨어, 바이러스, 웜 개념 몽땅 정리]

✔️ 뭘웨어가 뭐지?

뭘웨어(malware)는 malicious(악의 있는) + software의 합성어이다.

악성 소프트웨어인데 컴퓨터를 감시하거나 파괴하는 것을 말한다. 이런 사이버 무기는 국가나 특정 기관에서 만들어 사용한다. 다른 국가의 핵심 시설이나 인프라를 감시하거나 파괴하려고 제작한다.

뭘웨어 중에서도 바이러스와 웜이 가장 많이 알려졌다.

 

✔️ 숙주가 필요한 바이러스

바이러스와 웜은 복제되어 전파된다. 어떤 파일을 내려받아서 열 때 감염되었다면 그 파일이 숙주이다. 바이러스는 그 파일 안에 들어 있다.

 

✔️ 숙주가 필요없는 웜

웜은 자기 자신을 복제하면서 전파되기 때문에 숙주가 필요하지 않다. 그냥 USB를 통해서도 전파할 수 있다. 위에서 말했던 사이버 무기가 바로 웜이다.

 

✔️ 웜은 컴퓨터를 어떻게 파괴시킬까?

웜은 미사일과 페이로드가 필요하다. 웜은 미사일을 통해 컴퓨터 안에 침투하고, 그 순간 페이로드를 배포하는 방식으로 컴퓨터를 파괴시킨다. 웜이 이동하는 가장 흔한 시나리오는 감염된 컴퓨터에 있다가 USB 같은 저장 장치와 연결되면 이것을 타고 다른 컴퓨터에 침투한다. 

 

- USB를 통해 웜이 침투해서 얻은 컴퓨터 정보와 보내는 곳

  • 본부 주소: mypremiumfootball.com, todaysfootball.com
  • 본부로 보낸 정보: "이 컴퓨터의 IP 주소는 132.111.123.123이고, 와이파이, 운영체제 정보는 무엇무엇입니다.

이 녀석이 더 위험한 이유는 컴퓨터의 루트에 설치되기 때문이다. 컴퓨터 보안 구조는 아래와 같이 양파처럼 여러 겹으로 되어있다.

출처- 위키백과

바깥쪽부터 애플리케이션 링, 드라이버 보안 링 등인데 두께가 매우 두껍다. 가장 깊은 곳에는 중앙 보안 링이 있는데 바로 여기에 운영체제가 있다. 웜은 바로 이곳에 설치된다. 컴퓨터의 모든 자원을 관리하는 바로 옆자리에😯 -> 이 말은 웜이 백신 프로그램보다 우위에 있다는 것을 의미하여 백신 프로그램 위에서 어떤 녀석을 감시하는지도 볼 수 있다는 의미이다.

 

✔️ 제로 데이 - 아무도 발견하지 못한 프로그램의 취약점

지금 소개하는 스턱스넷이라는 웜은 제로 데이를 무려 4개나 가지고 있었다. 

 

✔️ 스턱스넷 

운영체제와 컴퓨터 부품(모니터, 키보드 등)을 연결하려면 컴퓨터 드라이브가 꼭 필요한 프로그램인데 이 녀석은 리얼텍(Realtek)이라는 대만 회사의 인증 자료로 컴퓨터 드라이버까지 설치했다. 이런 중요한 자료는 에어갭 컴퓨터(인터넷에 절대로 연결하지 않는 컴퓨터)에 저장하는데 이렇게 보관한 자료도 훔쳐서 웜을 만든 것이다. 

 

스턱스넷은 컴퓨터를 감염시킨 다음 아무 일도 하지 않았다. 왜냐하면 이 웜은 공격을 시작할 때 특별한 발동 조건이 있기 때문이다.

스턱스넷은 감연된 컴퓨터가 WinCC라는 프로그램을 실행하면 페이로드를 배포해서 공격을 시작하도록 설계되어 있었다. 

WinCC는 PLC(programmable logic controller)라는 것을 관리하는데 산업 현장에 있는 기계들을 감시하거나 제어하는 장치를 말한다.

이 녀석은 PLC중에서도 핵 원심 분리기를 찾고 있었다. 핵 원심 분리기는 농축 우라늄을 만드는 기계인데 농축 우라늄은 핵무기의 핵심 자원이다. 실제로 이 웜은 목표물 컴퓨터를 찾고, 13일 동안 아무것도 하지 않았고, 그 후 15분 동안 핵 원심 분리기의 회전 속도를 굉장히 올렸다. 그러고 나서 26일 동안 다시 가만히 있고, 그 후 15분 동안 원심 분리기의 회전 속도를 떨어트렸다. (핵 원심 분리기는 매우 예민해서 회전 속도를 갑자기 빠르게 하거나 느리게 하면 고장이 난다고 한다.)

분쟁 지역의 핵 시설을 마비시키기 위해 미국이나 이스라엘에서 퍼뜨렸다는 얘기도 있다.

 

 

책에서 기억하고 싶은 내용을 써보세요.

📌 현재 인공지능은 한정된 영역에서만 동작하는 좁은 인공지능 기술이다. 머신러닝에는 지도학습/비지도학습이 있다.

딥러닝은 머신러닝의 하위 개념이다.

 

📌 REST API는 어떤 설계 규칙이다. API를 만들 때 패턴이 없으면 협업을 할 때 매우 힘들다. HTTP 메서드를 도입하여 URL이 단순하게 바뀌고, URL 1개로 조회, 생성, 수정, 삭제를 있다.

 

📌 하이브리드앱은 웹 사이트를 보여주는 웹 뷰를 말하고, 크로스 플랫폼 앱은 특정한 언어로 코딩하여 나중에 iOS, 안드로이드가 이해할 수 있는 코드로 변환해서 만든다. 네이티브앱은 iOS, 안드로이드만을 위한 언어로 코드를 작성하여 개발한 것이다.

 

📌 NFT란 대체 불가능한 토큰을 말한다. NFT는 인터넷 세상에서 재산권을 증명하는 기술이 될 것이다. 

 

📌 사이버 무기 - 뭘웨어는 컴퓨터를 감시하거나 파괴하는 것이고, 바이러스와 웜은 복제되어 전파된다.

 

 

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

🗣 API와 무슨 차이가 있어서 용어부터 다를까 생각을 했었는데 REST API의 개념을 제대로 알게 되었다.

 

🗣 iOS 개발을 하고싶어서 스위프트 언어를 공부한 적이 있는데 나는 웹개발쪽 공부를 더 하고 싶어서 웹 앱 프로젝트를 할 것이다. 간단한 앱을 만들고 싶으면 굳이 네이티브가 아니더라도 하이브리드나 크로스 플랫폼을 선택하면 될 것 같다. 

 

🗣 NFT파트를 읽고, NFT 관련 산업이 엄청 발전할 것 같은 생각이 들었다. NFT를 전시할 수 있는 디스플레이, 프레임, 그것을 만드는 사람 등

 

🗣 멀웨어, 바이러스, 웜 개념을 보고 사이버 공격이 정말 무서운 녀석이란 것을 알게 되었다. 단순히 악성코드 발생하는 차원이 아니라 국가간 전쟁에서도 쓰인다는 사실에 놀라웠다. 사이버 테러에 대한 대비가 필요해보이는 파트였다.