'2008/05'에 해당되는 글 4건
- 2008/05/25 일본에서 풋살 경기.
- 2008/05/18 동경에서 치바 해안도로 자전거 여행
- 2008/05/15 AJAX OR 맵핑 및 유틸리티.
- 2008/05/02 JAVASCRIPT 해당 폼 값을 전부 만들어주는 스크립트
체질이 문제인지 한국에서 있을땐 밥도 많이 안먹고 술도 5/1로 줄었는데
반찬이 없어서 그런지 살이 더 찌는지 모르겠다 ㅡㅡ;;
아무튼 축구 시합. 시합이라기 보다는 몸 푸는정도 ㅎㅎ
원래는 여기가 수영장이었다 수영장을 개조해서 풋살경기장을 만든....
오늘은 비가 왔기 때문에 실내로 예약을 했다고 한다. 2시간해서 한사람당 1800~2000엔 정도 들어간다.
인조잔디 이긴한데 여기서 처음 뛴날에 발을 다친 계기가 되었다.
안미끌어져서 좀 위험하긴했다 ㅎㅎ
상패를 보면 한일 풋샬 경기 상패도 있었다..
일본은 여자도 운동을 정말 많이한다. 우리나라여자는 연약한게 최고라고 비실하고 땀흘리는걸 싫어하는 사람이
많으니....
암튼 즐기면서 하는 축구 잼있고 운동도 하고 좋다..ㅎㅎ
사진기가 후져서 화질은 별로 안좋다...
휴~~~ 살은 언제 빠질런지..
아래의 지도에 동경(신오쿠보) 에서 9시에 출발해서. 치바의 남쪽해안. 시라하마에 갔다.
동경에서 시라하마까지의 거리는 대략 200키로정도 예상을 하고 가는데
너무 시간이 지체되어서 맨 마지막 에 있는 해안도로는 패스했다.
그래서 실제 이동된 거리를 재어보니 총 183키로미터 정도 됬다.
아침 9시 출발 밤 9시 도착 총 12시간 정도 걸렸다 ㅠㅠ
같이 갔던 사람들과 휴식을 취하는중.
날씨가 전체적으로 흐리고 자전거 타기에는 크게 무리가 없는 날씨였다.
네이게이션으로 위치 확인중.. 일본은 핸드폰으로 네비게이션 활용도가 높으니 이점이 참 편리하다 ㅎㅎ
음... 최악의 선택거리 ㅡㅡ;
옆자리에 나온거보고 우와! 맛있겠다고 생각하면서 고른 이것!!!
여행중에 먹은것중에 최악 ㅡㅡ;; 덴뿌라돈 튀김하면 재료도 중요하지만 무엇보다 튀기는 기름이 생명인데
정말 먹는 내내 느끼했다. 아 회덮밥이나 먹을껄 무지 후회햇다는 ㅡㅡ;;
음 사람도 너무많았고 유명한 곳인지 모르겠지만 스타들의 싸인들이 많이 있었다.
메뉴와 싸인들...
가게안에서 전망좋은 경치를 보면서 음식을 먹을수 있다.
이곳에서의 우리만의 질주의 쾌감을 느꼈다 다른차들이 달릴수 없을때 질주하는 우리 레이싱팀 ㅡㅡ;;
이곳은 우리나라의 서해안 안면도? 정도의 분위기가 비슷했다.
아~ 카메라를 사야하는지 사진이 전부 흔들렸다 .ㅠㅠ
자금문제로 DSLR을 정리하고나니 그리워진다 ..
아래는 우리가 묶었던 펜션인데 처음에는 콘도나 리조트 호텔에서 묶으려고 햇는데
역시 골든위크때 인지 전부 객실이 없었다.
그래서 가다가 찾은 펜션. 1인당 4천엔에 (2인1실) 잠을 청한 곳이다.
유일하게 이곳에 손님이 우리뿐이었는데 주인아주머니께서 우리보고 귀신인지 알았다고 하셧다..
이번 여행은 왠지 모를 시원한 바람을 맞으며 그냥 질주인 여행이 모토가 된 듯 하다.
원래 나의 생각은 느긋하게 사진도 많이 찍고 좋은곳도 가고 그러는것이 좋은데 ㅎㅎㅎ
휴 살좀 빼야겠다. 일본와서 살이 10키로나 쪘다는.. ㅡㅡ;;
하지 않았던 운동도 하는데다 아~~ 아무리봐도 무리였다 ㅠㅠ
휴식을 취하며 밥을 먹는중. 상태가 정말 아니다 ㅡㅡ;
한 대형 마트점 앞에 휴식을 취하는중 ..
이것은 필요가 해서 구입한것인데. 패드 대용이다.
원래 자전거 슈트는 전립선쪽에 패드가 있는데 나머지 사람은 패드가 없어서 죽을맛인지
대용으로 생리대를 착용한 것이다 ㅡㅡ;;
패드있는 나도 아픈데 ㅋㅋ
원래 자전거 여행을 할때 사진을 많이 찍는 편인데. 아쉽게도 좋은사진 들이 많이 없다.
도쿄에 막 들어와서 무릎이 고장났다. ㅠㅠ 페달일 밝는 순간. 무릎이 아파서 도저히 자전거를 탈수없어서
옷을 갈아입구 나는 전철을 타고 집으로 돌아왔다.
총 자전거 이동 거리는 380 km 음..
도쿄에 돌아올때는 국도를 이용했는데도 정말 위험햇다 ㅡㅡ;; 옆에 고속도로가있고 차가 달리는 도로는
올림픽 도로 수준이다. 분명히 국도는 맞는데. ㅠㅠ
다행하게도 도쿄안에서 무릎이 고장난걸 감사히 여기며 무사히 여행을 마칠수 있었다.^^
AJAX를 많이 사용을 하기때문에 일일이 코드를 작성하는 귀차니즘이 발생해서
최대한 JAVA 처럼 사용하게끔 좋은 유틸리티를 소개하고자 한다.
JSON 등 이미 만들어진 유틸이 있지만 내스타일이 아니어서 ^^;
그나마 맘에드는게 YAHOO 의 YUI ??
머 아직 시간도 있는데다 급한것도 아니어서 내스타일대로 만드는것도 나쁠거없으니 하고
만들었다.
물론 오늘 만든 따끈한 소스이다.
거의 모든 페이지가 AJAX로 돌아가기때문에 코딩의 간소하겸 XML 데이터를 쉽게 가져오고
편리하게 사용하기 위해서 만들었다.
추가되었으면 좋겠다는 기능이나. 개선점을 알려주면 수정 보완 하겠습니다.
먼저 XML 데이터
/duronex/xml/data.xml 이 존재한다고 가정한다.
해당 xml의 내용은 아래와 같다.
주의 할점은 해당 값 사이에 값이 없더라도 CDATA를 해줘야한다.
NULL 처리를 안해서 .. ^^;;
---------------------------------------------------------------------------------
data.xml : ajax에 사용될 data
---------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?><root>
<RoomLists>
<test1><![CDATA[1_1]]></test1>
<test2><![CDATA[1_2]]></test2>
<test3><![CDATA[1_3]]></test3>
</RoomLists>
<RoomLists>
<test1><![CDATA[2_1]]></test1>
<test2><![CDATA[2_2]]></test2>
<test3><![CDATA[2_3]]></test3>
</RoomLists>
</root>
---------------------------------------------------------------------------------
소스를 보면 알다시피 startAjax 함수에서 handlerFunction은 성공했을때 핸들링할 함수
errorFunction은 실패했을때 핸들링 하는 함수명이다.
getAjaxList함수는 특정 XML에 대한 데이터를 가져올때 사용되는데
List형이 아닌것도 그냥 귀찮아서 ㅡㅡ;;
1개만있을때도 배열로 반환해주니깐 arr[0] 으로 map으로 받아서 사용하자 ^^;
getAjaxList 함수에서 formBeanObj는 xml데이터의 Loop될 노드 네이밍 안의 노드네임이다.
xDomLoopNodeName 는 Loop될 즉 반복되는 노드명이다.
---------------------------------------------------------------------------------
Ajax.js : Ajax 유틸이다
---------------------------------------------------------------------------------
function startAjax(uri, query, handlerFunction, errorFunction){
var contentType = "application/x-www-form-urlencoded; charset=UTF-8";
if (errorFunction==null) errorFunction = function () {};
if (r)
{
r.onreadystatechange = function(){
//alert(r.readyState);
if (r.readyState == 4){
//alert(r.status);
if (r.status == 200){
xmlDoc = r.responseXML;
//alert(xmlDoc);
txt = r.responseText;
handlerFunction(txt, xmlDoc);
//handlerFunction(txt, r);
}
else{
errorFunction();
}
}
}
r.open("POST", uri, true);
r.setRequestHeader("Content-Type", contentType);
r.send(query);
return true;
}
else
{
errorFunction();
return false;
}
}
var lst = new Array();
var loopObj = xDom.getElementsByTagName(xDomLoopNodeName)
//xDom loop
for(var i=0; i<loopObj.length; i++){
var map = new Map();
//form bean loop
for(var j=0; j<formBeanObj.length; j++){
map.put(formBeanObj[j], loopObj[i].getElementsByTagName(formBeanObj[j])[0].childNodes[0].nodeValue);
}
lst[lst.length] = map
}
return lst
}
function Map(){
this.pointer = 0;
for(var i=0; i< this._array.length; i++){
if(key == this._array[i][0])
{
return i;
}
}
return -1;
}
this.put = function(key,value){
var index = this._getIndexByKey(key)
var newArray = new Array();
newArray[0] = key;
newArray[1] = value;
this._array[this._array.length] = newArray;
}
else{
this._array[index][1] = value;
}
}
for(var i=0; i < this._array.length; i++){
if(this._array[i][0] == key)
return this._array[i][1];
}
}
var result;
if(this._array.length > this.pointer){
result = true;
}
else{
result = false;
}
this.pointer++;
}
return this._array.length;
}
return this._array[this.pointer -1][0];
}
return this._array[this.pointer -1][1];
}
}
---------------------------------------------------------------------------------
formBean.js : OR 맵핑할 폼빈
---------------------------------------------------------------------------------
function getTestFB(){
var arr = new Array("test1","test2","test3");
return arr;
}
---------------------------------------------------------------------------------
xml 데이터가 반복되는 노드명이 RoomLists으로 두번돈다.
lst 가 반환되는 값은 Array 이며 그안의 값은 Map 형태로 되어있다
- 물론 실질적으로 배열아에 또 다른 배열이 있는것이지만-
또한 파라미터에 대한 노가다 작업또한
http://duronex.tistory.com/5 여기에 작성된 함수를 이용해서 자동으로 가져 올수있다.
---------------------------------------------------------------------------------
test.html : ajax 사용예
---------------------------------------------------------------------------------
<script language="javascript" src="/duronex/js/Ajax.js"></script>
<script language="javascript" src="/duronex/js/formBean.js"></script>
<script language="javascript">
function getXmlData(){
var params = "파라미터들.";
var url = "/duronex/xml/data.xml";
startAjax(url, params, testSucc, testErr);
}
function testSucc(txt, xDom){
var duronexFB = getTestFB();
var lst = getAjaxList(duronexFB, xDom, "RoomLists");
alert(lst[1].get("test1"));
}
function testErr(){
alert("error");
}
</script>
잘못된 부분이 있으면 덧글을 남겨주세요.^^
AJAX 쓸때 파라미터 넘길때 매번 하드코딩하기 귀찮아서 만든 함수입니다.
함수에 해당 폼 Object 를 넘기시면되고요 폼안의 input, select, textare 등등 폼의 값을
인코딩해서 파라미터로 반환해 줍니다.
물론 IE / 파폭 / 사파리 / 오페라 지원 되겠죠?
잘못된 부분 있으면 알려주세요 . ^^
function getFormParams(objForm){
var frm = objForm;
var frmCnt = 0;
var params = "";
//INPUT Tag Object Param
var inputObjects = frm.getElementsByTagName("input");
frmCnt = inputObjects.length;
for(var i=0; i<frmCnt; i++){
var inputObj = inputObjects[i];
if( inputObj.value && inputObj.name ){
if (inputObj.type == "text" || inputObj.type == "hidden" || inputObj.type == "password") {
params += inputObj.name + "=" + encodeURIComponent(inputObj.value) + "&" ;
}
else if (inputObj.type == "radio" || inputObj.type == "checkbox") {
if(inputObj.checked){
params += inputObj.name + "=" + encodeURIComponent(inputObj.value) + "&";
}
}
}
}
//SELECT Tag Object Param
var selectObjects = frm.getElementsByTagName("select");
frmCnt = selectObjects.length;
for(var i=0; i<frmCnt; i++){
var selectObj = selectObjects[i];
if (selectObj.name && selectObj.value) {
params += selectObj.name + "=" + encodeURIComponent(selectObj.value) + "&";
}
}
//TEXTAREA Tag Object Param
var textareaObjects = frm.getElementsByTagName("textarea");
frmCnt = textareaObjects.length;
for(var i=0; i<frmCnt; i++){
var textareaObj = textareaObjects[i];
if (textareaObj.name && textareaObj.value) {
params += textareaObj.name + "=" + encodeURIComponent(textareaObj.value) + "&";
}
}
params += "1=1";
//alert(params);
return params;
}

Prev
Rss Feed