Ch 06. 오프라인에서 동작하기.

Slides:



Advertisements
Similar presentations
10장. 시기별 학급경영 11조 염지수 이 슬 권용민 신해식.
Advertisements

일본 근세사. (1) 에도막부의 개창 ( ㄱ ) 세키가하라의 전투 (1600) - 히데요시의 사후 다섯 명의 다이로 ( 大老 ) 가운데 최대 영지 (250 만석 ) 를 보유하고 있던 도쿠가와 이에야스가 급부상. 이에 이에야스와 반목해 온 이시다 미쓰나리 ( 石田三成 ),
아니마 / 아니무스 송문주 조아라. 아니마 아니마란 ? 남성의 마음속에 있는 여성적 심리 경향이 인격화 한 것. 막연한 느낌이나 기분, 예견적인 육감, 비합리적인 것에 대 한 감수성, 개인적인 사랑의 능력, 자연에 대한 감정, 그리.
대구가톨릭대학교 체육교육과 06 학번 영안중학교 체육교사 신웅섭 반갑습니다. 반야월초등학교 축구부 대륜중학교 축구부 대륜고등학교 대구가톨릭대학교 차석 입학 대구가톨릭대학교 수석 졸업 2014 년 경북중등임용 체육 차석 합격 영안중학교 체육교사 근무 소개.
교수님 영상 제 2 장 관세법 일반 제 1 절 통칙 제 2 절 법 해석의 원칙 등 제 3 절 기한과 기간 제 4 절 서류의 송달 등 제 5 절 관세의 부과 및 징수 제 6 절 납세의무의 소멸 등.
일장 - 1 일 24 시간 중의 명기 ( 낮 ) 의 길이 ( 밤은 암기, 낮은 명기 ) 광주기성 - 하루 중 낮의 길이의 장단에 따라 식물의 꽃눈 형성이 달라지는 현상 일장이 식물의 개화현상을 조절하는 중요한 요인 단일식물 - 단일조건에서 개화가 촉진되는 식물 장일식물.
2 학년 6 반 1 조 고은수 구성현 권오제 김강서.  해당 언어에 본디부터 있던 말이나 그것에 기초하여 새로 만들어진 말  어떤 고장 고유의 독특한 말  Ex) 아버지, 어머니, 하늘, 땅.
새가족부 워크샵 결과 '09 Review 및 '10 섬김계획 새가족부.
-이 실습을 통해 반영적 의사소통(적극적 경청)과 비 반영적인 의사소통(걸림돌)의 차이점을 많이 발견하도록 해 줍니다.
성결 어린이 영등포교회 유년부 정답은 뒷면에 제 11-31호 2011월 8월 14일 어디로 가세요?
2014년도 교원 및 기간제교사 성과상여금 전달교육 개 회 국기에 대한 경례 - 인사말
9월 첫새벽 특별헌신예배 2. 기도: 최일문 장로 (경조위원장) 3. 찬양: 경조위원회, 2~3남선교회
선진 고양교육 “유아교육 행정 업무 연수” 유치원 회계실무 및 유아학비 연수 경기도고양교육청.
Ⅵ. 빛(단원학습목표).
서울시 ‘찾아가는 동 주민센터’ 사업 시행 이후 지역사회의 변화
국가도서관통계시스템 수치입력자 매뉴얼 이의신청 방법 Version. 1.0.
묵자 겸애, 비명, 비공, 상현, 상동, 천지, 명귀, 삼표 법.
내 아이를 위한 구강관리.
14주차 1교시 강화계획 [학습목표] 1. 강화계획의 정의를 안다 [학습내용] 1. 단순한 강화계획 2. 간헐적 강화 3. 복합 계획 4. 선택과 대응법칙 [사전학습] 강화계획이 일어날 수 있는 사례를 생각해본다.
제16장 원무통계 • 분석 ☞ 통계란 특정의 사실을 일정한 기준에 의하여 숫자로 표시한 것을 말한다.통계로서 활용할 수 있는 조건으로는 ① 동질성을 지녀야 하고 ② 기준이 명확하고 ③ 계속성이 지속되어야 하며 ④ 숫자로 표시하여야 한다 경영실적의.
통로이미지㈜ 마케팅실 신입/경력 모집 ◎ 모집부분 및 자격요건 ◎ 채용인원 ◎ 전형절차 ◎ 제출서류 ◎ 연봉 ◎ 사전인터뷰
웹 해킹 기초와 실습.
연장근로와 야간·휴일근로 김영호 노무사 나눔 노사관계연구소 소장 연세대 일반대학원 박사 수료 고려사이버대 법학과 외래교수
서울지방세무사회 부가세 교육 사진클릭-자료 다운 세무사 김재우.
입 점 제 안 서 본 제안서를 당사에서 분양중인 대구광역시 동구 율하2택지개발지구 상업시설용지 C3-4,5 번지의 삼우메디빌에 대한 입점제안서로 제출 합니다. 2008년 10월 삼우종합개발.
mt. co. kr/view/mtview. php
치매의 예방 김 은민 윤금 노인요양원 치매의.
[beginning] Linux & vi editor
링크프라이스 상품등록을 위한 상품목록 작성법
영덕풍력발전단지 준공 기념식 행사(안) 경영기획실.
마산에 대하여 만든이 : 2204 김신우, 2202 권성헌.
안전한 생활 교과용도서의 이해 2015 개정 교육과정 초등학교 1~2학년군 (화)
에너지원의 변환 기술가정 1학년 1학기 1. 에너지원의 이용>(1)에너지와 에너지원>2/11 [제작의도]
7장: 빛의 간섭과 회절 빛의 간섭 단일슬릿과 회절 회절격자 – 더 선명해진 간섭무늬.
낮과 밤 알아보기 슬기로운 생활 2학년 1학기 4. 빛과 그림자>낮과 밤( 4/8 )
전자출결시스템 스마트폰 사용 매뉴얼 [ 학 생 용 ].
Web Vulnerabilities 정보 보호 2008/05/31 Getroot.
1. 하나투어 프로모션 페이지 수정사항 정리 – 리오타노 이태리 세미극세사 차렵이불_그레이
Chapter13 파일 접근 & 오프라인 접근 HTML5 Programming.
HTML, PHP, MySQL, Javascript
Appendix. WURFL 브라우저 살펴보기
5-2. 수자원의 개발과 이용 세계 4대 문명 발상지와 인접 하천 문명 인접 하천 메소포타미아 티그리스, 유프라테스 강 인더스
2장. 홈페이지를 만들기 전에 홈페이지 제작 목적과 제작 과정 홈페이지 제작 관련 기술들 홈페이지 제작에 필요한 준비물
게임웹사이트운영 [3] 블록과 목록.
■ 화성공장 산학인턴 버스 노선 확인 안내 문의 전화 : 안내페이지 접속 1
Digital Marketing School
바이러스와 악성코드.
2015년도 스마트공장 지원사업에 대한 사업비 타당성 평가
광고센터 완전정복 매뉴얼 ( ).
6장 마케팅 조사 박소현, 김중호, 박기찬.
한밭대학교 창업경영대학원 회계정보학과 장 광 식
제 17 장 MVC 모델과 구현 학기 인터넷비즈니스과 강 환수 교수.
음양오행과 물리학 조 원 : 김용훈, 양범길, 박수진, 윤진희, 이경남, 박미옥, 박지선 (11조)
기술가정 2학년 1학기 2.재료의 이용>1) 목재,플라스틱,금속재료의 특성>11/15제품의 구상
1 개인과 공동체 04. 사회적 약자 보호 정책 및 지역 격차 해소 정책 사회적 약자 보호 정책 지역 격차 해소 정책
거래처 매뉴얼 리 얼 시 스 템 주 식 회 사.
이야기 치료에 대하여 <8조 학문적 글쓰기 발표> 주희록 최은지
주요공지로 정할 글을 올립니다. 제목과 주소를 복사해둡니다
이미지 지금 아니면 언제 사용하지? 소멸알림톡 페이지 여행은 이거 하나면 돼! 없는 거 빼곤 다 있다!
Web Server Install.
거래처 매뉴얼 리 얼 시 스 템 주 식 회 사.
1. 전문대학기초학습지원센터 접속하기 전문대학 기초학습지원센터 접속 접속URL : LOG-IN 클릭.
1. 전문대학기초학습지원센터 접속하기 전문대학 기초학습지원센터 접속 접속URL : LOG-IN 클릭.
1. 전문대학기초학습지원센터 접속하기 전문대학 기초학습지원센터 접속 접속URL : LOG-IN 클릭.
노인학대예방교육 기획행정팀장 목진옥 엘요양원
유예 X-FILE *조사자* 1301권희원 1315이예지 1317장아정 1322홍자현.
코 칭 결 과 센 터 구성센터 (모바일) 코칭대상 프로 (엔지니어) 코칭일시
1. 하나투어 프로모션 페이지 수정사항 정리 – 인따르시아 여행용 파우치 5p (핑크)
1. 하나투어 프로모션 페이지 수정사항 정리 – [트래블이지] 비비드접이식가방 NO.1278
중국문학개론 한부와 겅건안문학 중어중국학과 ㅇ이진원 한부와 건안문학.
Presentation transcript:

