Search Results for '프로그래밍'


1208 posts related to '프로그래밍'

  1. 2010/06/07 페도라 설치후 mysql이 원격으로 접속이 안될때
  2. 2010/06/07 cgi 세팅 - httpd.conf
  3. 2010/06/07 리눅스 실시간 트래픽 모니터링 하기
  4. 2010/06/07 엔터치면 다음칸으로 이동.
  5. 2010/06/07 아이피 주소인지 아닌지 체크하는 함수
  6. 2010/06/07 상태표시줄 링크 없애기
  7. 2010/06/07 ajax 로 자바스크립트 배열 받기
  8. 2010/06/07 $.get 대신 $.post 권장
  9. 2010/06/07 <form 안에 있는 checkbox를 radio 처럼 쓰기
  10. 2010/06/07 Jquery 체크박스 사용법
  11. 2010/06/07 jQuery.each break continue
  12. 2010/06/07 jQuery + 정규표현식( 이메일검증법)
  13. 2010/06/07 jquery 오른쪽 마우스금지
  14. 2010/06/07 iframe내의 id셀렉터
  15. 2010/06/07 ftp passive
  16. 2010/06/07 윈도우 - 네트워크 로드 균형 조정 구성
  17. 2010/06/07 mysql 외부 접속 설정
  18. 2010/06/07 아파치 웹서버에서 한글 파일 사용하기
  19. 2010/06/07 [mysql] 계정 생성/ DB권한부여 / 패스워드 변경/ 삭제
  20. 2010/06/07 mysql 4.0.27 설치시 에러 발생
  21. 2010/06/07 아파치로그 로테이션
  22. 2010/06/07 asp 파일 다운로드 문제
  23. 2010/06/04 텍스트를 이미지로 변환하는 간단소스(한글지원) - PHP
  24. 2010/06/04 2010년 제1차 우편번호 2010.02.25자 (최신) DB
  25. 2010/06/04 PHP 성능 벤치마크
  26. 2010/06/03 리눅스 콘솔에서 파일 지우면 휴지통으로 들어가게 한후 복원까지
  27. 2010/06/02 플래시 위에 레이어 나오게 하는 방법
  28. 2010/06/01 Boot. ini 파일 복구 방법 1
  29. 2010/06/01 오래된 파일 압축 해제 및 사용하지 않기
  30. 2010/06/01 메일만 사용하는 계정 만들기
 

페도라 설치후 mysql이 원격으로 접속이 안될때

페도라(리눅스) 설치 후 mysql-front를 이용하여 접속하고자 할때 안되는 경우


설치시에 방화벽과 관련된 설정이 나오는 데 이때 HTTP,FTP,TELNET... 등 몇가지 포트를 열어놓겠다는 메뉴가 나옵니다. 이때 mysql과 관련된 항목은 없습니다. 따라서 설치가 끝난 후에 mysql이 사용하는 포트를 열어주어야 하는데 그 내용은 다음과 같습니다.

/etc/sysconfig/iptables의 내용을 살펴보면


# Firewall configuration written by redhat-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT   <---------------추가
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

이러한 내용이 나오는데 이중에서 밑에서 세번째을 보시면 3306 포트에 대해서 외부의 접속을 허용한다는 내용이 있습니다. 이 부분을 추가하고 나서 mysql을 재시작 해야 합니다.

그 외에도 각 서비스에 사용하는 포트번호에 대하여 접속을 허용하는 문구를 볼 수 있습니다.

2010/06/07 14:23 2010/06/07 14:23
 

cgi 세팅 - httpd.conf

일단 httpd.conf 파일을 열어서
#    AddHandler cgi-script .cgi
부분을 찾아 주석을 해제해줍니다.
그다음에
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
이부분을 찾아보세요.. 바로및에 위와같은 형식으로 cgi를 허용해주고 싶은
디렉토리를 설정해주면 됩니다. 예를들어 /home 디렉토리이하에 cgi를 허용해주고 싶으면
<Directory /home>
    Options Includes ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>
이렇게 해주면 됩니다

그다음 서버를 재가동하고 해당 페이지를 보세요 정상적으로 작동할겁니다.
단 파일의 확장자는 .cgi 로 끝나야하고 퍼미션은 755 로 되어있어야합니다.

2010/06/07 14:22 2010/06/07 14:22
# 개요
리눅스 서버를 운여하다 보면 서버내의 Traffic을 실시간으로 보고 싶을때가 있습니다. 이때 간단하게 ssh 에서 모니터링 할 수 있는 iftop을 소개합니다.

# 설치 OS
설치 OS는 SuperTuxs 5.0 혹 CentOS 5.0 에 기준하여 아래 내용을 참고 바랍니다. 다른 배포판의 경우 의존성등 기타 별도 설치가 필요 할 수 있습니다.

# 다운받기
ssh로 접속후에 첨부 파일을  /root  로 올립니다.

# 설치하기
- 아래처럼 실행하여 설치를 합니다.

