최근 자바스크립트를 공부하고 있는데요.
방탄AJAX라는 책을 보고 있는데, 여기에는 yahoo로 하는 방법이 있어서 저는 daum으로-_-; prototype을 이용해서 더욱 간결하게(별로 간결하지않아-_-) 만들어봤습니다.

[code]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
 <head id='headId'>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <title>Untitled Document</title>
  <script src="lib/prototype/prototype.js" type="text/javascript"></script>
  <script type="text/javascript" src="daumSearch.js"></script>
 </head>
 <body>
  <h1>Daum Blog Search!</h1>
  <form onsubmit="searchDaum(this.query.value); return false;">
   <fieldset>
    <label>Search for</label>
    <input type="text" name="query" />
    <input type="submit" value="검색" />
   </fieldset>
  </form>
  <div id="results"></div>
 </body>
</html>
[/code]
HTML은 간단합니다. prototype라이브러리를 선언하구요. 이제 작성할 daumSearch.js파일을 선언했군요.
그리고, form부분에서는 query라는 name을 가진 input에 쿼리를 날리면, searchDaum이라는 메소드를 호출하게 되어있습니다.
daumSearch.js를 보도록 합시다.

[code]
function getScript(url)
{
 var scripttag = new Element("script",{
   "type": "text/javascript",
   "src": url});
 var head = $$("head");
 head[0].insert(scripttag);
}

function searchDaum(query)
{    
 var url = "http://apis.daum.net/search/blog?"
 url += "q=" + encodeURIComponent(query);
 url += "&result=10";
 url += "&start=1";
 url += "&output=json";
 url += "&apikey=다음에서 apikey발급받고 넣으세요";
 url += "&callback=parseResponse";
 
 getScript(url);
}

function parseResponse(data)
{
 var children;
 var results = $("results");
 
 while (results.hasChildNodes())
 {
  results.removeChild(results.lastChild);
 }
 
 for (var i=0; i<data.channel.result; i++)
 {
  var title = data.channel.item[i].title;
  var summary = data.channel.item[i].description;
  var url = data.channel.item[i].link;
 
  var link = new Element("a", {"href":url, "target":"_blank"}).update(title);
  var header = new Element("h2").insert(link);
  var para = new Element("p").update(summary);
 
  results.insert(header);
  results.insert(para);
 }
}
[/code]
getScript함수는 해당 url을 head부분에 자바스크립트 선언으로 추가를 하는 역할을 합니다. json은 자바스크립트이기 때문에 페이지에 가져올 수 있습니다. daum검색은 output을 json으로 리턴이 되기 때문에 가능합니다.
그러면 json객체를 사용할 수 있습니다.
callback함수는 parseResponse입니다. 이 함수는 그냥 data부분에 json으로 받게 되는데 그것을 그냥 파싱만 해줘서 엘리먼트를 생성해서 results div에다가 엘리먼트를 추가하는 식으로 되어있습니다.

이상입니다 ^^

사용자 삽입 이미지

 
Posted by 머드초보
,
 

저는 이클립스보다 넷빈즈를 더 좋아합니다-_-;
그 이유는 간단합니다. 이클립스는 IBM에서 지원하고, 넷빈즈는 SUN에서 지원합니다.
저는 IBM을 싫어합니다-_-; 미친 현대차 DB2가 말썽을 일으켜서-_-; 그래서 넷빈즈가 더 좋아요-_-;

회사에서 C를 주로 하는데 넷빈즈에서 C도 잘 돼서 그걸 이용해서 테스트를 하고 있어요 ^^
이클립스는 플러그인으로 C를 설치해야하는데 넷빈즈는 올인원을 제공해요.
게다가 Ruby도 지원하고, EJB, Struts, SOA, UML도 되네-_-; Swing도 마우스로 그릴 수 있는 인터페이스를 제공하고, 최근에는 php까지 지원하는 걸로 알고 있는데...
아....프로파일링인가? 그런 것도 되가지고, 그 성능체크같은 것을 할 수 있어요. 메모리가 얼마나 잡아먹고 뭐 그런거요 ^^ 무료툴 치고는 미친듯이 좋습니다.
또 좋은 것은 tutorial과 충분한 sample을 제공하죠. 그래서 좋긴 한데....
가장 중요한 것은 아직 스프링을 하기에는 이클립스가 더 좋은 것 같습니다-_-;

이번 6.1에서 springframework MVC를 지원하게 되었는데요. beans을 정의하는 xml을 validate를 해주는 것 같군요. class라고 하면 정의한 클래스명이 나오는군요. 하지만, 이클립스 플러그인으로 있는 Spring IDE보다는 좀 안좋아요. Spring IDE는 aop도 체크해주고, 그래프로도 자동으로 그려주는 기능이 있죠 ^^ Validate기능은 말할 것도 없구요 ^^ 그래서 넷빈즈에서 이정도로 지원하는 걸보니 스프링이 대세인가봅니다.

