.gray img {
	filter:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><filter id="grayscale"><feColorMatrix type="matrix" values="0.3333" 0.3333="" 0="" 10=""></feColorMatrix></filter></svg>#grayscale'); /* Firefox 3.5+, IE10 */
	filter:gray; /* IE6-9 */
	-webkit-filter: grayscale(100%); /* Chrome 19+ &amp; Safari 6+ */
	-webkit-transition: all .6s ease; /* Fade to color for Chrome and Safari */
	-webkit-backface-visibility: hidden; /* Fix for transition flickering */
}

/* 오버시 컬러로 */
.gray:hover {
	filter: none;
	-webkit-filter: grayscale(0%);
}

출처 : 여기


'Language > CSS' 카테고리의 다른 글

CSS float 요소 중앙정렬  (0) 2011.10.04
float: left나 float: right된 element는 중앙 정렬이 되지 않습니다.
물론
width를 줘서 margin를 이용하면 됩니다.
하지만 매번 width를 수정하는건 레알 귀찮습니다.
간다하게 float: right/left, position: relative 그리고 left: +-50%를 이용해서 해결 할 수 있습니다.
욕덩이 6 에서도 잘 돌아가는걸 확인했습니다.

예)


#test {
    float: right;
    position: relative;
    left: -50%;
}

#test li {
    float: left;
    position: relative;
    left: 50%;
   
    border: 1px solid red;
}
<ul id="test">
    <li>아이유</li>
    <li>효느님</li>
    <li>수지</li>
    <li>리지</li>
    <li>돼지</li>
</ul>

구경하러가기: http://jsfiddle.net/E2aVK/

출처: phpschool.com tip&tech


'Language > CSS' 카테고리의 다른 글

CSS 이미지 흑백처리  (1) 2013.01.21



[Windows XP]

C:/Documents and Settings/사용자 아이디/Application Data/프로그램폴더
[Windows Vista /]
C:/Users/사용자 아이디/AppData/Roaming/프로그램폴더
 
[EditPlus3]
/EditPlus 3/ftp2_u.ini
[SQLYog]
/SQLyog/sqlyog.ini
[SecureCRT]
/VanDyke/Config/Sessions 하위 디렉토리/파일 전부
[FileZilla]
/FileZilla xml.파일 전부(사이트관리자만 필요할경우 sitemanager.xml)

'OS > Windows' 카테고리의 다른 글

IE8 드래그 검색 없애기  (0) 2010.04.07


<아르미아>
 그렘린 4 8 4 70 
 - 방어구  : 레더아머, 스톨라, 라이트펠트, 패디드아머 계열 
 - 무기류 : 단검, 나무지팡이, 클럽, 소형활, 우드쉴드, 바그나우 
 - 기타  : 크리스탈III 
 크릴 8 15 20 100 
 - 방어구  : 레더아머, 스톨라, 라이트펠트, 패디드아머 계열 
 - 무기류 : 단검, 나무지팡이, 클럽, 소형활, 숏스피어, 다트, 숏소드 
 - 기타  : 크리스탈IV 
 멧돼지 11 22 35 130 
 - 방어구  : 레더아머, 스톨라, 라이트펠트, 패디드아머 계열 
 - 무기류 : 바그나우, 숏스피어, 다트, 버클러, 핸드액스, 우드 보우, 숏소드 
 - 기타  : 크리스탈V 
 그렘린킹 15 28 60 200 
 - 방어구  : 레더아머, 스톨라, 라이트펠트, 패디드아머 계열 
 - 무기류 : 워로드, 숏소드, 핸드액스, 우드보우, 너클카터, 글레이브, 드로잉액스 
 - 기타  : 사파이어, 크리스탈V 
울프 18 34 80 200 
 - 방어구  : 레더아머, 하드레더아머, 라이트펠트, 스톨라, 패디드아머 계열 
 - 무기류 : 숏소드,핸드액스,우드보우,워 로드,글레이브,드로잉액스,스틸레토, 대형활 
 - 기타  : 사파이어, 크리스탈III 
크릴대장 22 42 100 400 
 - 방어구  : 하드레더아머, 울프스피릿펠트, 실크클로스, 스플린트아머 계열 
 - 무기류 : 워로드, 너클카터, 글레이브, 스틸레토, 대형활, 스파이크클럽 
 - 악세사리 : 루비 오브 카벙클 
 - 기타  : 사파이어, 크리스탈III 
도마뱀 24 48 100 500 
 - 방어구  : 하드레더아머, 실크클로스, 울프스피릿펠트, 스플린트아머 계열 
 - 기타  : 크리스탈V 
아처오크 27 63 130 500 
 - 방어구  : 하드레더아머,울프스피릿펠트,실크클로스,패디드아머, 스플린트아머 계열 
 - 무기류 : 너클카터, 글레이브, 드로잉액스, 커터스태프, 클러, 윙드스피어 
 - 악세사리 : 루비 오브 카벙클, 오브  
 - 기타  : 사파이어, 크리스탈IV 
오크나이트 35 78 140 600 
 - 방어구  : 레더아머, 하드레더아머, 라이트펠트, 울프스피릿펠트, 스톨라, 
    실크클로스, 패디드아머, 스플린트아머 계열 
 - 무기류 : 스틸레토, 대형활, 스파이크 클럽, 클러, 윙드스피어,스네이크프리클, 해머 
 - 악세사리 : 반지류 
 - 기타  : 사파이어, 크리스탈III, 오리하루콘 가루 
드래곤파피 40 89 190 1000 
 - 방어구  : 레더아머, 스터디드레더아머, 라이트펠트, 레오스피릿펠트, 스톨라, 
     뱀파이어로브, 패디드아머, 밴디지아머 계열 
 - 무기류 : 커터 스태프,클러, 윙드스피어,스네이크프리클,해머, 숏소드,핸드액스,우드보우 
 - 기타  : 사파이어, 크리스탈III, 오리하루콘 가루, 드래곤파피의 성장액 
하프오크 43 93 200 800 
 - 방어구  : 레더아머, 스터디드레더아머, 라이트펠트, 레오스피릿펠트, 스톨라, 
     뱀파이어로브, 패디드아머, 밴디지아머 계열 
 - 무기류 :스네이크프리클,해머,레이피어,배틀보우,메이스,숏소드,핸드액스,우드보우,카이트쉴드 
 - 기타  : 사파이어, 크리스탈III, 오리하루콘 가루 
트롤 52 135 270 1200 
 - 방어구:레더아머,스터디드레더아머,라이트펠트,레오스피릿펠트,스톨라,뱀파이어로브,패디드아머, 밴디지아머 계열 
 - 무기류 : 젬스태프, 샤프클러, 랜스, 워로드, 너클카터, 글레이브, 드로잉액스 
 - 기타  : 디바인 서클 조각, 사파이어, 크리스탈VI, 오리하루콘 가루 
헌터트롤 60 155 280 1600 
 - 방어구  : 하드레더아머, 스터디드레더아머, 레오스피릿펠트, 울프스피릿펠트, 
    실크클로스, 벰파이어로브, 밴디지아머, 스플린트아머 계열 
 - 무기류 : 커팅 브메랑, 워해머, 크라이카, 스파이크 클럽, 커터스태프, 클러, 
    윙드스피어, 시미터 
 - 기타  : 디바인 서클 조각, 사파이어, 크리스탈IV, 오리하루콘 가루 
 
 
 프리크트롤 71 184 410 2000 
습득아이템   - 방어구  : 스터디드레더아머, 체인메일아머, 뱀파이어로브, 쉐도우로브, 
     이글스피릿펠트, 레오스피릿펠트, 밴디지아머, 브린젠딘아머 계열 
  - 무기류 : 데이징보우, 사일런트스태프, 키마이라나이프, 레이피어, 배틀 우, 
    라지쉴드, 포챠드, 토마호크 
  - 악세사리 : 네크로스톤, 아이오브아저  
  - 기타  : 사파이어, 크리스탈III, 디바인 서클 조각, 오리하루콘 가루 
 
 
 폴른트롤 80 205 420 2400 
습득아이템   - 방어구  : 스터디드레더아머, 체인메일아머, 뱀파이어로브, 쉐도우로브, 
    이글스피릿펠트, 레오스피릿펠트, 밴디지아머, 브린젠딘아머 계열 
  - 무기류 : 샤프클러, 랜스, 커팅 브메랑 
  - 기타 : 사파이어, 크리스탈V, 디바인 서클 조각, 오리하루콘 가루, 
    락토레리움 가루 
 
 
 카오스트롤 93 273 710 5000 
습득아이템   - 무기류 : 워해머, 크라이카, 시미터, 데이징보우, 사일런트스태프, 
    키마이라나이프, 포챠드, 토마호크 
  - 기타  : 사파이어, 크리스탈IV, 오리하루콘 가루, 테임드보어의 성장액 
 
  
 
  
      
 구울 57 130 220 1800 
습득아이템   - 방어구  : 하드레더아머, 스터디드레더아머, 실크클로스, 뱀파이어로브, 
     울프스피릿펠트, 레오스피릿펠트, 밴디지아머, 스플린트아머 계열 
  - 무기류 : 스틸레토, 대형 활, 샤프클러, 랜스, 커팅 브메랑 
  - 기타  : 크리스탈II, 오리하루콘 가루 
 
 
 카벙클
 65 184 312 2000 
습득아이템   - 방어구  : 하드레더아머, 체인메일아머, 실크클로스, 쉐도우로브, 
    울프스피릿펠트, 이글스피릿펠트, 스플린트아머, 브리젠딘아머 계열 
  - 무기류 : 시미터, 데이징보우, 스네이크프리클, 해머, 라지 실드, 
    사일런트스태프, 키마이라나이프 
  - 악세사리 : 네크로스톤, 아이오브아저  
  - 기타 : 크리스탈VI, 오리하루콘 가루 
 
 
 미노타우르스 74 191 406 2200 
습득아이템   - 방어구  : 스터디드레더아머, 체인메일아머, 뱀파이어로브, 쉐도우로브, 
     레오스피릿펠트, 이글스피릿펠트, 밴디지아머, 브리젠딘아머 계열 
  - 무기류 : 키마이라나이프, 포챠드, 토마호크, 메이스, 젬스태프 
  - 악세사리  : 아이오브익시어, 아이오브라무, 홀리아이, 네크로스톤 
  - 기타  : 크리스탈III, 오리하루콘 가루 
 
 
 구울치프 82 203 460 2600 
습득아이템   - 방어구  : 스터디드레더아머, 체인메일아머, 뱀파이어로브, 쉐도우로브, 
    레오스피릿펠트, 이글스피릿펠트, 밴디지아머, 브리젠딘아머 계열 
  - 무기류 : 나이트쉴드 
  - 악세사리 : 힘의팔찌, 마나의팔찌, 체력의팔찌, 생명의팔찌,  
  - 기타 : 크리스탈III, 오리하루콘가루, 락토레리움가루 
 
 
 카벙클하이어 90 230 540 3000 
