cheoljun.dev

IT 5분 잡학사전

노마드코더 IT 5분 잡학사전 2주 챌린지

IT
ID
11
status
Public
menu
TIL
submenu
tags
IT
summary
노마드코더 IT 5분 잡학사전 2주 챌린지
thumbnail
date
Apr 1, 2024
notion image
2023.01.14에피소드 1: 개발자에 대한 오해 5가지!에피소드 2: 어떤 언어부터 공부해야 할까?에피소드 3: 새 언어를 쉽게 배우는 노하우?에피소드 4: 언어 이름은 왜 그렇게 지었을까?에피소드 5: C, C++, C#은 이름처럼 비슷할까?2023.01.15에피소드 6: 왜 나만 오류가 자주 생길까?에피소드 7: 파이썬은 왜 이렇게 인기가 많을까?에피소드 8: 파이썬이 C 언어보다 느린 이유는?에피소드 9: 자바스크립트는 웹 개발에만 쓰는 언어일까?에피소드 10: 코틀린은 정말로 자바와 100% 호환될까?2023.01.17에피소드 11: 라이브러리와 프레임워크, 비슷한 거 아냐?에피소드 12: 제이쿼리는 반드시 배워야 하는 기술일까?에피소드 13: 그놈의 API, 대체 뭐길래?에피소드 14: 도메인은 왜 돈을 주고 사야 할까?에피소드 15: 플래시의 서비스 종료와 스티브 잡스2023.01.18에피소드 16: 인터넷 익스플로러가 사라진 이유와 브라우저 엔진에피소드 17: 아, 쿠키가 먹는 게 아니라고요?에피소드 18: 프런트엔드, 백엔드?에피소드 19: 서버가 뭔지 아직도 모른다고?에피소드 20: 슈퍼 개발자만 할 수 있다., 풀스택?에피소드 21: 서버리스는 서버가 없다는 뜻?2023.01.19에피소드 22: 자료구조와 알고리즘은 필수라고?에피소드 23: 배열이 뭐죠?에피소드 24: 알고리즘의 속도는 어떻게 표현할까?에피소드 25: 검색 알고리즘이 뭐죠?2023.01.21에피소드 26: 정렬 알고리즘이 뭐죠?에피소드 27: 스택, 큐가 뭐죠?에피소드 28: 해시 테이블이 뭐죠?에피소드 29: 개발자 필수 소양, 클린 코드!2023.01.22에피소드 30: 코로나가 준 레거시 시스템의 교훈에피소드 31: 데이터와 단짝 친구, SQL에피소드 32: NoSQL이 뭐죠?에피소드 33: 깃 & 깃허브, 똑같은 거냐고?에피소드 34: 버전을 표기하는 방법도 있어요?2023.01.24에피소드 35: 비밀번호는 어떻게 저장될까?에피소드 36: 객체 지향 프로그래밍이 뭐죠? -1-에피소드 37: 객체 지향 프로그래밍이 뭐죠? -2-에피소드 38: 함수형 프로그래밍이 뭐죠?2023.01.25에피소드 39: 인공지능, 머신러닝, 딥러닝, 아직도 구분하기 힘들다고?에피소드 40: REST API라니, 휴식 API인가? 이게 대체 뭐죠?에피소드 41: 도커가 뭐지? 왜 필요할까?에피소드 42: 암호화폐의 진실에피소드 43: 하이브리드...앱? 뭐라고요?에피소드 44: NFT가 도대체 뭐길래?에피소드 45: 멀웨어, 바이러스, 웜 개념 몽땅 정리

 

2023.01.14

오늘 읽은 범위: 에피소드 1 ~ 에피소드 5

에피소드 1: 개발자에 대한 오해 5가지!

진실 정리하기
  1. 누구나 프로그래밍을 잘할 수 있는 건 아니다
  1. 프로그래머는 암기력이 부족해도 된다
  1. 개발자는 천재이거나 해커가 아니다
  1. 코딩은 재능이 아닌 끈기의 영역이다
  1. 수학 못해도 개발자가 될 수 있다

에피소드 2: 어떤 언어부터 공부해야 할까?

  1. 프로그래밍으로 하고 싶은 것을 먼저 정하고 그에 맞는 언어를 공부하면 된다
  1. 가전 제품에 이식되는 프로그램을 만들고 싶다면 C언어
  1. 시스템 유지보수, 안드로이드 앱 개발을 하고 싶다면 자바
  1. 웹 개발, 인공지능 개발 등 범용성이 매우 넓고 초보자에게는 파이썬.
  1. 웹 개발을 하고 싶다면 자바스크립트

