2012의 게시물 표시

파일내 문자 변경

- 폴더에서 문서검색 후 변경 find /data/pinetree -name test.xml -exec perl -pi -e 's/<"aaaa"\/>/<"bbbbb"\/>/g' {} \; -vi 에서 찾아 바꾸기 :%s/aaa/kkk/g

이클립스에서 파이썬 한글 문제

[개발/개발툴] PyDev 에서 단순히 '한글' 을 찍어보려고 하는데, File "C:\Documents and Settings\keidw\My Documents\workspace\PythonTest\src\test.py", line 6     ?     ^ SyntaxError: invalid syntax 문법 에러가 발생을 하네요. 이유도 없이 ? 를 입력했을리가 없잖아요?-_-; 검색엔진에서 사례를 찾아보니 한글 문제는 문서 설정에 인코딩 옵션이 잘 못 되었을 때 발생할 수 있다고 하더군요. Windows - Preferences - General - Content Types - Text 에서 , 해당 파일의 Default encoding 을 EUC-KR 로 입력하고 Update 해주라고 해서 해봤는데, 소용이 없었습니다. EUC-KR 은 리눅스의 경우이고, 윈도우의 경우에는 MS949 라고 해줘야 하더군요. 이렇게 해주면 문서상의 '한글 깨짐' 현상은 해결됩니다. 우측 하단의 encoding 부분에 MS949 입력 하지만, 여전히 ? 가 삽입되면서 문법 에러가 발생하는 현상은 해결되지 않았습니다. 그래서 살펴본 결과 원인을 확인했습니다. 파이썬에서 한글 사용을 위해 일반적으로 맨 윗줄에 삽입해주는 # -*- coding: cp949 -*- 부분에 문제가 있었습니다. cp949 가 아니라 ms949 로 해줘야 하네요. # -*- coding: ms949 -*- 이렇게 바꿔주니까 아무 문제 없이 한글 출력이 됩니다. 한글 나온다! 확실히 한국 개발자들은 이 한글 문제 때문에 언제나 다른 나라 개발자들 보다 조금은 더 삽질(공부)하게 되는 것 같네요;

리눅스 true-type 폰트추가

기본적으로 Linux 시스템에는 설치 언어를 '한국어'로 선택한 경우, 몇 가지 무료용 한글 글꼴이 설치된다. 그러나, 이 글꼴은 무료인 만큼 Windows에서 사용하는 글꼴처럼 미려하지 않은 단점이 있다. 이를 해결하는 방법으로는 일반적으로 무료로 배포되는 글꼴을 내려받거나 Windows 시스템에서 사용하는 TrueType 글꼴(ttf)을 가져다 쓰는 것이다. 다행이 TrueType 글꼴은 그대로 Linux 시스템에서 사용할 수 있다. 1. 글꼴 복사하기 Windows 시스템에서 사용할 글꼴을 복사한 다음, Linux 시스템에 옮긴다. Windows 시스템은 C:\Windows\Font 디렉토리에 글꼴이 설치되어 있다. Linux 시스템에 복사한 글꼴을 다음과 같이 Linux의 글꼴 시스템 디렉토리에 설치한다. ># mv *.ttf /usr/share/fonts 2. 글꼴 캐쉬 정보 갱신하기 현재 시스템에서 사용하고 있는 글꼴에 대한 정보에 새로 설치한 글꼴 정보가 포함되도록 갱신하여야 한다. 시스템을 재시작하면 자동으로 반영되지만 현재 복사한 글꼴을 바로 확인하고자 할 때에는 다음을 실행한다. ># fc-cache -f -v : 시스템에 신규글꼴 갱신 ># fc-list : 시스템에 등록된 글꼴 확인하기 3. Anti-Aliasing 적용하기 지금까지의 과정으로 TrueType 글꼴의 기본적인 설치 과정은 완료된다. 그러나, Ubuntu와 같이 몇몇 시스템에서는 한글 글꼴에 대해 Anti-Aliasing (즉, 글꼴의 윤곽을 부드럽게 함)을 적용하지 못하도록 설정되어 있어, TrueType 글꼴인데도 불구하고 마치 Bitmap 글꼴이 확대되었을 때 깨지는 것처럼 보이는 경우가 있다. 이런 경우에는 다음과 같이 Anti-Aliasing을 적용하지 못하도록 설정된 두 부분을 주석 처리한다. 우선 편집기를 이용하여 다음과 같이 한글 설정 파일을 연다. ># gedit /usr/share/

