혼자 공부하는 얄팍한 코딩 지식

이연진·2024년 1월 17일
0

book

목록 보기
24/35
post-thumbnail

웹 개발자

  • 웹 퍼블리셔 = UI 개발자 (CSS, HTML)

  • 프론트엔드 개발자 = 클라이언트 개발자(자바스크립트)

  • 백엔드 개발자 = 서버 개발자(파이썬, PHP..)

  • 풀스택 개발자

모바일 개발자

  • 안드로이드 개발자

  • iOS 개발자

  • 크로스 플랫폼 개발자

게임 개발자

응용 소프트웨어 개발자 (PC용 프로그램 개발)

임베디드 개발자 (하드웨어 개발자)

정보 보안 전문가

AI 개발자

  • 인공지능 < 머신러닝 < 딥러닝

소프트웨어 < 프로그램 (< 응용 프로그램 + 시스템 프로그램) + 데이터 + 라이브러리

소스코드

= 컴퓨터에 어떤 명령을 내리기 위해 컴퓨터가 이해할 수 있는 언어로 작성한 정보

= 설계문 + 명령문 + 주석

코딩 = 소스코드를 작성하는 작업

알고리즘

프로그래밍

개발

  • 요구 사항 분석 > 시스템 명세 > 구조 설계 > 구현 > 테스트 > 유지보수

데이터 + 라이브러리(필요한 기능을 일정 단위로 묶은 것) > 실행 프로그램

== 이 모든 것을 아우르는 것이 소프트웨어 == 시스템 프로그램

애플리케이션 = 어플 = 앱 == 응용프로그램

프로그래밍 언어

  • 저수준 언어(기계어)

  • 고수준 언어

    이 사이 어셈블리어 존재

IDE

= 통합계발환경

= 코드를 편리하게 실행할 수 있을 뿐 아니라 각 기능을 실제 테스트하고 오류나는 원인을 친절하게 알여줌

  • 이클립스, 인텔리제이, 파이참, 안드로이드 스튜디어, 엑스코드, 비주얼 스튜디오, 비주얼 스튜디오 코드

디버그

= 오류 수정 프로그램과 그 작업을 통칭하는 단어

디버깅

= 오류 찾아 제거하는 행동

빌드

= 소스코드를 비롯한 프로그램 구성 요소를 모아 실행 할 수 있는 파일 또는 파일 묶음을 만드는 과정

= 윈도우 프로그램이면 exe, 모바일앱이면 apk로 변환

빌드

= 최종적으로 건넬 판매용 요리(릴리스용 빌드) + 살펴보기 위해 만드는 요리(디버그용 빌드)

배포

유지보수

리팩토링

코드 리뷰

코드 컨벤션

문서화 == 주석

서버

= 저장하고 있는 정보나 서비스를 필요한 경우 네트워크를 통해 사용자의 컴퓨터나 스마트폰으로 전달해주는 컴퓨터

= 역할의 개념

클라이언트

= 데이터를 받은 컴퓨터

= 노트북, 핸드폰, 전자시계 등

데이터 센터 = IDC

  • 없는 기업의 경우 서버용 컴퓨터를 임대하는 서버 호스팅 서비스 사용

  • 자체적으로 갖추고 관리하는 경우 = 온프레미스

단순 서버 호스팅

  • 사용 가능 용량 한정적

  • 서버에 대한 지식 필요

클라우드 호스팅

  • 서버를 가상화하여 각종 편의 긴으과 함께 필요한 만큼 사용 가능한 서비스

  • IaaS, PaaaS, SaaS

웹 브라우저

= 웹사이트 열람에 사용되는 소프트웨어

  • HTML(각 요소 배치) [정적 언어] <마크업 언어> + CSS(요소 디자인) [정적언어] + 자바스크립트(요소에 프로그래밍으로 기능 넣어줌) [동적 언어]

웹 표준 ((구) 인터넷 익스플로러)

  • 반응형 웹 (페이지 내 요소들을 신축성있게 제작하여 자동으로 조절)

  • 적응형 웹 (PC와 모바일용 웹사이트 따로 제작)

쿠키

= 크롬이나 사파리에 저장되는 작은 텍스트 조각

= 사용자에게 맡겨도 되는 정보

새션

= 서버가 나를 알아보는 방법

= 메모리 공간 많이 차지

= 메모리에 로그인되어 있는 사용자 상태 보관

= 사용자가 원하는 대로 통제 가능

토큰

= 새션 아이디 대신 발급

= 서버만이 유효한 토큰 발행

= 상태 따로 기억 불필요

= 한번 로그인한 사용자의 상태는 토큰이 만료될때까지 제어 불가능

캐시 (cache)

= 한 번 전송받은 데이터 저장해두었다 다시 필요할때 꺼내쓸 수 있는 기술

= 반복적으로 서버에 정보 요청 불필요 > 속도 빨라짐

CDN (콘텐츠 전송 네크워크)

= 지리적으로 분산된 여러 개의 서버를 이용해 웹 콘텐츠를 사용자와 가까운 서버에 전송하며 속도 높임

