is윤군이야기2011. 6. 21. 18:38
Who am I?; 
What should I do for me?
What kind of person do I want to be?  
What should I need?
So.. what?

나는 참 옛날 부터 욕심많은 아이였다.
이것저것 하고 싶은 것도 많고.. 그것을 위해서라면.. 앞뒤 생각없이 덤벼드는..

그런데.. 참으로 내가 하고 싶은게 있는데..
암만 앞뒤 생각없이 덤벼들어도 할 수 없는 일이 있다..

사실 내 능력밖에 일이고.. 의지박야인 나에겐... 어쩜 이미 저 물건너간 일일 수도 있고..
아니 probably....  물건너 갔겠지만.. 그래도 이 욕심은 버릴 수가 없구나.. 

흠..
코딩으로 세계평화!! 
언젠간 꼭 이루리라... ;;
 
Posted by is윤군
TAG .

댓글을 달아 주세요

  1. 메트릭스 현실화 되는거야?? ^^

    2011.06.22 11:18 신고 [ ADDR : EDIT/ DEL : REPLY ]

윤Front-End2011. 6. 20. 16:14
일단 닥치고 코드부터.
var cuckoo = function(howmanyCuckoo){
  if(0 === howmanyCuckoo){
    return false;
  }
  console.log('cuckoo~');
  cuckoo(--howmanyCuckoo);
}
cuckoo(12);
00 시이길래 뻐꾸를 울려볼까 해서 급 제조한 코드;; 
관심있는 여성분에게는 더 많이 날려도 좋을 것 같네요..
Posted by is윤군

댓글을 달아 주세요

is윤군이야기2011. 6. 20. 13:31


기억을 더듬어 보면 질풍노동(?)의 시기에도 난 그닥 방황하지 않았다.. 
 단지 엄마에게 반항만 몇번하고.. 출가 몇번..  뭐 그런거 말고는 .. 
무난한 유년기를 보냈었다..

그런데 이제 곧 서른을 바라보는 나이인 나에게... 이상한 한 오춘기? 육춘기 정도가 되는 녀석이 찾아 온것 같다.. 
처음에는.. 미국으로 와서 유학생들이 한번씩 느낀다는 입질인 줄로만 알았는데..
한동안 곰곰히 생각해보니.. 계속해서 자신과의 싸움중에 있다는 것을 깨달았다..

하루에도 몇번씩 기분이 오락가락하고.. Who am I? Where am I? ;; 뭐 내가 Bourne Identity 의 주인공이 된 마냥... 
삽질만 하고 있다는 것을 깨달았다..

어찌보면 너무나 웃긴 이야기 이기도 하고.. 슬픈 이야기 이기도 한 것 같다...
 지금 이상황에서 벗어나지 못한다면.. 정말 삽질 할 수도 있다는 생각이 문득든다.. 

어차피 나와의 싸움이고 .. 이 문제를 해결할 수 있는 사람도 해결해야 하는 사람도 즉 갑과 을이 나인 셈이다..
인생이 프로그램이라면 디버깅하면서 이 더러운 버그를 해결하겠지만..
안타깝게도 그렇지 못하니.. 아쉽긴 하다..

하루빨리 이 짜증나는 전쟁에서 승리하여.. 다시 윤군의 모습으로 돌아가고 싶다.
그게 지금 내가 가장 바라는 ... 가장 하고 싶은 일인듯하다. 
Posted by is윤군

댓글을 달아 주세요

  1. 화이삼~

    2011.06.21 10:21 [ ADDR : EDIT/ DEL : REPLY ]
  2. 인생이 플그램이냐??
    짜면 바로 티나오게??
    니 뒤질때쯤... Who am I? 요거 하나만 알게 되더라도 다행이지 않나?? ㅋㅋ

    2011.06.22 11:23 신고 [ ADDR : EDIT/ DEL : REPLY ]

