Programming(174)
-
[ANDROID] 구글 GCM 구현하기
서버로부터 push 서비스를 받기 위해서는 구글에서 제공하는 GCM(Google cloud messaging) 서비스를 이용해야 한다. 우선 구글 api 개발자 센터에 접속해서 GCM 서비스를 이용하기 위한 프로젝트를 만들자.우측 상단에 API Project라는 메뉴를 클릭한 후 프로젝트 생성 메뉴를 클릭해서 프로젝트를 생성하자. 프로젝트를 생성하면 프로젝트 ID가 함께 생성되는데 이 ID 값을 google 측에 넘겨야 GCM ID를 받을 수가 있다. 이제 프로젝트를 클릭해서 사용 하고자 하는 API를 선택해야 한다. Google Cloud Messaging을 클릭한 후 사용 설정을 활성화 해주자.이제 서버에서 gcm 요청 curl을 날릴 때 인증을 위한 서버키를 만들어야 한다. 사용자 인증 정보에서 A..
2016.04.26 -
[SCALA] Tail Recursion - Coursera 강의 ppt 번역
Review: Evaluating a Function Applicationf(e1, ..., en) 이라는 함수가 있다고 가정할 때, expression e1,...,en 의 결과 값은 v1,...,vn이 되며, 함수 f 안에 있는 e1,...,en을 v1,...,vn으로 교체해도 함수 f의 동작이 무방할 때 이를 substitution model이라고 한다.아래 코드는 위의 글을 프로그램적으로 다시 쓴 것이다.def f(x1,...,xn) = B; ...f(v1,...,vn)def f(x1,...,xn) = B; ... [v1/x1,..., vn/xn]B여기서 [v1/x1,...,vn/xn]B이 의미하는 것은 expression B에 있는 모든 vi는 xi에 의해 교체될 수 있음을 의미하고, [v1/x..
2016.01.07 -
[SCALA] Blocks and Lexical Scope - Coursera 강의 ppt 번역
Nested functions많은 작은 함수 조각으로 분리해서 프로그래밍 하는 것은 좋은 functional programming style이다.그러나 sqrtIter, improve, isGoodEnough 와 같은 함수들은 sqrt의 구현 부분이지 도움말 같은 요소는 아니다. 게다가 사용자 역시 이러한 함수에 직접적으로 접근하지는 않는다.우리는 sqrt 내에 이러한 함수들을 집어넣음으로써 "name-space-pollution"을 피할 것이다.The sqrt Function, Take 2def sqrt(x: Double) = { def sqrtIter(guess: Double, x: Double): Double = if (isGoodEnough(guess, x)) guess el..
2015.12.29 -
[SCALA] Square roots with Newton's method - Coursera ppt 번역
Task이번 세션에서는 아래의 함수를 정의할 것이다.def sqrt(x: Double): Double = ...Newton's method를 이용하여 연속적인 호출로 값을 추산할 것이다.Methodsqrt(x)를 계산하기 위해서는- 초기 값 y와 함께 시작이 되어야 한다.( 초기 y 값을 1이라고 정의하자.)- y의 평균 값과 x/y 값을 반복적으로 계산함으로써 값의 추정을 향상시킨다.Example: x가 2일때,추정값 몫 평균1 2/1 = 2 1.5 ( (1 + 2) / 2)1.5 2/1.5 = 1.333..
2015.12.28 -
[SCALA] Conditionals and Value Definitions - Coursera 강의 ppt 번역
Conditional Expressions두 가지의 대안 중 하나를 선택하기 위해서 scala에서는 if-else라는 conditional expression을 사용한다.자바의 if-else와 유사하게 보이지만, statements가 아닌 expression의 용도로 사용한다.statements와 expression의 차이- statements는 컴퓨터에게 어떤 동작이나 지시를 내리기 위한 명령문 형태인 반면에 expression은 어떤 값을 산출해내기 위한 함수나 연산자의 조합을 말한다. statements에서는 side effect가 발생하는 반면 expression은 side effect를 발생시키지 않는다고 한다. 자세히 어떤 차이인지 잘 모르겠다.ex)def abs(x: Int) = if (x ..
2015.12.25 -
[SCALA] Evaluation Strategies and Termination - Coursera 강의 ppt 번역
Call-by-name, Call-by-value and termination지난 시간에 call-by-name과 call-by-value 전략에 대해 간략히 살펴보았다.그런데 만약 종료 조건이 보장이 안된다면 어떻게 할까?아래의 명제는 반드시 보장이 된다.- 만약 call-by-value가 종료된다면, call-by-name 역시 종료가 된다.Scala's evaluation strategyScala는 일반적으로 call-by-value를 실행한다.그러나 만약 함수 파라미터의 타입이 =>로 시작한다면 이는 call-by-name을 실행하겠다는 의미가 된다.ex)def constOne(x: Int, y:=> Int) = 1constOne(1 + 2, loop) Vs constOne(loop, 1 + 2)..
2015.12.24