[root@mbkang ~]# rpm -Uvh iftop-0.17-1.el5.rf.i386.rpm
warning: iftop-0.17-1.el5.rf.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
Preparing... ########################################### [100%]
1:iftop ########################################### [100%]
[root@mbkang ~]#

# 모니터링하기
- 다음에 ssh 로 로그인하여 아래처럼 하여 모니터링 합니다.
[root@mbkang ~]# iftop -p -B -P

# 모티터링 화면 (예)
그러면 아래그림과 같은 내용이 보입니다. 실시간으로 보여줍니다.

└──────────────┴───────────────┴───────────────┴───────────────┴───────────────
mbkang.hostsmb.com:pop3 => 218.55.101.14:62131 0B 2.51KB 642B
<= 0B 100B 25B
mbkang.hostsmb.com:http => 218.55.101.14:62129 0B 2.03KB 520B
<= 0B 144B 36B
mbkang.hostsmb.com:http => 218.55.101.14:62124 0B 1.77KB 453B
<= 0B 138B 34B
mbkang.hostsmb.com:http => 218.55.101.14:62128 0B 72B 18B
<= 0B 427B 107B
mbkang.hostsmb.com:ssh => 218.55.101.14:62068 502B 347B 250B
<= 20B 20B 23B
mbkang.hostsm:filenet-tms => ns3.apnic.net:domain 0B 8B 2B
<= 0B 18B 5B
mbkang.hostsm:filenet-tms => ns6.cninet.co.kr:domain 0B 8B 4B
<= 0B 15B 7B
mbkang.hostsmb.com:domain => cns101.hananet.net:39581 0B 16B 4B
<= 0B 7B 2B
mbkang.hostsm:filenet-tms => ins1.hananet.net:domain 0B 8B 2B
<= 0B 15B 4B
mbkang.hostsm:filenet-tms => 218.38.181.90:domain 0B 8B 2B
<= 0B 13B 3B
mbkang.hostsmb.com:ftp => 211.239.136.1:2208 0B 8B 3B
<= 0B 9B 4B
210.109.103.25:netbios-ns => 210.109.103.18:netbios-ns 0B 0B 0B
<= 0B 8B 2B
───────────────────────────────────────────────────────────────────────────────
TX: cumm: 161KB peak: 23.3KB rates: 502B 6.77KB 3.60KB
RX: 97.3KB 38.0KB 20B 913B 2.19KB
TOTAL: 258KB 61.3KB 522B 7.66KB 5.79KB

2010/06/07 14:19 2010/06/07 14:19
<html>
<head>
    <title>다음칸</title>
<script language='javascript'>

   var is_submit = true;
   var _NEXT_FOCUS = ""; // 커서가 갈 곳..

   function check_form(){

       f = document.form;

      if(is_submit == true){
         return true;
      }else{
         f[_NEXT_FOCUS].focus();
         is_submit = true;
         return false;
     }
   }

   function next_input(next_focus){
     if(event.keyCode == 13){
          is_submit = false;
         _NEXT_FOCUS = next_focus;
      }
   }

</script>


<body>
입력폼 아무곳에서나 엔터키를 쳐보세요..

<form name='form'>
   <input type='text' size=20 name='put1' onKeyDown="next_input('put2');"><br>
   <input type='text' size=20 name='put2' onKeyDown="next_input('put3');"><br>
   <input type='text' size=20 name='put3' onKeyDown="next_input('put4');"><br>
   <input type='text' size=20 name='put4' onKeyDown="next_input('put5');"><br>
   <input type='text' size=20 name='put5' onKeyDown="next_input('put1');"><br>
   <input type='submit' value='보내기' onClick='return check_form();'>
</form>

</body>
</html>
2010/06/07 14:16 2010/06/07 14:16
 

/*--------------------------------------------------
  INPUT  : toCheck  -> check data
  RETURN : true  -> IP address
           false -> not IP address
----------------------------------------------------*/
function jsCheckIp(toCheck)
{
     var chkstr = toCheck+"" ;
     var isIp = true ;

     if ( jsCheckNull(toCheck) )
          return false;

     for (j = 0 ; isIp && (j < toCheck.length) ; j++)
     {
          if ((toCheck.substring(j,j+1) < "0") || (toCheck.substring(j,j+1) > "9"))
          {
              if ( toCheck.substring(j,j+1) == "." )
                  if ( j == 0 )
                      isIp = false ;
              else
                  isIp = false ;
          }
     }

     return isIp;
}

 
2010/06/07 14:15 2010/06/07 14:15
<!--
function StatusHidden() {
window.status = "안녕하세요";
setTimeout("StatusHidden()", 0);
}
StatusHidden();
//-->
2010/06/07 14:14 2010/06/07 14:14
// 서버측

[0] = "테스트1";
[1] = "테스트2";
[2] = "테스트3";

// 배열 받기

var bo_category = new Array(); // 전역변수를 배열로 선언

var result = request.responseText.split("\n"); // 엔터 구분자를 잘라서 배열로 만듬

for (var i=0; i<result.length; i++) {
    eval("bo_category"+result[i]); // bo_category 전역변수 배열에 배열 추가
};

