한글을 포함한 글자수의 바이트를 구하는 유용한 함수.


// 바이트구하기
function getStringByte(s,b,i,c){
for(b=i=0;c=s.charCodeAt(i++);b+=c>>11?3:c>>7?2:1);
return b;
}



U+200B의 문자가 들어있는 컬럼을 조회하는방법


1. HEX값 조회

유니코드값을 구글에 조회하면 hex값은 쉽게얻을수있음.

U+200B의 HEX값은 'e2808b' 이다.


2. 조회

SELECT mail_user_seq, common_stat_seq, common_stat_content 

FROM wcf_common_stat 

WHERE mail_user_seq='166' AND common_stat_content like concat("%", UNHEX('e2808b'), "%");


3. replace하기전 테스트 쿼리(해당유니코드문자를 [[[200B]]]로 표기하여 조회)

SELECT mail_user_seq, common_stat_seq, REPLACE(common_stat_content, UNHEX('e2808b'), '[[[200B]]]') 

FROM wcf_common_stat 

WHERE mail_user_seq='166' AND common_stat_content like concat("%", UNHEX('e2808b'), "%");


4. replace

UPDATE wcf_common_stat 

SET common_stat_content=REPLACE(common_stat_content, UNHEX('e2808b'), '') 

WHERE mail_user_seq='166' AND common_stat_content like concat("%", UNHEX('e2808b'), "%");




끝.





IntelliJ는 참좋은툴입니다.

vim에디터또한 제가정말 좋아하는 에디터이죠.

인텔리J에는 에디터를 vim화할수있는 ideavim이란 플러그인이 존재합니다.

하지만 vim플러그인에서 한글입력이 제대로 되지않는 문제가 있습니다.


이미 해당플러그인 개발자에게 보고도 되었습니다.

(https://youtrack.jetbrains.com/issue/VIM-764)

그러나 이 개발자님은 1년반이지나도록 수정을 안해주고있어서

정말 너무나도 답답한 나머지 수정 보았습니다.

(사실 여태껏 꺼놓고 쓰다가 

몇일전부터 너무 불편하여 수정을해서라도 고쳐보자 라는심정으로..)


이하소스는 임시해결방법일뿐이며 오작동할수도있고 문제가생겨도 저에게는책임이 없습니다.

또한 소스수정에있어 문제가 있을시 연락주시면 바로 내리도록하겠습니다.


간단하게

ideavim github레퍼지토리에서 소스를 다운받아 아래부분을 수정하고 빌드하여 쓰면됩니다.

플러그인개발구축환경은 구글링해보면 많이나오는관계로 따로 설명하지 않습니다.


com.maddyhome.idea.vim.VimTypedActionHandler 

위 자바파일의 execute함수부분을 수정합니다.


*기존

@Override
public void execute(@NotNull final Editor editor, final char charTyped, @NotNull final DataContext context) {
if (isEnabled(editor)) {
// Run key handler outside of the key typed command for creating our own undoable commands
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
handler.handleKey(editor, KeyStroke.getKeyStroke(charTyped), new EditorDataContext(editor));
}
catch (Throwable e) {
logger.error(e);
}
}
});
}
else {
origHandler.execute(editor, charTyped, context);
}
}



위부분에서 쓰레드부분을 아래와같이 바꿔줍니다.

*변경후

@Override
public void execute(@NotNull final Editor editor, final char charTyped, @NotNull final DataContext context) {
if (isEnabled(editor)) {
try {
handler.handleKey(editor, KeyStroke.getKeyStroke(charTyped), context);
}
catch (Throwable e) {
logger.error(e);
}
}
else {
origHandler.execute(editor, charTyped, context);
}
}


위 부분을 변경후 빌드하여 플러그인을 재설치하면됩니다.


0.30버전부터 해당증상이 나타난다는 댓글에서 힌트를얻어서

 0.29파일에서 사용된 로직입니다.


다시한번 임시해결방법임을 알려드립니다.

저는 사실 아주 귀찮기때문에 이부분이 왜 쓰레드처리로 변경되었는지는 알지도못하고 알아보고싶지도 않습니다.

하지만 한글사용에 있어 문제가된부분임은 확실해 보입니다.


해당플러그인 개발자님이 하루빨리 정식버전에서 고쳐주시기를 기다립니다.


끝.





보안상 특정IP만 허용 또는 제한할때 유용한 로직입니다.

와일드카드문자 또는 범위로 지정할수 있습니다.


/**
* check if IP address match pattern
*
* @param pattern
* *.*.*.* , 192.168.1.0-255 , *
* @param address
* - 192.168.1.1
* address = 10.2.88.12 pattern = *.*.*.* result: true
* address = 10.2.88.12 pattern = * result: true
* address = 10.2.88.12 pattern = 10.2.88.12-13 result: true
* address = 10.2.88.12 pattern = 10.2.88.13-125 result: false
* @return true if address match pattern
*/
public static boolean checkIPMatching(String pattern, String address)
{
if (pattern.equals("*.*.*.*") || pattern.equals("*"))
return true;

String[] mask = pattern.split("\\.");
String[] ip_address = address.split("\\.");
for (int i = 0; i < mask.length; i++)
{
if (mask[i].equals("*") || mask[i].equals(ip_address[i]))
continue;
else if (mask[i].contains("-"))
{
byte min = Byte.parseByte(mask[i].split("-")[0]);
byte max = Byte.parseByte(mask[i].split("-")[1]);
byte ip = Byte.parseByte(ip_address[i]);
if (ip < min || ip > max)
return false;
}
else
return false;
}
return true;
}


출처: http://www.java2s.com/Code/Java/Network-Protocol/CheckifIPaddressmatchpattern.htm


* 테이블스페이스 조회

SQL> select tablespace_name from dba_tablespaces;


* 테이블스페이스 생성

SQL> create tablespace luuaz_tabspace

  2  datafile 'luuaz_tabspace.dat'

  3  size 10M autoextend on;


* 사용자 생성

SQL> create user luuaz

  2  identified by 1234

  3  default tablespace luuaz_tabspace


* 사용자에게 권한부여

SQL> GRANT connect, resource TO luuaz;

SQL> GRANT unlimited tablespace TO luuaz;


* 접속확인

# sqlplus luuaz/1234@XE


















* 설치 확인

# rpm -qa | grep oracle


* rpm 설치

# rpm -ivh oracle-xe-11.2.0-1.0.x86_64.rpm


* rpm삭제

