이고잉의 생활코딩 #1~#2

알기 2014. 4. 24. 13:36

<이고잉의 생활코딩 1>



* 4월 24일 오전 9시~ 오후 1시

* 강사: 이고잉 (예전에 티스토리 개발을 했다고 함!)


왜 난 IT기업에 4년째 다니면서 이런 공부를 처음했을까.

상품기획을 하며 무수히 썼던 HTML 이니 CSS니... 처음 제대로 이해한 시간이었다. 

이 수업이 끝나면 "작심 40시간 라이브"를 꼭 완주하겠다. 

* 참고: 이고잉의 생활코딩: https://opentutorials.org/course/1




웹의 기본개념

시작은 웹과 인터넷은 같은가?에 대한 질문으로 시작


1) 웹: 1990년 탄생, 팀버너스리가 웹의 창시자

=> ftp/ : 웹과 이메일은 형제

=> 웹이나 이메일같은 아이들이 동작할 수 있도록 하는 플랫폼이 인터넷

=> 웹은 점점더 방대하고 거대해짐(수많은 기술의 집합, 가장많이 활용되고, 가장많은 개발자가 웹개발)

=> 팀버너스리: 최초의 웹브라우저를 만들고, 웹서비스를 제공하는 웹서버를 만들고, 프로토콜(http)고안, 웹문서(html)도 만듬 "혼자서"/ 그리고 퍼블릭 도메인으로 오픈/ 그담 IE, 모질라 등이 생겨나며 폭발적으로 성장

=> 즉 웹의 핵심: (웹이라는 테두리 안의 핵심구성요소)


(초창기): 매우 간결 => 웹 뿐아니라 앱등 모든 서비스(통신)의 기본개념

1. 클라이언트=웹브라우저 (갑)

2. 서버 (을)


그리고, HTML


*갑이 을에게 url로 정보를 요청(request)하면, 을은 정보를 찾아서 응답(response)

*서버에는 웹브라우저의 카운터파트너로서 설치된 소프트웨어인 '웹서버'가 있음

*즉 웹브라우저와 웹서버는 서로가 파트너

*daum.net/main.html => 서버가 위치하고 있는 곳의 위치=> 즉 url을 치면 해당 주소의 웹서버로 찾아감=> main.html 파일을 찾아서 다시 쏴줌=> 그러면 웹브라우저에 그려줌


(폭발적성장을 통해): 

* 웹브라우저에 표시해야 하는 다양한 콘텐츠가 생겨나고, 엄청난 트레픽이 생겨나고, HTML와 링크만으로는 감당할 수 없는 상황이 생김

=> 그래서 생겨난게, PSP, SP, 파이선, 자바 등의 개념이 생겨남

=> 그 뒤에 데이터 베이스 등... 생겨남



2) 인터넷: 인터넷이 웹을 포괄함 (1970년 탄생)

=> 모든 서비스와 하드웨어의 네트워크, 전세계에서 가장 큰 네트워크

=> 이중 하나가 이메일(이메일이 웹보다 훨씬 앞선 서비스)





코딩실습


1. 웹서버 설치하기

실습 https://bitnami.com/stack/wamp 다운로드

* bitnami를 깔면? => 아래의 것들을 한방에 설치 할 수 있도록 도와주는 프로그램

1) 웹서버가 깔린것(아파치)

2) PHP가 깔림

3) MySQL이 깔림

=> 즉, 내 컴퓨터가 서버가 된것임

(웹브라우저는 이미 깔려있고, 내 컴퓨터가 서버, 웹서버가 설치, 실행되는 것!)


1) http://localhost/ (혹은 117.0.0.1) => "웹브라우저가 설치된 현재 내컴퓨터 자체"

2) C:\Bitnami\wampstack-5.4.26-2\apache2\htdocs >index.html  ===> 이걸 읽어서 웹브라우저에 그려줌 => 그게 localhost로 표시된 첫 페이지의 html === http://localhost/(index.html 생략된거임)

3) 만약 열어서 Edit 하면 화면이 바뀜> 다른 사람 IP로 접속하면 또 그 사람 화면나옴


2. HTML(웹페이지의 정보를 담당)


