레이블이 시스템관리인 게시물을 표시합니다. 모든 게시물 표시
레이블이 시스템관리인 게시물을 표시합니다. 모든 게시물 표시

2009년 9월 3일 목요일

goldwave에서 mp3파일로 저장하기

자동으로 되는건 아니고 mp3변환을 위해선 확장 기능을 설치해야 함

어렵진 않고 free encoder를 다운 받아서 설치 하면 된다. 

 

연관 사이트: http://lame.sourceforge.net/

lame_enc.dll을 goldwave폴더 밑에 설치하면 확장 기능 설치 끝.

이 글은 스프링노트에서 작성되었습니다.

2009년 6월 17일 수요일

crontab에 작업 watchdog 설정.

perl로 watchdog 프로그램을 하나 만든 후 crontab에 작업을 등록함
[root@pimz13 ~]# crontab -e
00,5,10,15,19,20,25,30,35,38,40,45,50,55 * * * * /usr/bin/perl /root/watchdog.sh
5분에 한 번씩 watchdog을 실행 함

crontab은 환경을 전혀 load하지 않는다. 그러므로 shell 프로그램에서 사용자 환경을 load 한 후
perl로 만든 프로세스 관리 프로그램을 실행해야 함.

#!/bin/sh
. ~root/.bash_profile
perl /root/watchdog.pl

등록되지 않은 프로세스들을 검사해서 자동으로 실행한다.


2009년 6월 12일 금요일

[oracle] DBD::Oracle에서 한글이 깨질때.

DBD::Oracle 을 사용해서 쿼리할 경우 한글이 깨진다.
이것은 환경 설정에 export NLS_LANG=AMERICAN_AMERICA.KO16KSC5601 가 설정이 되어 있지 않기 때문이다.
개인 환경설정에 NLS_LANG을 위와 같이 설정하도록 한다.

쉽지만 몇일 헤맸다...된장.

2009년 5월 19일 화요일

mysql 5.x 시대의 시작

그동안 3.x로 서비스를 해 왔는데 드디어 5.x의 시대 개막~~~

mysql> status
--------------
mysql  Ver 14.12 Distrib 5.0.26, for pc-linux-gnu (i686) using  EditLine wrapper

Connection id:          9
Current database:       mysql
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.0.26
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /tmp/mysql.sock
Uptime:                 21 hours 39 min 24 sec

Threads: 1  Questions: 21  Slow queries: 0  Opens: 12  Flush tables: 1  Open tables: 6  Queries per second avg: 0.000
--------------

2009년 5월 15일 금요일

oracle client 설치

oracle-instantclient11.1-basic-11.1.0.7.0-1.i386.rpm
oracle-instantclient11.1-devel-11.1.0.7.0-1.i386.rpm
oracle-instantclient11.1-sqlplus-11.1.0.7.0-1.i386.rpm

rpm 설치
rpm -ivh xxxxxx.rpm

어쨌거나 설치하면
/usr/lib/oracle/11.1/client 
에 설치 완료

- vi /etc/profile

NLS_LANG=.KO16KSC5601
TNS_ADMIN="/usr/lib/oracle/network/admin"
LD_LIBRARY_PATH=/usr/lib/oracle/11.1/client/lib
export TNS_ADMIN
export LD_LIBRARY_PATH
export NLS_LANG

2008년 11월 26일 수요일

ubuntu에서 apm설치

우분투 리눅스에서 APM(Apache+Php+MySQL)을 설치해 보도록 하겠습니다.

이 글은 컴파일해서 쓰는게 아니라 패키지 자체설치로 초보자도 간단하게 설치해볼수 있습니다.

APM이란 리눅스에서 웹서버를 구성할때 많이 쓰는 프로그램의 일반적인 통합명칭입니다.

부르기 쉽게 한데로 모아서 APM이라고 부릅니다. 요즘은 LAMP(Linux + Apache + MySQL + Php/Perl,Python)환경 이라고도 부르기도 합니다.

