로그인 --> 내가 사용자라는 것을 인증한다. 

쿠키를 헤더에 넣어서 보낸다. 세션을 위한 쿠키를 세션 쿠키라고 한다. (의미를 가지고있지는 않다.)


1970년1월1일 0시가 기준이다. (타임스태프) (유닉스시간) (Y2K버그)



타임스태프는 int 형이다.  


(자료형참고)

자료형크기저장 값의 범위
unsigned char1byte0 ~ 255
unsigned short2byte0 ~ 65,535
unsigned int4byte0 ~ 4,294,967,295
unsigned long4byte0 ~ 4,294,967,295



쿠키와 세션의 차이 


쿠키 : 클라이언트 --> 세션쿠키가 세션에 대응되는 값 이 저장되어있다. 

세션 : 서버 --> 


쿠키 탈취로 치명적인 것은 개인정보 탈취이다. 따라서 개인정보 확인시에 비밀번호를 한번더 입력해서 방지할 수 있다. 


쿠키로 인증하는 것 뿐만 아니라 쿠키 + ip를 통해서 인증을 요구하는 곳도 있다. 



인증 & 인가 (Authentication & Authorization)


인증 : 클라이언트가 자신이 주장하는 사용자와 같은 사용자인지를 확인하는 과정 ( ID & PASSWORD )

인가 : 권한부여, 클라이언트가 하고자 하는 작업이 해당 클라이언트에게 허가된 작업인지를 확인 ( 글쓰기, 글삭제, )


인증 : 알고있는 것( ID & PASSWORD, PIN<비밀번호와 다른> ), 가지고있는거( 보안카드, OTP, 민증 ),  나 그 자체( 지문, 홍채 ) 


#주민증이 나와서 인증을 할 수는 있지만 인가가 없기 때문에 술 담배를 살 수 없다. 


오탐과 정탐에 대해 알아보자


서비스가 민감 할 수록 다양한 인증을 필요로한다. ( 은행 공인인증서 비밀번호로 공인인증서를 복호화 하는 과정에 속하게 된다. 한번더 할때 - 서명한다.)



OTP ( one time password )


서버가 클라한테 임의의 숫자를 주고 클라가 그거 인증해서 인증을 성립시킨다. 

-> 둘이 알고리즘 하나를 공유한다. (ex *10 /3이라는 알고리즘) 시간을 가지고 임의의 값을 나타내 줄 수 있다. 

-> 시간은 알고 있을 수 있지만 알고리즘은 알 수 가 없다. 


*쿠키는 시간이 알려지면 취약하지만 OTP는 알고리즘이 알려지면 취약하다고 말할 수 있다. (알고리즘을 알아내는 것은 알아내기가 더 어렵다.)



전신기(모스) -> 전화기(무선으로 보낸다.)


0,1로 된 아름다운 직선은 없다. 실제로는 노이즈가 섞인 데이터들이 전송, 전달된다. 

역치값을 설정해서 어느정도 이상이면 높다고 생각해 줄 수 있다.


패리티검사(패리티비트) // 확장 아스키코드 char = 1바이트 = 2^8 = 256가지  => 총 256가지 

  // 기존 아스키코드 127가지 

한비트가 비어있는 것은 패리티 비트로 사용하기 위해 남겨 졌다. 홀수짝수를 확인해서 맨 앞에 홀수패리티 짝수 패리티를 적어서 보내준다. 

> 현재는 거의 안한다. 교과서적으로는 다른 레이어에서 검사를 해줄 수 있는데  팩트로 기술이 좋아져서 필요성을 느끼지 못한다. 


카이사르 ,시져암호(알파벳 자리이동) < 율리우스 카이사르 (가이어스 쥴리어스 시져) > 

비즈네르 암호 < 빈도수 > 


RSA


굴리엘모 마르코니 



HASH암호(16진수로 나타냄, 2^4승)

해쉬암호화라고 하지말자


md5 sha-1



BASE64 알고리즘 찾아보고 특징 알아보기

강한 충돌 회피, 약한 충돌 회피 

RSA

해시 테이블 



















'WEB (Feat.FOO) > 강의노트' 카테고리의 다른 글