# rpm -e oracle-xe-11.2.0-1.0.x86_64


의존성문제가 있을경우 

# rpm -e oracle-xe-11.2.0-1.0.x86_64 --nodeps


여러개의 패키지 문제는

# rpm -e oracle-xe-11.2.0-1.0.x86_64 --nodeps --allmatches


끝.


(업무참고)


여러개의 체크박스를 폼으로 태워서 처리후 SQL IN문에 넣는방법


* Model

String[] chk = null;


public String[] getChk() {
return chk;
}

public void setChk(String[] chk) {
this.chk = chk;
}


* Controller

vo.setChk(dbInfoModel.getChk());



* iBatis

<dynamic>
<isNotEmpty property="chk" prepend="AND">
DBSEQ IN
    <iterate property="chk" open="(" close=")" conjunction=",">
    #chk[]#
    </iterate>
    </isNotEmpty>
</dynamic>



'업무 > DB' 카테고리의 다른 글

[mysql] unicode문자 쿼리 및 치환  (1) 2016.03.21
[oracle] 계정생성 및 기타쿼리  (0) 2016.01.12
[iBatis] update문 prepend작성법  (0) 2015.11.26
[mysql] 한글이 물음표로 나올때.  (1) 2015.04.09
mysql 초기설정하기  (0) 2015.02.01
<update id="osAddressDAO.updateAddrGrpMapping" parameterClass="osAddressMap">
UPDATE OS_ADDR_GROUP_MAPPING SET
<dynamic prepend=" " close=" ">
<isNotNull property="new_addr_seq" prepend=",">
ADDR_SEQ = #new_addr_seq#
</isNotNull>
<isNotNull property="new_group_seq" prepend=",">
GROUP_SEQ = #new_group_seq#
</isNotNull>
WHERE
1=1
<isNotEmpty property="addr_seqs" prepend="AND">
ADDR_SEQ IN ($addr_seqs$)
</isNotEmpty>
<isNotEqual property="addr_seq" compareValue="0" prepend="AND">
ADDR_SEQ = #addr_seq#
</isNotEqual>
<isNotEmpty property="group_seq" prepend="AND">
GROUP_SEQ = #group_seq#
</isNotEmpty>
</dynamic>
</update>


 위 dynamic문을 안쓰면 

UPDATE OS_ADDR_GROUP_MAPPING SET ,ADDR_SEQ ~~~ 로 컴마가앞에들어가서 오류가 발생한다.



끝.


localhost/test.php 일때 .php를 없애고싶으면 아래와같이 설정함.


httpd.conf(아마치 설정파일)에서


LoadModule rewrite_module modules/mod_rewrite.so


<IfModule mod_rewrite.c>

Options +MultiViews

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^([^\.]+)$ $1.php [NC,L]

</IfModule>


저장후 아파치 재시작


끝.



위그림처럼 부서이름에 타이핑을 하면 

테이블의 Row내용을 필터링해서 보여줘!



1. 테이블의 tr태그에 class를 먹인다.

<tr class="dept-data-row">



2. jquery문을 작성한다.

$("#searchDeptText").keyup(function() {

var data = this.value.split(" ");

if(this.value=="") {

$(".dept-data-row").show();

return;

}

$(".dept-data-row").hide();

$(".dept-data-row").filter(function (i, v) {

var $t = $(this);

 for (var d = 0; d < data.length; ++d) {

if ($t.is(":contains('" + data[d] + "')")) {

 return true;

}

}

return false;

}).show();

});


정말쉽다.


끝.


'업무 > jQuery/Ajax' 카테고리의 다른 글

[jQuery] Serialize Form data값 변경  (0) 2015.08.31



java.util.logging 을사용하여

간단한 자바프로그램에서 로그를 파일로 출력해본다.


1. logger객체 선언

private static final Logger logger = Logger.getLogger(MongoInsertTest.class.getName());


2. 파일핸들러 선언하고 포맷을 설정한다.

   (기본으로 출력하게되면 XML형식으로 지저분하게 출력되니깡~)

private FileHandler fileHandler;

try {

fileHandler = new FileHandler(System.currentTimeMillis()+MongoInsertTest.class.getName()+".log");


// 모든레벨의 로그를 출력한다.

LogRecord logRecord = new LogRecord(Level.ALL, "");


// 내용만 출력하도록 포맷을 재설정한다.

Formatter formatter = new Formatter() {

@Override

public String format(LogRecord record) {

String message = formatMessage(record);

message += "\n";

return message;

}

};

formatter.formatMessage(logRecord);


// 핸들러에 Formatter를 설정한다.

fileHandler.setFormatter(formatter);


} catch (SecurityException e) {

logger.log(Level.SEVERE, null, e);

} catch (IOException e) {

logger.log(Level.SEVERE, null, e);

}


3. logger객체에 핸들러를 추가한다.

logger.addHandler(fileHandler);


4. 사용한다.

logger.info( 내용 );



이렇게 하면 간단한 자바프로그램에서 로그를 쉽게 출력할수있다.



끝~



Spring Form이용시 

폼데이터를 Serialize할때 밸류값을 변경하려하면 변경이 안되는경우가 발생한다.



그럴때는 아래와같은 함수를 사용하면된다.

function changeSerialize(values,k,v) {

var found = false;

for (i = 0; i < values.length && !found; i++) {

if (values[i].name == k) { 

values[i].name = v;

found = true;

}

}

if(!found) {

values.push(

{

name: k,

value: v

}

);

}

return values;

}




var formData = $("#form아이디").serializeArray();

formData=changeSerialize(formData,"변경대상KEY","변경대상VALUE");


사용은 위와같이하면 됨.


이함수는 변경하려는 오브젝트가 존재하면 값을변경해주고 없다면 추가해준다.



끝.

'업무 > jQuery/Ajax' 카테고리의 다른 글

[jquery] table row 필터링해서 보여주기  (0) 2015.09.11



1. eclipse.ini 수정

 기본

 수정후

-vmargs

-Dfile.encoding=UTF-8

-Dosgi.requiredJavaVersion=1.6

-Xms40m

-Xmx512m

-vmargs

-Dosgi.requiredJavaVersion=1.5

-Xverify:none

-XX:+UseParallelGC

-XX:-UseConcMarkSweepGC

-XX:PermSize=32M

-XX:MaxPermSize=128M

-XX:MaxNewSize=32M

-XX:NewSize=32M

-Xms1024m

-Xmx1024m


