IT 5분 잡학사전 #9

Noah·2023년 1월 22일
0

개발 도서

목록 보기
9/9
post-thumbnail

TIL 날짜 및 읽은 범위

  • 2023.01.25
  • Ep.39 ~ Ep.45

에피소드 39 : 인공지능, 머신러닝, 딥러닝, 아직도 구분하기 힘들다고 ?

인공지능에도 급이 있다 ?

일반 인공지능좁은 인공지능
사람처럼 행동하는 인공지능한가지만 잘하는 인공지능, 한정된 영역에서만 동작
인간의 행동을 할 수 있거나, 인간보다 능력이 뛰어남딥러닝이나 머신러닝으로 만듬
대화, 게임, 판단도 가능몇 가지 일만 가능, 단 탁월하게 잘함
현실에 없음 (현 기술로는 불가능)페이스북의 얼굴인식, 빅스비(Bixby), 시리(Siri) (현 인공지능 기술의 위치)

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

구분지도학습 (supervised learning)비지도학습 (unsupervised learning)
정의라벨(label)을 토대로 학습시킴라벨이 없는 데이터를 줌
예시핫도그의 특징을 알려줌 > 학습한 특징과 비교해서 대상을 파악함핫도그 사진만 수만 장 줌 > 기계 스스로 어떤게 핫도그인지 학습함

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

딥러닝: 머신러닝을 달성하기 위한 방법
딥러닝이라고 하는 이유는 실제로 구현하는 과정에서 여러 겹으로 층을 만들기 때문
딥러닝은 이런 층이 엄청나게 많아! 다시 말해 층이 굉장히 깊어(deep)
'딥러닝은 엄청나게 많은 층으로 구성되어 있는 머신러닝의 한 종류다'

인공지능, 머신러닝, 딥러닝 정리하기

딥러닝: 머신러닝의 하나
머신러닝: 인공지능을 만드는 데 필요한 방법
머신러닝을 배울 수 있는 가장 쉬운 방법은 파이썬을 이용하는 거야
파이썬을 공부했고, 또 다룰 줄도 안다면 텐서플로(Tensor Flow)를 공부해 봐
텐서플로: 인공지능을 개발하는 도구, 프레임 워크

에피소드 40 : REST API 라니, 휴식 API 인가 ? 이게 대체 뭐죠 ?

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

REST API 는 API의 한 종류야
REST: representational state transfer, 설계 철학
즉! REST API 는 REST 방식으로 설계한 API를 말해

1단계: REST 없이 영화 API 설계하기

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

이 URL에는 패턴이 없다는 문제가 있어
모든 영화 정보 조회는 /seeMovies , 특정 영화 정보 조회인 /getMovie
두 API 모두 영화 정보를 읽는 기능을 하는데 단어는 see, get 으로 다른 거야
단어를 혼용해서 API를 설계한 상황이지
이렇게 설계된 API로 여러분 팀원이 백엔드, 프런트엔드 작업을 할 것이거든
어떤 사람이 실수로 getMovie 를 seeMovie 로 입력했다면? 그 단어가 들어간 코드 조각이 수십 개라면?
상상하기도 싫군!

2단계: URL 에서 동사 제외하기
우선 동사를 사용하면 안돼 see, create 같은 동사를 아예 삭제하라는 거야

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

3단계: HTTP 메서드 도입하기
HTTP 메서드란 웹 기술을 뜻하는데, 쉽게 말해 같은 URL로 백엔드에서 다른 처리를 할 수 있도록 일종의 갈림길을 만들어 주는 녀석이야. 대표적으로 GET, POST, PUT, DELETE 가 있어

/movies/inception 이라는 URL로 API를 요청할 때 "나는 GET방식으로 API를 요청하겠다" 하고 하면, 백엔드에서는 데이터를 조회하는 작업을 진행하는 거야
이렇게 동사를 사용하지 않음으로써 얻는 장점은 URI이 단순하게 바뀐다는 거야
특정 영화 정보의 조회, 생성, 수정, 삭제를 URL 1개로 모두 할 수 있는 거지
또한 기능을 확장하기도 좋아져
만약 특정 영화의 배우 정보를 조회한다면 ? GET /movies/inception/actors