이번에 우리회사에서도 스프링으로 프레임워크를 바꿔서 시도해보고 있던데-_-;

뭐어쨌든, 넷빈즈는 계속 진화하는 모양입니다. 최근 진행하고 있는 듯한 자바원이라는 행사에서도 sun에서 넷빈즈를 그렇게 홍보를 했다죠. 어쨌든 더 진화했으면 좋겠네요 ^^

사용자 삽입 이미지

 
Posted by 머드초보
,
 
우선 켄트 백이라는 분이 쓰신 것 같은데요. 즉 번역책입니다.
번역책을 볼 때 마다 느끼는 점은 번역하면 어디까지 변역을 해야할 것인가가 참 의심스럽습니다. 이 책은 몽땅 번역해버렸습니다. 예를 들자면 private, public, static 이런 것을 그냥 전용, 공용, 정적 이런 식으로 다 번역해버렸습니다. JUnit마저 J유닛이라고 번역했군요.
저한테는 저런 것을 번역한 것보다 그냥 영문으로 표기하는 게 더 읽기가 편한 것 같아요. 물론 사람마다 차이가 있겠지만, 이 책은 누구나 읽기 쉽게 말하려고 그렇게 한 듯 싶습니다.

우선 책의 간략한 내용은 읽기 쉬운 코드를 작성하는 77가지 자바 코딩 비법에 대해서 소개합니다. 즉, 프로그램을 개발할 때 코드를 읽기 쉽게 만들어서 나중에 요구사항변경으로 인해 소스를 수정하거나 업데이트를 해야할 일이 발생할 경우 읽기 쉬운 코드로 개발을 하게 되면 비용을 줄일 수 있는 그런 법을 소개하는 것 같습니다.

우선 초보자가 봐도 된다고 생각하고 보게 되었는데 저한테는 글이 잘 읽어지지 않더군요. 몇 번씩 반복해서 읽어야 이해가 가는 부분도 있었고, 이해가 가지 않는 부분도 좀 많았구요. 그리고, 구체적으로 읽기 쉬운 코드를 가르쳐주는 예는 별로 없는 것 같아요. 그냥 이런 식으로 하면 이런 것 할 때 편하다, 하지만, 이런 것을 하게 되면 불편하다 등의 조언을 알려주는 듯해요.

저 같은 경우 남의 소스코드를 볼 일이 참 많았습니다. 볼 때마다 한숨만 푹푹 나왔습니다-_-; 이건 왜 이렇게 되어있지, 이건 없어도 될 듯 싶은데, 이걸 이렇게 하면 더 효율적일 텐데, 등의 코드를 많이 보게 되었습니다. 그래서 전 읽기 쉬운 코드를 작성하는 법에 참 관심이 많았습니다. 하지만, 저도 그런 코드를 작성하는 법은 참 힘들었던 것 같습니다. 저한테는 확실히 읽기 쉬운데, 상대방이 봤을 때 어떨지 느끼는 점은 틀리거든요.

어쨌든 이 책을 통해 쉬운 코드를 작성해봤으면 싶었는데 책이 내용이 좀 어렵네요-_-;
초보자가 읽기에는 좀 힘든 것 같아요 ^^ 그래도 어느정도 도움이 된 듯 싶네요.
마지막에 부록에는 성능측정 이 있었는데, 아직 읽어보지는 않았지만 예전에 보았던 자바성능을 결정짓는 어쩌구 책에서 본 성능체크와 비슷한 것 같네요.

마지막 부분에 보면 JUnit을 이 사람이 개발한 것 같은데-_-; 어쨌든 테스트 기반 개발에 좀 관심을 가지면서 개발하려고 노력중이에요 ^^ 모두 테스트를 만들도록 합시다 ^^
그리고 남들 고생시키지 않게 하기위해서 읽기 쉬운 코드를 작성하도록 합시다 ^^
사용자 삽입 이미지
 
Posted by 머드초보
,
 

우와 무료도 있는 줄 몰랐네요 ^^
SUN에서 개발하는 것 같은데... SUN이 먹은 것 같기도 하고-_-;
어쨌든 우연히 올블로그에서 삽질하던 중 어떤분의 포스트를 보게 되었습니다. VirtualBox에 관한 글이였는데 뭐지하고 클릭해봤는데 VMWare와 같은 가상화하는 프로그램이라고 하더군요.
게다가 무료인 듯 하구요. 그래서 설치를 해봤습니다.
제일 만만하고 설치하기 쉬운 우분투(Ubuntu)를 설치해봤습니다 ^^
솔라리스를 설치하려고 했는데 너무 오래걸리네요-_-; 하다가 포기 ^^