6. FOO의 똥꼬쇼  (0) 2017.01.23
5. FOO의 똥꼬쇼 정리  (0) 2017.01.16
4. Foo의 똥꼬쇼 4번째  (0) 2017.01.11
3. FOO의 3번째 똥꼬쇼  (0) 2017.01.09
2. FOO의 똥꼬쇼 2번째  (0) 2017.01.04

라우터에 연결되어있는 mysql 연결 라우팅 하기


반복된걸을 모듈단위로 묶는다 재사용한다. 

묶을수 있으면 어지간하면 묶는다. 


exports로 connection을 빼준다.



mysql잘라내기해서 app.js같은곳에 db-con.js 새로 만들어 준다.

> 그곳에 넣어주고

> module.exports = connection; require했을때 connection 튀어나옴

> 소스코드 자체를 가져옴


const connection =require('./db-conn'); -> conncetion을 가져온다. 


---


따로 가져오면 

exports.connection = connection;

>const connection = require(./db-conn).connection


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


const connection = require(;./mysql;).connection

두번 다 해서




AJAX

새로고침 안되고 받아와서 뽑아내준다.  --> 자동완성(ajax)으로 구현했다.  // 젤 중요한거 : 새로고침을 하지 않아도 데이터를 받을수 있다. 

ajax로 요청한 데이터를 뒤로가기로하면 다없어지고 홈페이지 들어오기 전에 상태로 들어옴.(push state로 한다. PJAX<explorer사용불가>)


쿠키랑 세션이랑 사용하는게 HTML에서 연결을 끊어내기 때문이다. (요청하고 응답하고 나면 끝이기 때문이다.)


iframe 은 창 안에 새롭게 또 띄워주는 것 

'WEB (Feat.FOO) > 강의노트' 카테고리의 다른 글

7. 강의노트  (0) 2017.02.01
5. FOO의 똥꼬쇼 정리  (0) 2017.01.16
4. Foo의 똥꼬쇼 4번째  (0) 2017.01.11
3. FOO의 3번째 똥꼬쇼  (0) 2017.01.09
2. FOO의 똥꼬쇼 2번째  (0) 2017.01.04

node.js에서 라우터 나누기 

exports을 하면 require하는 순간 인자로 들어간다.

랜더링 : jade 문자열 자체를 넣을 수 있다.


__dirname --> 실행시킨 경로가 나온다.


URL에 대문자를 넣으면 안된다.


required 

<label> male 


label for ""

value id ="label name"


radio margin





1. url 시멘틱하게 만들어야한다. 동사는 x

2. 


CRUD 


GET   -> READ

POST -> CREATE 

PUT -> update

DELETE -> DELETE



url은 변하지 않는다. 다만 메소드만 가지고 구분한다. 


postman을 통해서 요청보낼수있다.


mysql깔아오기 

데이터 받은 것을 저장해보기




앞으로의 계획


글목록 -> 글쓰기

    | 

   글 -> 댓글


./을 통해 현재디렉토리라는 것을 표현한다.


app.js


-router = express.router            router ==""  

-require('/a') router          <----- export.router== router



----------


framework express


npm install express -g

express -h

npm install


우리가 사용할 익스프레스 설정가능

express에서 탬플렛 지정해준다.


.on 이벤트를 등록하는 것.

-------


SET NODE_ENV=production 을 통해 환경변수설정가능 오류메시지 안되게

SET NODE_ENV=               을 통해 환경변수를 


express를 통해 만들어서 거기서 만들어서 사용한다.


미들웨어 바디파서 , 쿠키파서는 찾아보자


ajax써서 레스트하게 만드는것이 목표다



'WEB (Feat.FOO) > 강의노트' 카테고리의 다른 글

7. 강의노트  (0) 2017.02.01
6. FOO의 똥꼬쇼  (0) 2017.01.23
4. Foo의 똥꼬쇼 4번째  (0) 2017.01.11
3. FOO의 3번째 똥꼬쇼  (0) 2017.01.09
2. FOO의 똥꼬쇼 2번째  (0) 2017.01.04

stack(변수)

heap(동적할당)


I/O-bound process : I/O작업하는게 많을 때 (process가 실행되는게아니라 요청을 하는거)

CPU-bound process : CPU 계산을 더 많이 할 때 (ex.채굴)


프로세스 상태

Diagram of Process State

New: 만들어진 상태(실행되기 위해)