네이티브 앱

= 각각의 운영체제에 최적화된 앱을 만드는 방법

크로스 플랫폼

= 같은 소스 코드로 안드로이드 버전과 iOS 버전에 모두 작동가능한 앱을 만드는 개발 도구

  • 자바스크립트, 다크, C# 주로 사용

웹 앱

= 기기에 상관없이 모든 단말기에서 같은 콘텐츠를 볼 수 있는 웹사이트

= 애플리케이션이 아닌 웹사이트

= 모바일 앱과 비슷한 UI/UX 제공

하이브리드 앱

= 앱의 대다수 콘텐츠를 웹사이트로 제공하며 추가로 네이트브앱에서 사용 가능한 기능 제공하는 앱

PWA (프로그래시브 웹 앱)

= 앱이 아닌 모바일 웹사이트

프론트엔드

= 웹사이트 구성 부분 중 브라우즈에서 동장하는 쪽

= 눈에 보이는 요소에 밀접한 부분

백엔드

= 브라우저가 요청하는 부분, 서버에서 작동하는 부분

프레임워크

= 편리한 개발을 위한 프로그램 제작 키트

= 라이브러리와 자체 코드를 엮어 필요한 소스코드 추가하는 것만으로 원하는 프로그램을 개발할 수 있도록 만들어진 키트

API (Application Programming Interface)

= 브라우저가 보낸 요청을 서버가 알아채기 위헤서 필요한 약속 신호

컴퓨터에 정보 전달 방법

  • XML, JSON : 데이터를 저장하고 전달할 목적으로 구성된 표기 형식

  • YAML : 사람이 이해하기 쉬운 형태로 구성된 표기 형식

  • AJAX

= HTML 문서가 실체화된 API

IP 주소

= 각 기기를 식별할 수 있는 특수한 번호

= 정확하게는 기기와 연결된 네트워크 끝단의 주소

= IPv4방식 : 숫자 4마디로 구성된 현재 주로 사용하는 방식 > 고갈될 시 IPv6 대체

공인 IP = 기업용 고정 IP + 가정용 동적 IP

사설 IP = 수동 고정 IP + 자동 동적 IP

도메인

= IP 주소를 이름처럼 사용할 수 있는 것

DNS

= 도메인에 해당된 IP 주소로 변환하여 경로를 안내해주는 것

HTTP/HTTPS = 통신규약 + WWW(Wordl Wide Web) = 호스트명 + 도메인 = URL

HTTP : 클라이언트의 요청과 서버의 응답으로 구성된 방식, 각각 개별된 행동, 보안에 취약

HTTPS : HTTP의 취약점 보완, Secure 기능 추가한 프로토콜

검색 엔진 최적화 = SEO

요청 메소드

  • GET : 서버에 각종 데이터 요청

  • POST : 서버에 새로 저장될 자료 전송

  • PUT : 특정 데이터 전체를 새로 저장

  • PATCH : 특정 데이터 일부만 수정

  • DELETE : 특정 데이터 삭제

  • OPTIONS : 해당 URL이 어떤 메소드를 허용하는지 물어보기 위해 사용

응답 코드

  • 1XX : 요청 성공적 받음. 서버가 해당 작업 진행중

  • 2XX : 요청 성공적 받음. 요청 이뤄짐

  • 3XX : 요청 수행 위해 해당 요청을 다른 주소로 보내는 추가 조치 필요

  • 4XX : 클라이언트 요청에 문제 발생. 수행 불가

    • 401 : 로그인 미완료 / 403 : 로그인 되어있으나 요청 보낼 권리 없음 / 404 : 요청에 해당하는 데이터 없음 혹은 URL 잘못
  • 5XX : 요청에 문제 없으나 서버 이상으로 수행 불가

데이터 = 어떤 의미나 목적없이 단순히 수집된 순수한 자료

정보 = 데이터가 모여 의도나 목적에 따라 분석되어 의미가 부여

데이터 베이스 = 많은 데이터 모아둔 곳

데이터 베이스 관리 시스템 = DBMS

  • 관계형 데이터 베이스 = RDBMS

  • 오라클 데이터 베이스

  • MySQL

  • 마이크로소프트 SQL 서버

  • PostgreSQL

  • MariaDB

  • SQLite

SQL (구조화 질의 언어)

= 텍스트로 작성된 명령어로써 데이터를 처리하기 위해 제공되는 것

NoSQL

= 관계형 데이터 베이스를 제외한 DBMS

  • 문서 데이터 베이스, 키-값 데이터 베이스, 그래프 데이터 베이스

운영체제

= CPU, 메모리, 그래픽 카드 등의 기기들을 가동하고 제어해서 사용자가 컴퓨터로 각종 작업을 할 수 있는 환경을 마련

= 하드웨어 기기와 사용자를 연결하고 중재하는 역할

GUI (Graphic User Interface)

  • 사용자 친화적

CLI (Command Line Interface)

  • GUI에 비해 컴퓨터 자원 덜 소모

  • 환경이 간편하고 정확

  • 시스템과 상호작용이 좋음

리눅스

= 오픈소스