아파치(Apache)는 웹서버 자체로서 일반적인 프로토콜인 Http프로토콜을 사용합니다. 또한 Https,ftp등도 지원을 하게 됩니다.

MySQL은 데이터베이스 엔진으로서 각종 게시판이나 데이터베이스를 사용해야할때 많이 쓰이는 프로그램입니다. MySQL뿐만 아니라 PostgresSQL도 사용이 가능합니다.

PHP는 스크립트언어로서 웹페이지를 구성할수 있는 언어중 하나입니다. 많은 웹 프로그램들이 php로 작성 되고 있습니다.


일반적으로 설치순서는 Apache -> MySQL -> PHP 등으로 이루어 지게 됩니다.


1) 설치

1.Apache

먼저 Apache를 설치하여 보겠습니다. 버전은 apache2버전을 기준으로 하겠습니다.

터미널을 열고 다음 명령을 입력합니다.

 

sudo apt-get install apache2


다음으로 mysql을 인증을 위한 모듈을 설치하겠습니다.


sudo apt-get install libapache2-mod-auth-mysql


다음으로 MySQL


sudo apt-get install mysql-server mysql-client

설치가 완료되면 MySQL서버가 자동으로 시작이 됩니다.


마지막으로 PHP 버전은 PHP5 기준으로 하겠습니다.

마찬가지로 터미널에서 다음을 입력합니다.

sudo apt-get install php5-common php5 libapache2-mod-php5

MySQL과 연동하기 위한 모듈을 설치합니다.

sudo apt-get install php5-mysql

이상으로 설치가 완료 되었습니다.


아파치 웹서버를 제 시작하겠습니다.

sudo /etc/init.d/apache2 restart

MySQL서버도 정상적으로 작동하는지 확인해 보고 작동을 안한다면 restart 를 해줍니다.

sudo netstat -tap | grep mysql

명령을 줬을때

tcp 0 0 localhost.localdomain:mysql *:* LISTEN -

와 비슷한 것을 보면 정상이고 그렇지 않다면

sudo /etc/init.d/mysql restart

로 재시작을 해줍니다.


모든게 정상이라면