습득아이템   - 방어구  : 스터디드레더아머, 플레이트아머, 뱀파이어로브, 쉐도우로브, 
     레오스피릿펠트, 이글스피릿펠트, 밴디지아머, 브리젠딘아머 계열 
  - 무기류 : 더블액스, 팰콘로드 
  - 악세사리 : 민첩의팔찌, 마력의팔찌 
  - 기타  : 크리스탈II, 오리하루콘 가루, 락토레리움가루 
 
 
 드레드타우르스 98 254 654 4200 
습득아이템   - 방어구  : 체인메일아머, 플레이트아머, 쉐도우로브, 갑각로브, 이글스피릿펠트, 
    본스피릿아머, 브리젠딘아머, 필드컴뱃아머 계열 
  - 무기류 : 브로드소드, 배틀액스, 시미터, 데이징보우, 사일런트스태프 
  - 기타 : 크리스탈VI, 오리하루콘 가루, 락토레리움 가루 
 
 
 싸이클롭 105 270 720 4800 
습득아이템   - 방어구  : 플레이트아머, 갑각로브, 본스피릿펠트, 필드컴뱃아머 계열 
  - 무기류 : 글라디우스, 키마이라나이프, 포챠드, 브론즈쉴드 
  - 기타  : 크리스탈IV, 오리하루콘 가루, 락토레리움 가루 
 
 
 오크샤먼 113 285 770 5000 
습득아이템   - 방어구  : 체인메일아머, 골든플레이트아머, 쉐도우로브, 갑각로브, 
    이글스피릿펠트, 본스피릿펠트, 브리젠딘아머, 필드컴뱃아머 계열 
  - 무기류 : 고딕메이스, 성자의지팡이, 히든스피어, 광속의활, 크라이카, 시미터, 
    사일런트 스태프, 포챠드 
  - 기타 : 크리스탈III, 풀 디바인 서클 조각, 오리하루콘 가루, 락토레리움 가루 
 
 
 아쳐싸이클롭 120 103 840 5200 
습득아이템   - 방어구  : 플레이트아머, 골든플레이트아머, 쉐도우로브, 캐스팅로브, 
    이글스피릿펠트, 아이언아머, 필드컴뱃아머, 네이쳐아머 계열 
  - 무기류 : 더블블레이드, 그레이트액스, 다크니스클러, 트라이던트 
  - 기타  : 크리스탈V, 풀 디바인 서클 조각, 오리하루콘 가루, 락토레리움 가루 
 
 
 타우르스킹 127 338 930 5900 
습득아이템   - 방어구  : 체인메일아머, 플레이트아머, 골든플레이트아머, 갑각로브,  
    쉐도우로브, 캐스팅로브, 이글스피릿펠트, 본스피릿펠트, 아이언아머,  
    브리젠딘아머, 필드컴뱃아머, 네이쳐아머 계열 
  - 무기류 : 소울블레이드, 히드라보우, 배틀액스, 키마이라나이프, 포챠드, 
    토마호크, 타워쉴드 
  - 기타 : 드래곤 엠블렘, 크리스탈VI, 오리하루콘 가루, 락토레리움 가루 
 
 
 블러디싸이클롭 136 395 1090 6500 
습득아이템   - 방어구  : 체인메일아머, 골든플레이트아머, 드워븐플레이트아머, 갑각로브, 
    쉐도우로브, 캐스팅로브, 이글스피릿펠트, 본스피릿펠트, 아이언아머, 
    브리젠딘아머, 필드컴뱃아머, 네이쳐아머 계열 
  - 무기류 : 윙로드, 어쌔신나이프, 블루젬스태프, 고딕메이스 
  - 기타  : 드래곤엠블렘, 크리스탈V, 오리하루콘가루, 락토레리움가루 
 
 
 오크닥터 143 430 1080 6800 
습득아이템   - 방어구  : 플레이트아머, 골든플레이트아머, 드워븐플레이트아머, 갑각로브, 
    캐스팅로브, 본스피릿펠트, 아이언아머, 필드컴뱃아머, 네이쳐아머계열 
  - 무기류 : 크로스스워드, 광속의활, 더블액스, 팰콘로드, 샤미르, 배틀액스 
  - 기타 : 드래곤엠블렘, 크리스탈IV, 오리하루콘가루, 락토레리움가루 
 
 
 엘더싸이클롭 150 455 1200 7500 
습득아이템   - 방어구  : 플레이트아머, 골든플레이트아머, 골드엠버서드아머, 본스피릿펠트, 
    아이언아머, 메타엘리멘탈아머, 갑각로브, 캐스팅로브, 미스릴로브, 
    필드컴뱃아머, 네이쳐아머, 골드커브웹아머 계열 
  - 무기류 : 엘븐보우, 프로미넌스엣지, 브로드소드, 배틀액스 
  - 기타  : 드래곤엠블렘, 크리스탈V, 오리하루콘가루, 락토레리움가루 
 
 
 자쿰 피킷 155 461 1266 8000 
습득아이템   - 방어구  : 플레이트아머, 골든플레이트아머, 골드엠버서드아머, 갑각로브, 
    캐스팅로브, 미스릴로브, 본스피릿펠트, 아이언아머, 메타엘리멘탈아머, 
    필드컴뱃아머, 네이쳐아머, 골드커브웹아머 계열 
  - 무기류 : 사이킥해머, 드래곤해머 
  - 기타 : 드래곤엠블렘, 크리스탈VI, 오리하루콘가루, 락토레리움가루 
 
 
 크루엘싸이클롭 158 510 1320 8500 
습득아이템   - 방어구  : 골든플레이트아머, 드워븐플레이트아머, 골드엠버서드아머, 갑각로브, 
    캐스팅로브, 미스릴로브, 본스피릿펠트, 아이언아머, 메타엘리멘탈아머, 
    필드컴뱃아머, 네이쳐아머, 골드커브웹아머 계열 
  - 무기류 : 아이오브카벙클, 베히모스터스크, 궁그닐, 소울블레이드, 글라디우스, 
    미스릴보우, 아이기스 
  - 기타  : 드래곤엠블렘, 크리스탈IV, 오리하루콘가루, 테임드베어의성장액 
 
 
[아즈란 필드 보스몬스터] 
- 오크샤먼트루퍼           
습득아이템   - 방어구  : 드워븐플레이트아머, 골드엠버서드아머, 미스릴로브, 
    메타엘리멘탈아머, 골드커브웹아머 계열 
  - 무기류 : 더블블레이드, 그레이트액스, 사이킥해머, 드래곤해머, 아이기스 
  - 기타 : 피그의성장액, 테임드울프의성장액 
 
 
- 오크트루퍼           
습득아이템   - 방어구  : 드워븐플레이트아머, 골드엠버서드아머, 미스릴로브, 
    메타엘리멘탈아머, 골드커브웹아머 계열 
  - 무기류 : 더블블레이드, 그레이트액스, 사이킥해머, 드래곤해머, 아이기스 
  - 기타 : 피그의성장액, 드래곤파피의성장액 
 
 
- 오크로드트루퍼           
습득아이템   - 방어구  : 드워븐플레이트아머, 미스릴로브, 아이언아머, 네이쳐아머 계열 
  - 기타 : 테임드베어의알, 테임드베어의 성장액 
 
 
 
 
  
      
 스켈톤 84 195 495 3300 
습득아이템   - 방어구  : 스터디드레더아머, 체인메일아머, 뱀파이어로브, 쉐도우로브, 
    이글스피릿펠트, 브리젠딘아머 계열 
  - 무기류 : 크로스 스워드, 광속의활, 나이트쉴드 
  - 악세사리 : 힘의팔찌, 마나의팔찌, 체력의팔찌, 생명의팔찌 
  - 기타  : 크리스탈VI, 오리하루콘가루, 락토레리움가루 
 
 
 좀비베어
 95 240 540 3600 
습득아이템   - 방어구  : 체인메일아머, 플레이트아머, 쉐도우로브, 갑각로브, 
    이글스피릿펠트, 본스피릿펠트, 필드컴뱃아머 계열 
  - 무기류 : 다크니스 클러, 트라이던트, 챠크람, 워해머, 크라이카 
  - 기타 : 크리스탈II, 오리하루콘가루, 락토레리움가루 
 
 
 스켈톤아처 110 170 828 5000 
습득아이템   - 방어구  : 체인메일아머, 골든플레이트아머, 쉐도우로브, 갑각로브, 
    이글스피릿펠트, 본스피릿펠트, 브리젠딘아머, 필드컴뱃아머 계열 
  - 무기류 : 미스릴보우, 블루젬스태프, 토마호크, 크로스스워드, 브론즈쉴드 
  - 기타  : 크리스탈III, 오리하루콘가루, 락토레리움가루 
 
 
 좀비트롤 116 193 900 5500 
습득아이템   - 방어구  : 플레이트아머, 골든플레이트아머, 캐스팅로브, 이글스피릿펠트, 
    본스피릿펠트, 아이언아머, 브리젠딘아머, 네이쳐아머 계열 
  - 무기류 : 파나카, 샤미르, 더블액스, 팰콘로드 
  - 기타 : 크리스탈IV, 오리하루콘가루, 락토레리움가루 
 
 
 스켈톤스피어맨 123 382 1018 6200 
습득아이템   - 방어구  : 체인메일아머, 플레이트아머, 골든플레이트아머, 쉐도우로브,  
    갑각로브, 캐스팅로브, 이글스피릿펠트, 본스피릿펠트, 아이언아머, 
    브리젠딘아머, 필드컴뱃아머, 네이쳐아머 계열 
  - 무기류 : 챠크람, 브로드소드, 시미터, 데이징보우, 사일런트스태프 
  - 기타  : 크리스탈V, 오리하루콘가루, 락토레리움가루 
 
 
 스켈톤컨져러 129 385 1010 6400 
습득아이템   - 방어구  : 체인메일아머, 플레이트아머, 드워븐플레이트아머, 쉐도우로브, 
    갑각로브, 캐스팅로브, 이글스피릿펠트, 본스피릿펠트, 아이언아머, 
    브리젠딘, 필드컴뱃아머, 네이쳐아머 계열 
  - 무기류 : 소울 블레이드, 히드라 보우, 타워쉴드 
  - 기타 : 크리스탈VI, 오리하루콘가루, 락토레리움가루 
 
 
 히드라 134 414 1120 7200 
습득아이템   - 방어구  : 체인메일아머, 플레이트아머, 드워븐플레이트아머, 쉐도우로브, 
    갑각로브, 캐스팅로브, 이글스피릿펠트, 본스피릿펠트, 아이언아머, 
    브리젠딘, 필드컴뱃아머, 네이쳐아머 계열 
  - 무기류 : 미스릴 해머, 글라디우스 
  - 기타  : 크리스탈IV, 오리하루콘가루, 락토레리움가루 
 
 
 다크엘프 140 423 1130 7500 