// 결과

bo_category[0] = "테스트1";
bo_category[1] = "테스트2";
bo_category[2] = "테스트3";

3 개의 배열 생성
2010/06/07 14:14 2010/06/07 14:14
$.get으로 값을 가져올 경우 새 값이 적용이 안 되는 경우가 있습니다.
익스 도구 > 페이지 확인에서 "자동으로"가 체크된 경우에 그렇더군요.

$.post나 $.ajax({type:'post'})로 사용하면 말끔히 해결됩니다.

익스8에서 확인된 내용입니다.
2010/06/07 14:13 2010/06/07 14:13
<form id="fwishlist" ...
loop....
<input type=hidden name=it_id[$i] >
...end loop

        $("#fwishlist input:checkbox[name^=it_id]").click( function(){
                $("#fwishlist input:checkbox:checked[name^=it_id]").attr('checked',false);
                $(this).attr('checked',true);
        });
2010/06/07 14:12 2010/06/07 14:12
 

jquery를 이용한 체크박스 부분에 관련된 내용이 없어서 간단하게 한번 만들어보았습니다.

저보다 더 좋은 내용이 있으면 코멘트 달아주세요

<html>
<head>
<title></title>
<script  type="text/javascript" src="./script/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
 $("#selectall").click(selectAll);
 $("#save").click(save);
});
function selectAll()
{
 var checked = $("#selectall").attr("checked");
  $(".box").each(function(){
  var subChecked = $(this).attr("checked");
    if (subChecked != checked)
   $(this).click();
  });
}

function save()
{
 var result = "";
 $(".box:checked").each(function() {
 $("#"+$(this).val()).remove();  
  result += $(this).val();
  //AJAX로 넘겨줄때는  
  //.get('XXX.php',{SelType:$(this).val()});

  });
 alert(result);
}
</script>
</head>
<body>
<table>
<tr><td><input type="checkbox" id=selectall></td><td>1전체선택</td></tr>
<tr><td><input type="checkbox" name="chkbox" value="1" class="box"></td><td>1</td></tr>
<tr><td><input type="checkbox" name="chkbox" value="2" class="box"></td><td>1</td></tr>
<tr><td><input type="checkbox" name="chkbox" value="3" class="box"></td><td>1</td></tr>
<tr><td><input type="checkbox" name="chkbox" value="4" class="box"></td><td>1</td></tr>
<tr><td><input type="checkbox" name="chkbox" value="5" class="box"></td><td>1</td></tr>
<tr><td><input type="button" value="저장" id="save"></td></tr>
</table>
</body>
</html>

2010/06/07 14:11 2010/06/07 14:11
each 메소드를 하는 하는 경우 for문과 같은 제어 문에서 사용되는 break , continue 의 쓰임이 필요 하다.
each에서는 return true(continue) 와 return false(break) 를 이용해서 break, continue와 같은 동작을 일으킬수 있다.

$('#loop').each(function(i){
    if( i == 0 ) return true; //continue;
    return false;//break;
});
2010/06/07 14:11 2010/06/07 14:11
 

function ajax_email_ch() {
 var email1 = $("#email1").val();
 var email2 = $("#email2").val();

 var email_ch = email1 + "@" + email2;
   if(email_ch.match(/\w+[/\w.]*@[/\w.]+\.\w+/)) {
     이메일이 맞을경우...
   }
 }

찾아봐도 없어서 간단히 만들어봤습니다.
제가 사용하려고 만든거라 정리되지 않았는데...
쉬운 소스이니 변형하셔서 사용하셔여~.~

2010/06/07 14:10 2010/06/07 14:10
$(document).bind("contextmenu", function(e){
    alert("오른쪽마우스금지입니다.");
    return false;
 });
2010/06/07 14:09 2010/06/07 14:09
$('#iframeID').contents().find('#someID').html();

전 이걸 몰라서 헤멨는데 다른분은 다 아시고 계신건가요? -0-;;
2010/06/07 14:08 2010/06/07 14:08

ftp passive 설정법입니다

#모듈을 내리고
rmmod ip_conntrack_ftp
#설정값을 넣어서 다시 올림
/sbin/modprobe ip_conntrack_ftp ports=포트번호,포트번호...

#재부팅시 올라오게 brigefirewall에 수정
vi /etc/rc.d/init.d/bridgefirewall
/sbin/modprobe ip_conntrack_ftp ports=포트번호,포트번호... #라인 수정

포트 볼려면 /sys/modules/ip_conntrack_ftp/parametter/ports

2010/06/07 14:07 2010/06/07 14:07
Windows 2000 Advanced Server 또는 Datacenter Server에서 NLB(네트워크 로드 균형 조정)를 구성하고 사용 가능하도록 설정하는 방법


NLB가 설치되어 있지 않으면 아래 단계를 수행하여 설치할 수 있습니다.

1. 시작을 누르고 설정을 가리키고 제어판을 누른 다음 네트워크 및 전화 접속 연결을 두 번 누릅니다.

