20시간
적어도 일주일에 23시간
230시간
100
330시간 자바 기초
한 학기에 330시간
1년에 600시간
이진수 십진수
게이트
전자공항에 대해서
실무 개발자가 갖춰야 할 기본 기술
실무 개발자 : 실무 초보 개발자를 얘기하는 거
웹 개발자
소프트웨어가 크게 두 가지로 나뉘어짐
시스템 소프트웨어: 하드웨어 제어(ex.운영체제)
응용 소프트웨어(애플리케이션)
운영 체제에 없던 하드웨어
컴퓨터 라는 하드웨어를 제어하기 위해서 운영체제를 설치
태블릿이라는 하드웨어가 붙음
태블릿 제어까지 고려하지 않음
태블릿을 제어하는 하드웨어를 만들어야 됨
태블릿 회사가 만듦
자동차를 조종하는 사람(드라이버)
드라이브
라우터 허브
인터넷과 데이터를 주고받기 위한
그걸 조종하기 위해서 소프트웨어가 필요
TCP/IP 라는 프로토콜
그래픽카드를 제어하는 거 DirectX
응용프로그램
예) HWP, PPT, 웹브라우저, 카카오톡, 게임 등
어플리케이션 소프트웨어
줄여서 어플리케이션
어플리케이션 소프트웨어 종류
1. 단독적으로 실행하는 프로그램
Standalone
다른 프로그램 도움 없이 홀로 실행하는 거
예) HWP, Photoshop, 그림판, 메모장, MS Office
로컬에 설치
서버가 됐든 PC가 됐든 간에 설치
로컬이라는 표현을 씀
촌스럽게 PC에 설치
리눅스 서버에 설치할 수도 있고
2. 단독적으로 실행이 안 됨. 설치한다고 되는 게 아님.
상대편이 있어야 됨. 걔랑 대화를 해야 실행이 됨.
항상 한쪽은 요구를 하고 한쪽은 그 요구에 대해서 서비스를 제공
Client / Server
보통 줄여서 C/S라고 함
로컬과 원격에 설치를 동시에 해야 함
메이플 설치하고 인터넷 안 되면 안 됨
인터넷 끊기면 카톡 못 함
이메일도 안 됨
유튜브도
구글밋
서버 프로그램이라고 함
‐ 설치형 : 게임, 카톡
‐ 서비스형 : 네이버, 구글
똑같은 화상회의도 설치형, 서비스형 있음
서비스형 만들려고 자바 배우는 거
서비스형 Application
사용자 Client -----------------------> Server
클라이언트가 요청하면
서버가 작업하고 그 결과를 클라이언트에게 응답
사용자가 클라이언트 사용
사용자로부터 입력받고
작업 결과 출력
서버
클라이언트가 요청한 요청 작업 처리
그래서 작업이 모든 작업이 서버 쪽에서 실행여러 클라이언트의 요청을 처리
클라이언트가 한 명이면 좋겠지만
네이버 서버 여러 사람이 같이 씀
요청, 응답
여러 클라이언트 요청을 서버가 담당
하드웨어의 성능이 좋아야 한다
단순 PC급이면 안 됨
해결 방법 => 분산
분산 컴퓨팅 등장
분산 컴퓨팅 (예)114안내) + Grid 컴퓨팅 + Blade 시스템 + ...
이런 기법들이 동원돼서
데이터 센터라고 부름
AI 딥러닝 머신러닝
알고리즘
자격증 필요
석사
직장인을 위한 대학원 들어가서 2년 반 버티기
학점은행제 쌓고
디지털대 3학년 편입해서 쌓고
석사 과정으로 학력 세탁
최종은 석사로 최종짓는다
통신 기술
멀티태스킹 → 멀티스레딩
자원관리
인증 / 권한 제어
서비스형 프로그램
웹 어플리케이션
Web Application
web 기술을 활용하여 서비스형 S/W 개발
http 프로토콜 규칙 하에서 요청과 응답
서버가 실행하는 Application
결과 리턴
주문 관리 시스템
회계 관리 시스템
기업용 S/W 개발이 목표
인사 관리 시스템
회계 관리 시스템
물류 관리 시스템
고객 관리 시스템
데이터의 등록, 조회, 변경, 삭제 (CRUD)
Web Application Architecture (구조)
웹 서버가 실행하는 프로그램을 개발
Web Application Architecture
자바 웹 어플리케이션
DBMS
데이터와 통신하기 위해서 JDBC API (연결)
자바 클래스 자바 App
뷰 (화면 출력)
SQL로 명령을 보내야 됨
JDBC API 사용법을 배워야 함
어려우니까 Mybatis 프레임워크를 배울 거
자바 : 작업 수행
자바 언어로 배워야 됨
화면에 데이터를 표현하는 건 HTML을 사용할 거
HTML content 표현 + CSS (content 모양 제어) + JS (content 행위 제어) + Bootstrap + jQuery
Spring Framework
웹 서버와 연동(연결해서 동작)하는 App 개발 기술
Servlet / JSP / JSTL / EL
데이터의 입출력과 관련된 기술 I/O
I/O
네트워킹
멀티스레딩
실무 초보 개발자가 갖춰야할 기본 기술
Web App 개발기술
화면 제어 : HTML, CSS, JavaScript + Bootstrap, jQuery
데이터 제어 : SQL, JDBC API, Mybatis 프레임워크
언어 및 도구 : Java, vscode, Eclipse, Gradle, Git
Kotlin
Groovy
Scala
Go
TypeScript
웹 서버가 실행하는 프로그램을 개발
관리 시스템 : 데이터의 등록, 조회, 변경, 삭제
웹 서버와 연동하는 기술 : Servlet / JSP / JSTL / EL
1. vscode
Chromium 크로미엄 + Electron 일렉트론
텍스트 편집기
단순 편집기
웹 소스 편집기
2. github 가입
git S/W 형상 관리 서비스
소스 변경 내역 관리
소스 공유
md : MarkDown
HTML보다 간략한 거
# 제목1
→ h1
## 제목2
→ h2
### 제목3
→ h3
윈도우는 대문자를 구분 안 함
리눅스나 유닉스에서는 대소문자 구분함
대문자를 먼저 앞에 정렬하고 소문자를 정렬함
README.md
다른 파일보다 위쪽에 위치시키고 싶어서
3. git client 설치
git 서버 (github.com)와 연동
git client 검색
https://git-scm.com/downloads/guis
로컬에 설치
서버에 설치 → 서버에 배치한다 deployment
검사가 끝난
검수가 끝난 코드
서버에서 빌드
리눅스 서버
그래픽 시스템이 아님
명령 프롬프트
명령창에서 제어하는 방법을 알아야 함
화면으로 제어하는 거 : GUI(Graphic User Interface)
명령어로 제어하는 거: CLI(Command Line Interface)
매개 방법 interface
모니터 연결 인터페이스
방법이나 규칙을 얘기하는 거
CLI 방식
배움의 기초는 용어 정리
마우스를 사용하는 GUI 방식
커맨드 라인을 이용하면 CLI 방식
유닉스
컴퓨터에 여러 명이 달라붙어서 시절
인터프리터
컴파일러 기계어로 바꾼 다음 실행
준개발자
윈도우즈
명령어가 작성된 파일
기계어로 바꾸기 전의 파일
CPU는 기계어만 알아들음
기계어로 바꾸기 전의 원래의 명령어
source
윈도우 인텔 CPU
그대로 주면 됐었음
윈도우 사용자끼리는 그냥 기계어로 주고 받음
윈도우는 컴파일러가 없음
소스코드는 안 팜
컴파일된 기계어 파는 거
소스를 주고 받는 게 아니라
개발자가 쓰는 게 아니라 일반인들이 쓰는 걸 고려해서 만든 거
유닉스에서는 존재
git 리눅스나 맥에는 존재
안드로이드가 리눅스
아이폰이 유닉스
리눅스 커널
리눅스 커널은 오픈 소스 모놀리딕 유닉스 계열 컴퓨터 운영 체제 커널이다.
https://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%89%EC%8A%A4
android linux kernel version
안드로이드는 리눅스 커널 위에서 동작하며, 자바와 코틀린으로 앱을 만들어 동작한다.
Use Vim
4. 자바 개발 도구(JDK) 설치
자바 애플리케이션 빌드 도구
컴파일, 실행, 디버그, 문서 생성, 프로파일러(프로그램 내부가 어떻게 돌아가는지 보는 거) 등
70%가 8버전
C:\tools\graalvm-ce-java17-21.3.0\bin
>javac -version
C:\tools\graalvm-ce-java17-21.3.0\bin
>java -version
C:\tools\graalvm-ce-java17-21.3.0\bin
>set path=C:\tools\graalvm-ce-java17-21.3.0\bin;%path%
C:\tools\graalvm-ce-java17-21.3.0\bin
>echo %path%
맥 : echo $PATH
시스템 환경 변수 편집
JYH 계정으로 로그인했을 때 사용하는 변수
모든 사용자가 공유하는 변수
맨 위로 올리기
환경변수 세팅
설정은 회사 가도 선배가 안 알려줌
1) PATH 설정
Java 도구를 쉽게 찾을 수 있도록 위치 정보 등록
2) JAVA_HOME 변수 설정
Java 경로를 알고 싶은 프로그램을 위하여 자바 설치 경로 등록.
리눅스나 맥에서는 대문자로 쓰기
5. Eclipse IDE 설치하기
Integation Development Environment
자바를 포함하고 있지 않음
자바 설치하고 이클립스 설치
편집기, 실행 결과 출력, 디버깅 추적기 등 개발 관련 도구가 구비된 프로그램
3개월마다 나옴
eclipse 검색
WTP (Web Tool Plugin)
느낌표 클릭
업데이트 하기
Accept
git 저장소 준비
github.com
형상 관리 시스템 (Configuration Management System)
S/W의 변경 내역 관리 및 공유
S/W = 소스파일
S/W 버전 관리 시스템
CVS
upload/download의 기본 단위가 파일이다.
파일 단위로 주고 받는다.
subversion
변경한 내용
기본 단위가 변경한 내용이다.
파일을 통째로 주고 받는 대신에 변경된 내용만 주고 받는다.
CVS 방식에 비해 전송 Data 양이 적다
변경 내용을 순서대로 기록 및 관리
예기치 않은 오류로 서버가 다운되고 자료가 소실되면 모든 변경 내역도 사라진다
왜?
변경내역에 대한 기록은 서버에만 존재하기 때문이다.
기존 방식의 문제점
RAM
SSD
HDD
소모품
https://ko.wikipedia.org/wiki/%EA%B9%83_(%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4)
저장소(Repository)
프로젝트 + 변경 내용을 기록한 파일
git clone
클라이언트는 서버의 저장소를 그대로 복제
클라이언트쪽에도 변경 내역의 기록이 존재
서버에 문제가 발생하더라도
클라이언트를 그대로 서버에 올리면 된다
소프트웨어를 서비스처럼 쓰자는 거
Software as a Service (SaaS)
Platform as a Service (PaaS)
github은 SaaS
git server라는 소프트웨어를 우리에게 제공해주는 거
office365도 SaaS
git 저장소 준비
git server
Repo.
git client = local
정식 버전 LTS(Long Term Support) 버전
$ git clone 저장소URL ← 저장소 복제
$ 사용자홈/git/
사용자홈 C:\Users\JYH
C:\Users\JYH
>mkdir git
C:\Users\JYH
>cd git
C:\Users\JYH\git
>git --version
git version 2.34.0.windows.1
C:\Users\JYH\git
>git clone https://github.com/banana1019/bitcamp-study
git 사용법
Local git repository
Server
C:\Users\JYH\git
checkout : 저장소에 보관된 파일을 편집할 수 있도록 밖으로 꺼내는 것
클론 하면 자동 checkout을 실행한다
C:\Users\JYH\eclipse\jee-2021-09
add → commit
add 하고 commit 하기
git add .
백업할 대상에 대해 파일명단에 추가
.
현재 폴더 및 하위폴더에서 추가하거나 변경하거나 삭제된 파일을 포함하라!
git commit -m "백업이유"
백업명단에 등록한 파일들을 로컬 저장소로 백업한다
git config --global user.email "본인메일주소"
git config --global user.name "유저아이디"
깃 저장소 디렉토리 = 깃 디렉토리
작업 디렉토리 = working directory
마우스 오른쪽 버튼 클릭
학원 컴퓨터에 clone 받기
cd ..
: 현재 위치에서 상위 폴더
서버에 존재하는 내용을 갱신할 때는
서버에서 변경된 사항을 가져올 때는 git pull
git pull
서버에 변경된 내용을 로컬저장소로 다운로드(update)
checkout : pull 명령 후에 자동으로 보관소에 저장된 최신 파일을 다시 작업 디렉토리로 꺼내어 갱신한다.