-Dosgi.requiredJavaVersion=1.6 => JDK 1.6 이상을 설치했을 경우에 1.6으로 설정하면 속도가 빨라진다.


-Xverify:none => 클래스의 유효성을 검사 생략. (시작 시간이 줄어 빨라진다.)

-XX:+UseParallelGC => 병렬 가비지 컬렉션 사용. (병렬 처리로 속도 향상)

-XX:+AggressiveOpts => 컴파일러의 소수점 최적화 기능을 작동시켜 빨라진다.

-XX:-UseConcMarkSweepGC => 병행 mark-sweep GC 수행하여 이클립스 GUI의 응답을 빠르게한다.

-XX:+CMSIncrementalMode=true => 점진적인 GC


-XX:PermSize=128M        => Permanent Generation(영구 영역) 크기(Out Of Memory 에러시 크기 조절)

-XX:MaxPermSize=128M  => 최대 Permanent Generation 크기

-XX:NewSize=128M         => New Generation(새 영역) 크기

-XX:MaxNewSize=128M   => New Generation(새 영역) 의 최대 크기


-Xms512m : 이클립스가 사용하는 최소 Heap 메모리

-Xmx512m : 이클립스가 사용하는 최대 Heap 메모리

                     최소와 최대를 같은 값으로 설정하면 오르락 내리락 하지않아 빨라진다.




2. 자동폴딩 해제

Preferences - Java - Editor - Folding - [Enable folding] 체크 해제


3. 코드 자동완성기능 해제

Preferences - Java - Editor - Content Assist - [Auto Activation]의 [Enable auto activation] 체크해제


4. 스펠링 체크설정 해제

Preferences - General - Editors - Text Editors - Spelling - [Enable spell checking] 체크 해제


5. 유효성 체크(Validation) 설정 해제

Preferences - Validation 에서 웹관련을 제외하고 체크해제


6. 메모리 사용 상태 표시

Preferences - General - [Show heap status] 체크


7. 에디터 라인번호 표시

Preferences - General - Editors - Text Editors - [Show line numbers] 체크


8. 새프로젝트 기본 인코딩 설정

Preferences - General - Workspace - [Text file encoding]에서 UTF-8 설정


9. Compare 공백 무시하기

Preferences - General - Compare/Patch - [Ignore white space] 체크


10. 저장액션 설정

Preferences - Java - Editor - Save Actions - 

[Perform the selected actions on save] 체크

[Additional actions] 체크

  - 공백없애기 : [Configure...]버튼눌러서 [Remove trailing whitespace] 체크 (All lines)

  - 안쓰는 임포트 지우기: [Configure...]버튼눌러서 Unnecessary Code탭의 [Remove unused imports] 체크


11. 실행/종료 속도 개선

Preferences - General - Startup and Shutdown - Plugins activated on startup에서 체크해제


12. 기타

  - Eclipse Color Theme: http://eclipsecolorthemes.org

  - 에디터 Vim효과(vrapper): http://vrapper.sourceforge.net/update-site/stable

  - SVN(subclipse): http://subclipse.tigris.org/update_1.10.x



끝.






이클립스 svn(subclipse) 플러그인 설치법에 대해 설치할때마다 까먹어서 글로냄겨놈!!

(우분투는 윈도우에 비해 몇가지 단계를 더 필요로합니다.)


설치법의 정식문서는 

http://subclipse.tigris.org/wiki/JavaHL 

여기 참고.



1. libsvn-java 라이브러리(javahl) 설치

* 방법1: 소프트웨어센터에서 libsvn-java 검색후 설치방법



* 방법2: apt-get을 이용해 설치

~$ sudo apt-get install libsvn-java


2. 라이브러리 위치 찾기

~$ sudo find / -name "libsvnjavahl*"

/usr/lib/x86_64-linux-gnu/jni/libsvnjavahl-1.so.0.0.0

/usr/lib/x86_64-linux-gnu/jni/libsvnjavahl-1.so.0

/usr/lib/x86_64-linux-gnu/jni/libsvnjavahl-1.so


위치는 /usr/lib/x86_64-linux-gnu/jni


3. eclipse.ini에 추가

-Djava.library.path=라이브러리경로(여기서는 /usr/lib/x86_64-linux-gnu/jni )


예시

~$ vi eclipse.ini


.....

....

....

-vmargs

-Djava.library.path=/usr/lib/x86_64-linux-gnu/jni

-Dosgi.requiredJavaVersion=1.6

-XX:MaxPermSize=256m

-Xms40m

-Xmx512m



4. 이클립스 실행후 subclipse 설치

* Help > Install new software 