에디터를 열고 웹서버의 디렉토리(일반적으로 "/var/www" 에서 phpinfo.php라는 파일을 만들고 다음의 소스코드를 넣어 줍니다.

  1. <?php
  2. print_r(phpinfo());
  3. ?>

그리고 웹브라우저를 열고 실행을 시켜봅니다.


일반적으로 http://호스트주소/phpinfo.php 로 주소를 열면 됩니다.


다음과 같은 화면이 나오면 웹서버를 위한 환경이 구성이 되었습니다.

스크롤을 내려 Apache 와 MySQL 등을 찾아 제대로 연결이 되었는지 확인해 봅니다.

각종 사항은 설정마다 다르게 나올것입니다.

2008년 11월 13일 목요일

mySQL 서비스 정리

mySQL은 GPL 라이센스 이다.
  흠 GPL 라이센스에 대해 읽은 것은 많은데 딱히 뭐라 설명하긴 뭐하네.

mySQL standard
   무료이며 누구나 다운 받아 사용할 수 있다.

mySQL enterprise
    유료이며 지원을 받을 수 있고 추가적으로 모니터링 솔루션이 제공된다.

mySQL cluster
    무료이지만 지원을 받지 않고 사용하기 불가능 할 것 같다.
    내용은 혁신적이다 read/ write를 분리하며 failover도 제공한다.

mySQL embedded
    C라이브러리로 제공되며 s/w혹은 h/w 제품을 개발할때 자료 관리를 할 수 있도록 해준다. 프로세스에 mysql을 숨긴다.

Goals of mySQL
    performance, easy to use, reliabilty - 흠 우리랑 100% 동일한데..ㅋㅋ

하지만 일반(우리)와의 차이점 이라면
    이거 좋아?? -> 흠 우린 언제 좋아지나.

경쟁 우위
    storage engine, engine에 따라 memory, store를 결정할 수 있다.
    사용 목적에 따라 db engine의 변경도 자유로움

제공하는 서비스
    level     : bronze, silver, gold, platinum
    access : 7   , 16, unlimit, unlimit
    knowledge base: v,v,v,v
    emergency: x, x, 1hour, 30min

    위와 같이 고객 서비스 차별화를 통해 돈을 벌 고 있음. 해도 그만 안 해도 그만 헌데 하면 막 좋을 것 같은 이런 기분이랄까....


mySQL cluster
    network distribute server 라고 하는데 내용인 즉슨 여러 서버를 tcp/ip로 묶어 작은 패킷을 사용해 데이터를 서로 공유 한다고 함 ( xml을 사용하지 않는것을 강조 했는데 쓸데없는 overhead를 줄이기 위해서 라고 함 그것을 binary protocol이라고 했는데 뭔지 모르겠음), 위에서도 언급했다시피 storage engine에 따라 사용 목적이 다른데 isam engine같은 경우 read는 빠르나 transaction 처리가 없다 이럴때 사용자는 innoDB engine을 사용하는 db에 내용을 넣고 sync된 데이터는 isam engine에서 읽어가면 된다...말 어렵군..

   
사용자 삽입 이미지

내가 원한 그림은 아닌데...모 이런 식임..

그리고 또 하나 중요한 비즈니스는 교육
    DBA, Developer등의 교육이 있을 뿐 아니라 강사가 되기 위한 교육도 있음. 흠 강사라.

Support에 대해선
    support is one reason of choose mysql, all suppotor can fix souce code

case study
    adobe cs는 mysql embedded 솔루션이 들어가있음

apache
    mod_memcached 란것이 있음 - mod_perl과 비슷하게 메모리에 상주해서 mysql의 performance를 높여 주는기능 인듯

performance tunning service
    benchmark tool사용
    scenario를 잘 구성해서 test를 해봐야 함.
    multi user가 access해야 함 등등의 조건이 있었음
    * 가장 중요한 핵심은 테스트 환경을 올바로 구성해야 제대로 된 데이터를 뽑아 낼 수 있음

    이전, 이후, bottle neck분석 등이 된 되는 지식 서비스..

my.conf 에 대해
    mysql의 설정은 my.conf를 통해서 이루어 진다.

show status
    상태 확인

sort_buffer_size와 관련된 parameter
    > show_status 명령
     | Sort_merge_passes        | 3078       | !!shold be zero
     우리 서버는 3078 이나 되네..흠흠...sort_buffer_size를 늘려야 함


join_buffer_size
query_cache_size
query_cache_type
    > Qcache_hits - to get data
    > Qcache_lowmem_prunes

show innodb stats
    InnoDB_buffer_pool_size
    InnoDB_buffer_file_size
우리는 innoDB를 사용하진 않음.

show status like '%key%';

여러 팁 ( myisam engine )
    sort할 필드도 index를 만들어 줘야 함
    declare not null if true; - 이건 지금도 사용하는 중
    key(a,b) 일 경우 where b=5 만 사용할 경우 index를 사용하지 않는다.
        정말일까?

unique index, btree index, force index에 관한 언급이 있었음

status 초기화를 통해 상태를 더욱 잘 볼 수 있음
flush status;
run query;
show status;
흠 데이터가 너무 커서 서버를 리부팅 해야 할까??

clustering != Replication
    뭐가 다른데?

Memcached clustering

사용자 삽입 이미지
메모리에 db를 올리는건데 우리 orders자료는 수백만 건인데 어찌 다 올리지? 가능할까?

case 또 나옴
    leapfrog school house 란 교육용 solution만드는 회사 소개 함
        classroom management system

    adobe 는 libmysqld라는 library사용 중
    POS 나 biotech에서도 사용 중

    zimbra - collaboration tool에서도 사용 중
        예전에 본 적 있는데 혁신적이던데.
 
    S2 NetBox - security h/w embedded linux & mysql

mysql 2008

mySQL이 sun에 흡수되고서는 확실히 우리나라에서 마케팅이 활발해 졌습니다.

sun도 모든 os를 open했으며 mySQL을 도입 함으로써 오픈소스 시장의 법칙을 확실히 깨닫고 있다는 느낌입니다.

제가 생각하는 오픈소스의 법칙은 뭐 간단합니다.
일단 개발을 하고 관심있는 사람들을 끌어 들이죠, 물론 참여하기 좋아하는 사람들이 있기 마련이고 일단 발을 들여놓은 사람들은 활동적이고 열정적인 사람일 가능성이 많죠, 이거 참 좋으네 후끈..사람 구하기가 정말 힘든데 ㅎㅎㅎ

그렇다면 돈도 안 들이고 함께 구할 사람도 구하며 무료이기 때문에 사용자를 넓힐 수 있는거죠, 물론 먹고 살 걱정이 있어선 안되겠죠, 자신의 일 80, 나머지 20 입니다.

그러다 일이 잘되면 회사를 만들고 비즈니스를 하되 프로그램 판매가 아닌 컨설팅 및 support가 주된 수익 모델이 되는거죠, 물론 enterprise버젼은 추가 기능과 함께 서비스도 구매 해야 하고 말이죠.

개인도 여러개의 오픈소스 프로젝트에 참여 할 수도 있겠죠, 물론 성공하는 프로젝트도 있겠지만 수 많은 실패 하는 프로젝트도 있을 겁니다. 자연계의 경우를 보더라도 수 많은 실패가 있어야 그 중 성공이 탄생하는 법이죠, 거대 기업이 오픈 소스를 이기기 힘든게 이 이유라고 합니다.

거대 기업은 기업의 특성상 수 많은 실패를 할 수는 없거든요. 그들은 돈이 될만한 프로젝트만을 진행하며 한 번 진행할때 올인할 수 밖에 없는 특성을 가지고 있습니다.

흠 어떤 오픈소스 프로젝트를 해봐야 할까? 흠흠...

sun에서 공식 블로그를 열었다고 대대적으로 홍보를 하더라구요. 헌데 오류나네요

어제 mySQL 2008 컨퍼런스에 갔더니 공식 블로그에 참여 하라고 대대적 홍보를 하더라구요.
냉큼 들어가서 가입을 해 봤죠..
사용자 삽입 이미지
모 이멜을 넣는 부분이 없는데도 불구하고 오류 메시지는 email이 없다는 것 같으네요.
이게 저만 발생하는 오류 일까요?
ㅋㅋㅋ

오후에 또 한 번 가입 해 봐야겠습니다.

2008년 9월 29일 월요일

ubuntu란 무엇인가?

vmware에서 이클립스 작업을 해볼까 하는데 아무래도 window계열보다는 linux계열이 나을 것 같다.

일단 Ubuntu란 단어는 생소해 보인다. 무슨 뜻일가? 남아프리카에서 사용하는 사람과 사람의 관계와 협동에 관심을 갖는 줄루족과 Xhosa족의 언어에서 나온 말이었다.
흠 왠지 선한 느낌이 든다.


Ubuntu는 노트북, 데스크탑, 서버에 적합하도록 개발된 운영 시스템이다.

이 것을 집이건 회사건 ubuntu는 필요한 모든 워드프로와 이메일부터 서버와 프로그래밍 툴에 이르는 모든 application을 제공해줄 것이다.

Ubuntu는 항상 무료로 제공될 것이며 이것을 친구에게 배포하던 마누라에게 배포하던 마음대로이다.

Ubuntu는 매 6개월마다 새로운 버젼이 제공될 것이며 항상 최고의 프로그램을 사용할 수 있을 것이다. 이것은 또한 보안적인 측면도 많이 고려 되었으며 적어도 18개월에 한 번은 보안 업데이트가 무상으로 진행된다.

Ubuntu Desktop version에서는 다음과 같은것들이 제공된다.
웹 서핑을 할 수 있고(firefox가 제공된다), 문서 생성(Word Processor, think free office 설치) 설치된 office는 ms office나 star office와 호환된다.
내가 원하는 것은 eclipse를 실행하는건데 금일 (2008-9-26) 설치 예정임.

최소 사양도 256M램에 4G의 스페이스만 있으면 설치가 가능하다. 게임을 하지도 않지만 만약 PC게임이 하고 싶으면 어쩌지?

결국 ubuntu와 이클립스는 설치 했건만 정작 flex builder는 리눅스 버젼이 없었다. ㅋㅋㅋ
모야 당연히 있을줄 알았건만. 쩝

2008년 9월 9일 화요일

메크로 프로그램 입니다.

이거 재미나네요.
http://gmacro.er.ro/

예전에도 매크로 프로그램 사용해 본적 있는데 기능이 많으니 복잡하기만 하더이다.
이게 짱인듯 ㅋㅋㅋㅋ

2008년 8월 27일 수요일

HA, 클러스터링, 이중화, RAID

1) HA