running: 실행되고 있는 상태

waiting: 아직 실행되지 않았고 실행할 예정이 아닐 수 있고 

ready: 실행될 준비가 되어서 준비중, 잠시 중지 (리눅스 ctrl+z)

terminated: 프로세스 종료되어 없어지기 직전인 상태


# waiting에서 바로 running으로는 가지 않는다.



PCB: Process control Block (구조체형태로 저장하는것이 PCB다)

Switch from Process to Process (스위치할때 저장해야할 값을 말한다.)

(idle 휴면상태)


Process scheduling queue

- job queue    

- ready queue    : CPU실행되길 기다리고

- Device queue   : 하드에서 읽고 쓰길 기다리는 것

queue(줄)


Scheduler

DISK -> Program

MEMORY -> Process

CPU -> TASK(실행)

 -> JOB (처리 대기)


Long-term scheduler    (Job Scheduler) :  Process에서 어떤거를 JOB으로 올릴지 결정한다.

Short-term scheduler    (CPU Scheduler) : JOB들중 어떤거를 CPU에 올릴지 결정한다.

Medium-term scheduler :  I/O랑 CPU사용이 어느정도 균일해져 사용되어야 System busy를 줄일수있다.


Long-> 메모리에서 CPU로 올리니까 길다고 생각

Short -> CPU에서 CPU니깐 상대적으로 짧다 메모리에서 CPU로 가는 것보다, 이렇게 생각하자


Context switch 

time is overhead(과부화) -> 하드웨어에 따라 달라진다. 


Process Creation(cont.)

fork() - 프로세스 복제 (부모와 자식으로 나눠져간다, 분기를 나눈다. ex)소켓프로그래밍)

fork의 리턴값이 0이면 자식이다.  -1(<0)은 오류(실패, 더이상 시스템의 리소스가 없을때).  


IPC: Inter-Process Communication (프로세스 사이에 의사소통 수단)

Shared memory

Message passing


//Producer-Consumer (공급과 소비자)

//Message Passing


Communications in client-Server Systems

Sockets

Remote Procedure Call

Pipes


소켓에 관한 고찰: 소켓이 포트에 매핑되는거지만 소켓과 포트는 다르다는 것. (제대로 정리해놓자)

프로그램(프로세스)에 포트번호가 있다, 2^16의 포트번호 0~65535


Thread에 관한 고찰




Context switch


preemptive VS nonpreemptive

SFJ Scheduling

>preemptive는 BurstTime이 작은것이 우선적으로 가져간다. 


Priority Scheduling

RR Scheduling 동일하게 








'WEB (Feat.FOO) > 강의노트' 카테고리의 다른 글

6. FOO의 똥꼬쇼  (0) 2017.01.23
5. FOO의 똥꼬쇼 정리  (0) 2017.01.16
3. FOO의 3번째 똥꼬쇼  (0) 2017.01.09
2. FOO의 똥꼬쇼 2번째  (0) 2017.01.04
1. FOO의 똥꼬쇼 강의노트  (0) 2017.01.02

AJAX 페이지는 그대로 결과를 페이지 수정한다.

요청발생은 클라이언트 ---> 서버


 ex) 채팅서버 



서버  ----- 클라

|    |    |

클라  클라

 웹에서는 적용하기 어려웠다.

 


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

polling 클라가 서버에게 계속 물어보다. 자주 반복되면 좋음(트래픽낭비문제)

comet --> iframe 을 통해 창을 똑같이 넣어준다.

페이지에 iframe을 넣어서 요청을 안끊는다. (에러가 나면 죽는다.)


AJAX를 보안하기위해 웹소켓을 구현해서

소켓을 web위에 올린다. 이를 통해 서버와 클라이언트가 서로 상호작용할수있다.

원래의 웹은 클라가 요청을 해야만 했는데 소켓을 통해 서버도 요청보내줬다. 

언어별로 구별하는 방법이 다르다. 


JSP 

PYTHON 

node.    ----> socket.io를 통해  구현


REST API 를 이용해 서버를 구현하면 (최근에도 REST API)를 구성하는게 좋다.

클라이언트                 서버

프론트엔드                백엔드 


템플릿 사용시 프론트 백엔드 다알아야한다. 여기서 문제가 발생

