11번가 십일절 보너스쿠폰, 중복할인쿠폰, 장바구니쿠폰, 온리유쿠폰, only u 쿠폰

11번가 only u 쿠폰 / 온리유쿠폰 / 장바구니쿠폰 / 중복할인쿠폰 / 보너스쿠폰

 

오늘 11번가 날이네요...십일절.

11월 11일.. 그래서 오늘 할인쿠폰도 많이 뿌렸는데.... 

7만원이상 5만원 보너스쿠폰,  5만원이상 3만원 보너스쿠폰....

정말 유용한 할인쿠넛폰인데, 정말 받기힘드네요..

매시간 11분마다 한다고해서 10분쯤 되서 들어갔는데도 내 시계가 느린건지 벌써 시작해서 끝나버렸네요..

아. 아쉬워라....


그래도 11번가에서 계속하고 있는 장바구니 중복할인 쿠폰이 있으니 이거라도 이용해 봐야겠죠...



11번가에서 다른 할인쿠폰과 중복할인 적용이 가능한 Only U 쿠폰이니 많이들 받아서 유용하게 이용하세요.

이번 쿠폰도 11번가 사이트에서 바로 찾으실수는 없고요.

홈페이지, 블로그 보시다가 "지금 바로 사용하는 Only U쿠폰" 이미지가 보이면 바로 이동하시면 받으실수 있습니다..

 

3만원이상 구매시 2000원 중복할인

10만원이상 구매시 7000원 중복할인 되는 11번가 Only U 중복할인 쿠폰이고, 다운로드후 7일안에 사용하시면 되니 꼭 필요할 때 다운받으세요.


조금 아쉬운건 순금,아동주얼리, 복지용구,상품권등 일부 카테고리제품은 미적용된다니 잘 살펴보시고, 아이디당 월 1회만 다운로드 가능합니다.

 

 Only U 쿠폰이란, 고객님이 게신곳으로 찾아가는 11번가의 보너스쿠폰이라고 하는데요, 웹서핑중에 찾으실수 있으니 놓치지 마세요~ 


즐~ 쇼핑하세요.

파나소닉 터프패드,FZ-G1, 산업용 태블릿

파나소닉 터프패드,FZ-G1, 터프패드, 산업용 태블릿, 태블릿, 윈도우8, windows8

출처 : 산업일보 http://www.kidd.co.kr/news/173714


신도컴퓨터, 파나소닉 터프패드 FZ-G1


[산업일보 온라인 뉴스팀] 신도컴퓨터가 방수, 방진, 내충격, 온도 내구성까지 갖춘 산업용 태블릿 파나소닉 터프패드 FZ-G1을 선보였다. 

미 국방성 테스트(MIL-STD-810G)와 1P65 테스트를 통과(방수, 방진 내충격 설계)한 터프패드는 혹독한 조건의 야외에서도 사용 가능하다. 

특히 시간당 140mm의 강수량을 견뎌낼 수 있으며, 180cm 자유낙하 시험까지 통과했다. 

-28℃ 환경에서도 작동하는 제품으로 WUXGA의 해상도와 800nit 화면밝기(일반 노트북=250nit) 햇빛이 강한 야외에서도 작업이 원활하다. 배터리 역시 한번 충전으로 최대 8시간까지 사용 가능하며, 운영체제가 윈도우8(윈도우7 가능)이기 때문에 현재 사용하고 있는 윈도우 기반 제품과 호환성도 높였다. 

신도컴퓨터 관계자는 “터프패드는 일반 패드보다 초기 구입비용이 높지만 데이터의 안전한 보존과, 수리비용 절감 등을 고려했을 때 효용대비 비용은 오히려 저렴하다”고 말했다.
온라인 뉴스팀 kidd@kidd.co.kr


영문 Putty 설치후 한글이 깨져서 보일때

영문 Putty 설치후 한글이 깨져서 보일때가 있다.
이때, Putty 설정에서 character set을 변경해주면 되는데...여기에 cp949가 없을 경우가 있다.

