Categories
Development

OpenID 귓속말 서비스

OpenID 귓속말 소개

OpenID로 개인적인 메시지를 주고 받을 수 있는 간단한 서비스입니다.

아직 정식 서비스가 아니라 이용약관이나 별도의 가입 절차도 없지만, 편리하게 사용해볼 수 있다는 장점이 있습니다.

 

기능 목록입니다.

  • OpenID & 로그인 전용
  • 귓속말 보내기
  • 귓말 수신시 SMS 로 알림
  • 귓말 수신시 내 스프링노트의 지정한 페이지에 쌓이도록 하기
  • 받는 사람 입력창에 me2day 사용자의 아이디를 입력하고 CTRL+SPACE 입력시 OpenID 자동완성 (Windows, Linux Only)

 

스크린샷

귓속말 서비스를 이용중인 화면입니다. 설정 부분의 매력적인 부가기능(SMS, 스프링노트로 쓰기)을 주목해주세요 🙂

openid-whisper.png

 

써보고 싶어요!

OpenID 만 있다면 바로 이용해보실 수 있습니다. http://whisper.lab01.openmaru.com/

사용의 편리성을 위해 아무런 가입절차가 없습니다. 그저 자신의 오픈아이디로 로그인 하는 것이 가입절차의 전부입니다.

 

아직 OpenID를 가지고 있지 않으신가요? 그렇다면 지금 바로 OpenID를 만드세요.

 

로그인을 하셨나요? 귓속말 본문을 입력하시고, 받는 사람 OpenID 주소창에 메시지를 받을 친구의 오픈아이디를 넣으시고, ‘보내기’ 버튼을 누르시면 됩니다. 너무 간단하다고요? 죄송합니다. 그게 전부입니다 🙂

 

궁금한 게 있을 경우 받는 사람 OpenID 주소에 제 오픈아이디인 http://rath.myid.net/ 를 입력하고 메시지를 보내보세요. 확인 즉시 회신해드리겠습니다.

 

매번 귓속말을 확인하러 이 사이트를 방문해야하나요??

그럴 필요 없습니다. 우측 상단의 ‘설정’ 메뉴를 이용하면 귓말 도착시 SMS 및 자신의 스프링노트에 알람을 받을 수 있도록 설정할 수 있습니다.

openid-whisper-pref.png

 

 

(1) SMS로 귓말 수신 알람 받기

이것을 사용하기로 하고 자신의 휴대폰 번호를 입력해두면 귓속말이 도착했을 때 SMS로 도착 알림을 받을 수 있습니다.

아직은 시범 서비스이므로 사용자에게 과금 하는 절차는 없습니다. 🙂

 

(2) 받은 귓말을 내 스프링노트에 쓰기

SMS 수신 알람 기능은 ‘누군가 나에게 새로운 귓속말을 보냈다’ 는 것을 알려주기만 합니다. 하지만 스프링노트에 쓰기 기능을 사용하면 아예 귓속말 사이트에 접속하지 않아도 됩니다. 귓속말이 도착하면 자신이 지정한 스프링노트 페이지에 바로바로 귓속말을 보낸 사람의 OpenID, 보낸 시각, 귓속말 내용 이렇게 3개가 차곡차곡 쌓이게 됩니다.

 

(3) 매쉬업을 위한 사용자키

이 오픈ID 귓속말 서비스를 기반으로 매쉬업(Mash-Up) 서비스를 이용하기 위한 사람들을 위해 ‘사용자 키‘를 제공합니다.

이용 초기에는 사용자키를 발급되지 않은 상태이며, ‘새 사용자키 발급‘ 버튼을 눌러야 발급이 됩니다. 이 사용자키는 비밀번호만큼이나 중요한 것입니다! 만약 누출의 위험이 생겼을 경우 ‘새 사용자키 발급‘ 버튼을 눌러 다시 발급받으시는 것이 좋습니다.

 

매쉬업 개발자 분들은 각 사용자에게 키를 복사할 것을 요청해야할텐데요, 그것을 위한 편리한 URL을 제공합니다.

 

  http://whisper.lab01.openmaru.com/api/getkey?openid=http://rath.myid.net/

 

