2011년 3월 17일 목요일

jquery 이것저것

전체 체크박스 전체 선택-해제

$('#allcheck').click(function() {
    if ($('#allcheck:checked').length > 0) {
        $('.delcheck').attr('checked', 'checked');
    } else {
        $('.delcheck').attr('checked', '');
    }
});

동일한 이름의 input name="test"인걸 하나의 문자열로 변환
var ret = []; 
var cnt = 0;
$('input[name*=test]').each(function() {
    ret[cnt] = $(this).val();
    cnt += 1;
});
alert(ret.join());

select box 관련

var testcode = 2;
$('#testid option:eq('+testcode+')').attr('selected', 'selected');
alert($('#testid option:selected').val());
alert($('#testid option:selected').text());

input box 추가 및 삭제
input type="button" value="추가" id="addButton"
var addhtml = "div id=\"addHtml\" input type=\"text\" name=\"test\" value=\"\" input type=\"button\" value=\"삭제\" class=\"delhtml\" /div "; $('#addButton').click(function () { $('#addHtml').append(addhtml); $('.delhtml').bind('click', function () { $(this).parent().remove(); }); });

jquery autocomplete

jquery autocomplete 간단한 사용법

우선 사용하고자 하는 페이지의 자바스크립트
$('#name').autocomplete(uid, {
    minChars: 1,
    width: 210,
    max: 50,
    matchContains: true,
    autoFill: false,
    formatItem: function(row, i, max) {
        return i + "/" + max + ": \"" + row.name + "\" [" + row.to + "]";
    },
    formatMatch: function(row, i, max) {
        return row.name + " " + row.to;
    },
    formatResult: function(row) {
        return row.name;
    }
});

$('#name').result(function(event, row, formatted) {
    $('#to').val(row.to);
});

uid가 있는 자바스크립트
var uid = [
 { name: "Peter Pan", to: "peter@pan.de" },
 { name: "Molly", to: "molly@yahoo.com" },
 { name: "Forneria Marconi", to: "live@japan.jp" },
 { name: "Master Sync", to: "205bw@samsung.com" },
 { name: "Dr. Tech de Log", to: "g15@logitech.com" },
 { name: "Don Corleone", to: "don@vegas.com" },
 { name: "Mc Chick", to: "info@donalds.org" },
 { name: "Donnie Darko", to: "dd@timeshift.info" },
 { name: "Quake The Net", to: "webmaster@quakenet.org" },
 { name: "Dr. Write", to: "write@writable.com" }
];

name id를 가지고 있는 곳에서 입력하면 uid의 name과 일치하는 것들이 나타난다.

이때 해당하는 것을 선택하면 result 함수를 호출하게 된다.

여기서 필요한 작업을 하면 끝.

참조 url : http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/

2010년 11월 30일 화요일

php soap

lighttpd냐 nginx냐 고민하다가 lighttpd로 결정했다. 이유는 nginx는 사용해 보지 않아서...

lighttpd + php5.2 + pear soap으로 서비스를 하는데 pear soap에서 complex type 선언할때

방법을 찾는데 좀 헤맸다.

$this->__dispatch_map['hello'] =  array(  'in' => array('name' => 'string'),  'out' => array('ret' => '{'.$this->__ns.'}ArrayOfIHello'));
$this->__typedef['{'.$this->__ns.'}StringOfHello'] = array( 'a' => 'int', 'b' => 'string', 'c' => 'string', 'd' => 'string', 'e' => 'string' );
$this->__typedef['{'.$this->__ns.'}ArrayOfHello'] = array(array('StringOfHello'=>'{'.$this->__ns.'}StringOfHello'));

요런식으로 선언하면 c# 에서는 StringOfHello 로 받아서 처리하면된다. 편하다 -_-;

aaa.StringOfHello[] strs = svr.hello(tname);
    String[] temp = new String[5];
    foreach (aaa.StringOfHello str in strs)
    {
        temp[0] = str.a.ToString();
        temp[1] = str.b;
        temp[2] = str.c;
        temp[3] = str.d;
        temp[4] = str.e;
        // dataGridView1.Rows.Add(temp);
    }