에피소드 3: 새 언어를 쉽게 배우는 노하우?

  1. 공식 문서 살펴보기
  1. 문법 확인하기
  1. 다른 언어와 비슷한 특징 집중해서 보기
  1. 새 언어로 코딩 시작하기
  1. 튜토리얼 시작하기
  1. 나만의 프로젝트 만들기

에피소드 4: 언어 이름은 왜 그렇게 지었을까?

  1. 자바는 좋아하던 커피 종류가 자바라서
  1. 코틀린은 러시아의 섬인 코틀린을 따서
  1. 자바스크립트는 처음에 모카에서 라이브스크립트로 이름을 바꿨는데 자바가 엄청나게 유행할때 라이브스크립트를 널리 알리려는 의도로 자바스크립트로 이름을 바꿈
  1. C 언어는 당시 가장 유명했던 프로그래밍 언어인 B 언어의 이름을 따라 지음
  1. C++는 C에서 조금 더 발전한 언어라는 의미로 이름을 지음
  1. C#은 C++ 다음에 등장한 언어인데 +기호 4개를 붙인 모양
  1. 루비는 펄(Perl) 언어의 영향을 많이 받았는데, 진주를 뜻하는 펄과 발음이 비슷해서 루비라고 지음
  1. 파이썬은 코미디 쇼의 이름을 따서 지음
  1. 고(Go)는 단순히 구글이 만든 언어라서
  1. 러스트는 녹병이라는 곰팡이 이름을 따서 지음

에피소드 5: C, C++, C#은 이름처럼 비슷할까?

  1. C 언어는 자원을 효율적으로 쓰면서도 최대 성능을 내는 프로그램을 만들 때 사용한다
  1. C++은 C 언어를 포함한 언어고 객체 지향을 지원하는 언어이다
  1. C#은 마이크로소프트에서 만든 언어인다 C와 C++와는 완전히 다른 언어이다. 마이크로소프트에서 만든 자바 언어라고 볼 수 있다.
 
 

2023.01.15

오늘 읽은 범위: 에피소드 6 ~ 에피소드 10

에피소드 6: 왜 나만 오류가 자주 생길까?

훌륭한 개발자가 되려면 오류를 만났을 때 잘 대응 해야 한다.
오류를 만났을 때 대응 방법 3가지
  1. 문제가 생겼을 때 나 자신을 문제에서 빼지 말 것
  1. 오류부터 고치려고 무작정 달려들지 말 것
  1. 오류 메시지를 읽을 것

에피소드 7: 파이썬은 왜 이렇게 인기가 많을까?

스택오버플로 사이트의 설문조사를 보면 파이썬의 인기는 계속해서 올라간다. 그 이유를 알아보면,
  1. 파이썬은 영어와 매우 비슷해서 친숙하다
  1. 파이썬은 활용 범위가 매우 넓다
  1. 파이썬의 커뮤니티가 어마어마하게 크다
  1. 파이썬의 업무 자동화에 완전 찰떡이다

에피소드 8: 파이썬이 C 언어보다 느린 이유는?

프로그래밍 언어는 2가지 방법으로 번역되는데 각각 인터프리트 언어, 컴파일 언어라고 한다.
  1. 인터프리트 언어: 동시 통역사 같은 방식(실시간 번역)
  1. 컴파일 언어: 도서 번역가처럼 해석
  1. 파이썬은 인터프리트 언어이고 C는 컴파일 언어라서 파이썬이 더 느리다

에피소드 9: 자바스크립트는 웹 개발에만 쓰는 언어일까?

자바스크립트는 웹 개발말고도 다양한 곳에 쓰인다.
  1. 하이브리드 앱, 크로스 플랫폼 앱을 만들 수 있다.
  1. 윈도우, 맥, 리눅스를 위한 데스크톱 소프트웨어를 만들 수 있다.
  1. 게임을 만들 수 있다.
  1. 3D, 가상 현실, 증강 현실 개발도 할 수 있다
  1. 머신러닝도 할 수 있다.

에피소드 10: 코틀린은 정말로 자바와 100% 호환될까?

