SW Academy

[CNU SW Academy] 2일차(22.12.02.)

narlo 2022. 12. 2. 10:46

하석재 강사님

 

오프라인 특강

매주 금요일 3시 ~ 5시 특강 진행 예정

프로그래머스 프로젝트는 개인(cloning project, 기능구현 추가해보기)

채용연계 - 회사에서 준 주제를 진행하고, 멘토링도 하고 채용까지 연계되는 형태

 

SPA(Single Page Application)

웹은 클릭할 때 마다 다른 페이지가 나온다. 

한 프로그램 내에서 화면이 전환되는 형태로 바꾸자.

ex) React, Angular, Vue

 

JavaScript의 객체지향 버전 : TypeScript

 

비동기가 무엇인가?

 

MSA, Docker -> 요즘 트렌드


컴포넌트와 MSA

객체지향의 상속은 소스레벨 재사용성(소스가 있어야만 가능한 한계)

컴포넌트

property를 통한 호출 및 제어 가능

MS IDL(MIDL)

자바는 .class file에 Reflaction이라는기능 (IDL 없이도 메서드, 필드의 기능을 알아낼 수 있음

 

분산컴포넌트기술

 

컴포넌트

- CORBA(원조)

- MS

   -MS COM(Component Object Model) / COM+ / DCOM(Distributed COM)

- 자바

   - 빈(Java Beans)

   - Enterprise Java Beans(EJB)

   - Sprint Bean

 

MSA(Micro-service Architecture)

- 모노리틱 아키텍처는 한 덩어리

- 애플리케이션 로직을분리, 서비스 별로 로드밸런서를 연결하는 방식

 

조각을 내면서도 효율화시키는

컴파일된 형태의 재활용이다.


프로그래머스 - 프론트엔드 미니 데브코스

- 기본기를 탄탄하게, 상식을 기르기

- 정답을 찾는 과정을 즐기기

- 내가 무엇을 잘 하고 못하는지 파악하기

- 공부한 것은 꼭 기록하고 가급적이면 공개하기

- 질문을 두려워하지 않기

 

면접질문

- 스스로 해결하기 힘들다 판단되는 문제는 어떻게 처리하나요? (어려웠던 경험, 어떻게 해결했는지)

- 앞으로 실력이 좋아졌을 때 만들어보고 싶은 SW? (직업에 대한 목표 의식이나 도전 의지)

- 개발을 잘 모르는 팀원이 당장 작업하기 어려운 작업을 요구했다면 어떻게 해결? (커뮤니케이션 불화를 어떻게 해결, 태도에 대한 문제)

- 남들이 보는 나의 모습은? (자기객관화)

- 추상이란 무엇? 객체지향에서 추상이란 어떻게 적용되는가? (프로그래밍의 추상에 대해 고민해 본 적이 있는지)

 

 

vscode 추천 플러그인(나중에 내 노트북에도 설치해야겠다..)

 

JavaScript 탄생 배경

최초의 브라우저 : 네비게이터 (html로만 이루어진 정적인 브라우저)

-> Mocha = LiveScript = JavaScript(초기에는 간단한 언어)

 

서버 개발 : node.js NextJS, Express

앱 개발 : React Native, NativeScript, Cordova

프론트엔드 개발 : jQuery, Backbone.js, React, Vue, Angular(최근 3대장)

 

브라우저의 동작 원리

- 통신

- 렌더링

- 스크립트 실행

 

프론트엔드 개발자의 역할

- 브라우저 UI를 개발

- 다른 직군과 협업을 위한 소통능력이 중요 

- 핵심 역량

   - 커뮤니케이션

   - UI 기본지식

   - 네트워크

   - 보안

   - 브라우저

   - 디자인

 

컴퓨터과학 무시, CSS 안하기, 코더가 되는 것 => 이런건 하지 말자

 

변수

var(권장하지 않음) : 호이스팅 때문(변수 선언이 상단으로 올라가버린다. 예상치 못한 오류)

let

 

상수 : 변하지 않는 수, 값을 바꿀 수 없음 (const)

 

자료형

Number(NaN, infinity도 포함), String, Boolean, Object(key), Array(index), Function, undefined, null

 

메모리

할당, 사용, 해제

메모리는 한정적 => JS는 Garbage Collector를 이용해 자동으로 사용하지 않는 메모리를 정리

 

Virtual Machine

Heap, CallStack으로 이루어짐

배열은 참조 타입이기 때문에 Heap에

 

Mark and Sweep Algorithm : 닿을 수 없는 주소를 더 이상 필요없는 주소로 생각하고 메모리를 비움

 

JS는 파일들을 각각 별개의 프로그램으로 생각

표현식(Expressions) : 어떠한 결과 값으로 표현되는 식

 

흐름제어(Control Flow)

조건, 반복을 통해 상태를 제어

- 조건문 if

   - false, undefined, null, 0, NaN, ''(empty string)도 거짓이 될 수 있으니 주의

- switch(case에 default 작성 필수)

- 반복문 for(초기문, 조건문, 증감문)

- while(조건이 거짓이 될 때까지)

- do - while

 

배열에서 특정 값으로 초기화

const arr = new Array(n).fill(초기화할 값);

const arr = Array.from(초기화할 배열, function (배열의 값, 배열의 인덱스) {

    ....

}

 

배열의 length를 줄이면 뒤 요소가 사라짐

배열의 length를 늘리면 뒤에 빈 아이템이 추가됨

(사용하지 않는 것을 권장)

 

arr.join('어떻게합칠건데');

arr.reverse() : 요소를 거꾸로 뒤집기

arr.concat(arr2) : 두 배열 합치기

 

push : 배열의 끝에서 추가

pop : 배열의 끝에서 삭제, return값은 삭제된 요소

 

shift : 맨 앞의 요소 제거

unshift : 맨 앞에 요소 추

 

splice(index, 몇개)

 

배열 순회는 for of문 : ex) const item of arr

 

객체

new Object(); or {}

Object.keys()

Object.values()

 

객체 순회는 for in

 

클로저를 이용하여 내부 변수와 함수를 은닉화 할 수 있다. -> 알기 힘든 버그를 잘 수정하기 위해 유용


코딩테스트 - 피보나치 계산

문제 : 피보나치 계산

n = int(input())
F = [0] * 30
F[1] = 1

for i in range(2, n+1):
    F[i] = F[i-2] + F[i-1]
    
print(F[n])

dp를 이용해 해결했다..

'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] 1일차(22.12.01.)  (2) 2022.12.01