[IT 5분 잡학사전 - 최신 기술 편] DAY13, EP.35 ~ EP.45
✔ 오늘의 3줄 요약
- REST API 구현 해보기
- DOKER 이용 해보기
- 하이브리드 앱...
✔ 오늘 읽은 범위
EP.39 인공지능, 머신러닝, 딥러닝 아직도 구분하기 힘들다고?
EP.40 REST API라니, 휴식 API인가? 이게 대체 뭐죠?
EP.41 도커가 뭐지? 왜 필요할까?
EP.42 암호화폐의 진실
EP.43 하이브리드...앱? 뭐라고요?
EP.44 NFT가 도대체 뭐길래?
EP.45 멀웨어, 바이러스, 웜 개념 몽땅 정리
✔ 기억하고 싶은 내용
1. 인공지능, 머신러닝, 딥러닝
- 인공지능
좁은 인공지능(narrow AI) = 약한 인공지능(week AI) = 딥러닝, 머신러닝 - 한정된 영역에서만 동작
일반 인공지능(general) = 강한 인공지능(strong AI) = 대화, 게임, 판단 가능 = 현실에 없음
- 머신러닝
머신러닝, 딥러닝 - 인공지능이 학습하는 방식 또는 인공지능을 학습시키는 방식
기계를 가르치는 방법 - 지도학습, 비지도 학습
라벨을 토대로 기계에게 물체가 무엇인지를 여러 예를 통해 학습시킨다.
지도학습 방식
음악 추천 시스템에서 아티스트, 장르, 음악 템포 사용한 악기 등과 같은 라벨과 지금까지 내가 들은 음악 데이터만 있다면 기계에게 내가 좋아하는 음악이 무엇인지 학습시킬 수 있다. 그 다음부터는 새 음악이 나왔을 때 내가 좋아할지 싫어할지 계산해서 확률이 높으면 추천해 준다.
비지도 학습 방식
라벨이 없는 데이터를 준다.
기계에게 정답을 알려주지 않고 핫도그 사진만 수만 장 준다. 그러면 스스로 어떤게 핫도그인지 알아차린다.
사진 수만 장과 엄청난 프로세싱 파워를 바탕
- 딥러닝
딥러닝은 머신러닝을 달성하기 위한 방법이다.
머신러닝의 하위 개념
실제로 구현하는 과정에서 여러 겹층으로 층을 만든다. 그 층은 굉장히 깊다(deep)
(딥러닝을 대표하는 알고리즘 - 뉴럴 네트워크, 생물의 신경망에 영감)
- 인공지능, 머신러닝, 딥러닝 정리
딥러닝은 머신러닝의 하나, 머신러닝은 인공지능을 만드는 게 필요한 방법
머신러닝을 배울 수 있는 쉬운 방법은 파이썬, 텐서플로 이용
2. REST API
API의 한 종류이며 REST 방식으로 설계한 API이다.
REST(representational state transfer) API
영화 REST API를 만드는 과정으로 이해하는 REST API
1단계 REST 없이 영화 API 설계하기
영화 정보를 저장, 읽어 들이고 수정하고 삭제하는 영화 API를 만든다고 가정
<웡카>로 영화 URL 설계
- 영화 정보 생성: /createMovie
- 모든 영화 정보 조회: /seeMovies
- 특정 영화 정보 조회(영화 <웡카>): /getMovie/wonka
- 특정 영화 정보 삭제(영화 <웡카>): /deletMovie/wonka
- 특정 영화 정보 수정(영화 <웡카>): /editMovie/wonka
모든 영화 정보 조회, 특정 영화 정보 조회 두 API 모두 영화 정보를 읽는 기능을하는데 단어는 see,get으로 다르다.
단어를 혼용해서 API를 설계하면 문제가 된다.
이렇게 설계된 API로 팀원이 백엔드,프런트엔드 작업을 한다. 이런 설계는 피해야한다.
어떤 사람이 실수로 getMovie를 seeMovie로 입력했다면 그것이 수십개라면...
2단계. URL에서 동사 제외하기
see, create 같은 동사를 사용하면 안된다.
동사를 삭제해서 명사만 남은 API
- 모든 영화 정보 조회: /movies
- 특정 영화 정보 조회: /movies/wonka
데이터 삭제와 같은 URL은 HTTP 메서드라는 것을 활용한다.
3단계. HTTP 메서드 도입하기
HTTP 메서드란 웹 기술을 뜻한다. 쉽게 말해 같은 URL로 백엔드에서 다른 처리를 할 수 있도록 일종의 갈림길을 만들어 준다. 대표적으로 GET, POST, PUT, DELETE 가 있다.
/movies/wonka 라는 url로 api를 요청할때 GET 방식으로 API를 요청하겠다 라고 하면
백엔드에서는 데이터를 조회하는 작업을 진행한다.
다른 방식을 사용하면 조회를 포함하여 백엔드에 4가지 작업을 지시할 수 있다.
API로 백엔드에 지시하는 4가지 작업
- GET(조회) /movies/wonka
- POST(생성) /movies/wonka
- PUT(수정) /movies/wonka
- DELETE(삭제) /movies/wonka
이 HTTP 메서드는 다 사용할 필요가 없다. /movies는 DELETE, UPDATE를 요청하는 경우가 없다.
영화 정보를 삭제하거나 수정하지는 않기에..
동사를 사용하지 않음으로써 얻는 장점
URL이 단순하게 바뀐다.
특정 영화 정보의 조회, 생성, 수정, 삭제를 URL 1개로 모두 할 수 있다. 그리고 기능을 확장하기도 좋다.
영화 웡카의 배우 정보를 조회하는 API는 다음처럼 설계한다.
- GET /movies/wonka/actors
이 URL은 GET 방식으로 요청한것이라 영화 웡카의 배우 정보 조회 작업을 할수있다.
이것도 URL은 1개만 두고 HTTP 메서드만 적용해서 데이터 조회, 생성, 수정, 삭제 기능을 개발할 수 있다.
4단계. 쿼리 도입하기
평점 9.8점 영화를 조회하려면 쿼리 파라미터를 사용한다.
2022년 9.8 영화 조회
- GET /movies?min+rating=9.8
- GET /movies?release_date=2022
3. 도커
개발 환경 준비는 경우에 따라 하루 이상, 며칠이 걸린다.
도커는 개발 환경이 맞지 않은 상황 or 개발 환경이 변경되었을 때 유연하게 대처할 수 있게 해준다.
도커는 어떤 컴퓨터에서도 같은 개발 환경을 준비할 수 있도록 해준다.
운영체제가 서로 다른 상황에서도 도커가 해결해준다.
윈도우, 서버(리눅스) 도커 설치 도커 파일이라는 것을 생성하는데, 구현하고 싶은 환경 목록이 적혀 있다
도커 파일에 적혀있는 환경 목록
- 우분투 12 버전
- 파이썬 3.10 버전
- 깃
- 등등
이렇게 도커 파일을 완성하고 윈도우와 서버(리눅스)에 전달하면 도커는 자동으로 그 파일을 확인하여 필요한 것을 내려받아서 설치한다. 도커가 없다면 모두 수동으로 해야한다..
개발 환경 목록이 많아지고 버전이 세분화되면 수동으로 하기 어려운데 도커가 그것을 해결해 준다.
그리고 도커가 준비한 프로그래밍 언어가 동작하는 환경을 컨테이너라고 한다.
공사장에서 사무실을 컨테이너 박스로 만드는데 공사 규모가 클수록 컨테이너 박스가 많아진다.
하나만 만들면 모든것이 뒤섞이는데 여러개로 분리
개발 환경도 여로 종류가 필요한데 도커는 그것을 컨테이너로 나누어서 관리할 수 있다.
컨테이너 개념
도커 컨테이너는 각각 서로 분리되어 있고 독립적이다. 컴퓨터 하나에 수많은 컨테이너가 있을 수 있다.
예) 파이썬 개발을 위한 컨테이너, 자바스크립트를 위한 컨테이너. 자바를 위한 컨테이너 등등.. 한꺼번에 쓰는 일이 없기에 이렇게 나눠서 개발 환경을 준비한다. 컨테이너를 미리 분리해서 관리하면 개발 환경이 변해도 쉽게 대응 가능하다.
예를 들어 애플리케이션 사용량이 증가하면 자바 컨테이너의 개수를 늘리기만 하면됨..
사용량이 줄어들면 컨테이너 수를 줄이면 됨..
도커는 컨테이너 수를 필요한 만큼 늘려준다.
도커와 컨테이너가 없다면 사용량이 늘 때마다 서버를 구매하고, 개발환경을 설정하고, 시작하고 이런 반복 작업을 엄청 많이 해야 한다. 도커가 있다면 개발 환경을 쉽게 준비할 수 있고, 추가 개발 환경은 컨테이너를 복제하면 바로 준비할 수 있다.
버추얼 머신, 스웜, 볼륨 기능들은 도커가 필요할때 공부
도커 정리
- 도커는 원하는 개발 환경을 도커 파일에 저장하여 준비해 준다.
- 도커가 마련한 개발 환경은 컨테이너 형태로 존재하므로 개발에 필요한 도구를 따로 모아 준비할 수도 있고, 쉽게 복제할 수도 있다.
4. 암호화폐
암호화폐는 정부가 규제할 수 없다.
하지만 거래소를 통제하는 간접적인 방법으로 규제할 수는 있다.
정부에서 승인한 거래소에서만 암호화페를 살 수있게 하며
정부가 거래소를 관리한다는 건 암호화폐를 사는 사람을 관리하는 걸 의미한다.
암호화폐를 산 이후에는 정부가 할 수 있는 건 거의 없다.
구매자가 어디에 보냈는지, 무엇을 샀는지 등 암호화폐의 행방을 알아내긴 어렵다.
디파이(DeFi)로 이자 농사를 지어 수익을 얻었다면 얻은 수익에 과세를 할 수 없다.
암호화폐는 나 자체로 은행 역할을 스스로 해야 한다.(지갑, 키)
- 개인정보 문제
암호화폐 세상에는 모든 정보가 공개된다. 누군가 내 비트코인 주소만 알면 나에게 돈이 얼마가 있는지, 얼마를 받았는지, 얼마를 송금했는지 등 모든 정보를 알아낼 수 있다.
- 사기 감별 노하우
돈을 디파이에 맡겼는데 해당 프로젝트가 망하거나 개발자가 도망가 버리면 누구에게도 도움을 요청할 수 없다.
모든 코인에 가치가 있는 건 아니다.
코인 만들기 자체만 놓고 보면 매우 쉽다. 누구나 코드를 복사해서 코인을 만들 수 있다.
암호화폐에 대해 수식어를 남발하는 사람은 거르자
복잡하고 어렵게 표현한 사이트는 피하는게 좋다.
코인, 커뮤니티 등 진짜 정보를 살피자
암호화폐 프로젝트를 소개하는 사이트 글은 무시하는게 좋다.
진짜 정보는
- 코드의 마지막 업데이트 날짜는 언제인지
- 커뮤니티에 얼마나 많은 사람이 참여했는지
- 커뮤니티에서 가격 이야기만 떠들고 있는지
코드 업데이트 날짜도 오래되었는데 커뮤니티에 글이 많이 올라오며 가격 이야기만 한다면 사기당할 수 있다.
탈중앙화된 코인인지 살피자
코인이라고 전부 암호화페이고 탈중앙화된 것은 아니다
탈중앙화되지 않은 코인은 만든 곳에서 언제든지 마음대로 할 수 있다.
이론상 안전한 코인을 고르자
스테이블 코인은 다른 자산에 코인 가치가 연결되어 있어서 가격변동이 거의 없다는 특징이 있다.
책임져야 할 회사가 도망가면 스테이블 코인도 망한다.
그럴 때 DAI라는 코인을 살펴보면 좋다. DAI는 스테이블 코인인데 보증 주체가 회사가 아니라 알고리즘이다.
하지만 알고리즘도 다 믿을 수는 없다.
5. 하이브리드 앱
웹사이트를 보여 주는 웹 뷰를 말한다.
웹 뷰는 주소 창(내비게이션)이 없는 브라우저를 웹 뷰라고 생각.
웹 뷰로 만든 앱을 웹 앱이라고 한다.
하이브리드 앱은 HTML, CSS, JS로 개발한 웹 앱을 iOS에서도 안드로이드에서도 쓸 수 있도록 하이브리드로 만들어 앱을 판매하는 구글 플레이스토어나 앱스토어로 보내는 것
사실상 주소 창(내비게이션)이 없는 브라우저이다.
하이브리드 앱 장점
네이티브 앱 개발 지식이 필요 없다.
하이브리드 앱의 장점은 네이티브 앱의 개발 지식이 크게 필요하지 않다.
하이브리드 앱은 HTML, CSS, JS만 알아도 충분히 개발할 수 있다.
웹 개발자라면 모바일 앱을 개발할 수 있다.
하이브리드 앱 단점
단점은 UI를 직접 짜야 한다. 그리고 스마트폰의 성능을 온전히 활용하지 못한다.
예를 들어 비디오 프로세싱과 같은 작업은 할 수 없다. JS로는 스마트폰을 그렇게까지 제어 할 수는 없다..
기본 카메라 기능, 위치 확인, 네트워크 정보를 얻는 정도만 할 수 있다.
스마트폰의 고급 하드웨어 기능을 활용하기는 어렵다.
하이브리드 앱을 만들고 싶다면 코르도바를 알아두자
- 크로스 플랫폼 앱
특정한 언어로 코딩하면 나중에 iOS, 안드로이드가 이해 할 수 있는 코드로 변환해서 만든다.
리액트 네이티브 기술을 사용하면 리액트에서 이해할 수 있는 방식으로 코딩하면되는데, 이 코드는 결국 자바스크립트 코드로 변환된다. 그 코드를 iOS, 안드로이드가 JS 엔진으로 실행...
플러터 기술은 다트라는 언어로 코딩하면된다. 이 코드는 결국 C 언어나 C++ 언어로 변환된다.
C언어, C++ 언어는 모두 iOS, 안드로이드에서 이해할 수 있어 바로 실행할 수 있다.
크로스 플랫폼 앱 개발에서 특징은 어떤 언어로 코드를 작성하면 그 코드가 나중에 네이티브 코드로 변환된다.
크로스 플랫폼 앱 장점
- 개발자가 익숙한 코드로 한 번만 작성해도 된다. 한번에 앱을 2개 만들 수 있어서 시간을 절약할 수 있다.
- 배경이 다양한 개발자가 한자리에 모인다. - 다양한 형태의 라이브러리, 튜토리얼이 생겨 커뮤니티가 발전한다.
크로스 플랫폼 랩 단점
- 네이티브 앱의 성능은 아직 따라갈 수 없다.
- 기술적인 한계로 크로스 플랫폼 앱은 네이티브 언어로 변환하는 과정이 있어서 성능에는 문제가 있을 수 밖에 없다.
- 다만 크로스 플랫폼 앱은 느리진 않다. 엄청난 성능을 내야 한다면 네이티브 앱이 더 좋은데 모든 앱에 그런 성능이 필요하진 않다. 적절히 쓴다면 크로스 플랫폼 앱 개발 방식이 최고.. (인스타그램의 일부는 리액트 네이티브로 개발했다)
- 네이티브 앱
iOS만들 위한, 안드로이드만을 위한 언어로 코드를 작성하여 개발
iOS - 스위프트
안드로이드 - 자바, 코틀린
네이티브 앱 장점
- 스마트폰의 성능을 최대로 사용할 수 있다.
네이티브 앱 단점
- 다른 앱에 비해 배우는 데 시간이 많이 소요된다.
- iOS, 안드로이드를 위한 언어를 몽땅 배워야 한다는게 큰 단점
6. NFT
토근의 2가지 핵심 기능
돈을 받는기능 + 돈을 받고 토큰을 보내 주는 기능 = 스마트 계약
토큰을 잘 활용한 예가 코인이다.
코인은 여러 개 있을 수 있기에 화폐처럼 쓰인다. 하지만 토큰을 1개만 발행할 수 있도록 스마트 계약을 만들어 그 안에 이미지를 넣으면? 이미지나 영상, 노래, 전세 계약서 등을 넣을 수 있다
NFT가 이렇게 탄생한다.
780억 원짜리 그림이 있는데 이것은 그림을 산게 아니라 단 한 번만 발행된 토큰이다.
유일한 원본, 진짜라는 사실이 가치를 크게 높여준다. 원본임을 증명하는 기술이 바로 NFT다.
트위터 역사의 시작을 알린 첫 번째 트윗, 트위터 창업자 잭 도시의 트윗은 NFT에 담긴 채로 32억원에 팔렸다.
NFT를 통해 디지털 속에 유일함, 소유권이라는 개념이 생겼다.
7. 멀웨어, 바이러스, 웜 개념 정리
멀웨어
악성 소프트웨어, 컴퓨터를 감시하거나 파괴한다.
이런 사이버 무기는 국가나 특정 기관에서 만들어 사용한다. 다른 국가의 핵심 시설이나 인프라를 감시하거나 파괴하려고 제작한다.
바이러스와 웜의 차이
멀웨어 중에서 바이러스와 웜이 많이 알려져있다.
바이러스는 숙주가 필요하다.
어떤 파일을 내려받아서 열 때 감염되었다면 그 파일이 숙주이다. 바이러스는 그 파일 안에 들어있다.
숙주가 필요 없는 웜
자기 자신을 복제하면서 전파된다. USB를 통해서도 전파할 수 있다. (사이버 무기)
웜은 미사일과 페이로드가 필요하다. 미사일을 통해 컴퓨터 안에 침투하고 그 순간 페이로드를 배포하는 방식으로 컴퓨터를 파괴시킨다.
웜의 이동은 감염된 컴퓨터에 있다가 usb 저장 장치와 연결되면 다른 컴퓨터에 침투한다.
웜은 암호화된 상태로 컴퓨터에 도착해서 스스로 암호를 해제하고 웜을 만들었던 본부에 연락한다.
- 본부 주소 : mypremiumfootball.com, todaysfootball.com
- 본부로 보낸 정보: '이 컴퓨터의 IP주소는 132.111.123.123 이고 와이파이, 운영체제 정보는 무엇무엇이다'
웜이 더 위험한 이유는 컴퓨터의 루트에 설치된다.(중앙 보안 링, 백신 프로그램보다 우위)
백신프로그램 위에서 감시하는지 볼 수 있고, 보라고 할수도 있다.
제로데이
제로 데이 취약점이라는 것 때문에 웜이 가능하다
웜은 개발자 1명이 뚝딱 만들 수 없고 거대한 조직이 뒷받침한다.
스턱스넷은 이런 웜으로 핵 원심 분리기를 노렸었다.
WinCC라는 프로그램을 실행하면 페이로드를 배포해서 공격을 시작하도록 설계되어있었다.
WinCC는 지멘스라는 회사에서 만들었는데 PLC 라는 것을 관리했다.(산어현장에있는 기계들을 감시하거나 제어하는장치)
PLC 중에 핵 원심 분리기를 찾았고 핵 원심 분리기의 회전 속도를 조절하여 고장나게 하려했다.
개발자가 빠르게 성장할 수 있는 비법
1. 기술에만 집중하지 않기, 언어 하나하나 마스터 하려하지 말고 당장 필요한 것을 공부해라.
인스타그램은 어떻게 만들었을까? 인스타그램 제작 계획 세우기
- 웹 페이지를 만들려면 html, css, Js를 공부하세요.
- 장고를 사용하려면 파이썬을 먼저 공부하세요.
장고나 파이썬을 당장 배우는게 아니라 어떤 과정을 공부할지 그림을 그리는 것.(큰 그림)
이렇게하면 html,css,js 배우면서 그 다음 발걸음을 옮길 수 있다. 인터넷에 추천하는 경로를 보면서 공부도 좋다.
2. 무료로 일해 보기:실무 경험 쌓기
예) 아는 지인의 예약 관리 사이트 만들기
실무 경험을 쌓으면 좋을 사람
- 실무 경험이 필요하다고 느끼는 사람
- 스스로 행동력이 부족하다고 느끼는 사람
- 자신의 코딩 실력이 실무에 정말 쓸모가 있을지 궁금한 사람
✔ 소감 및 떠오르는 생각
코인에 투자를 하고자 한다면 비트코인에만 투자하자..
갑자기 읽을게 많이 몰린느낌..
시세 변동없는 코인을 만들수는 없을까..?
✔ 과제2 : 나의 최애 북틸
1.
https://velog.io/@2m0815/%EB%85%B8%EA%B0%9C%EB%B6%81-Challenge-Day-06-TIL
[노개북] Challenge Day 06 TIL
| 날짜2024.02.15(Thu)| 읽은 범위episode 22~25| 책에서 기억하고 싶은 내용epi22: 자료구조와 알고리즘은 필수라고?개발자 작업 과정 : 프로그램이 돌아가는 수준으로 개발 -> 코딩, 버그확인 -> 코드 정리
velog.io
2.
https://nomadcoders.co/community/thread/9374
[TIL] IT 5분 잡학사전 EP.16-21 – 노마드 코더 Nomad Coders
Post on 노마드 코더 Community
nomadcoders.co
3.
https://south-dev.tistory.com/category/Book/IT%205%EB%B6%84%20%EC%9E%A1%ED%95%99%EC%82%AC%EC%A0%84
'Book/IT 5분 잡학사전' 카테고리의 글 목록
개발이 그대를 속일지라도 Get Shit Done.
south-dev.tistory.com