FROM keyword not found where expected

validationquery 옵션을 수정해야 한다. select 1 ->   SELECT 1 FROM DUAL

Linux 내 파일문서검색

Linux에서 파일 내에 특정 문자열을 검색해야 하는 경우가 종종 있다. - 현재 디렉토리 내 확장자가 txt인 파일들을 중에서 "홍길동"이라는 문자열을 갖고 있는 파일의 한 줄과 이름을 보여준다. find . -name "*.txt" | xargs grep 홍길동 - 이 때 검색어로 사용된 문자열은 색을 달리하여 표시하고 싶다면 find . -name "*.txt" | xargs grep --color=auto 홍길동  - 검색어의 위치(줄번호)를 같이 표기하고 싶다면 find . -name "*.txt" | xargs grep -n 홍길동 - 대소문자를 구분하고 싶지 않다면 find . -name "*.txt" | xargs grep -i LgMobile 즉, LGMobile, LGMOBILE, lgMobile을 가리지 않고 찾는다. - 현재 디렉토리 내 확장자가 txt인 파일들을 중에서 "홍길동"이라는 문자열을 갖고 있는 파일의 이름만 보고 싶다면 find . -name "*.txt" | xargs grep -l 홍길동 - 검색 결과에 다음과 같은 메시지가 포함된다면 grep: [특정경로]: No such file or directory 2>/dev/null 을 추가하면 해당 메시지를 표시하지 않고 찾은 결과만 볼 수 있다. 즉, find . | xargs grep 2>/dev/null 홍길동 - 모든 옵션은 함께 사용 가능하다. find . -name "*.txt" | xargs grep --color=auto -n 2>/dev/null 홍길동

oracle 캐릭터셋 설정바꾸기

#################################################### #### .bash_profile 환경변수     export ORACLE_BASE=/home/oracle     export ORACLE_HOME=$ORACLE_BASE/oracle/product/10.2.0/db_1     export ORACLE_SID=ora10     export LD_LIBRARY_PATH=$ORACLE_HOME/lib     #export LD_ASSUME_KERNEL=2.4.19     export PATH=$PATH:$ORACLE_HOME/bin         export NLS_LANG=KOREAN_KOREA.KO16KSC5601       #한글     export NLS_LANG=KOREAN_KOREA.KO16MSWIN949    #한글(추천:지원캐릭터가 더 많음 -뷃,숖..)     export NLS_LANG=AMERICAN_AMERICA.UTF8           #유니코드     #################################################### #### 캐릭터 셋 설정 확인     SELECT NAME,VALUE$ FROM PROPS$ WHERE NAME ='NLS_LANGUAGE' OR NAME ='NLS_TERRITORY' OR NAME ='NLS_CHARACTERSET'; #################################################### #### 오라클 캐릭터 셋 변경     update props$ set VALUE$='UTF-8' where name='NLS_CHARACTERSET';     update props$ set VALUE$='KO16MSWIN949' where name='NLS_CHARACTERSET

좀비프로세스 죽이기

ps -ef | grep defunct | awk '{print $3}' | xargs kill -9

apache mpm 설정(펌)

1. 전제 조건 - apache 설치 시에 아래와 같이, 반드시   --with-mpm=worker  옵션을 설정 하고 설치한다.     이 옵션을 주지 않을 경우, Default인 Prefork방식으로 설치된다(Linux에 한함) ================================================================ ./configure --prefix=/home/paint/apache-2.2.15 --enable-mods-shared=all --enable-module=so --enable-so   --with-mpm=worker ================================================================ * 현재 worker 모듈 설치 되었는지 확인법 - "httpd -l" 명령으로 현재 설치된 Apache가 worker방식으로 설치되었는지 확인할 수 있다. ============================================ # httpd -l Compiled in modules:   core.c   worker.c   http_core.c   mod_so.c ============================================ 또는, httpd -V 명령으로 확인 가능하다. (V는 대문자) ============================================ # httpd -V Server version: Apache/2.2.15 (Unix) Server built:   Jun 30 2010 16:59:45 Server's Module Magic Number: 20051115:24 Server loaded:  APR 1.4.2, APR-Util 1.3.9 Compiled using: APR 1.4.2, APR-Util 1.3.9 Ar

