운영체제가 없으면 어떻게 핸들링?

 

원래 도커는 리눅스 OS위에서 작동하도록 설계??.

 리눅스의 chroot jail이라는 기능을 기반

 컨테이너 내부에서는 외부 Host OS의 존재를 인식할 수 없지만,

외부 Host OS에서는 컨테이너를 그저 하나의 프로세스로  인식?

 

 

Docker for Windows/Mac은 리눅스 가상 환경을 생성하여 도커를 지원함.

Linuxkit을 사용. Linuxkit은 리눅스의 커널을 최소한으로 경량화하여

필요한 작업만 컨테이너 기반의 서비스로 정의해 사용.

 

 

2020년 5월 도커는 윈도우즈에 새로 업데이트된 WSL2 기능을 사용하여 가상화를 하기 시작

Docker for Windows를 설치할 때 기본 체크됨

 

docker0이라는 브리지를 통해 외부와 통신함

 

 

운영체제의 유무, OS 없는 컨테이너가 빠름

운영체제는 최소 메모리/CPU 할당도 필요함. -> 컨테이너는 리소스를 공유해서 나눠서

운영체제 레벨 패치작업이 없음.


VM Docker
Host OS 논리적 가상화 (완전 분리) - Kernel 공유 (프로세스 공유)
- Container 내에서 명령어 실행 시 실제로는 Host OS에서 실행
Guest OS 풀 설치 Host OS와 비교해서 다른부분만 Packing
OS지원 모두 지원 Linux기반의 OS만 지원
장점 - 해킹 되더라도 다른 가상머신에 영향을 미치지 않음
/
이것도 반쪽짜리, 통신이 되니깐 같이 뚫림
- 시스템 자원의 효율적 사용
- 생산성 향상
단점 - 시스템 확장시 자원의 낭비
- 트래픽에 따른 분산처리가 유연하지 못함
- Host OS를 공유하기 때문에
Host 권한이 해킹된다면 다른 컨테이너들도 위험함

 

도커의 다른 기능

여러 Container간에 호스트 자원을 분리해서 사용하게 해줌

리눅스 고유 기술인 namespace와 cgroups을 사용해서 격리하는 기술

 

Namespace 커널에 관련된 영역을 분리 mnt, pid, net, ipc, uts, user
cgroups 자원에 관련된 영역을 분리 mem, cpu, i/o, network

 

 

 

컨테이너에 OS 없고,

필요한 모듈만 확장시키기 쉽다

개의 POD 확장시키면

 

도커허브에서 node.js 이미지를 실행할 수 있는 컨테이너 이미지를 가져온다.

 Hello world 앱을 하나의 컨테이너로 만든다.

 

Dockerfile                

FROM node:slim

EXPOSE 8000

COPY hello.js

CMD node hello.js

 

로컬 도커에서 컨테이너를 구동시킨다, 추가로 외부 서비스 하도록 통신 설정?

 

 

예제

이미지가 없다면 자동으로 다운로드함

nginx 컨테이너 docker container run --name webserver -d -P nginx
Node.js 컨테이너 docker run -d -it -p 9000:8000 --name=nodejs_test2 node:latest
js스크립트를 짜서
해당
컨테이너에 cp
컨테이너
진입하여, node.js실행 : docker exec -it nodejs_test2 /bin/bash


httpd(Apache) 컨테이너 docker run -d -p 8080:80 --name httpd-basic httpd:2.4

 

혹은 이미지 생성 방법

From 베이스이미지 필요함

 

개발페이지 작성/개발 8080포트 리슨

 

Dockerfile 작성

FROM golang:1.9RUN mkdir /echo
COPY main.go /echo
CMD [
"go", "run", "/echo/main.go"]

 

빌드

docker image build -t example/echo:latest

 

실행

docker container run example/echo:latest

 

접속확인

curl http://localhost:8080/

 




PC에서 네이버를 쳤을때 / IT측면에서 Deep dive하게 분석

아래 키워드를 하나씩 찾아서 공부하면

 

PC 공유기         ISP 인터넷         CDN 네이버서버
URL입력, IP는몰라도됨
DNS쿼리
hosts파일
계층적
DNS 구조

캐싱파일

GSLB(azure Traffic Manager개념)



페이지 내에서
기능클릭 Request요청
GET
리소스주세요 요청(Read)

HTTP stateless


서버에서만
연산하는 것이 아니고
클라이언트에서
연산을 시키자
-> 스크립트 언어 javascript

인터넷브라우져 3요소
1.DOM파서
2.렌더링엔진
3.스크립트엔진

 

웹브라우저는 먼저 웹서버와 TCP연결 (바로 종료됨, 유지안됨)
socket() bind() listen() connect()
이후 HTTP연결됨
공유기 DNS설정 전용선업체
사용자 가까운 CDN
POP ?
캐싱구조
서버개념에서는
다수의
서버가 L4 로드밸런싱
서버가
죽어도 세션이 유지되어야 하므로

세션클러스터링 기능
 