프론트엔드 백엔드 나눠서 하는게 좋다. 

분리하는 목적으로 REST API가 생겨났다. 


서버는 클라한테 HTML만준다. // WAS를 없앤다(?) 동적인 것은 처리안한다.

환율을 표시할때 데이터가 매번 바껴야한다.

클라가 요청한 HTML에서 페이지를 스크립트없는 것을 보여주고

아래에 넣는데 AJAX를 통해서 서버에게 날리고 WAS를 통해서 DB가 XML(-->JASON으로 바꿔서씀) 전달해준다. 

//데이터를 들어넣어 주는것은 


처음요청, 웹페이지 WAS를 거치지않은것 그리고나서 동적인 데이터를 받아온다.

그다음 스크립트를 통해 동적인 데이터를 


AJAX는 HTML문서가 아니다. 

cf) 어플리케이션 만들때 xml로 하고 중간의 값을 AJAX 처럼 받아올 수 있다. 

REST API Server를 통해 주고 받을 수 있다

     
======================================================
REST API server 웹서버

프론트엔드와 백엔드를 나눌수있다. 

HTML은 프론트엔드만 하면된다. REST API 는 서버 개발하면서 하면된다. 

모바일용 페이지랑 웹 페이지에서 데이터 주고받을때 REST API를 같이 동시에 사용할 수 있어서 좋다.


시메틱하게 만들어야한다. HTML GET PUT POST


'WEB (Feat.FOO) > 강의노트' 카테고리의 다른 글

6. FOO의 똥꼬쇼  (0) 2017.01.23
5. FOO의 똥꼬쇼 정리  (0) 2017.01.16
4. Foo의 똥꼬쇼 4번째  (0) 2017.01.11
2. FOO의 똥꼬쇼 2번째  (0) 2017.01.04
1. FOO의 똥꼬쇼 강의노트  (0) 2017.01.02

Node.js 란???

자바스크립트가 서버로 사용하기 어려웠는데 구글에서 서버개발해서 웹서버로 사용해도 되겠다. 


Node.js 특징

프로세스와 쓰레드

쓰레드 : 한번에 여려개 실행할수 있도록하는 것 (멀티태스킹)


멀티프로세스 : 메모리 위에 프로그램을 여러개 올린다. 

멀티쓰레드: 프로그램 하나 안에서 메모리 공유를 하고있는 것이다. 

쓰레드: 함수 실행단위 하나하나

쓰레드 풀:


Node.js는 싱글 쓰레드 기반이다. 

- 그럼 한명밖에 웹서버를 사용하는 것 아닌가?? 

non blocking I/O 모델을 사용했기 때문에 


Blocking은 우리가 경험해보았던 것이다. 


함수호출 순서 (콜링이 포함되어있을때)

함수호출이 일어났을때 멈춰있는 상태가 블로킹

non blocking 은 호출 끝나는거 기다리는 것없이 바로 진행한다. 


예제는 파일 입출력으로 주로한다. 


문서보는 법 


동기화는 블로킹

논블로킹은 동기화가 아니다. 


인자가 다르다는 것을 볼 수 있다. 


fs쓸때 노드 이름이랑 같이 쓴다. 


const => 상수가 된다. 어디에 들어갔나 알수있다. 모듈을 넣을때 var대신 const로 넣는다. 



코드짜서 해보기 실습하고


nonblocking해본다. 


자바스크립트 코드에서 '작은따음표'



왜이렇게 찍혔나


node

|

|    A Point

|

writefile ------> 이벤트 루프 전임

|

|    B Point

|

끝 <---------------- 이벤트 루프 마침


함수 호출은 해버려 해버리고 이벤트루프--> 쓰래드를 여러개 가지고있는데 얘한테 writefile을 시켜버린다.

이벤트루프는 실행루프에따라서 전달받은것을 실행한다. 

그리고 일을 처리하고 끝났다라고 한것을 알려줘야지만




callback함수 -- 호출을 어떤함수에서 하는 것이 아니라 호출을 당하는 함수이다. 

Sync붙어있는 거는 블로킹방식이다. 

Node.js는 싱글쓰레드다. 그래서 Sync를 쓰고있는 동안에 다른 사용자가 서버쓰는 중에 다른 사용자가 할 수 없다. 