습득아이템   - 방어구  : 플레이트아머, 골든플레이트아머, 드워븐플레이트아머, 갑각로브, 
    캐스팅로브, 이글스피릿펠트, 아이언아머, 네이쳐아머 계열 
  - 무기류 : 브류나크, 아스타로드나이프, 성자의지팡이, 히든스피어, 파나카, 
    크로스스워드, 광속의활 
  - 기타 : 크리스탈II, 오리하루콘가루, 락토레리움가루 
 
 
 스켈톤나이트 147 468 1236 8100 
습득아이템   - 방어구  : 플레이트아머, 골든플레이트아머, 드워븐플레이트아머, 갑각로브, 
    캐스팅로브, 본스피릿아머, 아이언아머, 필드컴뱃아머, 네이쳐아머 계열 
  - 무기류 : 그람, 더블블레이드, 그레이트액스, 다크니스클러, 트라이던트, 챠크람 
  - 기타  : 크리스탈II, 오리하루콘가루, 락토레리움가루 
 
 
 스켈톤워리어 154 498 1320 8700 
습득아이템   - 방어구  : 골든플레이트아머, 골드엠버서드아머, 갑각로브, 캐스팅로브, 
    미스릴로브, 본스피릿아머, 아이언아머, 메타엘리멘탈아머, 
    필드컴뱃아머, 네이쳐아머, 골드커브웹아머 계열 
  - 무기류 : 사이킥해머, 드래곤해머, 아이기스 
  - 기타 : 크리스탈III, 오리하루콘가루, 락토레리움가루 
 
 
 골드히드라
(Boss) 162 540 1440 30000 
습득아이템   - 방어구  : 골든플레이트아머, 드워븐플레이트아머, 갑각로브, 캐스팅로브, 
    본스피릿펠트, 아이언아머, 필드컴뱃아머, 네이쳐아머 계열 
  - 무기류 : 라이트닝스피어, 엠버젬스태프, 히드라보우, 미스릴해머, 
     블루젬스태프, 고딕메이스, 성자의지팡이, 히든스피어 
 
 
 오드프로그 168 485 1360 9800 
습득아이템   - 방어구  : 골든플레이트아머, 드워븐플레이트아머, 골드엠버서드아머, 
    아이언아머, 네이쳐아머, 골드커브웹아머 계열 
  - 기타 : 크리스탈V, 오리하루콘가루, 락토레리움 가루 
 
 
 스톤고렘 175 525 1480 10800 
습득아이템   - 방어구  : 골든플레이트아머, 골드엠버서드아머, 캐스팅아머, 미스릴로브, 
    아이언아머, 필드컴뱃아머, 네이쳐아머 계열 
  - 기타 : 크리스탈VI, 오리하루콘가루 락토레리움가루 
 
 
 그림락 183 565 1600 11200 
습득아이템   - 방어구  : 드워븐플레이트아머, 골드엠버서드아머, 캐스팅로브, 미스릴로브, 
    아이언아머, 메타엘리멘탈아머, 네이쳐아머, 골드커브웹아머 계열 
  - 무기류 : 히드라보우, 미스릴해머, 윙로드, 어쌔신나이프 
  - 기타 : 크리스탈V, 오리하루콘가루, 락토레리움가루 
 
 
 프로기어쌔신 190 585 1640 12000 
습득아이템   - 방어구  : 드워븐플레이트아머, 캐스팅로브, 아이언아머, 네이쳐아머 계열 
  - 무기류 : 브류나크, 아스타로드나이프 
  - 기타  : 크리스탈VI, 오리하루콘가루, 락토레리움가루 
 
 
 다크엘프위치 198 600 1680 12500 
습득아이템   - 방어구  : 드워븐플레이트아머, 캐스팅로브, 아이언아머, 네이쳐아머 계열 
  - 기타 : 크리스탈II, 오리하루콘가루, 락토레리움가루 
 
 
 가고일 206 625 1790 14000 
습득아이템   - 방어구  : 드워븐플레이트아머 계열 
  - 기타 : 크리스탈V, 오리하루콘가루, 락토레리움가루 
 
 
 파이어고렘 218 710 2000 18000 
습득아이템   - 방어구  : 골드엠버서드아머, 미스릴아머, 메타엘리멘탈아머, 
    골드커브웹아머 계열 
  - 무기류 : 그람, 엘븐보우 
  - 기타 : 크리스탈IV, 오리하루콘가루, 락토레리움가루 
 
 
 와이즈가고일
(Boss) 222 800 2600 30000 
습득아이템   - 방어구  : 드워븐플레이트아머, 골드엠버서드아머, 미스릴로브, 아이언아머, 
    메타엘리멘탈아머, 네이쳐아머, 골드커브웹아머 계열 
  - 무기류 : 프로미넌스엣지, 사이킥해머 
  - 기타  : 오리하루콘가루, 스밀로돈의성장액 
 
 
 해츨링 222 800 2500 17000 
습득아이템   - 방어구  : 플레이트아머, 쉐도우로브, 이글스피릿펠트, 브리젠딘아머 레전드계열 
    골드엠버서드아머, 미스릴로브, 메타엘리멘탈아머, 골드커브웹아머계열 
  - 무기류 : 궁그닐, 라이트닝스피어, 엠버젬스태프 
  - 기타 : 크리스탈V, 오리하루콘가루, 락토레리움가루 
 
 
 코퍼드래곤 237 850 2600 22000 
습득아이템   - 방어구  : 플레이트아머, 쉐도우로브, 이글스피릿펠트, 브리젠딘아머 레전드계열 
    골드엠버서드아머,미스릴로브, 메타엘리멘탈아머, 골드커브웹아머계열 
  - 무기류 : 그람, 엘븐보우 
  - 기타  : 크리스탈VI, 오리하루콘가루, 락토레리움가루 
 
 
 다크나이트 243 950 2700 24000 
습득아이템   - 방어구  : 골드엠버서드아머, 미스릴로브, 메타엘리멘탈아머, 
    골드커브웹아머 계열 
  - 무기류 : 그람, 엘븐보우, 프로미넌스엣지, 사이킥해머 
  - 기타 : 크리스탈III, 오리하루콘가루, 락토레리움가루 
 
 
 본드래곤 250 1100 2800 26000 
습득아이템   - 방어구  : 플레이트아머, 쉐도우로브, 이글스피릿펠트, 브리젠딘아머 레전드계열 
    골드엠버서드아머, 미스릴로브, 메타엘리멘탈아머, 골드커브웹아머계열 
  - 무기류 : 그람, 엘븐보우, 프로미넌스엣지, 사이킥해머, 드래곤해머, 
    아이오브카벙클, 라이트닝스피어, 엠버젬스태프 
  - 기타  : 크리스탈IV, 오리하루콘가루, 락토레리움가루 
 
 
 데쓰나이트 300 1400 3000 28000 
습득아이템   - 방어구  : 골드엠버서드아머, 미스릴로브, 메타엘리멘탈아머, 
    골드커브웹아머 계열 
  - 무기류 : 프로미넌스엣지, 사이킥해머, 드래곤해머, 아이오브카벙클, 
    베히모스터스크, 궁그닐, 라이트닝스피어, 엠버젬스태프 
  - 악세사리 : 귀걸이류, 앙크류, 프로텍터류 
  - 기타 : 크리스탈II, 오리하루콘가루, 락토레리움가루 
 
 
 데몬로드
(Boss) 350 1600 3200 30000 
습득아이템   - 무기류  : 프로미넌스엣지, 사이킥해머, 드래곤해머, 아이오브카벙클, 
    베히모스터스크, 궁그닐, 라이트닝스피어, 엠버젬스태프 
  - 악세사리  : 귀걸이류, 앙크류  
  - 기타  : 베어백호스의 성장액(흑), 베어백호스의 성장액(백), 
     베어백호스의 알(흑) 
 
 
  
 
  
      
 아르고스 128 400 1080 7000 
습득아이템   - 방어구  : 체인메일아머, 플레이트아머, 드워븐플레이트아머, 쉐도우로브, 
    갑각로브, 캐스팅로브, 이글스피릿펠트, 본스피릿펠트, 아이언아머, 
    브리젠딘아머, 필드컴뱃아머, 네이쳐아머 계열 
  - 무기류 : 소울블레이드, 히드라보우, 타워쉴드 
  - 기타  : 워터스크롤LV1, 크리스탈VI, 오리하루콘가루, 락토레리움가루 
 
 
 아르고스원더러
 137 446 1170 8000 
습득아이템   - 방어구  : 플레이트아머, 골든플레이트아머, 드워븐플레이트아머, 갑각로브, 
    캐스팅로브, 이글스피릿펠트, 아이언아머, 네이쳐아머 계열 
  - 무기류 : 브류나크, 아스타로드나이프, 성자의지팡이, 히든스피어, 파나카, 
    크로스스워드, 광속의활 
  - 기타 : 워터스크롤LV1, 크리스탈III, 오리하루콘가루, 락토레리움가루 
 
 
 언데드트롤 149 487 1260 8500 
습득아이템   - 방어구  : 골든플레이트아머, 골드엠버서드아머, 캐스팅로브, 미스릴로브, 
    본스피릿아머, 메타엘리멘탈아머, 필드컴뱃아머, 골드커브웹아머 계열 
  - 무기류 : 사이킥해머, 드래곤해머, 아이기스 
  - 기타  : 워터스크롤LV1, 크리스탈I, 오리하루콘가루, 락토레리움가루 
 
 
 워터고렘 236 800 2450 20000 
습득아이템   - 방어구  : 플레이트아머, 쉐도우로브, 이글스피릿펠트, 브리젠딘아머 레전드계열 
    드워븐플레이트아머, 캐스팅로브, 아이언아머, 네이쳐아머 계열 
  - 무기류 : 그람, 엘븐보우, 프로미넌스엣지 
  - 기타 : 워터스크롤LV1, 크리스탈II, 오리하루콘가루, 락토레리움가루 
 
 
 다크엘프나이트 248 870 2600 21000 
습득아이템   - 방어구  : 플레이트아머, 쉐도우로브, 이글스피릿펠트, 브리젠딘아머 레전드계열 
    드워븐플레이트아머, 골드엠버서드아머, 캐스팅로브, 미스릴로브, 
    아이언아머, 메타엘리멘탈아머, 네이쳐아머, 골드커브웹아머 계열 
  - 무기류 : 사이킥해머, 드래곤해머, 홀리크로스, 탈론오브드래곤 
  - 기타  : 워터스크롤LV1, 오리하루콘가루, 락토레리움가루 
 
 
 다크엘프업저러 260 975 2650 22000 