* HTML 편집위해 sublime text 설치 (개발도구 중 하나, 예를 들면 git(버전관리도구)과 같은)

*HTML? Hypertext(문서와 문서가 링크로 연결되는 속성) Markup Language

<html>=> 이런거가 "태그" 

 <body>

    Here <b열리는태그>is</b닫히는태그> <a 부가정보(링크주소)href="http://www.daum.net" (새탭)target="_blank">daum</a>.

    <a href="http://www.daum.net"><img src="http://icon.daumcdn.net/w/icon/1404/23/160346244.jpg"/></a> 이미지 삽입> 거기에 링크추가

    <ul 그룹>

      <li 리스트>tistory</li>

      <li>miznet</li>

      <li>story ball</li>

      <li>miznet</li>

    </ul>


    <ol 숫자로그룹>

      <li>html</li>

      <li>css</li>

      <li>javascript</li>

    </ol>

 </body>

</html>

*href같이 데이터를 설명하는 데이터를 메타데이터라고 함

*body 안에 있는 정보들이 웹페이지에 설명되는 데이터


3. CSS (웹페이지의 외모를 담당) 시각적인 것을 표현하는 별도의 언어, html보다 복잡/ 배우는것 쉽지만 잘하는건 어려움;;


 <li style="color:red;text-decoration:underline">tistory</li>


여기서 style=html/ "color:red;text-decoration:underline"=css 언어


<html>

 <head>

  body {

    color:blue;

   }

  <style>

   body {

    color:blue;

   }

   ul { => 주어역할 , 즉 "ul태그안의 정보는"

    color:red; => 서술서역할 "빨간색" effect를 준다. 

   } *** 바디에서 블루를 적용했지만, 세부가 더 우선 적용 됨

    ol {

    color:blue;

    }

  </style>

 <body>

    <b>I Love <a href="http://www.daum.net" target="_blank">daum</a></b>.

    <a href="http://www.daum.net"><img src="http://icon.daumcdn.net/w/icon/1404/23/160346244.jpg"/></a>

    

    <ul>

      <li style="color:red;text-decoration:underline">tistory</li>

      <li>miznet</li>

      <li>story ball</li>

      <li>miznet</li>

    </ul>


    <ol> 

      <li>html</li>

      <li>css</li>

      <li>javascript</li>

    </ol>


 </body>

</html>


4. PHP


Hello world

<?php

echo"hello world";

?> 

=> http://localhost/index.php 들어가믄 hello world hello world


=> php는 웹서버가 처리할 수 없다고 받아들임

=> 웹서버 설정에 php는 처리를 못하니, php 엔진으로 넘겨라는 정보가 있음

=> 웹서버가 직접 처리 하지 않고 php프로그램이 해당문서를 찾고 읽어내고, 일반적인 텍스트 파일의 형식으로 다시 웹서버로 넘겨주고, 웹서버가 브라우저로 넘겨줌 

=> 웹브라우저 입장에서는 php는 transparent 즉, 해석할 수 없음(웹브라우저는 html, css 밖에 못읽음)


Hello world => 일반적인 텍스트로 생각하고 출력

<?php => php코드 시작/ php언어의 문법에 맞게 php엔진이 해석하여 텍스트만 웹서버로 전달

echo"hello world";

?> 


즉, 브라우저에서 소스를 까보면 단순텍스트로 나옴


Hello world


hello world


그럼 PHP는 왜 생겨났나? 언제쓰나?

- 만약 같은 글자를 수만번 똑같이 써야한다면? 배수를 천번까지 써야 한다면? 사람이 하기 힘듬

- 그래서 생겨난 것이 php

<?php

for($i=0;$i<1000;$i++)

echo"hello world".($i*2)."\n"

?>이런식으로 씀 ㅋㅋ


5. 프로그래밍


1) 데이터 타입: "string", "number", "bool(true) 같은 boolean//조건문에서 출력//4)번에서 설명


<?php

echo화면에 출력하라 "DAUM" (" 혹은 ' 따옴표 사이만 문자. 따옴표 없으면 화면에 출력이 안됨/에러);

?>


<?php

echo 12345;(숫자는 따옴표 없음);

?>


<?php

echo "12345";(이건 문자);

?>


<?php

echo 1+1; (화면에 2출력, "1+1" 하면 그대로 1+1이 출력)

?>



2) 변수와 산술연산자