기술적으로 해결을 가능한데 동기화 방식을 통해서 해결할 수 있긴하다. 


차이점 정도만 알고있자....



OS보는거


운영체제 왜보는지


자바스크립트위에서 돌아가기때문에 상관없는데 조금씩 다르게 쓸때 필요하다.



이벤트

생성자를 호출해서 객체를 만들어주어서 사용한다. 




HTTP모듈을알아보자

그전에 요청하고 응답에 대해서 알아봐야한다. 


NETWORK 부분설명


HTML 보내고 받는거


찍어보기

req. url 

url.parse(req.url)


app.js를 통해서 내용볼수있는데

query를 통해서 내용을 검색할 수 있다. 



매핑과정

: if 로그인폼 출력


헤더에따라 달라진다.

 


createserver :

listen(8080):

매핑하는 법 


express 사용하고



JSON이라는 객체를 통해서 전달한다. 

JAVA Script

obvece

notation



웹1.0    웹2.0

     AJAX 통해서 새로고침을 안해도 자동완성을 받아올수있다. 페이지 전체를 새로고침하는 것이 아니고

     XML 를 JSON이 대체했다. 






상식:


X86


LTS : 


람다식: 불필요한거 티나지 않게 


=== : 타입까지 검사한다. 


문자를 따로 구분하지않고 문자열이라고한다. 


NULL = 아무것도 안가르키는것

undefined = 값을 아직안넣은것 (초기화가 안되어있는 상태)



자바스크립트 comparison table 을 통해서 1 === '1' 타입까지 확인할 수 있다.  !==를 통해 if문에서 참으로 동작하는 것과 아닌것들 확인가능


REST API Semantic


CRUD GET, POST, PUT, DELETE






'WEB (Feat.FOO) > 강의노트' 카테고리의 다른 글

6. FOO의 똥꼬쇼  (0) 2017.01.23
5. FOO의 똥꼬쇼 정리  (0) 2017.01.16
4. Foo의 똥꼬쇼 4번째  (0) 2017.01.11
3. FOO의 3번째 똥꼬쇼  (0) 2017.01.09
1. FOO의 똥꼬쇼 강의노트  (0) 2017.01.02

FOO센세 프로젝트 blog

http://biteth.tistory.com/




2017_01_02 첫번째


인터넷과 웹은 다르다!!


인터넷의 기원 군사용을 위해 만들어졌다. 인터넷 네트워크 망을 말한다. 


인터넷은 네트워크적인 성격이 강하다.




팀버너스리 - 스위스 물리학 연구소(원심분리기등 연구소)

 생각보다 웹이 발전되는 시간은 별로 되지 않았다. 2000년대 초반에서 본격적인 발전 시작

 문서들을 공유하고 싶다!!! (기존은 너무 어려워) 

 양식을 만들자. --> 웹을 만들게됨 ( HTML양식)

 TAG양식은 점점 증가했다. 


FOO의 웹 동기

 동아리로 접하게됨 - 그때 게시판 짜는 방식은 정말 구시대 적인 방식이다. AKA 쓰래기

 내가 지금 시대에 맞는 웹 프로그래밍 알려준다. 앙기모띠

 현재 시대에 걸맞는 웹 프로그래밍을 하자 (node.js, JSP등을 이용)

 

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

큰그림을 그려보자



소비자                 생산자

브라우저              웹서버  --> 정적인 파일들에 대한 처리 (틀, ex)베너 틀, 로그인 창 틀)

   +@ WAS (웹어플리케이션서버) 응용 프로그램  --> 동적인 파일에 대한 처리


프론트엔드           백엔드 (개발자)

<HTML>             < 무수히 많은 언어 >

<CSS>                < JSP (자바) >

<Java Script>       < Node.js(JS) >

  < PHP >

  < ASP(.net) >

  < django (py) >





웹서버와 웹어플리케이션서버 차이


웹서버: 정적 (틀, ex)베너틀, 로그인 창 틀 favicon.ico(아이콘) , CSS(속성)

WAS : 로그인 내용, 실시간 검색어 변화 


정적인 것은 처리만 해주면 되지만 동적인 것은 동적인 언어를 사용해 WAS 서버를 이용한다. 


보통의 웹페이지 웹서버랑 WAS를 같이 사용해준다. 