cp949가 Putty "Window > Translation"에서 보이지 않을경우 레지스트리를 수정해주면 되는데.
"[HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\저장된세션이름"에서 LineCodePageFontCharSet 을 변경해주면 된다.
1. FontCharset을 클릭하여 16진수 선택하고 81 을 입력해준다.
2. LineCodePage 클릭후 cp949를 입력해준다.

위와 같이 레지스트리 변경후 EUC-KR 서버에 SSH로 원격 접속을 해보면 한글 입출력이 잘된다.
참고로 저장된 세션이 여러개이면, 개별적으로 모두 해주어야 모든 세션에서 한글을 사용할수 있다.

참조 url : http://blog.pincoin.co.kr/2013/01/08/euc-kr-%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%84%9C%EB%B2%84%EC%97%90-putty-ssh-%EC%A0%91%EC%86%8D/


하이브리드앱 개발시 안드로이드 4.0.* 일부 기기에서 select box touch 오류 발생 해결하기

하이브리드앱jquerymobile과 같이 개발하는 경우 jquerymobile css에서 오류가 발생한다.

오류는 일부 안드로이드 기기의 버젼 4.0.* 에서 발생하고 있으며, 발견된 기기는 갤럭시노트1, 갤럭시S2 에서 ICS 4.0.4 에서 발견되었다.


발견된 오류는 select box 에서 터치시 select box가 열리기 않고 앱이 종료되는 문제가 발생했다. 사용한 jquerymboile의 버젼은 1.3.1 이었다.

해당 버젼의 jquery.mobile-1.3.1.css 의 line 3170 의 -webkit-transform: translate3d(0,0,0); 에서 문제를 일으켰다. 

 -webkit-transform: translate3d(0,0,0);  부분을 주석처리후 오류없이 잘 동작을 했다.


해당 부분의 전체 style은 

/* hardware acceleration for smoother transitions on WebKit browsers */

.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal),

.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal) > div,

.ui-panel-animate.ui-panel-closed.ui-panel-display-reveal > div,

.ui-panel-animate.ui-panel-content-wrap,

.ui-panel-animate.ui-panel-content-fixed-toolbar {

-webkit-backface-visibility: hidden;

-webkit-transform: translate3d(0,0,0);

}


이다. 


혹시 하이브리드앱을 개발할때 select box 사용할대 이와 같은 오류가 발생시에 jquerymobile style파일에서 위 부분을 찾아서 주석처리를 해주면 된다.



사내 메신저 사용 차단하기

네트워크 관리자의 경우 사내에서 메신져를 차단해야 할경우가 있다.

이런경우,

해당 메신져의 사용 port를 차단하거나, ip를 확인해서 차단하는 방법이 있다.

물론, 방화벽 장비를 추가해서 원천 차단하는 방법도 있다. 이건 돈이 좀 든다.


port의 경우 변경될수도 있으니, 메신져가 사용하는 도메인을 확인해서 연결된 ip를 확인해서 사내 네트워크 관리업체에 해당 ip에 대한 차단을 요청하면 된다.


1. 네이트온 차단하기

네이트온의 경우 dpl.nate.com, prs.nate.com 을 nslookup으로 확인해서 해당 IP를 차단한다.


2. 마이피플 차단하기

마이피플의 경우 네트워크 트래팩을 확인해본 결과 air21.daum.net 이라는 도메인을 사용하고 있었다. nslookup을 통해 IP를 확인해서 해당 IP를 차단 요청한다.


3. 카카오톡 PC버젼 차단하기

카카오톡은 sb-talk.kakao.com 을 nslookup 을 확인해서 차단하면 된다.



관련되는 도메인은 사내 네트워크 관리툴을 이용하여 네트워크 사용 모니터링을 통해 찾아냈다. 

IP차단의 경우에는 차단후에도 메신져가 동작할수도 있는데....이럴때 마다 IP를 다시 확인해서 차단을 해야한다.