Ch 06. 오프라인에서 동작하기

6.1 오프라인 애플리케이션 캐시의 기본 오프라인 애플리케이션 캐시의 주요 구성요소 웹서버에서 호스트를 담당하는 cache manifest 파일 이전에 배운 Kilo 예제가 동작할 때 어떻게 적용되는지를 통해 설명 manifest 파일 웹서버에 존재하는 간단한 텍스트 문서 cache-manifest라는 콘텐츠 타입으로 사용자 디바이스에 전달 manifest에는 사용자 디바이스가 내려받아야 하는 파일 목록이 들어 있고 동작하려면 먼저 저장돼야 함

6.1 오프라인 애플리케이션 캐시의 기본 오프라인 캐시 작동 Ex) 다음과 같은 파일이 들어 있는 웹디렉터리 index.html logo.jpg scripts/demo.js styles/screen.css 사용자가 애플리케이션을 방문할 때 브라우저가 로드하는 페이지 다른 파일은 index.html 내에서 참조 오프라인에서 모든 것을 사용할 수 있도록 하려면? index.html이 있는 디렉터리에 demo.manifest*라는 이름의 파일 생성

6.1 오프라인 애플리케이션 캐시의 기본 오프라인 캐시 작동 demo.manifest 변경 CACHE MANIFEST index.html logo.jpg scripts/demo.js styles/screen.css manifest 안의 경로는 manifest 파일의 위치와 상대적 URL 같은 절대 경로를 이용할 수도 있음 Ex) CACHE MANIFEST http://www.example.com/index.html http://www.example.com/logo.jpg http://www.example.com/scripts/demo.js http://www.example.com/styles/screen.css

