웹
- Dart 언어 특징에 대한 동영상 강의 2014.02.19
- 구글 앱엔진 애플리케이션 업로드 2014.02.16
- 구글 앱엔진 UnicodeDecodeError 처리 방법 2014.02.16
- 구글 앱엔진 시작하기 윈도우XP 편 2014.02.16
- jQuery API 2014.02.15
- jQuery 구조 2014.02.15
- 자바스크립트 호이스팅(hoisting) 2014.02.13
- brew node 2014.01.27
- jQuery 1.11, 2.1 출시 2014.01.27
- 폭증하는 웹 트래픽에 대처하는 자세 2014.01.06
Dart 언어 특징에 대한 동영상 강의
구글 앱엔진 애플리케이션 업로드
http://localhost:8080으로 화면을 확인하면 이제 올릴 준비가 되었습니다.
app이 있는 폴더 상위에서 다음과 같이 명령을 입력합니다. 구글 계정 로그인하면 앱이 올라갑니다.
appcfg.py update helloworld/
explorer http://khcuweb.appspot.com 입력하면 IE가 뜨는데, 브라우저 인코딩을 UTF-8로 변경하면 제대로 보입니다. 크롬브라우저에서는 잘 보입니다.
관련: https://developers.google.com/appengine/docs/python/gettingstartedpython27/uploading
구글 앱엔진 UnicodeDecodeError 처리 방법
다음과 같은 에러 메시지를 만나면 당황하게 됩니다.
File "C:\Program Files\Google\google_appengine\google\appengine\tools\devappserver2\wsgi_server.py", line 31, in <module>
from cherrypy import wsgiserver
File "C:\Program Files\Google\google_appengine\lib\cherrypy\cherrypy\__init__.py", line 70, in <module>
from cherrypy import _cptools
File "C:\Program Files\Google\google_appengine\lib\cherrypy\cherrypy\_cptools.py", line 245, in <module>
from cherrypy.lib import cptools, encoding, auth, static, jsontools
File "C:\Program Files\Google\google_appengine\lib\cherrypy\cherrypy\lib\static.py", line 7, in <module>
mimetypes.init()
File "C:\Python27\lib\mimetypes.py", line 358, in init
db.read_windows_registry()
File "C:\Python27\lib\mimetypes.py", line 258, in read_windows_registry
for subkeyname in enum_types(hkcr):
File "C:\Python27\lib\mimetypes.py", line 249, in enum_types
ctype = ctype.encode(default_encoding) # omit in 3.x!
UnicodeDecodeError: 'ascii' codec can't decode byte 0xb1 in position 9: ordinal not in range(128)
C:\Python27\Lib 폴더의 mimetypes.py 249번째 줄에서 발생한 에러입니다.
편집기로 열어서 지우거나 앞에 #을 붙여서 주석처리합니다.
끝!
추가로 메모장에서 한글을 사용하는 경우, 파일 > 다른 이름으로 저장 메뉴를 선택하고 인코딩을 UTF-8로 저장하는 것을 추천합니다.
안녕, World! 보기 쉽지 않네요.
구글 앱엔진 시작하기 윈도우XP 편
구글 앱엔진 애플리케이션 업로드
구글 앱엔진 시작하기 윈도우XP 편
윈도우에서 구글 앱 엔진을 돌려 봤습니다. 파이썬으로 작업을 하면서 삽질을 조금했기 때문에 기록을 남겨봅니다. 현재 구글앱엔진은 파이썬 2.7을 공식 지원합니다. python 3.x은 지원하지 않습니다. 때문에 python27을 다시 설치했습니다.(삽질1)
절차는 다음과 같습니다.
part 1 앱 엔진 등록
1.1 http://appengine.google.com/ 사이트에 구글 계정으로 등록을 합니다. 휴대폰인증이 있습니다.
1.2 앱엔진 애플리케이션을 만듭니다. Application Identifier(예, khcuweb)가 정해지면 http://khcuweb.appspot.com 로 접근하게 됩니다.
part 2 로컬 개발환경
2.1 구글앱엔진 SDK 파이썬 버전을 다운로드 받아서 설치합니다.
2.2 http://python.org 사이트에서 Python 2.7을 다운로드 받아서 설치합니다.
2.3 환경 변수 > 사용자 변수 Path에 C:\Program Files\Google\google_appengine\ 경로 추가된 것 확인
2.4 환경 변수 > 시스템 변수 Path에 C:\Python27;C:\Python27\Scripts; 경로를 추가합니다.
part 3
3.1 helloworld.py 만들기
3.2 app.yaml 만들기
3.3 dev_appserver.py helloworld.py 실행하기
윈도우 XP에서 UnicodeDecodeError 발생하는데, 이에 관해서는 다음 글에 올리겠습니다.
jQuery API
- Ajax
- Attributes
- Callbacks Object
- Core
- CSS
- Data
- Deferred Object
- Deprecated
- Dimensions
- Effects
- Events
- Forms
- Internals
- Manipulation
- Miscellaneous
- Offset
- Properties
- Removed
- Selectors
- Traversing
- Utilities
- Version
- Ajax
- Attributes
- Callbacks Object
- Core
- CSS
- Data
- Deferred Object
- Deprecated
- Dimensions
- Effects
- Events
- Forms
- Internals
- Manipulation
- Miscellaneous
- Offset
- Properties
- Removed
- Selectors
- Traversing
- Utilities
- Version
jQuery 구조
## 소스
http://code.jquery.com/jquery-1.11.0.js
http://jsbeautifier.org 에서 정리
## 전체 구조
## functions and prototypes
### init
// Give the init function the jQuery prototype for later instantiation
init.prototype = jQuery.fn;
### Tween.prototype.init
Tween.prototype.init.prototype = Tween.prototype;
### Sizzle
### setFilters
### jQuery.fn.init
### jQuery.Event
### Tween
자바스크립트 호이스팅(hoisting)
자바스크립트에서 어렵다고 생각하는 개념이 hoisting 입니다.
function abc() { var a = 'bbb'; console.log(a) // ---- 1 function c() { console.log(a); // --- 2 (function() { console.log(a); // --- 3 a = 'ccc'; })(); var a; console.log(a) // ---4 } function d() { console.log(a); // --- 5 // var a = 3; } c(); a = 'ddd'; d(); };
brew node
MacBook-Pro:~ kenu$ node --version -bash: node: command not found MacBook-Pro:~ kenu$ brew link node Linking /usr/local/Cellar/node/0.10.24... Warning: Could not link node. Unlinking... Error: Could not symlink file: /usr/local/Cellar/node/0.10.24/lib/node_modules/npm/node_modules/sha/node_modules/readable-stream/zlib.js Target /usr/local/lib/node_modules/npm/node_modules/sha/node_modules/readable-stream/zlib.js already exists. You may need to delete it. To force the link and overwrite all other conflicting files, do: brew link --overwrite formula_name To list all files that would be deleted: brew link --overwrite --dry-run formula_name MacBook-Pro:~ kenu$ brew link --overwrite node Linking /usr/local/Cellar/node/0.10.24... 1190 symlinks created MacBook-Pro:~ kenu$ node --version v0.10.24 MacBook-Pro:~ kenu$ npm --version 1.3.21
jQuery 1.11, 2.1 출시
http://blog.jquery.com/2014/01/24/jquery-1-11-and-2-1-released/
하이라이트
1. 클래스 변경 시 성능향상
2. 세세하게 모듈화된 jQuery 커스텀 빌드
3. 시작 오버헤드 낮춤
4. npm 통해서 배포 https://npmjs.org/package/jquery/
npm install jquery 로 설치 가능
npm install jquery@1.11
5. bower 통해서 배포
bower install jquery 로 설치 가능
6. 기본 배포시 map 호출 제거
image from: http://teerapuch.wordpress.com/2011/09/13/intro-jquery-วิธีเริ่มต้นกับ-jquery/
폭증하는 웹 트래픽에 대처하는 자세
일간워스트가 오늘 핫이슈입니다. 일워( http://ilwar.com ) 사이트는 일베처럼 놀지 말자고 만든 일종의 패러디 사이트입니다. 제로보드로 뚝딱 만들어서 올렸다가 레이니걸님은 트위터를 주로 이용하는 것으로 알고 있는데, 15분만에 호스팅의 트래픽을 넘어섰다고 합니다.
우여곡절을 일간워스트 개장기(http://blog.rainygirl.com/?p=1266)라는 블로그 글로 올리셨는데, 여기에서 기술적으로 배울 점이 아주 많이 있다고 생각합니다.
블로그의 기술적인 내용을 요약해 봅니다.
1. "어짜피 XE 로 사이트 만드는거 10분이면 끝나는데 간단히 해볼까"
2. "15분만에 접속자가 몰리며 호스팅업체의 CPU제한이 초과되어 호스팅이 정지"
3. "유료호스팅으로 일단 옮겨보았습니다. 민영화버튼도 넣고, 일베로고를 그대로 본딴 로고도 적용"
4. "30일 아침, 파이낸셜뉴스에 첫 기사가 나갔습니다.
그리고 네이버 실시간급상승검색어에 이틀 가까이 올라가 있었습니다."
5. "순방문자 백만명은 진작에 돌파했고, 앞자리까지 계속 바뀌며 동시접속자까지도 폭발하고 있었으니 저로서는 황당할 수 밖에 없었습니다."
6. "유료호스팅에서도 결국 트래픽 초과로 사이트가 내려갔습니다. 결국 고민끝에, 자체서버로 돌리기로 결심했죠."
7. "둘쨋날인 12월 30일, 그 트래픽에서 정확히 3배가 늘어났습니다"
8. ...
이하 기술적인 이야기들은, 오늘 저녁 방송에서 특집으로 꾸며집니다.
레이니걸님 새해 복 많이 받으시기 바랍니다.
존경합니다.