My Blog List

Thursday, September 1, 2016

요즘 근황

다른 사람들 블로그를 보다 보면 한번씩 근황에 대해서 글이 올라온다.
요즘에는 이런저런을 하고 있고 그러다보니 오랫만에 블로그에 글을 남긴다는 내용이다.
5년만에 처음 회사에 이직을 했다. 개발하는게 자신이 있었고 그전부터 꾸준히 공부를 해오고있었다는 자신감이 있었는데 막상 이직을 해보니 회사에서 기존 개발되어있는 내용들을 숙지하는것이 보통일이 아니다 그전에는 오래되어서 모르는거 있으면 쉽게 쉽게 물어보고 모든게 익숙해서 내가 원하는대로 쉽게 했었는데 아무래도 적응기간이 필요한것 같다.

이제 한달이 지나가는것 같다.
나의 숨구멍이 조금씩 트이는것 같아 기분이 좋은데 일을 처리하는 속도가 안올라서 큰일이다.
조금만더 여유가 생기면 알고리즘공부를 다시 계속 해야겠다.

Tuesday, August 16, 2016

Nginx로 할 수 있는 것들

nginx에서 제공하는 기능들이 거의 아파치에서 이미 지원하고 있는 기능들이 많다.

내가 알고 있는 nginx에서 사용할 수 있는 기능

1. 프락시 서버
2. 여러대 서버 로드 밸런싱
  - ip hash 라고 계속해서 똑같은 ip의 서버를 바라보게 하는 스펙.
3. static 서버
4. cgi server
5. rewriteurl -> Semantic Url 을 위해서 사용함.

의문 1 만약에 로드밸런싱을 하고 있는데 서버가 다운되었을 경우는 어떻게 되는가??? 한번 더 찾아봐야겠다.


Tuesday, August 9, 2016

closure usage in javascript

This is bad source all nodes are show "nodes.length-1" when you click any node

var add_the_handler = function (nodes){
 var i;
 for(i=0; i<nodes.length; i+=1){
  nodes[i].onclick = function(e){
   alert(i);
  }
 }
}

this is a good pattern compared to above function

var add_the_handler = function (nodes){
 var i;
 for(i=0; i<nodes.length; i+=1){
  nodes[i].onclick = function(i){
   return function(e){
    alert(i)
   };
  }(i)
 }
}

Wednesday, July 27, 2016

Clojure (3) prefix notation

we are used to using 3 + 5 if we add two numbers
Clojure is different from what we are familiar with.

(+ 2 3) this is clojure add form.

if we add numbers not only two, code will be complicated
ex)  add(add(add(2, 3),5),6)

clojure is so simple
(+ 2 3 5 6)

and result is the same





Wednesday, July 20, 2016

Clojure (2) hash map and check-login function

Is there HashMap in clojure
Yes It it.

below is hash map and check-login function
(def users 
  {"kyle" {:password "secretk" :number-pets 2}
   "siva" {:password "secrets" :number-pets 4}
   "rob" {:password "secretr" :number-pets 6}
   "george" {:password "secretg" :number-pets 8}})

(defn check-login[username password]
    (let [actual-password ((users username):password)]
        (= actual-password password)))


try to use check-login function
hello.core=> (check-login "kyle" "secretks")
false

hello.core=> (check-login "kyle" "secretk")
true

Clojure (1) add two number

First time, I blog about Clojure.
IDE = Nightcode1.0.1

this code is from Clojure in action and I rewrited it.

With REPL I run.

Sum two values
hello.core=> (+ 1 2)
3

make function add two values
hello.core=> (defn my-add [op1 op2] (+ op1 op2))
#'hello.core/my-add

use add function
hello.core=> (my-add 1 2)
3

use add function
hello.core=> (my-add 1000000000000000000 300000000000000000000)
301000000000000000000N


도개걸윷모 개가 나올 확률~!

이건 경우의 수 문제입니다.
(난이도는 Easy 입니다.)

어느날 갑자기 도개걸윷모중에서 개가 나올 확률을 물어본다면 무엇이라고 대답하시겠어요?? 
저한테 있었던 일이에요.

1/5 ? 음.. 아닌데.. ㅠ 갑자기 말을 못했던 기억이..

그러면 다시 정리해서 작성해보죠.

말을 다시 바꾸어서 4개의 동전이 있습니다. 
4개의 동전을 던졌을때 2개의 동전이 앞이 나오는 경우는 몇가지인가요?

동전 1개당 앞 뒤가 있으니 경우의 수는 2개이며
총 4개라고 했으니 

2*2*2*2 즉 2^4  16개가 나옵니다.
그중에 2개가 앞이 나올 경우의 수는

1. (O, O , X, X)
2. (O, X , O, X)
3. (O, X , X, O)
4. (X, O, O, X)
5. (X, O, X, O)
6. (X, X, O, O)

즉 첫번째를 포함한경우 3
2번째를 포함하고 그 이하인 경우 2
3번째를 포함하고 그 이한경우 1

총 6가지가 나옵니다. 

어렵지 않지요??

접근 1 : 모든 경우의 수를 나열한다.

접근 2 : 경우의 수를 수학적으로 계산한다.

같은 것이 있는 순열이 있습니다.  (증명은 수학의 정석 참고하시면 됩니다.)
일반적으로 계산 식은 

(총갯수!/중복이 있는 수! * 중복이 있는 수!....)
위의 예제로 다시 정리하면
4!/2!*2! = 6이 나옵니다.

이렇게 되면 아주 큰 수도 간단한 수학적 지식으로 풀 수가 있겠죠??