소스보기후 Static 을 사용해서 그림파일을 따로 처리하는 서버를 두고서는 처리한다. ( 처리속도를 높이기 위해 )




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


WAS랑 웹서버????

따로 두는 이유는??? - 초기화 시간을 줄여준다. 

WAS만 있을경우에는 정적인것도 같이 처리해줘야해서 비효율적이다. 



php요청      <---- HTML(만들어 넘긴다.)

브라우저 ----> 웹서버 ----------> php(was)넘기고 

     *                                  *

|                                  |   

|                                  |

|                                  |

------> disk (DB) <--------- 



 크기가 커지면 DB랑 따로 구축한다. 


 php라고 했지만 일련의 과정을 통해서 HTML을 만들어 웹서버 전달 및 브라우저에 전달

 계산, DB에서 가져온 값을 가지고 HTML 문서를 만들어야한다. 



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


프론트엔드 에 관하여


HTML, CSS, JAVA Script



HTML = 문서의 내용과 뼈대.

CSS = 디자인적인 요소를 추가.

JAVA Script = 문서안에서 동적인 요소를 만들어준다. (실시간검색어가 돌아갈때마다 서버랑 통신하는 것이 아니다. ) 


프로그래밍 언어라고 부를수있는 것 (통상 우리가 지칭하는 프로그래밍) --> JAVA Script 

현재 CSS만으로만 해도 구현할 수 있다. 지금 방식대로라면 그게 더 맞는 방식이다. 


우선 JAVA Script를 통해 만드는 법을 알고나서 접근하는 것을 추천하고 그렇게 해라.



프로그래밍 언어에는 조금 부족하다고 말했다고 안중요하다는 것이 아닌. 물론 같이 중요하고  태그에 대해서 알고있어야한다. 



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


HTML 태그 정리해보기 ( 뭐가 있는지를 알아야한다. )

 

 html, a, div, ol, strong, style, h*, ui, head, body, hr, title, br, script, center, p, form, li, pre, color


중요한 안중요한거 나눠보는 이유

HTML표준에 맞추기 위해 나눠보자 

의미를 가진 TAG를 사용하자. 


크롤링을 했을때 

내용을 긁어서 DB에 저장한다음에 키워드를 통해서 검색해 우선순위 높은 것을 나타내준다. 


ex> Strong을 통해 감싸져있는 것을 크롤러가 중요한 내용인줄 알고 판단할 수 있는 계기를 만들어 줄 수 있다. 


cf.> br 글을 개행 넘기는 것에는 사용가능 하다. (무조건 글안에만 사용해라!!) div는 한줄에 하나씩 밖에 안써진다.( 박스만들때 주로사용 )

cf.> h* strong과 비슷한 개념 h1이 가장 크다. 


HTML 태그를 보기위해서는 제일 많이 사용하는 태그 TOP20 정도를 알고가는것이 좋다. 



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


CSS 3가지 사용


1. hpitos<span style="color:red;"> foo</span>123


span은 글 안에서 속성을 줄때 사용한다. 

Style 속성은 어떤 CSS속성을 주고싶다고 할 때 사용한다. 


==> 속성값에 입력한다. (ex.스타일)


2. <style> 태그


  <style>

      span{

           color: red;

       }

  </style>


  hpitos<span> fgh</span>123


3. 

   <style>을 다른 것으로 뺀다. 

   style.css 문서를 사용한다. 

  

    <link rel="stylesheet" "href="style.css">

    <span> fgh </span>


----style.css

    span{

        color:red;

     }   




1번 같은 경우 사람이 봤을때는 좋지만 크롤러가 봤을때는 좋지않다. 

inline 방식의 문제 -> 한번만 했을때는 좋다. 하지만 다른 방식으로 여러번 했을때는 번거롭다. ( 소스코드 늘어난다. )

직관적인것에 이점

2번 똑같은 문서에 넣는다. (캐쉬메모리 상에서 굳이 필요없는 메모리를 다시한번 전달받아야한다. ) 

3번 다른 문서에 넣는다. ( 캐쉬메모리를 줄일 수 있어서 선호한다. )


우선순위 


(! important) >>>>>>1번째(inline) >  



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

클래스 를 사용하는이유 

여러가지 속성을 쓰기위해 사용한다. 