is윤군이야기2011. 6. 13. 08:54
몇년 전만 해도 코딩으로 세계평화를 실현하려는 꿈을 꾸었다.. 
물론 말도 안되는 그런 꿈들이 었고..
시간이 흐를 수록 내 자신의 미천함을 알게 되어가고 ..  이건 말도 안되는 허황된 꿈이 었던 것이라는 걸 알게 되었고..

그후론 코딩으로 세계평화보단... inner peace 라도 어떻게 안될까 라는 조잡한 희망으로 지금까지 악성코드를 양성해나가고 있다.
그러던 중 문뜩... inner peace.. what?;; 이런 생각이 들었고.. 

다시 한번 꿈을 꾸어 볼까 생각중이다..
그렇다고 예전처럼 세계평화를 외치는 것도.. 소심하게 내안의 평화도 아닌..
그 머랄까.. 콜라처럼 시원하고.. 소주처럼 달달하면서도.. 김치찌개처럼 심오하면서 얼큰한 그런 really perfect 한 ... 꿈을 
다시 한번 꾸어볼까 한다..

뭐 사실 ㅋ 구체적인 것도 손에 잡히는 것도 없지만..
지금부터 머 만들어가다 보면ㅎㅎ 머라도 만들어 지지 않을까? 싶기도 하고..
가장 큰 적인 "의지박야"만 이겨 낸다면!! 뭐 못할 것도 없겠지?;

anyway... 잡소리는 때려치우고...
하던 일이나 계속하자.. ;;  
Posted by is윤군

댓글을 달아 주세요

  1. 꿈이라는건 꾼다는것 만으로도 좋은게 아닐까...
    난 항상 꾸고 있음... ㅋ

    2011.06.13 10:04 [ ADDR : EDIT/ DEL : REPLY ]
    • 꼭 꿈 이루시길..ㅎㅎ 저도 꿈을 위해서 ㅋㅋ 계속 달려 보려구요 ㅎㅎㅎ

      2011.06.13 10:10 신고 [ ADDR : EDIT/ DEL ]
  2. 아오.. 나도 의지박약.. 미쵸 ㅠㅠ

    2011.06.15 18:57 [ ADDR : EDIT/ DEL : REPLY ]

지X2011. 6. 11. 19:11
맥 크롬에서 다음에디터 정말 안습 ㅠㅠ

다른것으로 갈아타고 싶지만 호스팅할 서버도 없고..
시간도 없고.. 귀찮기도 하고..

블로그를 걍 안하면 되는건가;;

젠장..  
뭐 사실 웹에디터라는게 자체가 완벽한 솔루션이 없긴 하지만 말이다 ㅡㅡ;
이해는 하지만....  쩝;; 절이 싫으면 중이 떠나야 하지만 귀찮네;; 에혀..
Posted by is윤군

댓글을 달아 주세요

윤Front-End2011. 6. 11. 06:28
트윗의 api document 문서를 보면 .. 
oAuth token 을 얻기 위한 url이 두개가 있다..

(각 링크를 누르면 api문서를 볼 수 있뜸!)

사실 둘다의 링크를 이용해도 인증은 할 수가 있다.
그런데 두 녀석의 다른 점이 있다면 ..
하나는 desktop application 에서 반드시 사용해야 하는 녀석이다. 

https://api.twitter.com/oauth/authorize
  이녀석인데.. 
api 문서에 봐도 ..
Desktop applications must use this method (and cannot use oauth/authenticate).  
이렇게 적혀 있다.. 
그런데 웹에서도 사용할 수 있다. 

다만 두녀석의 큰 차이중에 하나는 ..
첫번째 녀석은 인증을 요청 할때마다..

 이렇게 계속 물어본다.. 계속 계속..  
 문서를 좀더 보면 데탑 플로우는 살짝 다르기때문에 이렇게 만들어 놓은 것 같다.  당연한 이야기이지만 말이다 ;; 

흠냥.. 무튼.. 웹에서 트윗 연동을 하고 싶다면 2번을..
데탑용이라면 1번을 사용해야함~;

 
Posted by is윤군

댓글을 달아 주세요