코틀린은 젯브레인즈(JetBrains)라는 회사에서 자바와 호환되고 더 좋고 멋진 프로그래밍 언어로 개선하고 싶어서 만든 언어이다.
자바는 컴필레이션과 인터프리테이션을 다 활용하기 떄문에 코틀린이 자바와 100% 호환될 수 있다.
코틀린을 굳이 써야 하는 이유는 다음과 같다.
  1. 코틀린은 null에서 안전한 언어다
  1. 코틀린은 코루틴을 지원하는 언어다. 코루틴은 문법인데 이 문법은 많은 일은 한번에 실행할 수 있게 해준다.
소감:
  • 다양한 언어들의 특징을 알 게 되어서 좋았다.
 

2023.01.17

오늘 읽은 범위: 에피소드 11 ~ 에피소드 15

에피소드 11: 라이브러리와 프레임워크, 비슷한 거 아냐?

공통점: 개발 속도를 더 빠르게 만들어 준다
차이점: 내가 제어하는가, 제어당하는가?
  1. 라이브러리는 필요할 때 불러서 쓸 수 있다
  1. 라이브러리를 사용하다가 마음에 들지 않으면 다른 라이브러리로 대체해도 된다
  1. 라이브러리를 교체한다고 해서 프로젝트의 모든 것이 무너지지 않는다
  1. 프레임워크는 라이브러리와 반대로 프레임워크가 우리를 제어한다
  1. 프레임워크를 사용해 코딩을 할 때는 규칙을 따라야 하고, 이 규칙을 바꿀 수 없다

에피소드 12: 제이쿼리는 반드시 배워야 하는 기술일까?

  1. 자바스크립트가 지금처럼 좋은 언어가 아니고 브라우저의 문제점이 많던 시절 제이쿼리는 브라우저의 호환성을 챙기면서도 코드를 깔끔하고 아름답게 만들어 줘서 유명해졌다
  1. 지금의 자바스크립트는 ES2015, ES2016, ES2017을 거치면서 매우 강력해져서 제이쿼리를 사용할 이유가 사라졌다
  1. 하지만 아직도 제이쿼리를 사용하는 웹 사이트, 회사가 많기 때문에 정말로 필요할 때에만 배우면 된다!

에피소드 13: 그놈의 API, 대체 뭐길래?

API는 애플리케이션 프로그래밍 인터페이스(Application Programming Interface)의 줄임말이다.
  1. API는 프로그램끼리 소통하도록 도와준다
  1. API의 작동 방식의 특징은 사용하는 사람은 알 수 없다는 것이다

에피소드 14: 도메인은 왜 돈을 주고 사야 할까?

  1. 숫자에 불과한 IP 주소의 불편함을 해소하기 위해 도메인 시스템이 생겼다
  1. 도메인 시스템을 관리하는 것으로 레지스트리가 있다
  1. 레지스트리는 기업에서 운영한다
  1. 그런데 레지스트리를 관리하는 기업은 도메인을 만드는 역할을 할 뿐 도메인을 직접 판매하진 않는다
  1. 도메인을 사고 싶다면 리셀러에게서 사야하는데, 그 이유는 도메인을 레지스트리에 등록하는 과정이 매우 복잡하기 때문이다.
  1. 아이캔(ICANN)은 도메인을 관리하는 비영리 기구인데, 여기에 신청하면 새로운 레지스트리를 운영할 수 있다(비용이 엄청남)

에피소드 15: 플래시의 서비스 종료와 스티브 잡스

  1. 플래시는 애니메이션을 브라우저에 띄울 수 있게 해주는 프로그램이다
  1. 플래시는 웹사이트를 아름답게 만들어 주었다
  1. 하지만 스티브 잡스는 플래시 사용을 전면 금지해야 한다고 소비자와 임직원에게 공식 서신을 보냈다
  1. 첫 번째로 플래시는 오픈소스가 아니라 회사 소유라 모든 사람이 프로그램의 코드를 수정, 사용할 수 없었다. 두 번째로 플래시는 데스크톱을 위한 프로그램이므로 마우스를 활용해야 했는데, 손가락 터치를 활용하는 iOS로서는 이 점이 개발을 어렵게 만들었다5 이렇게 HTML5, CSS3에 플래시를 대체할 만한 기술이 도입되고, 플래시 없이도 아름다운 웹 사이트를 만들 수 있게 되자 어도비는 2020년 12월 31일에 플래시의 종료를 공식 발표했다
