happy cat image

everdevel

우리 모두의 웹 입문, 에버디벨

UI 변경

에버디벨의 완성 :: 웹코딩 시작하기

안녕하세요.
에버디벨 운영자입니다.
여러분이 늘 이용해 주셔서 하루 5명 오는 사이트가 1000명이 오는 사이트가 되었고,
또 그 이유로 사이트를 운영을 멈추지 않아 저같은 평범한 사람이 책까지 쓸 수 있게 되었습니다.
여러분이 찾지 않았다면 진작 사이트 접었습니다.
저의 웹개발 경력 2년을 쏟아내어서 6개월의 집필, 8개월의 교정기간을 거쳐 [웹코딩 시작하기]가 출간했습니다.
웹코딩 시작하기는 HTML5를 시작으로 CSS3 -> jQuery를 학습합니다.
그리고 앞에서 배운 내용으로 간단한 소통사이트를 반응형으로 제작합니다.
보통의 책은 HTML5 + CSS3로 끝나고 혹은 HTML5 + CSS3 + jQery로 끝나지만 웹코딩 시작하기는 여기서 끝내지 않았습니다.
그 다음 바로 데이터베이스중 하나인 MySQL를 학습하고, 그 이후 PHP를 학습니다. 그리고 앞에서 만든 소통사이트에 회원가입, 로그인 기능은 기본으로 진행하며, 스크롤이벤트를 이용하여 스크롤을 내리면 AJAX를 작동시켜 게시물을 더 불러오는 기능을 구현하고 자기의 로그기록을 파일에 쓰기, 그 밖에 자신의 프로필사진, 커버사진 등록, 댓글 쓰기등의 기능을 적용합니다.
본서는 웹코딩을 처음하는 사람이 하나에서 끝나지 않고 처음부터 시작해 프로젝트까지 완성해가며 전체적으로 시스템이 어떻게 작동하는지 전반적으로 알게하기 위해 태어났습니다.
적어도 지구에서 가장 친절한 웹 입문서라고 생각하는 책입니다.
에버디벨로 부족하셨다면 웹코딩 시작하기를 추천합니다.

어제보다 나은 나, 오늘 보다 나을 내일의 나를 만드는 :: 웹코딩 시작하기

지은이 : 에버디벨 만든사람

목차보기

종이책 구입하기

전자책 구입하기

PART 1. 프론트엔드 HTML5 + CSS3 + jQuery

CHAPTER 1. HTML5

1. HTML5 소개

2. 메타 태그

3. 텍스트 태그

4. 이미지 태그

5. 하이퍼링크 태그(a 태그)

6. 리스트 태그

7. form 태그

8. 공간 태그

9. video 태그

11. svg와 canvas

12. table 태그

CHAPTER 2. CSS3

1. CSS 소개

2. CSS를 적용하는 세 가지 방법

3. 선택자(selector)

4. 텍스트를 꾸미는 CSS 요소

5. 가로 길이와 세로 길이 조정하기

6. 텍스트가 영역을 벗어날 때

7. HTML 엘리먼트의 위치 변경하기

8. 배경 꾸미기

9. 외곽선 긋기

10. float와 clear

11. 박스의 바깥 여백 설정하기

12. 박스의 안쪽 여백 설정하기

13. CSS 리셋

14. 애니메이션

15. transform

16. transition

17. display

18. 반응형 웹

19. 반응형으로 간단한 레이아웃 만들기

20. SVG 태그

CHAPTER 3. jQuery

1. jQuery 시작하기

2. 셀렉터

3. 엘리먼트 보이기와 숨기기

4. 클릭했을 때 무언가 하기

5. 마우스 포인터를 요소 위에 올릴 때 무언가 하기

6. 제이쿼리로 CSS 적용하기

7. 변수 사용하기

8. HTML 엘리먼트에 있는 텍스트 변경하기

9. HTML 태그 제어하기

10. 애니메이션 기능

11. 엘리먼트에 클래스 추가, 삭제하기

12. 엘리먼트의 이동

13. 폼 태그의 값 조정

14. 포커스

15. this 사용하기

16. 연산자

17. 함수 만들기

18. 변수에 대해서

19. 글로벌 변수와 로컬 변수

20. 조건문

21. 반복문

22. 스크롤 이벤트

23. AJAX

24. canvas 태그(HTML5)

project 나의 첫 웹서비스 만들기

CHAPTER 1. 나의 첫 웹서비스 프로젝트 소개

CHAPTER 2. 나의 첫 웹서비스 만들기 프로젝트 - front end

1. 메인 페이지 만들기(index.html)

2. 나의 페이지 만들기(me.html)