4단계: 쿼리 도입하기
평점 9.8점 영화를 조회할 때는 명사나 HTTP 메서드만으로는 설계하기 어려워
그럴땐 쿼리 파라미터를 사용하면 돼

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

에피소드 41 : 도커가 뭐지 ? 왜 필요할까 ?

도커 로고

개발 환경 준비로 고생하는 사람들을 획기적으로 도와주는 도구, 도커

도커는 개발 환경과 관련이 있어, 개발 환경 준비는 경우에 따라 하루 이상, 며칠이 걸릴 수 도 있거든
도커는 개발 환경이 맞지 않는 상황 또는 개발 환경이 변경되었을 때 유연하게 대체할 수 있게 해줘
예를 들면, 개발할 때 운영체제는 윈도우인데 애플리케이션을 구동해야 하는 서버의 운영체제가 리눅스일 때 ! 도커가 등장해

도커는 이런 문제를 대체 어떻게 해결하지 ?

도커는 어떤 컴퓨터에서도 같은 개발 환경을 준비할 수 있도록 해주는 도구
먼저 윈도우에도, 서버에도 도커를 설치해
다음 도커 파일이라는 것을 생성하는데, 여기에 구현하고 싶은 환경 목록이 적혀 있어

  • 도커 파일에 적혀있는 환경 목록
  • 우분투 12 버전
  • 파이썬 3.10 버전
  • (...생략...)
    도커 파일을 완성하고 컴퓨터(윈도우)와 서버(리눅스)에 전달하면 도커는 자동으로 그 파일을 확인하여 필요한 것을 내려받아서 설치할거야
    도커가 준비한 프로그래밍 언어가 동작하는 환경을 컨테이너 라고 해
    도커는 여러 프로그램의 개발 환경을 컨테이너로 나누어서 관리할 수 있어
    그 결과 개발 환경 준비를 더욱 편리하게 만들어 주지

컨테이너 개념 알아보기

도커 컨테이너는 각각 서로 분리되어 있고 독립적이라서 컴퓨터 하나에 수많은 컨테이너가 있을 수 있어
파이썬을 위한 컨테이너, 자바스크립트를 위한 컨테이너, 자바를 위한 컨터이너 등...
컨테이너를 미리 분리해서 관리하면 개발 환경이 갑작스럽게 변해도 쉽게 대처할 수 있어
만든 자바 애플리케이션의 인기가 갑자기 올라서 애플리케이션 사용량이 증가하면 자바 컨테이너의 개수를 늘리기만 하면 되고,
사용량이 줄어들면 반대로 컨테이너 수를 줄이면 되는 거야
도커는 개발 환경을 쉽게 준비할 수 있고, 추가 개발 환경은 컨테이너를 복제하면 바로 준비할 수 있어

도커 정리하기

  • 도커는 원하는 개발 환경을 도커 파일에 저장하여 준비해 준다
  • 도커가 마련한 개발 환경은 컨테이너 형태로 존재하므로 개발에 필요한 도구를 따로 모아 준비할 수 있고, 쉽게 복제할 수 있다

에피소드 42 : 암호화폐의 진실

암호화폐를 정부가 규제할 수 있을까?

암호화폐는 정부가 없앨 수 없어. 암호화폐는 기술적으로 그렇게 만들어지지 않았거든
그럼 없앨 수 있을까 ?
암호화폐인 비트코인은 네트워크라서 없애버리면 세상의 모든 인터넷을 꺼야 하는데 이건 불가능
하지만 거래소를 통제하는 간접적인 방법으로 규제할 수 있는 있어
이미 우리나라는 정부에서 승인한 거래소에서만 암호화폐를 살 수 있게 하고 있어
이렇게 정부가 거래소를 관리한다는 건 암호화폐를 사는 사람을 관리하는걸 의미해
그러나 산 이후에는? 정부가 할 수 있는 건 거의 없어
구매자가 암호화폐를 어디에 보냈는지, 무엇을 샀는지 등등 암호화폐의 행방을 알아내긴 어렵거든

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