: High Availability의 준말

: 번역 - 고가용성, 고가용도

: 가용성은 시스템 고장 발생시 빠른 시간내에 치료하여 다시 정상적으로 서비스할 수 있는 상태를 분석하기 위해서 사용되는 척도입니다. 따라서 고가용성이란 결함 또는 고장 발생 빈도를 줄이면서 결함 발생시 빠르게 수리하여 일년중 대략 30분 가량만 서비스 불능 상태이고 나머진 정상적인 서비스가 가능하다는 것을 의미합니다. 99.999%


2) 클러스터링

: Clustering

: PC 또는 서버를 하나의 시스템처럼 관리 및 운영하기 위해 사용하는 기술입니다. 클러스터 시스템의 응용분야는 고가용성 클러스터 시스템, 고성능 클러스터 시스템, 웹서버 클러스터 시스템이 있습니다. 먼저 고가용성 클러스터 시스템이란 PC 또는 서버를 연결하는 목적이 가용성을 높여 고가용성을 제공하기 위해 구성된 시스템을 말합니다. 나머지 고성능이나 웹서버 또한 비슷하게 이해하시면 됩니다.


3) 이중화

: Duplex 또는 Duplicate

: 위에서 가용성을 높인다는 표현을 많이 사용하였는데, 그럼 어떻게 하면 될까요? 이를 위한 가장 기본적인 방법이 이중화입니다. 용어에서 힌트를 얻을 수 있는 것처럼 서버를 한대만 두는 것이 아니라 여분서버 하나를 더 비치하는 것입니다. 즉 서버 2대를 사용하는 것이죠. 이때 관리정책에 따라 Hot과 Cold 두가지 방식이 있습니다. Hot은 서버 2대를 동시에 동작을 시켜 한대의 서버가 고장이 발생하였을 경우 다른 한대의 서버가 바로 고장난 서버에서 제공하던 서비스를 인계받아 서비스를 하게 하는 것입니다. Cold는 우선 1대만 서비스를 하게 했다가 고장이 발생하면 다른 서버를 동작시키고 그 후 고장난 서버의 서비스를 인계받아 서비스를 제공하는 것입니다.