3. 모두의 페이지 만들기(all.html)

PART 2. 백엔드 MySQL + PHP

CHAPTER 1. MySQL

1. 데이터베이스란?

2. MySQL 시작하기

3. 데이터베이스 만들기

4. 테이블

5. 필드의 데이터 크기와 데이터형 지정하기

6. 테이블 생성하기

7. 필드의 추가, 수정, 삭제

8. 테이블 삭제하기

9. 테이블에 데이터 입력하기

10. 데이터 불러오기

11. 데이터의 값을 변경, 삭제하기

12. 테이블 초기화

13. 2개 이상의 테이블 사용하기(JOIN)

14. 집계함수

15. 그룹별 집계

16. 출력 결과의 정렬

17. 불러올 레코드 수 지정하기

18. 2개 이상의 테이블을 묶어 사용하기

19. 쿼리문 안의 쿼리문 서브쿼리

20. 특정 필드에 같은 값을 넣지 않는 방법

21. 서로 다른 필드의 값을 합쳐서 출력하기

22. 검색을 더욱 빠르게 하는 인덱스

CHAPTER 2. PHP

1. PHP 소개

2. 출력문

3. 주석

4. 변수

5. 연산자

6. 배열>

7. 데이터형

8. 조건문

9. 반복문

10. 함수

11. 함수 만들기

12. POST와 GET

13. 기능의 사물화

14. 코드의 재활용

15. PHP와 MySQL의 연동

16. 상수

17. 정규 표현식

18. 파일 업로드

19. 디렉터리 함수

20. 파일 함수

21. Anchor 태그의 ping 속성과 AJAX

22. 쿠키와 세션

23. 객체지향 프로그래밍

project 나의 첫 웹서비스 만들기

CHAPTER 3. 나의 첫 웹서비스 만들기 프로젝트 - back end

3-1. 회원가입 기능

3-2. 로그인, 로그아웃 기능

3-3. 게시물 등록하기

3-4. 게시물 불러오기

3-5. 댓글 등록하기

3-6. 댓글 불러오기

3-7. 게시물 공감하기

3-8. 모두의 페이지

3-9. 포토 업로드 기능

3-10. 나의 로그 만들기

파일 함수

파일의 3단계 입출력 작업

여는 단계 : 파일을 조작하기 전의 준비 단계로 파일 조작 방식, 파일 존재 확인, 메모리 공간을 확보하는 단계.
조작 단계 : 실제 파일을 읽거나 쓸 수 있는 조작 단계
닫는 단계 : 파일 조작에 사용하였던 메모리 등의 자원을 반환하는 단계

파일을 열어주는 함수 fopen()

파일을 닫아주는 함수 fclose()

fopen()함수는 문서, 그림 등의 외부 파일을 열어주는 함수이고, fclose()함수는 열린 파일을 닫아주는 함수이다.
fopen()함수는 열고 싶은 파일의 경로와 파일 모드 설정내용을 인자로 받아들이고, 파일 모드는 반드시 설정해야만 사용이 가능하다.
파일 경로에 파일을 찾지 못하게 되는 경우가 발생하면 false값을 반환한다.
fopen 함수로 파일을 사용한 다음에는 반드시 fclose 함수로 파일을 닫아주어야 한다.
$변수명 = fopen(파일명, 파일모드, 인쿠르트 경로)
$변수명 = fclose(fopen()함수로 설정한$변수명)

fopen() 함수의 파일 모드

r 파일 읽기 전용
w 파일 쓰기 전용(파일이 있으면 파일의 크기를 0으로 만들고, 없으면 새 파일을 만든다)
a 파일 쓰기 전용(파일이 존재하면 그 파일의 끝에 덧붙여 쓰고, 없으면 새 파일을 만든다)
r+ 파일 읽고 쓰기 전용
w+ 파일 읽고 쓰기 전용(파일이 존재하면 크기를 0으로 만들고 없으면 새파일 만든다)
a+ 파일 읽고 쓰기 전용(파일이 이미 존재하면 끝에 덧붙여 쓰고, 없으면 새 파일을 만든다)
b 바이너리 데이터로 설정(생략 가능)

파일 경로 구분시에
윈도우에서 파일을 불러올때는 슬래시 역슬래시 모두 경로 구분자로 사용된다. 그 외의 운영체제는 슬래시만 사용한다.

php image

그럼 fopen fclose 를 사용해 봅시다.
대상체가 될 이미지 파일을 htdocs폴더에 넣으시거나 소스내에서 이미지 파일의 경로를 직접 넣어주시면 됩니다. 저는htdocs 폴더에 이미지 파일을 넣고 구현하겠습니다.