Mysql 백업 및 복구

MySQL 백업 및 복구 - MySQL 디렉토리 전체를 압축 백업하기 mysql dir : /var/lib (데이터베이스 디렉토리) [root@byungun lib]# tar cvfpz mysql_dir_tar.gz /var/lib/mysql - 특정 데이터베이스 백업과 복구 백업 형식 : mysqldump -u DB계정명 -p DB명 > 저장할파일명 복구 형식 : mysql -u DB계정명 -p DB명 < 저장할파일명 # mysql DB 백업 [root@byungun DB_backup]# mysqldump -u root -p mysql > mysqldb.sql Enter password: # mysql DB 생성 [root@byungun DB_backup]# mysqladmin -u root -p create mysql Enter password: # mysql DB 복구 [root@byungun DB_backup]# mysql -u root -p mysql < mysqldb.sql Enter password: - 특정 데이터베이스의 특정 테이블 백업과 복구 백업 형식 : mysqldump -u DB계정명 -p DB명 Table명 > 저장할파일명 복구 형식 : mysql -u DB계정명 -p DB명 < 저장할파일명 # mysql DB Table 백업 [root@byungun DB_backup]# mysqldump -u root -p testdb testtable > testtable_table.sql Enter password: # mysql DB Table 복구 [root@byungun DB_backup]# mysql -u root -p testdb < testtable_table.sql Enter password: - 여러 개의 데이터베이스 한 번에 백업과 복구 백업 형식 : mysqldump -u DB계정명 -p --databases [옵션] DB

max Client 늘리기

apache 1.3.x 버전 대를 제외한 (1.3은 max값 1024으로 설정) apache 2.0.x, apache 2.2.x 에서는 max client 가 기본설정값인 150 으로 설정되어 있습니다. 따라서 max 값을 변경하고자 할 경우 다음과 같이 환경설정 파일에서 수정하면 됩니다. ※ apache 2.0.x, 2.2.x 서버는 worker 방식으로 동작하며, 컴파일시 자동으로 max 값은 패치되어 있습니다. 1. apache 2.0.x /usr/local/apache/conf/httpd.conf 에서 수정합니다. 〈IfModule worker.c> StartServers         2 -> 32 MaxClients         150 -> 1024 or 2048 값으로 수정 (max: 2048) MinSpareThreads     25 MaxSpareThreads     75 ThreadsPerChild     25 -> 64 값으로 수정 MaxRequestsPerChild  0 〈/IfModule> 수정후 apache 데몬 재시작 2. apache 2.2.x 먼저 /usr/local/apache/conf/httpd.conf 에서 419번째 줄쯤 Include conf/extra/httpd-mpm.conf 주석해제후 저장합니다. /usr/local/apache/conf/extra/httpd-mpm.conf 수정합니다. 〈IfModule mpm_worker_module>     StartServers          2 -> 32     MaxClients          150 -> 1024 or 2048 값으로 수정 (max: 2048)     MinSpareThreads      25     MaxSpareThreads      75     ThreadsPerChild      25 -> 64 값으로 수정     MaxRequestsPerChild  

DB LINK

'A' DB   --- DB Link --→ 'B' DB  (로컬)                          (원격지) 1. 로컬 'A' DB 의 tnsnames.ora 파일에 원격지 'B' DB 접속 정보 추가 ex) B_DB  =   (DESCRIPTION =     (ADDRESS_LIST =        (ADDRESS = (PROTOCOL = TCP) (HOST = 192.168.0.1) (PORT = 1521))     )     (CONNECT_DATA =        (SID = ORA9)     )   ) ※ 'B' DB 접속 정보가 올바르게 입력되었는지 확인 : tnsping 명령으로 확인할 수 있다. tnsping  B_DB 2. DB Link 설정 명령 CREATE [PUBLIC] DATABASE LINK  DB LINK 이름 CONNECT TO  유저명 IDENTIFIED BY  비밀번호 USING  '서비스 이름' ex) CREATE DATABASE LINK  DBLK_B_DB CONNECT TO  SCOTT IDENTIFIED BY  TIGER USING  'B_DB'   ※ tnsnames.ora 추가 없이 DB Link 설정하기 tnsnames.ora 에 원격지 'B' DB 정보 추가 없이 아래와 같이 CREATE DATABASE LINK 명령에 직접 기술함으로 추가할 수도 있다. ex) CREATE DATABASE LINK   DBLK_B_DB CONNECT TO   SCOTT IDENTIFIED BY   TIGER USING   '(DESCRIPTION =                (ADDRESS_LIST =                    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))             