윤Front-End2011. 6. 8. 11:34
요즘 마니들.. html 로 메일을 보낸다. 
그런데... daum 메일에 약간 버기 한거 있어서 @.@

tag id 중에 footer 라는 녀석이 있다면..
daum mail() 에서 내용이 출력 되지 않더라.. (2011.6.7 일 기준!) 

첨에는 .. 잘 못 보냈는 줄 알았는데 다른쪽에도 보내본 결과 잘 나왔고..
혹시나 해서 봣더니..

 
#footer 가 정의 되어 있고.. visibility : hidden 으로 정의 되어 있다.. 
그런데 원래라면 ..  자기내 css들과 유저가 작성한 것과 충돌 나지 않도록 만들어야 하는거 아닌가 모르겠다..
hidden의 문제를 떠나 무튼 footer를 쓴다면 안보이고 이상한 스타일이 먹을 듯..

그리고 다른 테그도 함께 쫑나는거 아닌가 모르겠네;;

그냥 머 뭐 그렇다고~~;;;  짓거려 봄!!
Posted by is윤군

댓글을 달아 주세요

  1. 안녕하세요, 다음 메일 담당자입니다. 우연히 검색을하다 윤군님의 블로그에 들리게 되었습니다.^^; (얹짢아 하지 않으셨으면 좋겠습니다^^;;) 포스팅 해 주신 현상은 즉시 확인하도록 하겠습니다. 이후에도 개선해야 할 부분을 발견하신다면 언제든 말씀주세요!! 감사합니다.^^;;

    2011.06.17 00:56 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 핫;; 괜히 보시고 기분나쁘신거 아니였나 모르겠네요;;;
      뭐 사용하다 보니.. 이상한게 있어서 블로깅 한거구요;;
      다음메일을 욕한건 아니에요.;; 무튼 다음메일은 잘 애용하고 있답니다 ㅋ
      그럼 ~~ 열개발 하세욤~

      2011.06.17 20:33 신고 [ ADDR : EDIT/ DEL ]

윤Front-End2011. 6. 7. 09:08
불여우에 버그.. 

input type="button"  or input type ="reset" or input type ="submit" 으로 만들어진 버튼들에 
line-height를 조절 할 수 없다.

button 이랑 submit 녀석들을 a tag로 만들어진 button 과 함께 스타일 먹여서 사용하고 싶었는데..
파폭에서 이상하게 나와서 찾아보니 ..

역시나 불여우 버그.. ;;

http://www.cssnewbie.com/input-button-line-height-bug/ 
작년에 알려진 버그인데.. 불여우4에서 여전히 수정이 안되어 있네;;  

해결 방안은..
1. 우선 padding으로 처리 한다.
2. button 과 a tag 버튼을 함께 나열 하지 않는다.
3. button이 다른 브라우저랑 사이즈가 살짝 작아도 그냥 견뎌야 함.
4. firefox만을 위해서.. css를 작성한다.. 
body.firefox input.sBtn{
  padding:4px 10px !important;
  line-height: normal !important;
}

body.firefox input.lBtn{
  padding:5px 10px !important;
  line-height: normal !important;
}

body.opera input.sBtn{
  padding:5px 15px !important;
  line-height: normal !important;
}
body.opera input.lBtn{
  padding:6px 15px !important;
  line-height: normal !important;
}



이상!!   사실 opera는 좀 더 멍청했다 ㅡ.ㅡ;
Posted by is윤군

댓글을 달아 주세요

윤Front-End2011. 6. 6. 15:29
자세한 내용은 위키참조 하시고~
http://en.wikipedia.org/wiki/Chunked_transfer_encoding

이번 경험에서 얻었던 내용들을 몇자 적어 볼까 한다. 

경험에 대해서 짧게 이야기 하자면 실시간 통신 그러니까.. 웹브라우저와 서버 간에 통신? 
뭐 Comet 기술 중에 하나로 봐도 되는데.. ie에선 사용을 못하니 어쩜 반쪽짜리 기술이 될 수도 있고.. 
더 많은 실시간 통신 기술에 대해선 2011 JCO 세션중에 실시간 통신과 관련된 내용이 있으니 .. 
기회가 된다면 들어보면 될꺼라고 생각함. 

