2013의 게시물 표시

py2exe - setup.py

from distutils.core import setup import py2exe import glob from distutils.core import setup import py2exe setup(     name='LogCleaner',     console=['LogCleaner.py'],     options = { 'py2exe': {                             "packages": ["utils"] #import 패키지 추가                             ,'compressed':1                             ,'optimize':2                              ,'bundle_files':1 #library.zip으로 압축해 주지만 64비트에선 현재일자 기준으로 지원안함                             }},     zipfile = None,     version='1',     url='',     license='',     author='yabgareum',     author_email='yabgareum@gmail.com   ',     description='',     data_files=['config.cfg','fasoo_checkout.gif','index.html'] #정적파일 추가 ) 위코드중 console 모드와 windows 모드가 있다. windows 모드는 백그라운드로 돌아감..  icon_resourse 를 바꾸면 아이콘 모양도 바꿀수 있다. * GUI 프로그램 설치 setup.py ht

모듈

모듈 모듈은 임포트시에도 공유된다. 모듈은 문자열로도 임포트 가능하다. re = __import__("module") 모듈은 기본적으로 메모리에 한번 적재되면 그 상태로 유지 되고 원한다면 재적재할수 있다. reload(module) 파이선 해당파일 실행시 해당 __name__ = "__main__" 이란 이름을 가진다. 이를 이용하여 다음과 같이 정의하면 if __name__ == '__main__': #실행 명령 최상위 모듈일때만 실행명령을 작동시키고 임포트 시에는 작동하지 않도록 처리가능하다. 모듈별로 독립적으로도 수행가능하고 다름 모듈에 호출되어서도 사용가능한것이 파이선의 좋은 특징중 하나이다. 패키지 __init__.py 해당 패키지의 모든 초기값을 설정하고 __all_=[module01, module02..] 를 통해 import* 선별적으로 모듈임포트를 가능하게 할수있다.

함수

내부값 변경이 가능한 리스트 타입일 경우를 제외하고는 모든 함수에 전달된 인수값은 레퍼런스 값으로 함수 내부에서 변경은 인수에 적용되지 않는다. return 되지 않는 함수의 반환값은 언제나 NONE이다. return 문은 어떤 객체라도 반환할수 있다. lambda *args : 튜플형식으로 인수를 받는다. **args : 사전(map)형식으로 인수를 받는다. map 함수 쌍으로 이루어진 인수를 매핑한다. zip 함수 쌍으로 이루어진 인수를 매핑하는데 짧은쪽기준으로 매핑하고 나머진 버린다. filter 함수 연산자와 튜플 또는 리스트 인자를 받아 연산자로 필터링 후 남는 값을 받는다. reduce 함수 누적연산을 실행한다.

python eval/exec/compile

eval a=1 a=eval('a+4') print a >>> a : 5 exec a=1 exec 'a=a+4' print a >>> a : 5 compile eval/ exec 문자열 실행 함수를 컴파일 해서 사용한다.

패턴정리

전략패턴 팩토리메소드패턴 템플릿메소드 패턴 옵져버패턴 - 자주 변화하는 클래스에서 변화가 이러날 때 변화를 출력하거나 그 변화를 이용해야 할 메소드를 호출 시키는 것이다. 데코레이터패턴 http://warmz.tistory.com/757 아답터패턴 이터레이터패턴 - iterator 구현체를 사용한 아답터 패턴 파사드패턴 프록시 패턴 플라이웨이트패턴 - 객체 지향 언어는 객체를 생성함으로써 비객체지향 언어에서 할 수 없는 많은 것들을 할 수 있었습니다만, 그 객체라는게 발목을 잡기도 합니다. 바로 성능에서죠. 객체는 메모리도 많이 잡아먹고 생성하는데 많은 비용이 들어갑니다. Flyweight 패턴은 작은 공간(pool)을 만들어 객체를 공유할 수 있게해 객체 생성을 최대한 줄여줍니다. 이 패턴은 대체로 FlyweightFactory에서 객체를 생성합니다. 예를 들어 흰색 선과 파란 선을 그린다고 할 때 각각의 색을 가진 선 객체는 FlyweightFactory에서 만들어져 흰색 선과 파란 선을 그릴때 언제든지 재사용 할 수 있습니다. 따라서 1000개의 흰색 선과 6000개의 파란 선을 그린다고 할 때 7000개의 객체를 생성하는 대신 두 개의 인스턴스만 만들 것입니다. 그런데 어떻게 객체를 재사용 할까요? 분명히 선을 표시할 때는 그 위치나 길이가 달라지는데 우리가 생각하는 '객체'는 다른 상태는 곧 다른 객체를 의미하지 않습니까? Flyweight 패턴은 이 부분을 내부(intrinsic, 선의 색) 상태와 외부(extrinsic, 위치나 길이) 상태로 나눠서 해결하고 있습니다. Flyweight 패턴은 내부 상태는 유지하는 반면에, 외부 상태는 Flyweight 객체가 실행 되는 동안만 유지합니다. 따라서 Flyweight 객체를 손쉽게 변화시켜 재사용 할 수 있습니다. 자바에서 플라이웨이트 패턴을 사용한 가장 대표적인 예는 String 클래스입니다. 같은 내용의 String 객체를 2개 생성한

DBCP, C3PO 커넥션 유지 하기

JDBC 커넥션 풀을 지원하는 대표적인 오픈소스 중에 아파치  DBCP 와  C3P0 가 있다. 이들은 Spring, Hibernate 등과 통합되어 DB 커넥션 풀을 제공하는 DataSource를 구성하여 자주 쓰인다. 오라클이나 MySQL 등 DBMS들은 기본적으로 특정 시간동안 실행이 없으면 해당 세션을 종료하게 된다. 이렇게 종료된 커넥션은 어플리케이션에서 오류를 발생시키게 되므로 커넥션을 유지하기 위한 별도 설정을 필요로 하게 된다. 커넥션을 얻어올 때 커넥션 테스트를 수행하고 실패하면 새로운 커넥션을 생성할 수 있다. 또한 idle 타임에 주기적으로 커넥션 테스트를 수행할 수도 있다. 아래는 dbcp를 이용하여 구성한 스프링 DataSource 설정의 예이다. <bean id="dataSource" class=" org.apache.commons.dbcp.BasicDataSource " destroy-method="close"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> <property name="defaultAutoCommit" value="true"/> <property na

You don't have permission to access / on this server

아파치 설정후 해당 도메인으로 접근 하려하니... You don't have permission to access / on this server. 오류가 나오는 경우가 있습니다. httpd.conf or vhosts 파일 설정 <Directory />     Options FollowSymLinks     AllowOverride None     Order deny,allow     Allow from all </Directory> 만약 webtree 유저 홈드렉토리에 넣었다면  chmod 711 /home/webtree chmod 775 /home/webtree/webRoot

Java에서 System.getProperty() 사용법

Java에서 System.getProperty() 사용법 자바를 실행할 때, 실행되는 곳의 정보를 얻어오거나 운영체제의 정보가 필요할 때가 있습니다. 얼마전에 코드를 작성하면서 실행 위치에 있는 파일을 읽어드려야 하는데, 현재 위치를 알 수 있는 방법이 없을까 하고 찾아보니... System.getProperty()를 사용하여 쉽게 해결할 수 있었습니다. 1. System.getProperty 사용법 System.getProperty() 사용법은 간단합니다. 괄호 안에 주어진 특정 문자를 적어넣으면 그 값이 String 으로 출력됩니다. 예를 들어 실행하고 있는 현재 위치가 알고 싶다면 "user.dir" 이라고 적어주면 됩니다. 아래와 같이 "user.dir" 이라고 입력해봅니다. String dir = System.getProperty("user.dir"); System.out.println(dir); 그 다음, 컴파일을 하면 아래와 같이 출력됩니다. D:\Eclipse\eclipse-java-juno-win32\eclipse\workspace\test 2. Property 주요 검색어 검색어 뜻 java.version Java 버전 java.vendor Java 공급자 java.vendor.url Java 공급자 주소 java.home Java를 설치한 디렉토리 java.class.version Java 클래스 버전 java.class.path Java 클래스 경로 java.ext.dir 확장기능의 클래스 경로 os.name 운영체제 이름 os.arch 운영체제 아키텍처 os.version 운영체제 버전 정보 file.separator 파일 구분 문자 path.separator 경로 구분 문자 line.separator 행 구분 문자 user.name 사용자 계정 user.home 사용자 홈 디렉토

ExtJS 짬짜미

grid panel 전체 카운트 Ext.getCmp('x-message-search-grid').getStore().getCount(); grid panel 선택된 카운트 Ext.getCmp('x-message-search-grid').getSelectionModel().getCount();

jennifer 설치 주의사항

Preinstall 시 64bit가 아닐 경우 d64 선택화면에서 답변을 n으로 선택한다. CPU 정보설정 sysprof=SunJava5 제니퍼 jdbc 설정 jdbc_connection_get=com.ibatis.sqlmap.engine.transaction.Transaction.getConnection(); flex.data.assemblers.DataSourceConnectionHelper.getConnection(); org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSource); org.springframework.jdbc.datasource.DelegatingDataSource.getConnection(); org.springframework.jdbc.datasource.DelegatingDataSource.getConnection(String,String) jeus 해당 컨테이너 <command-option>(preinstall 후 아래 설정정보가 나오면 붙여넣음) -Xbootclasspath/p:/www/jennifer/agent/lwst.jdk.jar:/www/jennifer/agent/lwst.boot.jar:/www/jennifer/agent/jennifer.boot.jar -Djennifer.config=/www/jennifer/agent/X11.conf -javaagent:/www/jennifer/agent/lwst.javaagent.jar 추가 [jennifer Root]/agent/license.txt 파일에 라이센스 코드 등록

mysql 외부접속허용하기

OS : Ubuntu Server (Karmic Koala) MYSQL : 5.1 version 특정 사용자 계정의 외부접속 허용하기 - 여기서는 root 를 예로 든다. 1. mysql 접속 후 mysql database 선택 mysql> use mysql; 2. user 테이블 살펴보기 mysql> select host, user, password from user; root 의 host 값들은 localhost, 127.0.0.1 등으로 기본 등록되어 있지만, 외부접속을 나타내는 값이 없다. 특정 아이피로 지정할 수도 있지만 여기선 % 기호로 어디서든 접속 가능하게 만든다. 3. 권한 설정 mysql> grant all privileges on *.* to 'root'@'%' identified by 'root의 패스워드'; Query OK, 0 rows affected (0.03 sec) 4. 등록확인하기 mysql> select host, user, password from user; root 계정의 host 필드에 % 가 등록되었는지 확인한다. 5. refrash mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) 위 단계는 my.cnf 파일 수정후 서버를 재시작할 것이기 때문에 굳이 안해도 된다. 6. my.cnf 에서 외부접속 관련사항 변경하기 user@home:~$ sudo vim /etc/mysql/my.cnf 파일 내용중 bind-address = 127.0.0.1 부분 주석처리후 저장하기 7. mysql 재시작 user@home:~$ sudo /etc/init.d/mysql restart 8. 완료. 이제 외부 클라이언트 프로그램에서 접속이 가능하다 ^^

unix timestamp 오라클 날짜형식으로 변경

TO_DATE('19700101090000','YYYYMMDDHH24MISS') + NUMTODSINTERVAL('날짜', 'SECOND')

tomcat 가상호스트 설정

이미지
1. Context Path 설정   톰캣 4 버전대의 경우, Context Path를 [CATALINA_HOME]/conf/server.xml 에 기술 했지만 5 버전부터는  그 방법이 바뀌었습니다.     - 1단계 :  [CATALINA_HOME]/conf/server.xml 에 HOST 항목 추가하기        톰캣 5.5 를 설치하고 난 후 server.xml 를 열어보면 아래와 같이 기본적으로 localhost 란 이름으로 HOST       항목이 정의되어 있을 겁니다.     <Host          appBase="webapps"          autoDeploy="false"          liveDeploy="false"          name="localhost">      </Host>        이 아래에 이어서 추가하고자하는 HOST항목을 추가 해 줍니다.      <Host          appBase="webapps"          autoDeploy="false"          liveDeploy="false"          name="www.new_site.com">      </Host>      - 2단계 :  [CATALINA_HOME]/conf/Catalina 디렉토리에 HOST 디렉토리 추가하기         디폴트로 [CATALINA_HOME]/conf/Catalina/localhost 란 디렉토리가 있을겁니다.        [CATALINA_HOME]/conf/Catalina 디렉토리 내에 1단계에서 추가한 HOST ( www.new_site.com )의        이름을 갖는 디렉토리를 추가합니다.        [CATALINA_HOME]/conf/Catalina/www.new_site.com      

파이썬 엑셀처리

1. xlrd (읽기전용) 홈페이지 :  http://www.lexicon.net/sjmachin/xlrd.htm import xlrd wb = xlrd.open_workbook("c:/Book1.xls") sh = wb.sheet_by_index(0) print wb.nsheets, wb.sheet_names() print sh.name, sh.cell_value(0,1) 2. pywin32 (읽기/쓰기 - COM 이용) 홈페이지 : https://sourceforge.net/projects/pywin32/ from win32com.client import Dispatch xl = Dispatch("Excel.Application") wb = xl.Workbooks.Open("c:/Book1.xls") sh = wb.Sheets[0] sh.Cells(2,1).Value = 'pywin32' print wb.name, sh.name, sh.cells(1,2).value wb.save wb.close xl.quit() del xl

ResultSet can not re-read raw data for column 1 오류

mssql  jdbc 드라이버 오류 com.microsoft. jdbc .sqlserver.SQLServerDriver(일반적으로 msserver.jar 파일을 사용한다.) 위와 같은 에러가 발생할 경우 com.microsoft.sqlserver. jdbc .SQLServerDriver(sqljdbc4) 를 사용해야 한다. jdbc 위치를 보면 다른 클래스를 호출하는 것을 알수있다.

Linux cpu 정보확인

리눅스 CPU 개수 확인하기 리눅스 CPU 코어 수 확인하기 목차  [ 숨기기 ]  1 개요 2 CPU 코어 전체 개수 3 물리 CPU 수 4 CPU당 물리 코어 수 5 정리 6 같이 보기 7 주석 개요 CPU core 수를 셀 수 있다. 다만 인텔 하이퍼스레딩의 경우, OS(윈도우, 리눅스 등)에서 코어 수가 실제 코어 수의 2배로 인식된다. 예를 들어 싱글코어는 코어 2개로, 듀얼코어는 4개로 인식된다. CPU 코어 전체 개수 grep -c processor / proc / cpuinfo [ root @ jmnote ~]# grep -c processor /proc/cpuinfo 48 → 가상 CPU 코어 수는 48. 따라서 물리적으로는 24 코어. [1] 물리 CPU 수 명령어 grep "physical id" / proc / cpuinfo | sort -u | wc -l 실행예시 [ root @ jmnote ~]# grep "physical id" /proc/cpuinfo | sort -u | wc -l 4 CPU당 물리 코어 수 명령어 grep "cpu cores" / proc / cpuinfo | tail -1 예시 [ root @ jmnote ~]# grep "cpu cores" /proc/cpuinfo | tail -1 cpu cores : 6 → CPU당 물리 코어수가 6. 정리 위에서 확인한 사항들을 모아보면 다음과 같다. 물리 CPU 수: 4 물리 CPU당 물리 코어 수: 6 전체 물리코어수 : 24 [2] 전체 가상코어수 : 48 [3] 같이 보기 리눅스 CPU 속도 확인하기 윈도우 CPU 코어 수 확인 주석 ↑ 1 core(물리코어

linux UTF-8 setting

# vi /etc/sysconfig/i18n LANG="ko_KR.UTF-8" SUPPORTED="ko_KR.eucKR:en_US.UTF-8:ko_KR.UTF-8:ko_KR:ko" SYSFONT="latarcyrheb-sun16" 로 설정함