하석재 강사님
컴퓨터 전공자가 알아야 하는 언어 Big3
- 자바 : 백엔드, 프론트엔드(안드로이드)
- 자바스크립트 : 프론트엔드, 백엔드(Node.js)
- 파이썬 : 딥러닝, 데이터사이언스, 자동화
클라우드
서버, 모바일마저도 전부 클라우드로 가고 있다.
- 리눅스
- TCP/IP
- 도커/쿠버네티스
기본적으로는 영역 구분 없이 다 해라.
하나만 해서 먹고 살 수는 있다. 다만 아주 잘 해야 한다.
대부분의 경우는 다양한 기술을 적용하며, 기술 사이클은 빠르고 경쟁이 심하다.
트렌드의 이해는 필수이다.
객체지향
JAVA와 C++의 가장 큰 차이
- 단일상속이냐 다중상속이냐
객체지향이 어떤 식으로 발전했는지 알아야 한다. -> Spring
Front-End, Back-End
백엔드 -> Presentation Layer / Business Logic / Business Object Layer 3단계로 구분
비지니스 로직 : Spring (코딩이 있어야해)
표현계층 : Spring MVC(if, for등이 들어가는데, 이런걸 안하고 싶어 -> SpEL을 사용해 최대한 로직관련 코드 제거)
스프링부트 : DI관련 자동화 적용 -> 이해하기 쉽도록 개선
SpringJPA(Java Persistent API)
비지니스 오브젝트를 담당하는 프레임워크
tier(타이어, 티어)
1-tier
- Web Browser(Client) - Apache WebServer(Server)
2-tier
- Web Browser(Client) - Web Server / DB client - DB Server
3-tier
- Web Browser(Client) - Web Server / WAS client - WAS Server / DB client - DB Server
- WAS : 트랜잭션/로드밸런스, 장애대응, 로그취합, ...
N-tier
티어가 높아질수록 추가 기능
전자정부 프레임워크
- NIA(한국지능정보사회진흥원)에서 정보들을 관리
- 서버가 일정 규모 이상인 경우 프로젝트에서 전자정부 프레임워크 사용 의무화(법제화)
단 두 군데의 대학교만 전자정부 프레임워크를 교육함
Exploit(착취)
- 보안 취약점(해킹)
- 재정거래
객체지향의 배경
- 소프트웨어 위기
- 디버깅의 비중이 기하급수적으로 증가
객체지향
- 캡슐화 (O)
- 전역변수 -> 캡슐화(private으로 정의)
- getter/setter를 통해서만 접근
- 코드 재사용(inheritance) (애매?) -> 보완 필요
- 코드가 공개가 안되면서도 재활용 가능한 방법은?
- 컴포넌트(Component) - 스프링 -> MSA(Micro Service Architecture)
프로그래머스 - 프론트엔드 미니 데브코스
HTML, JS, CSS : client side web programming
브라우저에서 바로 실행 가능
HTML, CSS에 대해 미리 공부 필요



브라우저의 developer console

프로그램의 실행 순서는 순차적이다.
콘솔에서 명령어를 직접 실행할 수 있다.
변수 : 임의의 값을 저장해두고 읽을 수 있는 가상의 공간

JS 자료형
var a = 100; --> number
var c="안녕하세요"; --> string
var e = true; --> boolean
변수의 자료형 확인 : typeof(변수)
JS는 64비트를 이용하여 숫자 표현 -> -2^63 ~ 2^63
String을 number로 변환
- parseInt
- parseFloat
문자열의 시작부터 인식할 수 있는 숫자를 인식한다.
NaN, Infinity
SyntaxError : 잘못된 문법이라서 발생하는 에
escape character : \ (역슬래시)
역슬래시 문자를 쓰고 싶다면 \\
new line : \n
객체(object) : 속성(property)의 집합
- name : value의 형태로 속성 정의
- object도 객체의 속성으로 가능
객체이름.name 또는 객체이름["name"]으로 value 접근
null, undefined : 값이 없다
- undefined : 변수나 속성이 정의되지 않은
- null : 개발자가 의도적으로 비어있는 무의 상태를 표현하기 위해 사용
Math.pow(a, b) : a의 b제곱
Math.sqrt(a) : a의 제곱근
Math.random() : 랜덤 수
함수 : 입력값을 이용해 기능, 계산 수행 후 결과값을 내보내는 것
함수를 "호출"한다.
기능을 추상화 할 수 있다.

