분류 전체보기

php


SESSION의 동작방식과 사용법 (feat. PHP)


오늘은 세션의 동작원리들과 주의할점! 그리고 사용법에 관해 포스팅하도록 하겠습니다.


시작하기 전에 먼저 세션에 대해 간단히 설명하자면 세션은 컴퓨터 시스템의 관리자(또는 OS 또는 서버)가 자신의 자산을 이용하는것을 허락한 사용자 (컴퓨팅)를 인식한 일정한 기간을 가리키는것으로 광범위하게 이해될 수 있습니다. 위키백과;세션


쿠키와의 차이점은 쿠키는 정보를 사용자의 컴퓨터에 저장하는 반면, 세션은 정보를 서버에 저장한다는 점에서 비교적 보안성이 더 우수합니다.

또한, 세션은 쿠키에 비해 큰 용량의 데이터를 저장할 수 있습니다.

하지만 세션의 동작방식을 알아보면 세션도 고유식별자를 확인하는데 있어, 쿠키를 이용하긴 합니다.

그러나, 쿠키를 이용하긴하지만 오로지 쿠키에만 의존적이진 않습니다.

뭐, 쿠키없이 사용할 순 있지만, 쿠키를 이용하면 더 편하게 세션을 이용할 수 있다는 뜻입니다.!


그럼 이제! 세션사용법을 간단하게 알아보도록 하겠습니다.

세션위주로만 설명하므로 자세한 소스는 생략합니다! PHP 세션 로그인 예제 보러가기






SESSION 설정 보기



세션을 사용해보기 전에 기본적인 session 설정부터 알아보겠습니다.

php.ini 파일을 보면 세션에 관한 내용들이 정의되어 있습니다.

나는 ini 파일을 수정하지 않겠다! 혹은 파일을 볼 수 없다! 의 경우 phpinfo() 함수를 이용하여 session 으로 찾아보면 설정된 내용을 볼 수 있습니다.

ini 파일 위치를 모르겠다! 싶을 때도 phpinfo() 함수를 사용해서, Loaded Configuration File 로 검색하면 위치를 찾을 수 있습니다.

아래는 phpinfo() 로 확인한 세션정보입니다.


설정정보들 중 몇가지만 알아보자면,

session.name : 세션ID를 저장할 쿠키의 이름입니다. 보통 PHPSESSID 로 사용하며, php의 세션함수 session_name()로 가져올 수 있습니다.

session.cookie_path : 세션ID를 저장할 쿠키의 경로입니다. 가끔 쿠키삭제가 안될 경우에 setcookie() 마지막 파라미터에 이 경로를 직접 지정해주면 삭제가 잘됩니다!

session.save_path : 세션이 저장되는 경로입니다. 따로 지정해 주지 않을경우, 이 경로 하위에 세션파일들이 쌓입니다.

session.use_cookies : 세션ID를 저장하는데 쿠키를 사용할지 하지 않을지를 정합니다. 1은 사용함을 나타내며 사용하지 않을경우 아래옵션을1로 설정해주어야합니다.

session.use_trans_id : 세션ID를 저장하는데 쿠키를 사용하지 않을경우, 이 옵션을 1로 변경해주어야 합니다.

session.gc_maxlifetime : 지정된 시간(초) 이 지난 세션은 폐기 대상으로 간주합니다.



위의 설정 값을 바꾸고싶은데 특정 프로젝트에서만 동적으로 변경하고자 하는 경우나, php.ini 파일에 접근 할 수 없는 경우에는 php의 ini_set() 함수를 사용하시면 됩니다

ex) ini_set("session.save_path" , "./sessions/")





SESSION 사용하기



그럼이제 사용법을 알아보도록 하겠습니다.


1. 세션 시작


세션 혹은 세션변수를 사용하기 위해서는 사용전에 반드시 session_start() 로 세션을 시작해줘야합니다.


PHP

<?php session_start(); ?>


이 함수와 함께 세션이 시작되는 순간 우리 브라우저에는 PHPSESSID 란 이름의 쿠키가 생성됩니다.

세션 설정 정보의 session.name 값을 변경하지 않으면 기본적으로 쿠키명은 PHPSESSID 입니다.

이 때 생성되는 쿠키의 값은 세션이 시작될 때 내부적으로 생성된 유일한 식별자입니다. ID라고 칭하겠습니다.

세션은 쿠키로 저장된 이 ID 값을 통해 세션을 찾습니다. 쿠키가 생성됨과 동시에 우리 서버에는 sess_ID값 이름으로 된 session 파일이 생성됩니다.

따로 지정해 주지 않을 경우 상단의 설정 정보 설명의 session.save_path 에서 지정된 경로 하위에 생성됩니다.


주의사항: session_start() 함수는 헤더데이터를 전송하기 때문에 함수를 사용하기 이전에 화면에 출력되는 어떠한 코드도 있어서는 안됩니다.