<style>

.size-40px {

font-size: 40px;

}

.color-red {

color: red;

}

</style>


adcd<span class="color-red">fgh</span>123456

adcd<span class="size-40px">fgh</span>123456

adcd<span class="size-40px color-red">fgh</span>123456


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

id를 사용하는 것


<style>

.size-40px {

font-size: 40px;

}


.color-red {

color: red;

}


#second {

font-style: italic;

}


</style>


adcd<span class="color-red">fgh</span>123456

adcd<span id="second" class="size-40px">fgh</span>123456

adcd<span class="size-40px color-red">fgh</span>123456



==============================================위와같은 것들을 선택자라고한다. 

.은 class #은 id를 나타낸다. 


====================================================================

ul을 사용한다. 



<style>

li:nth-child(odd) {

color:red;

}

</style>


<ul>

<li>    </li>

<li>    </li>

<li>    </li>

<li>    </li>

<li>    </li>

<li>    </li>

<li>    </li>

</ul>


 홀수번째만 선택하는 법? 

-> 검색 HTML li 홀수 Or 선택자


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

ul과 ol을 사용한다. 

두개를 다르게 하고싶을 때는?


<style>

#red li:nth-child(odd) {         //red라는 놈을 찾고 li에서 홀수있는 놈만

color:red;

}

#blue li:nth-child(2n) {        //blue라는 놈을 찾고 li에서 짝수있는 놈만

color:blue;

}

</style>


<ul id="red">

<li>    </li>

<li>    </li>

<li>    </li>

<li>    </li>

<li>    </li>

<li>    </li>

<li>    </li>

</ul>


<ol id="blue">

<li>    </li>

<li>    </li>

<li>    </li>

<li>    </li>

<li>    </li>

<li>    </li>

<li>    </li>

</ol>


*CSS선택자 검색&찾아 보기


클래스-점, id-#, 선택자, 



CSS에서 중요한점. 

3번째가 좋은 이유 : 캐쉬가 가능하다. 데이터가 적게 왔다갔다 할 수 있다.(모바일) 속도가 빠르다.

선택자를 어떻게 사용하는 지 중요하다. selector라고 한다. 


부모자식 <ul-li>

형제관계 <Ii> <ul>-<ol> 


개인적으로 HTML위에서 CSS를 사용한다고 할 수 있을 것 같다. 



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


자바스크립트


node.js를 위해 필요하다. 




IT상식 -------------------------------------------------------------------------------------------------------------


데니스 리치 가 C를 만들었다. Bell연구소의 연구소 사람이었다. ( 오늘날의 전화기 발명. 벨소리...)


유닉스가 C언어보다 먼저 나왔다. 


유닉스를 유지보수를 하다가 너무 힘들어서(어셈들로 유지보수했었다.) 


무어의법칙 - 마이크로칩(집적회로) 1980년쯤에 소프트웨어와 하드웨어의 충돌(?)

소프트웨어의 개발 방식은 예전의 C언어를 개발할때와 같다고 생각했다. >> '하드웨어를 더 가져다 붙이면 빨라진다' 라고 생각 

소프트웨어가 하드웨어를 따라가지 못하게되었다. 

코드가 길어짐에 따라 복잡도는 지수적으로 늘어나는 정도로 생각되었다. 

조금을 변경하는데 전체를 다 고쳐야하는 수고로움이 생기게 되었다.


소프트웨어에 대해 연구의 필요성을 알게되었다. 


FOO왈 지금 시대가 소프트웨어의 발달이 최고조에 이르렀다. (앞으로 어떻게 더 효율적으로 쓰느냐가 관건이라고 생각)

ex) 알파고


소프트웨어 안에서도 인식이 바뀌고있다. 

예전에는 1순위가 성능. 따라서 C언어를 사용하는 경우가 많았다. (2000년대 초중반 JAVA > python, java script 느리다라고 생각)

java script가 느려서 안쓰고있었다. 2008년에 google에서 V8 JavaScript 엔진을 만들었다. (Java를 실행시켜주는 엔진) 

그 이후 JavaScript를 이용해서 서버에 사용했다. 

JavaScript를 통해 Node.js가 나오게되었다. 


현재 Node.js 정식 version.6 개발중 version.7


성능을 제일 우선시 했는데 