WEB서버 정적컨텐츠/송수신 담당
WAS서버 동적컨텐츠/처리,연산 담당
DB서버 상태/결과에 대한 기록 저장


백엔드서버
Response 만들어서 리턴

빠르게
리턴하기 위해 Redis 캐시(메모리DB)
 



실시간웹구현의 한계 -> HTTP 특성 때문

Connectionless  비연결지향 특성

클라이언트가 요청을 한 후 응답을 받으면 그 연결을 끊어 버리는 특징

HTTP는 먼저 클라이언트가 request를 서버에 보내면, 서버는 클라이언트에게 요청에 맞는 response를 보내고 접속을 끊는 특성이 있다.

 

-> 헤더에 keep-alive라는 값을 줘서 커넥션을 재활용하는데 HTTP1.1에서는 이것이 디폴트다.

 

HTTP가 tcp위에서 구현됨

tcp는 연결지향,udp는 비연결지향

keep-alive는 옵션으로 connectionless 극복

 

Stateless 상태를 저장하지 않는다

통신이 끝나면 상태를 유지하지 않는 특징

연결을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보는 유지하지 않는 특성이 있다.

쿠키와 세션은 위의 두 가지 특징을 해결하기 위해 사용합니다.

예를 들어, 쿠키와 세션을 사용하지 않으면 쇼핑몰에서 옷을 구매하려고 로그인을 했음에도, 

페이지를 이동할 때 마다 계속 로그인을 해야 된다면 매우 불편

 

쿠키와 세션을 사용했을 경우, 한 번 로그인을 하면 어떠한 방식에 의해서 그 사용자에 대한 인증을 유지하게 됩니다.

 

HTTP 특성상, Request 주고, 다시 받은 Response 브라우저에 다시 그려줘야 된다

, 화면이 한번 깜빡여야됨

-> 초기에 그점을 개선하기 위한 RIA(Rich Internet Application) 기술이 발달하기 시작함
Hidden Frame, Long pooling Stream 등등 기술

실시간 웹서비스를 만드려면, 양방향 송수신이 필요하다. ->

그래서 HTML5 표준안의 일부로 WebSocket API(이후 WebSocket)가 등장하게

 

 

그래서 => 폴링

 

폴링

Pooling

 

충돌 회피 또는 동기화 처리 등을 목적으로 다른 장치(또는 프로그램)의 상태를 주기적으로 검사하여 일정한 조건을 만족할 때 송수신 등의 자료처리를 하는 방식

 

클라이언트가 서버에게 일정한 주기를 가지고 응답을 주고받는 폴링 방식을 사용한다.

AJAX polling

 

폴링의 문제점

폴링의 주기가 짧으면 서버의 성능에 부담이 간다.

주기가 길면 실시간성이 떨어진다.

정보가 변하지 않으면 리소스를 낭비하고 오버헤드/트래픽이 발생한다.

 

-> 롱폴링기법, 스트리밍 방식
, 롱폴링기법은 변경이 빈번하다면 얻을 있는 이점이 크지 않다.

Comet

웹 클라이언트(보통 웹 브라우저)의 명시적인 요청이 없어도 서버에서 클라이언트로 데이타를 밀어넣는(PUSH) 방식으로 동작하는 웹 프로그래밍 모델, 모델임 
즉 Comet = Reverse Ajax = Ajax Push = Two-Way-Web = HTTP server Push = HTTP streaming 등등 다 같은 의미이다. 

WebSocket

HTTP 한계를 극복하고 실시간(양방향통신) 서비스 개발을 위해 태어남
HTTP 요청과 마찬가지로 80번 포트를 통해 웹 서버에 연결
클라이언트
/서버 모두 WebSocket지원해야됨.
브라우져는 모두 지원함.

서버는...

Apache에서 별도의 모듈을 설치하여 WebSocket을 사용가능

Node.js에서도 WebSocket을 사용 가능

 

 

 

Socket.io

JavaScript를 이용하여 브라우저 종류에 상관없이 실시간 웹을 구현할 수 있도록 한 기술

표준 기술이 아니고 Node.js 모듈로써, 오픈소스임.

 

WebSocket, FlashSocket, AJAX Long Polling, AJAX Multi part Streaming, IFrame, JSONP Polling을 하나의 API로 추상화한 것

 

 

 

 

일반적으로 HTTP 4 이하 기반의 웹 형태로 채팅 시스템을 구현하려면, -> 폴링(Polling)사용

주기적으로 채팅서버에 새로운 대화가 있는지 찾아보고 대화가 있다면 가져오는 방식으로 실시간으로 처리를 하려면, 그만큼 더 많은 부하가 존재할 수 있다.

 

 

HTTP 5에서 지원하는 웹소켓으로 채팅 시스템을 구현하는 방법은 매우 효율적이다

문제점

웹소켓은 브라우저에서 채팅서버에 직접 연결을 시도하는 형태를 가지고 있다.