소감:
  • 라이브러리와 프레임워크의 정확한 차이를 알게 되었고, 어딘가에서 많이 들어봤던 api, 도메인의 개념도 알게 되어서 좋았다.
 

2023.01.18

오늘 읽은 범위: 에피소드 16 ~ 에피소드 21

에피소드 16: 인터넷 익스플로러가 사라진 이유와 브라우저 엔진

1996년에 인터넷 익스플로러 3.0 버전이 발표되었다. 인터넷 익스플로러는 CSS를 최초로 적용한 웹 브라우저였다. 1999년, 인터넷 익스플로러 5.0 버전이 나왔을 때는 에이젝스(Ajax, Asynchronous JavaScript and XML) 기술을 최초로 지원했다.
  1. 인터넷 익스플로러는 시장을 독점했는데, 그 점유율이 무려 95%였다
  1. 그렇다 보니 업데이트를 게을리 해 보안 문제도 빨리 고쳐지지 않았고, 다른 웹 브라우저는 발전했다
  1. 결국 마이크로 소프트는 인터넷 익스플로러 지원을 중단했고, 마이크로소포트 엣지를 새롭게 발표했다

에피소드 17: 아, 쿠키가 먹는 게 아니라고요?

쿠키는 어떤 웹 사이트에 방문했을 때 브라우저를 통해 여러분의 컴퓨터에 보관하는 기록물을 말한다.
  1. 쿠키는 도메인 1개에만 한정한다
  1. 쿠키는 자동으로 보낸다
  1. 쿠키는 컴퓨터에 자동으로 저장된다

에피소드 18: 프런트엔드, 백엔드?

프런트엔드는 실제로 사용화는 화면을 담당하는 부분이고, 백엔드는 데이터베이스나 라우터와 같은 웹 사이트의 뒤쪽 부분을 담당한다.
  1. 프런트엔드는 기술의 변화 속도가 엄청 빠르다
  1. 프런트엔드는 내가 입력한 내용을 바로 볼 수 있다
  1. 백엔드는 개발 환경이 안정적이다
  1. 백엔드는 기술 선택지가 다양하다
  1. 백엔드는 사용자와 거리가 멀어서 흥미가 떨어진다

에피소드 19: 서버가 뭔지 아직도 모른다고?

서버는 모니터가 없고 365일 24시간 내내 인터넷에 연결되어 있는 컴퓨터이다. 서버는 크기, 저장소, 메모리가 모두 어마어마하다.
  1. 서버는 24시간 내내 주소 입력을 기다린다
  1. 주소가 입력되면 그 주소에 해당하는 데이터를 꺼내서 보여 준다

에피소드 20: 슈퍼 개발자만 할 수 있다., 풀스택?

풀스택은 프런트엔드, 백엔드, 데브옵스다
  1. 데브옵스란 소프트웨어의 개발(development)과 운영(operations)의 합성어이다. 소프트웨어 개발자와 정보 기술 전문가 사이에 소통, 협업, 통합을 강조하는 개발 환경이나 문화를 말한다
  1. 프런트엔드, 백엔드 개발을 다 마치면 이걸 서버에 올려야한다. 이를 위해선 서버를 고르고, 설정하고, 서버에 소프트웨어도 설치하고, 데이터베이스 설정도 하고, 보안도 신경써야하고.... 등등 엄청 많은데 이 모든 것을 데브옵스라 한다.
  1. 이런 일을 하는 사람을 데브옵스 개발자라고 한다
  1. 따라서 프런트엔드, 백엔드, 데브옵스를 모두 다 할 수 있는 사람이 풀스택 개발자이다

에피소드 21: 서버리스는 서버가 없다는 뜻?

서버리스는 우리가 직접 관리하지 않는 서버를 의미
  1. 서버는 예전에는 전부 수동으로 관리했다
  1. 이때 아마존이 등장해 EC2라는 서비스를 선보이는데, 이는 거실이나 사무실 한쪽 구석을 차지했던 서버를 아마존이 대신 운영해 준다는 목적으로 나온 서비스이다.
  1. 하지만 이런 서비스들은 하드웨어를 제공, 관리해 줄 뿐이고 서버의 소프트웨어 관리는 우리가 해야한다. 바로 이때 서버리스가 등장한다
  1. 서버리스 구조는 일단 우리들의 서버를 위한 소프트웨어(백엔드 코드)를 작은 함수 단위로 쪼갠다
  1. 이 함수를 서버에 올리는데 이 함수들은 서버에서 항상 깨어 있지 않다.
  1. 이러면 비용 면에서 큰 장점이 생기는데, 24시간 요청에 응답할 준비를 하는 서버는, 서버리스에선 함수들이 요청 할 때에만 깨어나고 그 외에는 잠을 잔다
  1. 하지만 두 가지 단점이 있는데, 첫 번째로는 서버리스의 함수는 잠에서 깰 때 시간이 필요하다(콜드 스타트). 두 번 째로는 서버 제공자에게 지나치게 의존한다. 그렇기 때문에 서버가 마음에 들지 않는다고 해서 쉽게 다른 회사의 서버리스 서비스로 옮기기는 쉽지 않다
