IT 입문자를 위한 전반적인 개념 정리
더코딩클럽
인프런
2024.04.30~05.01
https://inf.run/E3w9Y
1. 컴퓨터
1) 하드웨어
- IT 세계에서는 컴퓨터를 구성하는 물리적인 장치를 뜻함
- CPU: 컴퓨터의 핵심적인 구성 물질 (중앙처리장치)
- 시스템을 제어하고, 계산하는 역할을 함
- 사람의 뇌와 같음
- 데이터를 처리하고 연산하는 능력
- 명령어를 실행하여 컴퓨터를 동작시키는 능력
- 메모리 (기억장치)
- 기억을 하는 공간
- 컴퓨터에서 데이터를 저장할 때, 메모리에 저장됨
- CPU가 연산한 값들을 저장함
- 프로그램이 실행되는 동안 필요한 정보를 저장함
- 데이저 저장, 메모리 접근, 프로그램 실행 등 다양한 역할을 수행함
- 입출력장치
- 키보드, 마우스, 프린터
2) 소프트웨어
- 눈에 보이지 않는 컴퓨터 프로그램
- 응용 소프트웨어: 사용자의 문제를 직접 해결하는 소프트웨어
- excel, ppt, photoshop
- 시스템 소프트웨어: 응용 소프트웨어를 실행하기 위한 플랫폼을 제공하기 위한 소프트웨어
- 유틸리티, 프로그래밍언어, 컴파일러, 운영 체제(리눅스, window, mac)
- 응용 소프트웨어: 사용자의 문제를 직접 해결하는 소프트웨어
3) 운영체제
- 운영체제(operating system)이란? -> 하드웨어와 응용 프로그램 사이에 중재자 역할
- 자원관리: 하드웨어 자원들을 이용
- 보안관리: 방화벽 관리, 권한 관리
4) 응용프로그램
- 응용프로그램이란?
- 소프트웨어 프로그램의 한 형태
- PC 안에 있는 대부분의 프로그램들
- 모바일: app
- 컴퓨터: 애플리케이션
5) 네트워크
- 네트워크
- 컴퓨터 간에 데이터 자원 공유하는 것
- (스마트폰도 CPU와 내장 메모리가 있어 컴퓨터라 칭할 수 있음)
- IP (Internet Protocol)
- IT에서 데이터 통신할 때 규칙이 필요 -> 프로토콜
- https, https, ftp, telnet...
- IT에서 데이터 통신할 때 규칙이 필요 -> 프로토콜
- IP 주소
- 인터넷에 연결된 컴퓨터 고유 식벽자
2. 개발 기본 지식
1) 프로그래밍 언어
- 컴퓨터 프로그램(ex: 카카오톡)을 만드는 언어
- 종류: C, javascript, java, python...
- CPU는 2진법으로 된 0,1(기계어)만 해석
- 컴파일러가 번역해준 기계어만 해석
2) API
- 상호작용하는 프로그램들의 매개체
프로그램 <-> (카카오 로그인, 푸시알림, 위치 가져오기) <-> 프로그램
3) 형상관리 시스템
- 소스코드의 변경사항을 관리하는 도구
- Github
- git으로 관리되는 소스코드를 저장하는 원격저장소
💡 Git 명령어
- merge: 소스코드의 변경점을 취합하는 명령어
- branch: 독립적인 개발 라인
- push: 로컬의 소스코드를 원격저장소에 저장할 때 사용
- fetch: 원격저장소가 변경사항이 있는지 확인
- pull: fetch+merge의 합성어. 변경사항을 확인하고, 실제 변경점을 취합하는 명령어
- commit: 로컬에서 변경된 부분을 저장하는 명령어. 원격저장소에 저장하는 것이 아님
4) 라이브러리 & 프레임워크
- 라이브러리
- 공통적으로 쓰는 기능을 모듈화한 뭉치
- 개발자가 컨트롤
- 프레임워크
- 프로그램을 개발할 때 제공되는 정형화된 소프트웨어. 라이브러리의 상위개념
- 전자정부프레임워크 (공공)
- 구조화된 틀 -> 일관성, 유지보수 용이
- 프레임워크가 컨트롤
5) 클라이언트 & 서버
- 클라이언트
- 서버에 요청을 하는 프로그램
- 서버
- 클라이언트의 요청에 따라 서비스를 제공하는 소프트웨어
6) 웹
- 전세계 사람들의 정보 공유
- 웹은 거미줄처럼 연결되어 있음
- HTML, CSS, JS로 이루어져 있음
- HTML: 문서의 뼈대 및 골격
- CSS: 색상, 폰트, 애니메이션
- JS: 동적 기능 구현
7) 도메인 & URL
- 도메인
- 사람들이 원하는 웹사이트에 방문할 때 입력하는 주소
https://www.notion.so ---DNS--> 192.168.0.6
- DNS
- 도메인 이름을 IP 주소로 변환하는 시스템
- URL
- 도메인과 마찬가지로 사이트에 접속할 때 입력하는 주소
- URL은 서버의 주소, 하위 디렉토리, 프로토콜 모두를 합친 주소
https://www.naver.com:80/blog/index.html
- Https : 프로토콜
- www.naver.com : 도메인
- 80 : 서버 연결 포트
- blog: 하위 디렉토리 주소
- index.html : 웹페이지 파일 이름
3. 프론트엔드
1) 브라우저가 랜더링되는 과정
- 브라우저
- 미디어 이미지 동영상 콘텐츠를 시각적으로 사용하는 소프트웨어
- 크롬, 사파리, 엣지 등
- 브라우저에서 웹이 동작하는 원리
- 브라우저에 URL 입력
- 데이터를 웹서버로부터 응답
- 응답 받은 데이터(html, css, javascript, 이미지)를 브라우저가 표현
- 크로스 브라우징
- 모든 브라우저에서 매 페이지가 잘 표현되게 하는 것
2) 검색엔진 최적화(SEO)
- 검색 결과가 상위에 노출되는 것 (신규고객, 잠재고객 유입)
💡 검색엔진 최적화의 원리
- 검색엔진 로봇이 웹사이트 정보 수집
- 검색엔진 로봇에 웹사이트 크롤링(복사)
- 사용자가 많이 검색하는 키워드에 대응하는 키워드 만들어둠(인덱싱)
- 인덱싱된 키워드에 우선순위를 매기고 높은 순서에 따라 결과로 보여줌
💡 노출 상단으로 높이는 방법
- Html 시맨틱 태그 사용
- 방문자수가 많고, 지속 시간이 긴 콘텐츠 제작
- 사람들이 많이 검색하는 키워드가 콘텐츠에 포함
- 네이버, 구글에 돈주고 광고를 함
- 양질의 콘텐츠를 만들기
3) 반응형 웹
- 크기에 따라 콘텐츠가 늘어나거나 줄어드는 웹사이트
- 모바일 웹
- 모바일 장치에서 접속했을 때 표현되는 웹사이트
4) CSR, SSR
- CSR (Client Side Rendering)
- 화면쪽에서 렌더링 (렌더링은 웹사이트에 사이트가 그려지는 과정)
- SSR (Server Side Rendering)
- 서버쪽에서 렌더링
- 차이점
- 로딩 시간: 첫 페이지 그리고 나머지 페이지 로딩 시간이 다름
- 최초의 로딩 속도는 SSR이 빠름 (필요한 파일만 받기 때문에)
- 두 번째 화면부터는 CSR이 빠름 (첫 번째 화면에서 필요한 데이터들을 모두 받았기 때문에)
- 검색엔진 최적화 다름
- 로딩 시간: 첫 페이지 그리고 나머지 페이지 로딩 시간이 다름
5) SPA (single page application)
- 하나의 페이지 서비스
- 최초 요청 시에, HTML, CSS, JS 파일을 가지고 있음
- MPA -> SPA
- 장점
- 최초에 모든 리소스들을 받음
- 하나의 페이지 내에서 움직여서 화면 전환이 부드러움
- 유지보수가 용이
6) 캐싱
- 데이터를 임시로 저장하는 공간
- 장점
- 성능 향상
- 통신 최소화
4. 백엔드
1) 데이터베이스
- 데이터베이스
- 데이터는 보관하는 저장소
- DBMS
- Database Managerment System
- SQL
- Structured Query Language
- 데이터들을 조작하기 위해 사용되는 언어
2) 클라우드
- 가상화된 서버 , 데이터베이스
- 장점
- 유연성, 접근성
- 단점
- 보안문제, 의존성
3) 아키텍처 & 서버 성능 최적화
- 아키텍처 설계
- 서비스가 어떻게 구성되고 동작하는지 설계
- 서버 성능 최적화
- 서버를 안정적으로 운영하는 것
5. 모바일
1) 모바일 용어 정리
- 안드로이드: 모바일 운영체제
- 언어: Kotlin, Java
- 안드로이드 스튜디오: 통합 개발 환경
- 앱 출시하려면, 통합 개발 환경에서 AAB 추출
- 테스트: 공개, 비공개, 내부 테스트
- IOS
- 언어: swift, Objective-C
- XCODE: 통합 개발 환경
- 앱 출시하려면, X코드에서 앱스토어에 바로 연동할 수 있음 (심사 과정 까다로움)
- 테스트: 테스트플라이트 어플이 따로 있음
2) 네이티브 & 하이브리드 & 크로스플랫폼
- 네이티브 앱
- 네이티브 언어로 개발된 앱
- 안드로이드: Kotlin, Java
- IOS: swift, Object-C
- 장점
- 성능이 우수
- 원하는 디자인 커스텀
- 단점
- 공수가 많이 투입
- 구글, 애플스토어에 심사
- 네이티브 언어로 개발된 앱
- 하이브리드
- 웹과 네이티브의 두가지 특성 결합
- 장점
- 고객의 피드백을 빠르게 수용할 수 있음
- 공수가 네티이브 대비 비교적으로 적게 투입
- 여러 플랫폼에서 작동 가능
- 웹서버에 바로 업데이트 가능
- 단점
- 디자인적으로 제약
- 성능이 네이티브보다 느림
- 크로스플랫폼
- 하나의 언어로 ios, android 개발
- Flutter, Reat Native
- 장점
- 공수를 줄일 수 있음
- 비교적 빠르게 출시 가능
- 단점
- 성능
- 하나의 언어로 ios, android 개발
300x250
'ETC > LEARN' 카테고리의 다른 글
[혼공얄코] 요청 메소드와 응답코드, 리눅스에 대한 학습 (4주 차) (0) | 2024.07.23 |
---|---|
[혼공얄코] 다양한 IT 용어 학습하기 (3주 차) (0) | 2024.07.16 |
[혼공얄코] 가깝지만 먼 AI에 대해 알아가기 (2주 차) (0) | 2024.07.11 |
[혼공얄코] 혼자 공부하는 얄팍한 코딩 지식 시작! 다시 혼공학습단! (0) | 2024.07.02 |
SQL 실습 따라하기 01 (0) | 2024.05.06 |