암호화폐는 사용한 사람을 은행 자체로 만들어
지갑과 키를 신중하게 관리해야 하는 숙제가 생기는 거지
암호화폐로 얻을 수 있는 큰 이득에는 그만큼 자유와 책임이 따르는 거야
그래서 가지고 있는 암호화폐를 대충 관리하다가 영원히 잃어버린 사람도 있어
암호화폐를 사용하려면, 스스로 관리 책임을 완벽하게 질 수 있는지 고려해야돼
암호화폐 세상에는 모든 정보가 공개돼
내 비트코인 주소만 알면 나에게 돈이 얼마가 있는지, 얼마를 받았는지, 얼마를 송금했는지 등 모든 정보를 알아낼 수 있어

암호화폐 사기를 당하지 않으려면

디파이(DeFi)란 탈중앙화 금융(Decentralized Finance)의 약자로서, 탈중앙화된 분산금융 또는 분산재정을 의미한다.
주로 암호화폐를 담보로 걸고 일정 금액을 대출 받거나, 혹은 다른 담보를 제공하고 암호화폐를 대출 받는 방식으로 작동한다.

만약 돈을 디파이에 맡겼는데 해당 프로젝트가 망하거나 개발자가 도망가 버리면 누구에게 도움을 요청할 수 있을까?
누구에게도 도움을 요청할 수 없어
암호화폐 주변에는 늘 사기꾼이 넘쳐나, 그래서 아무도 믿을 수 없어
몇몇 암호화폐 거래소는 해킹 관련 주소다 싶으면 아예 접속을 막아버리기도 해
우리는 스스로 암호화폐 관련 공부를 열심히 하는 수 밖에 다른 방법은 없어
암호화폐는 여러분 스스로 은행인거야. 공부도 조사도 모두 혼자서 해야 해

사기 감별 노하우1. 모든 코인에 가치가 있는 건 아니다
사실 코인 만들기 자체만 놓고 보면 매우 쉬워. 누구나 코드를 복사해서 코인을 만들 수 있지
그래서 코인은 무조건 가치가 없어

사기 감별 노하우2. 암호화폐에 대해 수식어를 남발하는 사람은 거르자
어떤 암호화폐 사이트에 접속했더니 '탈중앙화된 오라클 프로토콜을 사용한, 머신 러닝에 최적화된 유동성 풀을 만든 코인' 이라고 자신이 만든 암호화폐를 소개하는 글이 있었어
이렇게 복잡하고 어렵게 표현한 사이트는 피하는 게 좋아
실제로 이 사이트는 가치가 없는 코인을 파는 곳이였어

사기 감별 노하우3. 코인, 커뮤니티 등 진짜 정보를 살펴라
만약 마음에 드는 암호화폐 프로젝트를 발견했다면, 사이트를 소개하는 글은 무시하는게 좋아
진짜 정보가 없거든
다음은 암호화폐의 진짜 정보를 알아보는 질문이야

  • 코드의 마지막 업데이트 날짜는 언제인가 ?
  • 커뮤니티에 얼마나 많은 사람이 참여했는가 ?
  • 커뮤니티에서 가격 이야기만 떠들고 있는가 ?
    만약 코드 업데이트 날짜도 오래 되었고, 커뮤니티에 글은 많이 올라오는데 가격 이야기만 한다면 그 암호화폐 프로젝는 관심을 접는 것이 좋아
    가격만 올려서 팔고 도망가는 곳일 수도 있거든

사기 감별 노하우4. 탈중앙화된 코인인지 살펴라
왜냐하면 코인이라고 전부 다 암호화폐이고 탈중앙화된 것은 아니거든
그럼 탈중앙화되지 않은 코인이 뭐냐고 ?
그 코인은 만든 곳에서 언제든지 마음대로 할 수 있어
매우 위험한 코인이지