<?php

$a = 1;

$b = 2;

echo $a + $b;

$b = 3;

echo $a + $b;

?> => 화면에는 3,4가 출력


<?php

$a = 2;

$a = $a + 2;

$a = $a * 2; //8 (//주석)

$a = $a / 2;

echo $a

?> => 화면에는 4가 출력 (즉 a값만 바꾸면 아래 값들은 수정할 필요 없이 다 바뀜/ 즉 변수에만 관심을 가지면 함수에 다라 결과는 알아서 바뀜)


3) 비교연산자 

<?php

$a = 5;

$b = 2;

var_dump($a == $b) // 좌항과 우항이 같은지비교(==) 주의: 우항에 있는 값을 좌항에 대입하는 것 (=)

?>

=> 화면에 bool(false) 출력


<?php

$a = 2;

$b = 2;

var_dump($a <= $b)

?>

=> 화면에 bool(true) 출력


4) 조건문

<?php

if(true) {echo'True';

}

?>

=>화면에 True 출력/ if(false)면 출력안됨 => But 아무 쓰잘데기 없음(변수로 바꿔야함)


<?php

$a = 2;

$b = 3;

if($a == $b) {

echo'True';  

} else{

echo 'False';  // 만약 if가 아니면 else 이하를 출력

}

?>

=> 사용자입력한 패스워드랑 서버에 저장된 패스워드가 같으면 로긴/ 아니면 얼럿 이러한 로직에 수없이 구현


5) 반복문


<?php

while(true) {

echo 'loop';

}

?> // 의미없는 코드, 이렇게 하면? 무한루프ㅋㅋㅋㅋ (키보드가 안움직여 ㅋㅋㅋㅋ)


<?php

$i = 0;

while($i <10) {

echo "loop\n"; (\n 줄바꿈)

$i = $i + 1;

}

?> // 이렇게 하면? 10번만 루프가 돌거임

-----------


<html>

<body>

 <ul>

<?php

$i = 0;

while($i <10) {

echo "<li>loop</li>\n";

$i = $i + 1;

}

?>

 </ul>

</body>

</html>


// 이렇게 하면 html의 바디 내에 php 결과들이 출력



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


내일 배울 함수까지 하면, 프로그래밍의 기본개념은 대략 이해할 수 있음

그리고 데이터베이스/ PHP와 데이터 베이스 연결해서 서비스 만드는 방식 설명 예정

화이팅!




* 4월 25일 오전 9시~ 오후 1시

* 강사: 이고잉 


전날에 이어 프로그래밍의 마지막인 함수와 배열/ 그리고 데이타베이스


6)함수


6-1) 함수기본

<?php

function func() {

echo "<li>daum</li>";

}

?>


<html>

<body>

<ul>

<?php

func();

func();

func();

?>

</ul>

</body>

</html>

 => 화면에는 daum,daum,daum 세번 출력됨, 

 => 함수를 쓰게되면 유지보수의 용이성이 현저히 증가 (즉, 변경사항을 일일이 바꿀필요 없음)

 => 소프트웨어에서의 재사용성



6-2) 입력 (입력과 출력 input과 output =IO라고 흔희함)


<?php

function($item) {

echo "<li>{$item}</li>";

}

?>


<html>

<body>

<ul>

<?php

func('html');=> item이라는 변수는 html이라는 값이 들어감/ 즉, echo "<li>html</li>"; 의 과정을 통해 화면에 html이 출력됨 즉, html을 '입력'

func('css');

func('php');

func('mysql');

?>

</ul>

</body>

</html>


** 이 함수를 2개의 입력값을 받을 수 있는 형태로 바꾸면??


<?php

function func($item, $hour) {

echo "<li>{$item},{$hour} hour</li>";  

}

?>


<html>

<body>

<ul>

<?php

func('html', 1); =>2개의 입력값이 들어가서, 화면에 html, 1hour가 출력이 됨

func('css', 2);

func('php', 4);