= 쉽게 사용 할 수 있는 인터페이스와 세련된 디자인, 패키치 설치의 용이성

커널

= 운영체제의 핵심

= 하드웨어와 응용 프로그램 사이에서 작동

= 컴퓨터에서 일어나는 모든 일 통제

  • EX. 리눅스 커널

CPU = 중앙처리장치

  • 코어 : CPU의 핵심 부품

  • 스레드 : 코어의 효율

  • 클럭 : 코어의 속도

메모리 = 기억장치

= 주기억장치(RAM) + 보조 기억 장치(SSD, 하드디스크, USB, CD)

= 휘발성 메모리 + 비휘발성 메모리

입출력 장치 (I/O)

프로세스

= 프로그램이 메인 메모리로 올라와 실행되고 있는 상태

= 병렬 처리 방법 or 병행 처리 방법

스레드

= 한 프로세스 안에 진행될 수 있느 ㄴ일의 단위

  • 멀티 스레딩

비트(bit) = 2진 숫자

바이너리 파일

= 컴퓨터가 읽을 수 있는 이진 숫자 형식으로 작성된 파일

  • JPG, PNG, mp3

바이트 = 8개의 비트가 모인 것

불리언

자료형

문자열 셋

= 사용자가 입력한 문자나 기호들을 컴퓨터가 이용할 수 있는 숫자로 만든것

문자 인코딩

= 문자열 셋을 통헤 사람이 입력하는 문자를 그에 해당하는 숫자로 변환하는 것

유니코드

= 비트로 문자를 나타내는 방법

= 전세계가 문제열 셋 통합

컴파일

= 코드를 실행하기 전에 기계어나 다른 코드로 먼저 번역 하는 것

컴파일러

컴파일 언어

= 프로그래밍 언어는 배포되기 전 다른 형태로 변환

= 정적 타입

인터프리터 언어

= 프로그래밍 언어는 배포될 때 작성된 그대로 실행

= 동적 타입

정차 지향 프로그래밍

= 소스 코드를 위에서부터 차례대로 읽는 방법

= 순서가 매우 중요하며 프로그램이 유기적으로 연결

객체 지향 프로그래밍

= 소스 코드 작성 시 구성 요소를 객체라는 단위로 묶어 이들의 조합으로 만드는 것

= 객체끼리 상호작용하는 방법

객체를 만들기 위해서는 각 종류의 객체가 어떤 정보를 가지고 있는 어떤 기능을 수행하는지 스펙 정의 필수

이 스펙을 정의하는 명세서 = 클래스

공유되는 스펙 물려주기 = 상속

함수형 프로그래밍

= 변수 사용 최소화 > 스파게티 코드의 오류 최소화

매니지드 언어 = 메모리를 프로그래밍 언어가 직접 관리

언매니지드 언어 = 메모리를 개발자가 직접 관리

자바

= 운영체제에 종속적이지 않은 특징을 가진 프로그래밍 언어

JVM(자바 가상 머신)

= 자바를 각각의 운영체제에 맞게 이해할 수 있는 형식으로 바꿔주는 것

컴파일 오류

= 프로그램을 사용자에게 배포하기 전에 발견할 수 있는 오류

런타임 오류

= 프로그래밍 밖에서 발생하는 오류

  • Null에 의한 오류 / 0으로 나눠서 생기는 오류 / 의도하지 않은 무한 루프

논리 오류

= 컴파일이나 실행 자체는 성공하지만 잘못된 결과 반환

예외처리로 넘기기 - try-catch

메모리 누수 = 메모리 공간에 불필요한 데이터가 쌓여 있는 것

가비지 컬렉션 = 메모리 관리를 상당 부분 자동으로 처리해주는 기능

패키지

= 소스 코드 배포를 위해 사용되는 코드 묶음

패키지 매니저

= 패키지를 편리하고 안전하게 다루기 위한 도구

= 운영체제 패키지 매니저, 프로그래밍 언어 패키지

환경 변수

= 운영 체제 입장에서 해당 프로세스를 실행시키기 위해 참조하는 값을 담은 변수

  • path 환경 변수

런타임 환경 = 런타임 시스템

= 어떤 프로그래밍 언어가 컴퓨터에서 일을 할 수 있도록 해주는 요소

= 특정 언어로 작성한 프로그램을 실행 할 수 있도록 해주는 프로그램

  • JRE / 런타임 라이브러리

SDK (소프트웨어 개발 키드)

프로그램 언어별 인기 웹 프레임 워크

  • 자바 : 스프링

  • C# : 닷넷, 블레이저

  • 파이썬 : 장고, 플라스크

  • 자바스크립트 : 뷰, 리액트, 앵귤러

  • 루비 : 루비 온 레일즈

  • PHP : 라라벨, 코드이그나이터

VCS (버전 관리 시스템)

= 프로젝트 변경 내역을 관리해주는 프로그램

  • GIT, SVN (소스 관리 도구), CVS (동시 버전 시스템), Mercurial (머큐리얼)

GIT : 리셋, 리버트, 브랜치 기능 제공

0개의 댓글