* subclipse - http://subclipse.tigris.org/update_1.10.x  추가 및 설치

   (최신주소는 http://subclipse.tigris.org 요기서 확인!!)

* 이클립스 재시작



5. 끝!






* 문제점.

위와같이 한글이 물음표로 출력된다.


물음표로 출력되었을때 mysql설정은 아래와 같다.

+--------------------------+----------------------------+

| Variable_name            | Value                      |

+--------------------------+----------------------------+

| character_set_client     | latin1                     |

| character_set_connection | latin1                     |

| character_set_database   | utf8                       |

| character_set_filesystem | binary                     |

| character_set_results    | latin1                     |

| character_set_server     | utf8                       |

| character_set_system     | utf8                       |

| character_sets_dir       | /usr/share/mysql/charsets/ |

| collation_connection     | latin1_swedish_ci          |

| collation_database       | utf8_general_ci            |

| collation_server         | utf8_general_ci            |

| completion_type          | 0                          |

| concurrent_insert        | 1                          |

| connect_timeout          | 10                         |

+--------------------------+----------------------------+




* 해결방법

/etc/my.cnf 를 수정하여 CharacterSet을 설정한다.

[client]

..

..

default-character-set = utf8



[mysqld]

..

..

init_connect = SET collation_connection = utf8_general_ci

init_connect = SET NAMES utf8

character-set-server = utf8

collation-server = utf8_general_ci



[mysqldump]

..

..

default-character-set = utf8



[mysql]

..

..

default-character-set = utf8



수정후 mysqld 재시작

# service mysqld restart




* 확인방법


mysql로그인후

mysql> show variables like 'c%';

+--------------------------+----------------------------+

| Variable_name            | Value                      |

+--------------------------+----------------------------+

| character_set_client     | utf8                       |

| character_set_connection | utf8                       |

| character_set_database   | utf8                       |

| character_set_filesystem | binary                     |

| character_set_results    | utf8                       |

| character_set_server     | utf8                       |

| character_set_system     | utf8                       |

| character_sets_dir       | /usr/share/mysql/charsets/ |

| collation_connection     | utf8_general_ci            |

| collation_database       | utf8_general_ci            |

| collation_server         | utf8_general_ci            |

| completion_type          | 0                          |

| concurrent_insert        | 1                          |

| connect_timeout          | 10                         |

+--------------------------+----------------------------+


캐릭셋을 UTF-8로 설정후 한글이 잘출력됨을 확인한다.


끝.








안드로이드 프로젝트 빌드시 아래 Lint오류가 발생한다.

해당문제는 appcompat라이브러리 프로젝트를 사용하고있을때 발생


Duplicate id @+id/image, already defined earlier in this layout


Issue: Checks for duplicate ids within a single layout

Id: DuplicateIds


Within a layout, id's should be unique since otherwise findViewById() can return an unexpected view.


[]



이문제는 이미 AOSP에 보고가 된문제입니다.

https://code.google.com/p/android/issues/detail?id=72760


ADTrev23 업데이트될때부터 문제있었는데

아직까지 해결이 안되고있음.


여튼 해결이안되고있기에

Lint오류체크설정을 살짝 손봐서 임시조치를 해야함~!

(Android Studio에서는 오류가 안난다고함)


1. 해당프로젝트의 [Properties]-[Android Lint Preferences] 로 이동


2. "DuplicateIds" 검색하여 Fatal 을 Warning으로 변경.





임시방편일뿐이며, 근본적인해결은 Google에서 업데이트를 해줘야할것으로 보이고, AndroidStudio툴을 사용하는것도 하나의 방법이다.



끝.



ftp계정을 우분투계정이 아닌

가상유저를 생성하여 관리하게 합니다.


1. 준비작업(계정 데이터베이스생성)

# sudo mkdir /etc/vsftpd

# sudo vi vusers.txt


SAMPLE OUTPUT (vusers.txt)

ftptest    (ID)

12345    (PASSWORD)

luuaz

7777


텍스트파일로 계정을 설정한다음, 실제 데이터베이스파일을 생성합니다.

(db_util패키지 필요)

# db_load -T -t hash -f vusers.txt virtual-user.db

# chmod 600 virtual-user.db



2. vsftpd.conf 설정

# 포트변경

listen_port=2121


# 패시브설정

pasv_enable=YES

pasv_min_port=5001

pasv_max_port=5050



anonymous_enable=NO

local_enable=YES

# Virtual users will use the same privileges as local users.

# It will grant write access to virtual users. Virtual users will use the

# same privileges as anonymous users, which tends to be more restrictive

# (especially in terms of write access).

virtual_use_local_privs=YES

write_enable=YES


# Set the name of the PAM service vsftpd will use

pam_service_name=vsftpd.virtual


# Activates virtual users

guest_enable=YES


# Automatically generate a home directory for each virtual user, based on a template.

# For example, if the home directory of the real user specified via guest_username is

# /home/virtual/$USER, and user_sub_token is set to $USER, then when virtual user vivek

# logs in, he will end up (usually chroot()'ed) in the directory /home/virtual/vivek.

# This option also takes affect if local_root contains user_sub_token.

user_sub_token=$USER


# Usually this is mapped to Apache virtual hosting docroot, so that

# Users can upload files

local_root=/home/vftp/$USER


# Chroot user and lock down to their home dirs

chroot_local_user=YES

chroot_list_enable=NO


# Hide ids from user

hide_ids=YES



3. PAM파일 생성

# sudo vi /etc/pam.d/vsftpd.virtual


OUTPUT (vsftpd.virtual)

auth        required        pam_userdb.so db=/etc/vsftpd/virtual-user

account    required        pam_userdb.so db=/etc/vsftpd/virtual-user

session    required        pam_loginuid.so



4. 사용자디렉토리 생성
# mkdir -p /home/vftp/{ftptest,luuaz}
# chown -R ftp:ftp /home/vftp


5. FTP서버 재시작
# sudo service vsftpd restart


6. 테스트
$ ftp localhost 2121
Connected to localhost.
220 (vsFTPd 3.0.2)
Name (localhost:luuaz): ftptest
331 Please specify the password.
Password: PASSWORD
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

※ 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
    Login failed. 발생시
vsftpd.conf에 아래항목을 추가
allow_writeable_chroot=YES



Reference Documentation:
https://help.ubuntu.com/community/vsftpd



끝.




1. apt

* 패키지 검색

~$ sudo apt-cache search PACKAGE_NAME


* 패키지 정보보기

~$ sudo apt-cache show PACKAGE_NAME


* 패키지 설치

~$ sudo apt-get install PACKAGE_NAME


※ 재설치는

~$ sudo apt-get --reinstall install PACKAGE_NAME


* 패키지 제거

~$ sudo apt-get remove PACKAGE_NAME


※ 설정파일까지 모두 제거할때는

~$ sudo apt-get purge PACKAGE_NAME


* 패키지 새버전 업그레이드

(1) 패키지 인덱스정보를 먼저 업데이트해야함.(오류시 저장소변경은 알아서~)

~$ sudo apt-get update


(2) 업그레이드
~$ sudo apt-get upgrade



2. dpkg

* 설치된 패키지 검색

~$ sudo dpkg -l PACKAGE_NAME


※ 패키지명 정규표현식에 따른 검색은

~$ sudo dpkg -l | grep -i "PACKAGE_NA*"



* 패키지 설치

~$ sudo dpkg -i PACKAGE_FILE_NAME(ex: oracle.deb)



* 패키지 제거

~$ sudo dpkg -r PACKAGE_NAME


※ 설정파일까지 모두 제거할때는 

~$ sudo dpkg --purge PACKAGE_NAME





끝.



* 초기 root 암호 설정하기.

  - mysqladmin으로 하는 방법

$ mysqladmin -u root -p 


  - update문을 이용

$ mysql -u root 


mysql> use mysql;

mysql> update user set password=password('새로운패스워드') where user='root';

mysql> flush privileges;

mysql> quit;



* 계정 관리

* 계정 생성

mysql> create user 생성아이디@localhost identified by '새비밀번호';

mysql> create user 생성아이디@'%' identified by '새비밀번호';


* 계정 삭제

drop user 삭제할아이디@localhost;

drop user 삭제할아이디@'%';


* 데이터베이스 관리

* DB생성

mysql> create database 새로운데이터베이스명;

mysql> create schema 디비명 default character set utf8;


* DB삭제

mysql> drop database DB이름;



* 계정에 DB권한부여

mysql> GRANT ALL PRIVILEGES ON 데이터베이스이름.* TO 계정아이디@localhost identified by '계정비밀번호';

mysql> GRANT ALL PRIVILEGES ON 데이터베이스이름.* TO 계정아이디@'%' identified by '계정비밀번호';


모든권한부여

GRANT ALL PRIVILEGES ON *.* TO 계정아이디@'%' WITH GRANT OPTION; (IP예: '192.168.1.%')






환경: Windows7 64bit, Apache2.2.25


윈도우는 IIS를 이용해서 webdav서버를 구성할수있다.

그런데 내가 설정을못하는건지 아무리 건드려봐도 접속부분에서 오류가 생긴다.

(로컬네트워크에선 괜찮지만 외부접속이라든지 스마트폰에서 접속시 비정상작동..) 또한 왠지 윈도우가 무거워지는거같으며, 나처럼 각 폴더마다 사용자권한을 부여해주려면 계정을 건드려줘야해서 불편했다.


그래서 찾아보던중 친숙한 아파치웹서버를 이용해서 WebDAV를 손쉽게 구축할수 있고, 너무나 깔끔하게 접속이 잘된다.



일단 아파치를 다운받아 설치가 다되있다고 가정하고 포스팅함.

( C:\Apache2.2 디렉토리에 설치했다고 가정)


1. LockDB설정을 위해 C:\Apache2.2\var 폴더 생성

2. conf/httpd.conf 를 편집해 

    webdav구동에 필요한 모듈을 주석해제처리함.

LoadModule auth_digest_module modules/mod_auth_digest.so

LoadModule dav_module modules/mod_dav.so

LoadModule dav_fs_module modules/mod_dav_fs.so

LoadModule dav_lock_module modules/mod_dav_lock.so

.....

Include conf/extra/httpd-dav.conf

.....


3. 사용자 추가

커맨드(cmd)명령창 C:\apache2.2 디렉토리 위치에서..

apache2.2> bin\htdigest -c 파일명 AuthName 아이디


사용예)  bin\htdigest.exe -c WEBDAV_USER WEBDAV_LUUAZ luuaz