func('mysql', 3);

?>

</ul>

</body>

</html>


6-3) 출력

=>echo를 return으로 바꿔주면

echo func('html', 1); 가 실은 echo "html, 1hour"로 바꿔 준것임???


<?php

function func($item, $hour) {

return "<li>{$item},{$hour} hour</li>";

}

?>


<html>

<body>

<ul>

<?php

echo func('html', 1);

func('css', 2);

func('php', 4);

func('mysql', 3);

?>

</ul>

</body>

</html>


=> 다시한번 쉽게 설명

<?php

function func() {

return 1;

}

echo func();

echo func();

echo func();

echo func();

echo func();

echo func();

?>


=> 왜 꼭 return을 쓸까?

위에서 echo 즉 출력으로 설정하면 출력값으로 밖에 못쓰지만

return을 하면 echo 뿐 아니라 email 발송, 저장 등등등 다양한 용도로 func 값을 활용할 수 있음

=> 소프트웨어의 재사용성이 더 높아짐!



7)배열

<?php

$client = array('html','css','js');

$server = array('php','mysql');

echo $client[0];

?>


=> 1반 학생들 그룹핑, 2반 학생들 그룹핑해놓고, 1반 집합 하면 전부 모을 수 있음

=> 좌측부터 숫자부여, 읽어옴 (1반에 27번 나와봐) echo하면 0이 첫번째 => html 출력


<?php

$client = array('html','css','js');

$server = array('php','mysql');

echo count($client);

?>


=> client 안에 배열되어 있는 구성의 총 수는? 3

=> count는 함수 (built-in 함수, 정의하지 않아도 되는 함수, php.net에 들어가면 빌트인 함수 알수 있음)


<?php

$client = array('html','css','js');

$server = array('php','mysql');

array_push($client, 'tb'); => clinent에 값 입력

var_dump($client); => array 안의 내용 모두 출력

echo count($client);

?>


** 배열의 효용은 반복문과 합쳐질때 더욱 힘을 효율적

<?php

$client = array('html','css','js');

$server = array('php','mysql');

array_push($client, 'tb');

$i = 0;

while($i < 3){

echo $client[$i];

$i = $i + 1;

}

?>


=> 반복문이 호출될때 마다 호출되는 값= client 내의 인덱스

=> 즉 3이하로 출력이 되는 3번을 client 내에서 3번 불러옴


<?php

$client = array('html','css');

$i = 0;

while($i < 3){

echo $client[$i];

$i = $i + 1;

}

?>

=> 만약 이렇게 되면 3개가 없어서 ERROR/ 이상함;;


<?php

$client = array('html','css');

$i = 0;

while($i < count($client)){ =>이렇게 바꿔주면 안에 있는 숫자만큼

echo $client[$i];

$i = $i + 1;

}

?>


=>DB안에 글목록 혹은 회원 정보를 배열로 가져와 반복문과 결합하여 

while을 통해 html 코드를 만들어서 화면에 리스트를 뿌려줌



데이터베이스


* 엑셀처럼 정보를 구조화/저장하는 도구

* 둘의 차이는 구조화 되어 있으냐? 구조화 되어 있지 않느냐? 의 차이

- 워드에서는 서술하지만, 엑셀에서는 틀을 짬

- 워드: 나는 제주에 사는 꼬꼬마이고 여자이다. 

- 엑셀: no/이름/사는 곳/ 이런식으로 "구조화"

  =구좌화를 통해 일목요연하게 데이터를 정렬하고, 기준에 따라 정열도 하고 필터를 통해 기준에 대항하는 데이터만 출력도 가능


=> 하지만 데이터베이스에서는 SQL을 씀


-Strectuered 구좌화된 정보를 

-Query 질의하는(조회, 추가, 삭제 등등)

-Language 언어


** bitnami> myadmin >root/111111


#데이터베이스 기초 (https://opentutorials.org/course/488/2611)


- 클라이언트: SQL이라는 언어(매개체)를 통해 서버에 전달

  * 클라이언트의 종류: phpMyadmin 등... 웹브라우저 처럼 서버에 접근하기 위한 개념