일단 서버쪽은 예전에 손 놓은 ... JAVA. 
웹쪽은 그냥 jquery조금 사용해서 만들어진 코드. 

고려해야 할 점은.. ajax 이용시 .. XMLHttpRequest 의 readyState 코드가 중요 하다.
코드 내용은 이곳 참조 . 0 부터 4까지 존제 하며 
0은 초기화전. 1은 XMLHttpRequest 가 오픈에 성공했을때 코드. 
2는 서버로 요청 성공시 . 그러나 아직 값은 받지 않았을때.
3. 값을 받고 있을때? 음 processing request라고 해야 하나;;.. 무튼 일단 값을 서버로 부터 받으면 코드가 3으로 바뀜. 
4. 모든게 완료 되면 4번으로 바뀜. 데이터 전송이 완료 되엇을때.. 

그래서 Transfer-Encoding 이 chunked 일 경우 xhr의 코드는 계속 3을 유지 한다. 
아 이녀석은 xhr에 onreadystatechange event에서 확인 하면 되고 .. 그건 요곳 참조. 

지금 까지 정리 하면 서버쪽에서 transfer-encoding이 chunked상태로 보내면 .. 
xhr의 readyState 가 3을 유지... 
그럼 그 상태에서 xhr의 responseText의 값을 확인 해보면 값들이 변경되는 것이 보인다.


하지만 고려해야 할점은... 그동안 보내는 데이터가 계속해서 이어서 나온다는거?! 처음에 a를 보내고 두번째 b를 보냈다면 .. 
1 : responseText => a
2: responseText => a b

이런식으로 계속 온다는 것이다.. 서버에서 end 하기 전까지.. 보통 \r\n을 보내거나.. 랭스가 0인 녀석을 보내면.. 
완료 되엇다고 판단하긴 한다..


그래서 좀 거지 같다.. 매번 데이터를 읽을때 이전 값은 빼고 다시 이번에 새로운 녀석만 읽어 들여야 하니.. 
그리하여 이런 코드가 나온다 ㅡㅡ;;
  xhr.onreadystatechange = function(e) {
    if ((xhr.readyState == 3 || xhr.readyState == 4) && xhr.status == 200 && !isDone) {
      responseText = xhr.responseText;
      responseText = responseText.substring(chunkIdx);
      chunkIdx += responseText.length;
      if(responseText === ''){
        isDone = true;
      }
      if(isJSONString(responseText)){
        updateChat($.parseJSON(responseText));
      }
    }
    if(isDone){
      xhr.abort();
    }
  };


말보단 코드가 더 편한 사람이 있으니..;;  이부분만 해결하면 .. 어느정도 써먹을 순 있다.. 
그리고 지금 처럼 하면 실시간으로 미친듯이 데이터를 받다보면 누적되는 데이터가 장난이 아닐 테니.. 
적당한 길이 봐서 abort시키고 다시 요청 보내서 첨부터 시작하는 프로세스가 필요 할 것이다.. 

자 .. 그럼 서버 코드는?


    @RequestMapping("/chatListener")
    public void chatListener(HttpServletRequest req, HttpServletResponse res, @RequestParam()String uuid) throws Exception {
        ServletOutputStream out = res.getOutputStream();
        try {
            res.setContentType("application/json; charset=utf-8;");
            res.setHeader("Connection", "close");
            chatStore.enterStore(uuid);
            JsonGenerator generator = om.getJsonFactory().createJsonGenerator(res.getOutputStream(), JsonEncoding.UTF8);
            while(true){
                om.writeValue(generator,chatStore.getData(uuid));
                synchronized (this) {
                    wait();
                }
            }
        } catch (Exception e) {
            chatStore.remveStore(uuid);
        } finally {
            if (out != null) {
                try {
                    out.close();
                } catch (Exception e) {
                }
            }
        }
    }


