CSS & JAVASCRIPT 최적화 도구
- JS Minifier
- JSMin
- JSLint : JavaScript Verifier
- Javascript compressor : JavaScript 압축 도구
- CSS & JavaScript Compressor : CSS & JavaScript 압축 도구
- ShrinkSafe : JavaScript 압축 도구
- Huffman JavaScript Compression
- SOC (Safe Obfuscator/Compressor)
- ANT 프로젝트 구축으로 로컬에서 자유자제로 JavaScript 압축 : 여기
- Google closure
- CSS OPTIMIZER : CSS파일의 사이즈를 압출해주는 툴
- CSS compressor : CSS 압축기
- ROBSON CSS COMPRESSOR : CSS 압축도구
- CSS DRIVE CSS COMPRESSOR : CSS 압축도구
- CSS Compressor from Lottery Post : CSS 압축기
- FLUMPCAKES CSS OPTIMIZER : CSS파일을 최적화 도구
- CSS ANALYZER : URL방식으로 CSS를 Validation
- CSS TIDY : open source 기반의 CSS parser와 optimizer
- 온라인으로도 최적화 사이트
- CLEAN CSS : CSS를 formatting하고 optimizing하는 온라인 도구
- CSSCHECK : URL기반으로 CSS파일을 기입하면 코드에 대한 피드백을 리포팅합니다. Warning과 에러 정보를 제공합니다.
- Code Beautifier (Based on CSS Tidy)
- CSS Optimizer : 다운로드 클라이언트를 사용하여 CSS를 최적화함
영어 도사인 필리핀과 인도는 왜 못 살까?
"건방진 놈, 두고 보라지. 앞으로 우리가 몇 년 내 필리핀을 앞설 테니. 그리고 10년 후에는 우리는 선진국이 되고, 필리핀은 영원히 후진국으로 남을 테니 두고 봐." --박정희 1966년 2월 <<대통령을 그리며>> 이동원 지음
1966년 2월 7일 박정희 대통령은 동남아 순방에 나서는데, 필리핀의 마르코스는 바쁘다며 박정희의 구걸 외교를 거절했다. 이 치욕적인 냉대에 대해 박정희가 위와 같이 말했다고, 옥스퍼드대 박사 출신의 당시 외무부 장관 이동원이 밝히고 있다.
요즘 이명박 대통령 당선자와 인수위의 이경숙 위원장이 연일 듣기 거북한 이중창으로 거북의 등을 타고 용궁으로 가는 산토끼마냥 영어 수구보수 세력의 간을 당장 꺼내 심심산천에 바싹 말리기라도 하라는 듯이 그들의 간을 새까맣게 졸이고 있다. 새 권력자들은 영어교육을 국가가 책임지겠다며 고등학교만 나오면 사교육 없이 웬만한 영어회화 실력을 갖추게 하겠다고 장담한다. 그 구체적인 방법은 영어수업은 영어로 진행하게 하는 것이라며, 2010년부터는 고등학교부터 전면적으로 그렇게 하겠으며, 당장 영어 몰입 교육을 시골의 초등학교부터 실시하여 영어만이 아니라 다른 과목도 영어로 가르치겠다고 결연한 목소리로 공언한다. 매년 3000명의 영어로 하는 영어수업 가능 교사를 배출하기 위해 예산도 충분히 마련하겠다고 한다. 기러기 아빠, 펭귄 아빠의 눈물을 더 이상 두고 보지 못하겠다며 눈물 섞인 분노의 불꽃을 TV 화면 가득 피우고 있다. 영어능력 시험도 개발하여 2012년부터는 대입에서 아예 영어과목을 제외하겠다는 계획도 발표한다.
영어에 미친 나라답게 마치 우리나라가 선진국이 되지 못하는 것이 잘못된 영어교육 때문이라는 무언의 괴이한 사회적 합의에 이명박 정부는 전적으로 동감을 표시하고, 70년대에 열사의 사막에서 공기 단축의 눈부신 신화를 세우며 주로 세계 건설회사의 하청업자로서 뚝딱뚝딱 각종 사회기반시설과 건물을 세우던 것처럼, 5년 안에 당시 해외건설의 하청업자 수준인 오늘날 대한민국 영어 교사들을 전원 단기간 지옥훈련으로 담금질하여 한심한 대한민국의 학교 영어를 일제시대 일어처럼 사회의 공용어 수준으로 끌어올리겠다고 장담한다.
여기서 잠깐! 필리핀과 인도는 거지 아이도 유창한 영어로 외국 사람만 보면 쪼르륵 달려가서 자비를 구하지만, 한국과 일본은 대학 나온 사람도 외국 사람만 보면 걸음을 늦추거나 에돌아 가면서 슬금슬금 피하는데, 왜 필리핀과 인도 사람은 한국과 일본을 지상낙원처럼 생각할까. 이명박 정부는 747로 구체화하듯이 GDP를 최고의 잣대로 생각하는 것 같으니까, 네 나라의 일인당 국민소득을 먼저 비교한다.
세계은행에 따르면, 2006년의 일인당 국민소득(GNI)은 필리핀 1천420달러, (요새 중국과 더불어 잘 나가는) 인도 820달러, 한국 1만7천690달러, 일본 3만8천410달러이다. 아마 이명박 정부는 다음 대통령 임기까지 포함하여 한국의 국민소득을 4만 달러 즉 현재의 일본 수준과 비슷하게 만드는 것이 국정의 가장 큰 목표인 듯하다. 그 방법 중 현재로선 가장 두드러지게 나타나는 것이 영어교육 혁명과 한반도대운하 건설과 과학기술부와 정보통신부 폐지다.
1966년 박정희 대통령이 동남아 순방에서 들른 나라는 말레이시아, 태국, 자유중국이었다. 여기에 필리핀까지 합해서 이들 네 나라는 당시 한국인에게 꿈의 나라였다. 오늘날 동남아 국가들이 한국을 바라보는 시각과 비슷했다. 한국은 1961년부터 눈부신 경제성장으로 1966년에는 일인당 국민소득이 130달러로 가파르게 올라갔지만 당시 필리핀은 269달러, 말레이시아는 323달러였다. 필리핀은 인구도 한국의 1.5배나 되었기 때문에, 국부(國富)가 한국을 압도했다.
국제정치 무대의 가장자리에서 한국의 대통령은 두 손을 가지런히 모으고, 무대 한가운데서 열연하는 필리핀의 대통령을 바라보며 그의 농담 하나도 놓치지 않고 진지하게 들으며 그 즉시 장기기억으로 변환한 다음, 남들이 다 웃고 나서 제일 나중에 제일 크게 웃어야 할 만큼 초라했다. 더욱 기가 질리는 것은, 50여 년간 미국 식민지였던 필리핀은 일반 국민이 한국의 외교관보다 영어를 잘했다!(으메, 기죽어!) 필리핀은 대통령이 한국처럼 쿠데타로 집권한 게 아니었다. 1965년에 압도적인 표 차이로 대통령에 당선된 마르코스는 정통성의 문제에서도 동갑인 박정희를 한없이 깔볼 만했다. 마르코스는 제2차 세계대전에서 일본군과 치른 치열한 전투 경력도 있었고 독립된 국가에서는 하원과 상원에서 모든 최연소 기록 최다 득표 기록을 독점하고 있었다. 게다가 그는 귀족 출신이 아니고 서민 출신이었다. 국민들은 이런 마르코스를 보면 밥을 안 먹고도 배가 불렀고 자리에 누워 한국인이 유관순 누나를 떠올리듯이 가만히 그이의 모습을 떠올리기만 해도 감동의 눈물이 절로 나왔다.
그런데 오늘날은 어떤가. 박정희가 어금니를 물고 낮은 목소리로 예언한 그 말이 그대로 실현되지 않았는가. 그냥 못 사는 게 아니라 필리핀은 빈부격차가 얼마나 심한지 마닐라 도시 전체를 몇몇 가문이 소유하고 있고, 농민의 절대다수는 소작농인데 한국의 호남평야 같은 어마어마한 농지도 한 가문이 통째로 소유하고 있는 경우도 있다. 사회불안은 얼마나 심한지 마닐라의 호텔도 실탄을 장전한 군인과 경찰이 지켜야 하고 산에 숲이 좀 우거졌다 싶으면 공산 반군이 아지트를 틀고 들어앉았다가 수시로 출몰하여 붉은 혁명을 외치며 고작 수십 달러의 현금을 소지하고 있다 싶은 사람을 다짜고짜 총으로 쏘거나 인질로 잡아간다. 필리핀의 민주주의는 40년이 지난 지금도 여전히 요란하지만, 그것은 귀족 가문끼리의 나눠 먹기에 지나지 않는다.
재미있는 통계가 하나 더 있다. 2003년에 해외취업 노동자가 고국으로 송금하는 돈(workers' remittance)에 관한 것인데, 1위가 인도로 216억 달러, 2위가 멕시코로 166억 달러, 3위가 필리핀으로 90억 달러다. 1991년에야 인도는 한국이 그보다 딱 30년 전에 시작한 경제의 개혁개방의 길로 들어섰다. 그 덕분에 지금은 많이 달라지고 있지만, 여전히 인도와 필리핀은 해외송금이 국가 경제에서 차지하는 비중이 엄청나게 높다. 이코노미스트 2007년 판 통계를 보면, 한국은 해외에서 들어오는 노동자의 송금 순위에서 46위에도 오르지 못했다. 46위가 2억5천만 달러니까 그것도 안 된단 말이다. 유학비용 등으로 나가는 돈이 오히려 비교가 무의미할 만큼 많다.
인도는 인구가 10억이고 필리핀은 8천만이니까, 인구 비율로 보면 필리핀이 해외송금에 대한 의존도가 인도보다 약 5배 높다.
무슨 말인가. 필리핀에서는 아무리 영어를 잘해도 국내에서 취직할 데가 없다는 말이다. 실지로 그들은 대졸 출신의 여자는 홍콩과 싱가포르에 가서 가정부로 취직하는 것이 소원이고, 대졸 출신의 남자는 유엔 등 국제기구에서 허드레 일을 맡아 악착같이 돈버는 것이 꿈이다. 나머지는 한국과 대만 등에 가서 3D 업종에 종사하는 것이다. 그들 중에도 물론 미국에 가서 박사 학위를 따는 수도 있지만, 언제 필리핀 출신의 세계적인 박사, 엔지니어에 관한 뉴스를 들은 적이 있는가.
개개인은 어느 나라 사람이든지 비슷비슷한 능력과 심성을 갖고 태어난다. 어머니 뱃속은 어떤 새 생명에게나 에덴 동산이다. 그러나 어느 나라에 태어나느냐에 따라 어제까지의 에덴 동산은 지옥에서 낙원까지 천차만별의 스펙트럼으로 펼쳐진다. 북한에 태어나느냐 한국에 태어나느냐, 필리핀에 태어나느냐 한국에 태어나느냐, 인도에 태어나느냐, 한국에 태어나느냐, 일본에 태어나느냐 한국에 태어나느냐, 그에 따라 인간개발지수(human development index)가 바로 결정이 된다. 필리핀한테조차 문전박대 받던 한국도 1960년대만 해도 거의 희망이 없는 듯했다. 대졸 출신이 서독의 광부로 가기 위해 수단방법을 가리지 않았다. 그러나 지식인들로부터, 필리핀 수준의 민주주의를 갈망하는 쓸모 없는 천재들로부터 갖은 비아냥거림과 섬뜩한 저주와 단정적인 예언을 들으며, 박정희 선생님이 칠판 앞에 분필을 들고 서는 대신 대한민국 전도(全圖) 앞에 빨간 스티커를 들고 서면서, 1960년대만이 아니라 1920년대 이후 태어난 대부분의 사람들의 운명이 판이하게 달라졌다. 날마다 박정희를 술안주 삼는 사람들의 신수조차 나날이 훤해지기 시작했다. 야당도 재야도 대부분 부자가 되었다. 그들이 저주하는 대한민국에 태어난 덕분이었다. 그들은 아직도 박정희와 대한민국의 하늘같은 은혜를 불구대천의 원수로 갚고 있다.
한국과 일본이 과연 필리핀이나 인도보다 영어를 못할까. 우선 당장 이명박 대통령 당선자를 보자. 그는 당시만 해도 어선 몇 척이 드나들던 쓸쓸한 어촌 포항의 동지상고 출신이다. 고려대가 최종학력이다. 그런데 통역 없이 영어로 의사소통한다. 그는 한국의 전통 영어교육, 좀더 정확히 말하면 일본식 영어교육을 받았다. 그런데도 외국의 경제전문가나 정치인과 대화를 나눌 수 있다. 학교서 배운 건 하나도 없는데, 해외에 자주 출장 나가면서 천재적 두뇌로 귀동냥 영어를 익힌 것일까.
국제화 시대라고 하지만, 아직도 한국인은 대부분 평생 외국인을 접할 기회가 없다. 영어교사, 영어영문학 교수도 그러하다. 대신 외국 사람과 자주 만나야 하는 사람들, 해외 지사로 나가야 하는 사람들, 영미권으로 유학 가는 사람들, 해외에서 태어나거나 부모 따라 해외에 산 경험이 있는 사람들, 최근에는 조기 유학 가는 학생들, 이들은 하나같이 영어를 잘한다. 좀더 정확히 말하면 영어회화를 잘한다.
어릴 때 부모 잘 만나 영어를 잘하게 된 귀족을 제외하고, 나머지는 오로지 천재적 두뇌로 홀로 배워서 그렇게 영어를 잘하는 것일까.
문맹(illiteracy)이라는 것은 읽고 쓸 수 없다는 뜻이다. 따라서 필리핀이나 인도만이 아니라 미국과 영국에도 문맹이 있다. 듣고 말할 줄은 아는데, 읽고 쓰지 못하는 사람들이 바로 그들이다. 문맹도 등급이 있다. 초등학교만 졸업해도 문맹 소리는 듣지 않는다. 그것은 겨우 1단계 문맹에서 벗어났다는 말이다. 중졸은 2단계 문맹에서 벗어나고 고졸은 3단계 문맹에서 벗어난다. 3단계 문맹만 벗어나면 지금도 대기업 사장도 될 수 있고 은행장도 될 수 있고 국회의원도 될 수 있고 대통령도 될 수 있다. 그러나 그들이 스스로 4단계 문맹을 벗어나는 것은 매우 어렵다. 대학을 나왔다는 것은 한 전공분야에서 4단계 문맹에서 벗어난 것을 의미한다. 5단계 문맹은 박사가, 그것도 제대로 된 박사 아니면 벗어나기가 대단히 힘들다. 그들끼리 주고받는 말은 그 전문 분야에서 4단계 문맹을 벗어난 사람조차 알아듣기 어렵다.
한국과 일본이 필리핀이나 인도보다 영어를 못한다는 것은 반은 맞고 반은 틀린다. 한국과 일본에는 영어의 4단계 문맹을 벗어난 사람이 즉 영어로 된 전공 서적을 눈으로 능숙하게 읽고 머리로 바로 이해할 수 있는 사람이 필리핀이나 인도보다 훨씬 많다. 이런 사람이 필리핀보다는 인도가 많고 인도보다는 한국이 많고 한국보다는 일본이 많다. 이것은 정확히 일인당 국민소득과 비례한다. 일본에는 한국보다 5단계 영어 문맹을 벗어난 사람들이 훨씬 많다. 이들은 국제 학술회의에서 미국이나 영국과 나란히 앉는다. 한국은 이 점에서 일본과 아직도 숫제 상대가 안 된다.
문자언어(written language)가 아니라 음성언어(spoken language)의 측면에서 보면, 한국과 일본은 필리핀이나 인도에 비해 상당히 뒤떨어진다. 그 점에서는 분명히 한국과 일본은 필리핀이나 인도보다 영어를 못한다. 그 이유는 무얼까.
한국과 일본에는 한국어와 일본어라는 언어환경(language environment)이 있고 필리핀과 인도에는 식민지 지배라는 슬픈 역사로 인해 영어라는 언어환경이 조성되어 있기 때문이다. 인도는 힌디어가 있지만 이것도 16개 공용어 중의 하나일 따름이다. 그 중에 영어도 있는데, 이것이 숫자로는 힌디어에 어림없이 못 미치지만 전국적으로 가장 두루 쓰이는 언어다. 전국적으로 학교와 관청에 가장 많이 쓰이기 때문이다. 한국은 35년간 일본의 식민지로서 학교와 관공서에서 일본어를 썼지만, 5천년 문화민족으로서 기껏 일본어 단어 몇 개만 남기고 일본어 잔재를 모조리 몰아냈다. 사실 이보다 더 큰 일제청산은 없다. 한국어는 UN 세계 언어분포에 따르면, 현재 8천만이 쓰는 당당 세계 10대 언어다. 과학기술 수준도 괄목하게 발전하여 2007년에 세계 4위 특허출원 국가로서 국제특허청에서 10대 언어로 선정되기도 했다. 이제는 특허를 한글로 내도 낸다는 말이다.
이명박 대통령 당선자가 일본식 영어교육을 받고도 영어로 의사소통하는 것은 천재라서 그런 게 아니다. 고려대학이 영어 원서로 4단계 영어 문맹을 벗어나게 해 주었기 때문에 가능한 것이다. 그 이전에 중고등학교에서 3단계 문맹에서 벗어나게 해 주었다. 그렇지 않았으면, 대학 입학시험에 합격할 수가 없었다. 단 그는 상고를 나왔기 때문에 스스로 3단계 영어 문맹에서 벗어나기 위해 남다른 노력을 했을 것이다. 우리나라는 초등학교에서 영어를 배운 지가 얼마 되지 안 된다. 그러나 예전에 본고사 준비하던 고3은 요즘 고3보다 문자영어(written English)는 지금보다 수준이 한 단계 높았다. 지금의 대학 1학년 수준이었다.
이런 사람은 해외에 들락거리다 보면 자신도 모르게 귀가 뚫리고 말문이 트인다. 박정희 선생님이 한국의 경제를 미국을 중심으로 서방 선진국이 마련해 놓은 관세와 무역에 관한 일반 협정(GATT) 체제에 강제로 끌고 들어갔기 때문에 해외 상사를 중심으로 많은 사람들이 공짜로 외국물을 먹을 수 있었다. 대통령 당선자도 본인이 알든 모르든 그렇게 나라 덕을 톡톡히 봤다. 누구보다 많이 봤다. 그가 외교관도 자녀 한 명 이상을 국내에 인질로 남겨둬야 하는 북한에 태어났으면, 그렇게 해외에 자주 드나들 기회를 얻지 못했을 것이고 음성영어(spoken English)를 접할 기회 또한 얻지 못했을 것이다.
한국은 지금까지 영어교육을 제대로 못한 적이 없다. 필요한 만큼의 영어는 충분히 가르쳤다. 한국도 국제화되면서 음성영어(spoken English)의 필요성도 절감하고 대략 1985년부터 중학교에서 의사소통(communication)에 중점을 두고 꾸준히 노력했다. 이제는 그 성과가 눈에 확 띌 정도는 아니지만, 조금씩 드러난다. 23년간의 피나는 노력으로 이만큼 발전했는데, 전국의 영어교사들을 일방적으로 매도하는 것은 마치 노태우 정부까지 30년 동안 이룩한 세계 1위의 경제발전을 일방적으로 매도하는 것처럼 무책임한 일이다. 이명박 대통령 당선자를 현대건설이 부도났다고, 그가 현대건설을 떠날 즈음에 이미 중동신화는 용꿈이 아니라 지렁이꿈이 되어 버렸다는 것을 이유로 경제를 전혀 모르는 사람이라고 실패한 경영인이라고 매도하는 것처럼 무책임한 일이다.
음성언어만 능통한 사람은 단순한 심부름꾼 이상의 일을 못한다. 이들에게 문자언어를 가르쳐 전문직을 갖게 하려면 초등 6년, 중고등 6년, 대학 4년 총16년이 걸린다. 그러나 문자언어에서 어떤 외국어의 4단계 문맹에서 벗어난 사람은 6개월 정도 그 언어권에서 놀기만 해도 귀가 뚫리고 말문이 트인다. 이런 점에서 볼 때 대졸 출신과 전문직이 선진국 수준이거나 그 이상인 한국이 실지로는 필리핀이나 인도보다 영어를 잘하는 사람이 많다.
나는 약 10년 전의 글에도 밝힌 바 있듯이 다시 같은 제안을 한다. 그것은 영어교육을 이원화하라는 것이다. 이스라엘처럼 문법과 독해는 한국의 영어교사가 담당하도록 하여 문자영어의 수준을 계속 끌어올리고, 회화와 작문은 원어민 교사 또는 원어민 수준의 교사에게 맡기라는 것이다. 그렇게 하려면 1년에 3천 명이라는 것은 듣기는 좋지만 지금껏 주어진 환경에서 누구보다 열심히 가르친 전국의 영어교사에게 마른하늘의 날벼락 죄의식만 심어 주는 전시효과밖에 없을 가능성이 크다. 2년 후부터 3천 명, 이것은 말이 된다. 왜냐하면 젊은 교사를 중심으로 1년에 3천 명씩 영어권으로 어학연수 또는 학위취득유학 또는 여행을 보내되, 지금처럼 갈라먹기 식으로 또는 모든 영어교사를 원어민 수준으로 만들겠다는 용두사미 식 단기적 성과 지상주의의 명령과 지시 내리 먹임 행정으로 하지 말고, 그들을 한 달 두 달이 아니라 외국으로 2년 간 보내라는 것이다. 그렇게 하면 2년 후부터 문자영어와 음성영어를 함께 잘하는 학생들이 쏟아져 나올 것이다. 아마 10년 후에는 한국으로 영어 배우러 오는 유학생이 몰려들기 시작할 것이다, 오늘날 말레이시아나 핀란드로 영어 배우러 가듯이.
Application Server(Tomcat)의 효과적인 운영 방안
- 계산식 : (MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads
- 메모리 계산 예
가정 : Java 1.5를 사용중이며 OS가 120MB를, 디폴트 스택사이즈는 0.5M
- JVM에 1.5GB할당되었을 경우 : (2GB-1.5Gb-120MB)/(1MB) = ~380 threads
- JVM에 1.0GB할당되었을 경우 : (2GB-1.0Gb-120MB)/(1MB) = ~880 threads
2. Application Server 에러 대처 방안(java.lang.OutOfMemoryError: PermGen space 현상)
- Tomcat의 경우 v6.0.14이상의 안정적 릴리즈 된것을 선택
- JDK1.4보다는 1.5, 1.6의 사용을 권고함
- -XXMaxPermSize 설정을 통해 perm 사이즈를 증가시킴
- JHat으로 메모리릭 원인을 찾고 JConsole, Lambda probe 등을 통해 메모리 모니터링을 함
- Application Server운영자는 Garbage Collection에 대한 이해가 있어야 함
3. Tomcat에서 설정 예시
- 힙메모리 정보를 출력 : -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC
위 설정을 통해 출력되는 로그를 보고 New Generation의 eden 영역, Old Generation 영역, Permanent 영역을 확인하여 각 영역이 작으면 아래와 같은 설정으로 적당 사이즈를 확보해 줍니다.
- 도출된 설정 : -Xms256m -Xmx512m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:MaxPermSize=128m -XX:SurvivorRatio=5
-Xms : 최소 힙 싸이즈
-Xmx : 최대 힙 싸이즈
-XX:NewSize : New Generation의 최소 싸이즈
-XX:MaxNewSize : New Generation의 최대 싸이즈
-XX:MaxPermSize : Permanent Generation의 최대 싸이즈 가 되겠다.
-XX:SurvivorRatio : 영역비율(New Generation)
결론적으로 적용할 설정은 아래와 같습니다.
- CATALINA_OPTS="-server -Xss256k -Xms256m -Xmx512m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:MaxPermSize=128m -XX:SurvivorRatio=5 -XX:ReservedCodeCacheSize=128m -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -Djava.net.preferIPv4Stack=true -Djava.awt.headless=true "
Open Soure는 100% 안정적이지 않기 때문에 가장 최신의 안정적인 버젼이 릴리즈되는지 항상 예의 주시하여 버전업에 게을러서는 안됩니다
Java Tips : Java Connection Pool에서 ERROR 피하기
커넥션 오류를 피하기 위해서...
- validationQuery : 적어도 한 row를 출력할 수 있는 SEELCT 쿼리를 지정하여 줌
- testOnBorrow : Object가 Validation하지 않을 경우 연결된 pool을 제거하고 다른 커넥션 풀을 하나 가져오는 작업을 수행함
주의 사항으로 testOnBorrow값이 true로 오기 위해서는 validationQuery 파라미터가 non-null string이 어야만 합니다. 네트워크 장애에 의한 무응답일 경우는 어쩔수 없습니다.
상용 커넥션 풀인 경우 무응답 기간을 설정하여 재 커넥션을 요청하게 됩니다.
아래는 설정 내용이니 참고하세요.
Open Source DataBase 비교
PolePosition에서 오픈 소스 기반의 데이터 베이스 비교를 해 놓았네요. 문제는 자신의 프로젝트 환경에 맞는 데이터 베이스 선별할 수 있는 능력을 키우는 게 가장 중요합니다.
Mysql이 좋아서 그냥 사용한다는 건 효율적인 웹 서비스를 운영하지 못합니다. 어떤 업무에 맞는 데이터 베이스를 골라 좋은 성능을 가지고 최대한 그 효율을 보장하는 방법과 노하우를 찾을 필요가 있어 보입니다.
- db4o - Java와 .NET을 위한 데이터 베이스
- MySQL - 세계에서 가장 많이 사용하고 있는 오픈 소스 기반의 데이터 베이스
- Mckoi - Java기반의 데이터 베이스
- JavaDB - Apache Derby
- HSQLDB - 경량의 Java 기반의 데이터 베이스
- SQLite - C기반의 데이터 베이스(Embedded 포함)
주요 시사점은...
- HSQLDB은 메모리를 사용해서인지 가장 좋은 성능을 발휘하고 있으며 다양하고 복잡한 쿼리(벌크)의 사용에서 좋은 성능을 발휘할 지 의문이 감. 그리고 JDBC가 이닌 Hibernate와 같이 사용하면 성능 떨어짐
- db4o는 TREE 구조와 상속 구조의 특성을 가지고 있는 곳에서 좋은 성능을 보여주고 있음
Mysql은 이미 잘 알려진 관계형 데이터 베이스죠. 뭐가 좋은지는 저도 아직입니다. 무료라는 거 이외에...
좀더 다양한 데이터 베이스를 써보고 좋은 점을 발견하고 기억하여 향후 프로젝트에 잘 써먹을려구 합니다.
SiteMesh를 이용한 웹 페이지 처리
헤더, 푸터, 왼쪽 메뉴, 오른쪽 메뉴등의 공통적으로 사용되는 메뉴들을 title이나 body 태그를 추출하여 알맞은 위치에 레이아웃을 적용하게 되어 사용자를 위해 웹 페이지를 완성하여 보여주게 됩니다.
1. 설치
- 다운로드 사이트에서 파일을 받아서 WEB-INF/lib에 카피
2. 설정
- WEB-INF디렉토리에 decorators.xml, sitemesh-decorator.tld, sitemesh-page.tld, sitemesh.xml 추가함
- web.xml에 추가
- decorators.xml 작성 : name, page 형태로 추가됨
- $DOCUMENTROOT/decorators디렉토리 안에 데코레이터 페이지 작성(공통 페이지용)
<decorator:title default="XXXXXXX" /></title> : <title> 태그에 명시된 타이틀을 삽입
<decorator:head /> : HTML의 <head> 태그의 내용을 삽입
<decorator:body/> : <body> 태그의 내용을 삽입
프로퍼티의 값을 데코레이터 JSP에 삽입하고 싶다면 <decorator:getProperty> 커스텀 태그를 사용
- 데코레이션 될 JSP 코드 작성(추가 기능 콘텐츠들)
이렇게 설정하면 iframe등의 사용없이 공통 페이지를 데코레이터해서 콘텐츠를 복잡함없이 쉽게 추가할 수 있습니다. 아마 SiteMesh는 관리자 화면 등에 유용하게 사용될 것입니다.
저도 몇년전부터 그렇게 사용하고 있습니다.
YouTube속에서 본 세계 대학의 행보
아래는 각 대학의 강의 자료들을 YouTube에서 볼 수 있습니다.
- University of California - Berkeley
- MIT (Massachusetts Institute of Technology)
- UChannel
- EGS (The European Graduate School) :
- Vanderbilt
- USC (University of Southern California)
- Duke University
- Purdue University
- Oxford University Saïd Business School
- Auburn University
Mysql 운영시에 필요한 툴
- maatkit : master/master 장비의 replication에 유용한 툴이고, 테이블 동기화와 관련된 툴임
- mysqlreport : Mysql 서버의 통계 정보를 보는데 도움을 주는 툴임
- querysniffer(querybench/queryparser) : 로깅 정보를 통해 mysql서버의 리스타트 없이 쿼리 정보를 볼 수 있음
- mysqlsla : 쿼리 분석 도구(응답시간이 긴 쿼리 분석에 용이)
- mysqlidchck : Mysql 서버에 사용되지 않는 인덱스 정보 제공
- innodb-recovery : InnoDB tablespaces를 사용중이라면 손상된 데이터를 복구해 줌
- Dstat : 실시간으로 Mysql정보를 제공
Identity Management 시스템을 구축하기 위해 필요한 이슈 정리
부족한 부분이나 수정되어야 할 부분이 있으면 댓글 부탁드립니다. 좀더 정리가 필요해 보입니다.
1. Access Control Policy
- 정의 : 인증 리소스의 접근 제어를 관리하고 가이드함
- User : 자신의 identity를 입증할 경우 자신의 리소스 접근을 허용함
- Owner : 전체 User를 관리하는 사용자, 모든 User의 리소스 접근을 허용하나 접근 로그로 추적이 가능하여야 함
- 접근 감시 : 누가 어떤 정보에 접근했는지 관리가 되어야 하고 6개월 이상 보관되어야 함
- 정의 : 인증에 관한 절차, 방식, 레벨, 감시 등의 정보를 가이드함
- UserID : Unique한 정보이고 Naming and Certificates 정책에 의해 생성됨
- 인증 방식
. 인증 타입 : OpenID 수용 여부, ID Federation(타 도메인 등등) 수용
. 인증 방식 : 쿠키를 통한 SSO를 처리하고 서비스에서 도메인 쿠키 셋팅함, 타도메인일 경우 쿠키 정보와 세션 정보를 디비에서 관리하여 진입 Consumer 사이트에서 사용자가 아이디 입력 후 IDP로 아이디 정보 제공하여 SSO 처리
- 인증 레벨
. Casual : 패스워드 없이 단순한 토근 정보를 쿠키 설정으로 인증 처리
. Standard : ID와 PASSWORD의 조합
. Secure : ID와 PASSWORD의 조합에 부가적으로 Security Token 공유
. Critical : ID와 PASSWORD의 조합에 부가적으로 분산된 Two Factor Authentication(OTP, BIO 등) 수 - 인증 API : 인증 정보는 데이터 베이스에서 저장하고 웹 방식과 AUTH API(TCP/IP, SOAP, REST 방식 등)를 정의함
- 인증 감시
. 인증 시도 User의 필수 정보는 로그나 DB로 관리(6개월 이상)하여 악용사례를 예방할 수 있어야 함
. DDos 공격, 악의적 인증 정보 추측 등을 예방할 수 있어야 함
- 직원, 개발/운영자, 제휴사, Third party 관련자들에게 고객 데이터의 신뢰 확보를 위한 수단을 강구하여야 함(약관 및 책임 이행 서약서 등)
- 고객 데이터 제공시 필요한 프로세스
. 암호화 : 동기 방식의 암호화 알고리즘 사용
. 폐기 기한 : 제휴 서비스 종료시에 자동 폐기
. 접근 레벨 : 접근 권한 관리
. 제휴 서비스간의 개인 정보 연동 및 권한 : 개인정보 공유 항목 정의 및 권한/개인 정보 동기화
- 가입 정보는 최소화할하여 진입 장벽을 없앨 것
- 공인된 암호화 알고리즘(동기/비동기 포함)을 사용하고 가이드를 배포함
- 고객 일부 정보는 암호화함(패스워드, 주민번호, 신용카드/계좌 번호 등)
- Third Party와 정보 연동시에는 필히 암호화 알고리즘을 사용할 것
- 영/숫자/특수 문자 혼용 가능하며 복잡도 기준을 마련하여 심플한 패스워드는 제외하고, 패스워드 길이는 6-12자 이내 사용 등 정의
- 암호화 되어 저장됨
- 사용자에게 패스워드는 주기적(30, 60, 90일 등의 기준에 의해)으로 변경 요청함
- Two Factor Authentication과 연동 가능하도록 설계 및 아키텍처 구성함
- 악의적 사용자 및 해킹 의심 가입자일 경우 관리회사에서 강제 패스워드 변경 가능 및 본인 확인 프로세스 적용할 수 있음
- 가입 정보
. UserId : 6 ~ 12자이내로 OpenID행태, 이메일, 전화번호 등 제휴 사이트에 따라 다양한 아이디가 수용가능해야 하고 생성 규칙인 이메일, OpenID, 전화번호 등의 생성 규칙에 준함
. 이름(40자 이내), 닉네임(40), 이메일(40), 생년월일(12), 성별(1), 우편번호(10), 국가(40), 언어(40), 타임존(40) 이 제공되며 주소, 전화번호, 지역 등은 서비스에 따라 별개로 관리함
- Unique identitier : User Sequence Number(usn)를 사용함
- 가입정보 공개 여부는 사용자가 판단할 수 있도록 함
- 가입 인증을 위해서 OpenID일 경우 이메일 인증을 추가함
- Federation 아이디들은 기존의 실명 확인 정보를 확인하여 매핑(본인 확인 거침) 함
- 로깅 : 연동/인증 정보는 로그과 6개월 이상 보관하여야 함
- 미성년 고객에 대한 관리 수단이 있어야 함(부모 동의 등)
- 개인 정보는 항상 신뢰성 보장 활동(아이디 상태 관리, 개인 정보 현행화)을 주기적으로 함
- OpenID 스펙 위에 제휴사의 인증 API를 통해 다른 인증 수단을 추가하는 방안 마련
- 제휴사와는 제휴를 통해 Federation 수단을 추가하고 사용자에게는 고지 의무를 가지므로 매핑 단계에서 가입과 동의, 약관 정보를 법규에 위반하지 않게 추가하여야 함
- 상호(제휴사와 인증 Provider)는 Security Token은 필수적으로 공유되어야 하고 필요한 개인정보는 고객 선택권에 따라 서비스로 정보가 연동될 수 있어야 함
- 개인 고객은 개인이 identity를 확인하여 정보를 관리할 수 있음
- 법인 고객/그룹 고객 아이디일 경우 개인으로 사용할 수 없고 특정 서비스에서만 사용 관리를 해주어야 함
- Chief Privacy Officer (CPO)에 의한 개인 정보 보호 정책이 준수되어야 하고 주기적인 관리(감사 포함)되어야 함
- 개인/법인의 고객 정보는 개인 정보 보호법 테두리내에서 운용되어야 함
- 개인 정보 보호 정책 안내 페이지를 제공함
- P3P 규약 준수
- identity life cycle 관리
- 개인 정보 관리 툴 제공
- 일부 로우(가공이 안된) 통계 데이터 제공
- 외부 연동 인터페이스 규격 정의
- 보안 이슈에 대한 정의 및 해결 방안 도출
[2008-01-17] 오늘의 핫 이슈
세개의 기사랍니다.
Oracle은 OAS 실패로 WAS쪽에 관심을 가진 거구 Sun은 변변한 Derby를 대신하여 OpenSource의 막강 DBMS를 얻게 되는군요. 금액을 떠나 둘다 상부상조하는 결과로 보여집니다만, 한편으로는 대형 업체들의 편식에 민첩했던 기업들이 거북이가 되지 않을까 우려가 일부 됩니다.
그리고 Yahoo의 OpenID Provider 지원으로 OpenID를 지원하는 Big Player가 하나더 생겨서 기하 급수적으로 그 수가 늘어나게 되는군요.
JS/CSS 압축기능 ANT 프로젝트 구축하기
전체 JS/CSS압축 프로젝트 진행 과정은 아래와 같습니다.
1. 필요한 파일 다운로드
- YUI Compressor version 2.2.5 다운로드 한 다음 dist디렉토리에 카피
- YUIAnt.jar 파일 다운 로드 후 dist 디렉토리에 카피
2. YUI ANT 프로젝트 디렉토리 구조

3. build.xml 설정 파일 내용(build 디렉토리에 존재)
4. build 수행
5.JS/CSS 압축된 파일 저장 디렉토리
- jsmin 디렉토리에 저장되니 필요한 파일들을 카피하여 해당 프로젝트에 copy하는 설정만 추가하면 됨
IT People
주로 IT분야의 공학 전공의 CEO가 많습니다. 특히 외국에서는요.
국내에서는 공학 전공의 CEO의 비중이 유독 작다는 것을 알게 되었습니다. 왜 그럴까요?
저도 공학 전공인데. 경영적 자질이 부족해서 그런가요?
공학도 여러분도 전문 경영인이 가지고 있는 덕목들을 하나 둘 자신의 것으로 만들어서 창업하시는데 도움이 되기를 바랄께요.
- Eric Schmidt(구글 회장/1955년생/미국/프린스턴대 전자공학|버클리 주립대 전기공학, 전산학 박사)
- Larry Page(구글 창립자|제품부문 사장/1973년생/미국/스탠포드대 컴퓨터 공학 석사)
- Sergey Brin(구글 창립자|기술부문 사장/1973년생/러시아/메릴랜드대 수학|스탠포드대 컴퓨터학 석사)

- David Filo(야후 CEO/1966년생/미국/툴레인대|스탠퍼드대)
- Jerry Yang(야후 CEO/1968년생/대만/스탠퍼드대 전자공학 학사|석사)

- Steve Jobs(애플 CEO/1955년생/미국/리드대 중퇴)
- Bill Gates(마이크로소프트 회장/1955년생/미국/하버드대 법학)
- Steve Chen(유투브 창립자/1978년생/대만/일리노이대 수학, 홈피:http://www.youtube.com/steve)
- Chad Hurley(유투브 창립자/1977년생/미국/펜실베니아대, 홈피:http://www.chadhurley.com/)
- Stewart Butterfield(플리커 창립자/1973년생/캐나다/빅토리아대|케임브리지대 철학 박사)
- Caterina Fake(플리커 창립자/1972년생/미국/Smith대, Vassar대, 홈피:http://www.caterina.net/)
- Chris DeWolfe(마이스페이스 창립자/1965년생/미국/워싱턴대|남캘리포니아대 경영학 석사, 홈피:http://www.myspace.com/chrisdewolfe)
- Tom Anderson(마이스페이스 창립자/1975년생/아일랜드/버클리주립수사학, 영문학, 홈피:http://www.myspace.com/tom)

- Philip Rosedale(세컨드라이프 CEO/1969년생/미국/UC 샌디에이고 물리학)
- David Sifry(테크노라티 CEO/1958년생/존스홉킨스대 컴퓨터학, 홈피:http://www.sifry.com/alerts/)

- 최휘영(NHN CEO/1964년생/한국/서강대 영어영문학)
- 이해진(NHN CSO/1967년생/한국/서울대 컴퓨터 공학 |KAIST 컴퓨터 공학 석사)
- 김범수(NHN USA 대표/1966년생/한국/서울대 산업 공학 |서울대 산업 공학 석사)
- 이재웅(다음 전 CEO/1968년생/한국/연세대 전산과학/연세대 전산과학 석사)
- 석종훈(다음 CEO/1962년생/한국/연세대 경영학)

- 박대연(Tmax Soft CTO/1956년생/한국/오리건 대학교 컴퓨터 과학 학사 및 석사|서던캘리포니아 대학교 컴퓨터 과학 박사)

- 김택진(엔씨소프트 CEO/1967년생/한국/서울대 전자공학 학사 및 석사/서울대 컴퓨터공학 박사)
프로젝트 관리 Tips : 이슈(Issues) 관리 툴 사용을 위한 개념 이해
발생 기간 또한 프로젝트 전 기간에 걸쳐서 발생합니다. 여기에 나온 이슈들에 대한 용어는 주로 JIRA사용하면서 터득한 용어들이니 참고하세요.
1. Issue Type(이슈 유형)
- BUG(문제점) - 해당 Product 기능을 저해하는 요소
- New Feature(새 기능)- 개발된 기능이 아닌 해당 Product의 새로운 기능적인 요소
- Task(업무)- Product를 위해 실행해야 하는 Task
- Improvement(개선)- 해당 Product의 기능을 개선하기 위한 요소
2. Priority Levels(우선순위 레벨)
- Blocker - blocks 개발과 테스트 작업
- Critical - 고장, 데이터 손실, 심각한 메모리 결함
- Major- 기능의 주된 손실
- Minor- 기능의 최소한의 손실이나 간단한 workaround 문제점
- Trivial- 철자오류나 텍스트의 조정 불량과 같은 표면적인 문제점
3. statuses(상태)
- In Progress - 이슈는 할당자에 의해 지금 현재 활발하게 작업이 이루어지고 있는 상태
- Resolved - 이슈가 해결이 되고 보고자로부터의 확인을 기다리고 있는 상태
- Reopened - 이슈가 일단 해결되었지만 그 해결이 부정확하다고 판단되었때의 상태
- Closed - 이슈가 충분히 숙고하여 해결되었고 그 해결이 정확하게 완료된 상태
- Resolutions(해결) - 이슈는 다양한 방법으로 해결될 수 있고 "fixed"(수정됨)상태가 그것들 중의 하나임
- Fixed(수정) - 이슈를 수정하는 것은 tree로 검사되고 테스트됩니다.
- Won't Fix (수정 불가능) - 설명된 문제는 절대 수정되지 않을 이슈입니다.
- Duplicate(복사) - 이 문제는 기존 이슈의 복사에 관련된 것임
- Incomplete(미해결) - 미해결 이슈 상태.
- Cannot reproduce(재현 불가능) - 이슈의 재현이 불가능한 상태

4. 그 외 이슈 관리와 관련된 용어들
- Projects(프로젝트) - products, development project 등이 하나의 프로젝트 단위가 될 수 있습니다.
- Version(버전) - 프로젝트 내의 버전(예를 들면 0.1, 0.1.2, 1.0 alpha, 1.0 beta, 1.0.1, 1.2 , 2.0)
- Affects 버전- 이슈를 applies(적용)하는 버전
- Fix for 버전- 이슈가 존재했거나 수정 되어질 버전
- Components(구성) - 프로젝트는 다양한 구성요소로 구성되어 있음. 예를 들어 문서, back end, 이메일 하위조직, GUI 등이 있음.
18th Jolt Award finalists
|
Category |
Finalists |
Company |
|
General Books |
||
|
Beautiful Code Edited by Andy Oram and Greg Wilson |
O'Reilly |
|
|
Geekonomics: The Real Cost of Insecure Software by David Rice |
Addison-Wesley Professional |
|
|
Manage It!: Your Guide to Modern Pragmatic Project Management by Johanna Rothman |
Pragmatic Bookshelf |
|
|
Myths of Innovation by Scott Berkun |
O'Reilly |
|
|
Outside In Software Development by Carl Kessler and John Sweitzer |
IBM Press |
|
|
Release It!: Design and Deploy Production-Ready Software by Michael T. Nygard |
Pragmatic Bookshelf |
|
|
Technical Books |
||
|
Continuous Integration: Improving Software Quality and Reducing Risk By Paul Duvall, Steve Matyas, Andrew Glover |
Addison-Wesley Professional |
|
|
Fuzzing: Brute Force Vulnerability Discovery By Michael Sutton, Adam Greene, Pedram Amini |
Addison-Wesley Professional |
|
|
Head First SQL Your Brain on SQL—A Learner's Guide by Lynn Beighley |
O'Reilly |
|
|
The Rails Way by Obie Fernandez |
Addison-Wesley Professional |
|
|
WPF Unleashed by Adam Nathan |
Sams Publishing |
|
|
xUnit Test Patterns: Refactoring Test Code by Gerard Meszaros |
Addison-Wesley Professional |
|
| Change/Config Management | ||
|
AccuRev 4.6 for ClearCase |
AccuRev Inc. |
|
|
FishEye |
Atlassian (formerly Cenqua) |
|
|
IncrediBuild |
Xoreax Software |
|
|
Perforce SCM system |
Perforce Software |
|
|
Surround SCM |
Seapine Software |
|
|
SourceGear DiffMerge |
SourceGear, LLC |
|
| Collaboration Tools | ||
|
Code Collaborator |
Smart Bear Inc |
|
|
Codebeamer 5.0 |
Intland |
|
|
CollabNet CUBiT |
CollabNet |
|
|
Confluence |
Atlassian |
|
|
Mingle |
Thoughtworks |
|
|
TeamCity |
JetBrains |
|
| Database Engines/Data Tools | ||
|
|
Aleri Streaming Platform |
Aleri |
|
AquaLogic Data Services Platform |
BEA Systems, Inc. |
|
|
Coral8 Engine |
Coral8, Inc |
|
|
Crystal Reports |
Business Objects |
|
|
DBArtisan |
Embarcadero Technologies |
|
|
EnterpriseDB Advanced Server |
EnterpriseDB Corp. |
|
|
Toad for Oracle |
Quest Software Inc. |
|
| DesignTools and Modeling | ||
|
BigLever Software Gears |
BigLever Software |
|
|
Corticon Business Rules Modeling Studio |
Corticon Technologies |
|
|
Enterprise Architect |
Sparx Systems Pty Ltd |
|
|
IBM Rational Software Architect |
IBM |
|
|
Serena Mashup Composer |
Serena Software |
|
|
Structure101 for Java |
Headway Software |
|
| Development Environments | ||
|
Alpha Five version 8 |
Alpha Software Inc. |
|
|
CodeRush/Refactor! Pro |
Developer Express Inc. |
|
|
IntelliJ IDEA |
JetBrains |
|
|
Komodo IDE 4 |
ActiveState |
|
|
NetBeans IDE 6 |
Sun Microsystems |
|
|
QNX Momentics IDE 4 |
QNX Software Systems |
|
| Enterprise Tools | ||
|
Adobe LiveCycle Enterprise Suite |
Adobe Systems |
|
|
Foglight |
Quest Software Inc. |
|
|
Kapow Mashup Server - Web 2.0 Edition |
Kapow Technologies |
|
|
OutSystems Platform 4.1 |
OutSystems |
|
|
Rally Enterprise |
Rally Enterprise |
|
|
Sugar 5.0 |
SugarCRM |
|
| Libraries/Frameworks | ||
|
Eclipse Modeling Project |
Eclipse |
|
|
Guice |
Google Inc |
|
|
JasperReports |
JasperSoft |
|
|
Qt Jambi |
Trolltech |
|
|
Spring Framework |
SpringSource |
|
|
Zend Framework |
Zend Technologies |
|
| Mobile Development Tools | ||
|
Adobe Device Central CS3 |
Adobe Systems, Inc. |
|
|
Eclipse Embedded Rich Client Platform |
Eclipse Foundation |
|
|
Mojax |
mFoundry |
|
|
NetBeans IDE |
Sun Microsystems |
|
|
SunJava Wireless Tk/Netbeans Mobility |
Sun Microsystems |
|
|
VirtualLogix VLX |
VirtualLogix |
|
| Project Management Tools | ||
|
Easy Projects .NET |
Logic Software Inc. |
|
|
Rally Enterprise |
Rally Enterprise |
|
|
ResultSpace |
Sapient |
|
|
Software Planner |
Pragmatic Software Co., Inc. |
|
|
TargetProcess On-Demand |
TargetProcess |
|
|
TeamCity |
JetBrains |
|
| Security Tools | ||
|
AquaLogic Enterprise Security |
BEA Systems, Inc. |
|
|
Crowd |
Atlassian |
|
|
Defensics |
Codenomicon, Ltd. |
|
|
Fortify Defender |
Fortify Software |
|
|
GuardianEdge Data Protection Platform |
GuardianEdge |
|
|
Ounce |
Ounce Labs |
|
| Testing | ||
|
Clover 2.0 |
Atlassian (formerly Cenqua) |
|
|
JUnit Factory |
Agitar Software |
|
|
LISA 4 SOA Testing & Validation |
iTKO, Inc. |
|
|
Quest Code Tester for Oracle |
Quest Software Inc. |
|
|
SOAPscope Tester |
Mindreef, Inc. |
|
|
SQLscaler |
Idera/BBS Technologies |
|
|
TestComplete Enterprise |
AutomatedQA |
|
| Utilities | ||
|
Adobe Captivate 3 |
Adobe Systems, Inc. |
|
|
Adobe RoboHelp 7 |
Adobe Systems, Inc. |
|
|
ANTS Profiler V3 |
Red Gate |
|
|
DemoWorks 2007 |
ComponentOne |
|
|
Toad for Data Analysis |
Quest Software Inc. |
|
|
VMware Workstation |
VMware |
|
| Web Development Tools | ||
|
3rdRail |
CodeGear |
|
|
Adobe ColdFusion 8 |
Adobe Systems, Inc. |
|
|
Appcelerator Platform |
Appcelerator, Inc. |
|
|
IntelliJ IDEA |
JetBrains |
|
|
NetBeans IDE |
Sun Microsystems |
|
|
RSSBus |
/n software |
|
| Web Sites/Developer Networks | ||
|
CM Crossroads |
CMC Media, Inc. |
|
|
DevZone |
Zend Technologies, Inc. |
|
|
.NET Rocks! and dnrTV |
Franklins.Net |
|
|
O'Reilly Radar |
O'Reilly Media, Inc. |
|
|
Safari Books Online |
Safari Books Online |
|
|
www.codeproject.com |
The Code Project |
|
- 참고 사이트 : http://joltawards.com/finalists.html
Performance Tips : GC Viewer들
1. 다운 사이트
- visualgc - Sun의 jvmstat.
- GCPortal - GC관련 아티클 및 툴.
- HPjmeter - HP용 GC Viewer.
- GC Viewer - GC Viewer1.
- GC Viewer - GC Viewer2.
2. 특징
- garbage collection데이터를 통해 성능 지표(throughput, accumulated pauses, longest pause 등)를 계산하여 보기 좋게 보여줌
- GC Viewer같은 경우는 csv 포멧으로 데이터를 import할 수 있음
- generation sizes를 변경하고 heap size를 설정하는 등을 통해 gc를 튜닝하는데 유용함
3. 플랫폼 별 설정 방법
- Sun JDK 1.4/1.5 : -Xloggc:<file> [-XX:+PrintGCDetails]
- Sun JDK 1.2.2/1.3.1/1.4 : -verbose:gc
- IBM JDK 1.3.1/1.3.0/1.2.2 :n -verbose:gc
- HP-UX JDK 1.2/1.3/1.4.x : -Xverbosegc
- BEA JRockit 1.4.2/1.5 : -verbose:memory
- 표준 : -Xloggc:<file> -XX:+PrintGCDetails
4. GC관련 아티클
- VMFlags - IBM/Sun JVMs 파라미터 정리
- IBM Garbage Collection and Storage Allocation Techniques - IBM garbage collector에 대한 설명서
- Tuning Whitepaper - Sun의 Java Tuning Whitepaper
- List of Java 6 -XX options - GC의 간략한 설명
Java Tips : Apache Commons Codec 라이브러리 활용
Apache Commons Codec은 여기에서 필요한 라이브러리를 다운 받을 수 있습니다. 다양한 인코딩 방식을 제공함으로 유용하게 사용하실 수 있을 것입니다.
실행 결과
BASE64 Encoded: ucy5sLTlxMS/oSC/wL3FsM3AuyDIr7+1x9W0z7TZLg==
BASE64 Decoded:미물닷컴에 오신것을 환영합니다.
URL Encoded: %EB%AF%B8%EB%AC%BC%EB%8B%B7%EC%BB%B4%EC%97%90+%EC%98%A4%EC%8B%A0%EA%B2%83%EC%9D%84+%ED%99%98%EC%98%81%ED%95%A9%EB%8B%88%EB%8B%A4.
URL Decoded:미물닷컴에 오신것을 환영합니다.
URLDecoder.decode:미물닷컴에 오신것을 환영합니다.
MD5: 9f68c3c2124a995573581ba44fca8e7e
SHA: 6ae40c444ff5ac6a82c017831dc277792d43136a
Hexa Encoded: b9ccb9b0b4e5c4c4bfa120bfc0bdc5b0cdc0bb20c8afbfb5c7d5b4cfb4d92e
Hexa Decoded: 미물닷컴에 오신것을 환영합니다.
Binary Encoded: 0000000000000000
Binary Encoded:0000000000000001
QCodec Encoded: =?UTF-8?Q?=EB=AF=B8=EB=AC=BC=EB=8B=B7=EC=BB=B4=EC=97=90 =EC=98=A4=EC=8B=A0=EA=B2=83=EC=9D=84 =ED=99=98=EC=98=81=ED=95=A9=EB=8B=88=EB=8B=A4.?=
QCodec Decoded: 미물닷컴에 오신것을 환영합니다.
Encoded: =?UTF-8?B?66+466y864u37Lu07JeQIOyYpOyLoOqyg+ydhCDtmZjsmIHtlanri4jri6Qu?=
Decoded: 미물닷컴에 오신것을 환영합니다.
Project Tips : Software Requirements
아래는 Software Requirements에 대한 4가지 카테고리에 대해서 이해가 쉽게 분류해 놓았습니다.

비기능, 기능 요구사항만으로 뭉뚱그려 판단하는 건 이제 그만하시고 4가지의 관점에서 요구사항을 상세화해 보는건 어떨까요?
Java Tips : 정규 표현식 잘 사용하기
여러분도 array index exception같은 예외 상황이 로그에 남아 있다면 심각하게 고민해봐야 할 듯 합니다.
그래서 멀티 쓰레드에서 안전하게 사용할려면 아래와 같이 사용하시면 됩니다.
Java Tips : String.intern()의 쓰임새
아래의 코드의 실행 결과는 어떻게 나올까요? 한번 알아맞춰 보세요.
2. 실행 결과
true
false
true
true
false
false
true
Java에서 쓰이는 모든 String 객체는 상수풀에서 관리되고, 상수풀은 클래스와 같은 Heap의 Permanent area(고정 영역)에 생성되어 Java 프로세스의 종료까지 그 LifeTime을 갖습니다.
즉, String을 new로 생성하지 않고 "" 리터럴을 사용하여 생성할 경우, 내부적으로 new String() 메소드 호출 이후에 String.intern()이라는 메소드가 호출되어 고유의 인스턴스를 공유하도록 interned됩니다. 이것은 생성한 String을 Constant pool에 등록하는(만약 이전에 같은 char sequence의 문자열이 이미 상수풀에 있다면 문자열을 힙에서 해제하고 그 상수풀의 레퍼런스를 반환) 작업을 수행합니다.
일반적으로 문자열들을 비교하기 위해서 equals메서드를 사용하지만, equals메서드로 문자열의 내용을 비교하는 것보다는 등가비교연산자(==)를 이용해서 주소(4 byte)를 비교하는 것이 더 빠릅니다.
그러나, intern() 과정에서 전체 문자열을 equals() 함으로 문자열 억제로 확실히 효과가 크다고 판단되는 상황이 아니면 권장하지 않습니다.
2008년 새해 복 많이 받으세요.
항상 건강하고 바라는 바 이루시길 바랍니다.
폴 포츠처럼 올해는 자신의 가능성을 찾아보는 한해로 정하는 건 어떨까요?

Firebug를 활용한 Javascript Debugging
alert('width: ' + width + ' height: ' + height);
제가 앞에서도 포스팅했듯이 Firebug를 통해 로깅을 활용해서 디버깅을 할수 있습니다. 아래는 로깅 방법을 공유하겠습니다.
사용 방법은 Firebugs의 console object를 활용합니다.
예) console.log('width: %d height: %d', width, height);

1. Arrays 출력
2. Strings 출력
3. Html Elements
4. 로깅 레벨별 사용
5. Timers 사용
6. Tracing Execution