소감:
  • 풀스택이 단순히 프론트엔드, 백엔드인 줄 알았는데 데브옵스까지 해야 풀스택 개발자라고 하는 것을 알게 되었고, 이 때 데브옵스가 뭔지를 잘 몰랐는데 개념을 알게 되었다. 또한 서버, 서버리스, 쿠키의 대한 개념까지도 알게 되어서 유익했다!
 

2023.01.19

오늘 읽은 범위: 에피소드 22 ~ 에피소드 25

에피소드 22: 자료구조와 알고리즘은 필수라고?

효율적인 코드, 속도가 빠른 코드를 작성하기 위해선 자료구조와 알고리즘이 필요하다
  1. 알고리즘이란 컴퓨터에게 내리는 지시 사항을 나열한 것
  1. 컴퓨터 알고리즘에는 패스파인더 알고리즘, 압축 알고리즘 등 다양한 것이 있다
  1. 자료구조는 데이터를 효율적으로 보관하고 찾기 위한 것이다

에피소드 23: 배열이 뭐죠?

  1. 배열은 램에 줄줄이 이어진 형태로 공간을 차지한다
  1. 컴퓨터는 배열의 시작 주소와 길이를 알고 있다. 그래서 배열은 읽는 속도가 아주 빠르다
  1. 배열은 맨 앞부터 차곡차곡 채워져 있어야 한다. 그래서 배열은 삽입과 삭제가 느리다

에피소드 24: 알고리즘의 속도는 어떻게 표현할까?

알고리즘 속도는 시간 복잡도로 설명한다. 알고리즘으로 작업을 완료할 때까지 걸리는 절차 수 N을 이용해서 O(N), O(log N)과 같이 표현하는데, 이것을 빅오(Big-O)표기법이라고 한다.
  1. 코드의 실행문에 따라 O(1). O(n), (n) 등으로 표현할 수 있다
    1. 2

에피소드 25: 검색 알고리즘이 뭐죠?

  1. 선형 검색 알고리즘은 배열의 맨 처음붙터 순서대로 검색하는 알고리즘이다
  1. 이진 검색 알고리즘이란 정렬된 배열에서 중앙값을 기준으로 왼쪽, 오른쪽 값을 통해 값을 찾는 알고리즘이다
소감:
  • 기본적인 알고리즘의 특성을 알게 되었다. 전공자이기 때문에 오늘 읽은 내용은 이미 알고 있던 내용이였다!
 

2023.01.21

오늘 읽은 범위: 에피소드 26 ~ 에피소드 29

에피소드 26: 정렬 알고리즘이 뭐죠?

시간 복잡도는 같으면서 성능은 다른 정렬 알고리즘 3가지: 버블 정렬, 선택 정렬, 삽입 정렬
  1. 버블 정렬:
    1. 썩 좋은 알고리즘이라고 할 수 없다.
    2. 실제로 많이 사용하지 않는다.
    3. 하지만 정렬 공부할 때는 가장 이해하기 쉽다.
    4. 사이클을 돌면서 왼쪽과 오른쪽 값을 비교하는 것이다.
    5. 시간 복잡도가 O(n)이다.
      1. 2
  1. 선택 정렬:
    1. 전체 데이터 중에서 가장 작은 데이터 또는 가장 큰 데이터의 위치를 따로 기억하는 방식으로 작업을 진행한다.
    2. 시간 복잡도는 O(n)이지만 자리를 바꾸는 연산은 사이클당 1번이므로 버블 정렬보다는 훨씬 효율적이다.
      1. 2
  1. 삽입 정렬:
    1. 삽입 정렬은 앞에 있는 데이터를 보면서 배치하는 특성이 있다.
    2. 시간 복잡도는 O(n)이다.
      1. 2

