var $a = a || document;
var $a
if (a !== undefined
&& a !== false
&& a !== null) {
$a = a;
} else {
$a = document;
}
var $a = a || document;
var $a
if (a !== undefined
&& a !== false
&& a !== null) {
$a = a;
} else {
$a = document;
}
jQuery 소스 1.11.0 버전의 소스는 약 10,000 라인입니다.
한 줄 한 줄 살펴 보기보다는 전체적인 맥락을 살펴 봤습니다.
다음과 같이 시작합니다.
(function (g, f) {}(window, Function));
CommonJS의 모듈을 따르는 부분이 나옵니다. 이 가운데 체크하는 것이 있는데, jQuery의 용도를 명확히 얘기합니다.
"jQuery requires a window with a document"
if (!w.document) { throw new Error("jQuery requires a window with a document"); }
Function 부분은 jQuery의 본체입니다.
기억에 의하면 4부분 정도가 생각납니다.
1. Selector(Sizzle 이용)
2. Event
3. Tween
4. ajax
이클립스의 JS Outline은 다음과 같습니다.
update doc: http://okjsp.tistory.com/1165644305
정리를 시작했습니다.
브라우저를 탈출한 자바스크립트가 일을 내고 있기 때문에 자바스크립트 세상의 돌아가는 이치를 알려면 어느 게 어떤 용도인지 알 필요가 있습니다.
다이어그램의 오류나 추가 사항 감사히 받겠습니다.
## 유틸리티 모듈
* 다른 프레임워크에서 가져다 쓰는 공공재
## 프레임워크
* 범용 : 웹 페이지에 많이 적용된 것
* MVC : 모델,뷰,콘트롤러 코드를 용도에 맞게 파일을 분리해 놓은 프레임워크, 화면처리 전용, 비즈로직 전용 파일, 두 가지를 엮어주는 콘트롤러 코드
* Full Stack : 클라이언트와 서버 사이드 모두 지원하는 JS 프레임워크
## 백엔드
* 탈 브라우저 JS 기술, 자바스크립트는 브라우저에서만 동작한다는 편견을 버리고 갈께요.
* Java, .NET 기술과 경쟁.
* 2014/02 현재 59,000가지 플러그인 등록됨. http://npmjs.org
## 빌드 도구
* 자바스크립트 용량을 줄이고, 하루패드(https://github.com/rhiokim/haroopad) 같은 애플리케이션을 자동으로 컴파일 해주는 도구
## 패키지 매니저
* 모듈을 제공해주는 플랫폼
## 그래픽
* 시각화 엔진
## 테스트
* 자동으로 테스트를 해주는 프레임워크
## 파생 언어
* 자바스크립트 해석기로 동작하지만, 자바스크립트와 문법이 다른 언어
## 데이터베이스
* NoSQL에 포함되는 JSON 형식의 자바스크립트 기반 데이터베이스
Thanks to
Outsider, Brian Choi, 에반젤리™, 망고한량
복사하기
C-a: 커서 줄 앞으로
C-SPC: 선택 시작
C-n: 커서 줄 끝으로
M-w: 영역 복사
C-y: 붙이기
M(meta key)은 ESC 누르고 나서 다음 키(w) 입력입니다.
참고: http://stackoverflow.com/questions/88399/how-do-i-duplicate-a-whole-line-in-emacs
Undo
3가지 방법
C-/
C-x, u
C-_
emacs에서 html을 편집할 때
C-c C-v 단축키로 해당 html을 브라우저에서 열 수 있습니다.
C-c / 단축키로 열린 태그에 대한 닫는 태그를 자동 입력할 수 있습니다.
관련: http://www.gnu.org/software/emacs/manual/html_node/emacs/HTML-Mode.html
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
다음과 같은 에러 메시지를 만나면 당황하게 됩니다.
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! 보기 쉽지 않네요.