2. NLB를 설치할 인터페이스를 마우스 오른쪽 단추로 누른 다음 등록 정보를 누릅니다.

3. 설치를 누르고 서비스를 누른 다음 추가를 누릅니다.

4. 네트워크 로드 균형 조정을 누른 다음 확인을 누릅니다.

Microsoft Windows NT 4.0 WLBS(Windows 로드 균형 조정 서비스)에서 Windows 2000 Advanced Server 또는 Windows 2000 Datacenter Server로 업그레이드하면 NLB가 자동으로 설치되고 WLBS 구성 설정이 NLB로 전송됩니다. Windows 2000 NLB와 Windows NT 4.0 WLBS가 상호 운용되기 때문에 WLBS 클러스터 호스트는 한 번에 하나씩 업그레이드할 수 있습니다.



Windows 2000에서 NLB를 구성하는 방법

1. NLB가 사용 가능하도록 설정되어 있으면 2단계로 건너뜁니다. 그렇지 않으면 아래 작업을 수행합니다.

a. 시작을 누르고 설정을 가리킨 다음 네트워크 및 전화 접속 연결을 누릅니다.
b. 가상 어댑터 역할을 해야 할 인터페이스를 마우스 오른쪽 단추로 누른 다음 등록 정보를 누릅니다.
c.네트워크 로드 균형 조정 확인란을 눌러 선택합니다.

2. 네트워크 로드 균형 조정 구성 요소를 누른 다음 등록 정보를 누릅니다.

3. 클러스터 매개 변수, 호스트 매개 변수 및 포트 규칙 탭에서 클러스터 전용 데이터를 입력합니다. 예를 들어, 주 IP 주소 상자에 클러스터가 균형 조정을 로드할 IP 주소(가상 IP 주소 또는 VIP라고도 함)를 입력합니다. 상자에 입력해야 할 데이터에 대한 설명을 보려면 창 오른쪽 상단에 있는 물음표 단추를 누른 다음 해당 필드를 누릅니다. 모든 작업을 마쳤으면 확인을 누릅니다.

4. 인터넷 프로토콜(TCP/IP)을 누른 다음 등록 정보를 누릅니다. 다음 IP 주소 사용을 누른 다음 IP 주소 상자에 가상 IP 주소를 입력합니다. 가상 IP 주소와 다른 IP 주소가 인터페이스에 지정되어 있으면 고급을 누른 다음 IP 설정 탭의 IP 주소 상자에 가상 IP 주소를 추가합니다.

일반적인 로드 균형 조정 설정의 구성에 대해 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.

http://support.microsoft.com/default.aspx?scid=kb;KO;198496 WLBS 포트 규칙을 설정하는 방법

http://support.microsoft.com/default.aspx?scid=kb;KO;219277 WLBS를 사용하여 HTTP 로드 균형 조정
2010/06/07 14:06 2010/06/07 14:06

보통 기본설치만 한 상태면 localhost로만 접속이 가능하도록 설정이 되어있는데, 외부에서 접속이 가능하도록 설정을 바꿔보자.

여기서는 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)

여기까지 간단한 과정을 통해서 mysql외부접속이 가능해진다.

2010/06/07 14:05 2010/06/07 14:05
1. DSO 방식으로 설치된 APACHE

[root@soma]# /usr/local/apache/bin/httpd -l

Compiled-in modules:
 
http_core.c
mod_so.c -> ( DSO 방식으로 설치된 것을 확인할 수 있는 모듈 )

위의 mod_so.c 모듈이 올라와있다면 간단하게 추가가 가능하게 됩니다. 방법은 아래와
같습니다.

mod_url.c 파일은 홈페지지 
DownLoad에서 다운 받으시길 바랍니다.

1-1. 설치

[root@soma]# /usr/local/apache/bin/apxs -i -a -c mod_url.c ( 만약 apxs 가 설치되어있지 않다면 아래 설치방법 참조 )

