2009년 6월 30일 화요일

[PHP] PHP 내 내용을 암호화 혹은 복호화 관련 정보

아래 주소로 가면 PHP보안에 관한 서적에 대한 소개 및 간략한 본문 예제를 담고 있다.
역시 보안이라면 패스워드가 가장 먼저 떠오르는 만큼...
암호화시에는 mcrypt_encoded

로그인을 해야 볼수 있네;;

http://book.naver.com/bookdb/book_detail.php?bid=2103583&menu=dview&dencrt=YSlJ2RiZBwdnltmRTzBDUllWMGcrTFU0YldjWFRJcUwxZ05BRXlxVGFqSzVuVVR2YXdKdGJJN21iVmE3Vm1DLw==&query=php+%BE%CF%C8%A3+%BA%B9%C8%A3%C8%AD&term=php%20%BE%CF%C8%A3%20%BA%B9%C8%A3%C8%AD%20php%BE%CF%C8%A3%BA%B9%C8%A3%C8%AD#middle_tab

[자바스크립트] 자바스크립트를 이용한 웹페이지 웹문서 인쇄하기


홈페이지를 제작하다가 특정영역을 인쇄하는 기능이 필요해서 나름대로 검색도 하고,
수정도 좀 하다가 보니 보통은 많은 인쇄기능을 PHP나 ASP와 같은 Server Script Language로 많이 연동해서 구현하고 있었다.

이런 Server Script Language를 써서 하는 방법이 그리 어려운 것은 아니지만,
이를 사용하지 않고 간단하게 하는 방법을 원했기 때문에 자료가 별로 없었고, 그래서 공유할만한 가치가 있다고 판단했다.

내가 알고 있는 방법을 정리하자면,
자바스크립트로 할 수 있는 방법은 아래와 같이 2가지가 있다.



1. 인쇄하는 동안만 웹사이트를 변형하여 특정내용만 남기는 방법.

이 방법의 경우 새창을 띄우지 않아도 되기 때문에 사용하기는 편하다는 장점이 있는 반면, 일시적으로 웹사이트가 변형될 수 있다.
특히나 포탈같이 웹사이트의 소스가 긴 경우 이를 소화하지 못하여 웹사이트가 자동복구 되지 않고 새로고침을 해야 할 수도 있다. 직접 간단한 테스트를 해봤을 경우는 정상작동하였으나, 소스가 길어지자 변형된 웹사이트가 자동복구되지 않는 현상을 발견할 수 있었다.

 - <head>에 들어갈 자바스크립트 영역
01 var initBody;
02 function beforePrint()
03
04    initBody = document.body.innerHTML; 
05    document.body.innerHTML = print_page.innerHTML;
06
07   
08 function afterPrint()
09
10   document.body.innerHTML = initBody; 
11
12   
13 function pageprint()
14 {
15      window.onbeforeprint = beforePrint; 
16      window.onafterprint = afterPrint; 
17      window.print(); 
18 }


 - <body>에 들어갈 영역지정 방법
1 <div id='print_page'>
2 인쇄내용
3 </div>


 - 인쇄버튼
1 <input type='button' value='  인 쇄  ' onclick="pageprint()">



2. 특정영역의 내용을 하나의 문서로 만들어서 새창으로 띄우는 방법.

이 방법은 특정영역을 지정해 놓고, 인쇄버튼을 눌렀을 때 새창으로 특정영역을 그대로 복사하는 방법이다.
새문서를 만들어서 저장하지 않고, 자바스크립트로 동적으로 인쇄할 영역을 만들어내기 때문에 따로 저장공간이 필요하지도 않을뿐더러 인쇄미리보기의 효과도 볼수 있다.

하지만, 새창을 띄우는 것을 싫어하는 유저도 많이 있기 때문에 그다지 추천하지는 않는다.

 - <head>에 들어갈 자바스크립트 영역
01 function pagePrint(Obj) { 
02     var W = Obj.offsetWidth;        //screen.availWidth; 
03     var H = Obj.offsetHeight;       //screen.availHeight;
04   
05     var features = "menubar=no,toolbar=no,location=no,directories=no,status=no,scrollbars=yes,resizable=yes,width=" + W + ",height=" + H + ",left=0,top=0"
06     var PrintPage = window.open("about:blank",Obj.id,features); 
07   
08     PrintPage.document.open(); 
09     PrintPage.document.write("<html><head><title></title><style type='text/css'>body, tr, td, input, textarea { font-family:Tahoma; font-size:9pt; }</style>\n</head>\n<body>" + Obj.innerHTML + "\n</body></html>"); 
10     PrintPage.document.close(); 
11   
12     PrintPage.document.title = document.domain; 
13     PrintPage.print(PrintPage.location.reload()); 
14 }


 - <body>에 들어갈 영역지정 방법
1 <div id='print_page'>
2 인쇄내용
3 </div>
 

 - 인쇄버튼
1 <input type='button' value='  인 쇄  ' onclick="pagePrint(document.getElementById('print_page'))">