사기 감별 노하우5. 이론상 안전한 코인을 골라라
스테이블 코인 (stable coin) : '안정된' 코인, 다른 자산에 코인 가치가 연결되어 있어서 가격 변동이 거의 없음
DAI 역시 스테이블코인인데 보증 주체가 회사가 아니라 알고리즘이야
코인의 안정성을 알고리즘이 보증해. 하지만 알고리즘도 다 믿을 수는 없어
계속 공부하는 것이 중요해

코인은 항상 조심하는 수밖에 없어. 사기꾼을 완전히 차단할 수 없는 것이 현실이거든

에피소드 43 : 하이브리드...앱? 뭐라고요?

모바일 애플리케이션이라 하면 iOS앱, 안드로이드 앱을 말해
애플리케이션을 만드는 방법은 하이브리드 방식, 크로스 플랩폼 방식, 네이티브 방식이 있어

구분하이브리드 앱크로스 플랫폼 앱네이티브앱
무엇웹 사이트를 보여주는 웹 뷰(브라우저의 윈도우 부분)특정한 언어로 코딩하면 iOS, 안드로이드가 이해 할 수 있는 코드로 변환iOS(스위프트), 안드로이드(자바, 코틀린) 각각의 앱을 위한 언어로 개발
장점네이티브 앱 개발 지식이 필요없음, HTML,CSS, 자바스크립트만 알아도 충분히 개발 가능코드를 한 번만 작성해도 iOS, 안드로이드 두 환경에서 실행할 수 있음, 배경이 다양한 개발자들이 한자리에 모임, 다양한 형태의 라이브러리, 튜토리얼이 생겨서 커뮤니티 발전스마트폰의 성능을 최대로 사용할 수 있음, 코드와 스마트폰 사이에 중간 단계가 하나도 없이 잘 연결됨
단점UI를 한땀 한땀 짜야 해서 귀찮음, 스마트폰의 성능을 온전히 활용 불가능네이티브 앱의 성능은 아직 따라갈 수 없음, 기술적인 한계, 네이티브 언어로 변환하는 과정이 있어서 성능에는 조금 문제가 생김다른 앱에 비해 배우는 데 시간이 2배 걸림, 각각의 앱을 위한 언어를 배워야함, 2개의 앱을 만들어해서 시간이 배로 듬, 유지.보수도 따로 해야함

에피소드 44: NFT가 도대체 뭐길래 ?

NFT란 ? 대체 불가능한 토큰

NFT : non fungible token, 대체 불가능한 토큰 (땅, 한정판 신발, 전세 계약 같은)
토큰 : 이더리움 (Ethereum)과 같은 블록체인으로 발행, '돈을 받는 기능' 과 '돈을 받고 토큰을 보내주는 기능' 이 있다
이를 합쳐서 스마트 계약 (smart contract) 이라 한다
토큰을 잘 활용한 예가 바로 코인 이다
코인은 여러개 일 수 있어. 그래서 화폐처럼 쓰이는 거지
그런데 내가 토큰을 딱 1개만 발행할 수 있도록 스마트 계약을 만들면 어떻게 될까? 그리고 그 안에 이미지를 넣는거야
이미지 외에 영상, 노래, 전세계약 등을 넣을 수도 있겠지?!
NFT가 바로 이렇게 탄생하는거야!!
실제로 780억원짜리 그림을 사는 것이 아니라 그림이 들어 있는 유일 무이한 토큰 단 1개만 사는거지

그래서 NFT 그림은 왜 이렇게 비쌀까 ?

<모나리자>를 생각해보자. 구글에서 누구나 그림을 볼 수 있지만 루브르 박물관에서 실물을 보는 것과는 다를 거야
왜냐하면 사람들은 레오나르도 다빈치를 화가로 여겨서 그 사람이 그린 진짜를 보고 싶어 하거든
유일한 원본, 진짜라는 사실이 가치를 크게 높여 주는거야. 그리고 유일한 원본임을 증명하는 기술이 바로 NFT야
NFT가 다양한 산업에서 이루는 혁신 가능성을 살펴볼 수 있어
트위터 역사의 시작을 알린 첫 번째 트윗, 트위터 창업자 잭 도시의 트윗은 NFT에 담긴 채로 32억원에 팔렸어
사람은 유일한 것을 보고 싶고 갖고 싶어 하니까!
NFT의 콘셉트는 아직 시기상조이지만 NFT에 대한 인식이 점점 바뀔거야
왜냐하면 NFT는 인터넷 세상에서 재산권을 증명하는 기술이 될 테니까 말야

