블로그에 올리고 싶은 게 많은데 임시저장 글에 켜켜이 쌓이는 중이다. 이대로 가다간 결국 아무것도 안 올리겠다 싶어서 짧게라도 지금 하고 있는 것들을 올려본다. 제일 많은 시간을 쓰고 있는 것: 구글 머신러닝 부트캠프에 지원해 붙어서 코세라에서 Andrew Ng님의 Deep Learning Specialization 코스를 듣는 중이다. 자세한 이야기는 임시저장 글에 잘 들어있으니 조금씩 올리려고 한다. 추가로 하려고 하는 것: 삼성에서 하는 S/W 알고리즘 역량 강화 특강에 지원해 사전 문제를 풀었다. 합격될지는 모르겠다. 솔직히 말하면 교육을 수료하면 갤럭시워치를 준다고 해서 거기에 혹했다 ㅋㅋ.. 그와 별개로 알고리즘은 계속해서 공부해야겠다고 생각하고 있었는데, 기회가 딱 와서 잡았다. 왜 알고리즘..

나는 2020년 9월에 공군 818기 전자계산 특기로 입대해 훈련소 생활을 마치고, 정보체계관리단으로 자대를 배치받아 일 년 반 넘게 복무한 후 지난 5월 5일에 무사히 미복귀 휴가를 나왔다. 길고 길었던 군생활을 한 달의 글에 깔끔하게 녹여낼 수 있을지 잘 모르겠지만, 상상속의 잘 쓴 글보다는 블로그에 올리는 못 쓴 글이 나으니까 글을 써본다. 입대준비 사실 난 오래전부터 정보체계관리단에 가고 싶었다. 공군이 흔히 타는 루트대로 카투사에 깔끔하게 떨어지고 공군에 지원했다. 원래 육군 SW 개발병과 산업기능요원을 고려해봤지만 당시의 실력으로는 붙을 수 없다고 판단했다. 군대 리스크를 안고 학년이 올라가서 다시 시도하느니 그냥 미리 공군을 가기로 했다. 그렇게 공군의 자대와 특기를 공군 갤러리를 들락거리며..