에피소드 27: 스택, 큐가 뭐죠?

스택, 큐는 문법이 따로 없고 기존 프로그래밍 언어의 문법으로 데이터를 저장할 때 어떤 규칙만 부여하기만 하면 된다.
  1. 스택:
    1. 위에서 데이터를 쌓는다.
    2. 위에서부터 데이터를 뺀다.
    3. 이런 방식을 LIFO(last in, first out)라고 한다.
  1. 큐:
    1. 위로 데이터를 쌓는다.
    2. 아래에서부터 데이터를 뺀다.
    3. 이런 방식을 FIFO(first in, first out)라고 한다.

에피소드 28: 해시 테이블이 뭐죠?

해시 테이블은 키와 값을 짝지어 모은 것이다
  1. 해시 테이블은 사전의 개념과 같다.
  1. 선형 검색의 시간 복잡도는 O(n)이지만 해시 테이블은 O(1)이다.
  1. 또한 데이터를 추가, 삭제할 때도 O(1)이므로 검색 외 다른 작업에서도 효율이 좋다.

에피소드 29: 개발자 필수 소양, 클린 코드!

클린 코드란 설명이 필요 없는 코드를 말한다. 코드를 읽기만 해도 이 코드가 무슨 일을 하는지, 어떤 것을 의미하는지 물어보지 않아도 이해되는 코드를 뜻한다.
  1. 의미 있는 변수, 함수의 이름을 적절히 사용하라
  1. 함수 이름은 가급적 동사로 지어라
  1. 매개변수는 너무 많이 쓰지 마라
  1. 불린값을 인자로 보내지 마라
  1. 축약어를 쓰지 마라
소감:
  • 알고리즘 기본 지식인 정렬과, 자료구조의 기본 개념 스택과 큐를 다시 한번 복습할 수 있었다. 클린 코드를 작성하는 방법 중에 함수 이름을 가급적 동사로 지으라는 말씀을 하였는데, 생각해보니 나도 명사로 자주 짓는거 같다. 동사로 지어서 이름만으로 함수의 기능을 생각할 수 있도록 노력해야겠다.
 

2023.01.22

오늘 읽은 범위: 에피소드 30 ~ 에피소드 34

에피소드 30: 코로나가 준 레거시 시스템의 교훈

코볼은 1959년에 탄생한 정말 오래된 언어다. 하지만 2020년 코로나의 확산으로 실업자들은 정부 사이트에 들어가서 생계를 위한 지원을 신청해야 했는데 그 시스템이 코볼로 구현되어 있어 뉴저지 주지사는 코볼 개발자를 TV에 나와서 찾았따/
  1. 레거시(legacy)는 유산이란 뜻인데, 오래 전에 개발된 시스템을 레거시 시스템이라고 한다
  1. 예전의 코볼의 인기는 정말 많았다
  1. 하지만 오래 되었기 때문에 이미 훌륭한 대체 언어들이 많고, 개발자들은 다른 언어들을 배우기 때문에 코볼 커뮤니티가 적다
  1. 시스템은 한번 구축하면 끝이 아니라 꾸준히 관리해야 한다

에피소드 31: 데이터와 단짝 친구, SQL

SQL은 Structured Query Language의 줄임말인데 데이터베이스를 다루는 언어이다.
  1. 데이터베이스는 데이터를 보관하는 창고 역할만 하고 데이터를 직접 정리하거나 처리하는 일들은 DBMS(Database Management System)이 한다
  1. DBMS의 종류는 MySQL, PostgreSQL, SQLite, Oracle, MariaDB 등이 있다
  1. ORM(Object Relational Mapping)은 개발자에게 SQL 번역기 같은 도구인데 ORM을 한번 경험한 개발자는 SQL 공부를 자꾸 뒤로 미루게 된다. 하지만 ORM에 의존하면 ORM만으로 해결하기 어려운 상황에 대처하기 어렵다.
  1. 따라서 SQL의 기초 공부는 필수이다

에피소드 32: NoSQL이 뭐죠?

  1. NoSQL은 언어의 특징만 있는 것이 아니라 그들이 사용하는 데이터베이스 자체의 성질도 다르다.
  1. NoSQL의 데이터베이스 종류로는 도큐먼트 데이터베이스(document DB), 키값 데이터베이스(key-value DB), 그래프 데이터베이스(graph DB) 등이 있다
  1. 도큐먼트 데이터베이스:
    1. 데이터를 JSON 도큐먼트 형태로 저장한다.
    2. 따라서 데이터 형식이 매우 자유롭다.
  1. 키값 데이터베이스:
    1. 카산드라디비(CassandraDB), 다이나모디비(DynamoDB)가 대표적이다.
    2. 읽고 쓰는 속도가 엄청 빠르다.
  1. 그래프 데이터베이스:
    1. 노드로 관계를 표현한다.