<?php
 echo "fopen fclose 사용해보자 <br />";
 $fp = fopen("tyandyr.jpg","r");
 if($fp == null){
  echo "파일이 없습니다.<br />";
 }else{
  echo "파일을 열었습니다.<br />";
  echo "<img src='tyandyr.jpg'><br />";
  fclose($fp);
 }
?>

결과는 아래와 같습니다.

php image

이번엔 file_exists()함수에 대해서 알아보겠습니다.

이 함수는 파일의 존재 유무를 알려줍니다. 존재하면 1(참)을 반환하고 그렇지 않다면 0(거짓)을 반환하니다.
프로그래밍을할때 어떤 파일을 열고자 한다면 그 전에 유무를 확인한다면 에러를 사전에 방지할수있겠죠?. ㅋ 그럴때 유용할듯~~

file_exists(파일 경로)

아래의 소스로 테스트 해봅시당.

<?php
 echo "파일의 존재 유무를 확인하는 file_exists()함수 <br />";
 echo "찾으려는 파일 : kojiharu.txt <br />";

 $a = "kojiharu.txt";

 if(file_exists($a)){
  echo "kojiharu.txt 파일이 존재 합니다.<br />";
 }else{
  echo "kojiharu.txt 파일이 존재 하지 않습니다. <br />";
 }
?>
php image

이번에는 htdocs 폴더에 kojiharu.txt파일을 넣어서 테스트 하자.

php image

이번에는 존재한다고 한다. ㅋ

다음은 파일의 크기를 알려주는 함수인 filesize() 함수에 대해서 알아보자.

이 함수는 파일의 크기를 byte단위로 알려준다. 우리가 위에서 만든 kojiharu.txt로 테스트를 해보자

<?php
 echo "how to use the function filisize()  <br />";
 echo "the file kojiharu.txt has hello <br />";
 $size = filesize("kojiharu.txt");
 echo "the file size of kojiharu.txt is $size ";
?>
php image

파일 사이즈 크기가 5로 나왔다.
만약 hello다음에 스페이스를 눌렀다면 5가 아닌 6으로 나올것이고 엔터를 쳤다면 7로 나올것이다.
공백은 1바이트이다. 줄바꿈은 2바이트 인듯..
우리가 hello대신에 헬로우 라고 한글로 썻다면 6바이트가 나오게 된다. 1글자당 2byte이기 때문이다. 한글은..

이번엔

fread() - 데이터를 읽는 함수 - fread(파일 포인터, 크기)
fwrite() - 데이터를 쓰는 함수 - fwrite(파일 포인터, 내용)

에 대해서 알아보자

fread()함수는 파일 포인터 위치에서 크기만큼 읽어서 문자열을 반환해주고 2진수 파일인 바이너리로 읽는다.
파일 포인터란 파일의 주소값을 의미한다.
파일 주소부터 크기만큼 읽어들인다.

fwrite()함수는 파일을 기록하며, 파일 포인터 위치에 문자열을 기록하고 바이너리로 쓴다. length값이 주어지지 않았을 경우에는 주어진 문자열 길이만큼 기록하고, 실제 문자열보다 긴 문자열의 길이가 주어지면 문자열의 길이만큼만 기록한다.

이번에 해볼 내용은

A 라는 txt파일에 담긴 내용을 B라는 txt파일에 넣어보는 것을 해볼게요.

예를 들어 a.txt 안에 안녕하세요가 적혀져 있다면 b라는 파일을 만들고 그안에 안녕하세요를 집어 넣는것입니다.

<?php
 echo "파일의 내용을 읽어와 다른 파일로 기록하는 함수 <br />";
 $fn = "a.txt";
 echo "읽어올 파일 $fn <br />";
 if(file_exists($fn)){
  $fp = fopen($fn,"r");
  echo "file load success <br />";
  echo "다음은 $fn 의 파일 내용입니다. <hr /><br />";
 } else {
  echo "there is no file <br />";
  exit;
 }

 $content = fread($fp, filesize($fn));
 $content = str_replace("\n","<br>",$content);
 echo $content;

 $fw = fopen("b.txt","a");
 fwrite($fw,$content);
 fclose($fp);
 echo "<hr />";
 echo "file explorer <br />";
 echo "please confirm b.txt <br />";
?>

출력화면은 다음과 같습니다.

php image

그럼 htdocs폴더엣 b.txt.파일이 있는지 확인해보고 그 내용을 확인해보세요
그럼 위의 내용이 그대로 b라는 파일에 그대로 저장되어있습니다.

그럼 소스를 파헤쳐 봅시다.

php image