JSP는 Java를 완벽히 알아야한다. (아파치 톰캣)

Node.js는 서버를 여는것부터 쉽다. 


둘다 성능은 나온다. 그럼 어떤게 개발이 더 편리하냐 어떻게 더 개발이 빠르냐에 대한 선택이 필요하다. 





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


자바 스크립트 


접하기 쉬운것은 F12 개발자 도구


인터프리터 언어 = 실행하기전까지 어떤 에러가 있는지 모른다. 

600줄 코드에서 500번째에서 에러발생시 500번이후 코드는 실행이 안된다. 


REPL 한줄한줄 키보드 입력해서 실행가능하다. Console메뉴에서 실행


자바스크립트랑 JQuery사용하는 것 알아보자




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


자바스크립트 console 창에서 이용  


a화면에 실제로 출력되는 것이 아니다. 

전역변수처럼 사용이된다. 


변수선언 var(int같은 역할, 자료형 구분이 없다. )


그냥 a도 맞지만 

var을 써서 하는것이 바람직한 방법이다. 


foo1


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


함수만 선언한거지 a를 선언한것이 아니다.

함수를 실행해서 a를 선언한다. 


function func1() {

let a = 3;

}

func1();

console.log(a)


var 함수블록안에서 사용할 수 있다.  

지역변수 : 블록안에서 사용하는것이다.

but 함수 블록안에서는 다 쓸 수 있다. 


let키위드를 사용하면 기존에 우리가 알고있는 변수처럼 사용한다 

반복문 블록안에서만 사용가능하다. 

safri에서 let는 사용할 수가 없다. 


크로스 브라우징 : 지금 우리가 쓰는 크롬 엣지 파이어폭스등 브라우저끼리 이건되는데 이건안된다 이걸 뜻하는데 

사파리에서 let는 지원이 안된다. 


var과 let기능도 다르지만 성능도 다르다고 알 수 있다.. 



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


C와 다른점, 자료형을 나타내지 않는다. 


함수라는 것만 보여주고 


다른쪽으로 뺄 수 있다. 


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



JQuery J쿼리

>> write less, do more 


min의 차이 


우리가 보기 쉽게했던 것들을 다 (변수명, 개행) 보기는 불편하지만 용량은 작게 만들어놓은 것들이다. 


데이터양을 줄여준다. 


상용웹서비스할시 이렇게 다 줄여주고, 코드를 난독화시킨다. 


개발을 한다음에 min해서 줄여준다. 


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


선택자를 알고사용해서 잘 쓸 수 있다. 

필요한 부분만 가져다가 사용해야한다. 


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


+@ 부트스트랩.


Bootstrap 자바스크립트 보다 CSS와 연관이 되어있다. 


JQuery를 다운받지않고 네트워크상에서있는 걸로 사용할 수 있다. CDN이라고 함



위치에 관하여


<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">


원래는 <title></title>다음에 들어간다. 


title : 제목이다. 

그밑에 CSS집어넣고

스크립트에도 종종 집어넣는다. 


</head>

<body>

그치만 body테그 끝나기 전에 넣는다.

</body>

</html>


CSS받아오고 --> 자바스크립트를 받아온다.


앞쪽에 하면 자바스크립트(당장눈에 보이는게 아니니깐) 느려진다. 

CSS를 뒤로 빼버리면 CSS적용 하나도 되지 않은 화면을 받아보고 그다음 CSS적용화면을 보게된다.  



원칙적으로 위와같은 자리에 집어 넣어준다. 


버튼 만들어보기

btn btn-default 영향을 받는다. btn-primary와 btn속성값들을 알아볼 수 있다. 


예제따라해보기 --> 필요하면 가져다 쓰는 법을 아는게 중요하다. 그러니 사용법을 사용가능하다. 






TAG 일렉트론


'WEB (Feat.FOO) > 강의노트' 카테고리의 다른 글

6. FOO의 똥꼬쇼  (0) 2017.01.23
5. FOO의 똥꼬쇼 정리  (0) 2017.01.16
4. Foo의 똥꼬쇼 4번째  (0) 2017.01.11
3. FOO의 3번째 똥꼬쇼  (0) 2017.01.09
2. FOO의 똥꼬쇼 2번째  (0) 2017.01.04

+ Recent posts