6.1 오프라인 애플리케이션 캐시의 기본 오프라인 캐시 작동 index.html 안의 HTML 태그에 manifest 속성을 추가하고 링크 <html manifest="demo.manifest"> text/cache-manifest 콘텐츠 타입을 manifest 파일에 제공해야 브라우 저가 그것을 인식 아파치 웹서버나 호환 웹서버를 이용하는 경우 다음처럼 웹디렉터리에 .htaccess 파일을 추가하는 방법도 있음 Ex) AddType text/cache-manifest .manifest 다음 번에 사용자가 http://example.com/index.html을 열면? 페이지와 리소스가 네트워크(example.com/index.html 대신 여러분의 웹앱 의 URL로 교체)에서 정상으로 로드 백그라운드에서는 manifest에 리스트된 모든 파일이 로컬에 내려 받아짐 내려 받기가 끝나면 로컬 파일에만 접근 인터넷이 끊겨도 웹앱에 지속적으로 접근 가능함

6.1 오프라인 애플리케이션 캐시의 기본 웹사이트가 변경되면 어떻게 업데이트 하는가? 사용자가 인터넷에 접속해 웹앱의 URL로 들어올 때, 사용자의 브라우 저는 로컬 복사본과 비교하기 위해 사이트에서 manifest 파일 확인 manifest가 바뀌었다면, 브라우저는 리스트 된 파일을 전부 내려 받기 파일은 임시 캐시의 백그라운드로 내려 받으므로 정상 동작함

6.2 온라인 Whitelist와 Fallback 옵션 화이트 리스트 항상 네트워크를 통해 어떤 리소스에 접근하도록 브라우저에 강제 사용자가 오프라인일 때는 브라우저가 캐시를 이용할 수 없다는 의미 온라인 전용으로 리소스를 사용하려면 manifest 파일 안에 NETWORK: 키 워드가 필요함 manifest 파일의 NETWORK 섹션으로 이동시킨 logo.jpg를 화이트리스트에 넣은 예 CACHE MANIFEST index.html scripts/demo.js styles/screen.css NETWORK: logo.jpg

