개발도서

[IT 5분 잡학사전] - TIL (2023.01.25)

짜잉이 2023. 1. 25. 02:13

📚 Assignment #10

  • 오늘 읽은 범위 : ep.39 인공지능, 머신러닝, 딥러닝, 아직도 구분하기 힘들다고? ~ ep.45 멀웨어, 바이러스, 웜 개념 몽땅 정리
  • 기억하고 싶은 내용 (간단하게 내용 정리):
    • ep.39 인공지능, 머신러닝, 딥러닝, 아직도 구분하기 힘들다고?
      • AI(artificial intelligence: 인공지능)
        • 일반 인공지능(general AI) == 강한 인공지능(strong AI) 
          - 사람처럼 행동하는 인공지능. 주로 영화, 드라마 속의 인공지능이며 현재 기술로는 아직 만들 수 없다.
        • 좁은 인공지능(narrow AI) == 약한 인공지능(weak AI)
          - 한 가지만 잘하는 인공지능. 실제 현실에서 딥러닝이나 머신러닝으로 만드는 대부분의 인공지능. 한정된 영역에서만 동작한다는 특징이 있다. 현재 인공지능 기술.
          e.g. 페이스북 얼굴 인식 기능, 스마트폰 음성 인식 기술(빅스비,시리)
      • 머신러닝(machine learning)
        • 머신러닝은 인공지능을 학습시키는 방법이다.
        • 기계를 가르치는 2가지 방식
          • 지도 학습(supervised learning)
            - 머신러닝에서는 특징을 라벨(label)이라고 한다. 기계는 자율로 판단하는 것이 아니라 인간이 기계에게 준 라벨을 토대로 학습해서 대답한다.
            e.g. 음악 추천 시스템
          • 비지도 학습(unsupervised learning)
            - 기계에게 라벨이 없는 데이터를 주고 스스로 그 특징을 찾아서 학습하게 한다. 
      • 딥러닝(deep learning)
        • 딥러닝은 머신러닝을 달성하기 위한 방법으로, 많은 층으로 구성되어 있는 머신러닝의 한 종류다. 
      • 거꾸로 올라가며 요약해보면 즉, 딥러닝은 머신러닝의 하나이고, 머신러닝은 인공지능을 만드는 데 필요한 방법이다.
      • 머신러닝을 배울 수 있는 가장 쉬운 방법은 파이썬을 이용하는 것이다. 파이썬을 익힌 다음에는 파이썬으로 다루기 좋고 인공지능을 개발하는 도구로 가장 유명한 프레임워크인 텐서플로(Tensor Flow)를 공부해보자. 
    • ep.40 REST API라니, 휴식 API인가? 이게 대체 뭐죠?
      • REST(representational state transfer) API는 REST 방식으로 설계된 API를 말한다. 
      • 영화 REST API를 만드는 과정으로 이해하는 REST API
        • 1단계. REST 없이 영화 API 설계하기
          - e.g. <인셉션>으로 영화 URL 설계하기
          ----영화 정보 생성: /createMovie
          ----모든 영화 정보 조회: /seeMovies
          ----특정 영화 정보 조회(영화 <인셉션>): /getMovie/inception
          ----특정 영화 정보 삭제(영화 <인셉션>): /deleteMovie/inception
          ----특정 영화 정보 수정(영화 <인셉션>): /editMovie/inception
          => 이 경우 같은 조회 기능을 하는 두 API의 단어가 see, get으로 다르다. 단어를 혼용해서 문제가 될 수 있는 API를 설계했다. 설계된 API로 백엔드, 프론트엔드 작업을 한다. 
        • 2단계. URL에서 동사 제외하기
          - e.g. 동사를 삭제해서 명사만 남은 API
          ----모든 영화 정보 조회: /movies
          ----특정 영화 정보 조회: /movies/inception
          => 동사를 사용하면 안된다. 데이터 삭제를 위한 URL은 HTTP 메서드를 활용한다.
        • 3단계. HTTP 메서드 도입하기
          - HTTP 메서드란 웹 기술을 뜻하며, 쉽게 말해 같은 URL로 백엔드에서 다른 처리를 할 수 있도록 일종의 갈림길을 만들어주는 것이다. (GET, POST, PUT, DELETE 등)
          - e.g. API로 백엔드에 지시하는 4가지 작업
          ----GET(조회) /movies/inception
          ----POST(생성) /movies/inception
          ----PUT(수정) /movies/inception
          ----DELETE(삭제) /movies/inception
          => 이 HTTP 메서드는 다 사용할 필요가 없다. 삭제,수정의 경우 전체를 다 삭제하거나 수정하지는 않을 것이기 때문!
          - 동사를 사용하지 않음으로써 특정 영화 정보의 조회, 생성, 수정, 삭제를 URL 1개로 모두 할 수 있도록 URL이 단순하게 바뀌는 장점이 있다. 기능 확장하기도 좋아짐.
          e.g. <인셉션>의 배우 정보 조회 API
          ----GET /movies/inception/actors
          : GET 방식으로 요청한 URL이니 영화 <인셉션>의 배우 정보 조회 작업을 하는구나!
        • 4단계. 쿼리 도입하기
          - e.g. 쿼리 파라미터로 평점 9.8점 영화 조회하기, 2022년 영화 조회하기
          ----GET /movies?min+rating=9.8
          ----GET /movies?release_date=2022
    • ep.41 도커가 뭐지? 왜 필요할까?
      • 도커(docker)는 개발 환경이 맞지 않은 상황 또는 개발 환경이 변경되었을 때 어떤 컴퓨터에서도 같은 개발 환경을 준비할 수 있도록 해주는 도구이다.
      • 운영체제가 서로 다른 상황을 도커가 해결하는 법!
        -> 개발할 때 운영체제는 윈도우, 애플리케이션을 구동해야하는 서버의 운영체제는 리눅스인 경우 코드가 서버에서 제대로 실행되지 않는다.
        컴퓨터(윈도우)와 서버(리눅스)에 각각 도커를 설치한 후, 구현하고 싶은 환경 목록을 담은 도커 파일을 완성해 컴퓨터와 서버에 전달하면 도커는 자동으로 파일을 확인 후 필요한 것을 내려받아 설치한다. 
      • 컨테이너도커가 준비한 프로그래밍 언어가 동작하는 환경을 말한다. 컴퓨터에서 여러 프로그램을 개발하고 있다면 여러 개발 환경이 필요한데 도커는 그것을 컨테이너로 나누어 관리하기 때문에 개발 환경 준비를 더욱 편하게 만들어준다. 
        - 추가 개발 환경은 컨테이너를 복제하면 바로 준비할 수 있다!
      • 도커 정리하기
        • 도커(docker)는 원하는 개발 환경을 도커 파일에 저장하여 준비해 준다.
        • 도커가 마련한 개발 환경은 컨테이너 형태로 존재하므로 개발에 필요한 도구를 따로 모아 준비할 수도 있고, 쉽게 복제할 수도 있다.
    • ep.42 암호화폐의 진실
      • 비트코인은 네트워크라서 없애 버리려면 세상의 모든 인터넷을 꺼야하므로 암호화폐를 없애는 것은 불가능하다. 우리나라는 정부에서 승인한 거래소에서만 암호화폐를 살 수 있게 하고 있지만 암호화폐를 산 이후에는 사용자에게 자유와 모든 책임이 따른다.
      • 사용자 스스로가 지갑과 키를 신중하게 관리해야하는 은행이 되어야 한다. 암호화폐 사기꾼에게 당해도 누구에게도 도움을 요청할 수 없기에 암호화폐 공부와 조사도 모두 혼자 해야 한다.
      • 암호화폐로 사기를 당하지 않으려면
        - 사기 감별 노하우 1. 모든 코인에 가치가 있는 건 아니다.
        - 사기 감별 노하우 2. 암호화폐에 수식어를 남발하는 사람은 거르자.
        - 사기 감별 노하우 3. 코인, 커뮤니티 등 진짜 정보를 살펴라.
        - 사기 감별 노하우 4. 탈중앙화된 코인인지 살펴라.
        - 사기 감별 노하우 5. 이론상 안전한 코인을 골라라. (stable coin)
    • ep.43 하이브리드...앱? 뭐라고요?
      • 모바일 애플리케이션은 iOS 앱, 안드로이드 앱을 말한다. 모바일에서 동작하는 iOS, 안드로이드 운영체제 위에서 돌아가는 애플리케이션을 만드는 3가지 방법으로는 하이브리드 방식, 크로스 플랫폼 방식, 네이티브 방식이 있다. 
      • 하이브리드 앱
        - 웹 뷰웹 브라우저에서 주소 창(네비게이션)을 제외한 윈도우 부분을 말하며, 웹 뷰로 만든 앱을 웹 앱이라고 한다.
        - 하이브리드 앱HTML, CSS, 자바스크립트로 개발한 웹 앱을 iOS와 안드로이드에서 모두 쓸 수 있도록 하이브리드(hybrid)로 만든 앱을 말한다. 즉, 사용자는 네비게이션이 없는 브라우저 화면인 웹 뷰를 보고 있는 것이다.
        - 하이브리드 앱을 만들고 싶다면 아파치 코르도바(Apache Cordova)를 찾아볼 것!
        • 장점: 네이티브 앱 개발 지식이 필요 없음!
          - 웹 개발자가 새로 뭔가를 배우지 않고 HTML, CSS, 자바스크립트만 알아도 충분히 개발할 수 있다.
        • 단점: UI를 한 땀 한 땀 짜야 해서 귀찮고, 스마트폰의 성능을 온전히 활용하지 못함!
          - 자바스크립트로는 기본 카메라 기능, 위치 확인, 네트워크 정보를 얻는 정도만 할 수 있어 스마트폰의 고급 하드웨어 기능을 활용하기는 어렵다.
      • 크로스 플랫폼 앱
        - 특정한 언어로 코드를 작성하면 그 코드를 iOS, 안드로이드가 이해할 수 있는 네이티브 코드로 변환해서 만든다.
        e.g. 리액트에서 이해할 수 있는 방식으로 작성한 리액트 네이티브 기술의 코드를 자바스크립트 코드로 변환하고 iOS, 안드로이드가 자바스크립트 엔진으로 실행함.
        e.g. 다트(Dart) 언어로 작성한 플러터(Flutter) 기술의 코드는 C언어나 C++언어로 변환되며 C언어와 C++언어 모두 iOS, 안드로이드에서 이해할 수 있는 언어이기 때문에 바로 실행할 수 있다. 
        • 장점: 개발자가 익숙한 코드로 한 번만 작성해도 OK!
          - iOS, 안드로이드만을 위한 코드는 언어가 달라서 각각 따로 코딩해야 했지만, 크로스 플랫폼 방식으로 개발하면 코드를 한 번만 작성하면 두 환경에 실행할 수 있다는 장점이 있다. (1타 2앱완! 시간 절약 굿!)
          - 다양한 배경의 개발자가 한 자리에 모이게 되어 다양한 라이브러리, 튜토리얼이 생겨나고 커뮤니티가 발전했다.
        • 단점: 네이티브 앱의 성능은 아직 따라갈 수 없음!
          - 네이티브 언어로 변환하는 과정이 있다는 기술적 한계가 있지만 크로스 플랫폼 앱이 느리지는 않기 때문에 적절하게 사용한다면 최고의 선택이 될 것이다. 
      • 네이티브 앱
        - iOS만을 위한 또는 안드로이드만을 위한 언어로 코드를 작성하여 개발하며, iOS는 스위프트 언어를 사용하고 안드로이드는 자바나 코틀린 언어를 사용해서 만든다.
        • 장점: 스마트폰의 성능을 최대로 사용할 수 있음
          - 코드와 스마트폰 사이에 중간 단계가 하나도 없이 잘 연결되어 있다.
        • 단점: 다른 앱에 비해 배우는 데 시간이 2배 걸림!
          - iOS, 안드로이드를 위한 언어를 모두 배워야 한다는게 큰 단점이다. 같은 앱을 만들어도 2개의 앱을 만드는 시간이 필요하고 유지 및 보수도 따로 해야 한다.
    • ep.44 NFT가 도대체 뭐길래?
      • NFT(non fungible token. 대체 불가능한 토큰)을 통해 디지털 속에 유일함, 소유권이라는 개념이 생겼고 누구나 그림 및 영상을 비롯해 모든 것을 판매할 수 있게 되었다.
      • 토큰은 이더리움(Ethereum)과 같은 블록체인으로 발행하며 '돈을 받는 기능', '돈을 받고 토큰을 보내주는 기능' 이렇게 2가지 핵심 기능인 스마트 계약(smart contract)을 구현하면 된다는 간단한 원리를 가지고 있다.
      • 토큰을 딱 1개만 발행할 수 있도록 스마트 계약을 만들고 그 안에 이미지, 영상, 노래 등 콘텐츠가 들어간 유일무이한 토큰을 발행함으로써 해당 토큰은 가치가 높은 NFT가 된다. 유일한 원본, 진짜라는 사실이 가치를 크게 높여주며, 유일한 원본임을 증명하는 기술이 바로 NFT이다.
    • ep.45 멀웨어, 바이러스, 웜 개념 몽땅 정리
      • 멀웨어(malware)는 malicious(악의 있는)와 software(소프트웨어)의 합성어로 컴퓨터를 감시하거나 파괴하는 악성 소프트웨어를 말한다. 다른 국가의 핵심 시설이나 인프라를 감시 및 파괴하기 위해 국가나 특정 기관에서 만들어 사용하는 사이버 무기이다.
      • 가장 많이 알려진 멀웨어는 바이러스(virus)웜(worm)이다. 둘 다 복제되어 전파된다는 점은 같지만 바이러스는 숙주가 필요하며 주로 숙주가 된 감염파일을 내려받게 해 피해를 입히고, 웜은 숙주가 필요하지 않고 자기 자신을 복제하며 전파된다. 
      • 웜은 미사일(missile)을 통해 컴퓨터 안에 침투한 순간 페이로드(payload)를 배포하는 방식으로 컴퓨터를 파괴시킨다. 웜은 링 구조로 되어있는 컴퓨터의 보안구조 중 가장 깊은 곳인 중앙 보안링에 있는 운영체제 바로 옆자리에 설치되며 백신 프로그램보다 훨씬 우위에 있는 바이러스이다.
        이것이 가능한 것은 아직 아무도 발견하지 못한 프로그램의 취약점인 제로데이(zero day)가 있었기 때문이다.   
  • 오늘의 파트에 대한 소감 (떠오르는 생각) :
    • 인공지능, 머신러닝, 딥러닝 파트는 전에 니꼬쌤 유튜브 새 영상이 올라왔을 때 봤던 기억이 난다. 그 후로 잊고 있었는데 이번 파트에서 다시 읽게되니 처음보다 내용을 받아들이기 수월했다. 최근에 드라마 전원일기 출연 배우들이 AI 기술로 고인이 된 동료 배우를 만나 눈물로 못다한 이야기를 나누는 유튜브 영상을 보았다. 다시 볼 수 없을거라 생각했던 사람을 내 눈 앞에서 바로 만날 수 있게 된다면 어떤 느낌일까? AI라고 하면 영화 속의 차갑고 무서운 로봇이나 딥페이크 등 범죄가 먼저 떠오르는데 저렇게 감정을 어루만지고 위로하는 역할도 할 수 있구나 싶어서 기술의 순기능을 느낄 수 있었다. 인공지능, 머신러닝, 딥러닝이 이제 그렇게 먼 미래는 아니구나 하는 생각도 들었고 개발자들이 뿌듯함과 자부심을 느끼지 않았을까? 싶어서 뭔가 내심 부럽기도 했다. 기술로 세상을 긍정적으로 바꿀 수 있는 일을 하면 보람되고 정말정말 뿌듯할 것 같다. 
    • 도커가 무엇인지 하나도 모르고 들어보기만 했던 것이었는데 이번 파트에서 간단하게나마 알 수 있어 흥미롭게 읽었다. 개발 환경 구축하기 번거로운데 그걸 해준다고! 아니 이렇게 착한 친구가 있다니..? 이래서 현업에서 쓴다는 얘기가 들렸던 거구나 싶었다. 언젠가 내가 꼭 쓰게 될 기술이 될 것 같다. 회사에서 얼른 내가 직접 써볼 수 있는 날이 오면 좋겠다!
    • 언젠가 NFT가 궁금해서 관련 책을 읽었던 적이 있었는데 그때 탈중앙화 개념이 참 신선하게 느껴지고 좀 충격적이었던 기억이 났다. 그리고 그것을 뒷받침 해주는 블록체인이라는 기술 역시 마찬가지였다. 전문 서적이었어서 그런지 책 두께가 두껍지 않았음에도 이해가 잘 되지 않아서 두루뭉술한 느낌으로 읽고 넘어갔는데 이번 파트에 쉽게 풀어져있어서 좋았다. 그런데 아무리 유일무이하고 희소성이 있어서 가치 있는 것이라고 해도 개인적인 미적 취향이 안 맞는 것인지 매우 개성강한 화풍의...원숭이 그림이 왜 그렇게 비싼지는 사실 아직 잘 모르겠다..흠🙄 아티스트나 창작하는 사람들이 본인의 작품 세계를 펼치고 팬들 모으기 좋을 것 같다. 나중에 좀 입문자를 위한 좀 쉽게 풀어진 책을 다시 읽어봐야지.
  • 추가로 알게된 것 (책내용+a 로 궁금한 것, 이해가 가지 않는 것 등)
    • 재택근무 고수의 노하우!
      • 재택근무는 자기 절제와 훈련이 되어 있지 않으면 쉽지 않다. 자기 통제 필요.
      • 재택근무 노하우 1: 일의 시작과 끝을 의식적으로 표시하기
        - 출근: (아침에 샤워를 하고, 셔츠로 갈아입으면서) "자, 지금부터 업무 시작!"
        - 퇴근: (오후 7~8시 편한 옷으로 갈아 입고, 유튜브를 틀면서) "이제 업무 끝!"
      • 재택근무 노하우 2: 일하는 공간 명확하게 구분하기
        - 재택근무 시 공간 사용 규칙
        1) 일하는 방에서는 쉬지 않는다. 2) 쉬고 싶다면 반드시 그 공간을 빠져나온다.
        - 최대한 분리해서 나만의 오피스 공간을 만드는 것이 좋다.
        '이 책상에 앉으면 일이 시작된다'.
        머릿속에 일의 시작과 끝을 계속해서 알려주는 것이 핵심!! 집중력 향상에 도움!!
      • 재택근무 노하우 3: 함께 사는 사람에게 알리기
        - 공간을 공유하는 가족에게 '나는 일하고 있어요'라는 사실을 알려줄 필요가 있다. 
        e.g. 오전 8시~오후 1시까지 말을 걸지 말아 달라고 부탁하고 일을 시작하기
    • 주니어 개발자가 빠르게 성장할 수 있는 비법
      • 나무가 아니라 숲 보기: 기술에만 집중하지 않기
        - 웹 공부 HTML부터 마스터하고 나서 CSS 공부해야지! (X)
        웹 개발을 위해 어떤 과정을 공부할지 쓱 둘러보고 큰 그림을 먼저 그리자.
        프로그래밍은 자신이 필요한 것을 공부할 때 가장 효율적이다.  
      • 할 수만 있다면 무료로 일해 보기: 실무 경험 쌓기
        - 실무 경험을 쌓아라. 요즘은 실무 경험에 준하는 면접 실력, 코딩 실력, 포트폴리오를 원한다.
        - 실무 경험을 쌓으면 좋을 사람:
        1) 실무 경험이 필요하다고 느끼는 사람, 2) 스스로 행동력이 부족하다고 느끼는 사람, 3) 자신의 코딩 실력이 실무에 정말 쓸모가 있을지 궁금한 사람
        - 무료로 일하는 경험. 고객에게 필요한 것을 기술로 제공해 준 경험.
        e.g. 전화로 예약주문, 엑셀로 데이터 정리 -> 예약관리 사이트 만들기
    • 도커를 사용하는 법과 도커의 구체적인 기능들(버추얼 머신, 스윔, 볼륨 등)
      ->도커가 필요해지면 그 때 공부해도 늦지 않다. 언젠가 내가 꼭 쓰게될 기술일테니까!
  • 소감 3줄 요약 (오늘 TIL 3줄 요약) :
    • 새로운 기술의 파도에 밀리고 잠겨 익사당하지 않으려면 책을 꾸준히 읽자. 독서도, 공부도, 운동도 습관.
    • 애옹이가 귀여움으로 세상을 구하지만, 기술도 (당연히) 세상을 구할 수 있다! 
    • REST API, 도커, 앱개발! 일하면서 사용하고, 사용할 것이고, 사용해보고 싶은 기술들.