- 서버: SQL을 해석해서 명령하는 작업을 처리 (마치 웹서버처럼)

         데이터를 관리하기 위한 전문적인 시스템

         (컴퓨터에서는 파일과 같은 개념/ BUT 개인이 활용할 수 있는 아주 간단한 개념)


"웹서버에 온 명령 안에 PHP가 있으면 PHP엔진으로 넘김 (이때는 PHP엔진이 서버, 웹서버가 클라이언트)

이때 안에 DB접속해야 하는 명령이 있으면 

PHP 엔진이 mySql(데이터 베이스)에 요청 후 응담 받아서 (이때는 PHP에진이 클라이언트, DB가 서버)

다시 웨서버로 던지고, 웹브라우저로 나옴

** 그래서 PHP엔진이나, mySql 같은 아이를 '미들웨어'라고도 함

** 서버와 클라이언트는 가변적/ 웹과 DB들이 서로 협력하여 동작"


tip)우리가 쓸 phpMySql은 웹기반이고, php와의 혼용 사용에 편리하여, 콘솔 띄우는 방식 보다 편리함~



데이터베이스는 기본적으로 인증시스템을 거침(아무나 접근X)

- root/111111 로 들어왔다 = 서버로 일단 진입

- 서버안에 들어오면 각각의 데이터베이스가 존재 (디렉토리와 같은 개념/카테고라이징)

- 그리고 그 안에는 테이블이 존재 (마치 엑셀문서처럼 구좌화)


** 데이터베이스 구조: 서버> 데이터베이스>테이블>데이터(열과 행)


#데이터베이스 실습


1) 데이터베이스 생성 (https://opentutorials.org/course/488/2611)

CREATE DATABASE opentutorials CHARACTER SET utf8 COLLATE utf8_general_ci; 

SQL에 넣고 새로고침 해보면/ 서버에 opentutorials 테이블이 생성되었음


2) 명령어

>데이터베이스 만들기

CREATE DATABASE opentutorials CHARACTER SET utf8 COLLATE utf8_general_ci; 


>특정 데이터베이스로 작업시작하기

use opentutorials;


>테이블 생성

CREATE TABLE topic (

    id  int(11) NOT NULL AUTO_INCREMENT,

    title  varchar(255) NOT NULL ,

    description  text NULL ,

    created  datetime NOT NULL ,

    PRIMARY KEY (id)

);


>데이터 입력 (topic 열에 데이터 입력)

INSERT INTO `topic` (title,description,created) VALUES ('JavaScript란', '<h2>\r\n    자바스크립트는</h2>\r\n<ul>\r\n  <li>\r\n      브라우저에서 실행되는 언어</li>\r\n   <li>\r\n      가장 많이 사용되는 언어</li>\r\n    <li>\r\n      주로 html을 프로그래밍적으로 조작하기 위해서 사용됨</li>\r\n</ul>\r\n<h2>\r\n  예제</h2>\r\n<ul>\r\n <li>\r\n      자바스크립트는 3가지 방식으로 사용됨</li>\r\n <li>\r\n      외부의 파일을 로드</li>\r\n   <li>\r\n      &lt;script&gt;태그 사이에 기술</li>\r\n  <li>\r\n      태그에 직접 기술</li>\r\n</ul>\r\n<h2>\r\n   참고링크</h2>\r\n<ul>\r\n   <li>\r\n      <a href=\"http://www.maroon.pe.kr/webmaster/java/java_study.html\" target=\"_blank\">스크립트 세상</a></li>\r\n <li>  \r\n</ul>\r\n', now());