3행에 보이는 $fn = "a.txt"는 파일명을 $fn의 변수의 값으로 넣은것이죠.
5행에 보이는 if(file_exists($fn)) 은 이 파일이 a.txt라는 파일이 존재하는가의 여부를 따지며 존재한다면
6행에 $fp = fopen($fn,"r") 파일을 여는것입니다. r은 읽기 전용입니다.
그럼 파일을 열었습니다.

15행에서 읽어들이는 함수를 사용합니다. fread()함수는 첫번째 인자가 파일 포인터, 두번째는 크기 이죠?
그러므로 첫번째 인자에는 $fp를 적고 두번째는 크기인 filesize($fn)을 사용합니다.
filesize()함수가 파일크기 알려주는 함수이기 때문입니다. 물론 다른 변수를 선언후에 예를 들어
$fs = filesize($fn)을 했다면 그자리에 $size 를 해도 됩니다. 예를 들어서

$fs = filesize($fn) 을 선언했다면

15행에서 $content = fread($fp,$fs); 이렇게 쓸수도 있다는 뜻입니다.

16행에서는 str_replace 라는 함수를 사용했는데요. 이것은
a.txt에 있는 줄바꿈이 있는 곳에
태그를 넣어라 라는 뜻입니다.
즉 str_replace(인자1,인자2,인자3)은
인자1이 있는곳에 인자2를 삽입하라 라는 뜻입니다. 인자3은 대상체 입니다.

쉽게 말해서 인자3 안에서 인자1이 있는곳에 인자2를 넣어라 라는 뜻이죠.

즉 읽어 들여온 파일에서 엔터가 있는곳에 <br />을 넣어라 이뜻입니다. 엔터가 \n 입니다. 우리눈에 안보이죠.

그후에 echo $content 를 하면 a.txt.파일의 내용이 출력됩니다.

그다음 파일을 열었고 fopen("b.txt","a") 인데 a는 파일쓰기 전용 입니다. 파일이 존재하면 그 파일의 끝에 덧붙여 쓰고, 없으면 새 파일을 만드는 건데요 현재 파일이 없기 때문에 b.txt.라는 파일을 새로 만들게 됩니다.
만약 파일이 있다면 안만들고 그 뒤에 무언가를 쓰겟죠.

그리고 fwrite($fw,$content)는 b.txt에 a.txt.파일을 넣는다는 뜻입니다. $content가 들어가 있기 때문에
줄바꿈이 있는곳에는
태그가 삽입됩니다. 그후 데이터 기록후 파일 닫기를 수행

이번에는 디스크 공간을 확인하는 함수에 대해서 알아봅시다.

디스크의 전체 공간 확인 : disk_total_space("디스크명")
디스크의 여유 공간 확인 : disk_free_space("디스크명")

<?php
 echo "디스크의 저장공간과 전체공간을 확인해보자 <br />";
 echo "c드라이브의 전체 용량 <br />";
 $dsize = disk_total_space("c:/");
 $gsize = ($dsize / 1024 / 1024 / 1024);
 $by = number_format($dsize);
 $gb1 = number_format($gsize);

 echo " {$by} byte <br />";
 echo "GB단위로 바꾸면  {$gb1} GB <br /><hr />";
 echo "드라이브의 남은 용량 <br /><br />";
 $dsize = disk_free_space("c:/");
 $gsize = ($dsize / 1024 / 1024 / 1024);
 $by = number_format($dsize);
 $gb2 = number_format($gsize);
 echo " {$by} byte <br />";
 echo "GB단위로 바꾸면 {$gb2} GB <br />";
 $tot = ($gb2 / $gb1) * 100;
 $total = number_format($tot);
 echo " 전체 용량은 $gb1 이며 여유 용량은 $gb2 입니다. 전체공간중에서  {$total}% 사용중입니다. ";
?>
php image php image


위 소스에서

6 라인은 전체공간을 구해서 $dsize에 대입했구요
8 라인은 $dsize를 GB단위로 바꾸기 위한 것입니다.

기본 단위가byte로 되어있는데요 1024로 나누면 kilo byte 로 바뀌며 또 나누면 mega byte로 바뀌고 또 나누면 giga byte로 바껴요.

number_format()함수는 반올림하여 소수점 자리를 잘라주는 역할과, 3자리마다 콤마를 찍어주는 역할을 합니다.

그러므로 $gsize 값은 108.509377 인데 number_format 함수를 사용하면 108.509377 인데 109로 나오게 됩니다.
또한 gb1 도 콤마를 넣어줘서 116,511,055,872 이렇게 나오네요.

23라인은 비율을 구하기 위한 것이죠^^

그럼 다음 강좌에서..~

강좌로 돌아가기