'분류 전체보기'에 해당되는 글 80건

git 가편 사용법 펌

PHP 2012. 4. 9. 09:44

만든이: Roger Dudler
도와준 이들: @tfnico, @fhdNamics
다른 언어로도 있어요: english, deutsch, español, français, italiano, nederlands,
português, русский, 日本語, 中文
문제 보고는 여기(github)로!

자, 갑시다!

새로운 저장소 만들기

폴더를 하나 만들고, 그 안에서 아래 명령을 실행하세요.
git init
새로운 git 저장소가 만들어집니다.

저장소 받아오기

로컬 저장소를 복제(clone)하려면 아래 명령을 실행하세요.
git clone /로컬/저장소/경로
원격 서버의 저장소를 복제하려면 아래 명령을 실행하세요.
git clone 사용자명@호스트:/원격/저장소/경로

작업의 흐름

로컬 저장소는 git이 관리하는 세 그루의 나무로 구성돼있어요.
첫번째 나무인 작업 디렉토리(Working directory)
실제 파일들로 이루어져있고, 두번째 나무인 인덱스(Index)
준비 영역(staging area)의 역할을 하며, 마지막 나무인 HEAD
최종 확정본(commit)을 나타내요.

로컬 저장소는 이렇게 생겼어요.

추가와 확정(commit)

변경된 파일은 아래 명령어로 (인덱스에) 추가할 수 있어요.
git add <파일명>
git add *
이것이 바로 git의 기본 작업 흐름에서 첫 단계에 해당돼요.
하지만 실제로 변경 내용을 확정하려면 아래 명령을 내려야 한답니다.
git commit -m "이번 확정본에 대한 설명"
자, 이제 변경된 파일이 HEAD에 반영됐어요.
하지만, 원격 저장소에는 아직 반영이 안 됐답니다.

변경 내용 발행(push)하기

현재의 변경 내용은 아직 로컬 저장소의 HEAD 안에 머물고 있어요.
이제 이 변경 내용을 원격 서버로 올려봅시다. 아래 명령을 실행하세요.
git push origin master
(다른 가지를 발행하려면 master를 원하는 가지 이름으로 바꿔주세요.)

만약 기존에 있던 원격 저장소를 복제한 것이 아니라면,
원격 서버의 주소를 git에게 알려줘야 해요.
git remote add origin <원격 서버 주소>
이제 변경 내용을 원격 서버로 발행할 수 있어요.

가지(branch)치기

가지는 안전하게 격리된 상태에서 무언가를 만들 때 사용해요.
여러분이 저장소를 새로 만들면 기본으로 master 가지가 만들어집니다.
이제 다른 가지를 이용해서 개발을 진행하고, 나중에 개발이 완료되면
master 가지로 돌아와 병합하면 돼요.

가지치기 예제를 보여드리죠.

아래 명령으로 "feature_x"라는 이름의 가지를 만들고 갈아탑니다.
git checkout -b feature_x
아래 명령으로 master 가지로 돌아올 수 있어요.
git checkout master
아래 명령으로는 가지를 삭제할 수 있어요.
git branch -d feature_x
여러분이 새로 만든 가지를 원격 저장소로 전송하기 전까지는
다른 사람들이 접근할 수 없어요.
git push origin <가지 이름>

갱신과 병합(merge)

여러분의 로컬 저장소를 원격 저장소에 맞춰 갱신하려면
아래 명령을 실행하세요.
git pull
이렇게 하면 원격 저장소의 변경 내용이 로컬 작업 디렉토리에
받아지고(fetch), 병합(merge)된답니다.
다른 가지에 있는 변경 내용을 현재 가지(예를 들면, master 가지)에
병합하려면 아래 명령을 실행하세요.
git merge <가지 이름>
첫번째 명령이든 두번째 명령이든, git은
자동으로 변경 내용을 병합하려고 시도해요.
문제는, 항상 성공하는 게 아니라 가끔
충돌(conflicts)이 일어나기도 한다는 거예요.
이렇게 충돌이 발생하면, git이 알려주는 파일의 충돌 부분을
여러분이 직접 수정해서 병합이 가능하도록 해야 하죠.
충돌을 해결했다면, 아래 명령으로 git에게
아까의 파일을 병합하라고 알려주세요.
git add <파일명>
변경 내용을 병합하기 전에, 어떻게 바뀌었는지 비교해볼 수도 있어요.
git diff <원래 가지> <비교 대상 가지>