부모님 일을 도와서 라즈베리파이로 이미지 업로드/조회 서버를 구축해야 할 일이 생겼다. 머신러닝 부트캠프 접수도 끝나서 여유 시간을 이용해서 해보기로 했다. 간단한 기능이라 1~2주면 끝날 것 같다는 생각이다. (이렇게 잡으면 항상 두 배는 걸리던데 ㅎㅎ..) 라즈베리 파이는 사실 처음 써봤는데, 이 작은 걸로 리눅스가 돌아간다고 한다. 이걸로 재밌는 일들을 많이 해볼 수 있을 것 같다. 찾아보니까 IoT 스마트홈 DIY나 개인 서버로 많이 쓰는 것 같다. 먼저 라즈베리파이에 라즈베리 파이 OS를 설치해야 한다. 데비안 기반 리눅스인데 라즈베리 파이에 맞게 최적화나 편의기능이 들어가 있는 것 같다. 뭐 우분투도 돌아간다고는 하는데 제조사에서 공식적으로 지원하는 게 최고라고 생각해서 라즈베리 파이 OS를 ..
기록을 남겨야겠다고 오랫동안 생각해왔는데, 제일 좋은 곳이 어디일까 하다가 만만한(..) 티스토리를 다시 사용하기로 했다. 군대에서 배운 게 하나 있다면, 최고의 선택지를 선택하기 위해 아주 오래 고민하는 것보다, 일단 하나를 선택해서 시작해 보는 것이 좋다는 것이다. 특히 언제든지 선택지를 바꿀 수 있는 거라면. 그래서 velog도 있고 medium도 있고 github.io도 있고 notion(+oopy)도 있지만 전부터 사용해서 그래도 방문자가 약간은 있는 티스토리로 결정했다. 군대에서 뵈었던 멋진 분들도 티스토리 블로그를 사용하고 있기도 했고.. 사실 노션으로 일기와 배운 내용을 정리하고 있긴 했지만, 외부에 뭔가 '내가 이런 걸 하고 있다'라고 알리고 의견을 나눌 채널이 하나쯤 필요하다고 생각했다..
https://poiemaweb.com/es6-block-scope let, const | PoiemaWeb ES5까지 변수를 선언할 수 있는 유일한 방법은 var 키워드를 사용하는 것이었다. var 키워드로 선언된 변수는 아래와 같은 특징이 있다. 이는 다른 언어와는 다른 특징으로 주의를 기울이지 않으면 poiemaweb.com ES6의 변경점을 주제별로 작동 원리까지 포함해 작성한 좋은 글이 있었다. let: 블록 레벨 스코프를 가짐 들어가기 전에: 배경지식 - 자바스크립트 실행 컨텍스트의 원리https://poiemaweb.com/js-execution-context Execution Context | PoiemaWeb Execution Context(실행 컨텍스트)는 scope, hoisting,..
6장. 객체지향 프로그래밍 공통된 함수 객체(메서드)를 객체마다 생성하면 메모리 낭비 프로토타입 객체에 함수를 정의하자. 더글라스 크락포드식 메서드 정의 방법 Function.prototype.method = function (name, func) { this.prototype[name] = func; } function Person(arg) { this.name = arg; } Person.method("setName", function (value) { this.name = value; }) Person.method("getName",function () { return this.name; }) let me = new Person("me"); let you = new Person("you"); con..
진도가 느려진다. 이해가 안 가더라도 다시 찾아올 수 있도록 정리만 해 놓고 빠르게 넘어가자 실행 컨텍스트 c의 함수 호출 스택과 비슷 현재 실행되는 컨텍스트에서 이 컨텍스트와 관련 없는 실행 코드가 실행되면 (전역 코드, eval() 함수로 실행되는 코드, 함수 안의 코드) 새로운 컨텍스트가 생성되어 스택에 들어가고 제어권이 그 컨텍스트로 이동한다. 생성 과정 1. 활성 객체(=변수 객체) 생성 2. argument 객체 생성 (활성 객체는 arguments 프로퍼티로 이 객체 참조) 3. 스코프 체인 생성 (생성된 활성 객체가 스코프 체인 맨 앞에 추가) 4. 변수 생성 (instantiation), 값이 넘겨지지 않았으면 undefined가 할당 주의: 초기화(initialization)은 나중에 ..
this 바인딩 메서드(객체의 프로퍼티 중 함수인 것): 해당 메서드를 호출한 객체 (메서드를 가진 객체가 아님!!) 함수: 전역 객체 (브라우저에서 실행하는 경우 window 객체, Node.js와 같은 자바스크립트 런타임 환경에서는 global 객체) 내부 함수(함수 안의 함수): 정의되지 않음 -> let that = this; 사용, 명시적인 this 바인딩을 위한 call/apply/bind var val = 100; let myObj = { val: 1, func1: function () { this.val += 1; console.log('func1() called. this.val : ' + this.val); func2 = function () { this.val += 1; console..
함수 선언문 function funcName(x, y) { return x + y; } 내부적으로 함수 표현식으로 변환됨 let funcName = function funcName(x,y) { return x + y; }; 함수 표현식 함수 리터럴로 만든 함수를 변수에 할당하여 함수를 생성하는 것 let funcName = function (x,y) { return x + y; }; 이름을 안 붙일수도 있고 (익명 함수 표현식), 이름을 붙일 수도 있음 (기명 함수 표현식). 단, 이름을 붙여도 함수 내부에서 재귀적으로 호출하거나 디버거에서 구분을 위해 사용하는 것만 가능하고, 외부에서 해당 이름으로 호출할 수 없음. Function() 생성자 new Function(arg1, arg2, ... , ar..
총 281페이지: 123/45/67 챕터 데이터 타입: typeof 키워드로 확인 기본 타입 - number (실수형만 존재), string (문자열 리터럴은 특정 글자 재할당 불가), boolean, undefined, null 참조 타입 - object: array, function, 정규표현식 object 단순히 프로퍼티(key: value 형태)를 저장하는 컨테이너 (like 해시) 생성: 1. Object() 생성자 함수 2. 객체 리터럴 3. 생성자 함수 for in 문: 객체 프로퍼티 반복 delete 키워드: 객체 프로퍼티 삭제 변수는 참조 타입으로 객체를 가리킴 객체 비교 동등 연산자 == : 객체의 참조값 비교 함수 호출 call by value: 기본 타입 -> 값 복사 call by..