습득아이템   - 방어구  : 플레이트아머, 쉐도우로브, 이글스피릿펠트, 브리젠딘아머 레전드계열 
    골드엠버서드아머, 미스릴로브, 메타엘리멘탈아머, 골드커브웹아머계열 
  - 무기류 : 베히모스터스크, 궁그닐, 천공의활, 보팔스워드 
  - 기타 : 워터스크롤LV1, 오리하루콘가루, 락토레리움가루 
 
 
 언데드트롤치프 275 1100 2800 23500 
습득아이템   - 방어구  : 플레이트아머, 쉐도우로브, 이글스피릿펠트,  
    브리젠딘아머 레전드계열, 골드엠버서드아머, 미스릴로브, 
    메타엘리멘탈아머, 골드커브웹아머계열, 아이언아머,  
    메타엘리멘탈아머, 네이쳐아머, 골드커브웹아머 계열 
  - 무기류 : 라이트닝스피어, 엠버젬스태프, 슬레이어해머, 케뤼케이온 
  - 악세사리 : 프로텍터류  
  - 기타  : 워터스크롤LV1, 오리하루콘가루, 락토레리움가루 
 
 
 몰록 300 1200 2950 25000 
습득아이템   - 방어구  : 골든플레이트아머, 갑각로브, 본스피릿펠트,  
    필드컴뱃아머 레전드계열, 골드엠버서드아머, 미스릴로브,  
    메타엘리멘탈아머, 골드커브웹아머계열 
  - 무기류 : 전승의창, 칼라드볼그 
  - 악세사리 : 젬오브사이렌류, 귀걸이류, 앙크류  
  - 기타 : 워터스크롤LV1, 오리하루콘 가루, 락토레리움 가루 
 
 
 데모고곤 330 1920 4100 30000 
습득아이템   - 방어구  : 골든플레이트아머, 갑각로브, 본스피릿펠트,  
    필드컴뱃아머 레전드계열, 골드엠버서드아머, 미스릴로브, 
    메타엘리멘탈아머, 골드커브웹아머계열 
  - 무기류 : 탈론오브드래곤, 전승의창, 홀리크로스, 칼라드볼그, 묠니르, 룬실드 
  - 악세사리  : 귀걸이류, 앙크류 
  - 기타  : 워터스크롤LV1, 오리하루콘가루, 스티드의성장액(흑), 
     스티드의 성장액(백), 에머랄드 
 
 
 파이어가고일 350 1800 3500 30000 
습득아이템   - 방어구  : 골든플레이트아머, 갑각로브, 본스피릿펠트,  
    필드컴뱃아머 레전드계열, 골드엠버서드아머, 미스릴로브,  
    메타엘리멘탈아머, 골드커브웹아머계열 
  - 무기류 : 천공의활, 보팔스워드, 슬레이어해머, 케뤼케이온, 룬실드 
  - 악세사리 : 귀걸이류  
  - 기타 : 워터스크롤LV1, 오리하루콘가루, 락토레리움가루, 스밀로돈의성장액 
 
 
 프렌지데몬로드
(Boss)  350 2500 4600 32000 
습득아이템   - 방어구  : 드워븐플레이트아머, 캐스팅로브, 아이언아머, 네이쳐아머 레전드계열 
    골드엠버서드아머, 미스릴로브, 메타엘리멘탈아머, 골드커브웹아머계열 
  - 무기류 : 천공의활, 보팔스워드, 슬레이어해머, 케뤼케이온, 탈론오브드래곤, 
    전승의창, 홀리크로스, 칼라드볼그, 룬실드 
  - 기타  : 워터스크롤LV1, 오리하루콘가루, 락토레리움가루, 
    스위프트호스의성장액(흑), 세피라북  
  