4) RAID

: Redundant Array of Inexpensive Disks의 약자

: 어떤 사람은 Inexpensive 대신에 Independent를 사용하는 사람도 있습니다.

: RAID는 하드디스크 다시 말해서 저장장치를 중복하는 것입니다. 목적은 위에 서버를 이중화하는 것과 비슷합니다. 저장장치의 고장으로 인한 가용도 감소를 여러 저장장치를 중복하여 가용도를 높이기 위한 것이죠. 이 또한 메커니즘에 따라 RAID0~RIAD5 방식이 있습니다.

자세한 구현 방법이나 원리는 http://www.linux-ha.org/ 을 참고하세요. 리눅스 기반으로 클러스터를 만들어 HA를 제공하기 위한 프로젝트로써 소스가 모두 공개이고 관련 기술 및 개념에 대한 document도 비교적 정리가 잘되어 있습니다.

2008년 5월 14일 수요일

group 별 데이터의 row의 개수를 셀 때.

이럴때 사용하는것이 distinct임

SELECT COUNT(DISTINCT order_id) cnt FROM orders 
           where _date >= '2008-01-15'
             and _date <= '2008-05-14'
            
모 위와 비슷한 식으로써 사용이 가능

2008년 2월 14일 목요일

테이블 덤프 dump