6.2 온라인 Whitelist와 Fallback 옵션 사용자가 Online/Offline 일 때 화이트 리스트 적용 화면

6.2 온라인 Whitelist와 Fallback 옵션 만일 오프라인일 때 깨져 보이는 것이 싫다면? FALLBACK 키워드 이용 CACHE MANIFEST index.html scripts/demo.js styles/screen.css FALLBACK: logo.jpg offline.jpg

6.2 온라인 Whitelist와 Fallback 옵션 사용자가 Online/Offline 일 때 Fallback 옵션 적용 화면

6.2 온라인 Whitelist와 Fallback 옵션 partial path로 여러 리소스를 이용하려 단일 폴백 지정 Ex) 웹사이트에 images 디렉터리를 추가해 파일을 추가한 예시 /demo.manifest /index.html /images/logo.jpg /images/logo2.jpg /images/offline.jpg /scripts/demo.js /styles/screen.css images 디렉터리에서 offline.jpg를 브라우저가 Fallback하도록 CACHE MANIFEST index.html scripts/demo.js styles/screen.css FALLBACK: images/ images/offline.jpg

6.2 온라인 Whitelist와 Fallback 옵션 사용자의 상태에 따른 이미지 처리 (폴백 이미지는 단일)

6.2 온라인 Whitelist와 Fallback 옵션 오프라인 애플리케이션 캐시 manifest 파일의 NETWORK나 FALLBACK에 리소스를 추가할지 여부는 애플리케이션의 특성에 따라 달라짐 디바이스에 앱을 로컬 저장하는 것이 주요 목적 서버 부하를 줄이는 것이나 성능을 높이는 방안이 아니다 !!! 대부분, 앱을 실행하는 데 필요한 파일을 전부 manifest 파일 안에 리스트로 만들어야 함 동적인 콘텐츠가 많다면 오프라인 애플리케이션 캐시에 적합하지 않기 때문에, 다른 접근법을 고려해야 함

6.3 동적 Manifest 파일 생성하기 Kilo 예제에 오프라인 앱 캐시 작업 적용하기 Kilo는 몇 가지 파일로 구성되어 있고, 이를 manifest 파일 안에 수동으 로 모두 리스트하려면 번거로와짐 이 문제를 해결하려면, 애플리케이션 디렉터리(그리고 서브 디렉터리) 의 내용을 읽어, 파일 리스트를 만드는 PHP 파일을 작성 Kilo 디렉터리에 manifest.php라는 새로운 파일을 만들고, 다음 코드 추가

6.3 동적 Manifest 파일 생성하기 Kilo 예제에 오프라인 앱 캐시 작업 적용하기 manifest.php 분석 ➊ PHP header 함수는 cache-manifest 콘텐츠 타입의 파일로 출력 manifest 파일을 위한 콘텐츠 타입으로 정의된 .htaccess 파일을 이용할 수 있음 ➋ 캐시 manifest 파일의 첫 줄은 ‘CACHE MANIFEST’ 브라우저에 관한 CACHE MANIFEST가 문서의 첫 줄 이 PHP 파일은 웹서버를 구동하고, 브라우저는 echo 같은 텍스트를 내보내는 명령의 결과만을 볼 수 있음 ➌ 현재 디렉터리의 파일을 나열하도록 하는 $dir라는 오브젝트를 만듦 재귀적으로 동작 서브 디렉터리에 어떤 파일을 가지고 있다면 그 파일을 찾아냄 ➍ 프로그램이 이 루프를 통과할 때마다, 현재 디렉터리에서 파일 중 하나를 대표하는 오브젝트에 $file 변수 설정 ‘매번 현재 디렉터리나 그것의 서브 디렉터리에서 찾아낸 다음 파일에 파일 변수를 세팅한다’는 의미

6.3 동적 Manifest 파일 생성하기 Kilo 예제에 오프라인 앱 캐시 작업 적용하기 manifest.php 분석 (2) manifest.php나 .으로 시작하거나(.htaccess 같은), .으로 시작하는 디렉터리(.svn 같은)가 포함된 파일은 무시 ➏ 각 파일의 이름 출력

6.3 동적 Manifest 파일 생성하기 Kilo 예제에 오프라인 앱 캐시 작업 적용하기 manifest.php 파일을 브라우저에서 열어본 결과