- AuthName은 httpd-dav.conf설정할때 필요하며, 로그인시 표시됨.(이름표붙인다고 생각하면됨)

-  -c옵션은 최초생성할때옵션이다. 두번째아이디생성부터 -c옵션을 붙이면안되며, 

   붙일시 기존에 생성했던 아이디는 다 없어집니다.

- 암호변경: -c옵션을 제거하고 동일한 명령을 내리면 암호를 변경함.


4. 그룹 추가

* 그룹은 메모장이나 에디터로 수동으로 생성하면 된다.

  (ex: WEBDAV_GROUP으로 생성)


admins: luuaz

users: simpsons tvg test


- admins와 users의 그룹을 만들고 각사용자를 그룹으로 추가함.(구분자는 공백)



5. conf/extra/httpd-dav.conf 설정

* 이 예제는 H드라이브를 /home으로 지정합니다.

* admins그룹은 읽기/쓰기/수정권한을 모두주며 그외는 읽기권한만 줍니다.


# Alias를 설정합니다. H드라이브를  /home으로 연결합니다.

Alias /home "H:/"  


<Directory "F:/">

Dav On


Order Allow,Deny

# 내부네트워크에서만 공유할시

# Allow from 192.168.0.0/16 127.0.0.1  형식으로!

Allow from all


# AuthType은 Digest인증으로 변경하고 AuthName으로 webdav이름을 설정합니다.

AuthType Digest

AuthName WEBDAV_LUUAZ


# 이전단계에서 생성한 user와 group파일경로를 설정합니다.

AuthUserFile "C:/Apache2.2/WEBDAV_USER"

AuthGroupFile "C:/Apache2.2/WEBDAV_GROUP"

AuthDigestProvider file

# FollowSymLinks는 리눅스에 심볼릭링크용으로 사용하며 (윈도우는 뭔짓을해도 사용불가, 사용할수 있는 방법이 있으면 알려주세요)

Options FollowSymLinks Indexes

# !!읽기 권한설정!! 읽기권한을 설정합니다.

<Limit HEAD GET OPTIONS PROPFIND>

# Require valid-user로 하면 사용가능한 유저에게 모두 부여합니다.

Require user luuaz

</Limit>


# 쓰기권한설정!! admins그룹만 허용합니다.

# 아래 Limit부분은 예제용이며

# <LimitExcept HEAD GET OPTIONS PROPFIND>과 동일합니다.

<Limit POST MKCOL PUT DELETE LOCK UNLOCK COPY MOVE PROPPATCH>

Require group admins

</Limit>

</Directory>



6. Apache Monitor에서 재시작.






참고사항!


1. 포트 및 서버네임변경

* httpd.conf에서...

Listen 8822

...

ServerName 127.0.0.1:8822

...


2. 최상위경로 인덱스 막기.

* 보안을 위해 최상위경로(/)의 파일인덱스권한을 없앤다.

* httpd.conf -> <Directory /> 에서...

Options에있는 Indexes 제거


3. 파일인덱스목록화면이 자세히보기가 아닌 이름만 나온다.

   자세히보기(이름,날짜,크기, 정렬 등등) 로 하려면

* httpd.conf에서 주석해제

Include conf/extra/httpd-autoindex.conf


기타 설정한게 많았지만, 나머지는 나중에 추가포스팅함.






SSL 보안접속 설정


1. Apache2.2/bin위치에서 cmd.

2. 입력

bin> openssl req -config ../conf/openssl.cnf -new -out test.csr -keyout test.pem


입력하면 아래처럼 패스워드와 인증서정보를 요구한다.

Loading 'screen' into random state - done

Generating a 1024 bit RSA private key

.....................................................++++++

...........................................++++++

writing new private key to 'foo.pem'

Enter PEM pass phrase: PASSWORD입력

Verifying - Enter PEM pass phrase: PASSWORD다시입력

-----

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [AU]:KO

State or Province Name (full name) [Some-State]:SEOUL

Locality Name (eg, city) []:SEOUL

Organization Name (eg, company) [Internet Widgits Pty Ltd]:Luuaz

Organizational Unit Name (eg, section) []: 

Common Name (e.g. server FQDN or YOUR name) []:서버도메인(일치하지않으면 경고)

Email Address []:관리자이메일


Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []: 공백으로남겨둠