꼬리표(tag) 달기

소프트웨어의 새 버전을 발표할 때마다 꼬리표를 달아놓으면 좋아요.
(물론 꼬리표는 SVN 등에 이미 존재하는 기능이지요.)
아래 명령을 실행하면 새로운 꼬리표인 1.0.0을 달 수 있어요.
git tag 1.0.0 1b2e1d63ff
위 명령에서 1b2e1d63ff 부분은 꼬리표가 가리킬 확정본 식별자입니다.
아래 명령으로 확정본 식별자를 얻을 수 있어요.
git log
확정본 식별자의 앞부분 일부만 입력해도 꼬리표를 붙일 수 있지만,
그 일부분이 반드시 고유하다는 조건이 필요해요.

로컬 변경 내용 되돌리기

만약 여러분이 (물론 그럴 일은 없겠지만 ;) 실수로 무언가 잘못한 경우,
아래 명령으로 로컬의 변경 내용을 되돌릴 수 있어요.
git checkout -- <파일명>
위 명령은 로컬의 변경 내용을 변경 전 상태(HEAD)로 되돌려줘요.
다만, 이미 인덱스에 추가된 변경 내용과
새로 생성한 파일은 그대로 남는답니다.

만약, 로컬에 있는 모든 변경 내용과 확정본을 포기하려면,
아래 명령으로 원격 저장소의 최신 이력을 가져오고,
로컬 master 가지가 저 이력을 가리키도록 할 수 있어요.
git fetch origin
git reset --hard origin/master

유용한 힌트

git의 내장 GUI
gitk
콘솔에서 git output을 컬러로 출력하기
git config color.ui true
이력(log)에서 확정본 1개를 딱 한 줄로만 표시하기
git config format.pretty oneline
파일을 추가할 때 대화식으로 추가하기
git add -i

'PHP' 카테고리의 다른 글

PHP 코딩 팁  (0) 2012.04.23
PHP 난수 (시리얼 만들기)  (2) 2012.04.09
PHP class 정리  (0) 2012.03.30
PHP file 정리  (0) 2012.03.30
PHP DATE 정리~  (0) 2012.02.08
블로그 이미지

스마트전

,
자바스크립트에서 parseInt를 사용 시 주의사항입니다.
특히 자바를 사용하셨던 분은 더 혼동이 될 수도 있습니다. 
자바에서는 Integer.parseInt(String s)를 사용하여 문자를 숫자로 형 변환시 10진수로 변환이 됩니다.
하지만 자바스크립트에서는 무조건 10진수로 변경되지는 않습니다.
자바스크립트에서 parseInt('08')를 하시고 결과 값을 확인하시면 결과는 0이 나옵니다.
이유는 입력되는 문자열이 0으로 시작되었기 때문에 8진수로 변환이 되는 것 입니다.
당연히 8이겠지 하고 결과값을 예측하시고 코딩을 하셨다면 큰 낭패일 수 있습니다.
간단한 예로 
document.write(parseInt("010")+ "<br />"); //8진수 변환
document.write(parseInt("0x10")+ "<br />"); //16진수 변환
해결 방법은 간단합니다.
1번째 인수 다음 2번째 인수에 변환될 진수를 적어 주시면 됩니다.
document.write(parseInt("10",10)+ "<br />"); //10진수 변환
document.write(parseInt("10",8)+ "<br />"); //8진수 변환
document.write(parseInt("10",16)+ "<br />");  //16진수 변환
또는 Number("08")를 사용하시면 10진수로 변환됩니다.
parseInt로 게시판 검색해 봤는데 해당 내용이 없어서 올림니다.
가볍게 넘길수 있는지만 결과에 큰 오류를 가져올 수 있는 오류입니다.
블로그 이미지

스마트전

,
리더, 갤러리

페이지 이동


오늘의 교훈 : 삽질하지 말고 갖다 쓰다 -_- ;;;

'MobileWeb' 카테고리의 다른 글

view port 및 주소 올리기  (0) 2011.07.29
블로그 이미지

스마트전

,

php Heredoc

카테고리 없음 2012. 3. 30. 12:24

썩 바람직한 방법은 아니지만

때로는 여러 줄의 문자열을 변수에 대입할 필요가 있다.

보통은 큰따옴표(")나 작은 따옴표(')에 씌워서 대입을 한다.

 

하지만 PHP에는 이런 경우를 위해서 Heredoc이라는 기능을 제공한다.

아래 이미지를 보자

 

 

위 이미지에서 빨간색 사각형 안의 구문을 유심히 보라.

기존의 따옴표로 씌우는 대신에

시작을 <<< 라는 구문으로 한다.

<<< 이후에 나오는 식별자는 영문자 또는 언더바(_)로 시작하는

원하는 문자열로 만들 수 있다.

 

대신에 여러 줄의 문자열의 끝에

위에서 입력했던 식별자를 그대로 써 주어야 한다.

 

예를 들면

$doc = <<<thisDoc1

Hello

World

!!!

thisDoc1;

 

이런 식이다.

 

Heredoc의 장점은, 위 이미지에서 보듯이

Editplus와 같은 텍스트에디터에서

Heredoc으로 둘러싸인 문자열 코드를 알아보기 쉽게

구문강조하여 준다는 것이다.

 

참고로, Heredoc은 작은 따옴표(')가 아닌 큰 따옴표(")의 역할을 한다.

즉, Heredoc 안의 내용을 파싱하기 때문에, 변수도 파싱한다는 것이다.

 

참고링크 : http://www.php.net/manual/kr/language.types.string.php

 

블로그 이미지

스마트전

,

PHP class 정리

PHP 2012. 3. 30. 12:20

PHP는 OOP(Object Oriented Programming) 즉 객체지향 프로그래밍 언어로써 class 사용이 가능합니다. 그 사용법이나 쓰임새는 JAVA의 그것과 매우 흡사하여 JAVA를 공부하신 분들은 쉽게 익히실 수 있습니다. 그럼 지금부터 class 사용법을 간략히 알아보겠습니다.

 

1. class 선언

class aaa{ //함수를 정의하는 것과 같은 방식으로 class를 선언합니다. 다만, 선언된 class로 객체를 만들면 독립적으로 활동하므로 함수의 인자와 같은것은 없습니다.

 

var $aaa_mv; //맴버변수(member variable) 정의합니다. class 안에서 정의된 변수를 맴버변수라고 합니다.

 

function aaa1(){ //메서드(method) 정의합니다. class 안에서 정의된 함수를 메서드라고 합니다.

     echo "class선언";

}

 

}

 

$aaa_rv = new aaa; //메모리상에 인스턴스(객체)를 생성하기 위해서는 new 연산자를 이용해서 명시적으로 생성을 해주어야 합니다. 이렇게 생성된 인스턴스를 가리키는 변수가 레퍼런스 변수(Reference Variable)입니다. 그렇다면 class 만 정의 하면 되지, 인스턴스 생성은 왜 필요한가? 이것은 class 자체는 객체를 정의한 것에 불과하고, 실제로 사용되기 위해서는 메모리상에 올라와야 하기 때문입니다. 그리고 여기서 절대 혼동해서 안되는 것은 레퍼런스 변수인 $rv 는 그 자체로 객체가 아니라 인스턴스 즉, 객체를 가리키는 역할만 한다는 것입니다.

$aaa_rv -> aaa1(); //연산자 -> 를 사용하여 위에서 정의한 aaa1()를 호출합니다. JAVA에서는 '레퍼런스변수.메서드' 로 사용합니다. 여기서 '.' 이 PHP에서는 '->' 입니다.

 

*앞으로 '인스턴스'와 '객체'는 같은 뜻으로 혼용하여 사용하겠습니다.

 

2. $this(의사-변수)

class aaa{  

 

var $aaa_mv;  

 

function aaa1(){

echo $this->aaa_mv; //$this는 aaa의 인스턴스 즉, 자신을 가리킵니다. class 밖에서는 레퍼런스 변수를 사용해서 인스턴스에 접근하고 class 안에서는 $this로 인스턴스에 접근합니다.

}

 

}

 

$rv = new aaa;

$rv -> aaa_mv = "의사-변수"; //레퍼런스 변수를 이용하여 맴버변수에 접근하는 방법입니다. JAVA에서는 '레퍼런스변수.맴버변수' 로 사용합니다. 여기서 '.' 이 PHP에서는 '->' 입니다.

$rv -> aaa1();


*맴버변수를 선언하지 않고 의사-변수에 바로 값을 넣고 사용해도 문제가 발생하지 않으나 올바른 방법은 아닙니다.

 

3. ::(영역 해결 연산자)

class aaa{  

 

var $aaa_mv = "영역 해결 연산자"; 

 

function aaa1(){

echo "영역 해결 연산자";

}

 

}

 

aaa :: aaa1(); //영역 해결 연산자 '::' 는 new연산자로 인스턴스를 생성하지 않은 상태에서 class 자체의 함수를 사용하고 싶을 때 사용합니다. 그리고 class 함수는 존재하지만, class 변수는 존재하지 않습니다. 왜냐하면 인스턴스가 생성되지 않았기 때문에 의사-변수 $this 로 class 변수 즉, 맴버변수에 접근할 수 없기 때문입니다. 하지만 맴버변수 정의시 static을 주면 전역변수가 되어서 aaa :: $aaa_mv; 와 같이 사용할 수 있다.

 

4. extends(상속) // 상속이란 이미 만들어진 class(상위class)의 기능을 그대로 물려받는 새로운 class(하위class)를 만들고 싶을 때 사용합니다. 상위class를 그대로 물려받은 상태에서 맴버변수와 메소드를 조금 더 추가하여 하위class를 만듭니다.

class aaa{ //상위class 선언

 

var $aaa_mv; 

function aaa1(){

echo "aaa";

}

 

}

 

class bbb extends aaa{ //하위class 선언

 

var $bbb_mv; 

function bbb1(){

echo "bbb";

}

 

}

 

$bbb_rv = new bbb;

$bbb_rv -> aaa1(); //class bbb는 class aaa로 부터 상속 받았기에 레퍼런스변수 $bbb_rv로 class aaa의 aaa1() 함수를 호출할 수 있습니다. 

 

5. Method Overring(메서드 오버라이딩) // 상속받은 하위class는 상위class의 메서드에 접근할 수 있습니다. 그런데 하위class에서 메서드의 이름은 같지만 동작은 다르게 해야 할 경우는 어떻게 해야 할까요? 이때 메서드 오버라이딩을 사용합니다. 지금부터 사용방법을 설명하겠습니다. 일단 하위class에 사용하고자 하는 상위class의 메소드의 이름과 똑같이 정의 합니다. 그 안에 기능만 바꾸만 메서드 호출시 하위class에서 정의된 기능으로 구현됩니다.

class A {


function example() { //하위class의 메서드 이름과 같습니다.
echo "aaa";
}


}

class B extends A {


function example() { //상위class의 메서드 이름과 같습니다.
echo "bbb";
}


}

 

$b = new B;
$b->example(); //상위class와 하위class 모두 example()라는 같은 메서드를 가지고 있지만 여기서 메서드 오버라이딩되어서 하위class의 메서드가 구현됩니다.

 

*상위,하위class 메소드 작성시 인자는 될 수 있으면 같아야 합니다. (JAVA와는 달리 인자가 다르더라도 에러는 발생하지는 않습니다만) 하지만, 메서드를 호출할 때 하위class의 인자와 같아야 합니다. 예를 들어 위의 하위class가 fuction example($var){ 로 정의 되어 있다면 메서드 호출시에도 $b->example("인자 값"); 와 같이 인자개수를 맞추어야 합니다. (메서드 호출시 보내는 인자개수는 하위class에서 작성된 인자개수보다 많아도 에러가 발생하지 않지만, 그 반대가 되면 에러가 발생하므로 유의하시기 바랍니다.)


*JAVA에서의 Method Overloading(메서드 오버로딩)의 개념은 PHP에 없습니다. Cannot redeclare 라고 에러가 발생합니다.

 

6. 메서드 오버라이딩 구현시 상위class 메서드에 접근하기 위한 parent 사용 //하위class에서 메서드 오버라이딩을 해주게 되면, 상위 클래서의 해당 메서드의 직접적인 호출이 불가능합니다. 하지만 오버라이딩된 상위class의 메서드를 호출해야 하는 경우가 종종 있습니다. 이렇게 상위class에 접근하기 위해서 parent를 사용합니다. parent를 사용하면 상위class 명을 사용하는 것을 피할 수 있습니다. 그리고 parent를 메서드 오버라이딩이 아니더라도 상위class에 접근하기 위한 방법으로 사용할 수 있으나, 그때는 $this->메서드 와 같이 사용하면 됨에 따라 굳이 parent를 사용할 필요는 없습니다.

class A {


function example() { //하위class의 메서드 이름과 같습니다.
echo "aaa";
}


}

class B extends A {


function example() { //상위class의 메서드 이름과 같습니다.
parent::example(); //상위class인 A는 인스턴스가 생성되지 않았기 때문에 인스턴스로 접근할 방법이 없습니다. 따라서 영역 해결 연산자'::'를 사용합니다. parent는 JAVA에서 super와 비슷한 역할을 한다고 볼 수 있습니다.

}


}

 

$b = new B;
$b->example(); //메서드 오버라이딩이된 하위class의 메서드가 구현되지만, 그 메서드가 다시 상위class 메서드를 구현하여 "aaa"이 출력됩니다.

 

7. 맴버변수 상수가 아닌 값으로 초기화

class aaa{  

 

 var $aaa_mv = "상수"; //이렇게 맴버변수 선언시 바로 값을 주면 상수로 초기화 됩니다.

 

function aaa1(){

echo $this->aaa_mv;

}

 

}

 

$rv = new aaa;

$rv -> aaa_mv = "상수가 아닌 값"; //이렇게 맴버변수를 먼저 선언하고 따로 값을 주면 상수가 아닌 값으로 초기화 됩니다.

$rv -> aaa1();

 

8. 접근 제어자

public : 아무 객체나 접근가능

protected : 상속 관계까지 접근가능

private : 외부 객체 접근불가

*var는 variable의 약자로 단지, 일반적으로 맴버변수를 정의 할때 사용하는 default입니다. 접근제어자 측면에서의 그 기능은 public과 비슷하다고 할 수 있으나 완전히 같지는 않습니다. PHP5 로 가면서 class기능이 더욱 강화되었고 그러므로 앞으로는 var보다 위의 정확한 접근 제어자를 주는 것이 유익합니다.

 

class A {
 
protected $a = "접근제어자"; //protected 로 맴버변수 정의


}

 

class B extends A {
 
function example() {
echo $this->a; //protected 는 상속관계까지 접근을 허용함으로 출력이 됩니다.
}


}

 

$b = new B;
$b->example();
echo $b->a; //외부에서 호출을 하고 있으므로 에러가 발생한다. 이때 상위class의 맴버변수를 public으로 선언하면 출력이 됩니다.

 

자바랑 거의 비슷하네..

'PHP' 카테고리의 다른 글

PHP 난수 (시리얼 만들기)  (2) 2012.04.09
git 가편 사용법 펌  (0) 2012.04.09
PHP file 정리  (0) 2012.03.30
PHP DATE 정리~  (0) 2012.02.08
PHP 배열 정리  (0) 2012.02.03
블로그 이미지

스마트전

,

PHP file 정리

PHP 2012. 3. 30. 12:14
 int fopen(string filename, string mode)

file을 열기위해 사용하는 함수입니다. 함수의 첫번째 parameter로 file이름이 들어가며 두번째 parameter로는 file을 어떻게 열것인지를 지정하는 지정값이 필요합니다.

fopen()함수 사용시 지정할 수 있는 mode값으로는 다음과 같습니다.

 r  읽기, file pointer는 file의 시작에 위치
 r+  읽기 쓰기, file pointer는 file의 시작에 위치
 w  쓰기, file pointer는 file의 시작에 위치
 w+  읽기, 쓰기, file pointer는 file의 시작에 위치
 a  쓰기, file pointer는 file의 끝에 위치
 a+  쓰기, file pointer는 file의 끝에 위치

w과 w+는 지정한 file이 존재하지 않는 경우 신규로 file을 생성하며 file이 있으면 내용을 모두 지워버립니다. 하지만 a나 a+는 file이 존재하지 않는 경우에만 신규로 생성하고 존재하는 경우 내용을 보존하고 pointer를 맨 끝으로 보내게 됩니다.

fopen()으로 file열기에 성공하게 되면 실제 file을 다루게 되는 pointer를 반환하고 그렇지 않으면 false를 반환하게 됩니다.

 int fputs(int filepointer, string s)

file pointer가 지정하고 있는 file에 문자열 내용을 쓰기위한 함수입니다. 이 함수를 사용할때는 첫번째 parameter로 file pointer를 두번째 parameter로 쓰고자 하는 내용의 문자열을 지정합니다.

 string fgets(int fileopinter, int length)

file pointer가 지정하고 있는 file에서 내용을 읽어오는 함수입니다. 이 함수의 첫번째 parameter로 file pointer를 지정해야 하며 두번째 parameter에서 얼마만큼의 내용을 읽어올지 나타내는 길이를 지정합니다. fgets함수는 length - 1byte 만큼 읽거나 리턴혹은 파일의 끝에 도달하면 읽기를 중지하고 읽은 값을 그대로 반환합니다.

만약 정상적으로 읽기에 실패하면 false를 반환하게 됩니다.

 bool fclose(int filepointer)

fopen() 함수로 file을 열어서 필요한 작업을 수행된 뒤 마무리를 지으려면 fclose로 file을 닫아야 합니다. 이 함수가 필요로 하는 유일한 parameter는 fopen()함수에서 반환받은 file pointer이며 file닫기에 실패하는 경우 false값을 반환합니다.

만일 fclose()로 file을 제때 닫아주지 않으면 다른 사용자나 process가 해당 file에 접근할 수 없게 됩니다. fopen()함수는 file을 열고서 다른 쪽에서 file에 접근할 수 없도록 rock을 걸어두기 때문입니다.


위는 sample1.txt과 sample.txt file에 대해 읽고 쓰기를 작업하는 예제입니다. 먼저 fopen을 통해 file을 열고 fgets()과 fputs()로 file 작업을 수행한 뒤 fclose로 file을 닫아줍니다. 보시면 아시겠지만 처음 file을 open한 이 후 부터는 오로지 file pointer(예제에서는 $cusFile)를 대상으로 file작업을 수행하게 됩니다.

 

'PHP' 카테고리의 다른 글

git 가편 사용법 펌  (0) 2012.04.09
PHP class 정리  (0) 2012.03.30
PHP DATE 정리~  (0) 2012.02.08
PHP 배열 정리  (0) 2012.02.03
PHP JSON 처리  (0) 2012.02.02
블로그 이미지

스마트전

,

jquery 유효성 검사

jQuery 2012. 2. 9. 14:01
<form action="" class="form">
	<p>(*) 항목은 반드시 입력해 주세요.</p>
	<ul>
		<li>
			<label for="uid">ID(*):</label>
			<input id="uid" />
			영문, 숫자, 언더스코어(_), 하이픈(-)이 포함된 3~16 문자.
		</li>
		<li>
			<label for="upw">PW(*):</label>
			<input id="upw" type="password" />
			영문, 숫자, 언더스코어(_), 하이픈(-)이 포함된 6~18 문자.
		</li>
		<li>
			<label for="mail">Email(*):</label>
			<input id="mail" value="@" />
		</li>
		<li>
			<label for="url">Web(*):</label>
			<input id="url" value="http://" />
		</li>
		<li>
			<label for="tel">Tel(*):</label>
			<input id="tel" />
			하이픈(-)은 입력하지 마세요.
		</li>
	</ul>
	<input type="submit" value="전송" />
</form>

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
// <![CDATA[
jQuery( function($) { // HTML 문서를 모두 읽으면 포함한 코드를 실행

	// 정규식을 변수에 할당
	// 정규식을 직접 작성할 줄 알면 참 좋겠지만
	// 변수 우측에 할당된 정규식은 검색하면 쉽게 찾을 수 있다
	// 이 변수들의 활약상을 기대한다
	// 변수 이름을 're_'로 정한것은 'Reguar Expression'의 머릿글자
	var re_id = /^[a-z0-9_-]{3,16}$/; // 아이디 검사식
	var re_pw = /^[a-z0-9_-]{6,18}$/; // 비밀번호 검사식
	var re_mail = /^([\w\.-]+)@([a-z\d\.-]+)\.([a-z\.]{2,6})$/; // 이메일 검사식
	var re_url = /^(https?:\/\/)?([a-z\d\.-]+)\.([a-z\.]{2,6})([\/\w\.-]*)*\/?$/; // URL 검사식
	var re_tel = /^[0-9]{8,11}$/; // 전화번호 검사식

	// 선택할 요소를 변수에 할당
	// 변수에 할당하지 않으면 매번 HTML 요소를 선택해야 하기 때문에 귀찮고 성능에도 좋지 않다
	// 쉼표를 이용해서 여러 변수를 한 번에 선언할 수 있다
	// 보기 좋으라고 쉼표 단위로 줄을 바꿨다
	var
		form = $('.form'),
		uid = $('#uid'),
		upw = $('#upw'),
		mail = $('#mail'),
		url = $('#url'),
		tel = $('#tel');

	// 선택한 form에 서밋 이벤트가 발생하면 실행한다
	// if (사용자 입력 값이 정규식 검사에 의해 참이 아니면) {포함한 코드를 실행}
	// if 조건절 안의 '정규식.test(검사할값)' 형식은 true 또는 false를 반환한다
	// if 조건절 안의 검사 결과가 '!= true' 참이 아니면 {...} 실행
	// 사용자 입력 값이 참이 아니면 alert을 띄운다
	// 사용자 입력 값이 참이 아니면 오류가 발생한 input으로 포커스를 보낸다
	// 사용자 입력 값이 참이 아니면 form 서밋을 중단한다
	form.submit( function() {
		if (re_id.test(uid.val()) != true) { // 아이디 검사
			alert('[ID 입력 오류] 유효한 ID를 입력해 주세요.');
			uid.focus();
			return false;
		} else if(re_pw.test(upw.val()) != true) { // 비밀번호 검사
			alert('[PW 입력 오류] 유효한 PW를 입력해 주세요.');
			upw.focus();
			return false;
		} else if(re_mail.test(mail.val()) != true) { // 이메일 검사
			alert('[Email 입력 오류] 유효한 이메일 주소를 입력해 주세요.');
			mail.focus();
			return false;
		} else if(re_url.test(url.val()) != true) { // URL 검사
			alert('[Web 입력 오류] 유효한 웹 사이트 주소를 입력해 주세요.');
			url.focus();
			return false;
		} else if(re_tel.test(tel.val()) != true) { // 전화번호 검사
			alert('[Tel 입력 오류] 유효한 전화번호를 입력해 주세요.');
			tel.focus();
			return false;
		}
	});

	// #uid, #upw 인풋에 입력된 값의 길이가 적당한지 알려주려고 한다
	// #uid, #upw 다음 순서에 경고 텍스트 출력을 위한 빈 strong 요소를 추가한다
	// 무턱대고 자바스크립트를 이용해서 HTML 삽입하는 것은 좋지 않은 버릇
	// 그러나 이 경우는 strong 요소가 없어도 누구나 form 핵심 기능을 이용할 수 있으니까 문제 없다
	$('#uid, #upw').after('<strong></strong>');

	// #uid 인풋에서 onkeyup 이벤트가 발생하면
	uid.keyup( function() {
		var s = $(this).next('strong'); // strong 요소를 변수에 할당
		if (uid.val().length == 0) { // 입력 값이 없을 때
			s.text(''); // strong 요소에 포함된 문자 지움
		} else if (uid.val().length < 3) { // 입력 값이 3보다 작을 때
			s.text('너무 짧아요.'); // strong 요소에 문자 출력
		} else if (uid.val().length > 16) { // 입력 값이 16보다 클 때
			s.text('너무 길어요.'); // strong 요소에 문자 출력
		} else { // 입력 값이 3 이상 16 이하일 때
			s.text('적당해요.'); // strong 요소에 문자 출력
		}
	});

	// #upw 인풋에서 onkeyup 이벤트가 발생하면
	upw.keyup( function() {
		var s = $(this).next('strong'); // strong 요소를 변수에 할당
		if (upw.val().length == 0) { // 입력 값이 없을 때
			s.text(''); // strong 요소에 포함된 문자 지움
		} else if (upw.val().length < 6) { // 입력 값이 6보다 작을 때
			s.text('너무 짧아요.'); // strong 요소에 문자 출력
		} else if (upw.val().length > 18) { // 입력 값이 18보다 클 때
			s.text('너무 길어요.'); // strong 요소에 문자 출력
		} else { // 입력 값이 6 이상 18 이하일 때
			s.text('적당해요.'); // strong 요소에 문자 출력
		}
	});

	// #tel 인풋에 onkeydown 이벤트가 발생하면
	// 하이픈(-) 키가 눌렸는지 확인
	// 하이픈(-) 키가 눌렸다면 입력 중단
	tel.keydown( function() {
		if(event.keyCode==109 || event.keyCode==189) {
			return false;
		}
	});
});
// ]]>
</script>

'jQuery' 카테고리의 다른 글

jQuery 기초 정리  (0) 2012.11.27
JQuery 와 Prototype 충돌 방지  (0) 2012.07.09
jQuery 스크롤 올리기  (0) 2012.02.07
XML HTML로 로드 하기  (0) 2012.01.10
jquery 동적 js 실행  (0) 2012.01.10
블로그 이미지

스마트전

,

PHP DATE 정리~

PHP 2012. 2. 8. 15:14

1. date()

  > string date ( string format [, int timestamp])

ex)------------------------------------

 // 다음의 출력: Wednesday 15th of January 2003 05:51:38 AM
 echo date("l dS of F Y h:i:s A");

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

 

2. getdate()

  > 현재의 날짜(파라미터를 안넣은 경우)나 타임스탬프값으로 날짜를 배열로 가져온다.

  > array getdate ( [int timestamp])
ex)-------------------------------

Array
(
    [seconds] => 40
    [minutes] => 58
    [hours]   => 21
    [mday]    => 17
    [wday]    => 2
    [mon]     => 6
    [year]    => 2003
    [yday]    => 167
    [weekday] => Tuesday
    [month]   => June
    [0]       => 1055901520
)

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

 

3. time()
  > 파라미터를 받지 않으며 항상 현재 일시와 유닉스 타임스탬프를 리턴한다.
  > int time(void)
 
4. mktime()
  > 날짜와 시간을 유닉스 타임스탬프로 바꾸고자 할때 사용한다.
  > 파라미터를 넣지 않는다면 현재시간을 가져온다.(이는 time()과 date("U")와 같다.)
  > int mktime ( [int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]])
  > int is_dst파라미터는 서머타임 기간인지 아닌지를 알려주는데 사용한다.

ex)-------------------------------------------------------------------------
// 0시, 0분, 0초, 12월, 31일, 1997년도를 타임스탬프값으로 받아와서 date로 출력
echo date("M-d-Y", mktime(0, 0, 0, 12, 31, 1997));
----------------------------------------------------------------------------
 

5. strtotime() 

 > date("보여줄날짜의 형태",strtotime("구할인자", 기준이되는날짜)) 형태로 잘 사용되는 함수

ex)--------------------------------------------------------------------------

$time = time();
echo date("Y-m-d",strtotime("-1 day", $time))." 하루 전(어제)";
echo date("Y-m-d",strtotime("-1 day", $time))." 하루 전(어제)<br>";
echo date("Y-m-d",strtotime("now", $time))." 현재<br>";
echo date("Y-m-d",strtotime("+1 day", $time))." 하루 후(내일)<br>";
echo date("Y-m-d",strtotime("+1 week", $time))." 일주일 후<br>";
echo date("Y-m-d",strtotime("-1 month", $time))." 한달 전<br>";
echo date("Y-m-d",strtotime("+1 month", $time))." 다음달<br>";
echo date("Y-m-d",strtotime("+6 month", $time))." 6달후<br>";
echo date("Y-m-d",strtotime("+12 month", $time))." 12달후<br>";
echo date("Y-m-d",strtotime("next Thursday", $time))." 다음주 목요일<br>";
echo date("Y-m-d",strtotime("last Monday", $time))." 지난 월요일<br>";
echo date("Y-m-d",strtotime("10 September 2000", $time))." 2000년 9월 10일 <br>"; 
 

 

ex )-----------------------------------------------------------------

if(date("Ymd") < "20110331" && date("Ymd") > "20110701") {

echo "팝업 등의 시간 설정에 사용";

}

 

 

'PHP' 카테고리의 다른 글

PHP class 정리  (0) 2012.03.30
PHP file 정리  (0) 2012.03.30
PHP 배열 정리  (0) 2012.02.03
PHP JSON 처리  (0) 2012.02.02
PHP $_SERVER 정의  (0) 2012.01.31
블로그 이미지

스마트전

,