유일함을 소유할 수 있게 해주는 NFT

NFT 를 통해 디지털 속에 유일함, 소유권이라는 개념이 생겼어
누구든지 그림, 영상을 비롯해 모든 것을 판매할 수 있는 세상이 다가온 거야!
이 녀석 덕분에 많은 산업에 변화가 생길 거야
새로운 직업도 생기겠지?
이를테면 NFT를 전시할 수 있는 멋진 디스플레이, 프레임이 필요하지 않을까?
NFT는 우리 삶을 바꿀수 있는 혁신적인 기술이야

에피소드 45: 멀웨어, 바이러스, 웜 개념 몽땅 정리

멀웨어(malware = malicious:악의있는+software:소프트웨어) : 악성소프트웨어
컴퓨터를 감시하거나 파괴함, 국가나 특정 기관에서 만듬, 다른 국가의 핵심 시설이나 인프라를 감시하거나 파괴
바이러스(virus) 와 웜(worm)이 가장 많이 알려져 있다

구분바이러스
같은점복제되어서 전파됨
다른점숙주가 필요숙주가 필요 없음, 자기 자신을 복제하면서 전파
경로파일 안에 있음, 파일을 내려 받아서 열 때 감염됨USB를 통해서도 전파 가능

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

웜은 미사일(missile) 와 페이로드(payload) 가 필요해
미사일을 통해 컴퓨터 안으로 침투하고, 그 순간 페이로드를 배포하는 방식으로 컴퓨터를 파괴시켜
이 녀석이 위험한 이유는 컴퓨터 루트에 설치 된다는 사실 때문이야
컴퓨터의 모든 자원을 관리하는 운영체제 바로 옆자리에 말이지
이 말은 웜이 백신 프로그램보다 우위에 있다는 것을 의미해
제로데이(zero day)는 아직 아무도 발견하지 못한 프로그램의 취약점을 뜻 해
그 취약점은 발견되는 날까지는 고칠 수 있는 시간이 아예 없는거나 마찬가지잖아
제로데이는 엄청 희귀하고 비싸


재택근무 고수의 노하우!

재택근무는 자신을 통제할 수 있어야 해. 자기 절제와 훈련이 되어 있지 않으면 생각보다 쉽지 않지!
점심 먹고 나서 소파에 앉아서 커피 마시고 유튜브 시청하다 보면 시간이 훌훌 날아가 버리니까!

  1. 일의 시작과 끝을 의식적으로 표시하기

    사무실에서 일할 때는 출근하면 일이 시작되고 퇴근하면 끝나잖아 ?
    재택근무는 계속 집에 있다 보니 일의 시작과 끝을 공간으로 구분할 수 없어
    그래서 일의 시작과 끝을 구분할 수 있도록 계속해서 생각하고 행동해야 돼
    출근: (샤워를 하고, 옷을 갈아입으면서) "자! 지금부터 업무시작!"
    퇴근: (편한 옷으로 갈아 입고, 유튜브를 틀면서) "이제 업무 끝!"
    나는 일단 아침에 샤워를 해, 그런 다음 셔츠를 입어
    일할 시간이라는 느낌을 주기 위한 거지
    그렇게 일을 하고 오후 7~8시가 되면 퇴근한 뒤의 행동을 하는 거야

  2. 일하는 공간 명확하게 구분하기

    일하는 방을 따로 두는 것도 좋아
    여기서는 일을 하고 저기서는 쉬는 거라고 규칙을 정하는 거지
    나만의 오피스 공간을 만드는게 좋아
    머릿속에 일의 시작과 끝을 계속해서 알려 주는 거야
    실제로 매일 해보면 쉽지 않을 거야. 하지만 효과는 분명해
    일하는 방에서는 쉬지 않는다
    쉬고 싶다면 반드시 그 공간을 빠져나온다

  3. 함께 사는 사람에게 알리기

    '나는 일하고 있어요' 라는 사실을 알려 줄 필요가 있다는 거야
    왜냐하면 가족은 여러분의 재택근무를 심각하게 받아들이지 않을 수도 있거든
    중간 중간 말을 거는 행동을 아무렇지 않게 할 수 있거든
    하지만 여러분은 몸이 사무실에 있지 않을 뿐이고 회사 일을 하는 중이니까 이런 상황을 그때마다 알려 줘야 해

