SW Academy

[CNU SW Academy] 1일차(22.12.01.)

narlo 2022. 12. 1. 14:32

하석재 강사님

 

컴퓨터 전공자가 알아야 하는 언어 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에 대해 미리 공부 필요

 

sublime text 이용하여 index.html 생성

 

index.html에 추가
JS의 alert를 이용하여 경고창 띄우기

브라우저의 developer console

console 출력해보기

프로그램의 실행 순서는 순차적이다.

콘솔에서 명령어를 직접 실행할 수 있다. 

 

변수 : 임의의 값을 저장해두고 읽을 수 있는 가상의 공간

 

prompt 이용하여 이름을 입력받고, 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 고급 프로그래밍에 많이 사용

closure 실습

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