차단을 했는데도 프록시를 사용해서 메신져를 이용한다면..그건 노력의 대가니까..그냥 둔다.






backbutton 으로 앱종료하기

backbutton 버튼클릭시 앱 종료 처리하기.


기본적으로 backbutton 버튼을 클릭하게 되면, 뒤로가기가 실행된다.

이부분을 앱의 처음화면일 경우 종료메세지가 출력되고 확인후 종료되게 하려면, backbutton 동작을 override 시켜서 처리해야 한다.

이때, 메인activity에서 backbutton 동작을 override 시키면 그 이후 화면에서도 backbutton 기능이 override 되서 동작을 재정의 해줘야 한다.

이부분을 피하기 위해서 메인 이외의 페이지에서는 backbutton override 가 안되게 하면된다.

아래 그 부분에 대한 code 이다. 기본적으로 backbutton의 override는 cordova(phonegap) 프레임워크를 이용해서 처리했다.


1.메인화면(앱실행시 첫화면)

아래 코드로 메인화면에서 backbutton 클릭시 종료여부 확인메세지 출력됨.

document.addEventListener("deviceready", onDeviceReady, true);

function onDeviceReady(){
document.addEventListener("backbutton", onBackKeyDown, true);
}
function onBackKeyDown() {
    navigator.notification.confirm(msg.close, onBackKeyDownMsg, '종료', '취소, 종료');
}
function onBackKeyDownMsg(button){
if(button==2){
navigator.app.exitApp();
}
}

2. sub페이지들에서 backbutton override 없애고, 기본동작 처리하기.
위에서 처럼 device가 load된후에 
navigator.app.overrideBackbutton(false);
이부분을 추가해주면 된다.

document.addEventListener("deviceready", onDeviceReady, true);

function onDeviceReady(){
navigator.app.overrideBackbutton(false);
}


- 안드로이드, android,폰갭,phonegap,cordova, backbutton, 종료기능 -



gcm을 이용한 푸쉬알림 리스트로 보이게 하기

gcm을 이용한 푸쉬 알림 내용을 리스트로 쌓여서 보이게 하기.


gcm으로 푸쉬 알림을 보낼때 상태바에 리스트로 쌓이게 보일려면

notificationManager.notify(0, notification) 에서 첫번째 인자(푸쉬알림순번?)을 메세지 마다 다르게 주면된다.(같은번호일경우 알림메세지를 덮어버린다.)


notificationManager.notify((int)System.currentTimeMillis(), notification)


이렇게 하면 된다.



- android, phonegap, gcm, 푸쉬 알림, notification - 

HTML5의 placeholder 속성 사용하기

placeholder 속성은 한 단어나 짧은 구로 이루어진 ‘힌트’를 나타냅니다. 이러한 힌트는 사용자가 입력 상자에 데이터를 입력하는데 도움을 줍니다. 보통 아이디나 비밀번호를 입력하는 UI에서 ‘아이디를 입력하세요’나 ‘영어와 숫자로 이루어진 비밀번호를 입력하세요.’와 같은 메시지를 입력 영역의 자리에서 제공하는 경우에 사용됩니다.


다음과 같이 마크업합니다.

<input type="text" name="aaa" placeholder="이름을 입력하세요" />


스타일을 이용해서 placeholder가 세로 중간에 보이게 하려면,

line-height:normal 을 이용하면 된다.

<input type="text" name="aaa" placeholder="이름을 입력하세요"  style="line-height:normal" />


placeholder 속성은 html5에 존재하는 속성으로 Internet Explorer 를 제외한 대부분의 html5를 지원하는 브라우져에서 동작한다.


참고.

http://www.w3schools.com/tags/att_input_placeholder.asp



jquery를 이용해 텍스트 블링크(blink) 만들기

간단히 jquery를 이용해서 블링크 텍스트를 만들어보자.
해보니, 굳이 움직이는 gif로 할필요없겠다. 경우에 따라서는 css를 이용해서 순간순간 블링크 텍스트 색상도맘대로 변경할수도 있고.