2010년 7월 7일 수요일

windows7_64 gvim

구입한 노트북의 OS가 windows7_64  버전이다.

gvim을 설치 했더니 우측에 context menu에 추가가 안된다.

추가 방법은 reg 파일을 만들어서 추가하는 것과 sendto를 이용하는 방법이 있다.

reg파일의 내용은

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\Edit with Vim]
[HKEY_CLASSES_ROOT\*\shell\Edit with Vim\command]
@="C:\\Program Files (x86)\\Vim\\vim72\\gvim.exe \"%1\""
이 파일을 등록하면 마우스 우측버튼 클릭후에  Edit With Vim이 보인다.

2010년 5월 4일 화요일

oracle to sql server

이 자료는 oracle에서 sql server 2008로 db link를 통해 접속 하는 방법을 설명하는 자료이다.

platform
unbuntu 8.04
Oracle Database 10g r2
MS Sql Server 2008

필요한 package
# apt-get install unixodbc unixodbc-dev tdsodbc
freetds driver를 unixODBC에 인식
# odbcinst -i -d -f /usr/share/tdsodbc/odbcinst.ini
tamplate 생성후 unixODBC에 추가
# vi ms.ini
[MS]
Driver = TDS
Description = SQL Server
Trace = No
Server = 192.168.x.x
Database = test
# odbcinst -i -s -f mydsn.ini -h
또는 /etc/odbc.ini, /etc/odbcinst.ini에 직접 추가
/etc/odbc.ini
[TDS]
Description = freetds
Driver = /usr/lib/odbc/libtdsodbc.so
FileUsage = 1

/etc/odbcinst.ini
[MS]
Driver = TDS
Description = SQL Server
Trace = No
Server = 192.168.x.x
Database = test
접속 테스트
# isql -v MS userid password
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+ 
여기 까지가 unixODBC와 freetds연동을 위한 설정이다. Oracle hs(Heterogeneous Services)를 추가해야 한다.

여기서 부터는 oracle 계정으로 :-)

Oracle listerner 추가(listener.ora)
SID_LIST_HSODBC =
(SID_LIST =
    (SID_DESC =
        (SID_NAME=hsodbc)
        (ORACLE_HOME=/opt/oracle/product/10r2)
        (PROGRAM=/opt/oracle/product/10r2/bin/hsodbc)
        (ENVS=LD_LIBRARY_PATH=/opt/oracle/product/10r2/lib:/usr/lib/) # lib from freetds
    )
) 
 HSODBC =
(DESCRIPTION_LIST =
    (DESCRIPTION =
        (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.x.x)
            (PORT = 1522))
        )
    )
)
tnsnames.ora 추가
hs =
(DESCRIPTION =
    (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.x.x)(PORT = 1522))
    )
    (CONNECT_DATA =
        (ORACLE_HOME = /opt/oracle/product/10r2)
        (SID = hsodbc)
    )
    (HS = OK)
)
listener hsodbc 실행
$ lsnrctl start hsodbc
$ tnsping hs 
Oracle hs 설정
vi $ORACLE_HOME/hs/admin/inithsodbc.ora
HS_FDS_CONNECT_INFO = MS
HS_FDS_TRACE_LEVEL = 4
HS_FDS_TRACE_FILE_NAME = /tmp/ms.trc
HS_FDS_SHAREABLE_NAME = /usr/lib/libodbc.so # lib from unixODBC
set ODBCINI=/etc/odbc.ini
Oracle database link 설정 및 테스트
SQL> create database link ms connect to "userid" identified by "password" using 'hs';
ok
SQL> select * from test@ms;
...
...
...
SQL>
isql로는 연결이 되는데 hs에서는 안 될 경우 환경변수를 확인해보거나 unixODBC와 freetds를 소스로 설치해서 해보길 바란다.