An optional company name []:공백으로남겨둠


3. 입력

bin> openssl rsa -in test.pem -out test.key

   ~~~~~~ 암호입력


4. 입력

bin> openssl x509 -in test.csr -out test.crt -req -signkey test.key -days 3650(유효기간은 마음대로~)


5. bin 디렉토리 아래에 

   test.crt, test.csr, test.key, test.pem 파일이 생성된다

   실제 필요한것은 test.crt와 test.key이다.

   추후에 더 인증을 할필요가 없으면 

   다른두개(test.csr, test.pem)은 지워도 된다.

   필요한 인증서는 conf에 위치로 복사한다.


6. httpd.conf에서 주석제거

LoadModule ssl_module modules/mod_ssl.so

.....

Include conf/extra/httpd-ssl.conf

.....


7. conf/extra/httpd-ssl.conf 편집

# 포트변경

Listen 8823

.....

# 인증서경로 설정

SSLCertificateFile "C:/Apache2.2/conf/luuaz.crt"

SSLCertificateKeyFile "C:/Apache2.2/conf/luuaz.key"



8. Apache2 재시작.


참고사항.

* 예제설정에서 HTTP는 8822, HTTPS는 8823포트로 설정을 하였는데

  HTTP포트로 접속시 강제로 HTTPS포트로 변경하려면 

  httpd.conf에 아래 설정을 입력한다.

  (또다른 설정도 있는데 테스트도안해보고 귀찮아서 패스~)

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteCond %{HTTPS} !on

RewriteRule .* https://%{SERVER_NAME}:8823%{REQUEST_URI} [R,L]

</IfModule>