VMWare보다 좋은게 한글판입니다 ^^ 근데 뭐 한글이 아니어도 사용하는데에는 지장이 없습니다 ^^

처음에 좀 어이가 없었던 것이-_-;
윈도우 자동설치 해버리면 키보드가 101키로 잡혀있습니다. 즉, 오른쪽 Ctrl(컨트롤)을 사용하지 못합니다. 근데 이 VirtualBox에서는 현재 실행 하고 있는 OS에 마우스를 클릭해서 잡게 된 뒤 다시 현재 윈도우로 돌아오려면 host키라는 것을 눌러야합니다. 디폴트가 Right Ctrl입니다-_-; 안눌러져서 한참 고생했습니다-_-;
어쨌든, 실행하기 전에 키보드를 103~106키로 바꿔주세요 ^^

그리고, VMWare처럼 실행되고 있는 가상OS에 클릭해서 화면을 잡는데요. 이걸 VMWare에서는 VMWare Tools인가? 이거 설치하면 그냥 가기만 해도 선택이 되고, 화면을 벗어나기만 해도 벗어나게 되는데요. 이것도 비슷한 놈이 있습니다. 실행하고 있는 가상OS에서 메뉴를 보시면 장치 -> 게스트 확장 설치를 클릭하시면 cd가 들어가는데요. root권한으로 들어가서 VBoxLinuxAdditons.run을 실행하면 됩니다. 이거를 해야지 해상도를 변경할 수 있어요. 해상도가 처음에는 800x600까지 밖에 안 될 껍니다 ^^

써본 결과 속도는 왠지 VMWare보다 더 느린 것 같아요. 아직 뭐 실행밖에 안해봤지만 ^^
좀 더 삽질해봐야겠네요 ^^

사용자 삽입 이미지

우분투에서 firefox띄우고 제 블로그접속해봤습니다^^


 
Posted by 머드초보
,
 

KSUG는 Korea Spring User Group이라고 하는 국내의 스프링 유저 모임입니다.
이번에는 자바지기로 유명한 박재성씨가 세미나를 준비했네요.
박재성씨는 JCO 컨퍼런스에서 강연을 들은 적이 있고, 그 분이 쓴 책인 스프링 워크북과 스트럿츠 워크북을 본 적이 있는데요. 이 분이 주장하는 것은 요약하면 그런 것 같습니다.
좀 더 멋진 환경에서 개발해보자! 인 것 같습니다.
예전에 오픈소스 컨퍼런스에서 봤을 때도 오픈소스를 활용하여 더욱 나은 개발환경을 구축하는 법에 대해서 강의를 하였습니다. 그렇게 좋은 오픈소스가 있는 줄 모르고, 뭐든 수동으로 다 처리하고 그랬었습니다. 하지만 앞으로는 더욱 나은 개발환경을 삽질해보도록 노력해봐야겠습니다. 스프링프레임워크도 그런 개념에서 나온 거니까요^^

우선 첫시간인 사용자 스토리를 기반으로 한 요구사항 분석이였는데, 박재성씨가 NHN에서 일하다보니 NHN은 이렇게 일을 하는구나 라는 생각을 들게 만들더군요. 우선 사진을 찍어서 보여주셨는데 왕따시만한 화이트보드가 있더군요. 거기다가 모두에 대한 업무흐름을 다 그리는 듯 하군요. 우리회사에는 그런거 없는데^^
그리고, 요구사항을 포스트잇에 적고, 뭐 이렇게 하더니 일정산정을 하더군요.
보통 일정산정은 고객이 결정하는데 ^^ 언제까지 하라고 하면 하면 되는겁니다 핫핫-_-;
그리고, 저는 작은 프로젝트만 해와서 그런지 그냥 코딩에 들어갑니다-_-; 정말 나쁜습관입니다-_-; 앞으로 많이 고치려고 노력하고 있는데 잘안되네요. 이번에 기회를 삼아 고쳤으면 하네요.

이슈관리 시스템인 Jira라고 하는 것을 보여주셨는데, 박재성씨 말을 들어보면 참 편하고 유용할 것이라고 생각이 들긴 들지만, 전체다 적용하고 모두를 이해시키는데는 참 오랜시간이 걸릴 듯 합니다. 그리고 한번에 너무 많은 것을 보여주셔서 약간 혼란이 있었네요 ^^ 너무 신기한 것이 많아서 ^^ 박재성씨도 얘기했지만, 이 세미나를 통해 모든 것을 다 배워가는 것보다 약간의 힌트라도 얻고 갔으면 한다고 얘기를 하셨어요. 그 힌트를 가지고 삽질하는 것은 우리들의 몫이 되겠죠 ^^ 어쨌든 요구사항 분석은...잘 안하는데....-_-; 무조건 코딩-_-; 고칩시다-_-;