위 URL 에서 마지막 openid 파라미터 부분만 사용자의 openid로 바꾸면 아래와 같이 사용자가 무슨 키를 복사해야하는지 한 눈에 알아볼 수 있는 페이지가 표시됩니다.

 

openid-whisper-userkey.png

 

 

개발자들을 위한 API

미흡한 형태이나 몇가지 API가 공개되어 있습니다.

  • 귓말 보내기
    • 설명: 특정 사용자에게 귓속말을 보냅니다.
    • URL: http://whisper.lab01.openmaru.com/api/send
    • Method: POST only
    • 인증: BASIC_AUTH.
      • username : normalize 된 송신자의 OpenID.
      • password : 사용자키 (ex. 0123456)
    • 파라미터
      • openid_to : 받는 사람의 openid
      • message : UTF-8로 인코딩된 귓속말 내용
    • 결과
      • 없음. 성공시 200 OK
  • 읽지 않은 귓말 개수 확인
    • 설명: 내가(특정 사용자) 읽지 않은 귓속말의 개수를 확인합니다.
    • URL: http://whisper.lab01.openmaru.com/api/hasunread
    • Method: GET only
    • 인증: BASIC_AUTH 
      • username : normalize 된 송신자의 OpenID.
      • password : 사용자키 (ex. 0123456)
    • 파라미터
      • openid : BASIC_AUTH 사용시 불필요.
    • 결과
      • 인증시
        • 읽지 않은 귓속말의 개수
      • 무인증시
        • 읽지 않은 귓속말이 존재하는지 여부만 0과 1로 출력
      • XML 출력 예
        1. <?xml version=”1.0″ encoding=”UTF-8″?>
        2. <whisper-count type=”unread”>0</whisper-count>
  • 사용자키 조회
    • 설명: 특정 사용자의 사용자키를 조회합니다.
    • URL: http://whisper.lab01.openmaru.com/api/getkey
    • Method: GET only
    • 인증: 없음. (IDP의 인증을 필요로함)
    • 파라미터
      • openid : 사용자키를 얻어올 사용자의 정규화된 OpenID
    • 결과
      • 사용자키가 출력된 HTML 페이지.
  • 내가 받은 귓속말 목록 (받은 귓속말 only, 보낸 귓속말은 지원하지 않음)
    • URL: http://whisper.lab01.openmaru.com/api/list
    • Method: GET Only
    • 인증: BASIC_AUTH
      • username : normalize 된 자신의 OpenID
      • password : 사용자키
    • 응답 형식
      • messages 엘리먼트 속의 message 엘리먼트 집합
      • message:id 속성은 메시지의 고유아이디
      • message:hasRead 속성은 이 메시지를 읽었는지 안읽었는지 여부
      • from 보낸 사람의 OpenID
      • content 귓속말 내용
      • sent-date yyyy-MM-dd HH:mm:ss 형식으로 표현된 귓속말을 받은 시각.
    • 응답 XML 예
      1. <?xml version=”1.0″ encoding=”UTF-8″?>
      2. <messages>
      3.   <message id=”6443987249387294823718732132-2007072212323″ hasRead=”false”>
      4.     <from> http://rath.myid.net/ </from>
      5.     <content><!CDATA[아- 아- 동네 사람들- 오픈아이디 귓속말 API 좀 써봐연~]]></content>
      6.     <sent-date>yyyy-MM-dd HH:mm:ss</sent-date>
      7.   </message>
      8.   <message id=”328917987a123123823718732132-2007072212323″ hasRead=”true”>
      9.     <from> http://rath.myid.net/ </from>
      10.     <content><!CDATA[아- 아- 동네 사람들- 오픈아이디 귓속말 API 좀 써봐연~]]></content>
      11.     <sent-date>yyyy-MM-dd HH:mm:ss</sent-date>
      12.   </message>
      13. </messages>
  • 내 귓속말 삭제
    • URL: http://whisper.lab01.openmaru.com/api/delete/$(MESSAGE-ID)
    • Method: DELETE Only
    • 인증: BASIC_AUTH
      • username : normalize 된 자신의 OpenID
      • password : 사용자키
    • 파라미터
      • message-id : URI 부분 /api/delete/ 뒤에 삭제하고자 하는 메시지의 id를 넣는다.
        • 예) /api/delete/328917987a123123823718732132-2007072212323
    • 응답 형식
      • 200 OK
      • otherwise error (401, 500)

 

 