샘플이기 때문에 ㅋ 대충 만들었다..ㅋ 아.. 저기서 json으로 보내려고 다른 녀석을 좀 썼는데 핵심은.. 
out 에서 print메소드를 이용해서 보낼 데이터를 넣구.. 바로 out.flush() 해주는게 핵심이다.
위에 writeValue 메소드에서 그짓을 해준다.. 저녀석은 jacksonjson lib중에 한녀석이구..;; 

무튼 이렇게 해서 대충 실시간을 흉내 낼 순 있다..
ajax를 이용해서 chunked를 읽어 들이려면 readystate코드와 responseText를 파싱하는 ? 이것만 유의하기만 하면 된다. 
서버는 어떻게 자바던 php던 머던.. 스트림을 계속 푸쉬만 해주면 되니까.. :-)

무튼 자세한 설명은 이번 2011 JCO발표를 참고 하시길~~ 발표후에 pt와 코드가 오픈 될테니..;;  


Posted by is윤군

댓글을 달아 주세요

윤Front-End2011. 5. 30. 21:41
twitter는 사용자가 원하는 시간대를 선택할 수 있고..
facebook은 자동으로 timezone을 auto detect해서 시간대에 맞게 
글을 적은 시간을 디스플레이 해준다..

그냥 문뜩 저녀석들 무슨 기준으로 선택하나가 궁금해졌고..
첨에는 IP로 접속지역? 인가 싶어서
한국에 있는 프록시 서버로 접속... ; 안바뀌었다.. 

그래서 다음 시도는 한국에 있는 지인을 통해서  페북 계정 정보를 넘겨주고 확인 해보라고 했다..
그런데 한국 시간에 맞추어서 나왔단다;;

음... 그럼 다른건;;; 멀까 생각해보다가 해본건.. 컴퓨터 시간대.. ;;
그런데 시간대만 바꾼다고 실시간으로 바뀌지 않았고.. 
로그오프 후에 다시 접속.. 

실시간은 아니었지만.. 역시나 로그인시에 접속한 시간대를 가지고 전체적으로 적용되는거였음.
음 그럼 뭘로 구할까 ? 생각해보다가;; 아무래도 server side에선 못구하겠구나 싶어.. javascript구나 싶었다.

그래서 나온 코드는;; 

 
//분으로 리턴 하니 나누기 60으로 시간으로 ㅎ
var offset = -(new Date().getTimezoneOffset()/60); 
console.log(offset);

utc(0:00) - 님하의 시간대 이니까.. 
한국 같으면 -540 이 나오니까..
실제적으로 utc(0:00)  에서 한국 시간대를 표현 해주려면 +9를 해야 하니까.. 다시 음수처리~; 

아.. ㅡ.ㅡ;; 말이 잘 안되네;;

이곳은 GMT -7 시간대이니까..  결국 내가 가져야 하는 값은 7이니까..  결국 반대 값(이런걸 수학용어로 뭐라고 하는지 ;;; );; 
음수값?;; 

뭐 무튼.. 이런식으로 js에서 로그인 시에 유저별. utc(0:00) 과 차이를 가지고 있다가.. 
디스플레이 해줄때 php에서 시간대 연산해서~ 보여주면 사용자가  느끼기에 현재 시간대라고 보여줄 수 있을듯!;

뭐 결론은.. 접속 유저별 알맞은 시간대를 보여주려면 js가 필요하다는거;; 
 트윗 처럼 설정으로 받으면 더 좋긴 하겠지만;; 그런게 없다면 이런식으로 해도 될듯.. ; 

아 그리고 gmt 랑 utc랑 현재는 같으니까;; 뭐 일단 ㅎㅎ gmt나 utc나 고고~;;
그리고 gmt(5:45)인 국가도 있음. 그러니... 5.45숫자도 나오니까.. 시간대 설정거시기에는 디비컬럼도 맞추어서 !!
그게 싫다면 그냥 나누기 60한 시간대를 가지지 말고 바로 분으로 저장해도 될듯! 


 
Posted by is윤군
TAG js 놀이

댓글을 달아 주세요