INSERT INTO `topic` (title,description,created) VALUES ('변수와 상수', '<p>\r\n    변수란</p>\r\n<ul>\r\n <li>\r\n      변하는 값</li>\r\n    <li>\r\n      x = 10 일 때 왼쪽항인 x는 오른쪽 항인 10에 따라 다른 값이 지정된다.</li>\r\n</ul>\r\n<p>\r\n 상수란</p>\r\n<ul>\r\n <li>\r\n      변하지 않는 값</li>\r\n <li>\r\n      x = 10 일 때 오른쪽항인 10이 상수가 된다.</li>\r\n</ul>\r\n<pre class=\"brush: xml\">\r\n&lt;script type=&quot;text/javascript&quot;&gt;\r\n&nbsp;&nbsp;&nbsp; // x의 값이 오른쪽 항에 따라서 변한다.\r\n&nbsp;&nbsp;&nbsp; // x가 변수라는 명시적인 의미\r\n&nbsp;&nbsp;&nbsp; var x = 10;\r\n&nbsp;&nbsp;&nbsp; alert(x);\r\n&nbsp;&nbsp;&nbsp; var x = 20;\r\n&nbsp;&nbsp;&nbsp; alert(x);\r\n&lt;/script&gt;</pre>\r\n<p>\r\n   &nbsp;</p>\r\n', now());

INSERT INTO `topic` (title,description,created) VALUES ('연산자', '<p>\r\n   연산에 사용되는 기호들. (y = 5 일 때)</p>\r\n<table class=\"table\">\r\n    <tbody>\r\n       <tr>\r\n          <th align=\"left\" width=\"15%\">\r\n             Operator</th>\r\n         <th align=\"left\" width=\"40%\">\r\n             Description</th>\r\n          <th align=\"left\" width=\"25%\">\r\n             Example</th>\r\n          <th align=\"left\" width=\"20%\">\r\n             Result</th>\r\n       </tr>\r\n     <tr>\r\n          <td valign=\"top\">\r\n               +</td>\r\n            <td valign=\"top\">\r\n               더하기</td>\r\n          <td valign=\"top\">\r\n               x=y+2</td>\r\n            <td valign=\"top\">\r\n               x=7</td>\r\n      </tr>\r\n     <tr>\r\n          <td valign=\"top\">\r\n               -</td>\r\n            <td valign=\"top\">\r\n               빼기</td>\r\n           <td valign=\"top\">\r\n               x=y-2</td>\r\n            <td valign=\"top\">\r\n               x=3</td>\r\n      </tr>\r\n </tbody>\r\n</table>\r\n', now());

INSERT INTO `topic` (title,description,created) VALUES ('JSON', '<h2>JSON이란?</h2>\r\n\r\n<p>서로 다른 언어들간에 데이터를 주고 받는 여러 방법이 있다. 대표적인 것이 XML인데, XML은 문법이 복잡하고, 엄격한 표현규칙으로 인해서 json 대비 데이터의 용량이 커진다는 단점이 있다.</p>\r\n\r\n<p>JSON은 경량의 데이터 교환 형식으로 JavaScript에서 숫자와 배열등을 만드는 형식을 차용해서 이것을 다른 언어에서도 사용할 수 있도록 한 텍스트 형식이다.&nbsp;</p>\r\n\r\n<p>아래 예제는 위의 예제에서 전송한 데이터를 받아서 몇가지 부가정보를 추가해서 json으로 인코드한 후에 다시 반환하는 PHP 코드다.&nbsp;</p>\r\n\r\n<p>json.php - (<a href=\"https://github.com/egoing/codingeverybody_javascript/blob/master/JSON/json.php\" target=\"_blank\">github</a>)</p>\r\n\r\n<pre class=\"brush: php\">\r\n&lt;?php\r\n$userinfo = json_decode($_GET[&#39;data&#39;]);\r\n$userinfo-&gt;address = &#39;seoul&#39;;\r\n$userinfo-&gt;phonenumber = &#39;01023456789&#39;;\r\necho json_encode($userinfo);\r\n?&gt;</pre>\r\n\r\n<h2>json의 형식</h2>\r\n\r\n<h3>object</h3>\r\n\r\n<p>객체는 아래와 같은 문법을 가지고 있다.</p>\r\n\r\n<p>예제</p>\r\n\r\n<p>{&quot;userid&quot;:&quot;egoing&quot;,&quot;pwd&quot;:&quot;12345567&quot;}</p>\r\n\r\n<p><img height=\"113\" src=\"http://www.json.org/object.gif\" width=\"598\" /></p>\r\n\r\n<h3>array</h3>\r\n\r\n<p>배열은 아래와 같은 문법을 가지고 있다.&nbsp;</p>\r\n\r\n<p>예제</p>\r\n\r\n<p>[1,2,3,4]</p>\r\n\r\n<p><img height=\"113\" src=\"http://www.json.org/array.gif\" style=\"line-height: 1.8em;\" width=\"598\" /></p>\r\n\r\n<h3>Value</h3>\r\n\r\n<p>위에서 사용된 Value는 값을 의미하는데&nbsp;큰 따옴표로 묶인 문자나 숫자, 불린 값이 사용된다.</p>\r\n\r\n<p>예제</p>\r\n\r\n<ul>\r\n  <li>문자 : &quot;헬로우 월드&quot;</li>\r\n    <li>숫자 : 1</li>\r\n <li>불린 : true</li>\r\n</ul>\r\n\r\n<p><img height=\"278\" src=\"http://www.json.org/value.gif\" width=\"598\" /></p>\r\n', now());