그러다보니 페이지를 갱신하게 되면 연결이 끊어지고, 다시 연결을 하는 형태를 가진다. 이러다보니 F5번을 눌러서 페이지를 습관적으로 갱신하게 된다면 세션이 끊어지고 다시 연결해야 되는 상황을 맞이할 수 있으며 더 큰문제는 웹소켓의 세션과 HTTP 세션이 서로 다르다는 것이다.

 

그러다보니, 주기적으로 웹소켓의 세션과 서버에서 저장하는 HTTP 세션을 동기화하는 모듈을 별도로 구현해야 한다. 이게 생각보다 짜증이 나서 어쩔때는 그냥 풀링 방식으로 모든 것을 구현하고 싶은 욕구가 치밀 때가 있을 것이다.(사실 풀링 방식이 더 편할때가 많다)

 

 

 

 

 




둘다 아파치 재단에서 만든 소프트웨어 입니다.

 

아파치(Apache)란?

      • 정적인 데이터를 처리하는 웹서버
      • 웹서버 only?
      • 다른 제품은 nginx ?

 

아파치 톰캣(Apache Tomcat)이란?

      • 동적인 데이터를 처리하는 웹서버 입니다.
        WAS(Web Application Server), 대표적인 WAS가 아파치톰캣(톰캣이라고도 부름)
      • 웹서버와 웹 컨테이너의 결합으로 다양한 기능을 컨테이너에 구현하여 다양한 역할을 수행할 수 있는 서버를 말합니다.

자바 서버 페이지(JSP)와 자바 서블릿이 실행할 수 있는 환경을 제공

      • BEA사의 Web Logic, IBM사의 Web Sphere, T-max사의 Jeus, Tomcat, Redhot사의 JBoss 등

 

 

톰캣은 html 같은 정적 페이지를 로딩하는데 웹 서버보다 수행 속도가 느리다

그래서 아파치랑 연동한단다..

원리는 아파치가 실행되면 아파치는 html 파일은 자신이 수행하고 jsp 파일은 톰캣으로 넘겨서 톰캣이 수행하게 만든다. 톰캣 특성상 java 언어만 해석이 가능하기 때문에 톰캣에 자체 내장되어 있는 http 서버를 사용하더라도 php 언어로 작성된 서버 페이지는 실행이 불가능하다. 따라서 php와 jsp 모두를 사용하고 싶다면 아파치에서 php를 호출하고 톰캣에서 jsp를 호출 하도록 구성하여 상호 보완적 동작을 수행하도록 구성할 수도 있다

(출처 : https://ko.wikipedia.org/wiki/아파치_톰캣 )

 

CGI(Common Gateway Interface)

기존에는, 웹서버가 있고 클라이언트에서 외부 프로그램이 필요한 리퀘스트가 들어오면 CGI를 통해 외부 프로그램을 실행시켜 리퀘스트에 응답하도록 했지만 요즘에는 웹서버에 인터프리터를 내장함으로써 따로 프로세스를 fork하여 외부 프로그램을 실행시키지 않고 내부에서 다 처리합니다.

접속자가 많은 서비스의 경우 CGI 방식보다 어플리케이션 서버 방식의 Throughput(처리량)이 더 좋습니다.

예를들어, 5개의 웹 브라우저가 동일한 프로그램을 요청했을 때 CGI 방식은 5개의 요청에 대한 프로그램을 모두 메모리에 적재합니다. 반면, 어플리케이션 서버방식은 메모리에 한번만 적재합니다이로써 CGI방식에 비해 전체적인 메모리 사용량이 적습니다. 이는 더 많은 요청을 처리할 수 있음을 의미합니다.

 

 

 

 

 

윈도우에 Apache Tomcat8 설치하기

    1. 다운로드 페이지 -> http://tomcat.apache.org/download-80.cgi
    2. 해당 페이지의 스크롤을 살짝 내려서 [64-bit Windows zip] 을 클릭하여 파일을 다운로드
    3. 해당 파일의 경로를 고려하여 압축을 해제합니다.
    4. Tomcat을 설치하려면 명령프롬프트창을 하나 열어서, 해당 경로에 가서 명령어를 쳐줘야 합니다.
    5. service.bat install tomcat8  이렇게 명령어를 날려 설치를 합니다.
    6. 다시 bin 폴더로 돌아와서  [tomcat8w.exe] 을 우클릭하여 관리자 권한으로 실행하여, 서비스 실행
    7. Tomcat을 기동 시킨후  http://localhost:8080  으로 접속하여 확인




HTTP만든분 중에 한분이
웹의 장점을 최대한 활용할 수 있는 네트워크 기반의 아키텍쳐를 소개했는데
그것이 바로 Representational state transfer (REST)
메서드
의미
POST
Create
GET
Select
PUT
Update
DELETE
Delete
아래와 같이 표현함.
{ 
   "users":{ 
      "name":"taetae"
   }
}
이 구문의 의미는 아래와 같다
POST = 만든다 의미
URI = web.co.kr/users (모든 것은 URI가 존재한다)
이름이 taetae인 사람을 만드는 메서드다.

그럼 taetae라는 이름을 가진 리소스에 접근하려면 (가져오려면)
URI는 web.co.kr/users/taetae 이고
가져올 때는 Get 을 붙인다.
지우는것은 DELETE 메소드
HTTP DELETE, http://web.co.kr/users/taeae

다중조건
다음은 http://web.co.kr/users 라는 리소스를 이름은 terry, 주소는 seoul 이라는 내용(메시지)로 HTTP Post를 이용해서 생성하는 정의이다.
{ 
   "name":"terry",
   "address":"seoul"
}

수정
다음은 http://web.co.kr/users 라는 사용자 리소스중에, id가 terry 인 사용자 정보에 대해서, 주소를 “suwon”으로 수정하는 방식이다. 수정은 HTTP 메서드 중에 PUT을 사용한다.
{ 
   "name":"terry",
   "address":"suwon"
}

REST는 HTTP표준만 지키면, 어떠한 기술에서도 사용가능하다.
HTTP + JSON으로 REST API를 정의했다면,
모든 플랫폼에서 사용가능하다.

모든 것에 URL 부여된다.
 
Ex) ASP.NET WEB API 레스트풀
외부 연결 URI를 REST API 라고 하고, REST 방식의 서비스 제공이 가능한 것을 RestFul 하다고 표현한다.