타론 285 1350 2900 60000 
  - 방어구  : 드워븐플레이트(장, 캐스팅로브(장, 아이언(장, 네이쳐(장 레전 
              골드엠버서드2, 미스릴로브2, 메타엘리멘탈2, 골드커브웹2
  - 무기류  : 홀리크로스, 보팔스워드, 묠니르 
  - 기타    : 사파, 오리가루, 락토가루, 현자의돌 
 헬스파이더290 1420 2950 62000 
  - 방어구  : 드워븐플레이트(신, 캐스팅로브(신, 아이언(신,네이쳐(신 레전드,
              골드엠버서드2, 미스릴로브2,메타엘리멘탈2, 골드커브웹2
  - 무기류  : 홀리크로스, 보팔스워드, 묠니르 
  - 악세사리: 프로텍터류 
  - 기타    : 사파, 오리가루, 락토가루,베어백호스의성장액(흑) 
 벤디츠타론 290 1430 2975 60000 
   - 방어구  : 드워븐플레이트, 캐스팅로브, 아이언,네이쳐 레전드, 
              골드엠버서드2, 미스릴로브2,메타엘리멘탈2, 골드커브웹2
  - 무기류  : 탈론오브드래곤, 홀리크로스, 보팔스워드, 묠니르 
  - 악세사리: 젬오브사이렌류 
  - 기타    : 사파, 오리가루, 락토가루, 베어백호스의성장액(흑) 
 타론아쳐 300 1500 3000 64000 
  - 방어구  : 드워븐플레이트, 캐스팅로브, 아이언,네이쳐 레전드, 
              골드엠버서드, 미스릴로브,메타엘리멘탈, 골드커브웹
  - 악세사리: 프로텍터류 
  - 기타    : 사파, 오리가루, 락토가루, 스티드의성장액(백) 
 타론어쎄신 310 1550 3400 90000 
  - 방어구  : 골드엠버서드, 미스릴로브, 메타엘리멘탈,골드커브웹  
  - 무기류  : 칼라드볼그, 케뤼케이온 
  - 악세사리: 젬오브사이렌류, 프로텍터류 
  - 기타    : 오리가루, 락토가루, 스티드의성장액(흑), 산호 
 퍼블웜 315 1630 3485 96000 
  - 방어구  : 드워븐(투, 캐스팅로브(투, 아이언아머(투, 네이쳐아머(투 
              골드엠버서드1, 미스릴로브1, 메타엘리멘탈1, 골드커브웹1 
  - 무기류  : 탈론오브드래곤, 홀리크로스 
  - 기타    : 사파, 오리가루, 락토가루, 베어백호스의성장액(흑),가닛 
 아이언타론 325 1600 3500 96000 
  - 방어구  : 드워븐플레이트, 캐스팅로브, 아이언,네이쳐 레전드, 
              골드엠버서드, 미스릴로브, 메타엘리멘탈, 골드커브웹
  - 무기류  : 슬레이어해머, 천공의활, 전승의창 
  - 악세사리: 프로텍터류, 앙크류(체/마나, 귀걸이류(마나/민
  - 기타    : 오리가루, 락토가루, 스티드의성장액(흑),베어백호스의알(백) 
 트랜트 330 1680 3600 120000 
  - 방어구  : 드워븐플레이트(갑, 캐스팅로브(갑, 아이언(갑,  네이쳐(갑 레전드,
              골드엠버서드2, 미스릴로브2,  메타엘리멘탈2, 골드커브웹2
  - 무기류  : 보팔스워드, 묠니르 
  - 악세사리: 프로텍터류 
  - 기타    : 오리가루, 락토레가루, 스티드의성장액(흑), 베어백호스의알(흑) 
 멘트랩 340 1750 3620 124000 
  - 방어구  : 골드엠버서드2, 미스릴로브2, 메타엘리멘탈2, 골드커브웹2!투3
  - 무기류  : 묠니르, 보팔스워드 
  - 악세사리: 프로텍터류, 젬오브사이렌류, 귀걸이류(체/마 
  - 기타    : 오리가루,락토가루,스위프트의성장액(흑),에머랄드,맨트랩 원석 
 아다만트타론 350 1860 3650 128000 
  - 방어구  : 골드엠버서드2, 미스릴로브2, 메타엘리멘탈2, 골드커브웹2
  - 무기류  : 칼라드볼그, 룬실드 
  - 악세사리: 프로텍터류, 젬오브사이렌류 
  - 기타    :오리가루,락토가루,스위프트의 성장액(백),다이아몬드, 가닛 
 루제퍼 355 1920 3750 150000 
  - 방어구  : 골드엠버서드3, 미스릴로브3, 메타엘리멘탈3, 골드커브웹3 
  - 무기류  : 슬레이어해머, 칼라드볼그, 케뤼케이온, 룬실드 
  - 악세사리: 젬오브사이렌류, 프로텍터류, 귀걸이류(힘/마, 앙크류(크/체
  - 기타    : 오리가루, 락토가루, 하네스드호스의성장액(백), 세피라북(쐰/레제 
 루제퍼브로켄(Boss)  360 2050 4000 ? 
  - 방어구  : 골드엠버서드3, 미스릴로브3, 메타엘리멘탈3 골드커브웹3  
  - 무기류  : 슬레이어해머, 천공의활, 전승의창 
  - 기타    : 락토가루, 하네스드호스의성장액(흑), 스위프트호스의알(백), 
              유니콘의영혼, 루제퍼브로켄 원석, 가닛 
 
리글스웜
  습득아이템 : 소모성 제련 아이템, 세피라 스킬북 
제노크로퍼
  습득아이템 : 소모성 제련 아이템, 카오 사면서 
호라이즌크로퍼
  습득아이템 : 소모성 제련 아이템, 카오 사면서 
퓨너시머 
  습득아이템 : 소모성 제련 아이템 
퓨너싸이더 
  습득아이템 : 소모성 제련 아이템 
퓨너모멘터 
  습득아이템 : 소모성 제련 아이템, 마운트의 알, 마운트의 성장액 
퓨너시클러 
  습득아이템 : 소모성 제련 아이템, 마운트의 알, 마운트의 성장액 
베토레로 
  습득아이템 : 소모성 제련 아이템, 세피라 스킬북, 마운트의 알, 마운트의 성장액 
에이프 
  습득아이템 : 소모성 제련아이템, 스피릿 스톤, 마운트의 알, 마운트의 성장액 
에이프블레그 
  습득아이템 : 소모성 제련 아이템 
리치바타마 
  습득아이템 : 소모성 제련 아이템, 세피라 스킬북, 마운트의 알, 마운트의 성장액 
리치크런트 
  습득아이템 : 소모성 제련 아이템, 세피라 스킬북, 마운트의 알, 마운트의 성장액

 설원 늑대
  - 방어구: 골드엠버서드, 메타엘리멘탈 
  - 기타  : 마운트의 알, 마운트의 성장액, 그류페인재료, 보석(산 
 설원 곰
  - 방어구: 미스릴로브, 골드커브웹 
  - 기타  : 마운트의 알, 마운트의 성장액,  그류페인재료, 보석(다 
 프로즌 트롤  
  - 방어구: 드워븐플레이트(레전드), 아이언(레전드)  
  - 기타  : 마운트의 알, 마운트의 성장액,  그류페인재료, 보석(가 
 카이저 울프 
  - 방어구: 캐스팅로브(레전드), 네이쳐(레전드)  
  - 기타  : 마운트의 알, 마운트의 성장액,  그류페인재료, 보석(에 
 고대의 엔트 
  - 방어구: 미스릴로브2, 골드커브웹2. 가디언스케일, 레이크 
  - 기타 :마운트알(베어흑/백,성장(배어백흑/백,세피라스킬북(쐰월, 방패류(가디언 
 고대의 에이프 
  - 방어구: 골드엠버서드2,메타엘리멘탈2,이니세이트,디스트럭션
  - 기타:마운트의알(스위백/흑,성장액(스위백/흑,세피라스킬북(레제, 방패류(쏘론 
 아몬 병사 
  - 방어구: 슬레이어, 템플리스, 레이븐, 레기온 
  - 무기  : 레디언블레이드급 
  - 기타  : 마운트의 알, 마운트의 성장액 
 아몬 전사 
  - 방어구: 슬레이어, 템플리스, 레이븐, 레기온 
  - 무기  : 레디언블레이드급 
  - 기타  : 마운트의 알, 마운트의 성장액 
 아몬 대장 
  - 방어구: 슬레이어, 템플리스, 레이븐, 레기온
  - 무기  : 레디언블레이드급 
  - 기타  : 마운트의 알, 마운트의 성장액, 방패류 
 칼린츠 캣맨 
  - 방어구: 골드엠버서드, 메타엘리멘탈 
  - 무기  : 쓰론오브샤드급 
  - 기타  : 마운트의 알, 마운트의 성장액  
 칼린츠 캣우먼
  - 방어구: 미스릴로브, 골드커브웹 
  - 무기  : 쓰론오브샤드급 
  - 기타  : 마운트의 알, 마운트의 성장액  
 저주받은 템플러 
  - 방어구: 골드엠버서드(레전드), 드워븐플레이트(레전드) 
  - 무기  : 보팔스워드급 
  - 기타  : 마운트의 알, 마운트의 성장액  
 저주받은 소서러 
  - 방어구: 미스릴로브(레전드), 캐스팅로브(레전드)  
  - 무기  : 보팔스워드급 
  - 기타  : 마운트의 알, 마운트의 성장액  
 저주받은 샤먼 
  - 방어구: 메타엘리멘탈(레전드), 아이언(레전드) 
  - 무기  : 보팔스워드급 
  - 기타  : 마운트의 알, 마운트의 성장액  
  저주받은 레인저 
  - 방어구: 골드커브웹(레전드), 네이쳐(레전드) 
  - 무기  : 보팔스워드급 
  - 기타  : 마운트의 알, 마운트의 성장액  
 발키리 로젠 
  - 방어구: 레기온
  - 무기  : 레디언블레이드급 
  - 기타  : 마운트의 알, 마운트의 성장액 
 발키리 티나 
  - 방어구: 팀플리스
  - 무기  : 레디언블레이드급 
  - 기타  : 마운트의 알, 마운트의 성장액 
 버서커 레프 
  - 방어구: 레이븐  
  - 무기  : 레디언블레이드급 
  - 기타  : 마운트의 알, 마운트의 성장액 
 버서커 티탄 
  - 방어구: 슬레이어 
  - 무기  : 레디언블레이드급 
  - 기타  : 마운트의 알, 마운트의 성장액 


c : 압축
z : tar 압축후 gzip압축
v : verbose 압축과정을 출력
p : 소유권등 퍼미션을 그대로 유지
f : 내가 지정한 파일명으로 압축

압축하기
tar czvpf filename.tar.gz public_html/
압축풀기
tar xzvpf filename.tar.gz public_html/
public_html/에 권한을 포함한 하여 압축풀기
// 입력내용중 URL부분을 자동링크로 반환하기;
function autolink($contents) {
       $pattern = "/(http|https|ftp|mms):\/\/[0-9a-z-]+(\.[_0-9a-z-]+)+(:[0-9]{2,4})?\/?";       // domain+port
       $pattern .= "([\.~_0-9a-z-]+\/?)*"; // sub roots
       $pattern .= "(\S+\.[_0-9a-z]+)?"; // file & extension string
       $pattern .= "(\?[_0-9a-z#%&=\-\+]+)*/i"; // parameters
       $replacement = "\\0";
       return preg_replace($pattern, $replacement, $contents, -1);
}

$autolinked = autolink($contents);
$autolinked = str_replace("\n", "
\r\n", $autolinked); echo $autolinked; ?>

du -h --apparent-size
데이터 타입 
MySQL 은 다양한 데이터 타입을 제공합니다. 아래 표를 보시면 데이터 형 , 범위 그리고 데이터 크기를 보실 수 있습니다. 데이터 타입은 실제 입력하는 데이터 형에 맞추어서 최소한의 크기로 잡아 주어야 합니다. 아래 표를 보시면 데이터 형과 그 값의 범위 그리고 크기에 대해서 보실 수 있습니다. 

MySQL에서 지원하는 데이터 형(MySQL DataTypes)
형태 데이터형 범위 크기
숫자형 TINYINT -128 ~ 128 , 0 ~ 255 1 Byte
SMALLINT -32768 ~ 32767 , 0 ~ 65535 2 Byte
MEDIUMINT -8388608 ~ 8388607, 0 ~ 16777215 3 Byte
INT, INTEGER -2147483648 ~ 2147483647, 0 ~ 4294967295 4 Byte
BIGINT -9223372036854775808 ~ 9223372036854775807
0 ~ 18446744073709551615
8 Byte
FLOAT -3.402823466E+38 ~ -1.175494351E-38
1.175494351E-38 ~ 3.402823466E+38
4 Byte
DOUBLE [PRECISION], REAL 1.7976931348623157E+308 ~ -2.2250738585072014E-308
0 ~ 2.2250738585072014E-308
8 Byte
DECIMAL(M,D), NUMERIC(M,D) 데이터 베이스 설정 및 시스템에 따라 다름 가변적 크기
날자형 DATE '1000-01-01' ~ '9999-12-31' 3 Byte
TIME '-838:59:59' ~ '838:59:59' 3 Byte
DATETIME '1000-01-01 00:00:00' ~ '9999-12-31 23:59:59' 8 Byte
TIMESTAMP '1970-01-01 00:00:01' ~ '2038-01-19 03:14:07' 4 Byte
YEAR 1901 ~ 2155 1 Byte
문자(열)형 CHAR(M) 1~ 255 개의 문자 M <= 255 Byte
BINARY(M) 1 ~ 255 개의 문자 M Byte
VARCHAR(M), VARBINARY(M) 1 ~ 255 개의 문자 M Byte
TINYBLOB, TINYTEXT 최대 2^8 입력된 길이 만큼
BLOB, TEXT 최대 2^16 입력된 길이 만큼
MEDIUMBLOB, MEDIUMTEXT 최대 2^24 입력된 길이 만큼
LONGBLOB, LONGTEXT 최대 2^32 입력된 길이 만큼
ENUM 최대 65525 개 1 ~ 2 Byte
SET 최대 64 개의 셋 1 ~ 8 Byte
테이블을 설계 시에 데이터에 맞는 데이터 를 선정해주는것이 매우 중요합니다. 물론 큰 데이터 형으로 잡아도 문제는 없지만 데이터의 효율성에서 많은 성능 저하가 있을 수 있습니다. 

예를 들어 현재 학교 학생수를 다루는 테이블이 있다고 가정합시다. (졸업, 입학 예정, 기타 학생은 제외 시킨 재학중인 학생) 학생들이 많아야 최대 65535 명은 안되고 255명은 넘을 것입니다. 그럼 PRIMARY KEY로 잡을 키 값은 SMALLINT 형의 데이터 형으로 해야 합니다. 

또 한가지 예를 들면 커뮤니티 포털 사이트의 회원이라고 생각을 해봅시다 (국내 회원만 받을, 중복, 탈퇴 기타 예외 비 포함) 그러면 전국민이 가입해도 5천만명입니다. 그럼 어떤 데이터 형이 맞을 까요? INT형으로 잡습니다. 

위 예처럼 데이터에 가장 효율적인 방법으로 데이터 형을 설정해야 합니다. 

NULL 을 최대한 배제 합니다. 테이블 설계시 NOT NULL 이 아닌 NULL을 허용하게 되면 해당 필드가 NULL 인지를 구분할수 있게 하는 플래그를 위한 공간이 따로 필요하고 , 데이터를 제어 할때 NULL인지를 한번더 확인하게 됩니다. (NULL과 ""는 다릅니다.)

ROW_FORMAT 이 가변적인 것 보다는 FIXED 인것이 좋습니다. 최대한 기준이 되는 테이블일 경우에는 FIXED 로 사용하고 그외 가변적인 요소 (TEXT, BLOB, VARCHAR)등은 따로 테이블을 떼어 놓으세요. 성능이 많이 향상됩니다. information_schema 데이터 베이스의 TABLES 테이블에서 확인 할 수 있습니다. 

MySQL 은 PRIMARY KEY가 AUTO_INCREMENT 에 최적화 되어 있습니다. 최대한 AUTO_INCREMENT를 사용하여 효율적으로 PRIMARY KEY를 사용하세요

모든 데이터 설계는 정규화 후 설계를 하세요 MySQL Workbench 를 이용하면 정규화 작업에 많이 도움이 됩니다.(머리 속에 있는것 보다는 눈으로 보고 그려보는게 좋겠죠~) 데이터 설계는 도식화 한 후에 항상 재 검토 하세요~ 안보이는것도 보일 수 있습니다. 

무리하게 인덱스를 사용하지 마세요 . WHERE 에 쓰인다고 해서 모든것을 인덱스 할 필요는 없습니다. 최대한 필요하고 가장 간단하게 범위를 잡아서 사용을 하세요, 무리한 인덱스는 전체적인 INSERT / UPDATE 성능을 떨어 뜨릴 수 있습니다. ANALYZE TABLE 과 OPTIMIZE TABLE 로 주기적으로 데이터 단편화를 제거해주세요. 2개 이상의 조건이 필수적으로 검색에 이용이 된다면 복합 인덱스를 사용하세요 . 두 개의 필드가 인덱스가 따로 따로 잡혀 있는것 보다 더욱 빠르게 결과를 보여줍니다. 

효율적인 테이블 설계 방법 요약 
1. 저장할 데이터에 맞게 최대한 작은 데이터 타입을 사용해야 합니다. 
2. 컬럼에서 DEFAULT NULL을 최대한 허용하지 마세요
3. 가변적인 데이터타입 보다 고정형의 데이터 타입을 선택하세요
4. PRIMARY KEY는 작은 데이터형으로 잡습니다. (AUTO_INCREMENT 최대한 사용)
5. 모든 데이터는 정규화를 꼭 해야 합니다. (정규화방법 참조)
6. 인덱스는 필요한 경우만 사용합니다.
 

출처 : http://www.lovelgw.com/Blog/211

짧은 시간 동안 PHP는 웹 애플리케이션을 위한 대중적인 프로그래밍 언어가 되었다. 초보자도 PHP를 쉽게 설치할 수 있고 배우기도 쉽다. 보다 숙련된 개발자에게는, (V5부터) 강력한 객체 지향 기능을 제공한다. PHP 개발자 커뮤니티는 방대하고, 상당히 많은 오픈 소스와 상용 라이브러리와 툴들이 언어 기능을 확장하고 있다. PHP는 시각적인 결과를 빠르게 나타내기 때문에 많은 사람들로부터 사랑을 받는다.

Perl, Python, Ruby 등 웹 애플리케이션에 사용되는 다른 스크립팅 언어와 마찬가지로 PHP 코드는 파싱되어, opcodes (PHP 엔진을 직접 실행하는 기본 명령)로 변환되고 HTTP가 이를 요청할 때마다 실행된다. 하찮거나 작은 요구에도, 서버는 복잡한 렌더링 프로세스를 즉각적으로 완벽하게 실행한다. 제공되는 페이지의 수가 증가하면서, 해석(interpretation)-즉 재작업(rework)-은 시스템에 부담을 주게 된다. 어떤 경우, PHP 코드의 "컴파일(compilation)"은 코드를 실행하는데 드는 시간보다 더 많이 든다. 따라서, 요구가 많아질수록, 보다 동적으로 해석되고, 생성된 페이지들은 더 많은 리소스들을 요구하게 된다.

여러분의 사이트에서 프로세서와 메모리에 대해 무제한 예산이 할당되었다면, 사이트의 응답시간을 보장하기 위하여 애플리케이션 스택(하드웨어, OS, 데이터베이스, 웹 서버, PHP 코드)를 최적화할 필요가 없을 것이다. 하지만, 돈은 늘 모자라기 마련이므로, 성능 튜닝은 불가피하다. 튜닝은 부족한 시스템에 메모리를 추가하고, OS 매개변수들을 수정하고, 웹 또는 데이터베이스 서버 속도를 앞당기고, 효율성 있는 코드를 재작성 하거나 결합하는 것을 의미한다. 이러한 모든 것들이 효과를 발휘한다.

리사이클(Recycle)

CPU 사이클을 유지하는 방법은 PHP 애플리케이션을 실행하는데 필요한 재작업 양을 줄이는 것이다. 확실히, 매번 같은 PHP 코드를 변환할 필요 없이, PHP 코드가 opcode로 변환된 후에, 원래 코드가 수정될 때까지 계속해서 공급 및 재사용 된다. 사실, 캐싱(caching)-중간 PHP 코드(opcode)를 저장 및 재사용하는 것-은 오픈 소스 Alternative PHP Cache (APC), Turck MMCache for PHP, XCache, eAccelerator, 그리고 상용 Zend Platform 등 여러 PHP 가속기들의 핵심 개념이다. 뒤에 세 가지는 바이트 코드를 캐싱 및 최적화 하면서, 더욱 빠른 속도를 제공한다.

이번 달에는 XCache를 설치, 전개, 설정하는 방법을 연구해 보자. XCache는 비교적 새로운 것으로서, 많은 사이트들은 이를 사용하여 좋은 결과를 얻고 있다. 게다가, PHP 확장으로 구현되기 때문에 구현, 설치, 설정이 쉽다. Apache와 PHP의 재컴파일이 필요하지 않다.

이 글은 XCache V1.2.0에 기반하고 있다. PHP V4.3.11에서 V4.4.4, PHP V5.1.x 에서 V5.2.x, 그리고 PHP V6의 초기 버전들을 지원하고 있다. (XCache는 PHP V5.0.x는 지원하지 않는다.) XCache는 Common Gateway Interface (CGI) 또는 명령행 PHP 인터프리터가 아닌, mod_php와 FastCGI를 사용하여 실행된다. XCache 소스 코드는 FreeBSD, Sun Solaris, Linux®, Mac OS X 등 다양한 시스템에서 구현된다. XCache는 Microsoft® Windows®에서도 구현될 수 있으며, Cygwin UNIX® 에뮬레이션 환경이나 Visual C를 사용한다. Cygwin 또는 원래의 Win32용 XCache를 구현할 수 있다. 마지막의 목표는 PHP의 공식 Win32 릴리스와의 호환성이다.

이 글에서 설명하는 데모는 Apache V2.2.3, PHP V5.2.0, XCache V1.2.0 (2006년 12월 10일 릴리스), Xcode V2.4.1 on Mac OS X V10.4.8 Tiger를 기반으로 한다. 하드웨어 플랫폼은 2-GHz Intel® Core Duo와 2 GB RAM을 갖춘 Apple MacBook이다.

XCache 구현 단계

진행하기 전에, PHP는 그 자체로 실행되고, 여러분 쉘(Shell)의 PATH phpize가 있는 것을 확인한다. GNU Compiler Collection (GCC) 같은 C 컴파일러가 있어야 하고, make m4를 포함하고 있는 개발 툴 수트가 있어야 한다. Mac OS X에서, 무료 Xcode 소프트웨어 개발 환경은 필요한 빌드 툴을 제공한다.

아래 명령어를 완성하여 Mac OS X에서 XCache를 구현, 전개, 벤치마크 한다. 다른 플랫폼에서의 구현도 비슷하다. 리눅스를 사용하고 있다면, 그 배포판에는 XCache가 이미 포함되어 있고, 이를 사전 패키징 된 형태로 사용할 수 있다.

Mac OS X의 공유 메모리 늘리기

Mac OS X의 공유 메모리의 양을 늘리는 것부터 시작한다. /etc/sysctl.conf 파일을 생성(또는 편집)하고 다음 엔트리들을 만든다.


Listing 1. Mac OS X의 공유 메모리 양 늘리기
                
kern.sysv.shmmax=33554432
kern.sysv.shmmin=1
kern.sysv.shmmni=32
kern.sysv.shmseg=8
kern.sysv.shmall=8192

이러한 설정으로 공유 메모리의 양이 32MB로 늘어났다. 공유 메모리를 더욱 확장해야 한다면, 하드웨어 페이지 크기로 나뉜kern.sysv.shmmax 값에 kern.sysv.shmall을 설정한다. 이렇게 하면 sysctl hw.pagesize를 사용할 수 있을 것이다. 예를 들어, 128 MB의 공유 메모리가 필요하다면, kern.sysv.shmmax=134217728 kern.sysv.shmall=32768을 설정하라.

수정 사항을 적용하려면 Mac OS X를 재시작 한다. 재부팅 되면 다음을 타이핑 하여 새로운 설정이 적용되었는지를 확인한다.

sysctl -a | grep kern.sysv

소스에서 XCache 구현하기

다음에는, 소스 코드에서 XCache를 구현한다. http://xcache.lighttpd.net에서 소스를 다운로드 한다. 코드가 있다면 이것의 압축을 풀어서 .tar 파일이 만든 새로운 디렉토리로 옮긴다.


Listing 2. 소스에서 XCache 구현하기
                
$ cd /tmp
$ wget http://210.51.190.228/pub/XCache/Releases/xcache-1.2.0.tar.gz
$ tar xzf xcache-1.2.0.tar.gz
$ cd xcache

phpize를 실행하여 XCache가 컴파일을 할 수 있도록 한다.


Listing 3. phpize 실행하기
                
$ phpize
Configuring for:
PHP Api Version:         20020918
Zend Module Api No:      20020429
Zend Extension Api No:   20050606

configure를 실행하여 원래의 OS에 맞는 makefile을 만든다.


Listing 4. configure를 실행하여 makefile 만들기
                
$ ./configure --enable-xcache --enable-xcache-coverager 
checking build system type... i686-apple-darwin8.8.1
checking host system type... i686-apple-darwin8.8.1
...
creating libtool
configure: creating ./config.status
config.status: creating config.h

여기에서, --enable-xcache 옵션에는 XCache 지원이 포함되고, --enable-xcache-coverager에는 가속기의 효율성을 측정할 수 있는 부가 기능이 포함되어 있다. opcode 옵티마이저를 실행하려면 --enable-xcache-optimizer를 추가한다.

물론, 다음 단계는 make 명령어를 사용하여 코드를 구현 및 설치하는 단계이다. make를 실행한 다음, 루트(root)로서 make install을 실행한다.


Listing 5. make를 사용하여 코드를 구현 및 설치하기
                
$ make
...
cp ./xcache.so /Users/strike/tmp/xcache/modules/xcache.so
Build complete.

$ sudo make install
Installing shared extensions: /usr/lib/php/extensions/no-debug-non-zts-20020429/

앞서 두 가지 작업들이 무리 없이 수행되었다면 /usr/lib/php/extensions/no-debug-non-zts-20020429/xcache.so에 XCache가 있어야 한다.( /usr/lib/php/extensions/no-debug-non-zts-20020429 경로는 사용 중인 API의 버전과 PHP 구현에 사용되는 컴파일 옵션을 반영한다. Zend Thread Safety 기능을 실행했다면 "no-debug"가 "debug"가 되고 "non-zts"가 "zts"가 될 수 있다.)

php.ini 파일 바꾸기

확장본이 설치되었기 때문에, php.ini 파일을 변경하여 XCache 확장을 추가하고 설정하도록 해야 한다. /private/etc/php.ini를 열고 다음 라인을 파일에 추가한다.


Listing 6. XCache 확장용으로 php.ini 변경하기
                
[xcache-common]
zend_extension      = /usr/lib/php/extensions/no-debug-non-zts-20020429/xcache.so

[xcache.admin]
; Change xcache.admin.user to your preferred login name 
xcache.admin.user   = "admin"

; Change xcache.admin.pass to the MD5 fingerprint of your password
; Use md5 -s "your_secret_password" to find the fingerprint
xcache.admin.pass   = "0ad72f3f352fcd8acdf266bafd0ac48d"

[xcache]
; Change xcache.size to tune the size of the opcode cache
xcache.size         = 24M
xcache.shm_scheme   = "mmap"
xcache.count        = 2
xcache.slots        = 8K
xcache.ttl          = 0
xcache.gc_interval  = 0

; Change xcache.var_size to adjust the size of variable cache
xcache.var_size     = 8M
xcache.var_count    = 1
xcache.var_slots    = 8K
xcache.var_ttl      = 0
xcache.var_maxttl   = 0
xcache.var_gc_interval =     300
xcache.test         = Off
xcache.readonly_protection = On
xcache.mmap_path    = "/tmp/xcache"
xcache.coredump_directory =   ""
xcache.cacher       = On
xcache.stat         = On
xcache.optimizer    = Off

[xcache.coverager]
xcache.coverager    = On
xcache.coveragedump_directory = ""

주: 간단히 하기 위해 일부 주석들은 생략했다. 각각의 매개변수가 무엇을 제어하는지를 알고 싶다면 XCache 소스 코드에 포함된 xcache.ini 파일의 샘플 설정을 참조하라.

opcode와 변수 캐시의 크기는 32MB이고, 이것은 /etc/rc에 설정된 최대 사이즈이다. Mac OS X의 경우, xcache.mmap_path는 파일 이름이며, PHP 코드는 MacBook에서 실행되기 때문에, xcache.count  2로 설정된다. 이 숫자는 MacBook에 있는 CPU의 수이다. XCache 통계 페이지로 접근 하려면, xcache.admin.pass 설정을 변경해야 한다. 다음을 실행한다:

$ md5 -s "password"

여기에서 password 는 여러분의 패스워드이다. 결과를 xcache.admin.pass에 복사한다. 예를 들어, 패스워드를 op3nsesam3으로 하고 싶다면, 다음과 같이 한다:

$ md5 -s "op3nsesam3"
MD5 ("op3nsesam3") = cd959ac3debe8f587546a3fa353b3268

그리고 cd959ac3debe8f587546a3fa353b3268 xcache.admin.pass에 복사한다.

웹 서버 재시작

XCache를 설정했다면, Apache 웹 서버를 재시작 한다. 대부분의 시스템에서 루트로서 apachectl restart를 사용할 수 있다.

$ sudo apachectl restart
/usr/sbin/apachectl restart: httpd restarted

phpinfo()를 호출하는 프로그램 만들기

XCache가 실행되는지를 확인하려면, phpinfo()를 호출하는 PHP 프로그램을 만들고 그 파일을 웹 브라우저에서 연다. 아래 그림과 같은 XCache 섹션을 볼 수 있다.


그림 1. phpinfo() 메소드가 XCache 설정을 요약하고 있다.
phpinfo() 메소드가 XCache 설정을 요약하고 있다. 

XCache 모니터링

XCache를 모니터링 하려면, XCache 소스 코드의 admin 디렉토리에 있는 관리 페이지를 설치한다. 전체 admin 디렉토리를 Apache 문서 루트에 복사한다. (Mac OS X에서, 문서 루트는 일반적으로 /Library/WebServer/Documents이다.)

$ cp -pr admin /Library/WebServer/Documents

복사가 완료되면, sudo apachectl restart로 웹 서버를 재시작 한다. 관리 패널이 실행되는 것을 확인하려면 브라우저에서 http://localhost/admin 입력한다. 그림 2와 비슷한 대시보드를 볼 수 있다.


그림 2. XCache Administration 대시보드
XCache Administration 대시보드 

애플리케이션 테스트하기

테스트 할 애플리케이션 한 두 가지를 선택한다. 여러분 코드를 사용하거나, 보다 복잡한 것을 원한다면 phpMyAdmin 또는Serendipity 같은 대형 PHP 애플리케이션을 사용하라.

벤치마크 실행하기

Apache HTTP 웹 서버에는 ab라고 하는 유틸리티가 포함되어 있고, Apache HTTP server benchmarking tool의 약자이다. ab를 사용하여 많은 PHP 페이지에 대한 요청들을 자동화 한다. phpMyAdmin 애플리케이션은 시스템에 이미 설치되어 있으므로 좋은 예시가 된다.

ab 유틸리티는 사용이 간단하며 반복 카운트와 URL을 제공한다. ab 유틸리티는 그 URL을 여러 번 요청하고 통계를 리턴한다. XCache가 이미 실행 중이기 때문에, 첫 번째 벤치마크는 가속화 된 성능을 보여줄 것이다.

ab를 실행하기 전에, 브라우저에서 http://localhost/phpmyadmin/으로 간다. 이 페이지를 한번 방분하면 이 페이지를 캐시로 렌더링 하는데 사용되는 모든 PHP 코드를 로딩한 것이 된다. 아래 벤치마크를 실행하고, 100,000회 반복한다.


Listing 7. phpMyAdmin용 벤치마크
                
$ ab -n 100000 http://localhost/phpmyadmin
...
Concurrency Level:      1
Time taken for tests:   14.597 seconds
Complete requests:      100000
Failed requests:        98262
   (Connect: 49131, Length: 49131, Exceptions: 0)
Broken pipe errors:     0
Non-2xx responses:      50869
Total transferred:      25739714 bytes
HTML transferred:       12005084 bytes
Requests per second:    6850.72 [#/sec] (mean)
Time per request:       0.15 [ms] (mean)
Time per request:       0.15 [ms] (mean, across all concurrent requests)
Transfer rate:          1763.36 [Kbytes/sec] received

위에서 재미있는 통계라 한다면, 초당 요청과 모든 테스트를 완료하는데 드는 총 시간이다. 전자의 경우, 값이 클수록 더 나은 것이다. 후자는 값이 낮을수록 더 나은 것이다.

이제 Listing 8과 같이 php.ini 파일에서 XCache 실행을 멈추고 벤치마크를 다시 실행한다. XCache 확장에 대한 레퍼런스에 주석을 달거나, 모든 XCache 기능들을 꺼둘 수 있다. 벤치마크를 다시 실행하기 전에 Apache를 재시작한다.


Listing 8. XCache를 실행시키지 않은 phpMyAdmin용 벤치마크 
                
$ sudo apachectl restart
$ ab -n 100000 http://localhost/phpmyadmin
Concurrency Level:      1
Time taken for tests:   17.771 seconds
Complete requests:      100000
Failed requests:        98256
   (Connect: 49128, Length: 49128, Exceptions: 0)
Broken pipe errors:     0
Non-2xx responses:      50872
Total transferred:      25741232 bytes
HTML transferred:       12005792 bytes
Requests per second:    5627.15 [#/sec] (mean)
Time per request:       0.18 [ms] (mean)
Time per request:       0.18 [ms] (mean, across all concurrent requests)
Transfer rate:          1448.50 [Kbytes/sec] received

여기에서는 XCache를 실행시키지 않았는데, 초당 요청의 수가 줄어들고, Apache 서버가 각 요청에 더 오랜 시간이 걸린다는 것을 반영하고 있다. 테스트의 전체 수트를 실행하는데 드는 시간도 올라갔다.

비록 이것은 단순한 벤치마크이고, 데이터베이스로 phpMyAdmin을 연결하지 않아 PHP를 해석하는데 프로세싱 시간에 제한이 있었고, 과학적이지도 않았지만, XCache을 이용하여 무엇을 얻을 수 있는지는 확실히 알 수 있다. PHP나 Apache를 재컴파일 할 필요가 없는 적은 투자로 XCache는 비교적 좋은 결과를 만들어 낸다. 이것은 코드가 복잡할수록 그의 효용도 더욱 크다.

XCache가 얼마나 일을 잘하는지 궁금하다면, http://localhost/xadmin으로 가서 List PHP를 클릭하라. 캐시에 PHP 파일 리스트, 캐시 히트, opcode에서 측정된 코드의 크기, 바이트로 측정된 소스 파일의 크기 등을 볼 수 있다. 그림 3은 XCache가 XAMPP 스택 패키지용으로 구현되었을 때 나타난 결과이다.


그림 3. XCache 관리 페이지는 캐시의 상태와 내용을 보여준다.
XCache 관리 페이지는 캐시의 상태와 내용을 보여준다. 

XCache는 많은 가속기 옵션들 중 하나이다. 기타 다른 무료 오픈 소스 대안책들도 있고 강력한 Zend 소프트웨어에 상용 옵션들도 있다. 각각의 PHP 가속기 마다 고유의 시스템 요구 사항들이 있기 때문에, 애플리케이션의 설정과 특성에 맞게 선택해야 한다. 이들 중 어떤 것이 더 낫다고 말하기 어렵지만, 컴파일러 캐시를 설치할 것을 권하고 싶다.

수 많은 튜닝 옵션들

캐싱 외에도, 애플리케이션 속도를 높일 수 있는 다른 대안들도 있다. 많은 난해한 기능들을 제거하여 PHP 엔진에서 지방질을 빼낼 수 있다. 예를 들어, TCP/IP V6 (IPv6) 네트워킹을 사용하지 않는다면, PHP를 구현할 때 이 기능을 실행하지 않으면 된다. PHP 소스 코드 트리의 맨 위에서 ./configure --help를 타이핑 하면 PHP 설정 옵션들의 전체 리스트를 볼 수 있다. 어떤 설정 옵션들을 선택하든지 간에,

--enable-inline-optimization --disable-debug

위 라인을 최종 설정 명령어에 추가한다. 전자 옵션은 가장 빠른 PHP 실행 파일을 만들어 낸다. (Zend Engine 같은 소프트웨어로 추가적인 opcode 최적화가 필요 없다.) 후자 옵션은 디버그 모드에서 PHP를 활용하는데, PHP 애플리케이션 서버의 문제를 해결할 때에만 필요하다.

물론, 다른 C 애플리케이션처럼, C 컴파일러를 활용하여 더 나은 실행 파일을 구현할 수 있다. Apache Dynamic Shared Object (DSO)(Linux) 또는 FreeBSD(x86 프로세서)로서 PHP를 실행한다면 -prefer-non-pic 옵션을 CFLAGS (C 컴파일러 옵션을 저장하고 있는 환경 변수)에 추가하는 것도 고려해 볼만하다. Non-PIC는 위치 독립 코드를 사용하여 PHP를 구현하고, 10%정도의 성능 향상을 보인다.CFLAGS -march를 사용하여 프로세서 유형을 규명할 수 있다. AMD Opteron 프로세서에는 -march=opteron을 사용한다.

또 다른 속도 향상 옵션으로는 opcode optimization이 있다. Zend Engine 같은 소프트웨어는 컴파일 동안 생성된 opcode를 최적화 하기 때문에 코드가 수행하는 작업량이 줄어든다.

캐싱과 최적화는 투명할 뿐만아니라 부가적인 프로그래밍 요소들이 필요 없다. 보다 힘든 작업에 적용하려면 프로파일링(profiling) 또는 코드가 어디에서 시간을 소비하는지를 검사하는 것도 좋다. 낭비가 많고 느린 알고리즘만큼, 병목 현상도 분명한 재작업의 원인이 된다. 사이클을 보강하기 위해 코드를 조정하는 것도 좋지만, 프로파일링을 선행하지 않고 어떤 최적화도 시도해서는 안된다.

예고

다음 회에는 최적화를 주제로 여러분을 찾아오겠다. 디버깅, 빠른 텍스트 검색, 대안 웹 서버 등에 대해서도 설명하겠다. 그 동안 여러분은 PHP 가속기와 opcode 최적화에 대해 복습하기 바란다. 조금만 시간을 들여 공부하면 많은 깨달음을 얻을 수 있을 것이다. 여러분의 머신이 여유 사이클로 무엇을 할 수 있는지를 상상해 보라.

기사의 원문보기


참고자료

교육

  • PHP.net - PHP 개발자를 위한 관련 자료

  • 추천 PHP 문서 리스트 

  • PHP 관련 기술자료 리스트 (developerWorks)

  • PHP 관련 기술자료 리스트 (한국 developerWorks)

  • PHP 스킬을 넓히고 싶다면 IBM developerWorks의 PHP project resources를 참고하세요.

  • developerWorks podcasts에서 소프트웨어 개발자들의 재미있는 인터뷰나 토론을 볼 수 있습니다.

  • developerWorks technical events and webcasts.

  • IBM 오픈 소스 개발자들의 최신 컨퍼런스, trade show, webcast와 기타 이벤트 

  • 한국 developerWorks 오픈 소스 존 - 오픈 소스 기술을 사용하고, IBM의 제품들과 함께 사용하는데 있어서 도움이 될 만한 HOT-TO 정보, 툴, 프로젝트 업데이트를 만나보십시오. Eclipse, Globus/Grid, Apache, Derby/Cloudscape, Linux, PHP, Perl, Python을 비롯하여 라이센싱과 오픈 소스 개발과 관련한 주제들을 다루고 있습니다.

  • Safari Books Online 방문하면 오픈 소스 기술에 대한 좋은 자료를 찾아 볼 수 있습니다.

제품 및 기술 얻기

토론

필자소개

Martin Streicher는 Linux Magazine의 편집장이며, Hesketh.com에서는 웹 개발자로, developerWorks의 기고자로 활동하고 있다. 퍼듀대학교에서 컴퓨터 공학 석사 학위를 받았으며, 1986년부터 유닉스 계열 시스템을 프로그래밍 하고 있다.

'Language > PHP' 카테고리의 다른 글

PHP 자동링크생성  (0) 2011.03.16
php 회원가입폼 제작시 유용한 정규표현식함수  (0) 2009.04.21
All <input id="check_all" onclick="checkedAll(this)" type="checkbox">
check1 <input id="check1" onclick="checkboxOne()" type="checkbox">
check2 <input id="check2" onclick="checkboxOne()" type="checkbox">
check3 <input id="check3" onclick="checkboxOne()" type="checkbox">
check4 <input id="check4" onclick="checkboxOne()" type="checkbox">
<script type="text/javascript">
//<![CDATA[
	var AllObj = document.getElementById("check_all");
	var checkboxArr = new Array("check1","check2","check3","check4");
	function checkbox_checked(bool)
	{
		for(var n in checkboxArr) document.getElementById(checkboxArr[n]).checked = bool;
	}
	function checkedAll(obj) {
		var bool = obj.checked;return checkbox_checked(bool);
	}
	function checkboxOne()
	{
		var cnt=0;
		for(var n in checkboxArr) if(document.getElementById(checkboxArr[n]).checked === true) cnt++;
		if(cnt == checkboxArr.length) AllObj.checked = true;
		else AllObj.checked = false;
	}
//]]>
</script>


'Language > Javascript' 카테고리의 다른 글

슬라이딩  (0) 2008.11.25
lightbox2  (1) 2008.06.18



IE 메뉴 -> 도구 -> 인터넷 옵션 -> 고급탭 -> "선택 영역에 바로 가기 단추 표시" 체크해제


이렇게 하면 짜증나는 검색 버튼이 사라져 버린다.




'OS > Windows' 카테고리의 다른 글

EditPlus, SecureCRT, FileZilla, SQLYog 서버정보 백업방법  (0) 2011.05.20

Crontab - Quick reference

Setting up cronjobs in Unix and Solaris

cron is a unix, solaris utility that allows tasks to be automatically run in the background at regular intervals by the cron daemon. These tasks are often termed as cron jobs in unix , solaris. 
Crontab (CRON TABle) is a file which contains the schedule of cron entries to be run and at specified times.

Following points sum up the crontab functionality :

1. Crontab Restrictions
2. Crontab Commands
3. Crontab file - syntax
4. Crontab Example
5. Crontab Environment
6. Disable Email
7. Generate log file for crontab activity
1. Crontab Restrictions
____________
You can execute crontab if your name appears in the file /usr/lib/cron/cron.allow. If that file does not exist, you can use
crontab if your name does not appear in the file /usr/lib/cron/cron.deny. 
If only cron.deny exists and is empty, all users can use crontab. If neither file exists, only the root user can use crontab. The allow/deny files consist of one user name per line.


2. Crontab Commands
__________
export EDITOR=vi ;to specify a editor to open crontab file.

crontab -e     Edit your crontab file, or create one if it doesn't already exist. 
crontab -l      Display your crontab file. 
crontab -r      Remove your crontab file. 
crontab -v      Display the last time you edited your crontab file. (This option is only available on a few systems.) 
 

3. Crontab file
___________
Crontab syntax :-
A crontab file has five fields for specifying day , date and time  followed by the command to be run at that interval.

*     *   *   *    *  command to be executed
-     -    -    -    -
|     |     |     |     |
|     |     |     |     +----- day of week (0 - 6) (Sunday=0)
|     |     |     +------- month (1 - 12)
|     |     +--------- day of month (1 - 31)
|     +----------- hour (0 - 23)
+------------- min (0 - 59)
 

* in the value field above means all legal values as in braces for that column. 
The value column can have a * or a list of elements separated by commas. An element is either a number in the ranges shown above or two numbers in the range separated by a hyphen (meaning an inclusive range). 

Note: The specification of days can be made in two fields: month day and weekday. If both are specified in an entry, they are cumulative meaning both of the entries will get executed .

4. Crontab Example
_______

A line in crontab file like below  removes the tmp files from /home/someuser/tmp each day at 6:30 PM.

30     18     *     *     *         rm /home/someuser/tmp/*

 

Changing the parameter values as below will cause this command to run at different time schedule below :

min hour day/month month day/week  Execution time
30 0 1 1,6,12 * -- 00:30 Hrs  on 1st of Jan, June & Dec.

:

0 20 * 10 1-5 --8.00 PM every weekday (Mon-Fri) only in Oct.

:

0 0 1,10,15 * * -- midnight on 1st ,10th & 15th of month

:

5,10 0 10 * 1 -- At 12.05,12.10 every Monday & on 10th of every month
:

Note : If you inadvertently enter the crontab command with no argument(s), do not attempt to get out with Control-d. This removes all entries in your crontab file. Instead, exit with Control-c.

5. Crontab Environment
___________
cron invokes the command from the user's HOME directory with the shell, (/usr/bin/sh). 
cron supplies a default environment for every shell, defining:
HOME=user's-home-directory
LOGNAME=user's-login-id
PATH=/usr/bin:/usr/sbin:.
SHELL=/usr/bin/sh

Users who desire to have their .profile executed must explicitly do so in the crontab entry or in a script called by the entry.

6. Disable Email
____________

By default cron jobs sends a email to the user account executing the cronjob. If this is not needed put the following command At the end of the cron job line .

>/dev/null 2>&1


7. Generate log file
________________

To collect the cron execution execution log in a file :

30 18  *    *   *    rm /home/someuser/tmp/* > /home/someuser/cronlogs/clean_tmp_dir.log

출저 : http://www.adminschoice.com/docs/crontab.htm 

위키 : http://en.wikipedia.org/wiki/Cron



for i in `find /home/ -type f -name "*.php"`
do
perl -pi -e "s/ABC/DEF/g" $i
done

home이란 디렉토리(하위디렉토리/파일포함) 확장명이 php로 된 파일내의 문자열 중 ABC를 DEF로 바꾼다.

저렇게 vi로 작성후 실행시켜 주면 잘 작동한다 -_-;


커맨드 프롬프트에서도 할수 있다.

find 디렉토리 -exec perl -pi -e 's/찾을문자열/바뀔문자열/g' {} \;


아래 것이 더 편리하니 아랫걸 사용하도록 하자


이건 참고로
파일의 실행권한 빼기(하위 디렉토리 포함)

find ./ -type f -exec chmod -x {} \;


find 디렉토리 -name "*.php" -print | xargs grep -l "문자열"
옵션 : -l 파일명만 보여준다.

#grep 서브 옵션
--include="스켄할디렉토리명"
--exclude="제외할디렉토리명"
--include-from="파일명"

function chkType($String, $type)
{
	switch ($type)
	{
		case "number":  //숫자만
			$filter = "'^[1-9][0-9]*$'";
		break;
		case "digit":   //숫자만
			$filter = "'^[[:digit:]]*$'";
		break;
		case "alpha":  //영문만
			$filter = "'^[[:alpha:]]*$'";
		break;
		case "alnum":  //영문,숫자만
			$filter = "'^[[:alnum:]]*$'";
		break;
		case "falnum":  //영문,숫자만(첫자는 영문)
			$filter = "'^[a-zA-Z][0-9a-zA-Z]*$'";
		break;
		case "lalpha":  //소-영문만
			$filter = "'^[a-z]*$'";
		break;
		case "ualpha":  //대-영문만
			$filter = "'^[A-Z]*$'";
		break;
		case "lalnum":  //소-영문,숫자만
			$filter = "'^[0-9a-z]*$'";
		break;
		case "ualnum":  //대-영문,숫자만
			$filter = "'^[0-9a-z]*$'";
		break;
		case "email":  //이메일
			$filter = "'^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$'";
		break;
		case "koralnum": //한글숫자영문
			$filter = "'^[\xa1-\xfe0-9a-zA-Z]*$'";
		break;
		case "kor":   //한글
			$filter = "'^[\xa1-\xfe]*$'";
		break;
	}
	if(preg_match($filter, $String, $matches)) return true;
	else return false;
}
grep -l '찾을 단어' * 디렉토리
출처 이리 검색
function scrollLayer(p_obj_name, p_gap_point) 
{ 
	var start_point, end_point, timer;

	var obj_layer   = document.getElementById(p_obj_name);  // 레이어 오브젝트
	start_point = parseInt(obj_layer.style.top, 10);

	if ( start_point < p_gap_point )    start_point = p_gap_point;

	end_point   = document.body.scrollTop + p_gap_point; 
	limit_point = parseInt(window.document.body.scrollHeight) - parseInt(obj_layer.offsetHeight) -10;

	if ( end_point > limit_point )  end_point = limit_point;

	if ( start_point != end_point ) 
	{ 
		scroll_amount = Math.ceil( Math.abs( end_point - start_point ) / 15 ); 
		obj_layer.style.top = parseInt(start_point, 10) + ( ( end_point < start_point ) ? -scroll_amount : scroll_amount ); 
	}

	timer = window.setTimeout ("scrollLayer('" + p_obj_name + "', " + p_gap_point + ");", 1); 
}

scrollLayer('slide_banner',410);

'Language > Javascript' 카테고리의 다른 글

javascript checkbox all check  (0) 2010.04.22
lightbox2  (1) 2008.06.18

'Language > Javascript' 카테고리의 다른 글

javascript checkbox all check  (0) 2010.04.22
슬라이딩  (0) 2008.11.25

+ Recent posts