Eclipse를 기반으로 한 통합개발환경 시간에는 이슈관리툴을 Eclipse에 연동해서 보여준 것 같은데요. Mylyn인가?-_-; 어쨌든 완전 모르는 겁니다. Maven이라는 것도 소개했는데 얘기만 들었지 써보지는 않았어요. ANT만 쓰고 있어서. 근데 MAVEN에 대해서 얘기를 들으니 ANT에서 기능을 더 업그레드한 개념이라고 하네요. 라이브러리같은 것을 자동으로 업데이트가 되는 듯합니다. 보통 라이브러리 버전이 업데이트가 되면 그것을 다시 받아서 JAR로 추가하고 그랬어야 했는데 MAVEN을 이용하면 버전 숫자만 바꿔주면 가능하다고 합니다. Eclipse플러그인으로 제공한다고 하네요 ^^

아.....그리고 로컬에 개발DB를 하나 둔다고 말씀하셨는데, 음 그거 좀 공감이 갑니다. DB서버가 하나면, 스키마변경하면 다른 사람 작업에 영향을 미치게 됩니다. 전에 제가 개발서버에 있는 DB와 연동해서 개발하는데 저쪽에서 갑자기 칼럼을 바꿔버려서 제가 개발해놓은 프로그램이 잘 돌아가던게 안 돌아갔던 일이 있었어요.

어쨌든, 참 모르는 말 투성이만 듣고 온 듯 합니다. 마지막시간인 Teamcity CI툴을 활용한 지속적인 통합 방법에 대해서 얘기를 했습니다. Teamcity라는 것도 처음 들어봅니다-_-; 대충 얘기를 들어보니 코드를 서브버전에 커밋한다음에 팀시티가 커밋된 것을 확인하고 빌드를 하고 이 코드에 대한 리포트를 작성해서 개발자들에게 알려주는 듯합니다. 완전 자동화를 위한 툴인 듯 합니다. CI(Continuous Integration)가 지속적인 통합이라는 뜻으로 계속 통합한다는 뜻입니다-_-; 이것을 이용해서 협업도 가능하게 하고 자동화도 가능하게 하려고 하는 것같은데, 아직은 잘 모르겠습니다 ^^ 많은 ci툴중에 팀시티를 도입한 이유중 하나가 시스템 트레이로 리포트를 알려준다고 하네요^^
뭐 빌드가 깨지면, 바로바로 알려주고, 소스에 대한 피드백도 받고 그러는 것 같은데, 이렇게 멋진 툴이 있는지도 몰랐네요 ^^ 무조건 ant로 빌드하고 업로드했는데 ^^

아.....그리고, 테스트를 만드는 것을 강조했는데, 테스트만드는 것은 왠지 정말 귀찮은 일입니다. 박재성씨도 그것을 잘 아는지 테스트 잘 안만드는거 알고 있더군요 ^^ 테스트를 만드는 습관을 들여야하겠군요. 테스트도 자동화에 추가해서 할 수 있다고 하네요.

아.....그리고, 마지막에 신기한 툴을 하나 보여줬는데 와티즈인가?-_-; 암튼 잘 못들었는데요. 실제 환경에서 테스트할 수 있게 도와주는 것 같은데. 만약 로그인 하는 화면이라면 웹을 띄우고, 로그인을 하는 테스트를 자동으로 해버리는 툴같았는데-_-; 너무 빨리 지나가서 볼 수가 없었어요 ^^ 찾아봐야겠군요 ^^

마지막으로 참 재미있었던 것은 NHN에서는 10시20분에 회의를 하는데 1분전에 쥬얼리의 원모어타임이 나오는 듯 합니다-_-; 그리고, 퇴근시에는 빅뱅의 마지막인사를.....-_-; 어쨌든 박재성이라는 분은 어두운 개발자 환경의 빛을 보여주려고 많은 노력을 하시는 것 같네요 ^^

오늘 가서 아무 것도 몰랐지만, 많은 힌트를 얻을 수 있었던 것 같습니다. 근데 강의가 너무 빨라서 ㅠㅠ 앞으로 이런 세미나를 자주 참석해서 많은 것을 배웠으면 하는 바램입니다. 이것저것 공부해야할 것이 많이 늘었네요 ^^

 
Posted by 머드초보
,