함께 성장하는 개발공부 일기

9. 나의 불편함을 해소시켜줄 어플

브라더원 2020. 2. 28. 20:38

개발 공부 일기 9

 

 한달쓰기 4기가 2일 뒤면 끝난다. 목표였던 개발공부일기 15개 쓰기는 실패다. 나중에 내 필살기가 될 '개발' 공부를 본격적으로 시작해본 한달 4기, 아~주 기본적인 개념과 문법에 대해 공부하는 좋은 시간이었다. 작년 7월부터 머릿 속에 박혀있는 '인풋을 아웃풋으로 전환하는 것'을 위주로 생각하다보니, 답답한 면이 없지 않아 있었다. 그래도 어쩔 수 없지.

 

 아웃풋을 위한 기본적인 인풋은 필수니까. 일단은 그릿으로 기초를 다져야한다. (그래도 답답한 건...후...) 한달쓰기 5기가 시작되기 전까지, 생활코딩 자바스크립트 강의를 꾸준히 공부하자. 내 능력을 팔 수 있는 시기가 빨리 왔으면 좋겠다. 그래서 '한달머니'로 실험해보고 싶은데, 아직 너무 이르겠지? 아니면 그냥 5기 때부터 헤딩해볼까? 일단, 5기 시작 전까지, 필살기 연마 프로젝트하는 수 밖에. 그래도 개념만 스터디하면 '공부의 즐거움'을 잃을 수 있으니, 다른 재미난 것도 생각을 해야지.

 

 일상 생활에서 불편했던 것들을 해소하는 프로그램, 어플리케이션 아이디어에 대해 꾸준히 메모해놓자. 자다가도, 샤워하다가도, 그리고 놀다가도 생각나는 것이 있으면 핸드폰을 켜고 메모장에 기록하자. 현재 한 가지 생각한 것이 하나가 있다. 순전히 내가 불편해서 만들고 싶은 김형일 맞춤식 어플리케이션. 기능은 다음과 같다.

 

 "잠들기 전에 깊은 수면을 위한 relaxing music(alpha waves)을 재생하고, 30분 정도 시간이 지나면 정지가 되며 데이터 또는 와이파이가 꺼지고 비행기 모드(전자기장 차단을 위해)로 전환되는 어플리케이션"

 

 내 핸드폰은 아이폰이니, IOS전용 어플리케이션을 만들어야겠지. 기본 공부를 하면서, 위의 어플리케이션을 만들려고 시도해볼 것이다. 아직 아무것도 모르지만. 뭐 어떻게든 되겠지.

 

1> 매일 공부(Daily Input)

1. 정적 유효범위(lexical scoping)

var i  =5;

 

function a(){

    var i = 10;

    b();

}

 

function b(){

    document.write(o);

}

 

a();

2. 값으로서의 함수와 콜백(callback)

function a(){} = var a = function(){}

함수도 객체이다. 다시 말해서 일종의 값이다

a = {

    b : function(){

    }

}

b는 key 변수로서의, 속성(property), function은 value이다('method'라고 부른다)

function cal(func, num){

    return func(num);

}

 

function increase(num){

    return num+1

}

 

function decrease(num){

    return num-1

}

 

alert(cal(increase,1));

alert(cal(decrease,1));

function cal(mode){

    var funcs = {

        "plus" : function(left, right){return left + right},

        "minus" : function(left, right){return left - right}

    }

    return funcs[mode];

}

 

alert(cal("plus")(2,1));

alert(cal("minus")(2,1));

 

배열의 값으로도 함수 사용가능

 

var process = [

    function(input){return input + 10;},

    function(input){return input * input;},

    function(input){return input / 2;}

];

 

var input = 1;

for(var i=0; i<process.length; i++){

    input = process[i](input);

}  

 

alert(input);

[ 함수의 값으로 사용될 수 있는 것 ]

 

- first-class citizen(또는 object) -

1. 변수

2. 매개변수

3. 리턴값

 

[ 콜백 callback ]

 

값으로서의 함수와 밀접하게 연결되어 있는 것.

어떠한 함수가 수신하는 인자가 함수인 경우를 콜백이라고 한다.

 

배열 시간에, 배열을 정리하는 방법에 대해 말한 적이 있다.

값으로서의 함수, 자바스크립트의 특징을 활용한 사례

이것은 콜백이었다.

var numbers = [ 14, 31, 25, 10, 13, 16, 20 ];

numbers.sort();

numbers는 객체이다. 배열 객체!

sort는 객체에 속해있기 때문에 메소드라고 부른다.

기본적인 기능이기 때문에 내장 객체, 내장 메소드, 빌트인 객체, 빌트인 메소드라고 부름.

 

-cf. 우리가 만든 함수, 객체는 사용자 정의 객체, 함수라고 부른다

 

sort는 numbers라는 객체에 sort라는 명령을 내린것.

 

var numbers = [ 14, 31, 25, 10, 13, 16, 20 ];

var sortfunc = function(a,b){

    console.log(a,b);

    return a > b;

}

console.log(numbers.sort(sortfunc));

var numbers = [ 14, 31, 25, 10, 13, 16, 20 ];

var sortfunc = function(a,b){

    console.log(a,b);

    return a - b;

}

console.log(numbers.sort(sortfunc));

3. 비동기 처리

홈페이지 있음 => 10000구독자

글 작성하면 10000명에게 알림이 간다

한 명당 1초 걸린다고 하면 3시간 걸림.

 

* 글 작성 -> 이메일 발송 3시간 -> 작성완료통보

이를 동기적 처리라고 한다.

 

* 글 작성 -> 이메일 발송예약 -> 작성완료통보

todo리스트 일단 적어놓고, 적어놓은 일을 나중에 처리한다

이를 비동기적인 처리라고 한다

Ajax 에이잭스 => asynchronous Javascript and XML

웹페이지를 새로 다운받지 않고, 단순히 문서 애플리케이션으로 발전하는

단서를 제공한 에이잭스