출처 : bsh님 티스토리 블로그 http://realmind.tistory.com/197

2009년 6월 22일 월요일

[MYSQL] MYSQL SQL(스크립트) 파일 import 하기

리눅스 쉘에서 id와 pw를 입력하여 mysql을 실행후
내보내기 혹은 dump된 sql파일을 mysql을 실행할 디렉토리에 복사해놓습니다.
굳이 실행할 곳에 복사 안해도 상관은 없습니다만 경로 입력할때 풀경로를 다 입력해주어야합니다.
실행할곳에 복사를 해놓는경우 경로가 필요없이 ./스크립트.sql 이런식으로 입력해주면 간단해져요

mysql> source ./경로/스크립트.sql    실행하면 MSSQL에서 쿼리실행기로 실행한것처럼
실행되면서 쿼리가 실행되어진다.

2009년 6월 18일 목요일

[MYSQL] phpmyadmin 설치 후 오류 해결 방법

[root@vmm geniuskch]# mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket /var/lib/mysql/mysql.sock' (2)

대책을 찾던 중 KLDP에 나온 내용으로 해결.

1. 퍼미션 문제
일반 유저에서
ls -al /var/run/mysqld/mysqld.sock
해서 확인을 해봅니다.

펼쳐두기..

2009년 6월 17일 수요일

tar 압축하기 압축방법

=리눅스 기준=

<< 압축하기 >>
* tar 와 gzip 따로 하기
# tar cvf file_name.tar *.c
# gzip file_name.tar

* tar 와 gzip 동시에
# tar cfp - target_dir | gzip -c > made_file.tar.gz

// target_dir = 압축할 파일들이 들어 있는 디렉토리
     // made_file  = 만들어질 압축파일의 이름.

<< 압축풀기 >>
* tar 와 gzip 따로 하기
# gzip -d file_name.tar.gz
# tar -xvf file_name.tar

* tar 와 gzip 동시에
# gzip -dc source_file.tar.gz | tar xvfp


-----여기까지 긁어왔습니다.

출처:블로그 > 동내스리가의 진공청소기

======================================================================


압축을 했으면 파일이 하나 생겼을 겁니다. 만약 안생겼거나 다른이름으로 압축파일이 생성되었다면 압축이 실패한 것이구요.


원래 있던 파일에 대해서는 변화가 없을 텐데 smong.c, hell.c는 무슨 말인지 잘 모르겠네요. 혹시 *.c 를 썻다는 말인지. 그렇다고 하더라도 하나의 파일이 더생겼다뿐 원래있던 파일이 변화하지는 않습니다. 압축 파일을 만드는 것이지 파일하나하나를 압축상태로 만드는게 아니죠.


만약 저 명령어로 에라가난다면 압축이 잘못된 것 같으니 밑에 걸 참고해서 다시 해보시길 바랍니다.


[[[[쉽게정리]]]]처음부터 다시 해보시지요...제가  gzip으로 하는 명령은 tar에서 같이 쓰다보니 정확히 잘 몰라서 위에거 긁어 왔구요. 여기부턴 제가 압축하는 예입니다.


님이 할려는 작업을 보니 yy(가상)안에 xxxx.c 이름의 파일을 모조로 압축하려는 것인가 보네요.


일단 디렉토리안에서 tar cvf c.tar *.c 로하면 tar 압축이되고 tar zcvf c.tgz *.c로 하면 두번압축해서 tar,gzip압축이 됩니다.

 잘 생각이 안나는데 만약 이 명령어로 안된다면 yy디렉토리로 이동후

tar cvf c.tar ./yy/*.c 이렇게 하면 확실히 되리라 생각합니다.


만약 디렉토리전체를 압축하려면 일단 디렉토리보다 상위 디렉토리로 이동한후 압축해야 합니다. 만들어지고 있는 압축파일을 다시 압축하려고 하다 에라가 나기때문이죠.


만약 /etc/file 에서 file 디렉토리안에 파일을 압축하려면 먼저 etc 디렉토리로 간 다음

etc]#tar cvf file.tar ./file 하면 될 것 같네요.

혹은 절대경로로 tar cvf file.tar /etc/file 이 경우 etc/file디렉토리안에서만 아니면 어디에서든 사용할수 있겠지요.

풀때는 tar xvf file.tar 하면 될 것 같네요. 


여기서 c는 압축옵션이고 x는 풀기옵션입니다.

(출처 : '리눅스 압축풀기' - 네이버 지식iN)



=유닉스 기준=

tar 명령어를 써보세요.

tar czfp 만들어질파일명.tgz 대상폴더(nsr)

ex. tar czfp nsr.tgz nsr

이 명령어는 해당폴더 (nsr)안에서 하시면 안되구, 그 상위에서 하시면 됩니다.
명령을 실행시면, 퍼미션까지 그대로 압축에 포함이 됩니다.

이 파일을 백업하셨다가 나중에 다시 설치하실려면,

파일을 서버로 옮기시고,

tar xzfp 파일명.tgz

로 압축을 푸시면 됩니다.