이 글은 스프링노트에서 작성되었습니다.

Categories
Personal

습관

언제부터인지 나도 알 수는 없지만

놀고 싶어서 놀아본 적이 별로 없는 것 같다. 그저 그 사람이 보고 싶었을 뿐이거나
관계상 자리에 참석하지 않으면 안되는 (혹은 나 혼자 참석하지 않으면 안된다고 생각하는) 자리였다.
아무런 대화없이 그저 상대방과 같은 시공간을 공유하고 있음만으로도 욕구가 충족될 때가 있지 않던가. 대화가 꼭 필요한가? 입에서 나오는 것들은 대부분 천한 것. 스킨쉽이나 욕정이 대수인가? 지나고나면 부질 없는 것들.

습관이란게 무서워서

사람들을 만나 밥을 먹고 술을 먹는 그런 자리. 그날은 그 자리에 나가고 싶지 않아도,
습관적으로 나가게 된다. 퇴근 시간에 가까워졌고, 사실 난 일에 꽂혀있고 사람들을 만나러 갈 내적 동기가 전혀 없음에도 불구하고. 자동적으로 나가게 된다. 누가 날 협박한 것도 아니고, 나가지 않은 다음날이 되어도 변하는 게 없음에도 불구하고.

내가 무슨 핑계를 대든, 환경을 욕하든 니가 나를 이렇게 만들었네 니네들이 나를 이렇게 만들었네 생각하든 다 우스운 일이다. 어차피 인간의 행동에 90% 이상이 무의식과 습관의 산물 아니던가.
환경이 나의 의식적인 동기에 반하는 모습을 보이는 건 전적으로 내 문제다.

의식적으로 수정 불가능한 것들이지만, 어찌어찌 노력하면 측정하기는 쉽다.
하지만 무의식과 습관의 교정은 스스로의 생각과 행동을 1-2초 단위로 제 3자의 입장에서 주기적으로 관찰해야하는 끔찍한 고통이 수반된다. 얼마나 더 오래살겠다고, 무엇을 더 얻겠다고, 무엇을 위해 그런 고통을 받아야 할까. 그게 과연 정말 자신이 원하던 거였을까?

어차피 사다리 위에 오르면 오르기 전에 생각했던 것과 다른 세상만 보이지 않는가.
그런 면에서 에피쿠로스들의 마음을 이해할 수 있다.

한 3개월 정도, 아무도 만나지 않고 일만 했으면 좋겠다. 그래도 일주일에 1-2번은 좋아하는 사람을 만나 그저 흐뭇해하며 내게 賞은 줘야지. 따로 따로 놓고 보면 다 좋은 것들인데, 균형이 떠나버려 noise로 가득찬 내 머리속과 마음을 정화시킬 시간이 필요해.

Categories
Development

JDK 1.7 Build b16 으로 싹 교체

다 바꿔버렸다.

https://jdk7.dev.java.net/

메모리 512MB 인 불쌍한 xrath.com 섭의 java process 8개도 다함께 업.

rath 7126 23924 0 02:26 pts/3 00:00:00 java -server -jar rath-search-daemon.jar

rath 7165 7162 0 02:27 pts/4 00:00:00 java -Xms128m -Xmx256m -Dsun.io.useCanonCaches=false -Dapplication.home=/opt/flex2/bin/.. -jar /opt/flex2/bin/../lib/fcsh.jar

rath 7190 24010 0 02:27 pts/5 00:00:03 java -jar TajaBot.jar

