* 오늘의 진도
PHP
시작 ~ PHP란 무엇인가
1. 커버 페이지
PHP
- 서버쪽에서 구동되는 프로그래밍 언어
cf) HTML, JS - 클라이언트(웹브라우저)에서 구동된다.
- 데이터베이스와 상호작용하면서 데이터를 저장하고 표현한다.
- 사용자가 업로드한 파일을 서버에 저장
사용자가 입력한 데이터를 받아서, 데이터베이스나 파일에 저장
- 저장된 정보를 불러와서 HTML을 프로그래밍적으로 생성해서 웹브라우저로 전송
- 웹을 위해서 만들어졌고, 지금도 웹을 위해서 발전하고 있는 웹을 위한 언어
웹프로그래밍을 위한 높은 생산성을 제공
PHP로 만들어진 플랫폼
= 서버에 직접 설치해서 운영할 수 있는 설치형 서버 웹 애플리케이션
- textcube, wordpress, 제로보드 등
2. PHP란 무엇인가? - 1) 서버와 클라이언트
PHP는
Server side script = Server side technology = 서버 측면에 위치/동작하는 기술/언어이다.
'기술'을 두 가지로 분리하면
1) 기술 전체를 아우르는 개념
- 서버
2) 각각의 기술들을 구성하고 있는, 부품과 같은 역할을 하는, 개별적인 기술들
- Apache, IIS
- PHP, Python, Java
- MySQL, oracle
각각의 부품들이 하나의 틀 안에 모아져 있고, 고정되어 있고, 서로 연결되기 위해서
그것들을 연결시켜주는 개념 = 프레임 = 뼈대 = 골격이 필요하다.
서버와 클라이언트는 우리 수업에서 가장 중요한 뼈대, 가장 큰 골격에 해당
→ 이것을 먼저 이해한 후에, 그 안에 들어가는 개별적인 기술(부품)들을 끼워넣는다.
우리가 배울 PHP는 저기쯤 위치하는 기술이다.
클라이언트(갑): 무언가를 요청하는 사람
서버: 제공 / 요청에 대해서 응답
우리가 웹서버 / 웹프로그램 / 웹사이트에 접속할 때,
우리는 클라이언트이다.
웹사이트의 컴퓨터는 서버이다.
(우리가 브라우저를 통해서 요청한 것에 대한 응답을 하고, 요청한 것에 대한 정보를 제공)
아이폰, 안드로이드폰, 노트북, 데스크탑 등이 큰 틀에서 클라이언트다.
클라이언트에 설치되어 있는 SW 중에 웹사이트에 접근할 때 사용하는 웹브라우저는 웹클라이언트다.
ex) IE, 크롬, 파이어폭스, 사파리 등
그럼 웹서버라는 것도 있을 것이다.
ex) Apache, IIs, nginx 등
웹서버는 그림에서 PHP 위에 있다.
우리가 웹브라우저에 도메인이나 ip를 입력하고 엔터를 치면
웹브라우저가 인터넷을 통해서 서버컴퓨터가 위치하고 있는 주소로 가서
웹서버라는 SW를 만나게 된다.
그리고 그 웹서버에게 요청을 하게 된다.
ex) 네이버 페이지를 보여달라. 네이버 블로그의 특정한 페이지를 보여달라.
→ 웹서버가 그 요청에 응답한다.
→ 웹서버에 저장돼있던 HTML을 웹브라우저에게 전송한다.
→ 웹브라우저가 HTML을 해석해서 사용자에게 웹페이지를 보여준다.
이것이 초창기의 인터넷 구도였다.
클라이언트는 웹클라이언트만 있었고,
서버는 웹서버만 있었다.
그때는 PHP, MySQL, Python같은 언어가 웹을 위해 사용되지 않았다.
문제: HTML은 정적인 파일이다.
→ 사람이 HTML 문서를 수작업으로 하나하나 만들어야 한다.
인터넷의 규모가 커지고 네이버, 구글같은 서비스가 생기면서
사람이 수작업으로 HTML을 만드는 것이 한계에 달했다.
- 그 많은 웹페이지를 사람이 어떻게 다 만들겠냐
전체적인 변화가 필요하다면 그 변화를 어떻게 반영할 것이냐
→ CGI (Common Gateway Interface)
웹브라우저의 주소표시창에 위 그림과 같은 주소를 입력하고 엔터를 치면
인터넷을 통해서 o2.org에 해당되는 컴퓨터를 찾아갈 것이다.
→ 웹서버를 만난다.
→ topic.php라는 페이지를 원한다고 웹서버에게 요구한다.
웹서버는 파일의 확장자명에 주목한다.
cf) 파이썬은 py
확장자가 html이라면 웹서버는 바로 그 파일을 웹클라이언트에게 전달한다.
그러나 php는 웹서버가 처리할 수 없는 것이고,
PHP 엔진이 이것을 처리할 수 있다는 것을 안다.
→ PHP 엔진에게 위임한다.
= PHP 엔진을 구동시키고, topic.php 파일을 구동하라고 한다.
→ PHP 엔진은 topic.php 파일을 열어서,
그것을 PHP 문법에 따라서 해석한 다음에,
그 결과를 웹서버에게 준다.
→ 웹서버는 마치 HTML 문서를 웹클라이언트에게 전송하는 것과 똑같이,
그 정보를 웹클라이언트에게 전송한다.
CGI (Common Gateway Interface)
: 웹서버와 PHP 엔진 사이에 서로 통신할 수 있는 정해져 있는 통신 규약 / 약속
∴ 아파치를 엔진x로, 엔진x를 IIS로, PHP를 파이썬으로, Java로도 바꿀수도 있다.
즉, CGI가 존재하기 때문에, 이런 각각의 기술들은 서로 독립적으로 교체할 수 있다.
= 표준화의 장점
* PHP는 하나의 프로그래밍 언어이기 때문에,
PHP를 이용해서 웹페이지를 만들지 않고도 게시판 등의 여러가지 데이터나 정보를 다이나믹하게 표현할 수 있다.
= PHP 기술의 등장 배경
2. PHP란 무엇인가? - 2) PHP의 특성 (특징, 장단점)
인터넷과 웹
인터넷 - 전세계에 있는 컴퓨터들을 연결하는, 컴퓨터들과의 네트워크를 포괄하는 것
ex) 인터넷 게임, 스카이프 통신 등
웹 - 그 네트워크 위에서 동작하는 하나의 서비스 또는 애플리케이션
웹브라우저를 통해서 서버와 클라이언트가 통신하는 방식
웹을 사용자에게 표시해서 보여주는 언어가 HTML이다.
PHP - Personal Homepage Tools
PHP의 처음 이름은 Personal Homepage Tools였다.
개인의 홈페이지를 쉽게 만들 수 있는 아주 가벼운 도구로 시작
인터넷과 웹이 시작되면서 그 이후에 만들어진 언어이기 때문에,
PHP와 웹은 뗄레야 뗄 수 없는 관계에 있다.
→ PHP는 웹개발을 하는데 있어서 펄펄 날아다닌다.
최근에는 웹개발에 다양한 언어들이 사용되고 있긴 하지만
여전히 PHP는 웹개발에 가장 많이 사용되는 언어 중 하나다.
PHP - Hypertext Preprocessor
지금 PHP의 이름은 Hypertext Preprocessor이다.
Hypertext: 문서와 문서가 링크로 연결되어 있는 것
Hypertext를 만드는 언어가 HTML이다.
∴ Hypertext = HTML이라고 생각해도 된다.
Preprocessor (전처리): HTML이 브라우저에게 전달되기 전에,
HTML을 여러가지 목적에 의해서 프로그래밍적으로 또 다이나믹하게 만들어내는 언어/시스템
※ PHP는 초창기에는 Perl로 작성이 됐는데 지금은 C로 새롭게 만들어졌다.
PHP의 장점 ①
PHP가 기본적으로 제공하는 기본 기능들 = API
PHP로 웹개발을 하려면, 먼저 이 중에서 자신이 필요로 하는 것이 있는지 확인해봐야 한다.
∵ 우리가 직접 구현하는 것보다 빠르다.
물론 PHP 코드가 엉망이라면 우리가 짠 것이 더 빠를 수도 있지만,
둘다 이상적인 로직을 갖고 있다면, PHP가 더 로우레벨의 기술이기 때문에 훨씬 더 빠르다.
PHP의 장점 ②
PHP는 웹을 위해서 만들어진 언어이고, 가장 성공한 언어 중 하나이기 때문에,
우리가 웹을 운영하는 시스템(컴퓨터, OS 등)에는 기본적으로 PHP가 설치되어 있을 가능성이 높다.
→ 우리가 PHP를 설치하기 위해서 수고하지 않아도 된다.
※ 어떤 시스템은 그 시스템에 프로그램을 설치하는 것을 허용하지 않는 경우도 있다.
→ 이런 경우에는 그 언어를 이용해서 애플리케이션을 구축할 수 없다.
Web Hosting (공유 호스팅)
한 대의 컴퓨터에 OS가 설치되어 있고 (맨 밑에 네모)
여러가지 시스템들이 설치되어 있는데, 그 중 하나로 PHP가 설치되어 있다고 하자. (가운데 네모)
여기에 여러 명의 사용자들이 있다. (맨 위에 네모)
한명 한명의 사용자들이 각각의 계정을 가지고 한 대의 컴퓨터를 공유해서 사용한다.
그 목적은 웹 애플리케이션을 동작시키기 위한 것.
PHP의 장점 ③
Web Hosting은 각각의 계정을 발급한다.
윈도우로 치면 루트/슈퍼 사용자가 아니라, 표준/일반 사용자이다.
∴ 이 시스템에 PHP가 설치되어 있지 않다면,
PHP 애플리케이션을 여기서 동작시킬 수 없고,
따라서 PHP 애플리케이션을 개발할 수 없다.
그러나 PHP는 대부분의 Web Hosting에서 기본적으로 설치되어 있기 때문에,
이런 시스템을 이용하는 데 거의 제한이 없다.
PHP의 장점 ④
컴파일이 필요없는 interpreter 방식의 언어이다.
웹 애플리케이션
이러한 장점들 때문에 PHP로 만들어진 웹 애플리케이션이 매우 많다.
아마 가장 많을 것이다.
우리가 만든 웹사이트도 웹 애플리케이션이지만,
그것은 자신이 만들고자 하는 목적이 있고, 그 목적에 맞게 만들어진 애플리케이션이다.
여기서 말하는 웹 애플리케이션은,
어떤 특정한 비즈니스에서만 사용되는 것이 아니라,
아주 일반적인 목적에서 사용될 수 있는 형태의 애플리케이션을 말한다.
ex) 게시판(제로보드, 엑스잇), 블로그(워드프레스, 텍스트큐브), 사이트 빌더(두루팔, 엔진엑스, 제로보드), 포럼형 게시판(PhpBB, 외국에서 많이 사용) 등
이런 기능이 필요할 경우, 우리가 직접 구현하는 것이 아니라,
이런 웹 어플리케이션을 다운받아서
Web Hosting이나 클라우드 컴퓨터나 자신의 컴퓨터에 직접 설치해서 서비스를 할 수 있다.
PHP 애플리케이션은 작은 규모의 서비스에서도 많이 사용되지만,
굉장히 큰 규모의 서비스에서 사용하는 경우도 꽤 많다.
ex) 위키피디아, 페이스북 등
PHP의 장점 ⑤
PHP는 Personal Homepage Tools라는 이름에서 보듯이
상당히 실용적인 목적으로 만들어진 언어이다.
그래서 사람들이 쉽게 사용할 수 있어야 한다는 방향성을 가지고 발전했기 때문에
배우기가 쉽다.
다른 언어도 근본적인 원리는 비슷하기 때문에,
PHP를 먼저 배우면, 다른 언어를 배울 때 훨씬 수월하다.
PHP의 단점 ①
Web only - 웹을 위한 언어로 만들어졌기 때문에,
웹 외의 용도로는 사용되기 어렵고, 실질적으로 사용하지 않는다.
하지만 이것이 단점이라고 하기에는
웹이 너무나 중요한 프로그래밍의 대상이다.
PHP의 단점 ②
오픈소스 커뮤니티에서 만들어진 시스템이다보니,
많은 사람들의 손을 타서, 일관성이 없어서 예측성이 떨어진다.
→ 기억해야 할 것이 많다.
ex) 기능의 이름의 일관성, 함수 인자의 위치나 이름의 일관성
PHP의 단점 ③
사람들이 쉽게 배우도록 하려다 보니,
사람들이 프로그래밍에서 어려워하는 것을 제거했고,
덜 엄격하다.
→ 프로그램을 실행하는 과정에서 오류가 일어날 확률이 높다.
(동전의 양면)
'PHP > 생활코딩' 카테고리의 다른 글
5/22 생활코딩 (0) | 2020.05.22 |
---|---|
5/21(4) 생활코딩 (0) | 2020.05.21 |
5/21(3) 생활코딩 (0) | 2020.05.21 |
5/21(2) 생활코딩 (0) | 2020.05.21 |
5/21 생활코딩 (0) | 2020.05.21 |
댓글