이렇게, 파일과 쿠키가 생성되면 우리는 세션을 사용할 수 있습니다.


2. 세션 저장


로그인이라고 가정하고 사용자의 이름과 아이디를 세션변수에 저장해봅시다.


PHP

<?php session_start(); $_SESSION["user_id"] = $user_id; $_SESSION["user_name"] = $user_name; ?>



이렇게 저장된 세션변수는 session_start() 되는 곳 어디서든 사용이 가능하게 됩니다! (쿠키와 서버의 파일이 둘다 삭제되지 않는 다는 가정하에)


3. 세션 삭제


마지막으로 세션을 삭제 하는 부분입니다.

사실 세션을 확실히 삭제 하고자하면, 세가지 절차가 필요합니다.


PHP

<?php $_SESSION = array(); //1. 세션변수초기화 if(isset($_COOKIE[session_name()]) ) { setcookie(session_name(), '', time() -3600, "/"); } //2. 쿠키삭제 session_destroy(); //3. 세션데이터삭제 ?>


먼저, 세션변수를 초기화 합니다.

session_destroy() 함수는 서버의 세션파일을 삭제해주지만, $_SESSION 변수까지 초기화 시켜주지는 못합니다.

예를들어 아래와같이, 세션을 $_SESSION 변수에 저장한 후, session_destroy() 한 후, 세션변수를 출력해보면, 저장된 내용이 초기화 되지 않고 그대로 나오는 것을 볼 수 있습니다.


PHP

<?php session_start(); $_SESSION["user_id"] = $user_id; $_SESSION["user_name"] = $user_name; session_destroy(); //3. 세션데이터삭제 print_r($_SESSION); ?>


물론, 다른페이지에서 session_start() 로 다시 세션을 시작해 사용할 경우, 식별자(ID) 쿠키 값이 남아있어도 서버의 파일데이터가 삭제 되었기 때문에 해당 값을 찾을 수 없습니다.

하지만 세션을 시작한 페이지와 현재 페이지가 같다면 $_SESSION 변수 안에 값이 그대로 남아있겠죠!!

그러므로 초기화 시켜주도록 합시다!


두번째로, 쿠키를 삭제합니다.

session_name() 함수로 쿠키의 ID를 가져와서 쿠키를 삭제하도록 합니다.

쿠키를 삭제 하지 않는 경우, session_start() 하는 경우 PHPSESSID로 저장된 쿠키 식별자를 읽어와 파일을 찾으려 시도합니다.

불필요한 행위는 하지않도록 해주는게 좋겠지요!


마지막으로 세션데이터를 파괴합니다.(sess_xxxx 파일 삭제)

session_destroy() 함수로 session_start() 되는 시점에 등록된 식별자 값에 대한 세션데이터를 서버에서 모두 삭제합니다.

session_destory() 로 세션을 폐기해주지 않으면, 세션정보 파일이 서버에 계속 쌓이게 됩니다.

물론 일정 시간이 지난 세션은 서버가 데이터를 폐기하기도 하지만, 이 시간을 짧게 설정할 수록 서버의 부하가 늘어납니다.

session_destroy() 함수를 사용해 명시적으로 폐기시켜주도록 합시다!




php


[PHP] PHP 에서 move_uploaded_file 실패하는 경우


PHP 에서 move_uploaded_file 을 사용해서 서버에 파일업로드를 하려고 할 때, 기존에 이미 설정한 폴더가 아닌 새로운 폴더에 업로드 하고자하면 파일 업로드가 안되곤 합니다.

이 경우, 파일용량 제한때문이 아니라면 주로 리눅스 서버에서 해당 폴더의 권한이 제대로 설정되어 있지 않을 확률이 높습니다.


FTP 등이 아닌 웹 환경에서 파일업로드를 해야하는 경우, 사용자 본인이 아닌 아파치에게 쓰기 권한이 설정되어있어야 합니다.




서버에서 원하는 폴더에 권한을 757 (rwxr-xrwx) 로 설정해주거나,


Bash(CentOS)

[root@ upload_dir]# chmod 757 mingcho[디렉토리경로]


사용하는 툴에서 CHMOD 기능이 있는 경우 변경해주면 됩니다.



물론 변경 후에는 기타사용자에게 쓰기 권한이 주어지기 때문에, 무분별한 파일이 업로드 되지 않도록 확장자검사, 특수문자검사 등의 방어조치를 취해야합니다.


마지막으로 변경된 폴더로 업로드 해봅시다아.

사실은 move_uploaded_file 함수는 업로드개념보다는 함수명그대로 서버의 tmp 폴더 내부에 임시로 저장된 파일을 내가 원하는 경로로 이동시키는 함수입니다.


PHP

<?php define("UPLOAD_PATH", "/images/"); $tmp_name = $_FILES["name_attr"]["tmp_name"]; //임시저장된 파일을 $target = UPLOAD_PATH.time().$_FILES["name_attr"]["name"]; // /images/1210123112upload_file.jpg move_uploaded_file($tmp_name, $target); //저장 찰칵찰칵 ?>




php


[PHP] PHP 문자열 큰따옴표(") 와 작은따옴표(') 의 차이점



PHP 에서 문자열 작성시에는 아래와 같이 큰따옴표("") 나, 작은따옴표('')를 사용하여 표현합니다.


<?php $a = "double quote"; $b = 'single quote'; ?>


무분별하게 사용하기도 하지만 문자열사용시 큰따옴표("") 와 작은따옴표('')를 사용하는 것은 PHP 내부적으로 차이가 있습니다.





PHP는 문자열을 다룰 때 큰따옴표 안의 문자열의 경우 변수를 찾아내는 과정을 거칩니다.

반면, 작은 따옴표 안의 문자열의 경우 순수 문자열로 인식하여 그대로 보여주게 됩니다.


<?php $text = " 입니다"; echo "double quote $text"; //실행결과 : double quote 입니다. echo 'single quote $text'; //실행결과 : single quote $text ?>


위 예제의 경우 큰따옴표("") 안의 문자열에 사용한 변수는 변수의 값이 제대로 적용 된 데 반해, 작은따옴표('') 안의 변수는 그대로가 문자로 표현되었습니다.


큰따옴표("") 와 작은따옴표('') 의 차이는 변수의 처리 뿐만아니라 확장문자 의 처리에서도 존재합니다.

줄을 개행시켜주는 개행문자 \n 의 경우 큰따옴표안에서는 개행문자로 인식하지만, 작은 따옴표안해서는 일반 문자열로 인식됩니다.


<?php echo "double quote \n"; //실행결과 : double quote echo 'single quote \n'; //실행결과 : single quote \n ?>


위와 같이 작은따옴표 안에서는 대부분의 확장문자가 문자열로 인식되기때문에, 확장문자를 써야하는 경우 큰따옴표("")를 써야합니다.

단, 예외적으로 \' 나 \\ 의 경우 작은따옴표('') 안에서도 사용가능합니다.


<?php echo "사용가능 확장문자 \'"; //실행결과 : 사용가능 확장문자 \' echo '사용가능 확장문자 \''; //실행결과 : 사용가능 확장문자 ' ?>


위의 경우 큰따옴표("") 안에서는 \' 가 문자열로 처리된 반면, 작은따옴표('') 안에서는 확장문자로 처리되었습니다.

상황에 맞게 잘 사용하도록합시다!





EditPlus 기본 설정 정리



1. 문서의 기본 인코딩 변경



[도구->기본설정->파일->기본인코딩] or
[Tools->Preferences->Files->Default Encoding]






2. 백업파일 생성안되게 설정하기



[도구->기본설정->파일->저장시 백업 파일 생성] or
[Tools->Preferences->Files->Create backup file]






3. 기본으로 생성되는 새파일 문서 템플릿 변경



[파일->새파일->HTML페이지] 를 누르거나 Ctrl+Shift+N 을 누르면 나오는 새파일을 구조를 변경할 수 있다.

나와 같은경우 새파일 형식이 아래와 같이 기존 HTML4 의 DTD 선언 방식으로 되어있어서 변경하기로했다.



[도구->기본설정->파일->문서템플릿] or
[Tools->Preferences->Files->Templates]



위파일을 클릭하면 현재 Template 파일의 저장경로가 나온다.

해당폴더로 가서 원하는 이름의 .html 파일을 새로만든다. 나는 template_html.html 로 만들었다.

변경 후 해당파일에 변경하고자 하는 템플릿 문서를 작성한다.


HTML(template_html.html)

<!doctype html> <html lang="ko"> <head> <meta charset="utf-8"> <title>문서제목</title> </head> <body> </body> </html>


파일작성 후 다시 좀전의 위치로 돌아가 Template 파일을 우리가 만든 파일로 지정한다.




파일이름을 template* 로 시작하도록 만들지 않은경우에는 2번을 클릭하여 모든파일(All Files) 보기로 변경하여 파일선택하면 적용 끝!

적용완료 후 Ctrl+Shift+N 을 눌러 템플릿이 제대로 적용되었는지 확인!

마찬가지로 다른 확장자 파일의 템플릿도 지정할 수 있다.





[CentOS] Apache MIME TYPE 설정하기!



웹페이지에서 비디오나 오디오 , 이미지 등 멀티미디어 파일을 출력하려고 하거나, 그 외 기타 다른 파일들을 웹상에서 활용하려고 할 때,

클라이언트의 브라우저나, 웹 서버 상에 해당 파일 포맷(확장자)에 대한 MIME TYPE 이 등록되어 있지 않으면, 보여주고자 하는 컨텐츠를 웹상에서 제대로 확인 할 수 없습니다.


기존에 없던 파일 포맷이 새로 생겼다고 가정했을 때, 이 포맷을 웹서버에 MIME TYPE에 등록해 주지 않으면 웹서버는 이 확장자들을 인식하지 못합니다.


예를들어, 로컬에서는 문제없이 잘 재생되던 미디어 파일이 웹서버에 업로드 후 재생되지 않는 다면 이 문제일 수 있습니다.




웹서버(Apache) 에 MIME TYPE 설정하기




OS의 배포판에 따라 설정파일의 위치는 조금씩 다를 수 있습니다.

아파치의 경우 주로, /etc/mime.types 에 위치하지만 해당 위치에 파일이 없는 경우 httpd.conf 파일을 확인합니다.


Bash(Linux)

[root@ /]# vi /etc/httpd/conf/httpd.conf


해당파일에서 <IfModule mime_module> 하위에 TypesConfig 를 보면 mime.types 파일의 위치를 확인 할 수 있습니다.


Bash(Linux)

<IfModule mime_module> # # TypesConfig points to the file containing the list of mappings from # filename extension to MIME-type. # TypesConfig /etc/mime.types


파일의 위치를 찾았으면, 해당 파일을 vi로 연 후,


Bash(Linux)

[root@ /]# vi /etc/mime.types


MIME TYPE 종류보기

추가하고자 하는 MIME TYPE 을 추가한 후, 아파치를 재시작 해주면 끝!




##아르디에 

##신도림 아르디에

##신도림역 아르디에 

##신도림 도시형 생활주택

##일부세대 복층구조

##신도림역 분양정보

##분양문의 : 02-6080-1599

##문의사항 있으시면 댓글 남겨주세요



'호기심로그 > 분양정보' 카테고리의 다른 글

[분양정보] 신도림 아르디에  (0) 2018.04.05


HTML5 에서의 멀티미디어 태그



HTML5 이전에 웹에서 동영상을 보거나 음악을 듣기 위해서는 어도비 플래시 플레이어나, Active X, 마이크로소프트 실버라이트, 윈도우 미디어플레이어 등의 플러그인 프로그램을 설치해야 했습니다.


그러나 모바일 기기들이 등장하고 발전하기 시작하면서 기존의 방식에 문제가 생겼습니다. (작은 저장공간에 비해 큰 용량 , 빠른 배터리 소모 등)


또한, 이 방식의 경우 미디어 파일의 확장자에 따라 다른 플러그인이 필요 했고, 이경우 여러가지의 플러그인을 모두 설치해야 했습니다.


요즘은 일반 사이트에서는 거의 보이지 않는 active X 방식도 흔히 사용되었는데, 이 경우 사용자가 원하지 않은 프로그램들이 컴퓨터에 설치 되기도 했습니다. (보안 취약)



이에 따라 HTML5는 플러그인 설치 없이도 웹브라우저에서 영상을 보고, 음악을 들을 수 있는 <video> , <audio> 태그를 지원하기 시작했습니다.


<video 태그 지원 브라우저>



Video



1. 비디오 파일 포맷과 코덱의 종류


우리가 흔히 보는 비디오 파일명을 확인해보면 보면 .mp4 .avi .wmv .mkv 등의 확장자가 붙어 있는 것을 볼 수 있습니다.

이 확장자들이 바로 비디오 파일의 포멧(형식) 에 의해 정해집니다.

비디오 파일 포맷의 종류


이렇게 다양한 비디오 파일들을 컴퓨터나 스마트폰 환경에서 재생 가능하도록 파일 포맷을 변경하거나, 용량을 줄이는 것을 인코딩(Encoding) 이라고 합니다.

또한 이 인코딩 된 비디오파일을 보여주는 과정에서는 디코딩(Decoding) 이 필요합니다.

이러한 과정을 수행하는 것이 코덱(CODEC) 입니다.


- H264

H264/AVC 또는 MPET-4 AVC 라고도 하며, 고화질의 영상을 지원하기 때문에 많은 사이트 들에서 사용하고 있습니다. 애플과 구글이 선호하는 코덱이기도 합니다.

.mp4 파일이나 .mov 파일등에 사용하고, 가장 많이 사용하는 코덱이지만 유료 코덱이라는 이유로 웹 표준으로 지정하기에는 무리가 있다는 의견이 있자 H.264의 특허권을 가지고 있는 MPEG포럼에서 HTML5 웹 표준의 용도로 사용할 경우에는 무료로 허용했습니다.


- 오그 테오라 (Ogg Theora)

H264와 달리 로열티를 지불하지 않아도 되는 오픈 소스 코덱으로 파이어폭스와 모질라가 선호하는 코덱입니다.

.ogv .ogg 파일에서 사용합니다.


- WebM

이 또한 구글에서 공개한 오픈소스 코덱으로 좋은 품질을 무료로 제공하여 발전가능 성이 높습니다.

.webm 파일에서 사용합니다.


브라우저별 코덱 지원 현황

코덱 종류 별로 브라우저 버전별 지원현황 보기

Browser

MP4(H.264) WebM(WebM) Ogg(Theora)

Internet Explorer

YES NO NO
Chrome YES YES YES
Firefox YES YES YES
Safari YES NO NO
Opera YES YES YES





2. video 태그 사용방법


비디오 태그는 기본적으로 아래와 같이 사용가능합니다.


HTML

<video src="mingcho.mp4" width="450" height="320" controls > </video>


contorls 는 비디오의 컨트롤바를 보이게 해주는 속성으로 사용하지 않으면 컨트롤바가 표시되지 않습니다.

현재 대부분의 브라우저에서 .mp4 포맷의 영상을 디코딩하는 코덱 (H.264) 을 지원하기는 하지만 위와 같이 코딩하면, 해당 코덱을 지원하지 않는 브라우저에서는 영상을 재생할 수 없습니다.

위와 같은 경우에는 아래 방식을 사용 합니다.


HTML

<video> <source src="mingcho.ogv" type="video/ogg"> <source src="mingcho.mp4" type="video/mp4"> <source src="mingcho.webm" type="video/webm"> <p>당신의 브라우저는 HTML5 Video 태그를 지원하지 않습니다. </p> </video>


위와 같이 작성하면, 브라우저는 자신이 재생할 수 있는 첫번 째 파일을 재생합니다.



Audio



1. 오디오 파일 포멧과 코덱의 종류


오디오 파일역시 녹음 된 방법에 따라 포맷이 존재하며, 이러한 파일들의 인코딩 디코딩을 위해 코덱이 필요합니다. 오디오 파일 포맷의 종류


웹에서 자주 사용하는 오디오 코덱의 종류에는 크게 세가지가 있습니다.

- MPEG-1 AUDIO Layer3

우리가 잘알고있는 .mp3 파일을 사용하는데 이용되며, 로열티를 지불해야 했던 유료 코덱이였지만 2017년 4월 특허가 만료되었습니다.

MP3의 특허만료와 차세대 오디오 포맷 AAC


- 오그 보비스 (Ogg Vorbis)

역시 Ogg Theora 와 같이 오픈 소스로 무료로 사용가능하며, .ogg 나 .ogv 파일에 사용합니다.


- ACC

애플이 아이튠즈 기본 포맷으로 선정하면서 유명해진 포맷으로, 위 mp3의 특허만료와 차세대 오디오 포맷 ACC 링크를 참고하시면 ACC 포맷에 대해 더 자세히 알아보실 수 있습니다.


브라우저별 코덱 지원 현황

코덱 종류 별로 브라우저 버전별 지원현황 보기

Browser

MP3 Wav Ogg(Vorbis)

Internet Explorer

YES NO NO
Chrome YES YES YES
Firefox YES YES YES
Safari YES YES NO
Opera YES YES YES




2. audio 태그 사용방법


오디오 태그는 기본적으로 아래와 같이 사용가능합니다.


HTML

<audio src="mingcho.mp3" controls> </audio>


오디오 태그 역시 비디오 태그와 마찬가지로 브라우저마다 지원하는 코덱이 조금씩 다르므로,

아래와 같이 source 태그를 사용합니다.


HTML

<video> <source src="mingcho.mp3" type="audio/mpeg"> <source src="mingcho.oga" type="audio/ogg" codecs="vorbis"> <p>당신의 브라우저는 HTML5 Audio 태그를 지원하지 않습니다. </p> </video>



Video/Audio 태그 속성



video와 audio 태그의 속성은 거의 비슷하기 때문에 같이 설명하며 각각의 속성은 위 태그들과 함께 한번만 작성합니다.

(source 태그에 각각 명시해주지 않습니다.)


로컬에서는 파일재생이 제대로 되었는데 서버에 업로드 후 재생이 안된다면, 서버 MIME TYPE의 문제일 수 있습니다. 서버관리자에게 요청하거나 서버를 직접 운영하는 경우 MIME TYPE을 추가하도록 합시당! 아파치 서버 MIME TYPE 추가하기


속성 설명
width/height 넓이값/높이값 비디오 의 넓이와 높이
src 미디어URL 멀티미디어 파일의 URL 지정
controls controls, 지정안함 각 브라우저의 컨트롤 막대를 표시.
autoplay autoplay, 지정안함 페이지가 로드될때 비디오, 오디오를 자동재생 (모바일 기기에서는 예외, 사용하지 않는 것을 권장)
preload none, metadata, auto 페이지가 열릴때 비디오를 미리 다운 받습니다.
none: 사용자가 재생버튼을 눌렀을때 다운로드를 시작합니다.
metadata: 미디어 파일 전체가 아닌 메타 정보만 다운로드 합니다.
auto: 페이지가 로드됨과 동시에 미디어 파일 전체를 다운로드 합니다 (preload 의 default 값)
muted muted, 지정안함 음소거
loop loop, 지정안함 반복 재생
poster 이미지URL 로드되기 전에 표시될 이미지 URL





PHP 의존성 관리도구 - Composer 사용법



Composer 영문 메뉴얼 바로가기

Composer 한글 메뉴얼 바로가기


컴포저는 node.js 의 npm ruby의 bundler 와 같이 PHP 환경에서 사용하는 의존성 관리 도구입니다.

컴포저의 역할은 아래와 같습니다


a) 여러 라이브러리에 의존하는 프로젝트를 가지고 있습니다.

b) 이러한 라이브러리들은 또다른 라이브러리들을 필요로 합니다.

c) 이때 여러분이 필요로 하는 의존 관계의 라이브러리들을 지정해 줄 수 있습니다.

d) 컴포저는 패키지가 설치되어야 하는 버전을 찾아, 알맞은 버전의 패키지들과 의존 패키지들을 설치합니다. (프로젝트 디렉토리로 다운로드 한다는 의미입니다.)





시스템 요구사항


컴포저는 PHP 5.3.2+ 이상에서 동작합니다. 몇가지 민감한 PHP 설정을 필요로 하지만 인스톨러를 사용하면 이러한 비호환성을 체크하고 경고를 확인할 수 있습니다.




Composer 설치(*nix 환경)


Windows 환경의 경우 상단 링크의 메뉴얼을 참고해주세요.


1. 지역 설치(Locally)

특징: 프로젝트 안에 Composer를 포함하는 방식

장점: Composer가 프로젝트 안에 직접 설치 되기 때문에, 프로젝트를 다른 곳에 배포 할 경우 배포받은 곳에서 특별히 컴포저를 설치 하지 않고도 응용프로그램 안에 포함된 Composer를 이용하여 패키지 관리가 가능하다.



2. 전역 설치(Globally)

특징: 자신의 운영체제 전체에 Composer를 포함하는 방식

장점: 같은 OS 안에 여러개의 프로젝트를 운영하고 있을 경우, 전역 설치를 하면 각각의 프로젝트에 설치하지 않고도 Composer를 사용가능!



저는 전역설치를 하기로 했습니다. 방식은 거의 비슷하므로 매뉴얼을 참고해주세요.!

메뉴얼에는 아래와 같이 cURL 을 이용한 설치 방법이 나와있습니다.


Bash(Linux)

[root@ lib]# curl -sS https://getcomposer.org/installer | grep


나의 경우 위의 방식으로 설치하자 아래와 같이 에러가 나며 설치실패! (설치환경 : CentOS7)


Bash(Linux)

[root@ lib]# curl: (48) An unknown option was passed in to libcurl


왜 인지는 모르겠지만 다른 방식을 사용하기로 했다.


Bash(Linux)

//PHP 인터랙티브 모드 진입 [root@ lib]# php -a //원격지 설치 파일 카피 php > copy('https://getcomposer.org/installer', 'composer-setup.php'); //인터랙티브 모드 종료 (Ctrl+c) 후 파일 확인 //PHP로 파일실행 [root@ lib]# php composer-setup.php All settings correct for using Composer Downloading... //설치완료 Composer (version 1.6.3) successfully installed to: /usr/local/lib/composer.phar Use it: php composer.phar //글로벌로 실행을 위해 파일 이동 [root@ lib]# mv composer.phar /usr/locl/bin/composer





Composer 사용법


저는 라이브러리 들 중 카카오 알림톡을 사용하기 위한 unirest 모듈을 다운받아 보기로 했습니다. Unirest PHP



1. Composer.json 파일 생성


Composer의 메인 저장소 (Composer의 npm)

먼저 Composer를 처음 사용하는 경우, 라이브러리를 설치 하고자 하는 프로젝트 하위에 composer.json 파일을 생성합니다. 이미 사용 중에 라이브러리를 추가 하는 경우에는 만들어져있는 파일을 사용하면 됩니다.


만든 파일에 아래와 같이 작성합니다. ( //로 표기한 주석은 지워주세요 )

Bash(Linux)

{ "require-dev": { //mashape vendor의 unirest-php 패키지의 3.대 버전중 가장 최신버전을 사용 "mashape/unirest-php": "3.*" } }


저는 unirest 의 홈페이지에 나와있는 composer 사용방법에 있는 대로 require-dev 로 작성했습니다.



2. 설치


require 와 require-dev 는 약간의 차이가 있는데, require-dev 에는 디버깅, 테스트 등 개발시 필요한 해키지 정의를 위해서 필요한 라이브러리 들을 정의한 후 , 실제 서비스 환경에는 설치를 하지 않을 수 있습니다. 반대로 require 에는 서비스 환경에 꼭 필요한 라이브러리 들을 정의합니다.


Bash(Linux)

//require, require-dev에 열거된 모든 패키지 설치 [root@ www]# composer install //require, require-dev에 열거된 모든 패키지 업데이트 [root@ www]# composer update //require에 열거된 패키지만 설치 [root@ www]# composer install --no-dev //require 열거된 패키지 업데이트 [root@ www]# composer updatel --no-dev



위의 설치 방법은 Composer를 글로벌 설치 했을 경우의 설치 방법입니다. 로컬 설치를 했을 경우에는 아래 방식을 사용합니다


Bash(Linux)

//require, require-dev에 열거된 모든 패키지 설치 [root@ www]# php composer.phar install



3. composer.lock ( composer update 와 composer install )


composer의 install 과 update 명령은 의미상 차이가 존재합니다.

위와 같이 composer 를 install 하면 composer.lock 파일이 생성됩니다.

이 파일은 내가 install 한 시점에 설치 된 라이브러리 들의 버전 정보들을 담고 있습니다.

그래서 다른사람이 해당 파일들을 이용해 composer 를 install을 한 경우, 이전에 설치 되어있던 라이브러리들은 업데이트 된 최신 버전이 아닌 composer.lock 파일에 명시되어 있는 버전이 설치 되게 됩니다.

그래서 이 파일을 이용해 composer가 install될 때마다 라이브러리가 최신 버전으로 업데이트 되는 상황을 막을 수 있습니다.

만약, 라이브러리를 최신버전으로 갱신하고 싶을 경우 update 명령을 사용하면 됩니다.

새로운 패키지가 추가됐을 경우에도 update 명령을 사용합니다.

프로젝트 참여자 의존성 일치시키기



4. composer 적용


위와 같이 composer 설치를 마치면, 프로젝트 하위에 vendor 라는 디렉토리가 생성됩니다.

이 디렉토리 안에는 내가 설치 한 라이브러리 들이 존재합니다.

적용은 라이브러리 들의 디렉토리 경로와 상관없이 내가 적용하고자 하는 파일에 아래와 같이 작성해 주면 됩니다.


PHP

<?php require("vendor/autoload.php"); ?>




HTML5 문서 기본 구조 간단 정리



HTML 형식의 문서를 작성하기 위해서는 기본적으로 HTML 문서의 기본 구조(뼈대) 를 갖춰야 합니다.

HTML 의 문서를 작성하기 위해 필수적인, 기본 구조에 대해서 간단히 정리해보는 시간을 가져보도록 합시다.





아래는 HTML문서의 기본 구조입니다.


HTML

<!doctype html> <html lang="ko"> <head> <meta charset="utf-8"> <title>HTML5 기본 형식 간단정리</title> </head> <body>    <p>안녕하세요!</p> </body> </html>


위와 같은 기본 구조에서 추가하고자 하는 태그들을 추가하고 CSS 스타일 까지 입히면서 점점 웹페이지의 비주얼이 완성됩니다.

그럼, 웹페이지의 기본이 되는 위의 태그들에 대해서 간단히 정리 해볼게요.



1.DTD 선언! <!doctype html>


먼저, 여러분의 문서가 HTML로 작성된 문서라는 것을 브라우저에게 알려주기 위해 DTD 선언을 해야합니다.

위와 같이 <!doctype html> 의 방식으로 사용하는 것은 HTML5의 방식인데, HTML4에서는 조금 복잡했는데 HTML5에 오면서 간단해 졌어요.




HTML4의 경우 모드마다 DTD 선언을 다르게 해줘야 했습니다.

아래 홈페이지에 가면 HTML 버전별 DTD 선언 방식을 볼 수 있는데, HTML4에서는 너무 길어서 맨날 찾아써야 해서 조금 귀찮았었는데 짧아져서 좋아요! HTML 버전별 DTD선언 보러가기


이 DTD모드를 지정하지 않을 경우에는 웹문서에서 이를 관용 모드(quirks mode)로 인식하게 되는데, 이렇게 인식될 경우 웹문서가 제작자의 의도와는 다르게 나올 수 있습니다. 또한, 이 관용모드는 오래된 브라우저 들과 호환성도 염두에 둔 모드이기 때문에 웹 표준도 고려되지 않습니다. 그러니까 꼭 선언해 줘야겠지요!




2.html태그 와 lang 속성 <html> </html>


html 태그는 doctype 선언 이후 html 문서의 시작과 끝을 알려줍니다.!

<head> 태그와 <body> 태그를 감싸는 태그입니다.


html 태그에는 lang 속성을 사용해 언어를 지정할 수 있습니다.

이 속성을 사용하지 않으면 구글의 언어별 검색에서 검색되지 않아요. 한글을 표현하고자 하는경우 lang="ko" 를 넣어주세요!

또한, 이 속성을 통해 화면 낭독기(리더기) 가 화면의 내용을 읽어 주는데, 이 속성이 지정되어있지 않으면 낭독기가 내가 문서에서 말하고자 하는 바를 표현하지 못할 수도 있습니다.


lang 속성과 스크린 리더기

lang 속성을 정확히 지정하지 않을 경우




3.head태그 <head> </head>


head 태그에는 웹 문서에서 사용하는 언어지정, 페이지 제목, 키워드, 제작자정보, 참조 스타일시트, 스크립트 참조 등 여러가지 웹문서에 대한 관련 정보들이 들어갑니다.

<body> 태그에 들어가는 친구들처럼 바로 눈으로 확인 할 수 있는 비주얼적인 아이들은 아니지만, 웹문서에 관한 중요한 정보들을 가지고 있는 태그입니다.


여기에는 다양한 메타 태그들이 들어가는데 대표적으로 문자셋 메타 태그와, 타이틀 태그에 대해서만 간략히 알아보겠습니다.




4.title태그 <title> </title>


먼저 <title> </title> 태그에 대해서 설명하자면, 정말 말그대로 페이지의 제목입니다.

브라우저에서 아래부분에 표시되는 내용



타이틀의 경우 사이트의 모든 페이지에 똑같이 넣는 경우가 있는데, 그럴 경우 화면 낭독기가 네이게이터를 읽어줄 때 사용자가 해당 페이지의 내용을 짐작하지 못해 웹 접근성 지침에 어긋납니다.

또한, 너무 긴 문장이나 기호 보다는 페이지 내용을 쉽게 짐작가능한 주요 단어를 넣는 것이 좋다고 합니다.




4.meta태그 charset 속성 <meta charset="utf-8">


charset 속성은 많은 meta태그의 속성 중 하나로 이 속성을 잘못 넣으면 문서의 한글이 다 깨지는 광경을 볼 수 있답니다.

그런의미에서 아주 중요한 태그입니다.! 


HTML4 에서는 

HTML

<meta http-equive="Content-Type" content="text/html;" charset="utf-8" />

이런 식으로 넣었었는데 이 부분도 HTML5 에서 간단해 진 부분 중 하나입니다.! 글자수가 줄었어요~~~~~♥


본론으로 돌아와서! 이 태그의 문자 셋은 주로 파일의 인코딩 방식과 같은 문자 셋으로 맞춰주어야해요!

예전에는 euc-kr 도 많이 보였었는데, 요즘은 웹에서는 대부분 다 utf-8로 사용하는 듯해요

(둘다 한글을 표현가능한 문자 셋인데, utf-8은 훨씬 더 많은 언어를 표현가능 하지만, euc-kr에 비해 리소스를 많이 잡아먹는다는 단점이 있습니다)


이 태그의 default charset 값은 utf-8 으로 이미 맞추어져있어, 메타 태그를 사용하지 않아도 한글이 깨지지 않지만 명시해 주는 것이 좋겠죠!? 파일의 인코딩 방식이 다를 수도 있고!




5.Body 태그 <body> </body>


이 태그도 <html> <head> 태그와 마찬가지로 여는 태그와 닫는 태그가 존재합니다.

앞으로 웹페이지 화면에 표시될 수많은 내용들을 모두 담아 낼 태그이기도 합니다.!!



오늘은 여기까지! 모두들 즐코하세욤 빠이!




HTML 특수 기호 엔티티 테이블




HTML 문서를 작성할 때는 문서내용과 HTML 예약 문자를 구분하기 위해서 엔티티 코드를 사용해야 합니다. 


예를들어, HTML 문서에서는 공백을 여러번 입력하더라도 한칸으로 인식하기 때문에 여러개의 공백을 나타내려면 공백을 사용하는 특수 기호를 입력해야합니다. 


또한 HTML 태그에서 사용하는 꺽쇠(<) 나 따옴표(" ") 같은 문자를 사용할 때도 특수기호를 사용해야 합니다.


공백이나 들여쓰기 같은 경우 <pre> 태그를 사용해서 표현도 가능하지만 , 간단한 html 특수기호를 나타내는 문자들을 알고있으면 편리합니다.





 문자

엔티티문자 

엔티티숫자 

설명

 공백

&nbsp; 

&#160; 

공백문자 (Inserts a non-breaking blank space)

 &

&amp; 

&#38;

앤드(Ampersand) 

"

&ldquo; 

&#147; 

겹따옴표(쌍따옴표) 시작 (Opening Double Quotes) 

"

&rdquo; 

&#148; 

겹따옴표(쌍따옴표) 끝 (Closing Double Quotes) 

'

&lsquo; 

&#145; 

홑따옴표 시작 (Opening Single Quotes) 

'

&rsquo; 

&#146; 

홑따옴표 끝 (Closing Single Quotes) 

<

&lt; 

&#60; 

~ 보다 작은 (Less than)

>

&gt; 

&#62; 

~ 보다 큰 (Greater than)

&copy; 

&#169; 

저작권 (Copyright symbol)



이 외에도 수많은 엔티티 코드들을 아래 사이트에서 확인가능합니다.

http://entitycode.com/






+ Recent posts

티스토리 툴바