목록전체 글 (138)
공부하는 스누피
디렉터리 구조 /rootProject ㄴ/server ㄴ/src ㄴ/templates ㄴindex.html ㄴ app.py ㄴDockerfile ㄴ/static ㄴstyle.css ㄴ/venv ㄴ.firebaserc ㄴfirebase.json ㄴfirestore.indexes.json 1단계: 샘플 app 작성하기 2단계: 앱을 컨테이너화하여 Container Registry에 업로드 gcloud builds submit --tag gcr.io/PROJECT_ID/rootProject 3단계: Cloud Run에 컨테이너 이미지 배포 gcloud run deploy --image gcr.io/PROJECT_ID/rootProject 4단계: Firebase로 호스팅 요청 전달 firebase.json 편..
Computing 클라우드의 가상 서버를 작동하는 것. AWS Batch로 배치 작업을 실행할 수도 있고, Elastic Beanstalk로 웹 앱을 실행하고 관리할 수 있다. Lambda는 이벤트에 대한 응답으로 코드를 실행한다. 따라서, Computing이란 컴퓨터(서버)가 어떤 앱(코드)를 실행하는 것을 의미한다. Cost management 클라우드 서비스의 가상 서버나 서비스를 이용하면 이용료가 청구된다. Cost Explorer나 Budgets 및 비용 및 사용 보고서를 참고하여 고효율 저비용으로 관리하는 것이 비용 관리이다. Database 데이터 저장소. 1. 관계형 데이터베이스 - Aurora, RDS 데이터의 종속성을 관계로 표현하는 데이터베이스로, 테이블 구조를 이룬다. - 데이터의 ..
let num = [1, 2, 3]; let str = '' + `${num[0]}` + `${num[1]}` + `${num[2]}` + ''; - ${...} 안에 변수명을 넣는다. 배열 참조도 가능하다. - 이때 감싸는 따옴표는 반드시 backtick(`)으로 한다.
변수 선언 scope 변수 재선언 변수 재할당 특징 var function scope 가능 가능 let block scope 불가능 가능 ES6에서 추가됨 const block scope 불가능 불가능 ES6에서 추가됨 변수 재선언 var num = 100; var num = 200; // 에러 안남 let num2 = 100; let num2 = 200; // 에러!! 변수명 규칙 - 변수명, 함수명은 카멜 케이스 (ex. helloWorld) - 상수는 영문 대문자로 (ex. HELLOWORLD) - 생성자 함수는 대문자로 시작하는 카멜 케이스 (ObjectConstructor) - 지역변수는 언더바로 시작 (ex. _localVariable) - 전역변수를 사용하지 않는다. 자료형 리스트 데이터를 ..
이펙티브 자바는 개발자 필독서로 자주 소개되는 책으로, 자바 언어를 어떻게 활용해야 하는지 가이드라인을 제시해 준다. 나는 이 책을 두 번 도전하여 한 번은 완독에 실패했는데, 가장 큰 이유는 이펙티브 자바를 읽기에는 내가 자바 언어를 하나도 모르고 있었기 때문이었다. 물론 학부 과정에서 자바 프로그래밍을 배웠지만 이 책의 첫 Item부터 나오는 여러 디자인 패턴과 자바 개념들을 이해하고 넘어가기 부족했다. 그렇게 Item 4를 마지막으로 첫 도전을 포기했고, 당시 5기로 활동중이었던 SSAFY에서 자바를 다 배우고 난 뒤에 다시 한번 도전하기로 했다. 자바의 전체적인 내용을 복습한 뒤, 이펙티브 자바를 읽기 시작했다. 이전과 다른 점은 함께 책을 읽고 이야기할 사람들이 있었다는 점이다. 2월 말에 책읽..
Dual-Mode OS와 사용자는 컴퓨터 시스템의 자원을 공유하기 때문에 시스템 안전성을 위해 특정 실행 모드에 맞는 기능만 수행할 수 있도록 한다. 운영체제 코드를 실행하는 것과 사용자 코드를 실행하는 것을 구분해서 두 가지 모드로 만들었고, mode bit가 현재 모드를 나타낸다. 0이면 운영체제 코드를 실행하는 커널 모드(kernel mode), 1이면 사용자 응용 프로그램을 실행하는 사용자 모드(user mode)이다. 용도에 따라 2개 이상의 모드를 사용할 수도 있다. 이를 Multimode operation이라 부른다. 사용자 모드 사용자를 위해 실행되는 작업은 사용자 모드이다. 이 모드에서 작업을 수행하던 중에 운영체제 기능을 써야 할 때가 오면, 시스템 콜을 통해 사용자 모드에서 커널 모드..
교착상태 (Deadlock) : 한 스레드 집합 안의 모든 스레드가 집합 안의 다른 스레드에 의해서만 발생될 수 있는 이벤트를 무한정 기다리는 상태 ex) mutex lock을 release하는 이벤트는 다른 스레드에 의해서만 발생될 수 있음. 자원을 사용하는 순서 1. 자원 요청 ex. critical section 진입 전 2. 자원 사용 ex. critical section 영역 3. 자원 방출 ex. 작업 완료 후 자원 반납 Livelock - 스레드가 실패한 행동을 계속해서 시도할 때 발생한다. - Race condition 발생 시 자신의 lock을 즉시 release하지만, 교착 상태의 상대도 똑같이 release하기 때문에 같은 행동을 반복한다. Deadlock 조건 1. 상호 배제 Mut..
람다란? 람다식(또는 람다)은 추상 메서드를 하나만 가진 인터페이스의 인스턴스이다. 자바 8부터 등장했으며, 기존 익명 클래스와 비슷한 역할(함수형 프로그래밍)을 하지만 훨씬 간결하다. // 익명 클래스 Collection.sort(arr, new Comparator(){ ... }); // 람다식 Collection.sort(arr, (o1, o2)->{...}); 익명클래스 vs 람다 람다 익명 클래스 인스턴스에 접근할 수 있는가? X O this 키워드 바깥 인스턴스 익명클래스 인스턴스 자신 => 따라서 익명 클래스는 함수형 인터페이스가 아닌 타입의 인스턴스를 만들 때 사용하는 것이 좋다. 주의할 점 타입을 쓰지 않았을 때 IDE에서 에러가 났을 때를 제외하고, 람다의 모든 매개변수 타입은 생략한다..