'ITWeb/개발일반'에 해당되는 글 490건

  1. 2013.08.27 [Java] euc-kr2utf-8 / utf-82euc-kr...
  2. 2013.08.26 [HttpClient] Request Post Data Raw 사용.
  3. 2013.08.22 [Mysql] 5.6.1 source install.. ncurses error...
  4. 2013.08.14 [Eclipse] JVM status/monitor plugin
  5. 2013.08.13 [Spring] properties 파일 읽기.
  6. 2013.08.13 [Spring] Controller Content-Type 설정. (ajax)
  7. 2013.05.22 [Eclipse] WTP JSP import error.
  8. 2013.05.15 [JavaScript] undefined check.
  9. 2013.05.15 [Javascript] ExtJS - Grid + Checkbox + Paging
  10. 2013.05.15 [JavaScript] ExtJS - Ext.data.Store

[Java] euc-kr2utf-8 / utf-82euc-kr...

ITWeb/개발일반 2013. 8. 27. 17:51

검색엔진 솔루션 업체의 euc-kr 지원만 되니 euc-kr 로만 사용하라는 대단한 자부심... 

넌 어느별에서 왔니.. ㅡ.ㅡ;; 이런 국내 구멍가게야.. 


[euc-kr to utf-8]

String euc-kr = "한글 EUC-KR to UTF-8";

String utf-8 = new String(euc-kr.getBytes("euc-kr"), "utf-8");



[utf-8 to euc-kr]

String utf-8 = "한글 UTF-8 to EUC-KR";

String euc-kr = new String(utf-8.getBytes("utf-8"), "euc-kr");



:

[HttpClient] Request Post Data Raw 사용.

ITWeb/개발일반 2013. 8. 26. 17:09

HttpClient 를 이용해서 Post, Get 관련 기능 구현 시 아래 링크를 참고 하시면 좋습니다.

http://hc.apache.org/httpcomponents-client-ga/examples.html


그리고 raw 방식으로 구현 하고 싶으실 경우는 아래 method 를 이용하셔야 합니다.

PostMethod.setRequestEntity()

Parameter 로 사용 가능 한건 아래 링크 참고 하세요.

http://hc.apache.org/httpclient-legacy/apidocs/org/apache/commons/httpclient/methods/RequestEntity.html

:

[Mysql] 5.6.1 source install.. ncurses error...

ITWeb/개발일반 2013. 8. 22. 14:52

ncurses-devel 설치를 하시면 되구요.

설치 후에도 에러가 나면 cmake 시에 path 를 잡아 주시면 됩니다.


cmake \ -DCURSES_LIBRARY=/usr/lib64/libncurses.so \ -DCURSES_INCLUDE_PATH=/usr/include \ -DCMAKE_INSTALL_PREFIX=/home/mysql/app/mysql \ -DMYSQL_UNIX_ADDR=/home/mysql/app/mysql/mysql.sock \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_EXTRA_CHARSETS=all \ -DMYSQL_DATADIR=/home/mysql/app/mysql/db \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DMYSQL_USER=mysql \ -DMYSQL_TCP_PORT=3306 \ -DENABLE_DOWNLOADS=1


:

[Eclipse] JVM status/monitor plugin

ITWeb/개발일반 2013. 8. 14. 10:05

http://www.kyrsoft.com/downloads/downloads.html#StatusMonitor

:

[Spring] properties 파일 읽기.

ITWeb/개발일반 2013. 8. 13. 18:35

해당 프로젝트에 conf 디렉토리 하나 만드시고 거기에 profile 별 디렉토리도 만드시고.. 

아래 같이 해주면 됩니다. (뭐 나만 알아 볼라고 대충 등록함.)



[pom.xml]

<resource>

<directory>${basedir}/conf/${env}</directory>

<targetPath>${project.build.directory}/conf</targetPath>

<filtering>false</filtering>

</resource>


[class]

resource = new ClassPathResource(propsFile);

props = PropertiesLoaderUtils.loadProperties(resource);


clusterName = props.getProperty("cluster.name");


[properties]

cluster.name=es-cluster

cluster.node.list=192.168.56.104:9300,192.168.56.104:9301


:

[Spring] Controller Content-Type 설정. (ajax)

ITWeb/개발일반 2013. 8. 13. 18:23

그냥 개발 하다 자꾸 까먹는 것들... 정리 차원에서.. ^^;

- spring controller 클래스에서 호출 method 에 설정

@RequestMapping(value = "/api", method = RequestMethod.POST, produces = "application/json; charset=utf-8")


- serve.xml 에서 URIEncoding 설정

http connector 에 설정

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>

:

[Eclipse] WTP JSP import error.

ITWeb/개발일반 2013. 5. 22. 04:55

eclipse 에서 dynamic web project 를 생성하고 maven project 로 변환 했을 때 아래와 같은 에러를 접하셨다면 참고하시기 바랍니다.


[에러 목록]

Only a type can be imported. org.apache.commons.logging.Log resolves to a package


[해결 방법]

- 이와 같은 에러가 발생 하는 것은 maven dependency library 나 referenced library 가 project 의 WEB-INF/lib 으로 복사가 안되어서 관련 파일을 찾지 못해 발생을 하는 것입니다.

- web project properties -> deployment assembly -> add -> java build path entries -> maven 및 추가한 lib 선택 -> finish


- 추가로 패키징 시 war 로 묶을 때 에러 발생 하지 말라고 pom.xml 에 아래 코드 추가 합니다.

<packaging>war</packaging>

<plugin>            

  <groupId>org.apache.maven.plugins</groupId>

  <artifactId>maven-war-plugin</artifactId>

  <configuration>

    <webXml>WebContent/WEB-INF/web.xml</webXml>        

  </configuration>

</plugin>