끝. 





  • Apache, Mysql, PHP, phpMyAdmin를 간편하게 설치할수 있지만, 수동으로 설치하는 방법을 메모해둠.
  • MySQL->Apache->PHP->phpMyAdmin 설치순으로 진행함.
  • 직접 설치하면서 기술한것이므로 부족한점이나 잘못된점 또는 더 쉬운방법이 있을수 있습니다. 
  • 지적은 언제든 환영합니다.
  • 퍼가실때는 반드시 출처를 밝혀주시기 바랍니다. ( http://luuaz.cf )

  • 설치환경: Ubuntu 13.10 32bit (VM)/ MySQL 5.6.14 / apache 2.4.7 / php 5.5.6 / phpMyAdmin 4.1.5
  • 모든작업은 root 에서 작업합니다. ( ~$ sudo su )
  • 기본작업경로 /usr/local/luuaz



* MySQL 수동설치

1. mysql-5.6.xx-linux-glibc2.5-i686.tar.gz 다운로드


2. root로그인

 ~$ sudo su


3. mysql 그룹,유저생성

 # groupadd mysql

 # useradd -r -g mysql mysql


4. UNPACK (여기서는 /usr/local/luuaz/mysql)

# cd /usr/local/luuaz

# tar xvfz ./mysql-5.6.xx-linux-glibc2.5-i686.tar.gz

# ln -s mysql-5.6.xx-linux-glibc2.5-i686 mysql


5. 소유권 변경

# cd /usr/local/luuaz/mysql

# chown -R mysql. ./*


6. 데이터베이스 초기화 생성

# ./script/mysql_install_db --user=mysql

 ※ 만약 libaio.so.1 라이브러리를 찾을수 없다는 에러발생시.

# apt-get install libaio1


7. 소유권 변경

# chown -R root .  (선택사항. 다만 data디렉토리는 반드시 mysql계정이어야한다!)

# chown -R mysql data

8. my.cnf 수정

# vi ./my.cnf

basedir = /usr/local/luuaz/mysql

datadir = /usr/local/luuaz/mysql/data

port = 3306

tmpdir = /tmp


9. MySQL서버 시작.

# ./bin/mysqld_safe --user=mysql &

10. 서버가 정상적으로 실행중인지 mysqladmin을 이용하여 확인.

# ./bin/mysqladmin version

# ./bin/mysqladmin variables


11. init 스크립트에 복사

# cp ./support-files/mysql.server /etc/init.d/mysql

# update-rc.d mysql defaults

12. 환경변수 PATH등록 (어디서도 mysql/bin에 접근할수있도록 PATH설정)

# vi /etc/profile

 추가: 

export PATH=$PATH:/usr/local/luuaz/mysql/bin:


저장후종료

# source /etc/profile

13. mysql서버를 종료했다가 다시 실행해본다.

아무문제가없으면 정상인것임.

# mysqladmin -uroot shutdown

# mysqld_safe --user=mysql &

14. 다시 종료하고 서비스로도 실행하고 중지해본다.

# service mysql start

# service mysql stop

 ※ 만약 /usr/local/mysql 에 위치하지 않을경우

* Couldn't find MySQL server (/usr/local/mysql/bin/mysqld_safe) 

 라는 에러가 발생한다.

 

 vi /etc/init.d/mysql 을 열어

basedir=/usr/local/luuaz/mysql

datadir=/usr/local/luuaz/mysql/data

 를 설정해준다

----여기까지 MySQL 설치완료.


15. root 계정의 암호를 설정

# mysqladmin -uroot password "새로운패스워드"


16. 데이터베이스 생성

# mysql -uroot -p패스워드


mysql> create database luuaz;

mysql> show databases;

17. 사용자 생성

mysql> use mysql

mysql> grant all privileges on *.* to luuaz@localhost identified by '77777' with grant option;

18. 생성된 사용자에게 이전에 만든 DB권한 주기.

mysql> grant all privilges on luuaz(DB명).* to luuaz(사용자명)@localhost identified by '77777' with grant option;

또는?

mysql> grant all on luuaz.* to luuaz@localhost;

--MySQL 끝.



* Apache 수동설치

 Apache Httpd 수동설치는 apr, aprutil, pcre라이브러리가 필요하다.

* apr, aprutil 다운로드

http://apr.apache.org

* pcre 다운로드

http://pcre.org/ 


1. httpd-2.4.x.tar.gz 다운로드

2. root로그인

~$ sudo su

3. apr 설치 (1.5.0버전 설치)

# cd apr다운경로

# ./configure --prefix=/usr/local/luuaz/test_lib/apr

# make

# make install

4. aprutil설치 (1.5.3 설치)

# cd aprutil다운경로

# ./configure --prefix=/usr/local/luuaz/test_lib/aprutil --with-apr=/usr/local/luuaz/test_lib/apr

# make

# make install

5. pcre설치 (8.33 설치)

# cd pcre다운경로

# ./configure --prefix=/usr/local/luuaz/test_lib/pcre

# make

# make install

 ※ error: You need a C++ compiler for C++ support 발생시

# apt-get install g++


6. httpd 컴파일

# ./configure --prefix=/usr/local/luuaz/apache-2.4.7 --with-apr=apr경로 --with-apr-util=apr-util경로 --with-pcre=pcre경로 --enable-module=so --enable-so

# make

# make install


7. 심볼릭 링크설정 (선택사항)

# ln -s /usr/local/luuaz/apache-2.4.7 apache2

8. 포트변경(선택사항)

# vi ./conf/httpd.conf

 Listen 8080

9. 테스트실행

# ./bin/apachectl -k start

브라우저에서 localhost:8080 으로 접속시 It Works가 보이면 정상설치


 ※ AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using ~~~ 뭐시기 에러발생시


httpd.conf를 열어

ServerName localhost 

수정 또는 삽입후 재시도

10. init.d 실행 스크립트 추가

# cp ./bin/apachectl /etc/init.d/apache

# update-rc.d apache defaults


-- apache 끝.




* PHP5 수동설치

1. php-5.5.6.tar.gz 다운로드

2. root로그인

~$ sudo su

3. 압축해제

# cd /usr/local/luuaz

# tar xvfz php-5.5.6.tar.gz

4. 컴파일

# ./configure --prefix=/usr/local/luuaz/php-5.5.6 

--with-apxs2=/usr/local/luuaz/apache2/bin/apxs

--with-config-file-path=/usr/local/luuaz/php-5.5.6/conf

--with-config-file-scan-dir=/usr/local/luuaz/php-5.5.6/conf.d

--with-mysql=/usr/local/luuaz/mysql

(--with-gd  XE설치시..)

(--enable-mbstring --with-mysqli --enable-mcrypt   phpMyAdmin설치시..)


 ※ error: xml2-config not found. Please check your libxml2 installation.에러발생시

# apt-get install libxml2-dev 커맨드 입력하여 libxml2-dev 설치

 ※ XE나 phpMyAdmin설치시 gd, mbstring, mysqli, mcrypt 확장모듈은 추가로 설치가능

# make

# make install


5. php.inf 카피

# cp php.ini-production ../php-5.5.6/conf/php.ini

6. 환경변수 PATH등록 (어디서도 php/bin에 접근할수있도록 PATH설정)

# vi /etc/profile


 추가: 

export PATH=$PATH:/usr/local/luuaz/mysql/bin:/usr/local/luuaz/php-5.5.6/bin

 저장후종료

# source /etc/profile


7. Apache설정

# vi apache2/conf/httpd.conf

LoadModule php5_module modules/libphp5.so


AddHandler php5-script .php

AddType text/html .php

추가하고


<IfModule dir_module>

DirectoryIndex index.html index.php

</IfModule>


8. Apache 재시작

# service apache restart

9. 테스트PHP Script 작성

# cd /usr/local/luuaz/apache2/htdocs

# vi phpinfo.php

 <?

phpinfo();

 ?>


※ 브라우저에 표시가안된다면 <?php ~~~ ?> 로 작성하거나

php.info 에서 Short_open_tag = Off -> On 으로 설정


☆ ExpressEngine 설치하려면..

GD_LIBRARY 확장모듈이 필요함. 

1. # cd php설치소스경로/ext/gd/

2. phpize

3. ./configure --with-zlib-dir --with-jpeg-dir --with-png-dir --with-freetype-dir

※ configure: error: jpeglib.h not found.

# apt-get install libjpeg-dev

※ configure: error: png.h not found.

# apt-get install libpng-dev

※ configure: error: freetype.h not found.

# apt-get install libfreetype6-dev

4. make

5. ./modules안에 gd.so생성됨.

6. # cp gd.so /usr/local/luuaz/php/modules 에 복사

7. php.ini 수정

--------------------------

extension_dir= "/usr/local/luuaz/php/modules"


extension=gd.so

--------------------------

8. Apache 재시작


* phpMyAdmin 설치

1. phpMyAdmin-4.1.5-all-languages.zip 다운로드

2. htdocs상위에 이동 또는 심볼릭링크 또는 Apache설정의 alias설정

   (이때 디렉토리권한이 777이면 안됨. 755로 설정)


3. php 확장모듈 mbstring설치

# cd php소스/ext/mbstring

# phpize

# ./configure --with-php-config=/usr/local/luuaz/php-5.5.6/bin/php-config --enable-mbstring

# make

- ./modules에 생성된 so를 php확장 모듈디렉토리로 복사

- php.ini에 extension=mbstring.so 추가

- apache 재시작


4. php 확장모듈 mysqli설치

# cd php소스/ext/mysqli

# phpize

# ./configure --with-php-config=/usr/local/luuaz/php-5.5.6/bin/php-config --with-mysqli=/usr/local/luuaz/mysql/bin/mysql_config

# make

- ./modules에 생성된 so를 php확장 모듈디렉토리로 복사

- php.ini에 extension=mysqli.so 추가

- apache 재시작


5. php 확장모듈 mcrypt설치

# cd php소스/ext/mcrypt

# phpize

# ./configure --with-php-config=/usr/local/luuaz/php-5.5.6/bin/php-config --enable-mcrypt

 ※ CONFIGURE: ERROR: MCRYPT.H NOT FOUND. 

     PLEASE REINSTALL LIBMCRYPT. 에러시

# apt-get install libmcrypt-dev

# make

- ./modules에 생성된 so를 php확장 모듈디렉토리로 복사

- php.ini에 extension=mcrypt.so 추가

- apache 재시작

6. 브라우저에서 http://localhost:8080/phpMyAdmin 접속




끝.


쳐박혀있는 asus eeepc901에 우분투를 설치 시도. 

XP조차도 버거워졌고 중요한건 SSD가 4GB밖에 안되기때문.... ;;




1. Ubuntu Minimal cd 다운로드 (현재 13.10 버전사용 )

https://help.ubuntu.com/community/Installation/MinimalCD


※ 설치하려는 버전을 다운로드함. (대략 30mb전후)


2. minimal cd 설치

 usb나 cd부팅을 이용하여 부트한후 설치진행함.


※ 기본저장소는 속도가 너무 느리기때문에 저장소선택에서 수동으로 ftp.daum.net 입력. 경로는 기본 /ubuntu/로 유지.

※ 설치과정에서 우분투 종류 선택/설치에서 아무것도 체크하지말고 진행.(최소설치이기때문에 아무것도 체크하지않는다)


3. Xubuntu 데스크탑 설치

설치가 완료되고 reboot하여 사용자 로그인후 설치진행

# sudo apt-get install --no-install-recommends xubuntu-desktop


설치완료후 startx 명령어 입력하여 gui환경으로 진입함.



4. 그외...


sudo apt-get install --no-install-recommends \

       xubuntu-desktop \

       xfce4-terminal \

       xfce4-power-manager \

       xfce4-volumed \

       xfce4-indicator-plugin \

       xfce4-datetime-plugin \

       xfce4-cpugraph-plugin \

       xfce4-netload-plugin \

       xfce4-screenshooter \

       xfce4-xkb-plugin \

       xubuntu-icon-theme \

       xfwm4-themes \

       alacarte \

       pavucontrol \

       file-roller \

       plymouth-theme-xubuntu-logo \

       mousepad \

       gvfs-fuse \

       thunar-archive-plugin \

       catfish \

       indicator-sound-gtk2


추가설치(옵션)

sudo apt-get install --no-install-recommends \

       davfs2 encfs rar libnotify-bin iw gparted vim \

       ntp htop cifs-utils ethtool



# indicator-keylock

sudo add-apt-repository ppa:tsbarnes/indicator-keylock && sudo apt-get update

sudo apt-get install indicator-keylock


네트워크 매니저 관련

sudo apt-get install --no-install-recommends \

       network-manager-gnome iptables iproute \

       mobile-broadband-provider-info usb-modeswitch modemmanager ppp comgt


/etc/network/interfaces 를 열어

루프백을 제외한 내용은 주석처리한다. (네트워크매니저에서 네트워크인터페이스 내용부분은 동작하지 않는다)

아래 부분처럼 인터페이스부분은 주석처리되있어야함.

~$ cat /etc/network/interfaces

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

 

# The loopback network interface

auto lo

iface lo inet loopback

 

# The primary network interface

#auto wlan0

#iface wlan0 inet dhcp

# wpa-ssid AAAAAAAAAAAAAAAAAAAAAA

# wpa-psk  12341234


블루투스관련

~$ sudo apt-get install blueman



대략 2~3기가의 용량.

그외에 이미지뷰어, 인터넷브라우저(크롬 or 파폭), 동영상플레이어, 오피스 등 원하는 프로그램을 설치하면 된다.


끝.





우분투 13.10에서 한/영키를 이용한 입력전환하는 설정.


~$ ibus-setup




1. 키보드 바로가기에서 [...]버튼 클릭.

2. 모든 체크해제후 [삭제(D)]버튼 클릭.

3. 키코드에 Hangul 입력후 [추가(A)]버튼 클릭

4. 확인 - 닫기 후 터미널에서 아래 커맨드 실행하여 ibus재시작

~$ ibus restart

5. 한/영키로 입력전환되는지 확인.




끝.





레지스트리 수정하면 단번에 끝.


HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/i8042prt/Parameters

이동하여 LayerDriver KOR키값을 kdb101a.dll 에서 kdb101c.dll로 변경하고 재부팅.


끝.






기존코드 <body style="background:none">  으로 하면 

IE9에서는 잘보이지만 그 이하버전 또는 호환성보기를 하면 아래와같이 배경이들어감




해결방법은


iframe에들어갈 문서 body태그에 아래를 추가

<body id="if_notice" style="background:transparent" >


iframe코드에 아래 속성 추가 

<iframe ...........................  allowTransparency="true">





완료.



끝.


원본코드

<button type="button" class="my_value" name="domainbtn" id="domainbtn"><span id="domainBtnName">JAEWOONG</span>

</button>

<ul>

<li><a href="javascript:changeDomain('<%=vDomain%>')"><%=vDomain %></a></li>      

</ul>


이라고 있을때 ul에 open스타일클래스를 먹이게되면 

아래그림과같이 버튼아래에 리스트가떠야한다.

단순히 select를 쓰면되겠지만 좀더깔끔한 디자인으로..






이럴때 ul에  <ul class="open"> 와같이 먹여야할때 쓰는코드.


jsp

<button type="button" class="my_value" name="domainbtn" id="domainbtn" onclick="javascript:openDomain()"><span id="domainBtnName">JAEWOONG</span>

</button>

<ul  id="domain_ul" >

<li> ......


javascript

function openDomain() {

var ul_obj = document.getElementById("domain_ul");

if (ul_obj.className == "open" ) {

ul_obj.className="";

} else {

ul_obj.className="open";

}

}






hadoop dfsadmin -safemode leave


끝.


특정디렉토리만 제외하고 압축하는 명령.


# tar cvfzp 압축파일명 --exclude=제외할디렉토리경로 압축대상경로


예)

# tar cvfzp 20121214_CHK.tar.gz --exclude=CHK_PARTITION/move_mbox_log CHK_PARTITION



끝.


oracle, mysql, pgsql 을 쉽게접속하기위한 함수

(물론 모듈은 각자 구해서 사용함~)


sub db_connect($$$$)

{

    my ($DB_SID, $DB_USER, $DB_PASSWD, $DB_SYSTEM) = @_;


    my $dbh = "";

    my $dsn = "";

    eval {

        $SIG{ALRM} = sub { die "$!"; };

        alarm(2);


        if ($DB_SYSTEM eq "oracle") {

            $dsn = "DBI:Oracle:$DB_SID";

        }

        elsif ($DB_SYSTEM eq "mysql") {

            $dsn = "DBI:mysql:database=$DB_SID";

        }

        else {

            $dsn = "DBI:Pg:dbname=$DB_SID;host=localhost";

        }


        $dbh = DBI->connect($dsn,

                            $DB_USER,

                            $DB_PASSWD,

                            {RaiseError => 1,AutoCommit => 0,PrintError => 1});


        alarm(0);

    };


    if ($@) {

        warn "DBI->connect() timeout";

        warn $@;

        $dbh = undef;

    }


    if (! $dbh) {

        warn "DBI->connect() failed: $!";

        return undef;

    }


    return $dbh;

}




끝.!






앞뒤의 공백을 잘라내버리는 trim함수를

perl 에서 사용하기 위한 함수구현입니다.


sub trim($)

{

    my ($str) = @_;

    $str =~ s/^\s+//g;

    $str =~ s/\s+$//g;

    return $str;

}




끝.

+ Recent posts