UTF-8 설정

SELECT * FROM sys.props$ where name='NLS_CHARACTERSET'; update sys.props$ set value$='UTF8' where name='NLS_CHARACTERSET'; update sys.props$ set value$='UTF8' where name='NLS_NCHAR_CHARACTERSET'; update sys.props$ set value$='KOREAN_KOREA.UTF8' where name='NLS_LANGUAGE';

오라클 DMP 생성및 복원

su - oracle //오라클 계정으로 변경(권한부여 반드시 '-' 사용) conn sys/as sysdba - 접속 * oracle dump파일 생성  ./exp system/manager owner=namo_pinetree file='/home/sysoper/namo_pinetree.dmp' 기본적으로 복원하고자 하는 대상이 되는 데이타 베이스의 테이블 스페이스는 export 받은 dump파일의 테이블스페이스와 스키마를 일치시켜야한다. 1. 테이블스페이스 생성 create tablespace sanrimji datafile '/home/oracle/oradata/webhosti/sanrimji.dbf' size 400M AUTOEXTEND ON NEXT 100M MAXSIZE 2000M online 2. 테이블스페이스 사용자생성 (기존 스키마와 동일하게 user명을 세팅한다.) create user sanrimji identified by "sanrimji" default tablespace sanrimji temporary tablespace temp; 3. 테이블스페이스 권한부여 grant resource, connect to sanrimji; 4. 테이블스페이스 조각모음 alter tablespace sanrimji coalesce; 5. dump Import ./imp userid=system/manager file='/home/oracle/dump/sanrimji.dmp' fromuser=sanrimji touser=sanrimji * 주석 테이블스페이스 삭제 > drop tablespace sanrimji; 사용자삭제 > drop user sanrimji cascade coalesce > extent가 할당/해제되다 보면 테이블스페이스내 free한 extent가 연

mysql 설정