$ apxs -i -a -c mod_url.c    gcc -fpic -DSHARED_MODULE -I/path/to/apache/include -c mod_url.c 
ld -Bshareable -o mod_url.so mod_url.o 
cp mod_url.so /path_to/apache/libexec/mod_url.so 
chmod 755 /path_to/apache/libexec/mod_url.so 
[activating module `redurl' in  /path_to/apache/etc/httpd.conf] 
 
1-2. 확인

[root@soma]# vi /usr/local/apache/conf/httpd.conf

LoadModule redurl_module      libexec/mod_url.so 
AddModule mod_url.c


위의 2 가지 파일이 추가되었다면 정상적으로 설치되었다고 판단할 수 있습니다.

1-3. 활성화

[root@soma]# vi /usr/local/apache/conf/httpd.conf

<IfModule mod_url.c> 
    CheckURL On 
</IfModule>


conf 파일에 위의 문장을 아무곳에나 추가한다.

1-4. 데몬재시작

[root@soma]# /usr/local/apache/bin/apachectl restart


apxs 가 설치되어 있지 않은 경우는 아래처럼 설치하시면 됩니다.

2-1. 설치
[root@soma]# cp mod_url.c /usr/local/apache/include
[root@soma]# cd /usr/local/apache/include
[root@soma include]# gcc -fpic -DSHARED_MODULE -I/usr/include/apache -DEAPI -c mod_url.c
[root@soma include]# ls -al mod_url.o
[root@soma include]# gcc -shared -o mod_url.so mod_url.o
[root@soma include]# ls -al mod_url.so
[root@soma include]# cp mod_url.so /usr/local/apache/libexec
[root@soma include]# chmod 755 /usr/local/apache/libexec/mod_url.so

2-2. 추가


[root@soma]# vi /usr/local/apache/conf/httpd.conf

LoadModule redurl_module      libexec/mod_url.so 
AddModule mod_url.c


위의 2 가지 파일을 추가하시면 됩니다.

2-3. 활성화

[root@soma]# vi /usr/local/apache/conf/httpd.conf

<IfModule mod_url.c> 
    CheckURL On 
</IfModule>


conf 파일에 위의 문장을 아무곳에나 추가한다.

2-4. 데몬재시작

[root@soma]# /usr/local/apache/bin/apachectl restart

2010/06/07 14:04 2010/06/07 14:04
1. GRANT 명령어를 사용하여 계정생성 및 DB 권한 주기
mysql> GRANT ALL PRIVILEGES ON *.* to mk@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;
// 모든 DB 접속권한 부여 및 root 권한 부여, mk라는 유저는 localhost 에서만 접속가능 (내부접속)
mysql> flush privileges; //권한로드
: 모든곳(외부)에서 접속가능하게 하려면 mk@localhost 부분을 mk@'%' 로 바꿔주면 됨
: mk계정이 특정한 곳에서만 접속 가능하게 하려면 mk@localhost 부분을 mk@'ip주소' 로 바꿔주면 됨
: mk계정이 특정 DB에 접속을 하며(보이며) 해당 DB에'만' root 권한(모든 명령어) 을 줄때는 *.* 부분을 DB명.* 로바꿔주면 됨
: mk계정에 특정 명령어(권한)만 사용하게 할때는 ALL PRIVILEGES 부분을 바꿔주면 됨
ex) GRANT select, insert, delete, update ~~.... (select, insert, delete, update 만 실행 할 수 있음)

* GRANT 명령어가 아닌 mysql DB의 user테이블과 db 테이블을 이용하는 방법도 있지만 번거로우므로 패스..

2. 계정 패스워드 변경
root 권한으로 mysql 접속
mysql> show databases; //모든 db 목록 출력
mysql> use mysql; //mysql 이라는 db를 사용
mysql> show tables; // mysql DB의 모든 table 목록을 출력
mysql> show columns from user; // user 테이블의 구조를 살펴본다. desc user 로 해도 됨
mysql> UPDATE user SET password = password('변경패스워드') WHERE user = '계정';
// 매치된 row 가 있는지, 변경된게 몇개인지에 대한 결과가 나온다. 모든 결과가 0이라면 제대로 적용되지 않은것. 특정 계정만 바꾸려고 했으니 당연히 1이라는 결과값이 나와야 한다.
/* Result Example
 Query OK, 1 row affected (0.02 sec)
 일치하는 Rows : 1개 변경됨 : 1개 경고 : 0개
*/
mysql> flush privileges;

// mysql DB 선택후 바로 UPDATE 명령어를 내리면 된다. 여타 명령어는 DB를 확인하며 찾아가는 과정임..

3. 계정 삭제
root 계정 접속후
mysql> use mysql;
mysql> drop user 계정명;
// 관련 DB 정보 삭제

2010/06/07 14:04 2010/06/07 14:04
mysql 4.0.27 설치시 에러 발생

checking "LinuxThreads"... "Not found"
configure: error: This is a linux system and Linuxthreads was not
found.On linux Linuxthreads should be used.  Please install Linuxthreads
(or a new glibc) and try again.  See the Installation chapter in the


echo '/* Linuxthreads */' >> /usr/include/pthread.h
2010/06/07 14:02 2010/06/07 14:02
1시간 동안 로그가 많이 쌓일 때도 있지만,
로그가 많이 쌓이지 않을 때도 있을 수 있습니다.
logrotate 를 사용하세요.

logrotate 를 사용하면 지정한 용량보다 로그 화일의 크기가 커질 경우에만
새로운 로그 파일을 생성하고 지정한 용량까지 찬 화일은 따로 보관 합니다.

아래 내용을 /etc/logrotate.conf 에 넣어두면
 /usr/local/apache/logs/access_log  이 100MB 가 넘을 때마다
access_log.0
access_log.1
순서로 로그 화일을 백업하도록  설정할 수 있습니다.
아래에 rotate 가 3으로 지정되어 있기 때문에
로그 파일이 3개가 넘으면 가장 오래된 파일은 새로운 로그 화일이 생성될 때마다 자동으로 지워집니다.

 /usr/local/apache/logs/access_log  {
           rotate 3
           size=100M
           sharedscripts
           postrotate
                /bin/kill -hup `cat /usr/local/apache/logs/httpd.pid`
           endscript
}

/etc/logrotate.conf 에 설정된 내용을 실행하는 명령은
/usr/sbin/logroate /etc/logrotate.conf 입니다.
위 내용은 /etc/cron.daily  , /etc/cron.monthly 등등의 디렉토리 속에있는
logrotate 파일 속에 들어있습니다. 확인해 보세요.
위 /etc/cron.daily/logrotate  를 /etc/cron.hourly/ 에 넣어두면
한 시간 마다  /usr/local/apache/logs/access_log 가 100MB 가 넘었는지 체크해서 넘었을 경우에 로그화일을 rotate시킵니다.

conf 화일의 내용 중
/bin/kill -hup httpd프로세스아이디 부분은 로그 화일이 변경될 때 꼭 해 주어야 합니다.
만약 위 부분이 없을 경우 아파치 서버에 이상이 생길 수 있습니다.
2010/06/07 14:01 2010/06/07 14:01

웹서버에 c:\windows\system32\inetsrv\MetaBase.xml 에서 보시면 되고

시작 -> 제어판 -> 관리도구 -> 서비스에서

IIS Admin 을 중지하셔야 정상적으로 metabase.xml 파일을 수정하실 수 있습니다.


수정후에 IIS Admin 관련 하위 항목들을 재시작

'---------------------------------------------------------------------------

그리고 2번째 이야기


.xls 엑셀파일은 다운이돼도

.gul . hwp<-- 뭐이런 확장자 파일은 또 오류가 나네요??;;


office파일은 a href로 다운이 됩니다.

즉 MS사것은 모두..

그리고,gif나 jpg는 바로 웹브라우저로 뜹니다.

그러나 기타 GUI나 머 이런것들은 반드시 다운받을 수 있는 소스가 있어야만 가능합니다.

즉, 기타의 첨부파일은 다운로드 소스없이 다운 받으실 수 없습니다.


[해결방법]

1. IIS 6(인터넷 서비스 관리자)를 중지시킨다.

   (컴퓨터 선택 후 오른쪽 마우스 클릭 -> 모든작업 -> IIS 다시 시작을 클릭 후 중지 선택)

2. c:\windows\system32\inetsrv\MetaBase.xml 파일을 메모장 등으로 연다.

   AspMaxRequestEntityAllowed="204800000" <- 업로드 용량제한을 200MB로 설정한 예

   AspBufferingLimit="204800000" <- 다운로드 용량제한을 200MB로 설정한 예

   byte로 입력하기 때문에 1024 는 1KB이므로 알아서 잘 계산하세요 ^^

3. MetaBase.xml을 저장하고 그 다음 IIS 6를 시작한다. (IIS 다시 시작을 클릭 후 시작 선택)

2010/06/07 13:59 2010/06/07 13:59

function textToImage($text, $fname, $fsize) {
    $text = iconv("EUC-KR", "UTF-8", $text); // 한글지원
    $padding = 10; // 이미지여백
    $ttf  ="폰트가 있는 서버경로";
    $size = imagettfbbox($fsize, 0, $ttf, $text);
    $xsize = abs($size[0]) + abs($size[2])+($padding*2);
    $ysize = abs($size[5]) + abs($size[1])+($padding*2);
    $image = imagecreate($xsize, $ysize);
    $bcolor = imagecolorallocate ($image, 255, 255, 255);
    $fcolor = imagecolorallocate ($image, 255, 0, 0);
    imagefilledrectangle($image, 0, 0, $xsize, $ysize, $bcolor);
    imagettftext($image, $fsize, 0, $padding, $fsize+$padding, $fcolor, $ttf, $text);
    imagejpeg($image,$fname, 85);
    imagepng($image);
    imagedestroy($image);
}

textToImage("한글 English 특수문자 ♥","title1.jpg","25");
2010/06/04 06:09 2010/06/04 06:09
http://www.zipfinder.co.kr/ 다운 받아서 MY-SQL 백업 용으로 변경 했습니다.

MY-SQL 쿼리브라우저 에서 데이터 복원 하시면 편하게 쓸수 있습니다.

최신 우편본호 원본 파일은  http://www.zipfinder.co.kr/  곳에서 다운받아서 사용하십시오.

현  2010 최신 자료 입니다


2010/06/04 00:17 2010/06/04 00:17
유용한 링크 소개하는거라 딱히 팁이랄 것도 없습니다. ^^;

http://www.phpbench.com/

위 사이트에 들어가보시면 PHP 개발자들이 궁금해할만한 이슈에 대한 벤치마크 결과가 있습니다.

- for가 빠를까, while이 빠를까?
- echo가 빠를까, print가 빠를까?
- foreach, for, while 중 뭐가 빠를까?
- == 가 빠를까, ===가 빠를까?

등에 대한 성능 벤치마크 자료가 있습니다.

개발하실 때 참고하세요~
2010/06/04 00:10 2010/06/04 00:10
서버 작업하면 가끔 콘솔 2개 열고 작업하다 엉뚱한데 날리는 경우가 있습니다.
특히나 꾸벅 꾸벅 졸면서 새벽작업할때.. 캄캄합니다. IDC까지 그새벽에 가야하고..

쉘스크립트 입니다.

cat newrm.sh
#!/bin/sh

# newrm - a replacement for the existing rm command that allows a
#  rudimentary unremove capability through utilizing a newly created
#  directory in the user's home directory. It can handle directories
#  of content as well as individual files, and if the user specifies
#  the -f flag, files are NOT archived, but removed.
#  rewrm 에서 -f를 붙이면 휴지통으로 버리지않고 완전 제거한다는...
 
# Big Important Warning: you'll want a cron job or similar to keep the
#  individual trash directories tamed, otherwise nothing will ever
#  actually be deleted on the system and you'll run out of disk space!

mydir="$HOME/.deleted-files"  # 지워진 파일이 저장되는 곳
realrm="/bin/rm "                  # rm파일위치
copy="/bin/cp -R"                  # 복사(휴지통으로 넣기)위한 cp 명령 경로

if [ $# -eq 0 ] ; then  # let 'rm' ouptut the usage error
  exec $realrm  # our shell dies and is replaced by /bin/rm
fi

# parse all options looking for '-f'

flags=""

while getopts "dfiPRrvW" opt
do
  case $opt in
    f ) exec $realrm "$@"    ;;  # exec lets us exit this script directly.
    * ) flags="$flags -$opt"  ;;  # other flags are for 'rm', not us
  esac
done
shift $(( $OPTIND - 1 ))

# make sure that the $mydir exists

if [ ! -d $mydir ] ; then
  if [ ! -w $HOME ] ; then
    echo "$0 failed: can't create $mydir in $HOME" >&2
    exit 1
  fi
  mkdir $mydir
  chmod 700 $mydir      # a little bit of privacy, please
fi

for arg
do
  newname="$mydir/$(date "+%S.%M.%H.%d.%m").$(basename "$arg")"
  if [ -f "$arg" ] ; then
    $copy "$arg" "$newname"
  elif [ -d "$arg" ] ; then
    $copy "$arg" "$newname"
  fi
done

exec $realrm $flags "$@"        # our shell is replaced by realrm


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

본인계정의
.profile에 alias rm='/root/newrm.sh' 추가후

source .profile  리로드

사용 rm 파일명하면 다짜고짜 지워버립니다.
단 본인 HomeDir/.deleted-files 에 보면 지워진 파일이 들어있습니다....
수동으로 꺼내서 이름을 변경하셔도 되구요..

아래의 파을을 이용하면 됩니다. 윈도그로 따지면 휴지통에서 복원정도 명령이겠네요.

cat unrm.sh
#!/bin/sh

# unrm - search the deleted files archive for the specified file. If
#  there is more than one match, show a list ordered by timestamp, and
#  let the user specify which they want restored.

# Big Important Warning: you'll want a cron job or similar to keep the
#  individual trash directories tamed, otherwise nothing will ever
#  actually be deleted on the system and you'll run out of disk space!

mydir="$HOME/.deleted-files"
realrm="/bin/rm"
move="/bin/mv"

dest=$(pwd)

if [ ! -d $mydir ] ; then
  echo "$0: No deleted files directory: nothing to unrm" >&2 ; exit 1
fi

cd $mydir

if [ $# -eq 0 ] ; then # no args, just show listing
  echo "Contents of your deleted files archive (sorted by date):"
#  ls -FC | sed -e 's/[[:digit:]][[:digit:]]\.//g' -e 's/^/  /'
  ls -FC | sed -e 's/\([[:digit:]][[:digit:]]\.\)\{5\}//g' \
    -e 's/^/  /'
  exit 0
fi

# Otherwise we must have a pattern to work with. Let's see if the
# user-specified pattern matches more than one file or directory
# in the archive.

matches="$(ls *"$1" 2> /dev/null | wc -l)"

if [ $matches -eq 0 ] ; then
  echo "No match for \"$1\" in the deleted file archive." >&2
  exit 1
fi

if [ $matches -gt 1 ] ; then
  echo "More than one file or directory match in the archive:"
  index=1
  for name in $(ls -td *"$1")
  do
    datetime="$(echo $name | cut -c1-14| \
      awk -F. '{ print $5"/"$4" at "$3":"$2":"$1 }')"
    if [ -d $name ] ; then
      size="$(ls $name | wc -l | sed 's/[^0-9]//g')"
      echo " $index)  $1  (contents = ${size} items, deleted = $datetime)"
    else
      size="$(ls -sdk1 $name | awk '{print $1}')"
      echo " $index)  $1  (size = ${size}Kb, deleted = $datetime)"
    fi
    index=$(( $index + 1))
  done
 
  echo ""
  echo -n "Which version of $1 do you want to restore ('0' to quit)? [1] : "
  read desired

  if [ ${desired:=1} -ge $index ] ; then
    echo "$0: Restore cancelled by user: index value too big." >&2
    exit 1
  fi

  if [ $desired -lt 1 ] ; then
    echo "$0: restore cancelled by user." >&2 ; exit 1
  fi

  restore="$(ls -td1 *"$1" | sed -n "${desired}p")"
 
  if [ -e "$dest/$1" ] ; then
    echo "\"$1\" already exists in this directory. Cannot overwrite." >&2
    exit 1
  fi

  echo -n "Restoring file \"$1\" ..."
  $move "$restore" "$dest/$1"
  echo "done."

  echo -n "Delete the additional copies of this file? [y] "
  read answer
 
  if [ ${answer:=y} = "y" ] ; then
    $realrm -rf *"$1"
    echo "deleted."
  else
    echo "additional copies retained."
  fi
else
  if [ -e "$dest/$1" ] ; then
    echo "\"$1\" already exists in this directory. Cannot overwrite." >&2
    exit 1
  fi

  restore="$(ls -d *"$1")"

  echo -n "Restoring file \"$1\" ... "
  $move "$restore" "$dest/$1"
  echo "done."
fi

exit 0


휴지통에서 복구하기..

unrm.sh 복구할 파일명하면 됩니다.

꼭 필요하던건데.. 이번에 책을 보면서 알게되어 저자의 사이트에서 퍼와서 테스트후
작성합니다.

책명 : 셸 스크립트  101가지 예제로 정복하는 - 에이콘출판사 
광고라고 혹시 하실분 계실까 몰라서 인데 제가 22,500원주고 모 사이트에서 사서 본책입니다.
원저자는 외국인 인듯합니다.

그럼 머리가 캄캄해 지지 않도록 노력해 봅시다.
2010/06/03 23:48 2010/06/03 23:48
플래시를 넣어준 태그 안에
< embed > ~~~< /embed > 태그 사이에.. < PARAM NAME=wmode VALUE=transparent >
2010/06/02 04:09 2010/06/02 04:09
Boot. ini 파일 복구 방법
 
BOOT.INI 파일이 손상되었습니다.
C:\windows\에서 부팅합니다.

하면서 부팅이 된다면 boot.ini 파일이 0k 이거나 아에 없는 경우가 대부분이다.
boot.ini 파일은 부팅을 관장하는 파일로 멀티 부팅때 중요한 역할을 한다.
Linux로 말하자면 lilo와 같은 역할을 한다.

기본적으로 첫번째 하드의 첫번째 파티션에 windows가 \windos 폴더에 있다면 다음과 같이 적어 주면된다.


이 설정은 시작→제어판→시스템→고급→시작및복구→설정→편집→boot.ini메모장에  직접 작성하거나 붙여넣기 하면 된다.
이파일은 첫번째 하드의 첫파티션(시스템 파티션)의 루트 폴더에 존재한다.
2010/06/01 12:15 2010/06/01 12:15
오래된 파일 압축 해제 및 사용하지 않기

XP에 보면 디스크 정리가 있다.(해당 드라이브 속성에 존재 한다)

디스크 정리를 하다보면 오래된 파일 압축을 한다.
사용된지 오래된 파일을 압축하여 공간을 확보 하는 것인데 디렉토리나 파일별로 압축을 한다.
이 항목이 상당히 거슬릴 때가 있다. 디스크 정리시 상당히 오래 걸리고 하드 공간도 많은데 굳이 이 기능이 필요할까 하는 생각도 든다.

그럼 이 기능을 사용하지 않게 해보자.

1. 시작 -> 실행 -> regedit 를 실행하여 레지스트리 편집기를 연다.
2. 추후를 위하여 레지스트를 백업 한다.
3. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Compress old files 를 오른쪽 클릭 하여 통재로 삭제 한다.

위와 같이 레지스트리 삭제하면 디스크 정리시 오래된 파일을 압축 하지 않는다.

그럼 기존의 압축된 파일은 어떻게 하나??
압축을 해제해 주면 된다.

NTFS의 자체 내부 명령어 Compact로 압축을 풀어 주면된다.
Compact 명령어는 디렉토리나 파일을 압축, 압축해제 하는 명령어이다.

compact /u /s /i /a

옵션을 살펴 보면
/c 압축
/u 압축 해제
/s 하위디렉토리 포함
/i 오류 무시
/a 숨김, 시스템 속성 파일 출력
/q 최소한의 정보만 출력
/f 강제로 실행
2010/06/01 12:14 2010/06/01 12:14
메일만 사용하는 계정 만들기

sendmail 사용시 전자우편만 사용할수 있는 계정추가 하기
(php 내장 mail()함수 사용 때문에)

[COLOR="Navy"]# useradd userid -M -s /bin/false[/COLOR]
-M = 홈디렉토리를 만들지 않는다
-s = 셀지정 한다
/bin/false = 실제로는 존재하지않는 셀 설정 방법

비밀번호를 설정 한다.
#passwd userid :

다음과 같이 설정 하면 메일이외의 계정은 사용할수 가 없다.
메일은 아웃룩과 같은 메일 클라이언트로 받아볼수가 있다.
2010/06/01 12:13 2010/06/01 12:13