2008년 3월 31일 월요일

첫 프로그램

[Flash] /tt/attachment/XEBjsb1h9S.swf



검색 하면 flickr에서 이미지 검색 ^^

xls문서 html로 저장

내용은 html이고 확장자는 xls인 경우.
html2xls.pl 에서 바이너리로 변경이 가능 함. sheet명, 색상등을 셋팅할 수 있음

<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">
헤더 설정
<head>
<meta http-equiv=Content-Type content=\"text/html; charset=utf-8\">
<xml>
<x:ExcelWorkbook>
  <x:ExcelWorksheets>
  <x:ExcelWorksheet>
   <x:Name>Sheet1</x:Name>
   <x:WorksheetOptions>
    <x:Selected/>
   </x:WorksheetOptions>
  </x:ExcelWorksheet>
  </x:ExcelWorksheets>
</x:ExcelWorkbook>
</xml>
</head>
utf-8 로 줄 경우 text editor에서는 깨져 보이지만 실제 excel로 열면 잘 열린다.
특수 문자나 오류를 줄일 수 있기 때문에 utf-8이 최근 선호 되고 있다.

<tr>
                  <td style='mso-number-format:\"\@\"'>$show_date</td>
                  <td style='mso-number-format:\"\@\"'>$supply_name</td>
                  <td style='mso-number-format:\"\@\"'>[묶음]$data_packed[product_id]</td>
                  <td style='mso-number-format:\"\@\"'>$data_packed[name]</td>
                  <td style='mso-number-format:\"\@\"'>$data_packed[brand]</td>
                  <td style='mso-number-format:\"\@\"'>$data_packed[options]</td>
                  <td style='mso-number-format:\"\@\"'>&nbsp;</td>
                  <td style='mso-number-format:\"\@\"'>$list[qty]</td>
                </tr>
내용은 위와 같은 식으로 오면 됨. mso-number-format으로 스타일 지정





2008년 3월 30일 일요일

고임금 장기 근속자를 어찌 하오리까 [펌글]

joins뉴스 중 다음과 같은 기사가 있다, 빠른 성장이라....어떻게 해야 할까?
5년에 10개의 신 상품을 만들고자 하는 나의 계획이 맞는 것일까?

Q: 우리 회사는 소프트웨어 업체로 250명이 일하고 있습니다. 그런데 터줏대감 같은 직원들 때문에 고민입니다. 그들은 나날이 복잡해지는 환경에 적응하지 못하고 있습니다. 임금도 너무 높아 부담스럽습니다. 이런 장기 근속자들을 어떻게 해야 할까요. (미국 캘리포니아주 패서디나에서 독자)

A: 해결책은 회사를 빠르게 성장시키는 수밖에 없습니다. 아니면 회사의 리더인 당신과 터줏대감 직원들은 침몰하는 배처럼 운명을 같이할 것입니다. 겁주려는 게 아닙니다. 몇 년 아니면 몇십 년 동안 꾸준히 성장해온 기업이 비슷한 문제 때문에 무너져 내린 경우가 꽤 있습니다. 이런 기업들은 운명의 순간까지 여기저기를 고쳐 보고 경쟁력 강화 프로그램을 실시해 보는 등 갖은 노력을 다합니다. 하지만 회사 규모를 줄이는 방식으로는 터줏대감 직원들이 일으키는 문제를 해결할 수 없습니다. 빠르게 성장하는 길만이 해결책입니다.

빠른 성장은 회사가 안고 있는 거의 모든 문제를 해결하는 만병통치약입니다. 따라서 당신은 지금 당장 성장 전략을 짜야 합니다. 장기 근속자의 능력을 최대한 활용하는 길을 찾아야 합니다. 물론 이렇게 하기 위해서는 적잖은 비용이 들어가고 시간도 걸리기 마련입니다. 그런데도 기대했던 수확을 거둬들이지 못하는 경우가 종종 있습니다.

이런 단점과 비용이 싫다면 당신은 두둑한 퇴직금을 주고 그들을 내보낼 수 있습니다.