root 7221 7217 2 02:28 pts/1 00:00:30 /opt/java/bin/java -server -Djava.ext.dirs=/opt/james/lib -Djava.security.manager -Djava.ext.dirs=/opt/james/lib -Djava.security.manager -Djava.security.policy=jar:file:/opt/james/bin/phoenix-loader.jar!/META-INF/java.policy -Dphoenix.home=/opt/james -Djava.io.tmpdir=/opt/james/temp -jar /opt/james/bin/phoenix-loader.jar

rath 7264 13826 0 02:28 pts/10 00:00:00 java -server -jar me2photo-server.jar

rath 7284 7283 0 02:28 pts/6 00:00:00 java -jar mo-service.jar

rath 8147 1 3 02:50 pts/0 00:00:05 /opt/jdk1.7.0/bin/java -Djava.util.logging.manager=com.caucho.log.LogManagerImpl -Djava.system.class.loader=com.caucho.loader.SystemClassLoader -Djava.awt.headless=true -Dresin.home=/home/rath/resin/ -Dcom.sun.management.jmxremote com.caucho.boot.ResinWatchdogManager start

rath 8182 8147 21 02:50 pts/0 00:00:27 /opt/jdk1.7.0/bin/java -Djava.util.logging.manager=com.caucho.log.LogManagerImpl -Djava.system.class.loader=com.caucho.loader.SystemClassLoader -Djava.awt.headless=true -Dresin.home=/home/rath/resin/ -server -Xmx256m -Xss1m -Xdebug -Dcom.sun.management.jmxremote com.caucho.server.resin.Resin -socketwait 54462 start

아 개운하고 좋다.
Hotspot Server VM이나 구경하려고 -server 쳤다가 발견한 Tiered VM

[rath@ns bin]$ java -server -version
java version “1.7.0-ea”
Java(TM) SE Runtime Environment (build 1.7.0-ea-b16)
Java HotSpot(TM) Tiered VM (build 1.7.0-ea-b16, mixed mode)

OpenJDK 빌드도 해보고 싶은데..

교체 기념으로 한글 CAPTCHA 도 다시 살렸다. 😉

Categories
Personal

안습

이제 4학년 1학기.
여태까지 받앗던 7학기 중 최악의 성적표 -_-

Categories
Books

연애를 망치는 44가지 방법

작년에 산 책인데, 목차말고는 그리 임팩트가 없어서 책장속 히트율 떨어지는 장소에 파묻어놨다가
최근 미투데이에 남녀관계에 대한 글들이 올라오는 것에 삘 받아서 먼지 묻은 책을 꺼냈다.

연애를 망치는 44가지 방법

반어법으로 도배된 책이니만큼 남들에게 추천해주기는 애매하다.
긍정적인 것으로 사람을 이끄는 게 가장 좋다고 생각하는 나에겐 별로 사랑받지 못하는 책.
아무튼 하지 말아야할 것을 알려준다는 점에서 확실히 괜찮다.

만약 연인과 헤어진지 얼마되지 않은 사람이라면, 이성의 마음을 조금이라도 헤아리려 노력해본 적이 있다면 엽기와 위트가 섞인 이 책의 내용들이 그저 웃어 넘길 것만은 아니라는 것을 알 수 있으리라.

얇고 작고 가볍고 싼-_- 책이라 내용을 옮길 생각은 없고
목차만 둘러보시라. 목차만으로도 충분하다.

1. 그 어떤 상황에서든 오직 당신의 욕구만이 중요하다.

2. 당신은 당신의 연인보다 모든 것에 대해 더 잘 알고 있다는 사실을 명심하라.

3. 오직 당신의 감정만이 중요하다.

4. 공공연히 연인의 결점을 들춰라.

5. 잘못을 시인하지 말고, 싸우더라도 절대 사과하지 마라.

6. 모든 것에 대해 오바하라.

7. 연인에게 비싼 선물을 요구하라.

8. 절대 선물을 고마워하지 마라.

9. 돌에 새겨놓아라: 연애 생활은 제휴가 아닌 주인-하인 관계이고, 주인은 바로 당신이다.

10. 지금의 연인을 과거의 연인과 비교하라.

11. 오직 자신에 대해서만 이야기하라.

12. 당신 연인이 샌드백이라는 사실을 명심하라.