덧.
Azure 아키텍쳐에도 REST API가 있음





   

   

Developer Assistant for Visual Studio

   

Introducing the newly released Developer Assistant for Visual Studio, which enables developers to find and reuse over 21 million code snippets and code sample projects from within the Visual Studio IDE. The plugin is now also enabled with Bing contextual search that currently helps with root causing compiler errors and code lookup.

Developer Assistant for Visual Studio 2015

Developer Assistant for Visual Studio 2013

Developer Assistant for Visual Studio 2012

   

원본 위치 <https://blogs.msdn.microsoft.com/onecode/p/devassistant/>

   

   

주요 기능

Developer Assistant Features

  1. C++ code search (New in July)
  2. GitHub Integration (New in May)
  3. Visual Studio IntelliSense experience to find code samples for API (improved in the March release)
  4. "How do I" code sample search (new in the March release)
  5. Local code search (improved in the March release)
  6. Compile Error Assistant 1.0 for C#/VB/C++
  7. API Help 1.0 for C#/VB
  8. Sample Browser one-stop shop
  9. The code search box is moved to a seperate Toolbar in Visual Studio

   

원본 위치 <https://visualstudiogallery.msdn.microsoft.com/5d01e3bd-6433-47f2-9c6d-a9da52d172cc/description>

   

   




   

