336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

str_replace('찾을 문자열', '변경할 문자열', '해당 문자열')

​preg_replace(/찾을 문자열/, '변경할 문자열', '해당 문자열')

 

​문자열을 검색해 치환 문자열로 변경한다.

​preg_replace의 경우 정규표현식의 이 가능.

Posted by 당양부부34
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

find ./* -name '*' -exec egrep -i "okcash" {} /dev/null \; > result_file.txt

Posted by 당양부부34
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


1. Image Button 경우


<img id=”save” name=”save” src=”save.png” onclick=”javascript:save(); this.style.visibility=’hidden’; ” >


이렇게 하면, 버튼을 클릭함과 동시에 버튼 이미지가 보이지 않게 되어 버립니다. 물론 자바스크립트 함수인 save() 안에서 함수 종료 처리 전에, 다시 이미지 버튼을 보이도록 처리를 해주어야 합니다.


2. input Button 경우


<input type=”button” onClick=”javascript:save(); this.disabled=true; ”>


이번 경우에는 input 타입으로 된 버튼으로 클릭하면 곧바로 사용 불가능한 버튼으로 변경되며, 자바스크립트 save() 함수 내부에서 다시 disabled 를 풀어주는 처리를 해주셔야 합니다.


3. Script 처리법

<script type="text/javascript">

<!--

var delay = 1000;

var submitted = false;


function submitCheck() {


  if(submitted == true) { return; }


  document.frm.button.value = '전송중';

  document.frm.button.disabled = true;

  setTimeout ('submitForm()', delay);


  submitted = true;

}


function submitForm(){

  document.frm.action = "http://www.webmadang.net";

  document.frm.submit();

}

//-->

</script>


<form name="frm" method="post">

<input type="button" name="button" value="전송" onclick="submitCheck();">

</form>

Posted by 당양부부34

2015. 10. 27. 18:14 IT/MySQL

Mysql Join Update.

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

update 를 할 때 다른 테이블의 데이터를 바탕으로 데이터 갱신을 시켜야 하는 경우가 있을 수 있습니다.

이 경우 몇 가지 방법이 있는데 하나는 where 절에 서브쿼리를 쓰는 방법입니다.

물론 단순한 경우라면 서브쿼리를 써도 문제없겠지만 복잡한 경우일 수록 서브쿼리는 시간이 오래 걸리게 됩니다.

 

다른 방법으로는 JOIN을 써서 update를 하는 방법입니다.

우리가 select 쿼리를 날릴 때와 마찬가지로 필요한 데이터를 여기저기서 긁어모은 다음 한방에 갱신을 할 수 있습니다.

syntax는 다음과 같습니다.

 

 

UPDATE [테이블명1] A INNER JOIN [테이블명2] B
ON A.[조인할 컬럼명] = B.[조인할 컬럼명]
SET [변경할 컬럼명] = 변경할값
( WHERE 절 )
 

 

'IT > MySQL' 카테고리의 다른 글

이전의 INSERT 작업으로부터 생성된 ID를 반환  (0) 2016.01.07
Mysql 전체 날짜 리스트 출력.  (0) 2015.11.25
MySQL 커버링 인덱스  (0) 2015.10.16
MySQL 설치 및 권한 관리.  (0) 2015.10.01
mysql JOIN DELETE  (0) 2015.09.11
Posted by 당양부부34
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

getconf -a |grep glibc

GNU_LIBC_VERSION                   glibc 2.12

Posted by 당양부부34
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Number 필드는 이름에서 볼 수 있듯이 숫자 입력을 편하게 하기 위해서 제안된 태크 입니다. 다른 웹 폼들도 대부분 그러하지만 Number 도 모바일 같이 입력이 제한된 환경에서 유용하게 사용됩니다. 

 

<input id="age" type="number" value="0"/>


숫자를 입력하기 위해서 제안된 용도에 맞게 이 항목을 선택하게 되면 모바일 환경과 같이 입력기가 별도로 뜰 때에는 숫자를 입력하기 위한 용도의 입력기가 나타 납니다. 


 Number는 단순히 숫자 입력을 요구하기 위한 용도로 사용되지는 않습니다. 숫자 이외에 다른 문제는 입력을 거부하거나 지정된 범위를 벗어나는 숫자의 입력을 거부하는 용도로도 활용 될 수 있습니다. 


value Value is the default value of the input box when a page is first loaded. This is a common attribute for <input> element regardless which type you are using.

min : Obviously, the minimum value you of the number. I should have specified minimum value to 0 for my demo up there as a negative number doesn't make sense for number of movie watched in a week.

max : Apprently, this represents the biggest number of the number input.

step : Step scale factor, default value is 1 if this attribute is not specified.


일반적인 데스크탑 환경에서는 Chrome, Opera에서 Number 태그가 사용 가능합니다. Number 객체 옆에는 숫자를 올리거나 내일 수 있는 버튼이 함께 붙어 있습니다. Step 속성은 숫자를 높이거나 낮출 때 사용하는 버튼을 눌렀을 때 증가 혹은 감소되는 양을 지정하기 위한 속성입니다. 


Browsers Render "Number" input as Spinner

IE 9

Firefox 4

Safari 5 ✓ (in Mac OS, but not Windows)

Chrome 8

Opera 11


Java Script에서 Number 객체를 활용 할 때에는 stepUp(), steopDown(), valueAsNumber 등의 속성을 사용할 수 있습니다. 


spinner.stepUp(x) - x being the value you want to increase in the field.

spinner.stepDown(x) - x being the value you want to decrease in the field.

spinner.valueAsNumber - return value of input as floating point number instead of string.

하지만 역시 웹 폼의 기능들은 모바일 환경에서 제일 유용합니다. 



Posted by 당양부부34

2015. 10. 16. 11:00 IT/MySQL

MySQL 커버링 인덱스

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

MySQL에서 커버링 인덱스로 쿼리 성능을 높여보자!!

안녕하세요.  오늘 짧지만 재미있는 내용을 하나 공유할까 합니다.

커버링 인덱스(Covering Index)라는 내용인데, 대용량 데이터 처리 시 적절하게 커버링 인덱스를 활용하여 쿼리를 작성하면 성능을 상당 부분 높일 수 있습니다.

커버링 인덱스란?

커버링 인덱스란 원하는 데이터를 인덱스에서만 추출할 수 있는 인덱스를 의미합니다. B-Tree 스캔만으로 원하는 데이터를 가져올 수 있으며, 칼럼을 읽기 위해 굳이 데이터 블록을 보지 않아도 됩니다.

인덱스는 행 전체 크기보다 훨씬 작으며, 인덱스 값에 따라 정렬이 되기 때문에 Sequential Read 접근할 수 있기 때문에, 커버링 인덱스를 사용하면 결과적으로 쿼리 성능을 비약적으로 올릴 수 있습니다.

백문이 불여일견! 아래 테스트를 보시죠.

테이블 생성

먼저 다음과 같이 테이블을 생성합니다.

create table usertest (
 userno int(11) not null auto_increment,
 userid varchar(20) not null default '',
 nickname varchar(20) not null default '',
 .. 중략 ..
 chgdate varchar(15) not null default '',
 primary key (userno),
 key chgdate (chgdate)
) engine=innodb;

약 1,000만 건 데이터를 무작위로 넣고 몇가지 테스트를 해봅니다.

커버링 인덱스(SELECT)

select chgdate , userno
from usertest
limit 100000, 100
************* 1. row *************
           id: 1
  select_type: SIMPLE
        table: usertest
         type: index
possible_keys: NULL
          key: CHGDATE
      key_len: 47
          ref: NULL
         rows: 9228802
        Extra: Using index
1 row in set (0.00 sec)

쿼리 실행 계획의 Extra 필드에 “Using Index” 결과를 볼 수 있는데, 이는 인덱스만으로 원하는 데이터 추출을 하였음을 알 수 있습니다.

이처럼 데이터 추출을 인덱스에서만 수행하는 것을 커버링 인덱스라고 합니다. 아시겠죠? ^^

그렇다면 일반 쿼리와 성능 테스트를 해볼까요?

커버링 인덱스(WHERE)

1) 일반 쿼리

select *
from usertest
where chgdate like '2010%'
limit 100000, 100

쿼리 수행 속도는 30.37초이며, 쿼리 실행 계획은 다음과 같습니다.

************* 1. row *************
           id: 1
  select_type: SIMPLE
        table: usertest
         type: range
possible_keys: CHGDATE
          key: CHGDATE
      key_len: 47
          ref: NULL
         rows: 4352950
        Extra: Using where

Extra 항목에서 “Using where” 내용은, Range 검색 이후 데이터는 직접 데이터 필드에 접근하여 추출한 것으로 보면 됩니다.

2) 커버링 인덱스 쿼리

select a.*
from (
      select userno
      from usertest
      where chgdate like '2012%'
      limit 100000, 100
) b join usertest a on b.userno = a.userno

쿼리 수행 시간은 0.16초이며 실행 계획은 다음과 같습니다.

************* 1. row *************
           id: 1
  select_type: PRIMARY
        table:
         type: ALL
possible_keys: NULL
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 100
        Extra:
************* 2. row *************
           id: 1
  select_type: PRIMARY
        table: a
         type: eq_ref
possible_keys: PRIMARY
          key: PRIMARY
      key_len: 4
          ref: b.userno
         rows: 1
        Extra:
************* 3. row *************
           id: 2
  select_type: DERIVED
        table: usertest
         type: range
possible_keys: CHGDATE
          key: CHGDATE
      key_len: 47
          ref: NULL
         rows: 4352950
        Extra: Using where; Using index

Extra 에서 “Using Index”를 확인할 수 있습니다.

그렇다면 30초 넘게 수행되는 쿼리가 0.16초로 단축됐습니다. 왜 이렇게 큰 차이가 발생했을까요?

첫 번째 쿼리는 Where에서 부분 처리된 결과 셋을 Limit 구문에서 일정 범위를 추출하고, 추출된 값을 데이터 블록에 접근하여 원하는 필드를 가져오기 때문에 수행 속도가 느립니다.

두 번째 쿼리에서도 동일하게 Where에서 부분 처리된 결과 셋이 Limit 구문에서 일정 범위 추출되나, 정작 필요한 값은 테이블의 Primary Key인 userno 값입니다. InnoDB에서 모든 인덱스 Value에는 Primary Key를 값으로 가지기 때문에, 결과적으로 인덱스 접근만으로 원하는 데이터를 가져올 수 있게 됩니다. 최종적으로 조회할 데이터 추출을 위해서 데이터 블록에 접근하는 건 수는 서브 쿼리 안에 있는 결과 갯수, 즉 100건이기 때문에 첫 번째 쿼리 대비 월등하게 좋은 성능이 나온 것입니다.

커버링 인덱스(ORDER BY)

커버링 인덱스를 잘 사용하면 Full Scan 또한 방지할 수 있습니다. 대부분 RDBMS에는 테이블에 대한 통계 정보가 있고, 통계 정보를 활용해서 쿼리 실행을 최적화 합니다.

다음 재미있는 테스트 결과를 보여드리겠습니다. 전체 테이블에서 chgdate 역순으로 400000번째 데이터부터 10 건만 가져오는 쿼리입니다.

1) 일반 쿼리

select *
from usertest
order by chgdate
limit 400000, 100
************* 1. row *************
           id: 1
  select_type: SIMPLE
        table: usertest
         type: ALL
possible_keys: NULL
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 9228802
        Extra: Using filesort
1 row in set (0.00 sec)

분명 인덱스가 있음에도, Full Scan 및 File Sorting이 발생합니다. 인덱스를 태웠을 때 인덱스 블록을 읽어들이면서 발생하는 비용보다 단순 Full Scan이 더 빠르다고 통계 정보로부터 판단했기 때문이죠. 인덱스도 데이터라는 것은 항상 기억하고 있어야 합니다^^

결과 시간은 책정 불가입니다. (안끝나요~!)

2) 커버링 인덱스 쿼리

위 결과와 다르게 커버링 인덱스는 조금 더 재미있는 결과를 보여줍니다.

select a.*
from (
      select userno
      from usertest
      order by chgdate
      limit 400000, 100
) b join usertest a on b.userno = a.userno
************* 1. row *************
           id: 1
  select_type: PRIMARY
        table:
         type: ALL
possible_keys: NULL
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 100
        Extra:
************* 2. row *************
           id: 1
  select_type: PRIMARY
        table: a
         type: eq_ref
possible_keys: PRIMARY
          key: PRIMARY
      key_len: 4
          ref: b.userno
         rows: 1
        Extra:
************* 3. row *************
           id: 2
  select_type: DERIVED
        table: usertest
         type: index
possible_keys: NULL
          key: CHGDATE
      key_len: 47
          ref: NULL
         rows: 400100
        Extra: Using index

File Sorting이 발생하지 않고 커버링 인덱스가 사용되었으며, 실행 시간 또한 0.24초로 빠르게 나왔습니다.^^

Conclusion

커버링 인덱스는 InnoDB와 같이 인덱스와 데이터 모두 메모리에 올라와 있는 경우에 유용하게 쓰일 수 있습니다. 물론 커버링 인덱스가 좋기는 하지만, 커버링 인덱스를 사용하기 위해 사용하지 않는 인덱스를 주구장창 만드는 것은 최대한 피해야 하겠죠^^

인덱스도 데이터입니다.

 


'IT > MySQL' 카테고리의 다른 글

Mysql 전체 날짜 리스트 출력.  (0) 2015.11.25
Mysql Join Update.  (0) 2015.10.27
MySQL 설치 및 권한 관리.  (0) 2015.10.01
mysql JOIN DELETE  (0) 2015.09.11
MySQL DB 생성 및 사용자 추가, 권한 부여  (0) 2015.09.08
Posted by 당양부부34
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

// 크로스 브라우징시 브라우저 지원되는 객체 식별하여 id 값 가져오는함수
function getObject(objid){
    if(document.getElementById && document.getElementById(objid)){
        return document.getElementById(objid);    }
    else if(document.all && document.all(objid)){
        return document.all(objid);
    }
    else if(document.layers && document.layers[objid]){
        return document.layer[objid];
    }
    else{        return false;
    }
}

 

'IT > jquery_javascript' 카테고리의 다른 글

javascript 페이지 이동.  (0) 2016.03.03
저장 버튼 더블 클릭, 중복 클릭 방지  (1) 2015.10.28
레이어 팝업 가운데 정렬  (0) 2015.09.15
jquery 숫자만 입력  (0) 2015.07.17
버튼 더블 클릭 막기.  (0) 2015.05.06
Posted by 당양부부34
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

샹떼꼬르 블랙프라이데이 1+1 이벤트.

 

샹떼꼬르 후기 보셨나요?

 

홍진영씨 광고로도 유명하지요.

 

홍진영씨 몸매 완전 날씬하죠.

 

보고 있느라면 다이어트 생각 물씬 들죠.

 

 

요즘 우리나라는 블랙프라이데이 행사를 하고 있지요.


샹떼꼬르에서도 블랙프라이데이 이벤트를 진행하고 있더라구요.

 

호오~ 대박 찬스!!

 


 

1+1이라 1개 가격에 2개를 구입할 수 있지요.

드시던 분들은 보통 2개월 이상 드시기에

더할나위 없는 기회인 것 같아요.

 

샹떼꼬르 블랙프라이데이 1+1 이벤트.

 

샹떼꼬르 무료 상담을 통해

 

이번 기회에 여러분도 다이어트에 성공하시길 바래요.

 

 

더 이상 다이어트 생각하지 않을 수 있는

 

그 날을 위해

 

오늘부터 노력해 보세요.

샹떼꼬르 블랙프라이데이 1+1 이벤트.

 

지금이 기회랍니다.

 

 

많은 분들이 이용하고 홍진영씨가 광고하는 제품이니만큼

 

신뢰도는 꽤 높지 않을까요?

 

샹떼꼬르 블랙프라이데이 1+1 이벤트.

 

 

섭취 방법도 간단합니다.

 

샹떼꼬르 블랙프라이데이 1+1 이벤트.

 

 

 

샹떼꼬르는 몸에 섭취되는 탄수화물의 80%

 


몸밖으로 안전하게 수분으로 배출되게 해주어


음식을 먹으면서도 전혀 스트레스 받을 일 없고,


섭취 후에도 많이 먹었다고 걱정할 일 없으며,


몸 안에 남아도는 탄수화물이


지방으로 변할까 걱정 할 염려가 전혀 없네요.

 

샹떼꼬르 블랙프라이데이 1+1 이벤트.

 

 

 

 

다이어트의 종식을 위하여!!

 

샹떼꼬르 블랙프라이데이 1+1 이벤트.

 

 

'행복 > 다이어트(diet)' 카테고리의 다른 글

내 인생을 좀 더 밝게..  (0) 2016.01.05
다이어트. 샹떼꼬르 블랙프라이데이 1+1 이벤트.  (0) 2015.11.06
홍진영 다이어트  (0) 2015.09.30
소원 다이어트  (0) 2015.09.30
섹시 속옷(Sexy. So Hot).  (0) 2015.09.30
Posted by 당양부부34
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

############### MySQL 설치 ##############

>> 업데이트 목록 보기

 yum list updates 


>> 업데이트 목록의 다운로드 및 업데이트 설치

 yum update ?y 


>> 설치된 rpm 패키지 목록 보기

 rpm -qa 

or

 rpm -qa | grep ^mysql-server

 yum list installed 


>> gcc 패키지 설치여부 확인

 rpm -qa | grep gcc 

 yum list installed gcc 


>> gcc 패키지 설치

 yum install gcc gcc-c++ 


>> gcc 패키지 업데이트

 yum update gcc gcc-c++ 


>> 패키지 이름으로 검색

 yum list 패키지명 

 yum list 정규식 

 yum list gcc 

 yum list gcc* 


>> MySQL 설치

 yum install mysql-server


>> 서비스 시작

 service mysqld start


>> root 비번 변경

 /usr/bin/mysqladmin -u root password 'P@ssw0rd'


>> 접속 테스트

 mysql -uroot -p


>> 부팅시 자동시작

 chkconfig --list mysqld

 mysqld         0:off 1:off 2:off 3:off 4:off 5:off 6:off


 chkconfig mysqld on


 chkconfig --list mysqld 

 mysqld         0:off 1:off 2:on 3:on 4:on 5:on 6:off


>> 방화벽 열기

 vi /etc/sysconfig/iptables


############### MySQL 권한 관리 ##############


mysql > show databases;     // DB 목록 확인

msyql > create database DB명;    // 데이터베이스 생성

 or

mysql > create database DB명 default character set utf8;


msyql > drop database DB명;       // 데이터베이스 삭제


mysql > create user 사용자ID;   // 사용자 추가

 or

mysql > create user userid@localhost identified by '비밀번호'; // 사용자(user)를 추가하면서 패스워드까지 설정


기존에 사용하던 계정에 외부 접근 권한을 부여하려면, Host를 '%' 로 하여 똑같은 계정을 추가한다

mysql > create user 'userid'@'%' identified by '비밀번호';  // '%' 의 의미는 외부에서의 접근을 허용


mysql > select * from user;    // 등록된 모든 사용자 ID 조회


mysql > delete from user where user = '사용자ID';      // 사용자 삭제


mysql > GRANT ALL PRIVILEGES ON DB명.테이블 TO 계정아이디@host IDENTIFIED BY '비밀번호';

 or

mysql> grant select, insert, update on test.* to user@localhost;   -- 패스워드는 변경없이 권한만 부여하는 경우


사용자에게 부여된 권한 확인

mysql > SHOW GRANTS FOR test@localhost;  -- userid 와 host명까지 붙여서 검색해야 함

mysql > SHOW GRANTS FOR test@'%';

mysql > SHOW GRANTS FOR test@'200.100.100.50';



사용자에게 데이터베이스 사용권한 제거

revoke all on DB명.테이블명 from 사용자ID;     // 모든 권한을 삭제


mysql > flush privileges;     // 변경된 내용을 메모리에 반영(권한 적용)


'IT > MySQL' 카테고리의 다른 글

Mysql Join Update.  (0) 2015.10.27
MySQL 커버링 인덱스  (0) 2015.10.16
mysql JOIN DELETE  (0) 2015.09.11
MySQL DB 생성 및 사용자 추가, 권한 부여  (0) 2015.09.08
Mysql Join 속도 측정 및 개선  (0) 2015.07.22
Posted by 당양부부34

블로그 이미지
주요 토렌트를 블로깅하고 있습니다. 토렌트 순위 등은 다른 사이트를 찾아보세요. 주요 웹툰 순위도 게재했어요 경제를 좋아하는 일산의 행복한 프로그래머입니다.
당양부부34
Yesterday
Today
Total

달력

 « |  » 2025.2
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함