관계연산자(relational operator)
두 피연산자를 비교하는 역할
결과는 boolean 타입
문자열의 경우 사전순으로 비교
논리연산자(logical operator)
and(&&), or(||), not(!)
연산자 우선순위
!
* / %
+ -
> >= < <= ==
&&
||
괄호는 코드의 가독성을 위해 사용하자!
문자열 길이
- 문자열.length;
- str["length"];
두 문자열을 붙이기
str1, str2
str1.concat(str2).concat(str3)...
'+'연산자로도 붙이기 가능
문자열과 숫자도 더할 수 있다. -> 숫자를 문자열로 변환하여 더함
문자열 관련 명령어
str.charAt(n) : n번째 문자(문자열 길이 범위를 넘어서면 빈 문자 반환)
== str[n]과 같은 역할(문자열 길이 범위를 넘어서면 undefined 반환)
str.substring(a, b) : a부터 b전까지 문자열 반환
str,substr(a, b) : a부터 길이가 b인 문자열 반환 (음수인 경우 왼쪽으로 인덱스를 찾음)
str.indexOf("target") : str에서 target 문자열의 인덱스를찾음
str.lastIndexOf("target") : 가장 마지막에 위치한 target 문자열의 인덱스
배열 : 값(element)가 연속된 형태의 자료구조, 값이 나열된 형태
index를 이용하여 값에 접근
배열 내 값은 같은 자료형일 필요 없음
범위 밖의 인덱스 접근 시 undefined 반환
배열 함수
pop() : 마지막 element 빼서 반환
shift() : 앞에서 element 빼서 반환
push() : 배열의 맨 뒤에 element 추가
unshift() : 배열의 맨 앞에 element 추가
reverse() : 배열 순서 뒤집기
sort() : 배열 값 정렬
concat(arr2) : arr 2개 합치기
split() : 문자열을 구분자로 나누어 각각의 문자열을 배열에 넣어 반환
ex)
var str="1,2,3,4,5";
str.split(",");
--> ["1", "2", "3", "4", "5"]
주석(comment)
협업 프로그램, 큰 프로그램일수록 주석은 필수
코드 설명, 코드 비활성화에 사용
한 줄 주석 : // comment
여러줄 주석 : /* comment */

프로그램의 실행 분기
if-else
if-else if-else
switch(조건)
case:
default:
각 case마다 break 작성 필
반복문
while
do-while : 반복문 코드가 적어도 한 번은 실행된다.
for : 인덱스를 이용해 근
for in : 객체의 각 속성에대해 접근하고 싶은 경우
Object.keys(obj) : 객체의 속성이름들을 배열로 반환
변수의 scope
function scope를 따른다.
shadowing
서로 다른 scope에서 같은 이름의 변수를 선언한 경우 -> 더 좁은 scope의 value가 나타난다.
closure(클로저)
함수와 environment로 구성
js 고급 프로그래밍에 많이 사용

makeCounterFunction(0) => closure의 environment는 var count=0;
makeCounterFunction(10) => closure의 environment는 var count=10;
함수 밖에서 count 변수에 직접 접근할 수 없음
'SW Academy' 카테고리의 다른 글
[CNU SW Academy] 6일차(22.12.08.) (0) | 2022.12.08 |
---|---|
[CNU SW Academy] 5일차(22.12.07.) (0) | 2022.12.07 |
[CNU SW Academy] 4일차(22.12.06.) (0) | 2022.12.06 |
[CNU SW Academy] 3일차(22.12.05.) (1) | 2022.12.05 |
[CNU SW Academy] 2일차(22.12.02.) (0) | 2022.12.02 |