13. 연인이 귀가했을 떄 시무룩하고 골난 듯 행동하라. 그리고 절대 그 이유를 설명하지 마라.

14. 당신의 연인은 당신의 비서, 변호사, 직업 소개인, 아파트 중개인, 그리고 대부금 브로커이기도 하다는 사실을 명심하라.

15. 단 한순간이라도 당신의 연인이 자신만 잘났다고 믿지 못하게 하라.

16. 전화 장난을 즐겨라 – 당신이 얼마나 쿨하고 냉담한 사람인지를 보여주기 위해 그녀의 전화를 무시하라.

17. 당신 연인의 가족을 놀림감으로 삼아라.

18. 당신에게 있어 애정은 자질구레한 것이라는 사실을 분명히 밝혀둬라.

19. 만약 당신이 많은 문제를 가진 상댕 사귀고 있다면, 그리고 당신 친구들이 구제불능인 그를 싫어한다면, 당장 결혼을 서둘러라 – 결혼이 당신의 모든 문제를 해결해 줄 것이다!

20. 절대 연인에게 ‘사랑한다’ 고 말하지 마라.

21. 늘 불행해하고 우울해하는 누군가와 사귀어라. 그리고 당신이 그를 변화시키고 행복하게 만들어 줄 수 있다고 믿어라.

22. 당신의 연인을 <펜트하우스> 모델처럼 섹시한 미녀로 만들어라.

23. 당신의 연인에게 잔인한 발언을 서슴지 말고, 그것 때문에 비난이 쏟아지면 그냥 이렇게 한마디 내뱉어라. “감정 표현도 내 마음대로 못해?”

24. 당신의 연인이 친구와 만나는 것을 허락하지 마라.

25. 임자 있는 남자나 여자를 노려라.

26. 항상 최악의 모습만 보여라 – 절대 연인에게 잘 보이려 애쓰지 마라.

27. 일관되게 퉁명스럽고 박정한 모습을 보여라.

28. 데이트할 땐 항상 아이처럼 굴어라.

29. 당신 연인의 집을 완전히 점령하라.

30. 당신의 연인이 보는 앞에서 모두와 시시덕거려라.

31. 돈을 보고 결혼할 계획을 세워라 – 그리고 절대 사랑을 받아들이지 마라.

32. 만약 당신의 연인에게 결코 묵인할 수 없는 부모가 있다 해도 당신의 연인만큼은 절대 그런 부모를 닮지 않을거라는 확신을 가져라.

33. 질투를 행동화하라 – 아예 질투가 당신 인생을 압도하도록 내버려 둬라.

34. 사랑, 애정, 성적 흥분의 첫 감동을 믿어라 – 그리고 그것이 영원불변할 것이라는 사실을 인정하라.

35. 개인적으로 심각한 문제를 가진 누군가와 뜨거운 사랑에 빠져라 – 그리고 당신이 그를 바꿀 수 있다고 굳게 믿어라.

36. 연인의 친구나 룸메이트와 바람을 피워라 – 그녀는 영영 알아채지도 못할 뿐더러 상관도 하지 않을 것이다!

37. 당신이 아닌 사람인 척하라.

38. 연인의 가족 사업에 관여하라.

39. 둘러보면 당신의 연인보다 훨씬 나은 사람이 항상 당신 주면을 맴돌고 있다는 사실을 명심하라 – 그리고 현재 연인을 임시 대리로 여겨라.

40. 당신의 연인보다 도덕적으로 우위에 있다는 걸 행동으로 보여라.

41. 엄격한 행동 지침을 만들어 연인을 확실히 컨트롤하라.

42. 공통적인 관심사를 찾으려 애쓰지 마라.

43. 연인이 이룬 업적의 가치를 깎아내려라.

44. 모든 것이 잘되어 갈 때 시비를 걸어라.

이 44개의 내용을 읽는 중, “어? 이건 맞는건데.. ” 했다면 여태까지 이성친구가 없었거나, 이전 이성친구가 당신을 너무나도 사랑해서 상처를 견디고 당신과 사귀어준 것이다. 그 사람에게 감사의 마음을 가지시길 (씨익)