>데이터베이스 클라이언트에서 질의해서 데이터 불러오기

SELECT * FROM topic

: topic 테이블 안에 있는 id, title, decription 표가 나옴


> 이중 필요한 데이터만 보기

SELECT id, title, created FROM topic


> 조건검색하여 보기

SELECT id, title, created FROM topic WHERE id=1; //id가 1인 데이터만 출력


앗, 그런데 id는 정해주지 않았는데 어떻게 데이터가 있지? (AUTO_INCREMENT 명령어를 입력했기 때문임, 1씩 자동으로 증가해줌)



수업의 완성: 데이터를 잘 버물려서 사용자에게 전달하기!



<?php

mysql_connect('localhost', 'root','111111'); // 서버까지 들어가기

mysql_select_db('opentutorials'); //데이터베이스까지 들어가기

$result = mysql_query("SELECT * FROM topic"); //결과를 얻을 테이블까지 들어가기

$row = mysql_fetch_array($result); // 그리고 배열로 row라는 변수로 가져오기

var_dump($row); // 화면에 표시

$row = mysql_fetch_array($result);//한번실행하면 1행출력, 두번실행하면 2행출력

var_dump($row);

?>

<html>

<body>

     <ul>


     </ul>

</body>

</html>


* 반복문과 결합! (모든 row 를 매번 불러올 수 없으니)

<?php

mysql_connect('localhost', 'root','111111');

mysql_select_db('opentutorials');

$result = mysql_query("SELECT id, title FROM topic");

while($row = mysql_fetch_array($result)){

echo $row['id'],',',$row['title'];

}



?>

<html>

<body>

     <ul>


     </ul>

</body>

</html>



=> 화면에 1,JavaScript란2,변수와 상수3,연산자4,JSON 출력



(최종)

<?php

mysql_connect('localhost', 'root','111111');

mysql_select_db('opentutorials');

$result = mysql_query("SELECT id, title FROM topic");

?>

<html>

<body>

     <ul>

      <?php

      while($row = mysql_fetch_array($result)){

   echo'<li><a href="view.php?id='.$row['id'].'">' . $row['title'] . '</li>'; // 페이지 url에 id 대로 쭉~ 나열되는 형태, 흔희 웹에서 보는

         }

         ?>


     </ul>

</body>

</html>



=> 자... 이제 기억을 더듬어 잘 생각해보세~



veiw.php 생성해서 view링크에 해당하는 페이지 생성 (빌트인 기능)

<?php

$_GET['id']

?>


그런다음 페이지에 내용을 넣으면? 링크세부 페이지 생성! 신기방기

* 이렇게 해서 우리는?

@데이터는 안전하게 저장

@php코드만 바꾸면 수많은 데이터의 디자인을 한꺼번에 변경

@Html과 CSS를 통해 페이지에 이쁘게 표현



<여기서 밝혀지는 진실하나>

* 웹브라우저는 실은 네트워크 통신을 못함

* 유저 요청(url)이 오면 웹브라우저는 OS(운영체제)에 요청하고, LAN카드 등을 통해서 인터넷에 접속 함

* 그리고 DNS(도메인 네임 서버)에 요청을 전달함 (DNS서버는 전세계 모든 클라이언트 및 서버의 IP를 알 수 있음)

* 유저가 원하는 도메인의 서버를 OS에게 알려줌