에피소드 33: 깃 & 깃허브, 똑같은 거냐고?

  1. 깃:
    1. 파일 이력을 관리하는 프로그램이다.
    2. 협업과 버전관리에 유용하다.
  1. 깃허브:
    1. 깃으로 관리한 파일 이력을 모두 저장해서 공유할 수 있는 곳이다.
    2. 깃허브에 깃 이력을 업로드하는 것을 푸시, 내려받는 것을 풀이라고 한다.
    3. 깃랩(GitLab), 비트버킷(Bitbucket)이라는 깃 이력 보관소 서비스도 있지만 깃허브가 가장 유명하다.

에피소드 34: 버전을 표기하는 방법도 있어요?

숫자 3개를 사용하는 버전 표기 방식을 시맨틱 버저닝(Semantic Versioning Specification, SemVer)이라고 한다.
  1. 예를 들어 버전 4.0.5라면 첫 번째 숫자는 프로그램에 엄청나게 큰 변화가 있을 때 바뀐다
  1. 두 번째 숫자는 마이너한 업데이트를 의미한다
  1. 세 번째 숫자는 패치나 버그 수정을 의미한다. 예를 들어 4.0.25와 같이 표기되었다면 수정을 25번했다고 생각해도 좋다
소감:
  • 버전을 표기하는 것도 표기 방식이 정해져있다는 것이 신기했고 알게되어서 유익했다.
  • 지금 SQL을 배우고 있는데 NoSQL도 얼른 배우고 싶다!
  • 코볼이라는 언어는 언어의 역사를 배울 때 듣던 언어인데 최근에 코볼 개발자를 구했었다는 사실을 알게 되어서 신기했다.
 

2023.01.24

오늘 읽은 범위: 에피소드 35~ 에피소드 38

에피소드 35: 비밀번호는 어떻게 저장될까?

  1. 비밀번호 시스템 구축의 괜찮은 방법으로는 해시 함수가 있다
  1. 해시 함수는 입력한 값을 무작위 값으로 둔갑시켜 준다
  1. 해시 함수는 동일한 입력값에 대해 동일한 출력값을 가진다
  1. 해시 함수는 입력값이 아주 살짝만 바뀌어도 출력값은 엄청나게 크게 바뀐다
  1. 해시 함수는 반대로 입력한다고 해서 원래 값이 나오지 않는다
  1. 해시 함수도 완벽하지 않아서 레인보우 테이블이 있는데, 이는 해시 함수가 변경한 값을 원래의 값과 연결한 표이다. 그래서 레인보우 테이블이 털리면 위험해진다
  1. 최종적으로 솔트는 아주 조그마한 무작위 텍스트인데, 비밀번호를 솔트와 합쳐서 해시 함수에 통과시키면 레인보우 테이블이 있어도 원래 비밀번호를 찾을 수 없다

에피소드 36: 객체 지향 프로그래밍이 뭐죠? -1-

  1. 프로그래밍 패러다임으로 절차 지항 프로그래밍, 객체 지향 프로그래밍, 함수형 프로그래밍이 있다
  1. 클래스는 객체를 계속 생성할 수 있는 공장과 같다

에피소드 37: 객체 지향 프로그래밍이 뭐죠? -2-

  1. 상속을 하면 부모 속성은 다 가지면서도 자신만의 속성을 추가할 수 있다

에피소드 38: 함수형 프로그래밍이 뭐죠?

  1. 함수형 프로그래밍을 배워야 하는 이유는 '버그가 발생하기 어려운 구조'라서 개발자에게 매우 유용하기 때문이다
  1. 함수형 프로그래밍에는 선언형 프로그래밍과 명령형 프로그래밍이 있다
  1. 선언형 프로그래밍은 원하는 결괏값을 선언한다(ex. CSS)
  1. 명령형 프로그래밍은 원하는 결괏값에 어떻게 도달하는지 선언한다