Table을 Backup하기 전에 Lock을 하는게 좋다.

Flush는 active한 전체 index가 backup전에 disk에 기록되도록 하는 명령임

Backup을 수행하기 전에 Table을 Lock하구 Fush Table해야 함.


Syntax :
Backup Table 명령을 실행하면된다네..

Syntax :

BACKUP TABLE tbl_name [, tbl_name] ... TO '/path/to/backup/directory'



또 다른 방법..

mysqldump 프로그램이나 mysqlhotcopy script 을 사용해도 됨

 

shell> mysqldump --opt db_name > backup-file.sql

shell> mysqldump [options] db_name [tables]

okis의 예

 mysqldump --opt pimz ok_product ok_review -p > /home/pimz/public_html/okis/dump_1.sql


Restore

shell> mysql db_name < backup-file.sql

2007년 10월 31일 수요일

query한 결과를 table에 넣기

예제:
insert into aa ( id )
         select user_name as id from user;

>>-INSERT  INTO--table_name--+-----------------------+---------->
                             |    .-,-----------.    |
                             |    V             |    |
                             '-(----column_name-+--)-'

                .-,-----------.
                V             |
>--+-VALUES--(----+-literal-+-+--)-+---------------------------><
   |              +-NULL----+      |
   |              '-DEFAULT-'      |
   +-select_statement--------------+
   '-DEFAULT VALUES----------------'


table 생성

create table Q1_00_Sales
   (product char(30), month char(5), dollars dec(7,2));


값 입력




insert into Q1_00_Sales (product, month, dollars) select prod_name, month, dollars from sales natural join product natural join period natural join store where qtr = 'Q1_00' and city like 'Los Gatos%'

2007년 10월 26일 금요일

unpack 옵션들

TAR, Unpacking Packages


There are packages in many different formats and I thought you would like to know all the different options for unpacking them:


.tar.gz
CODE
$ tar -xvzf package_name.tar.gz

( x= extract v=verbose z=(un)compress f=file )


.tgz
CODE
$ tar -xvzf package_name.tgz



.tar.z
CODE
$ tar -xvzf package_name.tar.z



.tar.bz2
CODE
$ tar -jxvf package_name.tar.bz2

( j=bzip2 )


.gz
CODE
$ gunzip package_name.gz



.bz2
CODE
$ bunzip2 package_name.bz2

2007년 10월 24일 수요일

[query] 특정 문자 삭제, 특정 문자 추가

# 특정 문자 삭제
update products set name= replace(name, '(K)', '') where  product_id="8B3OJ02SBKZ55";  

# 특정 문자 삽입
update products set name= CONCAT('(K)', name) where  product_id=' 8B26T100GRZXL ;

2007년 9월 20일 목요일

query결과 file 저장 샘플

SELECT seq,pack,trans_no,collect_date,trans_date_pos,status,order_cs,trans_who INTO OUTFILE '/tmp/out1.csv'
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
FROM orders where trans_date_pos > '2007-9-4 00-00-00' and trans_date_pos<'2007-9-6 23:59:59' ;

2007년 9월 17일 월요일

[5.0] UNION에 대해서

UNION is used to combine the result from multiple SELECT statements into a single result set

뭘까?