* 그럼 OS가 라우터에게 물어보고, 그 라우터에게 물어보고, 물어물어 진짜 서버의 IP를 찾아감

* 서버의 LAN카드로 요청이 가면 또 OS로 가게 되고, 접속한 유저의 접속 형태에 따라 적절한 프로그램을 호출함

* 운영체계에 깔려있는 수많은 웹서버들(예, 아파치 같은)이 리스닝하고 있다가, 웹서버 활성화 되며 우리가 배운 프로세스대로 처리 



=>전세계의 모든 라우터가 서로 엄청난 네트워킹을 통해 거대한 시스템이 생겨난 거임...이것도 감동

=>라우터가 많아야 속도가 빠름(미국은 라우터가 많이 없어서 느리다함...)



잊지말고 디벨롭-

우선은 소프트웨어 공학책부터 공부!










'알기' 카테고리의 다른 글

직장인의 효율적인 시간관리  (1) 2014.04.09

설정

트랙백

댓글

직장인의 효율적인 시간관리

알기 2014. 4. 9. 15:37

수홍님은 하루 4시간잠을 자고 효율적인 시간관리를 통해서 AICPA, CFA 자격증을 취득.

그의 장기목표인 "인터넷 비즈니스 전문가 + 재무전문가"를 향해 나가가고 있는 대다나신 분.




<강의제목: 바쁘다는 건 다 핑계다.>

* 스페이스닷원/ 4.9 오전 11시, 강사 박수홍님


Chapter 1. 목표설정

1. 장기목표 : 60세에 난 OO의 전문가가 될것이다 등


2. 중단기목표: 장기목표를 이루기 위해 중간중간 체크할 수 있는 짧은 기간의 목표


3. 성향파악: 아무리 멋진 목표라도 나에게 맞는 목표인지. 

  (앞으로 술을 먹지 않고 3년간 4시간만 자고 영어공부할거야 X => 나를 잘 모르는 목표)


4. 다중목표: 하나의 성과가 다양한 목적을 이룰 수 있다면 금상첨화


Chapter 2. 동기부여

우리는 왜 영어공부를 못하는가?

잠>> 영어<<사교 (공감 백퍼!)


작심삼일이 되는 것은 의지가 약한 것이 아니라, 동기부여가 덜되었기 때문. 

지속적인 동기부여, 스스로가 공감할 수 있는 동기부여를 통해 목표를 지속적으로 실천할 수있다. 


Chapter 3. 시간관리

1. 내 시간 알기: 나는 어떻게 시간을 활용하고 있는가?

이를 알기위해 수홍님은 5분단위로 자신이 한 일을 체크/ 7년간 지속하며 / 통계로 관리를 하고 있다함

=> 즉 내가 회의에 너무 많은 시간을 쓰는 것으로 나오면 회의 시간을 줄임


2. 선택과 집중: 핵심과제에 집중

핵심과제 와 보조과제로 업무를 양분화

* 핵심과제: 집중적 시간투자

* 보조과제: 잊어버리기 (스케줄러 혹은 알람이용하여 일정맞게 처리만/ 머리속에서 지워버리기)


3. 할수 있는 일은 미리하기

어차피 내가 해야 할 일은 알고 있고, 추후시간 활용을 위해 미리할 수 있는 일은 미리한다


4. 같은 맥락에서 자투리 시간활용하기


5. 후회 최소화하기

Regret for wasted time is more wasted time. -(Mason Cooley)


6. 건강과 휴식





수홍님처럼 5분단위로 시간을 쪼개서 계획하고 분석할 자신은 없다. 

하지만 중장기 목표수립/ 나에게 맞는 시간활용계획

무엇보다 이러한 것들을 염두에 두고 생활하는 사람과 그렇지 않고 하루하루 흘려 보내는 사람은

하루 24시간으로 해낼 수 있는 퍼포먼스가 상당히 다를 거라는 것에는 공감. 


나의 목표, 나만의 시간관리 노하우를 생각하고 정리하는 중요한'시간'을 가져야 겠다. 







'알기' 카테고리의 다른 글

이고잉의 생활코딩 #1~#2  (1) 2014.04.24

설정

트랙백

댓글