한국성공회대학교 소프트웨어 학부 외래교수이신 원철연 교수님께서 1년정도 집필한 책이 우여곡절 끝에 출판을 할 수 없게 되자 블로그(http://fromyou.tistory.com/)에 내용을 전부 공개해주셨습니다.

   

 HTML과 CSS, JavaScript를 배우시는 분들께 정말 소중하고 감사한 자료 인거 같네요!

   

   

   

   

제목

링크주소

1장 HTML5 등장 배경 및 표준화 현황

http://fromyou.tistory.com/411

1. HTM5의 구조 및 기본 지식 익히기

http://fromyou.tistory.com/412

1.2 웹 브라우저(Browser)의 기능과 한계

http://fromyou.tistory.com/413

1.3 HTM5의 구조(Structure)

http://fromyou.tistory.com/414

1.3.1 HTML5의 요소(Element) 작성 방법

http://fromyou.tistory.com/415

1.3.2 HTML5에서 요소(Element)의 속성(Attribute) 작성 방법

http://fromyou.tistory.com/416

1.4 환경설정 및 기본 편집기

http://fromyou.tistory.com/417

2. metadata Elements

http://fromyou.tistory.com/418

2.2 meta 요소(Elements)

http://fromyou.tistory.com/419

3. Section Elements,  3.1 nav, header 요소(Element)를 이용한 구성

http://fromyou.tistory.com/420

3.2 section, header, nav 요소(Element)를 이용한 좌측면 구성

http://fromyou.tistory.com/421

3.3 section, header, footer, article, aside 요소(Element)를 이용한 우측면 구성

http://fromyou.tistory.com/422

3.4 footer 요소(Element)를 이용한 꼬리말 구성

http://fromyou.tistory.com/423

4. Group Content Elements, 4.1 p, hr, pre 요소(Element)

http://fromyou.tistory.com/424

4.2 blockquote 요소(Element)

http://fromyou.tistory.com/425

4.3 li, ol, ul 요소(Element)

http://fromyou.tistory.com/426

4.4 dl, dt, dd 요소(Element)

http://fromyou.tistory.com/427

4.5 figure, figcaption요소(Element)

http://fromyou.tistory.com/428

4.6 div 요소(Element)

http://fromyou.tistory.com/429

5. Text-level Elements,  5.1 a, em, strong 요소(Element)

http://fromyou.tistory.com/430

5.2 code 요소(Element)

http://fromyou.tistory.com/431

5.3 samp 요소(Element)

http://fromyou.tistory.com/432

5.4 kdb, dfn 요소(Element)

http://fromyou.tistory.com/433

5.5 abbr 요소(Element)

http://fromyou.tistory.com/434

5.6 var, cite 요소(Element)

http://fromyou.tistory.com/435

5.7 q 요소(Element)

http://fromyou.tistory.com/436

5.8 sub, sup 요소(Element)

http://fromyou.tistory.com/437

5.9 time 요소(Element)

http://fromyou.tistory.com/438

5.10 s 요소(Element)

http://fromyou.tistory.com/439

5.11 small 요소(Element)

http://fromyou.tistory.com/440

5.12 i, b, u, mark 요소(Element)

http://fromyou.tistory.com/441

5.13 ruby, rt, rp 요소(Element)

http://fromyou.tistory.com/442

5.14 bdi, bdo 요소(Element)

http://fromyou.tistory.com/443

5.15 span, br, wbr 요소(Element)

http://fromyou.tistory.com/444

6. Edit Elements,  6.1 ins 요소(Element)

http://fromyou.tistory.com/445

6.2 del 요소(Element)

http://fromyou.tistory.com/446

7. Embedded Content Elements, 7.1 img 요소(Element)

http://fromyou.tistory.com/447

7.2 map, area 요소(Element)

http://fromyou.tistory.com/448

7.3 object, param 요소(Element)

http://fromyou.tistory.com/449

7.4 PDF 파일을 embed 요소(Element)를 이용하여 임베딩

http://fromyou.tistory.com/450

7.5 iframe 요소(Element)

http://fromyou.tistory.com/451

7.6 math 요소(Element)

http://fromyou.tistory.com/452

7.7 svg 요소(Element)

http://fromyou.tistory.com/453

8. Tabular Data Elements,  8.1 caption 요소를 이용하여 표(table) 제목을 나타내기

http://fromyou.tistory.com/454

8.2 tbody, thead, tfoot 요소를 이용한 머리말, 본문, 맺음말 형태 만들기

http://fromyou.tistory.com/455

8.3 col, colgroup 요소를 이용하여 다수의 칼럼(열)에 스타일 적용

http://fromyou.tistory.com/456

8.4 셀 합치기

http://fromyou.tistory.com/457

8.5 여백 주기

http://fromyou.tistory.com/458

8.6 셀 내부 정렬하기

http://fromyou.tistory.com/459

9. Form-related Elements, 9.1 form 요소(Element)

http://fromyou.tistory.com/460

9.2 fieldset, legend 요소(Element)

http://fromyou.tistory.com/461

9.3 lable 요소(Element)

http://fromyou.tistory.com/462

9.4 input 요소(Element)

http://fromyou.tistory.com/463

HTML5에 새롭게 추가된 input 요소의 type 속성값들

http://fromyou.tistory.com/464

9.5 button 요소(Element)

http://fromyou.tistory.com/465

9.6 select 요소(Element)

http://fromyou.tistory.com/466

9.7 datalist 요소(Element)

http://fromyou.tistory.com/467

9.8 option, optgroup 요소(Element)

http://fromyou.tistory.com/468

9.9 textarea 요소(Element)

http://fromyou.tistory.com/469

9.10 keygen 요소(Element)

http://fromyou.tistory.com/470

9.11 output 요소(Element)

http://fromyou.tistory.com/471

9.12 progress 요소(Element)

http://fromyou.tistory.com/472

9.13 meter 요소(Element)

http://fromyou.tistory.com/473

10. Interactive Elements, 10.1 details 요소

http://fromyou.tistory.com/474

10.2 summary 요소

http://fromyou.tistory.com/475

10.3 command 요소

http://fromyou.tistory.com/476

10.4 menu 요소

http://fromyou.tistory.com/477

11. Global Attributes, 11.1 accessKey, title, tabindex 속성

http://fromyou.tistory.com/478

11.2 class, id, style 속성

http://fromyou.tistory.com/479

2장 CSS3

http://fromyou.tistory.com/480

1. CSS의 구조와 선택자(selector), 1.1 요소 이름을 이용한 선택자(Selector) 구성과 규칙(Rule) 만들기 

http://fromyou.tistory.com/481

1.2 id를 이용한 선택자(Selector) 구성과 규칙(Rule) 만들기

http://fromyou.tistory.com/482

1.3 class를 이용한 선택자(Selector) 구성과 규칙(Rule) 만들기

http://fromyou.tistory.com/483

1.4 속성(Attribute)을 이용한 선택자(Selector) 구성과 규칙(Rule) 만들기,  1.4.1 "[속성]"의 경우

http://fromyou.tistory.com/484

1.4.2 "[속성=속성값]"의 경우,  1.4.3 "[속성~=속성값]"의 경우

http://fromyou.tistory.com/485

1.4.4 "[속성|=속성값]"의 경우

http://fromyou.tistory.com/486

1.4.5 "[속성^=속성값]"의 경우,  1.4.6 "[속성$=속성값]"의 경우

http://fromyou.tistory.com/487

1.4.7 "[속성*=속성값]"의 경우

http://fromyou.tistory.com/488

1.5 의사 클래스(pseudo-class)를 이용한 선택자(Selector) 구성과 규칙(Rule) 만들기

http://fromyou.tistory.com/489

1.5.1 동적(dynamic) pseudo-class

http://fromyou.tistory.com/490

1.5.2 target pseudo-class

http://fromyou.tistory.com/491

1.5.3 언어(lang) pseudo-class

http://fromyou.tistory.com/492

1.5.4 UI element state pseudo-class

http://fromyou.tistory.com/493

1.5.5 구조적(structural) pseudo-class

http://fromyou.tistory.com/494

nth-of-type, nth-last-of-type

http://fromyou.tistory.com/495

first-child, last-child, first-of-type, last-of-type

http://fromyou.tistory.com/496

only-child, only-of-type, empty

http://fromyou.tistory.com/497

1.5.6 부정(negation) pseudo-class

http://fromyou.tistory.com/498

1.6 의사-요소(pseudo-element)를 이용한 선택자(Selector) 구성과 규칙(Rule) 만들기

http://fromyou.tistory.com/499

1.7 combinator를 이용한 선택자 구성과 규칙 만들기, 1.7.1 자손(Descendant) combinatory

http://fromyou.tistory.com/500

1.7.2 자식(Child) combinatory

http://fromyou.tistory.com/501

1.7.3 인접 형제(Adjacent Sibling) combinatory

http://fromyou.tistory.com/502

1.7.4 일반적인 형제(General Sibling) combinatory

http://fromyou.tistory.com/503

1.8 모든 요소(Element)를 포함하는 선택자(Selector) 구성과 규칙(Rule) 만들기

http://fromyou.tistory.com/504

2. CSS를 이용하는 방법 3 가지,  2.1 <head> 태그 블록 내에 CSS 코드 입력 방법

http://fromyou.tistory.com/505

2.2 필요한 HTML 태그 내에 직접 CSS 코드 입력 방법, 2.3 외부 파일(.css) 형태로 외부 파일에 CSS 코드 입력 방법

http://fromyou.tistory.com/506

3. CSS 적용 우선 순위

http://fromyou.tistory.com/507

4. CSS에서 사용되는 수치(Measurements)

http://fromyou.tistory.com/508

5. 색(Color),   5.1 색(Color) 관련 속성(Property)

http://fromyou.tistory.com/509

5.2 색(Color)을 표현하는 방법

http://fromyou.tistory.com/510

6. 폰트(Font), 6.1 font-family 속성을 이용하여 사용할 글꼴을 설정하기

http://fromyou.tistory.com/511

6.2 font-weight 속성을 이용하여 글자 가늘고 굵게 만들기

http://fromyou.tistory.com/512

6.3 font-stretch 속성을 이용한 글자를 좁게 넓게 나타내기,6.4 font-style 속성을 이용한 글자를 기울이기

http://fromyou.tistory.com/513

6.5 font-size 속성을 이용하여 글자의 크기를 설정하기, 6.6 font 속성을 이용한 font 설정

http://fromyou.tistory.com/514

7. 텍스트(Text), 7.1 대소문자로 변형(Transforming)하기, 7.2 문장 내 간격(Spacing) 처리하기

http://fromyou.tistory.com/515

7.3 줄 바꿈(Line Breaking)과 단어 내 줄 바꿈(Word Boundaries)

http://fromyou.tistory.com/516

7.4 텍스트 정렬(Alignment)과 맞추기(Justification)

http://fromyou.tistory.com/517

7.5 문장 내 간격(Spacing) 처리하기

http://fromyou.tistory.com/518

7.6 text-indent 속성을 이용한 들여쓰기

http://fromyou.tistory.com/519

7.7 Text Decoration

http://fromyou.tistory.com/520

8. 배경(Background)과 경계(Border), 여백

http://fromyou.tistory.com/521

8.1.4 background-attachment 속성

http://fromyou.tistory.com/522

8.2 내부 여백인 padding, 경계(border), 그리고 외부여백(margin)

http://fromyou.tistory.com/523

3장 JavaScript

http://fromyou.tistory.com/524

1. JavaScript의 데이터 타입, 변수, 1.1 데이터 타입(Data Type)

http://fromyou.tistory.com/525

1.2 변수(Variable)

http://fromyou.tistory.com/526

2. 연산자(Operators)와 변환(Convert)

http://fromyou.tistory.com/527

2.8 변환(Conversion)

http://fromyou.tistory.com/528

3. 흐름 제어(Flow Control)

http://fromyou.tistory.com/529

3.4 switch … case 문, 3.5 for 문,3.6 for … in 문, 3.7 while문

http://fromyou.tistory.com/530

4. 함수(Function),4.1 함수의 정의(선언),4.2 선언된 함수의 호출(call)

http://fromyou.tistory.com/531

4.3 다른 함수로부터 함수 호출

http://fromyou.tistory.com/532

5. 객체(Object), 5.1 객체(object)의 생성, 5.1.1 Object() 생성자를 이용하여 객체 생성

http://fromyou.tistory.com/533

5.1.2 생성자 함수(constructor function)를 잉요하여 객체 정의하고 생성하기

http://fromyou.tistory.com/534

5.1.3 object 표기 방법인 {}을 이용한 객체 생성

http://fromyou.tistory.com/535

대괄호(square bracket)를 이용한 속성(Property) 접근 및 디버깅

http://fromyou.tistory.com/536

6. 배열(Array), 6.1 배열(array)의 생성

http://fromyou.tistory.com/537

6.2 생성된 배열(array)에 저장된 데이터 접근 및 출력

http://fromyou.tistory.com/538

6.3 배열(Array)의 속성(Property)

http://fromyou.tistory.com/539

6.4 배열(Array)의 주요 메서드(Method), 6.4.1 concat(), push(), unshift() 메서드를 이용한 데이터 추가

http://fromyou.tistory.com/540

6.4.2 pop(), shift() 메서드를 이용한 데이터 삭제

http://fromyou.tistory.com/541

6.4.3 slice(), splice() 메서드를 이용한 데이터 추출

http://fromyou.tistory.com/542

6.4.4 join(), toString() 메서드를 이용한 배열을 문자열로 바꾸기

http://fromyou.tistory.com/543

6.5 이차원 배열

http://fromyou.tistory.com/544

6.6 해쉬 테이블(HashTable)

http://fromyou.tistory.com/545

7. 이벤트(Event)와 이벤트 핸들러(EventHandler),7.1 이벤트 핸들러 속성을 이용한 이벤트 처리

http://fromyou.tistory.com/546

7.1.1 window와 관련된 이벤트 핸들러 속성

http://fromyou.tistory.com/547

7.1.2 마우스(Mouse)와 관련된 이벤트 핸들러 속성

http://fromyou.tistory.com/548

7.1.3 키보드(Keyboard)와 관련된 이벤트 핸들러 속성

http://fromyou.tistory.com/549

7.1.4 폼(Form)과 관련된 이벤트 핸들러 속성

http://fromyou.tistory.com/550

7.2 Event Method를 이용한 이벤트 처리

http://fromyou.tistory.com/551

8. DOM(Document Object Model), 8.1 Node의 주요 속성, 8.2 Node의 주요 메서드를 이용한 추가, 수정, 삭제

http://fromyou.tistory.com/552

8.2.2 replaceChild() 메서드를 이용한 기존 노드의 교체

http://fromyou.tistory.com/553

8.2.3 removeChild() 메서드를 이용한 노드의 삭제

http://fromyou.tistory.com/554

8.3 getElementById(), getElementByTagName() 메서드를 이용한 접근

http://fromyou.tistory.com/555

4장 Canvas, 1. Canvas를 사용하기 위한 기본적인 준비작업 

http://fromyou.tistory.com/556

1.3 색상(color)과 스타일(style)

http://fromyou.tistory.com/557

2. 사각형(Rectangle) 그리기

http://fromyou.tistory.com/558

3. 경로(Path)

http://fromyou.tistory.com/559

4. 직선(Line) 그리기

http://fromyou.tistory.com/560

5. 호(arc), 원(circle) 그리고 곡선 그리기

http://fromyou.tistory.com/561

5.2 arcTo() 메서드를 이용한 둥근 모서리 그리기

http://fromyou.tistory.com/562

5.3 quadraticCurveTo() 메서드를 이용한 2차 곡선 그리기

http://fromyou.tistory.com/563

5.4 bezierCurveTo() 메서드를 이용한 3차 곡선 그리기

http://fromyou.tistory.com/564

6. Text

http://fromyou.tistory.com/565

7. 그림자 효과(Shadow Effect)와 색상의 점진적 변화주기(Gradient)

http://fromyou.tistory.com/566

8. context의 상태 저장 및 불러오기

http://fromyou.tistory.com/567

9. 캔버스(canvas) 내용을 이미지로 저장

http://fromyou.tistory.com/568

10. 변환(Transformation)

http://fromyou.tistory.com/569

11. 이미지(Image)

http://fromyou.tistory.com/570

11.2 픽셀(pixel)에 기반한 이미지 가공(Manipulation), 11.3 슬라이드 쇼 보기

http://fromyou.tistory.com/571

1. Audio

http://fromyou.tistory.com/572

2. Video

http://fromyou.tistory.com/573

6장 Drag and Drop

http://fromyou.tistory.com/574

7장 Web Storage, 1.localStorage

http://fromyou.tistory.com/575

2. sessionStorage

http://fromyou.tistory.com/576

Box Model을 이용한 게시판 형태 만들기

http://fromyou.tistory.com/577

칼라 이미지를 Grayscale 이미지로 나타내기

http://fromyou.tistory.com/578

차트(Chart) 만들기 - 막대 그래프

http://fromyou.tistory.com/579

파이 차트(Pie Chart) 만들기

http://fromyou.tistory.com/580

 




 

 

 

 

전체 프로시저에서 특정 문자열 찾기 한방에검색

   

   

SysComments 사용

전체 데이터베이스에 포함된 각각의 프로시저에 포함된 특정 문자열을 찾기 위해 SysComments 의 Text 열에 저장되어 있는 원본 SQL 정의 문을 비교하여 찾는 방법입니다.

   

EXEC sp_MSForEachDB 'Use [?]; 

SELECT       DISTINCT DB_NAME() AS [DATABASE NAME], A.NAME

FROM         dbo.SysObjects A JOIN dbo.SysComments B ON A.ID = B.ID

WHERE        A.TYPE = ''P'' AND B.TEXT LIKE ''%EP_USER_TEMPEXTENDT%''

ORDER BY     A.NAME;'

   

   

sys.syscomments 가 추후 없어질 것을 대비해서 sys.all_sql_modules 를 사용해 확인할 수도 있습니다.

EXEC sp_MSForEachDB 'Use [?]; 

SELECT DISTINCT DB_NAME(), o.name FROM sys.sysobjects o

JOIN sys.all_sql_modules m ON o.id = m.object_id

WHERE o.type = ''P'' AND m.definition LIKE ''%EP_USER_TEMPEXTENDT%''

ORDER BY o.name;'

   

   

--데이터베이스 별로 검색 시

select distinct 'sp_helptext' + a.Name

From sysobjects a with (nolock)

join syscomments b with (nolock) on a.id = b.id

where --a.xtype = 'P' and

b.text Like '%EP_USER_TEMPEXTENDT%'

order by 'sp_helptext' + a.Name

   

a.xtype = 'P' : SP

a.xtype = 'TR' : 트리거

a.xtype = 'V' : 뷰

a.xtype = 'FN' : 함수

   

   




   

   

 

ASP.NET 웹 구성 지침

구성 데이터는 Web.config라는 XML 파일에 저장

   

targetFramework . 이 특성은 웹 사이트의 대상이 되는 .NET Framework 버전을 지정합니다. 이 특성은 .NET Framework 4 이상 버전을 대상으로 하는 웹 사이트의 경우에만 포함해야 합니다. 

Visual Studio에서 이 특성은 대상 프레임워크 버전에서 사용할 수 있는 기능만 프로젝트에 사용되도록 하는 데 사용됩니다. 자세한 내용은  밑에

   

예제

<compilation debug="true"
optimizeCompilations="true"
targetFramework="4.0" />

   

원본 위치 <https://msdn.microsoft.com/ko-kr/library/ff400235(v=vs.100).aspx>

   

   

   

Targeting .NET Platforms

You can build apps for many platforms and services by downloading .NET Framework targeting packs and SDKs and using them with Visual Studio.

Check out the .NET Framework blog for information on new releases. Information on the Lifecycle Policy for various .NET Framework versions can be found on the Support Lifecycle Policy FAQ.

The downloads available differ by Visual Studio version. Pick your Visual Studio version by using the buttons below.

Visual Studio 2010Visual Studio 2012Visual Studio 2013Visual Studio 2015

.NET Framework

   

원본 위치 <http://getdotnet.azurewebsites.net/target-dotnet-platforms.html>

   

 

VS 2012 부터 .net 4.5 지원




   

자바스크립트 최적화

   

1. 핵심 영역은

<head> 태그 안쪽

<body>바로 앞부분 스크립트 내용 이다.

   

즉, 정말 필수 자바스크립트는<head>안쪽에 위치

나머지는 태그의 가장 아래 부분인</body>바로 앞에 위치 시키는것이 정석.

   

2 이유는 자바스크립트 순차적으로 로드 되기 때문이다.

최초 로딩 때 필요없는 자바스크립트 로드, 파싱하는 시간을 없애고, 필요한 부분을 먼저 로드시키자는 것

문서의 로딩순서는

자바스크립트 -> .html, css 순서이기 때문

   

결국엔 총 브라우저 로딩시간은 같지만, 순서가 다르기 때문에 빠르게 뜨는 것으로 효과를 볼 수 있다.

   

   

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

defer를 쓰면 </body> 바로 앞까지 옮겨놓을 필요가 없음

1. IE4에서 MS는defer속성을 만들어 넣음
이후로 쭉 html5까지 유지된다. 즉, 쓸모 있는 속성이라는 반증

   

Defer를 사용하게 되면

Html, css가 브라우저 렌더링이 다 된 뒤 해당 스크립트 영역이 로드 됨.

   

defer 시킨 스크립트는 문서의 파셔(parse) 종료 후에 실행되는 스크립트 목록에 들어가게 된다.

한마디로 </body> 바로 앞에 스크립트를 넣었던 효과(동작)이 일어남
단, 실제 스크립트 위치는 상관없어짐.

   

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

Html5부터 async 출현

   

Async의 의미는 기존 브라우저 로딩과 관계없이 가능한 빨리 실행(로딩)시켜라는 부분 즉 비동기화

단, CPU자원을 많이 쓴다.

종속성이 없는 코드에만 사용한다.

예를 들어, 구글 애드센스 js파일 같은데는 사용 가능

Jquery.min.js도 종속성이 없는 파일?

Async는 막상 쓸 데가 안떠오름.

   

   

   




+ Recent posts