혼자 공부하는 얄팍한 코딩 지식
고현민 지음한빛미디어
( 출판일 : 2022-05-25 )
작성자 :
김○준
작성일 : 2024-08-23
페이지수 : 324
상태 : 승인
[줄거리]
최근 홈페이지 제작문의를 할 일이 있었는데 용어조차 모르는 비전공자 입장에서 답답함을 느껴 빌린책
용어에 대해서 간단하게 알려주고 동영상 자료도 있어서 보기 좋음
개발자와 대화할 일이 있다면 그전에 봐야 할 책
[메모]
개발자 = 작가
코딩 = 글쓰기
프로그래밍 = 글짓기
개발 = 책쓰기
*웹 퍼블리셔(UI개발자) = 웹사이트에서 보이는 부분을 담당하는 개발자
*프론트엔드 개발자(클라이언트 개발자) = 웹퍼블리셔 + 자바스크립트로 프로그래밍 요소 개발하는 사람들
: HTML, CSS, 자바스크립트 공부가 필요함
*백엔드 개발자(서버 개발자) = 웹사이트에서 눈에 보이지 않는 요소를 개발, 데이터 베이스에 저장되는 정보 관련, 서버, 보안 등
: 자바스크립트, 파이썬, PHP, 자바 등 (프로그램 제작 키트 = 프레임워크)
*풀스택 개발자 = 프론트엔드와 백엔드 관련 지식을 고루 갖추어 양쪽 모두 개발할 주 ㄹ아는 개발자
: 혼자 웹 서비스 전체를 개발할 수 있는 사람
*응용 소프트웨어 개발자 = PC용 프로그램 개발
: C, 자바, 파이썬, C++, C#
*임베디드 개발자 = 목적에 맞게 설계된 하드웨어의 작동을 프로그래밍하는 직군
: 냉장고 온도 조절기, 스마트 티비, 자동차 등
: 리눅스 커널
*정보 보안 전문가 = 해커로 부터 보안이 필요해서 프로그래밍, 네트워크, 컴퓨터 구조, 운영체제 등 컴퓨터 공학 전반에 걸친 지식이 필요
: 웹, 데이터베이스, 포렌식, 암호학, 악성 코드 분석 등
*프로그래밍 > 코딩
(알고리즘에 맞게 작성된 프로그래밍의 결과물 = 소스코드)
* 코딩 : 프로그래밍 언어로 된 코드를 입력하는 작업
*프로그래밍 컴퓨터가 할일의 절차와 알고리즘 설계
*개발 : 소프트웨어를 설계, 구현, 운영, 관라하는데 기술
*데이터 : 프로그램을 실행하는데 필요한 기초자료
*라이브러리 : 하나 이상의 프로그램에 활용 될 수 있는 데이터와 명령어들의 집합
*소프트웨어를 만들고 운영하는 과정
1. 요구사항분석 - 요구사항 구체화
2. 시스템 명세 - 어떻게 구현할지
3. 구조 설계 - 어떤 종류로, 프로그래밍 언어는 무엇으로, 데이터는 어떤 방식으로 저장하고 관리, ㅇ어떤 서버에 구축할지 (프로그래밍과 코딩)
4. 구현 - 오류점검과 기능 테스트, 코드 수정
5. 테스트 - 출시 후 버그 확인 후 해결 및 기능 업데이트
6. 유지보수
(개발자의 워드 프로세스)
*IDE (통합개발환경) (Integrated Development Environment) - 바른 코드를 작성하도록 도와주는 도구
*이클립스 : 자바 프로그래밍에 사용되는 도구
*인텔리제이 : 이클립스와 비슷한 용도 (유료)
*파이참 : 파이썬에 특화된 IDE
*안드로이드 스튜디오 : 안드로이드용 개발용 버전
*엑스코드 : 애플이 개발한 IDE
*비주얼 스튜디오 : 마이크로소프트 제작한 IDE
*비주얼 스튜디오 코드 : 마이크로소프트 제작한 IDE 코드 에디터, 원하는 플러그인 추가해서 용도에 맞게 사용 가능
(프로그램의 간보기)
디버깅 : 버그를 제거한다. 오류를 찾아 제거하는 행동
빌드 : 모든 프로그램 구성요소를 모아 실행 할 수 있는 파일 또는 파일묶음을 만드는 과정
빌드번호 : 출시되기 전 프로그램 버전
버전번호 : 제품을 출시할 때 제품의 번호 (ex. 윈도우 10, 윈도우 11)
리팩토링 : 코드를 개선해서 읽기 쉽고 효율적인 코드로 만드는 작업
코드리뷰 : 개발자간 점검
문서화 : 다른 사람들이 보고 수정, 개선할 수 있도록 만드는 과정의 설명서
IT업계 용어
서버 : 저장되는 장소, 주는 컴퓨터
클라이언트 : 받는 컴퓨터
데이터 센터 (IDC) : 서버는 적합한 하드웨어 성능을 갖춰야 하고 언제 어디서든 접속 하도록 안정적인 네트워킹을 위해 온,습도 유지 및 정전, 화재로 부터 안전한 전문시설을 갖춘 곳
온프레미스 : 회사에서 자체적으로 서버를 갖추고 관리하는 것 (내부보관)
서버 호스팅 : 서버용 컴퓨터를 임대해주는 서비스 (외부보관)
클라우드 컴퓨터 : 필요한 만큼 빌려쓰는 방법 (늘릴 수도 줄일 수도 있음) - 단점은 비싸다.
: 아마존 AWS, 마이크로소프트 애저, 구글 GCP, 네이버 NCP 등이 클라우드 컴퓨팅 서비스
IaaS (이아스, 아이아스) : 클라우드를 이용해서 서버용 인프라, 즉 가상화된 서버 컴퓨터를 대여해주는 서비스
: Ex) 이용자의 자유도가 높은 만큼 손이 많이가는 서비스, AWS의 EC2가 대표적인 이아스
PaaS(파스) 애플리케이션을 개발하고 서비스 하기 위해 필요한 서버, 운영체제, 개발환경 등 자동으로 설치하고 제공하는 서비스
: Ex) AWS으 ㅣ일래스틱 빈스토크나 헤로쿠
SaaS(사스) 소프트웨어가 이미 완성된 형태로 제공되는 클라우드 서비스, 사용료만 지불하면 되는 서비스
: Ex) 구글드라이브, 네이버N클라우드, 드롭박스, MS오피스365 등
*HTML 웹페이지의 각 요소들을 배치하는 역할
*CSS 요소를 디자인 하는 역할
*자바스크립트 기능을 넣어주는 역할
*쿠키 : 브라우저에 저장되는 작은 텍스트 조각 사용자가 갖고 있는 정보 (사용자의 수고를 덜어주는데 목적)
*세션 : 로그인 후 서버로 부터 인증받았음을 증명해주는 것
*토큰 : 세션의 비효율적인 확인 방법 보다 특수한 수학적 원리로 서버에서 허가해주는 것
*캐시(Cache) : (Cash 아님)한번 받아놨던 데이터 자료를 다시 사용할 때 꺼내 쓰는 것 (데이터의 전송량을 줄이고 서비스 이용속도를 높이는데 목적)
*CDN : 콘텐츠 전송 네트워크. 속도저하를 막기 위해 웹 콘텐츠와 가까운 서버에서 전송하는 분산처리 시스템
*프레임워크 : 백엔드 개발자들이 수월하게 개발할 수 있도록 도와주는 프로그램 제작 키트
: 식재료는 라이브러리, 필요한 것만 담아놓은 밀키트는 프레임워크의 개념
*API : 소프트웨어끼리 소통하는 방법
: REST API (REpresentational State Transfer API)
컴퓨터에 정보를 전달하는 방법
*XML
: 장점) 시작되는 곳과 끝나는 곳을 표시하여 데이터의 구조를 명확히 보여줌
: 단점) 반복되는 텍스트가 많아 전체 길이가 길어짐
*JSON 제이슨
: 장점) 간단하고 높은 가독성, XML보다 효율적
: 단점) 문법 오류에 취약, 따옴표나 괄호 하나만 빠져도 문서 전체를 읽어오지 못함, 주석을 달지 못함
*YAML 야믈
: 장점) 개발자의 가독성이 좋음
*AJAX 에이잭스
: 형식이 아님, 자바스크립트를 이용해 서버와 브라우저가 데이터를 교환할 수 있는 통신기능
*IP주소 : 기기와 연결된 네트워크 끝 단의 주소 (과거 IPv4에 0~255 (약42억개) 주소의 고갈로 -> IPv6고안됨 0~F로 표현하는 16진수 3자리 숫자 8개로 표현 - 거의 무한개)
*도메인 : 기억하기 쉬운 주소로 변경
: 국내 도메인 구입가능 업체 : 가비아, 후이즈
: 해외 도메인 구입가능 업체 : 고대디
*DNS : Domain Name System
: 사용자가 주소에 www.naver.com 입력하면 DNS에 IP주소를 요청하고 DNS는 도메인에 맞는 IP 주소를 찾아 브라우저로 전달하고 웹 서버에 연결
*http : 통신규약 / www : 호스트명 (World Wide Web) / ooo.com : 도메인
: http보다 https가 신뢰가 높은 사이트임 (s 가 도메인 소유주가 인증 받은 것임)
*요청 메소드와 응답 코드
: 메소드 : 클라이언트가 서버에 원하는 것이 무엇인지
*GET : 서버에 데이터를 요청, API에서 서버로 부터 데이터 가져오기 위해 사용
*POST : 서버에 새로 저장될 자료를 보냄(게시판이나 SNS에 새 개시물 작성시 사용)
*PUT : 특정 데이터 전체를 새로 저장 (게시판의 게시물 수정시 사용)
*PATCH : 특정 데이터를 일부만 수정 (게시물의 조회수나 좋아요 수를 올릴 때 사용)
*DELETE : 특정 데이터를 삭제
*OPTIONS : 해당 URL이 어떤 메소드를 허용하는지 물어보기 위해 사용
관계형 데이터베이스의 언어
*SQL : Structured Query Lanuage (구조화 질의 언어)
컴퓨터 관련
*CPU : 컴퓨터에 주어진 일을 해내는 주체 (컴퓨터의 뇌)
1) 코어 : 일하는 여러대의 로봇 (듀얼 2, 쿼드 4, 헥사 6, 옥타 8)
2) 스레드 : 하나의 로봇에서 2대의 효율을 내는 듯한 기술,로봇의 분신술
3) 클럭 : 로봇의 손 빠르기 (기가헤르츠)
- 컴퓨터의 속도는 전반적으로 클럭과 코어의 개수 그리고 스레드의 개수로 결정 됨
*메모리 : 일을 위해 임시로 저장하는 공간, 공간을 기억하는 장치
- 기억 장치 속도 순서
: 캐시 > 메인 메모리 > 보조 기억 장치
*절차지향 프로그래밍 : 위에서부터 차례대로 읽는 방법
*객체지향 프로그래밍 : 프로그램을 다수의 객체로 만들고 이 객체끼리 서로 상호작용하는 방법을 말함
*컴파일 언어 : 실행 되기 전 다른 형식으로 번역되는 언어
*인터프리터 언어 : 작성된 코드 그대로 통역되어 실행되는 언어
* 매니지드 언어 : 언어 자체에서 메모리를 관리해 주는 언어
* 언매니지드 언어 : 개발자가 직접 메모리를 관리해야 하는 언어
*깃 호스팅 서버 : 온라인 협업 장소
*푸시 : 각자 작업한 버전을 업로드 하는 것
*풀 : 동료들이 작업한 버전을 통합된 최신 버전으로 다운로드 하는 것
[실천 포인트]
용어를 알기 쉽게 풀어주어 이해가 좋았던 책
다만 용어가 익숙치 않기 때문에 다시 반복해서 정리자료 읽어보기