소감:
  • 해시 함수는 많이 들어봤지만, 레인보우 테이블과 솔트는 처음 듣는 개념인데 관심이 생겨서 더 알아봐야 겠다
  • 객체 지향 프로그래밍은 알고 있었지만 함수형 프로그래밍이 또 있는지는 처음 알았다.
 

2023.01.25

오늘 읽은 범위: 에피소드 39~ 에피소드 45

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

  1. 인공지능은 좁은 인공지능과 일반 인공지능으로 나눌 수 있다
  1. 사람처럼 행동하는 일반 인공지능은 현재 기술로는 만들 수 없다
  1. 한 가지만 잘하는 좁은 인공지능은 딥러닝이나 머신러닝으로 만든다
  1. 머신러닝, 딥러닝은 인공지능이 학습하는 방식 또는 인공지능을 학습시키는 방식을 말한다
  1. 머신러닝은 인공지능을 학습시키는 방법이다. 직접 가르칠 수 있는 지도 학습 방식이 있고, 알아서 배우게 할 수 있는 비지도 학습 방식이 있다
  1. 딥러닝은 머신러닝을 달성하기 위한 방법이다
  1. 요즘 머신러닝을 배울 수 있는 가장 쉬운 방법은 파이썬을 이용하는 것이다. 텐서플로(Tensor Flow) 는 인공지능을 개발하는 도구로 가장 유명한 프레임워크이다

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

  1. RSET API는 RSET 방식으로 설계한 API를 말하고 그 이상 그 이하도 아니다

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

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

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

  1. 암호화폐는 사용한 사람을 은행 자체로 만든다. 따라서 스스로 재산을 안전하게 관리 해야 한다
  1. 암호화폐 세상에는 모든 정보가 공개된다
  1. 암호화폐로 사기를 당하지 않으려면 공부도, 조사도 모두 혼자 해서 스스로 관리해야 한다

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

  1. 애플리케이션을 만드는 방법에는 하이브리드 방식, 크로스 플랫폼 방식, 네이티브 방식이 있다
  1. 하이브리드 앱은 웹 사이트를 보여주는 웹 뷰를 말한다
  1. 하이브리드 앱의 장점으로는 네이티브 앱 개발 지식이 필요없다. 단점으로는 UI를 한 땀 한 땀 짜야 해서 귀찮다
  1. 크로스 플랫폼 앱은 특정한 언어로 코딩하면 나중에 iOS, 안드로이드가 이해할 수 있는 코드로 변환해서 만든다
  1. 크로스 플랫폼 앱의 장점은 개발자가 익숙한 코드로 한 번만 작성해도 된다. 단점으로는 네이티브 앱의 성능은 아직 따라 갈 수 없다
  1. 네이티브 앱은 말 그대로 iOS 또는 안드로이드만을 위한 언어로 코드를 작성하여 개발했다.
  1. iOS는 스위프트, 안드로이드는 자바나 코틀린을 사용해서 만든다.
  1. 네이티브 앱의 장점으로는 스마트폰의 성능을 최대로 사용할 수 있다. 단점으로는 다른 앱에 비해 배우는 데 시간이 2배 걸린다

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

  1. NFT는 non fungible token의 줄임말로 대체 불가능한 토큰을 말한다
  1. 토큰은 이더리움(Ethereum)과 같은 블록체인으로 발행한다
  1. 토큰에는 2가지 핵심기능, 즉 '돈을 받는 기능'과 '돈을 받고 토큰을 보내 주는 기능'이 반드시 있어야 하는데, 이를 합쳐서 스마트 계약(smart contract)이라고 한다

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

  1. 멀웨어(malware)는 malicious(악의 있는)와 software(소프트웨어)의 합성어이다. 컴퓨터를 감시하거나 파괴하는 악성 소프트웨어이다
  1. 멀웨어 중에서도 바이러스(virus)와 웜(worm)이 가장 많이 알려졌다
  1. 바이러스는 숙주가 필요하고 웜은 숙주가 필요 없다
  1. 웜은 미사일(missile)과 페이로드(payload)가 필요하다. 웜은 미사일을 통해 컴퓨터 안에 침투하고, 그 순간 페이로드를 배포하는 방식으로 컴퓨터를 파괴시킨다
소감:
  • 처음으로 챌린지를 끝까지 완료 했는데 뿌듯하다. 다음 챌린지도 완료하고 싶다.
Cheoljun Park
Fullstack Developer

구현 과정과 트러블슈팅, 배운 것들을 기록합니다.

댓글