6.3 동적 Manifest 파일 생성하기 Kilo 예제에 오프라인 앱 캐시 작업 적용하기 manifest.php 파일을 브라우저에서 열어본 결과 (2)

6.3 동적 Manifest 파일 생성하기 Kilo 예제에 오프라인 앱 캐시 작업 적용하기 index.html을 열고 head에 manifest.php 추가 <html manifest="manifest.php"> 디렉터리 안의 파일에 변경이 일어날 때 콘텐츠도 변경되도록 수정 manifest의 내용이 변경된다면? 클라이언트는 애플리케이션만 다시 내려 받음 manifest.php 수정

6.3 동적 Manifest 파일 생성하기 Kilo 예제에 오프라인 앱 캐시 작업 적용하기 manifest.php 코드 분석 ➊ 파일의 해시 값을 저장할 문자열 초기화 ➋ PHP의 md5_file 함수(Message-Digest 알고리즘 5)를 이용해 각 파일의 해시를 계산하여 $hashes 문자열의 끝에 추가 파일에 어떤 변화라도 일어나면 md5_file 함수의 결과도 변경 해시는 4ac3c9c004cac7785fa6b132b4f18efc 같은 32자의 문자열 ➌ 해시(각 파일의 32자의 문자열이 함께 연결된 경우)의 큰 문자열을 받아, 그 문자열의 MD5 해시를 계산 주석(# 문자로 시작하는)을 포함하는 짧은 문자열(32자 문자열 대신 파일의 수만큼 32를 곱한)을 반환 내용은 의미가 없지만 파일 중 하나가 수정된다면, manifest가 변경되었음을 의미하므로 이 코드도 바뀜

6.3 동적 Manifest 파일 생성하기 Kilo 예제에 오프라인 앱 캐시 작업 적용하기 전체 디렉터리 트리 안의 파일 안에 있는 단일 문자를 변경하면? manifest에 새로운 해시 문자열 삽입 Kilo 파일을 조작한다는 의미 manifest 파일을 기본적으로 수정하는 것을 의미함

6.4 디버깅 오프라인 애플리케이션 캐시를 이용시 디버깅 내부에서 어떻게 돌아가는지를 거의 알 수 없어 디버깅이 힘들어짐 자바스크립트로 콘솔 로깅을 설정하면 원인 파악이 쉬워짐 $ cd /var/log/apache2/ $ tail -f access?log

6.4 디버깅 자바스크립트 콘솔 이용한 피드백 디버깅 개발하는 동안 웹앱에 다음의 자바스크립트를 더하면 콘솔에 피드백 을 보내므로 브라우저 윈도우를 지속적으로 리프레시할 필요 없음

6.4 디버깅 자바스크립트 콘솔 이용한 피드백 디버깅

6.4 디버깅 자바스크립트 콘솔 이용한 피드백 디버깅 예제 코드 분석 ➊ 애플리케이션 캐시 오브젝트를 위한 상태 값들로 구성된 배열 설정 HTML5 스펙에 따라 여섯 가지 값이 선언 짧게 처리한(예를 들어, 3번 상태의 뜻은 ‘내려받기 중’입니다) 정수 값을 가짐. 3번으로 나오는 함수의 경우 logEvent 함수에서 더 상세한 설명 포함 가능 ➋ 스펙에 의해 정의된 가능한 모든 이벤트를 위한 이벤트 리스너 세팅 각각 logEvent 함수 불러옴 ➌ logEvent 함수는 로그 메시지를 구성하기 위해 입력으로 이벤트를 받고 간단한 계산 이벤트 타입이 에러이고, 사용자가 온라인이라면? 리모트 manifest에서 구문 오류 발생 구문 오류는 manifest에서 일어나기 쉬운데 이유는 모든 경로가 유효하기 때문 파일 이름을 바꾸거나, 이동시키고 manifest 업데이트를 잊는다면, 이후 업데이트가 실패

6.4 디버깅 자바스크립트 콘솔 이용한 피드백 디버깅 예제 코드 분석 ➍ 콘솔에 구성된 메시지를 보냄 크롬에서 보기 → 개발자 정보 → 자바스크립트 콘솔을 선택 콘솔 메시지를 분석가능 [그림 6-7]처럼 10초마다 새로운 메시지를 볼 수 있음