그러나 장기 근속자들은 귀중하고 때로는 누구도 대신할 수 없는 능력을 보유하고 있습니다. 단골 고객을 확보하고 있거나 풍부한 경험을 바탕으로 뛰어난 응용력을 갖추고 있는 경우가 흔합니다. 그들이 나가는 순간 해당 부문의 실적이 급격히 줄어들 수도 있습니다. 결과적으로 당신이 선택할 수 있는 길은 하나밖에 없습니다. 터줏대감들에게 주는 많은 월급 이상으로 그들의 능력을 활용하기 위해 고도 성장 전략을 짜는 것이지요.

어떻게 하면 회사가 빠르게 성장할 수 있을까요. 먼저 자체 역량을 바탕으로 한 유기적 성장 전략을 추구하는 길을 생각해 볼 수 있습니다. 새로운 제품과 서비스를 개발해 성장하는 전략입니다. 하지만 당신 회사의 현재 역량으로 가능한 범위를 벗어나 과속하면 부작용이 따르기 마련입니다.

다음은 성장을 사오는 방식입니다. 다른 회사를 인수합병(M&A)하는 것이지요. 당신 회
사 같은 작은 기업은 다른 회사를 사들이는 데 망설일 것입니다. 하지만 작은 회사일수록 조직력이 우수하고 사내 분위기도 끈끈해 다른 회사를 사들여 기존 조직과 융합시키는 데 탁월한 능력을 발휘합니다. 게다가 성장률이 정체된 중견 기업의 구성원들은 M&A로 주인이 바뀌길 내심 환영하는 만큼 M&A 여건도 좋은 편입니다. 이런 회사를 사들여 적극적으로 통합하면 변화와 성장을 동시에 추진할 수 있습니다. 이런 식으로 회사의 성장 본능을 불러일으키면 노장 직원들을 내보내는 방식보다 더 좋은 결과를 볼 수 있습니다. 이는 비즈니스 리더인 당신뿐 아니라 터줏대감 직원들에게도 좋은 일입니다.

최근에 김태훈이란 사람이 자꾸 눈에 띄네

김태훈이란 사람이 있다, 문화평론가라고 하는데 오락 프로에도 나오고 라디오에도 나오는것 같다.
헌데 참 마음에 든다.

예전에 문화평론가라면 좋은말만 하고 돌려 말하곤 했는데, 이 인간은 그렇지 않은것 같다.
최강희 김태훈의 쾌변이란 방송이 있는데 숙명이란 영화를 평할때 저급하진 않지만 실랄한 분석을 하는데 참 나랑 코드가 맞는것 같다.

쾌변 지난 방송 듣기

다 들어봐야겠네, 100볼트짜리를 220볼트에 꼽을 순 없다. ^^; 녀석 이런 말을 하네..

2008년 3월 27일 목요일

irc사용법

참여 /join #방이름
나가기 /part

흠....이름 바꾸기는 어떻게 할까?

/nick 이름  이렇게 하는 것 같음

[jquery] table row 삭제

<table>
    <tr id="_tr1">
         <td>test</td>
    </tr>
</table>

<script language='javascript'>
    $("#_tr1").remove()
</script>


remove() 를 사용해서 삭제 할 수 있음

$("table").each( function(){
   // 로직
});
을 사용해서 삭제 하는것도 가능

//==================================================
<tr onClick='javascript:del(this)'>
일 경우라면
$(this).remove() 또는 $(this).get().remove()가 가능할 것 같음
 

2008년 3월 24일 월요일

jQuery post sample

var params = {}
                params['template'] = "EG00";
                params['action']   = "get_list";

                // param parameters
                // str_query
                params = build_params( "#mail_menu .search_form", params );

                $.get("function.htm",  params,  
                        function(data){    
                                // $("#menu_list").html( data );
                                $("#menu_list").html( $("#list", data).html() );
                                $("#msg").fadeOut();
                        }
                );

모 이런 식으로 하고 있음


2008년 3월 22일 토요일

TabPanel에 IframePanel 넣기

테스트 해보지는 않았는데 나중에 쓸 일이 있을 것 같아서 기록해 둠..
아래 원 정보의 사이트가 있음

<script type="text/javascript" src="miframe.js"></script>  
<script type="text/javascript" src="miframe-min.js"></script>  

Ext.reg('iframepanel', Ext.ux.ManagedIframePanel);