<span class='icn_new'>new</span>

//블링크 시작.
var icn_blink = setInterval(function(){
$('span.icn_new').fadeOut('slow').fadeIn('slow');
},2000);

//블링크 중지가 필요할경우,  
$('span.icn_new').mouseover(function(){clearInterval(icn_blink);});

적용되는 브라우져는
ie7.0이상, firefox, crome, opera 에서 이용가능하다. 

[리눅스 명령어] 폴더별 사용량보기

du

특정 디렉토리에서 하부디렉토리까지 포함한 디스크의 사용량을 보여준다.


[사용법]


du [Option] [Files]

* Option
-a  : 디렉토리에 있는 파일 하나하나의 크기를 출력한다.
-s  : 총 사용량만 표시한다. (간단하게 전체 용량을 확인할 때는 단순하게 이 옵션을 쓰자.)

 

du -s


-k  : KiloByte 단위로 표시한다.
-h  : 용량을 사람이 보기 가장 좋게 표시한다.

[예제]
'du -a' : 현재 디렉토리의 디스크 사용량을 파일단위로 모두 출력한다.
'du -s *' : 현재 디렉토리의 첫번째 단계까지만 디스크의 사용량을 출력한다.
              'du -h --max-depth=0 *' 와 동일
'du -h --max-depth=1 '

--max-depth=1 에서 마지막의 숫자는 폴더의 깊이이다.  

[리눅스] 서버 명령어 모음

<사용자 관련>

 adduser [계정이름] : 계정생성
 passwd [계정이름] : 해당계정의 비번변경
 userdel -r [계정이름] : 계정삭제 및 계정의 파일폴더 모두 삭제(-r)
 w : 현재 사용중인 사용자
 last : 최근 이용한 접속자

 

<파일/디렉토리>

 ll : 전체폴더구조 보기
 ls : 폴더구조 간단히 보기
 ls -al : 숨긴파일 까지 다 보기
 ls [디렉토리명] : 해당 디렉토리보기
 ls [파일명 또는 일부] : 해당되는 파일만 보여주기
 
 cd : 디렉토리 이동
 chmod 755 [디렉토리] : 파일권한변경 (내꺼, 같은그룹, 전체) 


 mkdir [디렉토리] : 디렉토리생성
 mkdir -p a/b : a디렉토리 생성후 하위에 b디렉토리 생성


 rm [파일명] : 파일삭제
 rmdir [디렉토리명] : 디렉토리삭제 (파일존재시 삭제 불가)
 rm -rf [디렉토리명] : 하위 디렉토리 및 파일 까지 모두 삭제 


 touch [파일명] : 해당파일의 수정일을 현재시각으로 변경(파일없을시 빈파일 생성) 


 cp [파일1] [파일2] : 파일1을 파일2로 복사
 cp -r [디렉토리1] [디렉토리2] : 디렉토리1을 디렉토리2로 하위폴더와 파일까지 복사
 cp -a [파일1] [파일2] : 소유권을 유지하면서 복사


 move [파일/디렉토리] [디렉토리] : 파일 및 디렉토리 이동
 
 cat [파일명] : 파일내용 출력
 cat /dev/cdrom > linux.iso : CD롬에 있는 내용을 CD 이미지 파일로 만듦
 cat a.txt >> b.txt : b.txt 파일 하단에 a.txt 파일의 내용 추가
 
 more [파일명] : 파일내용을 페이지단위로 출력 (space:다음페이지, b:이전페이지)
 
 ln [해당디렉토리 또는 파일] [링크이름] : 하드링크
 ls -s [해당디렉토리 또는 파일] [링크이름] : 심볼릭링크
 
 | : 파이프로 두개의 명령을 연결시켜줌
 (예: ls -l /usr/bin | more : ls에서 검색된 파일 폴더를 페이지별로 보여줌)
 
 파일권한 (자신/그룹/나머지: 4:읽기, 2:쓰기, 1:실행)
 chown -R ohhappy.wheel /home/ohhappy/* : /home/ohhappy하위의 모든 파일 디렉토리의 소유자를 ohhappy로 그룹을 wheel로 변경
 
 mount -t iso9660 /dev/cdrom /mnt/cdrom : cdrom 마운트
 mount -t vfat /dev/fd0 /mnt/floppy : floppy 마운트
 umount /dev/cdrom 또는 umount /mnt/cdrom


  
<검색>

 find [경로] -name [파일명] : 하위경로의 파일찾기
 /[찾을 문서명] : 문서나 메뉴얼안에서 문자찾기
 which [명령어] : 명령어의 절대경로를 알려줌
 whereis [명령어] : 명령어의 바이너리, 소스, 맨페이지위치 알려줌
 
  
<시스템/프로세스 관련>

 top : 시스템 프로세스 및 메모리 및 CPU 사용량
 uname -a : 운영체제,호스트명,커널버전,시스템부팅시간,아키텍쳐 보여줌
 uname -m : cpu 보여줌
 free -m : 메모리 보여줌(-m 메가단위, -k kb단위)
 df -h : 마운트되어있는 디스크 사용량
 du --max-depth=1 -h /home : 각 계정별로 이용량 확인
 lsdev : 현재 사용중인 장치정보
 w : 현재 사용중인 사용자
 last : 최근 이용한 접속자
 date : 현재 설정된 시간
 clock : Cmos에 설정된 시간
 rdate -s soback.kornet.nm.kr : soback.kornet.nm.kr에서 시간을 전송받아 시간 수정
 clock -w : cmos 시간으로 수정
 netstat -tu : 시스템에 연결된 소켓정보 
 ifconfig : 네트웍 장치설정 정보
  
 ps -[옵션]: 현재 시스템에서 구동중인 프로세스 상태확인
 (-a:전체사용자, -l:자세히보기, -x:제어터미널이 없는 프로세스, -f:pstree명령어와 같은 프리구조로 출력)
 (상태값: D:구동일시중지중, R:구동중, S:쉬는중, T:구동정지중, Z:좀비프로세스, W:메모리를 안쓰는 스와핑상태)
 ps auxfw -width=300 : 프로세스의 사용자 확인 (주로 | more 필요)
 pstree : 구동중인 프로세스를 투리구조로 보여줌
 
 kill -9 [프로세스번호] : 프로세스 강제종료
 killall -9 [프로세스이름] : 프로세스 강제종료
 
<시스템 종료>

 init0 : 시스템 종료
 halt : 시스템 종료
 reboot : 시스템 재부팅
 
 <압축>

 tar cvf [생성될 파일명:예 httpd.tar] [묶을 디렉토리] : 설정한 디렉토리를 포함한 하위 디렉토리 및 파일을 묶음
 tar xvf [묶인파일:예 httpd.tar] : tar파일을 현재 디렉토리에 품
 tar tvf [묶인파일:예 httpd.tar] : tar파일을 풀지 않고, 파일리스트만 출력
 tar cvfz [압축파일명 :예 httpd.tar.gz] [압축할 디렉토리] : 파일을 묶어서 압축함
 tar xvfz httpd.tar.gz : tar.gz 압축해제
 tar xvfj httpd.tar.bz2 : tar.bz2 압축해제
 
<ftp>

 quit : ftp 종료
 get : 다운로드 명령
 mget : 현재폴더내 모든 파일 다운로드
 mget -R * : 현재폴더 및 하위 폴더 파일 다운로드

locate(),position()함수

Return the position of the first occurrence of substring

mysql 함수 목록.

http://dev.mysql.com/doc/refman/4.1/en/string-functions.html

[linux 명령어]여러 파일 권한 한번에 바꾸기


여러파일 권한 바꾸기
 find ./ -type f -name 파일명 -exec chmod 777 {} \;
find 디렉토리시작위치 -type 타입구분(f=팡일 ,d=directory) -name 파일명 -exec chmod 권한 {} \;

위 명령을 이용하면, 디렉토리시작위치에서 하위에 있는 모든 디렉토리에 포함된 파일을 한번에 권한 설정을 해줄수 있다.

pdo로 prodcedure 사용시 잘못된 결과값을 보여줄때.

pdo를 사용해보려고, 서버 셋팅 및 기본 코딩을 잡아 보고 있던중에
스토어드프로시져(내부에 동적쿼리로 작성)를 사용중에 결과값이 잘못가져오는 경우가 발생.
결과값이 컬럼과 value가 제대로 매칭되지 않는 문제가 발생했다.
웹 서버 버젼은 
- php  version 5.1.6
- mysql client API version 5.0.37 
이다.
이 환경에서 동적쿼리가 포함된 프로시져 사용시 결과값이 잘못 가져오는 경우가 생겨서 한참 고생했다. 구글링을 한참 하다 보니, PDO::ATTR_EMULATE_PREPARES 이부분을 프로그램에 적용후 해당 문제가 해결되었다.
정확한 이유는 모르겠으나, 대략적으로 쿼리 파싱을 PDO쪽에서 할건지 mysql서버쪽에서 할건지를 결정하는거 같다. 이부분을 동적쿼리인경우 PDO쪽에서 하도록 해줘서 해결된 문제다.(prepared를 client 또는 server쪽에서 하도록 정하는 부분인거 같은데, 서버쪽에서 하는것이 10%정도 더 효과가 있다고 한다.)
PDO에 대한 버젼에 따라서 이런 문제가 있지 않나 싶다.

프로그램 부분은

$dbh = new PDO('mysql:host=db서버;dbname=데이타베이스', '계정','비밀번호',array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES euckr"));
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);

이렇게 해주면된다.
이부분이 없이 PDO사용이 가능하다면 빼주는것이 좋다고 한다. 

이걸 해결해 볼려고, 구글링을 하다가 찾은 여러 포스트중 아래 두개 포스트에서 많은 이해를 할수 있었다.(영문이라, 나름 이해하는라 힘들었음..ㅠㅠ)
http://wezfurlong.org/blog/2006/apr/using-pdo-mysql/
http://isp-control.net/ispcp/ticket/2402
인용 : 

The "ATTR_EMULATE_PREPARES" attribute allows to emulate the prepared queries for RDBMS that don't support this feature. By default, emulation is actives (ATTR_EMULATE_PREPARES == TRUE). That means that the queries will not be prepared by the Mysql Server (Server-Side) but by PDO (Client-Side). The final result is identical, all the parameters are automatically quoted and so, we have not problem with SQL injection in both cases.

Now, what is the subject here ? What the difference with the native and emulated support for prepared queries ?

Some RDBMS don't support prepared queries. That means that the queries will be prepared by PDO (

Client-Side

) and not by the Server (

Server-side

). The final result is the same but for performances reasons, it's better to use native support when it's possible. Indeed, for example, with Mysql, we can take 10 % free.

Th remaining problem with Mysql is that for versions prior 5.1.17 (in reality 5.1.21 for us), the prepared queries can't be cached. So, we have 10 % free but we lost 20 - 35 %...

That for why, the native support should be used when possible (only with Mysql server >= 5.1.21 (for us).

To resume, the parameter ATTR_EMULATE_PREPARES should be set to TRUE for Mysql server version prior 5.1.21 and to FALSE for other versions. By default the ATTR_EMULATE_PREPARESis set to TRUE.

TRUE: Support for prepared queries is emulated. FALSE: Support for prepared queries is not emulated. The native support is used.
 

나중에 서버 php버젼을 업그래이드 하게되면, 다시한번 살펴봐야겠다.


 

pdo_mysql 확장 모듈 올리기

pdo_mysql을 이용하기 위해서 pdo_mysql 확장모듈을 서버에 설치해보자.
(개개의 서버마다 서버 설정 및 모듈 설치 경로가 다를수 있으니, 이부분은 환경에 맞게 확인을 해서 설치를 한다.)

linux 웹서버에 로그인한후,
//pdo확장모듈을 다운받을경로로 이동
#cd /usr/local/src
//pdo확장모듈 최신 다운.
#wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz 
//압축해제.
#tar -xzvf PDO_MYSQL-1.0.2.tgz
//압축해제한 pdo모듈 dir로 이동.
#cd PDO_MYSQL-1.0.2
//phpize(php의 확장모듈을 올리는 유틸)위치 확인
#whereis phpize  (whereis로 못찾을경우 find -name phpzie 으로 찾아본다)
#/usr/local/bin/phpize
//php-config 위치 확인
#whereis php-config
//설치하기
#./configure --with-php-config=/usr/local/bin/php-config --with-pdo-mysql=/usr/local/mysql
#make
#makeinstall
//extension dir로 이동후 pdo_mysql.so 존재여부확인.
#cd /usr/local/lib/php/extenstions/no-debug-zts-2006613
#ls pdo_mysql.so

여기까지 pdo_mysql 확장모듈 설치가 끝났다.
이제 프로그램에서 실제로 사용하기 위해서 php.ini 추가를 해준다.

//php.ini에
#vi /usr/local/apache/conf/php.ini
extension=pdo_mysql.so 추가
//아파치 리스타트

이제 pdo를 맘껏 사용해보자...^^


*phpize ?
이건, php 확장 모듈을 php재컴파일을 하지 않고 설치해주는 유틸이란다.
사용방법은 위에 pdo_mysql 설치 예시에서 처럼,
phpize 실행 --> ./configure 환경설정 --> make 를 해주면된다고 한다.


mysql charset 문제로 한글깨질때. latian1 -> euckr

mysql 서버의 charset 문제로 한글이 깨져 보이는 경우가 있다.
이때, 테이블별로 charset을 변경해줘서 한글이 깨지는 문제를 해결하기 위해 아래와 같이 하면, db전체를 dump받아서 변경하지 않아도 된다. 다만, 변경해야할 table이 많이면 좀 힘들것이다.

가정.
table : university , charset latin1
한글이 깨진 컬럼 : u_name

- 해당 컬럼을 binary 또는  blob 형식을 변경한다. (mysql메뉴얼의 의하면, binary형식으로 별도의 컨버젼이 일어나지 않아서 올바른 형전환을 할수 있다고 한다.... 참고, http://dev.mysql.com/doc/refman/5.1/en/alter-table.html)
- 해당컬럼을 다시 원래의 형식을 변경하고 collate를 원하는 형식으로 지정한다.
- 해당 테이블을 원하는 charset으로 변경한다.
ex)
alter
table university modify u_name blob; alter table university modify u_name varchar(150) collate euckr_korean_ci; alter table university convert to charset euckr;

이렇게 한후 조회를 해보면, 한글이 잘 보일것이다.

중복되지 않는 랜덤 숫자 가져오기

배열처리중 중복되지 않는 순번으로 출력시키기.
총 10개의 데이타중에 중복되지 않게 5개를 가져오기.

$total_cnt = 10;
$k_nums = range(0,$total_cnt-1);
shuffle($k_nums);                       
for($i=0;$i<$row_cnt;$i++){
    if($i>5)    break;
    $k=$k_nums[$i];        //랜덤 번호 가져오기.
    echo $k ."\t";
}

이런게 필요할때가 있다.
db에서 랜덤으로 뽑으면 좋겠지만, 그렇지 못한경우 위와 같이 하면 중복되지않게 출력을 할수 있다.

PDO 소개 및 예제

PDO에 대해서 소개해주는 곳이다.

http://docs.cena.co.kr/?mid=textyle&document_srl=11910
http://kr.php.net/manual/kr/book.pdo.php
http://www.phpwelt.net/handbuecher/korean/ref.pdo.html

--PDO설치하기.
http://www.barney.pe.kr/blog/1181
http://ezgreg.tistory.com/46

MySQLi VS PDO

원글 : http://wildchry.tistory.com/81

php5버전에 추가된 mysqli와 PDO에 관한 테스트를 찾아보았습니다.
역시 친절하게도 결과를 잘 올려놓은 사이트가 있네요.

대충 보니 mysqli가 select 속도가 더 빠르네요. insert 속도는 prepared statements를 아용할경우 pdo가 더 빠른것을 알수 있으나 왜 그런지는 잘 모르겠네요.^^; 어쨌든 insert 문에서는 Prepared Statements사용하는거를 고려해 보면 좋을듯 합니다.
그리고 다수의 insert를 할때는 MySQL의 extended inserts를 이용하면 훨신 빠르네요. 아무래도 Query문이 하나로 처리가 되니 그렇치 않을까 생각이 듭니다. 흥미로운 부분이네요....

mysqli를 사용하기 위한 php 컴파일 옵션은 2가지가 있는것으로 보이네요.
  --with-mysqli[=FILE]    Include MySQLi support.  FILE is the optional pathname 
                          to mysql_config [mysql_config]
  --enable-embedded-mysqli  MYSQLi: Enable embedded support

참조 :
http://dealnews.com/developers/php-mysql.html
http://brian.moonspot.net/2006/08/25/pdo-turbo-button/

MySQL - mysqli 를 사용할 수 없을때 멀티쿼리 및 MYSQL 내부 변수 선언 활용

원글 : http://www.lovelgw.com/Blog/143  

웹 개발시에  불필요한 내부 질의를 없애기 위해 MySQL 내부 변수를 활용하고 또, mysqli가 지원하지 않는 서버에서 멀티 쿼리를 이용하는 방법이다. 

실제적으로 mysqli_multi_query에서 사용하는 방식은 아니지만 해당 쿼리에 대한 질의를 버퍼링 하지 않고 그대로 다음 행으로 진행을 한다. 

내부 변수 사용은 질의 내용에서 사용되는 값이 계속적으로 질의 하거나 또는 서브쿼리를 지원하기 힘든 MySQL 4.0 이하 서버에서 활용 가능하다. 

내부 변수는 PHP에서의 커넥션 에서만 유효하다. 한 커넥션이 끊기면 그 이후에는 다시 선언을 해주어야 한다. 

내부 변수 활용으로 얻는 잇점은 활용면에서 많다.
01.// MySQL 내부변수를 초기화 시킨다.
02.$strQuery = 'set @nCnt = 0;';
03. 
04.// 질의 결과행을 버퍼링 하지 않는 mysql_unbuffered_query로 질의 한다.
05.mysql_unbuffered_query($strQuery, $rConn);
06. 
07.// 변수에 값을 넣는다.
08.$strQuery = 'select @nCnt:=count(fieldname) from tablename;';
09. 
10.// 질의 결과행을 버퍼링 하지 않는 mysql_unbuffered_query로 질의 한다.
11.mysql_unbuffered_query($strQuery, $rConn);
12. 
13.// 변수에 설정된 값을 이용해 질의 한다.
14.$strQuery= 'SELECT ROUND((count(fieldname) / @nCnt) * 100, 3) AS percent FROM tablename GROUP By fieldtype;';
15. 
16.// 결과를 출력한다.
17.$rRes = mysql_query($strQuery, $rConn);
18.while($arrTest = mysql_fetch_assoc($rRes))
19.{
20.var_dump($arrTest);
21.}
22.mysql_free_result($rRes);
ㅟ와 같이 PHP 에서 내부변수를 활용하는 방식이다. 위 예제는 전체 row수를 구한 후에 해당 타입에 대한 비율을 구하는 방식으로 SubQuery 를 이용하지 않고 내부 변수에 저장된 전체 row수를 이용해 비율을 구한것이다. 

보통 PHP에서 그 결과를 가지고 다시 계산하는 것 보다는 MySQL 에서 결과 값만을 가지고출력하는것이 전체적은 퍼포먼스에 더 좋은 성능을 나타낸다.