주니어 개발자가 빠르게 성장할 수 있는 비법

나무가 아니라 숲 보기: 기술에만 집중하지 않기
웹공부를 시작했다면 HTML, CSS 순서로 계획을 세웠을 거야
그런데 이렇게 공부하면 엄청 비효율적이야
HTML을 배운면서, CSS도, 더 나아가 자바스크립트 등 웹 공부를 어떻게 해야 하는지 쓱 들러보는 것이 훨씬 좋아
여러분이 사용하는 웹 사이트나 애플리케이션이 작동하는 방법을 알고 싶다면 해보자!
1. 인스타그램 제작 계획 세우기
2. 웹 페이지를 만들려면 HTML, CSS, 자바스크립트를 공부하세요
3. 장고를 사용하려면 파이썬을 먼저 공부하세요
여기서 오해하면 안되는 것은, 장고나 파이썬을 당장 배우라는 얘기하는게 아니란 거야
웹 개발을 위해 어떤 과정을 공부할지 그림을 그리라는 거지!
프로그래밍은 자신이 필요한 것을 공부할 때 가장 효율적이거든!

할 수만 있다면 무료로 일해보기: 실무 경험 쌓기
실무 경험을 쌓으라는 것이지. 요즘은 실무 경험에 준하는 면접실력, 코딩실력, 포트폴리오를 원해
그게 없으면 취업하기가 정말정말정말 어려워
무료로 일하는 경험은 더 많은 것을 가져다 준다고 생각해
레스토랑을 운영하는 삼촌을 위해, 간단한 예약 관리 사이트를 만들어도, 실제로는 별거 아닌 프로젝트지만 바로 이것이 여러분을 특별한 개발자로 만들어
왜냐하면 이건 진짜니까!
이 경험을 토대로 면접을 한다면? 이건 실생활에서 고객에게 필요한 것을 기술로 제공해 준 경험이니까 연습용 프로젝트와는 다르지
그리고 돈을 받고 한 일이 아니어서 책임져야 할 리스크도 적어

실무 경험을 쌓으면 좋은 사람

  • 실무 경험이 필요하다고 느끼는 사람
  • 스스로 행동력이 부족하다고 느끼는 사람
  • 자신의 코딩 실력이 실무에 정말 쓸모가 있을지 궁금한 사람

이 2가지 조언을 잘 조합하면 여러분은 분명 빠르게 성장할 수 있을거야
나는 나중에 무료로 일해 주는 방법을 시도했는데, 이 경험으로 고객을 만날 수 있었고, 그들이 정말로 원하는 것이 무엇인지 알게 되었거든!

오늘 읽은 소감은?

"조금은 어려운 내용이 많았지만, 적절한 비유를 통해 쉽게 이해할 수 있었다. 혼자 읽었다면 오래걸렸을수도 있었는데, 챌린지를 통해 많은 사람과 함께 끝까지 읽을 수 있어서 좋았다. 매번 읽은 내용을 정리하면서 다시 읽으면서 TIL를 적어서 더 오랫동안 기억에 남을거 같고, 후에 정리본을 다시 읽어서 복습도 할 수 있을것 같다. 중간 중간 응원과 야단(?)도 있었지만 당근과 채찍같아서 더 좋은 더 멋진 개발자가 되기위해 힘을 얻었다"

profile
프론트엔드가 꿈인 코린이

0개의 댓글