:

[JavaScript] undefined check.

ITWeb/개발일반 2013. 5. 15. 18:55


if ( typeof obj === "undefined" ) {

}


if ( obj === undefined ) {

}


요렇게 하셔야 합니다.

:

[Javascript] ExtJS - Grid + Checkbox + Paging

ITWeb/개발일반 2013. 5. 15. 17:10

ExtJS API )

http://docs.sencha.com/extjs/4.2.0/#!/api/Ext.grid.Panel

http://docs.sencha.com/extjs/4.2.0/#!/api/Ext.selection.CheckboxModel

http://docs.sencha.com/extjs/4.2.0/#!/api/Ext.grid.RowNumberer

http://docs.sencha.com/extjs/4.2.0/#!/api/Ext.toolbar.Paging


아래 사용 예가 best 는 아닐 수 있으며, 실제 동작 하는 코드에 대한 참고용으로 사용하시면 될 것 같습니다.

생각 보다 ExtJS 의 경우 버전 별로 API 가 좀 다르기도 하고 요구하는 기능에 대한 API 문서가 정말 자세히 나와 있지도 않아 노가다를 많이 하게 되니 동작 하는 코드만으로도 다양하게 적용 가능 할 것으로 판단 됩니다.


사용 예)

columnArr[0] = Ext.create("Ext.grid.RowNumberer", {

            width:60,

            renderer: function(value, appearance, record, rowIndex) {

                var columnIndex = ESDataListControl.totalDocSize - (ESDataListControl.pageSize*(ESDataListControl.currPage-1)) - rowIndex;

                return columnIndex;

            }

        });


var grid = new Ext.create("Ext.grid.Panel", {

            id: "esDataViewGridId",

            title: "Elasticsearch Data Management Grids",

            layout: "fit",

            store:  ESDataListControl.dataStore,

            queryMode: "local",

            autoRender: "true",

            autoShow: "true",

            autoResize: "true",

            loadMask : true,

            selModel:Ext.create("Ext.selection.CheckboxModel", {

                checkOnly: true,

                listeners : {

                    deselect: function(model, record, index) {

                        delete ESDataVar.ids[record.raw._id];

                        console.log(ESDataVar.ids);

                    },

                    select: function(model, record, index) {

                        ESDataVar.ids[record.raw._id] = {"_index":"", "_type":"", "_id":""};

                        

                        ESDataVar.ids[record.raw._id]._index = record.raw._index;

                        ESDataVar.ids[record.raw._id]._type = record.raw._type;

                        ESDataVar.ids[record.raw._id]._id = record.raw._id;

                        console.log(ESDataVar.ids);                        

                    }

                }

            }),

            columns: columnArr,

            renderTo : "esDataViewGridPanel",

            bbar: new Ext.PagingToolbar({

                    pageSize: ESDataListControl.pageSize,

                    store: ESDataListControl.dataStore,

                    displayInfo: true,

                    displayMsg: "Displaying topics {0} - {1} of {2}",

                    emptyMsg: "No topics to display",

                    items:[ 

                            "-",

                            {

                                pressed: true,

                                enableToggle: true,

                                text: "Delete",

                                cls: "x-btn-text-icon details",

                                toggleHandler: function(btn, pressed){

                                    ESDataListControl.deleteDocFromIds();

                                }

                            }

                        ],

                    moveFirst : function () {

                        ESDataListControl.currPage = 1;

                        ESDataListControl.getPagingSearchMatchAll();

                    },

                    moveLast : function () {

                        ESDataListControl.currPage = ESDataListControl.endPage;

                        ESDataListControl.getPagingSearchMatchAll();

                    },

                    moveNext : function () {

                        ESDataListControl.currPage++;

                        ESDataListControl.getPagingSearchMatchAll();

                    },

                    movePrevious : function () {

                        ESDataListControl.currPage--;

                        ESDataListControl.getPagingSearchMatchAll();

                    },

                    listeners: {change : function(thisd, params) {

                            console.log("pagingToolbar listener");

                        }

                    }

                })

            });


좀 더 상세한 적용을 위해서는 소스코드를 보시면 좋겠지만,

그냥 객체에 대한 attribute 와 property 를 모두 디버깅해서 필요한 API 를 찾아 사용하는 것도 방법 일 수 있습니다.

다만 시간과 노력이 많이 듭니다. ^^;

:

[JavaScript] ExtJS - Ext.data.Store

ITWeb/개발일반 2013. 5. 15. 17:02

ExtJS API : http://docs.sencha.com/extjs/4.2.0/#!/api/Ext.data.Store

여러 형태의 데이터를 저장.

주로 json 형태의 데이터를 처리 또는 key:value 처리.


사용 예) ajax 로 이미 데이터를 loading 한 후 local data 를 넘겨 주는 방식 (ajax 호출을 따로 하고 싶지 않을 경우 proxy 부분에서 직접 구현 해도 됨)

ESDataListControl.dataStore = new Ext.create("Ext.data.Store", {

                        autoLoad: true,

                        queryMode: "local",

                        fields: columns,

                        pageSize: ESDataListControl.pageSize,

                        currentPage: ESDataListControl.currPage,

                        proxy: {

                            type: "memory",

                            reader: {

                                type: "json",

                                totalProperty: "hits.total",

                                root: "hits.hits"

                            }

                        },

                        data:ESDataListControl.jsonResult

                    });

        ESDataListControl.totalDocSize = ESDataListControl.dataStore.getTotalCount();


API 간단 설명)

- fields : grid 에 보여 줄때 column 명에 해당 하는 항목

- totalProperty : 읽어 온 데이터의 총 수

- root : 읽어 온 json string 에서 데이터에 해당하는 root key name

예) { hits:{total:111, hits:{data:[...]}}}

: