본문 바로가기

프로그래머

초보자를 위한 이클립스 퍼블릭 스테이틱 보이드 메인.. 을 암기하던 그때는 어렵고도 재미있는 자바 문법 익히던 옛날이었다. 선생님은 군인의 차렷자세처럼 퍼블릭 보이드 메인.. 문법이 기초중에 기초니 꼭 암기하라고 강조하셨다. 지금의 나는 퍼블릭 보이드 메인..하고 다음을 흐렸듯이 다음 문법이 약간 햇갈린다. ^ ^; 그러나 그때는 기초를 차곡차곡 정석대로 습득해가던 때였다. 퍼블릭 보이드 메인..을 암기하던 그때는 완전한 문법지식을 바탕으로 로직을 자유롭게 구현하면 그것이 진짜배기 프로그래머라고 생각했다. 당시 알고 있던 비주얼 스튜디오 같은 IDE 툴은 프로그래머를 게으르고 바보처럼 만드는 툴이라고 단정지었다. 내가 그렇게 단정지은 이유는 사실은 IDE 같은 복잡한 툴 익히기가 싫었기 때문이다. (이런 좁디 좁은 시야의 자기.. 더보기
고수를 위한 고전 에디터 vim 2004년 봄 SI회사에 처음 취직을 했다. 이제 그동안 연마했던 내 플그램 실력을 발휘할 수 있다니 기대도 있으면서 두렵기도 했다. 아직 파견은 못 나가고 본사에서 잡일을 하며 대기를 했다. 당시 나에게 SI 사이트는 하나의 무림 강호였고 SI 사이트에서 일하는 개발자들은 무림의 고수들이었으며, 무림의 고수들이 쓰는 노트북은 고수들만이 쓰는 멋진 무기였다. 지금에 와서는 어이없지만 나는 SI에 대한 동경을 가진 순진한 IT개발자 지망생이었다. 어느날 우리 회사 무림의 고수 선배가 그 험난한 SI를 마치고 잠시 본사로 귀환했다. 나에게 그 선배는 존경과 동경의 대상이었다. 특히 그 선배가 쓰던 은빛 노트북은 왜 그리 빛나보였을까. 내가 쓰던 중고 데스크탑이 일반 병사의 구식 창이라면 그 선배의 은빛 노트.. 더보기
자바 IO의 성능개선 (무복사 기법을 통한 효율적인 데이터 전송) 얼마전 자바 NIO를 활용한 통신 프로그램을 개발하면서 자바 네트워크 프로그래밍에 관심을 가졌었는데요. 마침 제 관심분야에 대한 IBM developerWorks의 고급기사가 발행되었기에 소개합니다. 무복사 기법을 통한 효율적인 데이터 전송 기사 내용이 무슨 말인가 하니, 하나의 IO가 일어날때 디스크커널자바어플리케이션 의 영역을 넘나드는데, 무복사 기법은 자바어플리케이션 영역을 빼고 디스크와 커널간의 직접 통신만으로 IO가 가능하며 성능이 많이 향상된다는 내용입니다. "많은 웹 애플리케이션은 상당한 분량의 정적 내용을 제공한다. 즉, 디스크에서 데이터를 읽어 응답을 위한 소켓에 써 넣는다. 이런 처리는 상대적으로 CPU를 거의 사용하지 않을 것 같지만 다소 비효율적이다. 즉, 먼저 커널이 디스크에서 해.. 더보기
유닉스 고급 쉘스크립트 기법 IBM developerWorks 기사를 소개할때 기사를 고르는 기준은 어려운 이론을 다룬 기사 보다는 실무에서 바로 써먹을 수 있는 기사를 소개하는 것입니다. 이번에도 IBM developerWorks 소개 기사를 찾다가 유닉스 관련 유익한 기사를 찾아서 소개합니다. 최근에 리눅스를 다룰 일이 많아졌는데 특히 쉘도 다뤄야 했습니다. 평소 프로그램을 짜는 사람이지만 쉘의 문법이 익숙하지 않아서 쉘 프로그래밍 하기 불편했어요. 다른 쉘을 참고로 때려맞추기 끝에 기능만 잘돌아가게 겨우 쉘을 만들 수 있었습니다. 여기 저처럼 쉘을 잘 쓰지 못하는 사람을 위한 기사가 있습니다. 바로, '유닉스를 능숙하게 사용하기: 고급 셸 스크립트 기법' 입니다. 이 기사에서는 쉘을 깔끔하고 유지보수 편하게 작성하는 방법을 설.. 더보기
디벨로퍼웍스 늦가을 행사 개발자들의 수다 IT개발자를 위한 사이트 IBM developerWorks 에서 IT개발자를 위한 행사를 준비했다고 합니다. 디벨로퍼웍스 늦가을 행사 개발자들의 수다 IBM developerWorks에서 독자, 필자, 리뷰블로거 등이 함께하는 즐거운 이야기 장을 마련합니다. 이름하여, ‘개발자들의 수다’ 입니다. 이 행사는 '현장에서 참여자들이 토론 주제를 정해서 실시간으로 자유로이 이합집산하면서 토론을 진행'하는 OST(Open Space Technology) 형식으로 진행할 예정입니다. 정해진 아젠다 없이, 현장에서 함께 얘기 나눌만한 주제를 정하거나 건의해서 독자, 필자, 리뷰블로거들이 편안하게 생각을 나누고 그 과정에서 서로 영감을 받을 수 있는 행사입니다. 개발자로서의 진로, 고민이나 기술 및 트렌드에 대한 난.. 더보기
자바스크립트 개발 툴킷(JSDT) 살펴보기 자바 스크립트 하면 떠오르는 이미지가 '노가다' 입니다. 웹 프로그래밍 자체가 노가다 성격이 있는데다 자바스크립트 짜고 테스트하는 일이 만만치 않거든요. 자바스크립트는 교통체증으로 가득한 서울 한복판에서 공사하는것과 비슷합니다. 이곳은 각종 자재를 원할하게 옮겨야 하지만 엄청난 교통체증 덕분에 항상 고생하면서 공사해야 합니다. 자바스크립트도 일반 에디터에서 대충 날림으로 짜보고 alert문을 적당한 소스에 배치한 후, 해당 페이지를 테스트 하기 위해 몇단계의 페이지 이동을 거쳐서, 그 페이지에 도착하고, 직접 하나하나 INPUT FIELD를 입력한 다음 테스트를 하게 됩니다. 다른 언어에 비해 한번 짜기가 그야말로 노가다 스럽고 짜증이 납니다. 언젠가 자바 IDE툴 이클립스에 찬사를 보낸 적이 있습니다... 더보기
OSGi를 이용한 Java Enterprise Application 개발 제가 몇번 강의 들어본결과 엄청난 지식의 깊이와 귀에 쏙쏙들어오는 차분한 설명으로 유명하신 스프링등 기타 자바 전문가 이일민님이 계십니다. 이일민님이 이번에 '스프링과 하이버네이트를 이용한 RAD프레임워크 - OSAF(OpenSprout App. Framework)이 공개'된 후 직접 관련 강의를 IBM developerWorks 스크린캐스트로 올리셨네요. 무엇보다 이일민님 하면 기억나는 것이 정말 어려운 주제도 귀에 쏙쏙 들어오게 설명하신다는겁니다. OSAF에 관심있은 분이라면 꼭 보시길 바랍니다. 이번에는 OSAF 스크린캐스트와 관련 링크만 남기겠습니다. ^ ^; > OSAF 관련 링크 IBM developerWorks : OSGi를 이용한 Java Enterprise Application 개발 OS.. 더보기
옙스토어에서 희망을 보다. (이클립스를 사용해 아이폰 웹 애플리케이션 개발하기) 저는 순수 개발자로 평생 일하고 싶다는 생각을 많이 합니다. 나를 가만히 볼때 관리자등의 다른 길은 안맞다는 생각도 있고, 이쪽일이 그나마 적성에 맞기 때문입니다. 작년까지는 이런 생각이 특히 많았는데 그나마 요즘에는 좀 두루뭉실 해졌습니다. 일단 우리회사 잘되서 즐겁게 일했으면 하는 바람입니다. 평생 개발자로 일하고 싶은 꿈은 좋은데 다 아시겠지만 우리나라 현실은 그 꿈이 실현되기 어렵습니다. 그러나 위키노믹스나 부의 미래라는 IT를 통해 미래를 예견한 책을 읽어보면 IT개발자로 해볼만한 일들이 무궁무진 할수도 있다는 것을 알고 어렴풋이 기대하고 있습니다. 그중에 반가운 소식이 최근에 들려왔습니다. 옙스토어 라는 애플 아이폰 소프트웨어 판매 장터 입니다. 개발자가 아이폰 소프트웨어를 개발하여 옙스토어에.. 더보기
Mock Object 를 사용해서 쉽게 테스트 하기 최근에 IBM developerWorks의 스크린캐스트(=동영상강좌)를 많이 봐야할 일이 있었습니다. 한꺼번에 보다 보니 당연히 힘들더군요. 그중에 심드렁한 내 눈과 귀를 번쩍트이게 하는 강좌가 있었습니다. 바로 'Mock Object 를 사용해서 쉽게 테스트 하기' 인데요. 테스트 주도 개발이 익숙하지 않은 초중급 개발자분들이 한번 짬내서 보면 개념잡는데 도움이 많이 되는 강좌입니다. Mock Object는 테스트 하기 힘든 특정 자원, 예를들면 '데이터베이스'에 의존하지 않고도, 비슷한 기능을 흉내내게 해주는 가상 객체입니다. 데이터베이스등의 특정 자원에 의존하는 객체가 Mock Object를 쓰면 이제 가상 객체를 쓰던 진짜 데이터베이스와 연결됨과 상관없이 기능을 수행 합니다. 저 강좌에서는 데이터.. 더보기
추억의 초창기 인터넷 뱅킹 화면을 공개합니다. 부제 : 사장님의 소장품 우리회사는 금융 IT 회사입니다. 최근 우리회사 서비스를 블로그 통해 홍보해야 했습니다. 이왕 하는거 잘 해보려고 글 주제를 여러가지로 생각했어요. 문득 떠오르는 생각이 ‘1997년 당시 한국 최초의 인터넷 뱅킹을 우리회사 사장님과 그 동료들이 만들었다’는 사실에 착안하여 ‘한국 최초의 인터넷 뱅킹 탄생 비화’를 주제로 글을 올리면 네티즌들이 궁금함에 많이 방문하리라 기대를 했습니다. 관련 글을 구성하는데 이거~ 최초의 인터넷 뱅킹 화면이 있으면 좋겠다는 생각을 했습니다. 글로 당시 상황을 설명하는 것 보다 옛날 옛적 촌스러운 사진도 함께 올리면 효과가 배가 되잖아요. 그래서 사장님께 옛날 최초 인터넷 뱅킹 화면 좀 구할 수 없냐고, 용기내어~! 여쭤보았답니다. 사장님은 한참 고.. 더보기
파이어버그를 이용한 빠른 웹 애플리케이션 디버깅과 튜닝 요즘 웹개발을 하는데 웹개발 할 때 어려운 점이 HTML과 자바스크립트의 디버깅 입니다. HTML의 태그가 꼬이면 꼬인 부분 찾기가 어렵고 자바스크립트에서 에러가 나면 익스플로러에서 뿌리는 디버깅 정보가 부족하여 에러 찾기가 힘이 듭니다. 사람에게 유익한 기사는 모기 물렸을 때 물파스가 바로 옆에 있는 것처럼 가려운 부분을 직접 긁어주는 기사가 특히 유익할 것입니다. 요즘에 IBM developerWorks의 기사를 소개하는데 내용이 좋긴 하지만 다소 어렵게 느껴지기도 합니다. 그런데 지금 소개할 기사는 그야말로 바로 써먹을 수 있는 유익한 기사입니다. 파이어폭스의 확장기능 중 하나인 파이어버그라는 웹 페이지 디버깅과 튜닝 툴입니다. 그럼 파이어버그의 소개와 각종 기능을 살펴볼까요. 파이어버그를 이용한 .. 더보기
머신을 위한 웹, 시멘틱 웹 관련 칼럼 웹은 인간을 위한 기술입니다. 웹은 인류의 모든 정보를 공개하고 공유하여 모든 인류가 골고루 정보의 혜택을 누리는데 기여하는 기술입니다. 웹이란 개념 자체가 정보의 공개와 공유라는 특징을 가지고 있습니다. 그리고 웹2.0은 RSS, 태그, 매시업, 집단 지성등으로 웹의 기본 특징인 ‘인류 모든 정보의 공개와 공유’를 촉진하는 기술과 방법을 담고 있습니다. 이렇게 지금까지의 웹은 주로 인간을 위한 웹입니다. 그런데 미래의 웹은 인간을 위한 웹에다가 머신을 위한 웹이 더해진다고 합니다. 머신을 위한 웹이란 컴퓨터가 해석하기 쉬운 웹을 만들어 자동적으로 다양한 웹 데이터와 웹 서비스를 만들어 낼 수 있는 개념이라고 이해했습니다. 이런 웹을 시맨틱 웹이라고 합니다. '인간과 머신을 위한 웹, Part 1: 웹을.. 더보기
어려운 자바 성능 측정을 돕는 칼럼 "사용자가 서비스를 요청하여 응답까지 무사히 받는 하나의 과정을 세션이라고 하고, 세션의 성공을 방해하는 요소를 저항이라고 하자. 세션은 수영선수고 저항은 물이다. 지금 세션이 출발한다. 힘차게 출발했으나 물의 저항이 만만치 않다. 세션이 무사 완주하거나 좀더 빠르게 완주하는 내내 저항은 세션을 계속 괴롭힌다. 저항을 이겨내고 좀더 빠르게 세션 완주할 수 없을까, 최소한 빠르진 않더라도 무사 완주할 수는 없을까." 올림픽 감동의 여운이 계속되는 한주입니다. 박태환 선수가 출전하기 전 특집방송을 봤습니다. 박태환 선수의 훈련과정을 담은 방송입니다. 인상 깊었던 것은 훈련과정이 무작정 고된 것이 아니라 마치 고난이도 수학문제를 풀 듯 몹시 체계적이었다는 것입니다. 매번 훈련과정마다 박태환 선수의 몸상태, 기.. 더보기
포켓 뱅킹, 액티브엑스 없는 뱅킹을 꿈꾸다. > 금융 서비스의 과거와 현재 7년전 정말로 산골에 살았을 때가 있었는데 한달에 한두번은 이체건수가 생겨서 근처 은행을 가야 했다. 근데 당시 근처 은행인 농협은 땀을 뻘뻘 흘리며 20~30분을 걸어야만 도착 했다. 이체건수가 생길때마다 나는 투덜거렸지만 이체 한 건을 위해서 시간 뺏기고, 힘 빠지는 일은 어쩔 수 없이 반복되었다. 7년이 지난 지금 나는 이체건수가 생기면 3분이면 뚝딱~ 인터넷으로 이체한다. 현재 잔고가 궁금할 때면 언제든지 인터넷으로 확인하면서 자금 운용 계획을 세운다. 지금은 현금이 없어도 굳이 걱정할 필요가 없다. 신용카드 그으면 한방에 해결한다. 버스 탈때도, 전철 탈때도 카드 덕분에 돈낼 걱정 할 필요 없다. 온라인에서는 인터넷 뱅킹, 오프라인에서는 신용카드/교통카드면 한방에 .. 더보기
자부심 강한 캐나다 IT개발자 마크를 인터뷰 하다. 예전 블로그에도 올렸지만 제 여동생은 캐나다에서 취직하고 공부하며 생활하고 있습니다. 그곳에서 캐나다인 남자친구 마크를 사겼고, 최근 휴가를 받아 한국에 귀국하여 마크와 함께 우리집에서 2주동안 휴가를 보냈습니다. 처음에는 낯선 외국인하고 같이 지낸다는 것이 무척 부담스러울 것 같았지만 재미있는 일도 많았고 마크와 좌충우돌 콩글리쉬 대화를 통해 영어공부도 하면서 색다른 추억을 만들 수 있었습니다. 특히 저하고 마크랑 친하게 지낼 수 있었던 이유는 마크도 저랑 똑같이 IT개발자였기 때문입니다. 여동생, 마크, 나랑 셋이 대화하다가 화재가 IT로 빠지면 오히려 여동생은 못 알아듣고 마크랑 나랑 통하는 경우도 있었습니다. 마크가 .NET, Spring Framework, Loose Coupling, SOA 등.. 더보기
자바 개발자의 이클립스 혜택 우리집에서 2주동안 같이 지냈던 캐나다인 마크는 MS계열의 경험이 많은 IT개발자다. MS계열에 익숙한 마크는 최근 자바로 개발 하고 있다고 한다. 나와 대화중에 마크가 갑자기 이클립스가 어렵다고 말했다. 나는 그 말을 듣고 모처럼 정확한 영어 문법과 정확한 영어 단어로 마크에게 자신있게 영어로 되물었다. .. Really? .. 그리고 마크에게 다시 더듬더듬 말했다. “이클립스야 말로 자바개발자에게 주어진 최고의 복지혜택이에요~” 라는 뜻을 더듬더듬 전달 했다. 1. 이클립스는 소스버전관리, 퍼포먼스관리, UML툴, 메이븐과 스프링 같은 외부 자바 프로젝트를 편리하게 연동 해주는 많은 플러그인이 있으며, IDE 기본적으로 소스추적, 리팩토링, 문법체크, 일관된 주석템플릿등의 편리한 기능을 제공한다. 더.. 더보기
Extreme Programming에 조금씩 가까이 가기 최근 프로젝트가 빠듯한 편은 아니라 여유가 있습니다. 다만 저 같은 경우는 해당날짜에 끝내야될 일이 있어서 일과중에는 꽤 바쁘게 자바 소스를 돌리고 있습니다. 저번주 말부터 진득하게 일과시간 프로그래밍을 하면서 몇가지 느낀바가 있었습니다. 예전에 제가 환상을 가졌던 Extreme Programming에 비교하여 한번 그 생각을 정리해 봤습니다. 주 48시간 근무? 제가 Extreme Programming(이하 XP)에 환상을 가진 이유는 XP 규칙중에 주 48시간 근무를 지켜라~ 라는 규칙이 있기 때문이었어요. 아름다운 규칙입니다. XP에서는 이 규칙을 통해 ‘진정한 생산성’ 이 무엇인지 알려주고 있습니다. 야근이 일상화 된 곳에서는 크게 바쁘지 않는 이상 어차피 야근할 것 일과시간에는 예를들면 인터넷 .. 더보기
프로젝트 수행시 이해관계자의 활발한 참여가 중요한 이유 모처럼 프로젝트 수행하는 사이트(=고객사)로 파견나갔습니다. 중요한 일로 갔기 때문에 잘해야겠다는 생각이 들고 이제 시작이지만 일도 무난하게 진행되고 있습니다. 무엇보다 업무 압박(=야근) 없이 여유있게 일할수 있어서 좋습니다. 제가 프로그래머로 업을 삼겠다고 다짐 했을때는 게임하듯 프로그램 로직만 짜면 되는줄 알았답니다. 그래서 프로그래머로 재미있게 평생 일해야지~ 라고 아름다운 상상을 했었어요. 그런데 현장에 나가보니 프로그램 역량 못지 않게 직장 동료, 고객 담당자를 대하는 능력, 한마디로 사람과의 의사소통/커뮤니케이션 능력이 너무도 중요하다는 것을 깨달았습니다. 저는 고객등의 프로젝트 관련 당사자들과 커뮤니케이션을 어려워했고 아직도 어려워 합니다. 그래도 이명박의 버벅거리는 3류 정치, 꽉막힌 의.. 더보기
객체-관계 맵핑 사고의 고수를 꿈꾸다. 블로그를 대함에 있어 머리와 손이 따로 움직이는 느낌입니다. 갈수록 블로그의 활용 가치가 높아져서 열심히 써야겠다는 마음은 드는데 글쓰기는 안하고 초저녁에 잠만 자고 있습니다. 블로그의 활용 가치중에 요즘 느끼는 것은 블로그를 배움의 도구로 쓸수 있다는 것입니다. 예를 들어 ‘객체 지향’은 이런것이다~ 라고 뜬구름 잡듯 어렴풋이 인식하고 있는 지식을 명쾌하게~ 글로 써서 독자에게 설명할 수 있을 정도까지 쓰려면, 그야말로 머리를 꽝꽝~ 벽에 부딪쳐 가며 사고력 부족의 한계를 이겨내야만 쓸 수 있습니다. 그래서 글쓰기로 프로그래밍 역량이든 교양능력이든 많이 향상시킬수 있다는 것을 느끼고 있습니다. 최근에 산고의 고통 끝에 배움의 기쁨을 얻기 위해 쓴 글중에 객체지향 글쓰기 (글쓰기 프로그래밍이 가능할까?).. 더보기
Apache Jmeter를 활용한 부하테스트 오늘은 부하테스트에 관한 짧은 글 입니다. 보통 글을 쓸 때 특히 설명문 같은 글을 쓸 때는 그 주제에 대해 많이 알아야 쓸 수 있을 것입니다. 그런데 오늘 같은 주제는 저도 잘 모르는 분야~라 오히려 혹시 이 글을 봐주시는 고수분께 제가 물어보는 형식의 글이 될지도 모르겠습니다. 부하테스트란 서비스 작동될 서버에 일정량의 트래픽을 일부러 발생시켜 서버가 다운되지 않고 정상 작동되는지 여부를 테스트 하는 것이라고 정의해 보았습니다. 저는 최근에 서버에서 작동되는 몇 가지 프레임워크를 동료들과 함께 개발한 다음 부하테스트를 해야 했던 일이 있었습니다. 그런데 저는 부하테스트에 관하여 항상 가지던 의문이 있었습니다. 부하를 어떻게 발생시킬 것인가~ 그리고 부하 테스트가 성공적으로 완수되었다는 판단 기준은 무.. 더보기
데이터 추상화에 대한 IBM developerWorks의 좋은 기사 저는 수차례 프로그래밍 관련 글에서 세상을 객체로 분석할 때 추상화를 잘할 수 있다면 유지보수와 확장성에 대한 장점을 얻을 수 있다고 써왔습니다. 제가 예전에 썼던 글 추상화의 고수가 되자. (생각의 탄생) 에서는 추상화를 1. 복잡한 현상과 불필요한 변수 뒤에 숨겨진 2. 사물의 본질을 핵심적으로 나타낼 수 있는 3. 하나의 속성을 찾는다.라고 정의 했습니다. 그리고 최근 제가 쓴 칼럼 에서는 객체지향스럽게 짠다는 의미를 '대상 요소를 잘 추상화 하여 자유로운 확장을 지향하고 유지보수 편리하게 활용한다는 의미'라고 썼습니다. 여기 프로그래밍의 고수 김승권님이 IBM developerWorks에 기고한 데이터 추상화 칼럼이 최근에 올라왔습니다. 추상 데이터에 대한 정의와 현실세계를 모델링한 예를 들고 있.. 더보기
팀원에게 객제지향 개발을 유도하기 (3/3) 팀원에게 객제지향 개발을 유도하기 (1/3), 팀원에게 객제지향 개발을 유도하기 (2/3)에 이어서 포스팅 합니다. + 2008년 초 레거시 코드를 스프링 프레임워크 IoC로 이식하며 > 잠깐, 왜 인터페이스와 인터페이스를 상속하는 구현 클래스를 만드는 방식으로 프로그래밍 해야 하는 거죠? 팀원에게 객제지향 개발을 유도하기 (1/3)에 객체지향스럽게 짠다는 의미를 대상 요소를 잘 추상화 하여 추상화의 장점을 잘 살리는 것이라고 했습니다. 인터페이스와 인터페이스를 상속하는 구현 클래스를 만드는 것이야 말로 바로 객체지향 추상화의 기본이 되는 프로그래밍 방식입니다. 그리고 스프링의 IoC(Inversion Of Control)기능이 바로 인터페이스와 인터페이스를 상속하는 구현 클래스 방식의 객체지향 개발을 .. 더보기
팀원에게 객제지향 개발을 유도하기 (2/3) 팀원에게 객제지향 개발을 유도하기 (1/3) 에 이어서 포스팅 합니다. > 왜 JUnit등의 테스팅 프레임워크를 이용하여 테스트 클래스를 만들어야 되는거죠? 보통 버그를 어떻게 잡으시나요. 1. 대충 테스트 하고 '이 정도면 되겠지 아마 에러 안날꺼야~' 라고 낙관하거나 2. 에러나면 그때 처리하자고.. 라고 낙관하거나 3. 그래도 이부분은 에러 없어야 되니 100가지 경우를 몽땅 '수작업'으로 테스트 하는거야.. 대개 이러지 않을까요. 그런데 이런 경우는 생각만 해도 아찔합니다. 보호망 없이 외줄타기 하는것과 같고, 망망대해에서 손으로 물고기 잡는것과 마찬가지이고, 로봇으로 자동 제작하던 공장 제품을 갑자기 수작업으로 제작하는 것과 마찬가지입니다. JUnit은 외줄타기 하는 개발자를 추락으로부터 보호해.. 더보기
팀원에게 객제지향 개발을 유도하기 (1/3) 우리회사 팀원들은 각 분야에 일가를 이룬 분들입니다. 특히 금융 전산 분야에서 우리의 능력은 탁월하죠. 다만 오래전부터 경력쌓던 분이라 그런지 절자지향적인 개발에 익숙하고 객체지향 개발은 다소 멀게 느끼시는 그런 모습이 있었습니다. 잠깐, 내가 생각하는 절차지향, 객체지향 프로그래밍 절차지향은, 모든 프로그래밍을 처리, 분기, 반복으로 처리할수 있다는 관점에서 절차적으로 처리하는 방식 객체지향은, 세상의 모든 요소를 객체와 객체간의 관계로 추상화하여, 추상화시 얻을 수 있는 확장성과 유지보수 편리함을 지향하는 개발 방법론 예전에 우리 회사 솔루션 개발에 객체지향 솔루션을 가져다 쓰면서 동료들이 몇가지 의문을 제기한 부분이 있었는데요. 그 의문들은 대부분 원론적인 질문들이라 제가 제대로 답변을 못한 부분이.. 더보기
에러 잡는 마음가짐 > 들어가기전 잡담 어제는 친한 친구와 약속이 있었고, 오늘도 친구와 약속이 있었는데 모두 취소가 되었습니다. 허탈한 마음을 뒤로하고 투표를 하고 서점에 갔다가 집에 왔습니다. 이쯤 되면 시간도 남고 제가 한방 포스팅이라고 부르는 블로깅을 할 수도 있었는데 블로깅도 리듬을 타는 것 같습니다. 이제 회사일 바빠져서 블로깅 천천히 하겠다고 쓴 글이 무안하게 얼마전에는 글을 많이 쓴다 싶더니만 이번주는 글쓰기에 손이 가질 않았습니다. 머릿속에 떠오르는 글감중 최근 경험담이 담긴 간단한 글을 쓰면서 다시 닻을 올리고 항해(=블로깅)를 해야겠습니다. > 본문 에러는 잡힌다. 짧은 경력이지만 내가 아는 에러는 완전히 죽진 않더라도, 잡히지 않은 적은 없었다. 그러나 에러를 잡는 과정은 잃어버린 지갑을 찾는 것처럼 .. 더보기
개발자와 프로그래밍의 가치을 높여주는 JUnit 오늘은 정장을 입었습니다. 자유롭게 입다가 정장을 입었더니 불편합니다. 정장이란 옷 자체는 비싼 만큼 기능적으로 불편하진 않을 텐대 마음이 불편한가 봅니다. 그러나 정장을 입었더니 말과 행동이 조심스러워 지면서 나도 모르게 어른스럽게 행동하는 것 같습니다. 그리고 정장을 입으니 인물이 달라보인다(?) 라는 '이것은 칭찬한것도~ 안한것도 아녀~' 식의 덕담도 들었습니다. 정장을 입으면 마음이 불편하여 왠지 입기는 싫지만, 일단 입으면 나를 품위있게 바꿔 나의 가치를 높여주는 효과를 가지고 있습니다. 제가 좋아하는.. 사실은 좋아하려고 노력하는 JUnit가 정장과 같은 효과를 가지고 있습니다. JUnit란 단위 테스트를 도와주는 자바 테스트 프레임워크 입니다. 자세히 설명하면 우리는 보통 프로그램을 개발할 .. 더보기
Apache MINA(미나)로 프로토콜 로직 만든 후기 오늘은 프로그래밍 얘기입니다. 블로그를 운영하신다면 자신이 쓴 모든 글들이 사랑스럽겠지만 두고두고 써먹히는 글이 특히 예쁠것입니다. 두고두고 써먹히는 글이라면 검색엔진 유입글을 예로 들 수 있습니다. 계속 검색엔진 상단에 걸려 내 블로그에 유입되는 글들은 기특한 글 들입니다. 제 블로그에도 두고 두고 유입되는 기특한 글이 있는데요. 일단 검색 유입어를 말씀드리면 검색어가 아래와 같습니다. 미나 MINA 산골 MINA 글로 그림 MINA Apache MINA 미나? MINA? 왠 여자 이름..산골이와 미나와 어떤 관계야? 미나가 산골소녀인가? 이런 의문을 가질 수도 있겠지만.. 사실 저 검색어의 실체는 Apache MINA라는 이름을 가진 자바 NIO 기반 네트워크 프레임워크 오픈소스 입니다. 특이한 것은.. 더보기
PHP로 RSS 피드 수집기를 직접 만들어보자. (IBM developerWorks) 블로그 하면 머릿속에 어떤 용어들이 스쳐 지나 가십니까? 블로그를 아는 대부분의 사람들이 RSS란 용어를 얘기할 것입니다. ‘블로그가 RSS를 키웠는가, RSS가 블로그를 키웠는가’ 라는 질문이 생각났습니다. 하나만 선택하라면 대답하기 쉽지 않을 것입니다. 둘다 맞는 말이기 때문입니다. 정보를 구독하는 입장에서의 RSS의 효과는, 하나 하나 원하는 사이트를 방문하지 않고도 자동으로 정보가 갱신될 때마다 RSS 리더기에서 편하게 원하는 정보만을 골라서 구독할 수 있습니다. 정보를 제공하는 입장에서의 RSS효과는, 자신의 정보가 많은 사람들에게 읽힐 수 있는 새롭고 편리한 유통 경로를 제공하여 자신의 정보가 많은 사람들에게 읽힐 수 있게 도와줍니다. 여기까지가 블로그 좀 한다는 분 들이라면 당연히 아는 얘기.. 더보기
자동 빌드 툴 개미의 체질 개선(Ant 리팩토링) 신입사원 시절에 조금이라도 좋다는 자바 기술이 있으면 이것저것 맛을 봤던 기억이 떠올랐습니다. 문제는 대형 할인 매장 시식 코너의 좁쌀만한 음식 먹은 것처럼 맛을 봤다는 것이 문제였습니다. 그래도 당시 유독 나에게 와 닿은 자바기술이 있었으니 바로 ‘리팩토링’ 이라는 객체지향 프로그래밍 기법이었습니다. > 리팩토링(Refactoring) ‘리팩토링’을 내 나름대로 정리하면 ‘구현된 기능은 그대로인 상태에서 내부 소스를 이해하기 쉽게, 객체지향스럽게 개선한다.’ 로 이해하고 있습니다. 요즘 널리 쓰이는 개발자 격언으로 ‘훌륭한 개발자는 남이 알아보기 쉬운 프로그램을 짠다.’ 라는 비슷한 격언이 널리 쓰이고 있습니다. 리팩토링은 개발자의 소중한 미덕인 ‘남이 봐도 이해하기 쉬운 코드 만들기’를 도와 주면서,.. 더보기
사람(개발자)을 위한 자동화 기술에 눈을 뜨다. 블로그에 종종 쓰긴 했지만 현업에서 평범한 자바 개발자에게 요구하는 일은 단순 노가다 작업이 많습니다. 하나의 샘플 업무가 완성되면 나머지 화면을 반복하여 찍어내는 작업~이 SI에서는 많습니다. 친구가 최근에 초대형 금융 SI 프로젝트에 설계부터 참여하게 됐습니다. 친구는 큰 프로젝트에서 많이 배울 것 같다며 기분 좋아했습니다. 저도 “네가 만약 그 프로젝트를 성공적으로 완수 한다면 지금의 너와 그때의 너는 하늘과 땅 차이가 될 것이다.” 며 용기를 북돋아 줬습니다. 그런데 친구가 요즘 하는 말이 초대형 프로젝트는 무엇인가 틀릴 줄 알았는데 역시 단순 노가다 작업인 것 같다며 푸념합니다. 저는 친구가 이해됐습니다. (그래도 친구는 프로 개발자이기 때문에 주어진 임무는 성실히 완수 할 것이고 저도 그렇게 .. 더보기