mysql 설정 파일 : etc/my.cnf 1. 대소문자 구분해제 my.cnf 파일 mysqld 항목에 lower_case_table_names = 1 추가 [mysqld] ... lower_case_table_names = 1 <= 추가 2. utf8 설정 [client] ... default-character-set=utf8 [mysqld] ... character-set-client-handshake=FALSE init_connect="SET collation_connection = utf8_general_ci" init_connect="SET NAMES utf8" character-set-server = utf8 collation-server = utf8_general_ci -- 테이블 생성시  create table tempdbmanager ( profesor VARCHAR(200) null , major VARCHAR(400) null , research VARCHAR(400) null , doc VARCHAR(400) null , spc VARCHAR(400) null ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ==> mysql 재시작 killall mysqld mysqld_safe &

cronolog 설치

1. cronolog 내려받기 wget http://cronolog.org/download/cronolog-1.6.2.tar.gz 2. cronolog 설치 [root@byungun cronolog-1.6.2]# ./configure --prefix=/usr/local/cronolog [root@byungun cronolog-1.6.2]# make && make install 3. cronolog 링크 [root@byungun cronolog-1.6.2]# ln -s /usr/local/cronolog/sbin/cronolog /usr/sbin/cronolog 4. cronolog 설정(httpd.conf) ErrorLog "|/usr/sbin/cronolog /var/logs/byungun.com-error-%Y%m%d.log" TransferLog "|/usr/sbin/cronolog /var/logs/byungun.com-access-%Y%m%d.log"

리눅스에서 소스 패키지 설치/제거하기

요즘 (2000년대 후반) 나오는 리눅스 배포판들은 패키지 관리를 깔끔하게 해주기 때문에 원하는 프로그램을 마우스 클릭 한두번으로 설치하고 사용할 수 있지만, 그게 여의치 않은 경우가 있죠. 예를 들면 원하는 프로그램이 패키지 목록에 없을 때라던가, 아니면 관리자 권한이 없어 프로그램을 마음대로 설치할 수 없는 경우요. 그럴 때는 소스를 직접 다운받아서 설치하고, 제거해야 합니다. 리눅스 사용자들은 아마 다 알고 계시겠지만, 그래도 저같은 리눅스 초보에게는 tar.gz로 묶인 소스코드 뭉치를 던져주고 알아서 설치를 하라고 하면 머리가 아파오지요. 우리 모르는 사람들끼리 서로서로 설치/제거법을 알아보아요. 설치 준비하기 예를 들어 설명해봅시다. 저는 요즘 하는 일 때문에 ImageMagick이라는 라이브러리가 필요합니다. 학교에서 사용하는 서버는 우분투 리눅스 5.10인데, 우분투의 친절한 패키지 관리자를 통해 ImageMagick 을 설치할 수는 있긴 하지만... 버전이 6.2.xx 네요. 제게 필요한 버전은 6.3 이상이므로, 6.3 버전 소스 코드를 다운받아 직접 설치하기로 했습니다. 만약 우분투를 쓰고 계시다면, 그리고 소스 코드 컴파일을 한번도 해본 적이 없다면, (혹은 컴파일이란 게 뭔지 모르신다면) 컴파일과 설치를 위한 기본 도구들을 먼저 설치해야 합니다. 설치는 간단합니다. 시냅틱 패키지 관리자나, sudo aptitude를 이용해서  build-essential  패키지를 설치하세요. 대부분의 다른 리눅스 배포판들은 gcc / make / ld 등의 도구들이 다 깔려 있습니다. 다음으로 진행합시다. 소스 코드 다운받기 구글로 검색해서 ImageMagick의 홈페이지를 찾았습니다. 다운로드 페이지를 잘 읽어보고 원하는 소스 코드를 다운받습니다. 저의 경우 주소는 ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz 이렇게 되네요. 웹 브라우저로 검색해서 다운받는

linux 네트워크 관련

방화벽 처리 # service iptables status # iptables -L  : 방화벽 설정 확인 # iptables -A INPUT -p tcp --dport 3306 -j ACCEPT  : 3306포트 방화벽 뚫어주기 # service iptables save : 설정한 내용을 저장한다. # /etc/init.d/iptables restart : 포트변경후 iptables 재시작 예를 들면 ) FTP port 21번을 열고 싶다. #iptables -I INPUT 1 -p tcp --dport 21 -j ACCEPT #iptables -I OUTPUT 1 -p tcp --dport 21 -j ACCEPT #service iptables save // 신규로 전체설정을 하는 경우 #/etc/init.d/iptables restart // vi로 iptables를 편집한경우 네트워크 관련 포트 스캔 nc -v -z 192.168.0.2 1-1000 내부 포트 스캔 netstat -nap 열려있는 포트스캔 netstat -nap | grep LISTEN ssh연결 ssh [user]@[ip address] -p [port] 설치 rpm -Uvh [fileName]

apache tomcat 연동

RedHat Linux 기반의 Sulinux 1.5 ( http://www.sulinux.net/ ) Apache 2.2.4 ( http://www.apache.org/  - httpd) Mysql 5.0.37 ( http://www.mysql.com/ ) Tomcat 6.0.10 ( http://www.apache.org/  - tomcat ) JDK 6.0 ( http://java.sun.com/ ) Apache-Tomcat Connector (Jk Connector 1.2.21) ( http://www.apache.org/  - tomcat - connector) 모두  linux 용, Non-RPM 버전으로 받아서 설치하였음. 받은 모든 파일들은 /usr/local/ 로 ftp 전송등으로 복사. Mysql SHELL> tar xzvf mysql파일명.확장자 SHELL> ln -s /usr/local/mysql디렉토리명  mysql                       mysql디렉토리에 대한 링크를 만듬. (윈도우의 바로가기 같은 개념--;) SHELL> cd mysql SHELL> adduser -M mysql SHELL> chown -R root /usr/local/mysql SHELL> chown -R mysql /usr/local/mysql/data SHELL> ./configure 자동으로 실행까지 한다. SHELL> cp /usr/local/mysql/support-files/my-medium.cnf   /etc/my.cnf SHELL> ps             (mysqld_safe 가 있는지 확인.) SHELL> cd bin  (/usr/local/mysql/bin) SHELL> ./mysqladmin -u root password 'mysql root계정 비밀번호' SHELL> ./mysql -u root -p