var obj = mainPanel.add(
       {
             id : 'tab-panel-' + Ext.id(),
             title : 'iframe-' + Ext.id(),
             xtype : 'iframepanel',
             closable : true,
             loadMask : {msg:'로딩중...'},
             //required so nonIE (of all things) wont refresh the iframe object when hidden
             style : {position:(Ext.isIE?'relative':'absolute')},
             hideMode : (Ext.isIE?'display':'visibility'),

             tbar : [{
                         text : 'Return',
                        handler : function(){
                             var panel = mainPanel.getActiveTab();
                            if(panel){
                                 panel.loadMask.msg = '지금 로딩중...';
                                 panel.setSrc();
                           }
                        }
                    },'-',{
                        text : 'Print',
                        handler: function(){
                       try{
                          mainPanel.getActiveTab().iframe.print();
                       }catch(ex){
                           Ext.Msg. 로만 해주시고

http://extjs.com/forum/showthread.php?t=16590&highlight=iframe
http://x1004.com/Home/tabid/36/forumid/33/postid/78/scope/posts/language/ko-KR/Default.aspx

keydown event 처리

document.onkeydown = keypressed;

function keypressed()
{
   if (event.keyCode == 13)
       check_submit();
}

// javascript에서 enter키를 칠 경우 check_submit을 실행함

2008년 3월 21일 금요일

Tab구현 예제

사용자 삽입 이미지





단순 Tab구현
Ext.onReady(function(){
    var tabs = new Ext.TabPanel({
        renderTo: Ext.getBody(),
        activeTab: 0,
        items: [{
            title: 'Tab 1',
            html: 'A simple tab'
        },{
            title: 'Tab 2',
            html: 'Another one',
            closable:true
        }],
        plugins: new Ext.ux.TabCloseMenu()
    });
})


close를 위한 lib include



sample: http://3pl.ezadmin.co.kr/extjs/tab_test.html

2008년 3월 19일 수요일

메시지 창 설정

// Basic alert: Ext.Msg.alert('Status', 'Changes saved successfully.'); // Prompt for user data and process the result using a callback: Ext.Msg.prompt('Name', 'Please enter your name:', function(btn, text){ if (btn == 'ok'){ // process text value and close... } }); // Show a dialog using config options: Ext.Msg.show({ title:'Save Changes?', msg: 'You are closing a tab that has unsaved changes. Would you like to save your changes?', buttons: Ext.Msg.YESNOCANCEL, fn: processResult, animEl: 'elId', icon: Ext.MessageBox.QUESTION });



















processResult 는 javascript function명 참조: http://extjs.com/deploy/dev/docs/



Grid의 가로 사이즈 조절

.setWidth property를 사용함
grid를 새로 그릴 필요 없이 자동으로 적용된다.

grid.setWidth( grid_width );

/////////////////////////////////////////////
// jQuery이용한 windows사이즈 변화에 따른 grid사이즈 변경
var m_resizeCnt=0;
$(document).ready(function() {
    $( window ).resize( _resize );
    _resize();
});

function _resize()
{
    grid_width = $("#div_container").width() - 24;
    // alert ( "resize: " + grid_width );
    if ( m_resizeCnt > 20 )    // 너무 자주 변하는 것을 방지 하기 위해~~
    {
        // grid.show();
        grid.setWidth( grid_width );
        m_resizeCnt = 0;
    }
    else
    {
        m_resizeCnt = m_resizeCnt + 1;
    }
}

2008년 3월 17일 월요일

혜승이의 목욕

6살짜리 딸래미 혜승이를 목욕시켰다.
간만에 시키는 혜승이 목욕이었다.
이제는 다 커서 머리를 감길때 눈에 물이 튀어도 잘 참는다, 어릴땐 그렇게 무서워 하더니 내 어릴적도 그렇게 머리 감는게 힘들었는데 우리 애들은 잘도 참는다.

"아빠 내가 앉아 있을테니 따뜻한 물을 위에서 틀어줘"
"아빠 난 목욕이 좋아 따뜻하거든"
"아빠 얼굴엔 비눗칠 안 할꺼야 볼만 할꺼야"
"이모랑 난 두번씩 몸에다 비눗칠 해"

애기를 씻기면서 참으로 행복하다는 생각을 했다, '너희는 지금 이곳이 천국이구나' 하고 에덴 동산에 살고 있는 혜승이 익현이, 인간은 언제부터 스스로를 불행하다 생각하고 만족할 줄 모르는 삶을 살게 되는걸까? 이렇틋 행복한 혜승이 익현인 계속 행복한 일만 있을까? 아픔도 좌절도 괴로움도 겪어가며 어른이 되겠지.. 내 아버지 어머니께서도 날 키우며 이런 생각에 잠기셨을까?

참으로 행복한 인생이다. 애기들이 있어서 너무 좋다~

윈도우 띄우기

var win;
var v1 = "haha";
if ( !win )
        {
        // input item 생성
        // combo box가 있고
        // label이 있지 않을까?
        var nav = new Ext.FormPanel({
            labelWidth: 100,
            frame:true,
            width: 300,
            collapsible: true,
            defaultType: 'textfield',
            items:[{
                fieldLabel:'요청개수',
                name:'txt_stock_in',
                allowBlank: true
            } ]
        });

        /////////////////////////////////////////////////
        // window 생성
        win = new Ext.Window({
            el:'win_req_in',
            layout:'fit',
            width:300,
            height:300,
            closable:false,
            resizable:false,
            plain: true,
            items: [nav],
            buttons: [{
                text:'Submit',
                handler: function(){
                    Ext.Msg.alert ('OK', '저장?' );
                    Ext.Msg.prompt('Name', 'Please enter your name:', function(btn, text){
                            if (btn == 'ok'){
                        }
                    });

                    //win.hide();
                }
            },{
                text: 'Close',
                handler: function(){
                    win.hide();
                }
            }]
        });
    }
    win.show();
</script>

<div id="win_req_in" class="x-hidden">
    <div class="x-window-header">Hello Dialog</div>
</div>






return을 json으로 받을 경우 처리

var jsonData = Ext.util.JSON.decode(stringData);

이거 이상 뭐 더 필요한게 없네 그려~

2008년 3월 16일 일요일

[부족전쟁] 제대로된 부족으로~~

irc명령어
!입실 ps

saint에 가입했다..

CIO가 SOA에 관심을 갖을 수 밖에 없는 이유?

CIO들이 SOA에 관심을 갖는 이유는 자명하다. 비즈니스 도전과 압박이 점점 강해지고 세계화로 진행되고 있다.
새로운 유형의 비즈니스와 운영 모델이 필요하다. IBM의 2006 Global CEO Study(참고자료)에서 비즈니스 리더
3분의 2가 앞으로 2년 안에 기업의 형태를 "급격히 바꿀" 계획이라고 말했다. 기업은 이를 빠르게 착수해야 할 것이다.
시장을 선점하는 기업이 대게 중요한 위치를 점령하고 가장 좋은 몫을 차지하게 되고,
기회들이 빠르게 구체화되고 너무나 빨리 사라지기 때문에 시장 점유 속도와 시간은 필수이기 때문이다.

Demonstrate enthusiasm.
Rehearse
Don't sweat the small stuff


개요(outline)를 제시할 필요도 있습니다. 잡스는 "There are four things I want to talk about today. So let's get started…"라고 말함으로써 그날 프리젠테이션의 개요를 제시했습니다.
Make numbers meaningful. 숫자를 의미 있게 만들어라



2008년 3월 14일 금요일

[grid] 그리드 샘플 정리

샘플 url: http://3pl.ezadmin.co.kr/extjs/grid_test.html 사용자 삽입 이미지 샘플 url: http://extjs.com/deploy/dev/examples/grid/edit-grid.html

2008년 3월 12일 수요일

[extjs] Grid 출력

샘플 사이트
http://3pl.ezadmin.co.kr/extjs/grid_test_json2.html

구성을 보자..
1. 먼저 라이브러리들을 가져와야 한다.

<link rel="stylesheet" type="text/css" href="/js/ext-2.0.2/resources/css/ext-all.css" />
<link rel="stylesheet" type="text/css" href="/js/ext-2.0.2/grid-examples.css" />
<link rel="stylesheet" type="text/css" href="/js/ext-2.0.2/examples/examples.css" />

<!-- script -->
<script type="text/javascript" src="/js/ext-2.0.2/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="/js/ext-2.0.2/ext-all.js"></script>




2. store객체를 만든다.
store객체는 Grid에 출력할 데이터를 가져오는 역할을 수행한다.
여기서는 json방식을 사용할 것이다.
 json은 모 테스트라 간단히 json_encode를 사용해서 만들었다.

$_val = array();
  $_val[totalCount] = 40;
  $_val[data][] = array( id => 1, title=> iconv( 'CP949','UTF-8','하하하'));
  $_val[data][] = array( id => 2, title=> iconv( 'CP949','UTF-8','2 jacking') );
  $_val[data][] = array( id => 3, title=> iconv( 'CP949','UTF-8','3 jacking 흠흠 123') );

echo json_encode ( $_val );

json을 가져오기 위해 메뉴얼에서는 jsonStore를 사용하라고 했지만 아무리 해도 안된다. 개구라가 아닌가 싶다. 모르지 공력이 쌓이면 될런지..일단은 Ext.data.Store 를 사용했다.

var store = new Ext.data.Store({
        proxy: new Ext.data.HttpProxy(
                   new Ext.data.Connection({
                        url: './json_data.php',
                        extraParams: params,
                        method: 'POST'
                })),
        reader: new Ext.data.JsonReader({
            totalProperty: 'totalCount',
            root: "data",
            fields: ['id', 'title']
        })
    });
흠..다 날려 먹었다.

proxy:
Ext.data.HttpProxy는 외부의 데이터를 연동할 때 사용한다.
Ext.data.Connection은 파라미터를 전송하기 위해 사용함
Grid에서 footer를 사용할 경우 starter, limit은 기본 parameter롤 전송된다.

reader:
Ext.data.JsonReader 를 사용한다, 서버로 부터 받는 데이터가 Json방식일 경우 사용한다.
totalProperty: jSon방식의 값에서 Total 파라미터를 보낼 경우 정의 이 값은 나중에 footer와 자동연동된다.
root: 데이터들의 root 엘리먼트라고 하면 될까?
field: [] 다음과 같은 방식으로 저장되어 있다라고 포맷을 알려 줌 향후 값, 포맷의 설정이 가능함

3. Grid 생성 부분
///////////////////////////////////////////////////////////
    // grid 생성 부분
    var grid = new Ext.grid.GridPanel({
        store: store,
        columns: [
            {header: 'id', width: 120, sortable: true, dataIndex: 'id'},
            {header: 'title', width: 190, sortable: true, dataIndex: 'title'}
        ],
        viewConfig: {
            forceFit: true
        },
        renderTo: 'div_grid',
        title: '그리드',
        width: 500,
        height: 500,
        loadMask: true,
        frame: false,
        bbar: new Ext.PagingToolbar({
            pageSize: 20,
            store: store,
            displayInfo: true,
            displayMsg: '총계 {2}중 {0} - {1}',
            emptyMsg: "조회값이 없습니다."
        })
    });

4. data 로드
     store.load();

5. html 소스 부분
</head>
<body>
<h1>XML Grid 테스트</h1>
<div id="div_grid"></div>
</body>
</html>





2008년 3월 6일 목요일

[jquery] select box의 선택값 출력

<select id="cnt_type">
    <option value=1>1</option>
</select>



<script>
/////////////////////////////////////////
// case 1: 노가다
$("#cnt_type")
            .find("option[@selected]")
            .each(
            function(){
                alert ( this.value );
        })

/////////////////////////////////////////
// case 2: jQuery context 사용
alert ( $("#cnt_type > option:selected").val() );
</script>

2008년 3월 4일 화요일

방생~~

장모님은 정기적으로 방생을 가신다.
익현이에게..익현아 우리 내일 바다 가자~ 하시니..

익현이가 하는 말이..
왜? 바다가 내가 보고싶데?
바다가 익현이 보고 싶데?

ㅎㅎ 응..

2008년 3월 2일 일요일

맛있어서 기가 막혔어~

마트에서 죠스바를 하나 샀다.
익현이가 죠스바를 다 먹고서 하는 말이..
맛있어서 기가 막혔어~~ㅎㅎ
어디서 배운 걸까? 녀석..

2008년 3월 1일 토요일

[oop] 기존 속성에 새로운 메서드 추가

prototype 속성 사용한다.

Number.prototype.toHexString = function(){
                                          return this.toString(16);
                                       };
function builtTest()
{
   var a = 15;
   alert(a.toHexString());
}