http://en.wikipedia.org/wiki/Graphics_display_resolution
QFHD (4K) (3840×2160)
UHD (8K) (7680×4320)
마케팅은 사기가 아닙니다. 그러지 맙시다.
UHD 할 일 많을 것.
프로세서,전송규약을 새로 만들어야 할지도. 그것도 무선까지.
UHD 컨텐츠를 위한 카메라는 준비하고 있을라나요?
768GB에 영화 한편 들어가겠군.
60프레임이면 3배 계산해야돼나?
LG가 5인치 1080p 개발했다고 기사나고 했더만...
그거 16개 붙이면 되는 거잖아... 그래봐야 20인치네 머
문제는 다른 거지...
반응속도 느린 lcd로 계속 가야하느냐...
3천3백만 화소를 처리할 수 있나.
전송할 통신은 가능한가
색표현을 8bit품질을 계속갈건가... 고급모니터들은 10bit넘게 표현하고 확실히 다르니까.
60hz에서 멈출건가.
좀 더 섬세하게 들어갈 수도 있지만...
2013년 2월 19일 화요일
2013년 2월 14일 목요일
한국정치 2012
결국 박근혜 정부를 맞이하게 될 대한민국...... 아 대한민국.
석가모니불의 인과의 철저함을 다시 실감케 한다.
민주진영도 진보진영도 이익보수의 고개를 넘지 못했다.
아마도 다양한 스펙트럼이 있는 국민의 생각이지만,
전체적으로 보면, 아직 한번도 민주주의라를 것을 체험하지는 못하였다.
간단히 말하면 민주주의 단편적 체험을 하고 있는 것이다.
그것도 별로 좋지 않는 또 본격적이지도 않은.
민주란 스스로 결정하고 스스로 책임지는 것입니다.
주인이 안쪽 경계에서 이윤을 논하지 않습니다.
잘 경영하는 것을 논하죠.
민주주의는 좋은 제도도 아니고 나쁜 제도도 아니다.
사상으로보면 동학의 '사람이 곧 하늘이다'는 구호보다 초라하다.
'사람이 곧 하늘이다'는 구호는
윤홍식 선생이 화엄경의 의도를 설명할 때,
부처될 종자니 이미 부처다라고 힐링하며 이끌고자하는 어린애 달래기용이다.
사람이 어떻게 하늘이겠는가.
그 하늘은 무슨 의미의 하늘이겠는가..
하늘도 무심하시지.. 그 무심한 하늘이 되겠는가... 사람이..
과정이 빠져있다. 사람이 무심이 되는 과정.
무심히 보면 있는 그대로 보이는...무심.
또 자유주의란 말이 있는데, 이거 아주 위험한 말이다.
원뜻은 한사람의 신체와 사유와 행동은 어떤 경우도 자유롭다..일텐데...
그것이 그 사람이라고 하는 신체와 개인으로 주어진 시간 공간에 한해서이다.
공통의 영역이나 타인의 영역은 자유가 철저히 제약 된다는 의미도 같이 담고 있다.
말뿐이고 현실은 그렇지 않아 늘 괴로운 것이다.
경제민주화 란 단어가 많이 나돌았다.
사실 민주화의 직접대상이다. 먹고사는 문제이다.
그리고 대부분의 국민들은 경제민주화의 의미도 모르고 있다.
나이가 들어도 자기 욕망을 채우려고, 자기하고 다르다는 이유만으로
또는 본의아니게 방해를 받았다고 해서 포악을 떠는 어린애들에게 민주는 없다.
이미 파괴하고 있지 않은가.
선진국에서는 임금을 지불하고 노동을 원하는 것 같은데,
한국에서는 임금을 지불하고 목숨다바치는 충성을 요구하는 것 같다.
이것이 왜 가능할까. 먹고 사는 문제가 해결되지 않아서 그렇다.
사람에게 하늘은 밥이라 하지 않은가.
주거도 교육도 다 밥의 문제다.
대선이 끝나고 민주당을 지지했던 정치그룹이나 언론인들이
요새 민주당 욕하기 바쁜데...
내려놔라... 친x다 다 내려놔라... 그 의도가 매우 의심스럽다.
조그만 머리로 이것이 문제다 저것이 잘못이다 면서..
난 욕도 하나의 표현이라고 인정하는 편이지만,
지금 민주당을 욕하는 자들은 정말 창피한 자기모습을 발견하기 바란다.
민주당 후보였던 사람 욕할 수 없다. 자기 말마따나 최선을 다했다.
다만 고만고만한 후보들이였기에 광고 오래해 온 후보가 된 것이다.
(후보 개인의 인격을 말하는 것이 아님)
민주당의 진용과 구도 어쩔 수 없어서 힘이 나오지 않았다.
어리석음이 원인이겠지만 그렇다.
상대진영은 새누리당은 이해관계로 쫙 정리되어서
자기끼리 욕하거나 비난하지 않는다.
그런데 민주진영은 별일 아닌 것 가지고도 목숨걸고 싸운다.
장작불을 피우려는데 막 헤집어..참 미운짓이다.
잘 따지고 보면
이승만, 박정희,전두환-노태우. 이렇게 이어졌다.
어디 민주진영이 활동하고 자라갈 수 있는 환경이었나?
그렇게 오랜동안 잘 공부했다던 김대중도 그 호기에 구조조정하지 못했고
잠재된 사회적 울분 에너지를 끄집어 낸 노무현도 다소 엉뚱한 낭만파짓을 했다.
튼튼하게 자라지 못한 민주진영이 그러는 것은 당연하다.
그리고 50대의 90%가 민주당 노는 꼴이 그래서 새누리당 후보를 지지했다고 하는데..
그런 정도의 성숙?한 의식이라면... 글쎄..
난 그들시대를 폄훼할 의도는 전혀 없다.
그 시대의 흐름으로 보면, 이승만,박정희는 필연이었을지도 모른다.
그 후 민주화라고 하지만, 많은 강압의 구조들이 굳어지고
동양에서 꿈꾸는 것도 서양에서 이상적인 것도 맥락을 잃어버린 듯하다.
다만 그시대를 살아내신 분들은,
그 정도 나이면 좋아도 싫어도 가야할 길 찾아 갈 수 있는 나이 아닌가?
비난이나 욕, 기회가 기울어져 균형감각이 없다고 본다.
무엇이 먼저인지도 모른다고 생각한다. 그저 길들여진 욕망의 발로였을 뿐.
그 결과 좋은 구조로 도인되지 못했으므로
다른 세대를 살아온 젊은세대에게는 불만족럽게 흐르고
또 산업화시대에 일정의 성공을 이루지 못한 사람들에게도 가혹하게 된 현실이 있다.
대기업이 전체산업을 지배하는 듯한 구조에 대해서도 다소 엉뚱한 생각이 든다.
대기업은 소수다. 중소기업은 다수다.
욕망의 총량으로 보면 어느쪽이 더 클까?
보수여당은 중소기업은 그들의 문제일 뿐으로 정리된 것 같고.
진보진영은 90%의 일자리가 그쪽에서 나온다고는 했지만,
딱히 어찌하겠다는 없다.(자잘한 뭐...)
공정거래는 자본주의 기본질서의 문제이지
그것때문에 중소기업 전체가 어찌되리라고는 생각지 않는다.
안철수 현상은 냉정하게 지켜봐야 한다.
왜냐면 잘 걸어온 정치인이 아니기 때문이다.
본의든 본의가 아니든 과도기에 기여했다고 평하는 김영삼이나
김대중, 노무현도 다 삶의 현장과 정치계를 잘 보고 행동으로 말해왔던 사람들이다.
겨우 정치의 맛을 좀 보여준 것이다.
어설프게 안철수에 기대하는 사람들에게
최소한 안철수는 정치쪽에서 행동으로 검증되지는 않았다는 것을 상기해주고 싶다.
그리고 그 행보는 매우 의심할만한 것이었다.
미국의 민주당 진영의 오바마... 솔직하고 설득력 있는 말빨..
지도력,정치력,결정력,협상력.. 좋은 의도.. 미국 대통령의 품위...
당시 미국으로선 최선의 선택.
그러나 부시대에 워낙 망가뜨려 놔서... 어쩔 수가 없다.
그 조건에서는 한계가 있는 것이죠.. 의료보험 하나도 못했다.
할 수 있는 정도 한다고 하지만... 어떤 것도 기대 이하다.
미국의 돈찍는 짓은 힘센놈이라 대놓고 말 못하지만, 전 세계에 피해를 주었다.
그러니 어떤 사람에게는 솔직해 보이던 것이 교활해 보이고
설득력 있어 보이던 것이 사기꾼처럼 보이게 된다.
구조..체계가 좋지 않았던 한국은 부풀려 받은 것이고.
어쨌거나 1인 1표로 뽑는 제도에서 어떤 위정자를 갖는 것은
온전히 그 나라의 의식수준의 반영이다.
4대강이며 가계부채 1,000조며 국가.공공기관 부채 증가율이며...
이런 것을 만들어온 정치집단의 후보를 다시 위정자로 뽑았으니
그 결과를 지켜 봅시다.
대한민국 국민들, 당신들의 선택의 결과가 이제부터 펼쳐질 것입니다.
인간을 사람으로 볼 것이냐 동물로 볼 것이냐... 그것이 문제로다.
석가모니불의 인과의 철저함을 다시 실감케 한다.
민주진영도 진보진영도 이익보수의 고개를 넘지 못했다.
아마도 다양한 스펙트럼이 있는 국민의 생각이지만,
전체적으로 보면, 아직 한번도 민주주의라를 것을 체험하지는 못하였다.
간단히 말하면 민주주의 단편적 체험을 하고 있는 것이다.
그것도 별로 좋지 않는 또 본격적이지도 않은.
민주란 스스로 결정하고 스스로 책임지는 것입니다.
주인이 안쪽 경계에서 이윤을 논하지 않습니다.
잘 경영하는 것을 논하죠.
민주주의는 좋은 제도도 아니고 나쁜 제도도 아니다.
사상으로보면 동학의 '사람이 곧 하늘이다'는 구호보다 초라하다.
'사람이 곧 하늘이다'는 구호는
윤홍식 선생이 화엄경의 의도를 설명할 때,
부처될 종자니 이미 부처다라고 힐링하며 이끌고자하는 어린애 달래기용이다.
사람이 어떻게 하늘이겠는가.
그 하늘은 무슨 의미의 하늘이겠는가..
하늘도 무심하시지.. 그 무심한 하늘이 되겠는가... 사람이..
과정이 빠져있다. 사람이 무심이 되는 과정.
무심히 보면 있는 그대로 보이는...무심.
또 자유주의란 말이 있는데, 이거 아주 위험한 말이다.
원뜻은 한사람의 신체와 사유와 행동은 어떤 경우도 자유롭다..일텐데...
그것이 그 사람이라고 하는 신체와 개인으로 주어진 시간 공간에 한해서이다.
공통의 영역이나 타인의 영역은 자유가 철저히 제약 된다는 의미도 같이 담고 있다.
말뿐이고 현실은 그렇지 않아 늘 괴로운 것이다.
경제민주화 란 단어가 많이 나돌았다.
사실 민주화의 직접대상이다. 먹고사는 문제이다.
그리고 대부분의 국민들은 경제민주화의 의미도 모르고 있다.
나이가 들어도 자기 욕망을 채우려고, 자기하고 다르다는 이유만으로
또는 본의아니게 방해를 받았다고 해서 포악을 떠는 어린애들에게 민주는 없다.
이미 파괴하고 있지 않은가.
선진국에서는 임금을 지불하고 노동을 원하는 것 같은데,
한국에서는 임금을 지불하고 목숨다바치는 충성을 요구하는 것 같다.
이것이 왜 가능할까. 먹고 사는 문제가 해결되지 않아서 그렇다.
사람에게 하늘은 밥이라 하지 않은가.
주거도 교육도 다 밥의 문제다.
대선이 끝나고 민주당을 지지했던 정치그룹이나 언론인들이
요새 민주당 욕하기 바쁜데...
내려놔라... 친x다 다 내려놔라... 그 의도가 매우 의심스럽다.
조그만 머리로 이것이 문제다 저것이 잘못이다 면서..
난 욕도 하나의 표현이라고 인정하는 편이지만,
지금 민주당을 욕하는 자들은 정말 창피한 자기모습을 발견하기 바란다.
민주당 후보였던 사람 욕할 수 없다. 자기 말마따나 최선을 다했다.
다만 고만고만한 후보들이였기에 광고 오래해 온 후보가 된 것이다.
(후보 개인의 인격을 말하는 것이 아님)
민주당의 진용과 구도 어쩔 수 없어서 힘이 나오지 않았다.
어리석음이 원인이겠지만 그렇다.
상대진영은 새누리당은 이해관계로 쫙 정리되어서
자기끼리 욕하거나 비난하지 않는다.
그런데 민주진영은 별일 아닌 것 가지고도 목숨걸고 싸운다.
장작불을 피우려는데 막 헤집어..참 미운짓이다.
잘 따지고 보면
이승만, 박정희,전두환-노태우. 이렇게 이어졌다.
어디 민주진영이 활동하고 자라갈 수 있는 환경이었나?
그렇게 오랜동안 잘 공부했다던 김대중도 그 호기에 구조조정하지 못했고
잠재된 사회적 울분 에너지를 끄집어 낸 노무현도 다소 엉뚱한 낭만파짓을 했다.
튼튼하게 자라지 못한 민주진영이 그러는 것은 당연하다.
그리고 50대의 90%가 민주당 노는 꼴이 그래서 새누리당 후보를 지지했다고 하는데..
그런 정도의 성숙?한 의식이라면... 글쎄..
난 그들시대를 폄훼할 의도는 전혀 없다.
그 시대의 흐름으로 보면, 이승만,박정희는 필연이었을지도 모른다.
그 후 민주화라고 하지만, 많은 강압의 구조들이 굳어지고
동양에서 꿈꾸는 것도 서양에서 이상적인 것도 맥락을 잃어버린 듯하다.
열심히 소위 피땀으로 일구온 그 노고가 끝까지 아름답길 바란다.
좀 더 정확하게 말해야 하는 것은
지금의 민주.진보진영의 현실이란 것이 독재가 강압적으로 구조를 이끌어갈때
그것에 대항했다... 그래서 그것으로 인한 요구되는 부족한 부분의 욕구가 가장 커졌을 때
김대중,노무현이 했다. 그런데 여기서 문제가 된다.
나라를 경영할 준비는 하고 있지 않았다는 것이 어느면에서 드러났다.
감당할 수 없는 것이다.
비난하고 지적질 하기는 쉬우나 경영은 어려운 것이다.
다만 그시대를 살아내신 분들은,
그 정도 나이면 좋아도 싫어도 가야할 길 찾아 갈 수 있는 나이 아닌가?
비난이나 욕, 기회가 기울어져 균형감각이 없다고 본다.
무엇이 먼저인지도 모른다고 생각한다. 그저 길들여진 욕망의 발로였을 뿐.
그 결과 좋은 구조로 도인되지 못했으므로
다른 세대를 살아온 젊은세대에게는 불만족럽게 흐르고
또 산업화시대에 일정의 성공을 이루지 못한 사람들에게도 가혹하게 된 현실이 있다.
대기업이 전체산업을 지배하는 듯한 구조에 대해서도 다소 엉뚱한 생각이 든다.
대기업은 소수다. 중소기업은 다수다.
욕망의 총량으로 보면 어느쪽이 더 클까?
보수여당은 중소기업은 그들의 문제일 뿐으로 정리된 것 같고.
진보진영은 90%의 일자리가 그쪽에서 나온다고는 했지만,
딱히 어찌하겠다는 없다.(자잘한 뭐...)
공정거래는 자본주의 기본질서의 문제이지
그것때문에 중소기업 전체가 어찌되리라고는 생각지 않는다.
안철수 현상은 냉정하게 지켜봐야 한다.
왜냐면 잘 걸어온 정치인이 아니기 때문이다.
본의든 본의가 아니든 과도기에 기여했다고 평하는 김영삼이나
김대중, 노무현도 다 삶의 현장과 정치계를 잘 보고 행동으로 말해왔던 사람들이다.
겨우 정치의 맛을 좀 보여준 것이다.
어설프게 안철수에 기대하는 사람들에게
최소한 안철수는 정치쪽에서 행동으로 검증되지는 않았다는 것을 상기해주고 싶다.
그리고 그 행보는 매우 의심할만한 것이었다.
미국의 민주당 진영의 오바마... 솔직하고 설득력 있는 말빨..
지도력,정치력,결정력,협상력.. 좋은 의도.. 미국 대통령의 품위...
당시 미국으로선 최선의 선택.
그러나 부시대에 워낙 망가뜨려 놔서... 어쩔 수가 없다.
그 조건에서는 한계가 있는 것이죠.. 의료보험 하나도 못했다.
할 수 있는 정도 한다고 하지만... 어떤 것도 기대 이하다.
미국의 돈찍는 짓은 힘센놈이라 대놓고 말 못하지만, 전 세계에 피해를 주었다.
그러니 어떤 사람에게는 솔직해 보이던 것이 교활해 보이고
설득력 있어 보이던 것이 사기꾼처럼 보이게 된다.
구조..체계가 좋지 않았던 한국은 부풀려 받은 것이고.
어쨌거나 1인 1표로 뽑는 제도에서 어떤 위정자를 갖는 것은
온전히 그 나라의 의식수준의 반영이다.
4대강이며 가계부채 1,000조며 국가.공공기관 부채 증가율이며...
이런 것을 만들어온 정치집단의 후보를 다시 위정자로 뽑았으니
그 결과를 지켜 봅시다.
대한민국 국민들, 당신들의 선택의 결과가 이제부터 펼쳐질 것입니다.
인간을 사람으로 볼 것이냐 동물로 볼 것이냐... 그것이 문제로다.
2013년 2월 6일 수요일
전세금은 따로 월세로 더 얹어줘
감당할 수 없으면 놓아야지.
지좋자고 그 높은 고혈의 전세금 받으며
온갖 패악질과 욕지기를 해가며 지랄을 하더니
이젠 월세까지 따박따박 받쳐라...
타인의 불행위에 지 행복도 아닌 꼴랑 지좋자고...
그렇게 타인을 괴롭히면서 살아온 사람은
그런 세상 갖는다.
그런 세상 갖는다.
니가 하는 모든 행동
하나하나 알지 못해도
알알이 기도가 되어
너는 그런 세상 갖는다.
너는 그런 세상 갖는다.
더 나아지려할 때 하나하나 장애가 된다.
핍박 받는 사람들은 있는 대로 살자.
분노를 가슴에 쌓아 장애를 만들지 말자.
빨리는 피를 보충하려 먹어야 하는 그 무엇 같구나.
하나 스스로 놓아야지 놓아야지.
괴롭지는 말아야지..
세상을 비추어보면 한사람만 포악을 떨어도
열 스물 수천 수만 수천만 수억이 괴롭고
열 스물 수천 수만 수천만 수억이 좋은 마음 내어 다 같이 좋자고 해도
한 두 놈이 못쓰게 만들어 버리니..
수백만 수천만 수억이 그렇게 포악을 떨어대는데
좋아질게 무엇이냐,
나아지는 속도보다 망가지는 속도가 훨씬 빠르다.
이제는 자연도 버티기 어려운가보다.
지금 시대는 어려움 없이 먹고 살고를 다 해결할 수 있으나
스스로 지옥을 만들고, 못살겠다 괴로워 한다.
그냥 놓고 있는대로 살자.
그렇게 죽으라 죽으라 대놓고 기도하는 자들이 있는한
핍박받는 자는 편할 수 없다.
누가 원하지 않았어도 인생은 이렇게 주어졌고
사람살이 다른 것도 많으니
스스로를 이롭게하고 평온에 이르시길 바란다.
따지고 보면, 사람은 많고 욕망은 더 크니
어느 누가 있어 빼앗지 않고 그 욕망을 채워주랴.
사람을 낳아 놓고도 모두 짐승으로 만들어 버리니..
누가 저런 것들을 집어 넣었을까..
내안에 나 아닌 것을 모두 거둬 버리자.
요구하고 겁주고 핍박하는 자는 다 가짜다.
인과에 어두움에 화가 나는 것은 어쩔 수 없으나
분노도 원인으로 돌리고
괴로움도 원인으로 돌리고
평온에 이르자 평온에 이르자.
심어진 모든 것을 버리고
모든 말을 잊고 모든 모양을 떠나
평온에 이르면 저절로 알게 될 것이다.
별다른 것은 아니다.
있는대로 살자.
지좋자고 그 높은 고혈의 전세금 받으며
온갖 패악질과 욕지기를 해가며 지랄을 하더니
이젠 월세까지 따박따박 받쳐라...
타인의 불행위에 지 행복도 아닌 꼴랑 지좋자고...
그렇게 타인을 괴롭히면서 살아온 사람은
그런 세상 갖는다.
그런 세상 갖는다.
니가 하는 모든 행동
하나하나 알지 못해도
알알이 기도가 되어
너는 그런 세상 갖는다.
너는 그런 세상 갖는다.
더 나아지려할 때 하나하나 장애가 된다.
핍박 받는 사람들은 있는 대로 살자.
분노를 가슴에 쌓아 장애를 만들지 말자.
빨리는 피를 보충하려 먹어야 하는 그 무엇 같구나.
하나 스스로 놓아야지 놓아야지.
괴롭지는 말아야지..
세상을 비추어보면 한사람만 포악을 떨어도
열 스물 수천 수만 수천만 수억이 괴롭고
열 스물 수천 수만 수천만 수억이 좋은 마음 내어 다 같이 좋자고 해도
한 두 놈이 못쓰게 만들어 버리니..
수백만 수천만 수억이 그렇게 포악을 떨어대는데
좋아질게 무엇이냐,
나아지는 속도보다 망가지는 속도가 훨씬 빠르다.
이제는 자연도 버티기 어려운가보다.
지금 시대는 어려움 없이 먹고 살고를 다 해결할 수 있으나
스스로 지옥을 만들고, 못살겠다 괴로워 한다.
그냥 놓고 있는대로 살자.
그렇게 죽으라 죽으라 대놓고 기도하는 자들이 있는한
핍박받는 자는 편할 수 없다.
누가 원하지 않았어도 인생은 이렇게 주어졌고
사람살이 다른 것도 많으니
스스로를 이롭게하고 평온에 이르시길 바란다.
따지고 보면, 사람은 많고 욕망은 더 크니
어느 누가 있어 빼앗지 않고 그 욕망을 채워주랴.
사람을 낳아 놓고도 모두 짐승으로 만들어 버리니..
누가 저런 것들을 집어 넣었을까..
내안에 나 아닌 것을 모두 거둬 버리자.
요구하고 겁주고 핍박하는 자는 다 가짜다.
인과에 어두움에 화가 나는 것은 어쩔 수 없으나
분노도 원인으로 돌리고
괴로움도 원인으로 돌리고
평온에 이르자 평온에 이르자.
심어진 모든 것을 버리고
모든 말을 잊고 모든 모양을 떠나
평온에 이르면 저절로 알게 될 것이다.
별다른 것은 아니다.
있는대로 살자.
2013년 2월 4일 월요일
사파리 Safri,osx,ios 만 웹소켓 websocket 이상해 wired
Windows에서 현재 Safari는 5.1.x이다. 부분적으로 지원하지만 온전히 지원하지는 않는단다.
그래 그건 그렇다 치고.
os x, ios는 왜 6.x대인데 안되는 거냐는 거지.
그뿐만이 아니지.. os x, ios 에서 chrome을 설치해도 안된다는 거지.
Jobs는 놀라운 일을 해냈지만,
bill gates와는 다르지만 기기를 이용한 독점성은 여전해..
그것이 소위 부가가치를 높이면서 할 수 있는 최선인지는 모르겠는데
websocket의 경우는 사알짝 삐닥해지고 있다는 거지...
모든 사람들이 mac에 osx나 mac mobile기기에 ios를 써주길 바라는 건지.
그렇다면 ..... 다시 생각해 봐야지.. 독점의 결과는 잘 알잖아.
그래 그건 그렇다 치고.
os x, ios는 왜 6.x대인데 안되는 거냐는 거지.
그뿐만이 아니지.. os x, ios 에서 chrome을 설치해도 안된다는 거지.
Jobs는 놀라운 일을 해냈지만,
bill gates와는 다르지만 기기를 이용한 독점성은 여전해..
그것이 소위 부가가치를 높이면서 할 수 있는 최선인지는 모르겠는데
websocket의 경우는 사알짝 삐닥해지고 있다는 거지...
모든 사람들이 mac에 osx나 mac mobile기기에 ios를 써주길 바라는 건지.
그렇다면 ..... 다시 생각해 봐야지.. 독점의 결과는 잘 알잖아.
WebSocket, Atmosphere, Tomcat 예제 웹소켓
2013-10-05
여름을 지나면서 웹로직까지 websocket을 지원하게 돼었으므로
해당 WAS의 예제를 검색하여 사용하십시오.
-----------------
java WAS에서 websocket을 안정되게 지원하는 Atmosphere 예제다.
server-Window7 x64, java7 x64, tomcat 7.34, Atmosphere
client-Window7 x64, Chrome,Firefox,Opera,IE10
java와 tomcat 이 준비되었다면
http://maven.apache.org/ 에서 maven을 다운받아 환경을 잡고
http://github.com/Atmosphere/atmosphere 에서 zip으로 다운받아
maven으로 compile,package를 돌려준다.
https://github.com/Atmosphere/atmosphere/wiki
https://github.com/Atmosphere/atmosphere/wiki/Structure-of-an-Atmosphere's-Application
https://github.com/Atmosphere/atmosphere/wiki/Understanding-WebSocketHandler
를 참조하여 필요한 파일들을 찾아서 lib,web.xml,context.xml등을 톰캣에 복사한다.
web.xml
<servlet>
<description>AtmosphereServlet</description>
<servlet-name>AtmosphereServlet</servlet-name>
<servlet-class>org.atmosphere.cpr.AtmosphereServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AtmosphereServlet</servlet-name>
<url-pattern>/websocket/atmosphere/*</url-pattern>
</servlet-mapping>
다음은 java 소드다.
package test.ws;
import java.io.IOException;
import java.util.Date;
import org.atmosphere.config.service.WebSocketHandlerService;
import org.atmosphere.cpr.AtmosphereRequest;
import org.atmosphere.cpr.AtmosphereResource;
import org.atmosphere.cpr.Broadcaster;
import org.atmosphere.cpr.BroadcasterFactory;
import org.atmosphere.util.SimpleBroadcaster;
import org.atmosphere.websocket.WebSocket;
import org.atmosphere.websocket.WebSocketHandlerAdapter;
import org.atmosphere.websocket.WebSocketProcessor.WebSocketException;
import org.codehaus.jackson.map.ObjectMapper;
@WebSocketHandlerService(path = "/websocket/atmosphere/simple", broadcaster = SimpleBroadcaster.class)
public class AtmosphereSample extends WebSocketHandlerAdapter
{
private final ObjectMapper mapper = new ObjectMapper();
public void onByteMessage(WebSocket socket, byte[] arg1, int arg2, int arg3) throws IOException
{
// TODO Auto-generated method stub
}
public void onClose(WebSocket socket)
{
AtmosphereResource resource = socket.resource();
AtmosphereRequest request = resource.getRequest();
String uri = request.getRequestURI();
String remote = request.getRemoteHost();
System.out.println("socket closed:" + uri + " from " + remote);
}
public void onError(WebSocket socket, WebSocketException e)
{
System.out.println("socket error:" + e.getLocalizedMessage());
}
public void onOpen(WebSocket socket) throws IOException
{
AtmosphereResource resource = socket.resource();
AtmosphereRequest request = resource.getRequest();
String uri = request.getRequestURI();
String remote = request.getRemoteHost();
System.out.println("socket opened:" + uri + " from " + remote);
socket.resource().setBroadcaster(BroadcasterFactory.getDefault().lookup("/simple", true));
}
public void onTextMessage(WebSocket socket, String message) throws IOException
{
// socket.write(socket.resource().getResponse(),message);
AtmosphereResource r = socket.resource();
Broadcaster b = r.getBroadcaster();
b.broadcast(mapper.writeValueAsString(message));
}
}
여름을 지나면서 웹로직까지 websocket을 지원하게 돼었으므로
해당 WAS의 예제를 검색하여 사용하십시오.
-----------------
java WAS에서 websocket을 안정되게 지원하는 Atmosphere 예제다.
server-Window7 x64, java7 x64, tomcat 7.34, Atmosphere
client-Window7 x64, Chrome,Firefox,Opera,IE10
java와 tomcat 이 준비되었다면
http://maven.apache.org/ 에서 maven을 다운받아 환경을 잡고
http://github.com/Atmosphere/atmosphere 에서 zip으로 다운받아
maven으로 compile,package를 돌려준다.
https://github.com/Atmosphere/atmosphere/wiki
https://github.com/Atmosphere/atmosphere/wiki/Structure-of-an-Atmosphere's-Application
https://github.com/Atmosphere/atmosphere/wiki/Understanding-WebSocketHandler
를 참조하여 필요한 파일들을 찾아서 lib,web.xml,context.xml등을 톰캣에 복사한다.
web.xml
<servlet>
<description>AtmosphereServlet</description>
<servlet-name>AtmosphereServlet</servlet-name>
<servlet-class>org.atmosphere.cpr.AtmosphereServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AtmosphereServlet</servlet-name>
<url-pattern>/websocket/atmosphere/*</url-pattern>
</servlet-mapping>
다음은 java 소드다.
package test.ws;
import java.io.IOException;
import java.util.Date;
import org.atmosphere.config.service.WebSocketHandlerService;
import org.atmosphere.cpr.AtmosphereRequest;
import org.atmosphere.cpr.AtmosphereResource;
import org.atmosphere.cpr.Broadcaster;
import org.atmosphere.cpr.BroadcasterFactory;
import org.atmosphere.util.SimpleBroadcaster;
import org.atmosphere.websocket.WebSocket;
import org.atmosphere.websocket.WebSocketHandlerAdapter;
import org.atmosphere.websocket.WebSocketProcessor.WebSocketException;
import org.codehaus.jackson.map.ObjectMapper;
@WebSocketHandlerService(path = "/websocket/atmosphere/simple", broadcaster = SimpleBroadcaster.class)
public class AtmosphereSample extends WebSocketHandlerAdapter
{
private final ObjectMapper mapper = new ObjectMapper();
public void onByteMessage(WebSocket socket, byte[] arg1, int arg2, int arg3) throws IOException
{
// TODO Auto-generated method stub
}
public void onClose(WebSocket socket)
{
AtmosphereResource resource = socket.resource();
AtmosphereRequest request = resource.getRequest();
String uri = request.getRequestURI();
String remote = request.getRemoteHost();
System.out.println("socket closed:" + uri + " from " + remote);
}
public void onError(WebSocket socket, WebSocketException e)
{
System.out.println("socket error:" + e.getLocalizedMessage());
}
public void onOpen(WebSocket socket) throws IOException
{
AtmosphereResource resource = socket.resource();
AtmosphereRequest request = resource.getRequest();
String uri = request.getRequestURI();
String remote = request.getRemoteHost();
System.out.println("socket opened:" + uri + " from " + remote);
socket.resource().setBroadcaster(BroadcasterFactory.getDefault().lookup("/simple", true));
}
public void onTextMessage(WebSocket socket, String message) throws IOException
{
// socket.write(socket.resource().getResponse(),message);
AtmosphereResource r = socket.resource();
Broadcaster b = r.getBroadcaster();
b.broadcast(mapper.writeValueAsString(message));
}
}
다음은 jsp? 또는 html로
<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body>
<textarea id="marea" style="width:400px;height:300px">
</textarea>
<br/>
<input id="newbutton" type="button" value="new" onclick="fNewSocket('ws://localhost/websocket/atmosphere/simple')" style="visibility:visible"/>
<input type="text" id="send"></input>
<input id="sendbutton" type="button" value="send" onclick="fSendMessage()" style="visibility:hidden"/>
<input id="closebutton" type="button" value="close" onclick="socket.close()" style="visibility:hidden"/>
</body>
<script id="script" type="text/javascript" src="/js/jquery/jquery-1.9.0.js"></script>
<script id="script" type="text/javascript" src="/js/jquery/jquery.atmosphere.js"></script>
<script type="text/javascript">
var tarea = document.getElementById("marea");
var data = [];
var socket;
function fNewSocket(uri)
{
try
{
if(socket && socket.readState != 3) socket.close();
window.WebSocket = window.WebSocket || window.MozWebSocket;
socket = new WebSocket(uri);
socket.onopen = function(msg) {
tarea.value += "opened:"+socket.readyState+"\n";
};
socket.onerror = function(e) {
tarea.value += e.data+"\n";
};
socket.onclose = function(e) {
tarea.value += "closed:"+e.code+","+e.reason+":"+socket.readyState+"\n";
document.getElementById("sendbutton").style.visibility = "hidden";
document.getElementById("closebutton").style.visibility = "hidden";
document.getElementById("newbutton").style.visibility = "visible";
};
socket.onmessage = function(message) {
try
{
var s = message.data;
tarea.value += message.data+"\n";
}
catch(ex)
{
alert(ex)
}
};
document.getElementById("newbutton").style.visibility = "hidden";
document.getElementById("sendbutton").style.visibility = "visible";
document.getElementById("closebutton").style.visibility = "visible";
}
catch( e)
{
tarea.value = e.toString();
}
}
function fSendMessage()
{
socket.send(document.getElementById("send").value);
}
window.unload = function(){
if(socket.readyState != 3) socket.disconnect();
}
</script>
</html>
------------------------------------
단순한 chat예제이다. win7-IE10,Chrome,Firefox,Opera는 다 잘 동작한다.
Safari, osx ios 환경에서 chrome등은 동작하지 않는다.
Safari는 6.x에서부터 제대로 지원할 것이라고 하고,
osx,ios의 속사정은 모르겠다. chrome의 문제인지 os의 문제인지..
websocket 형태의 필요가 대두된지는 오래되었다.
websocket도 2008~9년부터 이야기가 본격화 되었어도 이제 겨우 여기까지 왔다.
websocket의 활용범위는 ajax는 비교되지 않는다.
벌써 이용하고 있는 곳도 적지 않다.
개발자들에게 상당한 자유도를 줄 것으로 보인다.
2013년 2월 1일 금요일
2013년 1월 26일 토요일
WebSocket 아니라 Pure Streaming Ajax 가 답
Http 프로토콜은 한번 요청을 보고 응답을 받는 것을 기본으로 한다.
네트워크 비용이 말도 안되게 비싸던 시절 만들어진 규약이 그렇다.
그 넷 비용을 획기적으로 낮추는 것이 웹이 활성화되는 결정적인 역할 중 하나다.
Http에서는 뭔가 할 수 있는 것이 없었으나
2000년 초반 XmlHttpRequest라는 것이 ActiveX 형식으로 IE에서 지원되면서
Dynamic HTML에서 통신요소가 깔끔하게 정리되어 정말 유용했었다.
그런데 브라우저들은 보안에 매우 취약하여 웬만한 자원접근은 막아두었다.
심지어 프린터까지...
부정적 활용에 대해 제약을 걸었으나 제약은 제약인지라
모든 긍정적 쓰임도 차단된다.
Http가 tcp/ip에 기반한 Socket 위에서 구현된 규약이라 없으나
보안이란 명목으로 접속중이라도 서버와 클라이언트가 대화하기 곤란하다.
XMLHttpRequest는 HttpClient의 일종이다.
그래서 웹소켓websocket이 대두 되었으나 여러모로 아랫단 소켓과 자잘한 문제들이
다시 대두되는 번거로움이 있다.
짧은 데이터야 ajax든 iframe으로 돌아도 문제될 것이 없다.
그러나 긴..형태의 데이터라면..
그런데 생각해보면 매우 간단한 방법이 있다.
1. Ajax api에 대화만 허용하면 된다.
즉 여러번 메시지를 주고받으면 된다는 것이다.
다른 보안 제약은 그대로 유지해도 좋다.(파일시스템접근제약 등...)
2. response를 streaming해주면 된다.
현재는 responseText는 streaming가 아니다. 물론 ResponseXML도 streaming일 수 없다.
오로지 한꺼번에 다 읽어야 한다.
둘다 socket에 있는 기능이다.
이 두가지면 번거롭게 websocket운운하지 않아도 간단히 해결된다.
서버측에는 엄청난 라이브러리들이 있어서 streaming 기반 통신 API가 널렸다.
HttpClient류에서는 InputStream OutputStream을 바로 참조할 수 있다.
그러나 클라이언트측(브라우저들)에는 너무 심한 제약으로 구현의 제약 뿐만 아니라
streaming으로 처리해야하는 다양한 데이터처리에 bottle neck역할만 한다.
Http는 한번 보내고 한번 받는 것이 기본룰이라 될 수가 없다.
그래서 그 복잡한 websocket이야기가 나오는 것인지..
그렇게되면 Http에서 처리하는 것들(도메인,계정,쿠키,보안..기타등등...)
그렇다면, 왜 이름이 웹소켓이면서 http서버로 바로 접속하면 안되는지..
이또한 http서버들의 구현문제
이문제는 protocol... 규약이 제약.
socket하나 얻자고 클라이언트에 java applet 환경을 강요하는 것은 말도 안된다.
(자바가 브라우저에서 실패한 요소 중 하나이다.)
flash는 상대적으로 가볍다고 해도, 모바일이 대세인시대에
flash도 java와 동일한 문제가 발생한다.
오로지 브라우저에서 지원해야 한다.
WebSocket은 정말 궁여지책으로 나온 것이다.
client 브라우저들은 거짐 준비가 된 것 같다.
다만 서버사이드가 표준이라하기엔 다양한 구현이 나와버렸다.
http://en.wikipedia.org/wiki/Comparison_of_WebSocket_implementations
개인적인 생각이지만 위의 두가지 기능만 제공된다면
어떤 작업이 안되는지 궁금할 정도다.
만일 별개의 서버로 간다면..
jWebSocket 이 보여주듯, 수많은 중복구현이 불가피할 것이다.
HTTP2.0도 나올때가 되지 않았나?
window8 의 경우 StreamWebsocket 이란 걸 제공한다는데..
cross browsing-html5 의 이야기를 하는데
오로지 자기지향으로 달리는 것 같아 답답하다..
어쨌던 당장 XMLHTTPRequest에서 stream을 읽을 수 있다면
복잡한 것이 없다.
도중에 통신을 끊지 않고, 메시지를 보낼 수 있다면 더할 나위 없다.
통신되는데, 뭐가 문제야.. 데이터는 문제없다.
------------
문제가 되는 지점은 chatting 형..... 즉 다자간 동기대화형 application이다.
구지 socket이어야 하는 이유지... 주된 영역이 아니라 할말이 없다.
여튼 5개 브라우저와 톰캣으로 간단한 chatting 예제를 돌려보았으나..
Safari는 되지도 않았고(tomcat7과 safari는 맞지 않단다. nio와 맞지 않는다는데..)
같은 IP라서 그런지.. 브라우저에 상관없이
커넥션을 몇개를 생성하건 한놈만 응답을 받는다.
subprotocol 관련된 것인지.. 싶기도 하고.
server에서 IP단위로만 구분하는지..... 참 어렵다.
추가적인 다른 작업이 필요한건지...
서버사이드도 짧지 않은 이야기가 진행중이다.
올해(2013)에 모두 선보이게 될 것 같은데
annotation 기반 POJO Bean 경향으로 다가오게 될 것 같다.
지금 당장 어찌해야 한다면, atmosphere를 이용해야 할 듯.
atmosphere..... 이건 또 오로지 maven이군.
2013-01-31.
-------
atmosphere 로 간단한 채팅예제를 해 보았다.
Window7에서 safari를 제외한 Chrome,IE10,Opera,FireFox는 잘 되었다.
safari만의 문제가 아니라 mac의 전체가 아직 websocket을 지원하지 않는다.
예를 들어 vmware에 osx를 설치후 chrome으로 접속해도 마찬가지고
아이패드3에서 safari,chrome 접속도 마찬가지.
톰캣용 예제의 문제점은 없었다.
다만 문자열에 " "로 감싸져서 왔다. 왜 그런지는 모르겠다.
Websocket 2013년 어느 시점부터 java WAS들에 모두 장착되어 배포될 것으로 보이는데
양방향(full-duplex) 통신이다보니 활용영역이 ajax와는 비교할 수 없을 정도로
다양할 것이다.
용도에 따른 적절한 패턴으로 활용되어야 할 것이다.
2013-02-03
--------
HTTP2.0이 2014년에 표준이 개발될 것이라고 한다.
Google의 SPDY가 수용될 것이라고 한다.
spdy는 밑단에서 브라우저와 웹서버만 되는 것인지..
websocket와 같은 클라이언트의 쉬운 api는 없다.. 있을 것 같은데..
Websocket 은 java was가 지원하더라도
웹서버는 그런 기능이 마련되지 않아서 proxy를 세워 해결한다고 하는데...
kaazing 상용으로 잘 나가는 듯 하다.
2013-02-06
----------------------
네트워크 비용이 말도 안되게 비싸던 시절 만들어진 규약이 그렇다.
그 넷 비용을 획기적으로 낮추는 것이 웹이 활성화되는 결정적인 역할 중 하나다.
Http에서는 뭔가 할 수 있는 것이 없었으나
2000년 초반 XmlHttpRequest라는 것이 ActiveX 형식으로 IE에서 지원되면서
Dynamic HTML에서 통신요소가 깔끔하게 정리되어 정말 유용했었다.
그런데 브라우저들은 보안에 매우 취약하여 웬만한 자원접근은 막아두었다.
심지어 프린터까지...
부정적 활용에 대해 제약을 걸었으나 제약은 제약인지라
모든 긍정적 쓰임도 차단된다.
Http가 tcp/ip에 기반한 Socket 위에서 구현된 규약이라 없으나
보안이란 명목으로 접속중이라도 서버와 클라이언트가 대화하기 곤란하다.
XMLHttpRequest는 HttpClient의 일종이다.
그래서 웹소켓websocket이 대두 되었으나 여러모로 아랫단 소켓과 자잘한 문제들이
다시 대두되는 번거로움이 있다.
짧은 데이터야 ajax든 iframe으로 돌아도 문제될 것이 없다.
그러나 긴..형태의 데이터라면..
그런데 생각해보면 매우 간단한 방법이 있다.
1. Ajax api에 대화만 허용하면 된다.
즉 여러번 메시지를 주고받으면 된다는 것이다.
다른 보안 제약은 그대로 유지해도 좋다.(파일시스템접근제약 등...)
2. response를 streaming해주면 된다.
현재는 responseText는 streaming가 아니다. 물론 ResponseXML도 streaming일 수 없다.
오로지 한꺼번에 다 읽어야 한다.
둘다 socket에 있는 기능이다.
이 두가지면 번거롭게 websocket운운하지 않아도 간단히 해결된다.
서버측에는 엄청난 라이브러리들이 있어서 streaming 기반 통신 API가 널렸다.
HttpClient류에서는 InputStream OutputStream을 바로 참조할 수 있다.
그러나 클라이언트측(브라우저들)에는 너무 심한 제약으로 구현의 제약 뿐만 아니라
streaming으로 처리해야하는 다양한 데이터처리에 bottle neck역할만 한다.
Http는 한번 보내고 한번 받는 것이 기본룰이라 될 수가 없다.
그래서 그 복잡한 websocket이야기가 나오는 것인지..
그렇게되면 Http에서 처리하는 것들(도메인,계정,쿠키,보안..기타등등...)
그렇다면, 왜 이름이 웹소켓이면서 http서버로 바로 접속하면 안되는지..
이또한 http서버들의 구현문제
이문제는 protocol... 규약이 제약.
socket하나 얻자고 클라이언트에 java applet 환경을 강요하는 것은 말도 안된다.
(자바가 브라우저에서 실패한 요소 중 하나이다.)
flash는 상대적으로 가볍다고 해도, 모바일이 대세인시대에
flash도 java와 동일한 문제가 발생한다.
오로지 브라우저에서 지원해야 한다.
WebSocket은 정말 궁여지책으로 나온 것이다.
client 브라우저들은 거짐 준비가 된 것 같다.
다만 서버사이드가 표준이라하기엔 다양한 구현이 나와버렸다.
http://en.wikipedia.org/wiki/Comparison_of_WebSocket_implementations
개인적인 생각이지만 위의 두가지 기능만 제공된다면
어떤 작업이 안되는지 궁금할 정도다.
만일 별개의 서버로 간다면..
jWebSocket 이 보여주듯, 수많은 중복구현이 불가피할 것이다.
HTTP2.0도 나올때가 되지 않았나?
window8 의 경우 StreamWebsocket 이란 걸 제공한다는데..
cross browsing-html5 의 이야기를 하는데
오로지 자기지향으로 달리는 것 같아 답답하다..
어쨌던 당장 XMLHTTPRequest에서 stream을 읽을 수 있다면
복잡한 것이 없다.
도중에 통신을 끊지 않고, 메시지를 보낼 수 있다면 더할 나위 없다.
통신되는데, 뭐가 문제야.. 데이터는 문제없다.
------------
문제가 되는 지점은 chatting 형..... 즉 다자간 동기대화형 application이다.
구지 socket이어야 하는 이유지... 주된 영역이 아니라 할말이 없다.
여튼 5개 브라우저와 톰캣으로 간단한 chatting 예제를 돌려보았으나..
Safari는 되지도 않았고(tomcat7과 safari는 맞지 않단다. nio와 맞지 않는다는데..)
같은 IP라서 그런지.. 브라우저에 상관없이
커넥션을 몇개를 생성하건 한놈만 응답을 받는다.
subprotocol 관련된 것인지.. 싶기도 하고.
server에서 IP단위로만 구분하는지..... 참 어렵다.
추가적인 다른 작업이 필요한건지...
서버사이드도 짧지 않은 이야기가 진행중이다.
올해(2013)에 모두 선보이게 될 것 같은데
annotation 기반 POJO Bean 경향으로 다가오게 될 것 같다.
지금 당장 어찌해야 한다면, atmosphere를 이용해야 할 듯.
atmosphere..... 이건 또 오로지 maven이군.
2013-01-31.
-------
atmosphere 로 간단한 채팅예제를 해 보았다.
Window7에서 safari를 제외한 Chrome,IE10,Opera,FireFox는 잘 되었다.
safari만의 문제가 아니라 mac의 전체가 아직 websocket을 지원하지 않는다.
예를 들어 vmware에 osx를 설치후 chrome으로 접속해도 마찬가지고
아이패드3에서 safari,chrome 접속도 마찬가지.
톰캣용 예제의 문제점은 없었다.
다만 문자열에 " "로 감싸져서 왔다. 왜 그런지는 모르겠다.
Websocket 2013년 어느 시점부터 java WAS들에 모두 장착되어 배포될 것으로 보이는데
양방향(full-duplex) 통신이다보니 활용영역이 ajax와는 비교할 수 없을 정도로
다양할 것이다.
용도에 따른 적절한 패턴으로 활용되어야 할 것이다.
2013-02-03
--------
HTTP2.0이 2014년에 표준이 개발될 것이라고 한다.
Google의 SPDY가 수용될 것이라고 한다.
spdy는 밑단에서 브라우저와 웹서버만 되는 것인지..
websocket와 같은 클라이언트의 쉬운 api는 없다.. 있을 것 같은데..
Websocket 은 java was가 지원하더라도
웹서버는 그런 기능이 마련되지 않아서 proxy를 세워 해결한다고 하는데...
kaazing 상용으로 잘 나가는 듯 하다.
2013-02-06
----------------------
피드 구독하기:
글 (Atom)