forked from mattmakai/fullstackpython.com
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjavascript.html
More file actions
475 lines (454 loc) · 27.1 KB
/
javascript.html
File metadata and controls
475 lines (454 loc) · 27.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
<!DOCTYPE html>
<html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="Matt Makai">
<meta name="description" content="Full Stack Python explains each layer of the web application stack, from the server up through the rendering in a user's browser.">
<link rel="shortcut icon" href="theme/img/fsp-fav.png">
<title>JavaScript - Full Stack Python</title>
<link href="theme/css/fsp.css" rel="stylesheet">
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->
<link href="//netdna.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.css" rel="stylesheet">
</head>
<body>
<a href="https://github.com/makaimc/fullstackpython.github.com" class="github">
<img style="position: absolute; top: 0; right: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub" />
</a>
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="logo-header-section">
<a href="http://daigo3.github.io/fullstackpython.github.com/" style="text-decoration: none; border: none;"><img src="theme/img/fsp-logo.png" height="52" width="52" class="logo-image" style="padding-top: 1px;"/></a>
<span class="logo-title"><a href="http://daigo3.github.io/fullstackpython.github.com/">Full Stack Python</a></span>
</div>
</div>
</div><div class="row">
<div class="col-md-8">
<h1>JavaScript</h1>
<p><!-- JavaScript is a small scripting programming language embedded in web browsers
to enable dynamic content and interaction. -->
JavaScriptはWebブラウザに組み込まれたスクリプト言語で、Webページをダイナミックでインタラクティブにすることができます。</p>
<!-- ## Why is JavaScript necessary? -->
<h2>なぜJavaScriptは必要?</h2>
<p><!-- JavaScript executes in the client and enables dynamic content and interaction
that is not possible with HTML and CSS alone. Every modern Python web
application uses JavaScript on the front end. -->
JavaScriptはクライアント側で実行され、HTMLとCSSだけでは実現できないダイナミックなWebアプリケーションを作ることができます。モダンなPython Webアプリケーションでは、フロントエンドにJavaScriptを利用しています。</p>
<!-- ## Front end frameworks -->
<h2>フロントエンドフレームワーク</h2>
<p><!-- Front end JavaScript frameworks move the rendering for most of a web
application to the client side. Often these applications are informally
referred to as "one page apps" because the webpage is not reloaded upon every
click to a new URL. Instead, partial HTML pages are loaded into the
document object model or data is retrieved through an API call then displayed
on the existing page. -->
フロンエンドJavaScriptフレームワークでは、Webアプリケショーンのレンダリングの大部分をクライアントサイドで行います。このようなアプリケーションは、URLの遷移のためにページを再読み込みを行わないことから"シングルページアプリケーション"と呼ばれることがあります。DOM内に部分的なHTMLを読み込んだり、データをAPIから取得しページに表示することができます。</p>
<!-- Examples of these front end frameworks include: -->
<p>このような機能を持つフロントエンドのJavaScriptフレームワークには以下の様なものがあります。</p>
<ul>
<li>
<p><a href="https://angularjs.org/">Angular.js</a></p>
</li>
<li>
<p><a href="http://backbonejs.org/">Backbone.js</a></p>
</li>
<li>
<p><a href="http://emberjs.com/">Ember.js</a></p>
</li>
</ul>
<!-- Front end frameworks are rapidly evolving. Over the next several years
consensus about good practices for using the frameworks will emerge. -->
<p>フロントエンドJavaScriptフレームワークの進化はとても速く、数年もすれば、これらのフレームワークを利用するための、一致した最適解も出てくるでしょう。</p>
<!-- ## How did JavaScript originate? -->
<h2>JavaScriptはどのように発展してきたか</h2>
<!-- JavaScript is an implementation of
[the ECMAScript specification](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/JavaScript_Overview)
which is defined by the
[Ecma International Standards Body](http://www.ecma-international.org/default.htm). -->
<p>JavaScriptは、<a href="http://www.ecma-international.org/default.htm">Ecma International Standards Body</a>によって定められた<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/JavaScript_Overview">the ECMAScript specification</a>の実装です。</p>
<!-- ## JavaScript resources -->
<h2>JavaScriptを学ぶためのリソース</h2>
<p><!-- * <a href="http://www.html5rocks.com/en/tutorials/internals/howbrowserswork/">How Browsers Work</a>
is a great overview of both JavaScript and CSS as well as how pages are
rendered in a browser. -->
* <a href="http://www.html5rocks.com/en/tutorials/internals/howbrowserswork/">How Browsers Work</a>は、JavaScriptとCSS、そしてブラウザでページがどのようにレンダリングされるかを解説している素晴らしい記事です。</p>
<!-- * [A re-introduction to JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript)
by Mozilla walks through the basic syntax and operators. -->
<ul>
<li>Mozillaの<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript">A re-introduction to JavaScript</a>は、文法と演算子の基本を学ぶことができます。</li>
</ul>
<!-- * [Coding tools and JavaScript libraries](http://www.smashingmagazine.com/2011/10/28/useful-coding-workflow-tools-for-web-designers-developers/)
is a huge list by Smashing Magazine with explanations for each tool and
library for working with JavaScript. -->
<ul>
<li>Smashing Magazineの<a href="http://www.smashingmagazine.com/2011/10/28/useful-coding-workflow-tools-for-web-designers-developers/">Coding tools and JavaScript libraries</a>は、JavaScriptのツールとライブラリに関する巨大なリソースです。</li>
</ul>
<!-- * [Superhero.js](http://superherojs.com/) is an incredibly well designed list
of resources for how to test, organize, understand and generally work with
JavaScript. -->
<ul>
<li><a href="http://superherojs.com/">Superhero.js</a>は、テスト、管理、JavaScriptの基礎に関するリソースをまとめたリストです。</li>
</ul>
<!-- * [Unheap](http://www.unheap.com/) is an amazing collection of reusable JQuery
plugins for everything from navigation to displaying media. -->
<ul>
<li><a href="http://www.unheap.com/">Unheap</a>はナビゲーションからメディアの表示まで、様々なjQueryプラグインが紹介されています。</li>
</ul>
<!-- * [The State of JavaScript in 2015](http://www.breck-mckye.com/blog/2014/12/the-state-of-javascript-in-2015/)
is an opinion piece about favoring small, single-purpose JavaScript libraries
over larger frameworks due to churn in the ecosystem. -->
<ul>
<li><a href="http://www.breck-mckye.com/blog/2014/12/the-state-of-javascript-in-2015/">The State of JavaScript in 2015</a>では、JavaScriptの開発サイクルに大きく影響する大規模なフレームワークを使うよりも、単一の目的を達成するための小さなライブラリを使うべきとする意見が述べられています。</li>
</ul>
<!-- ## JavaScript learning checklist -->
<h2>JavaScriptを学ぶためのチェックリスト</h2>
<p><i class="fa fa-check-square-o"></i>
<!-- Create a simple HTML file with basic elements in it. Use the
<code>python -m SimpleHTTPServer</code> command to serve it up. Create a
<code><script type="text/javascript"></script></code>
element at the end of the <code><body></code> section in the HTML page. Start playing
with JavaScript within that element to learn the basic syntax. -->
基本的な要素を含んだ単純なHTMLファイルを作りましょう。<code>python -m SimpleHTTPServer</code>コマンドを使って、サーバを起動しHTMLを配信します。HTMLの<code><body></code>セクションの最後に<code><script type="text/javascript"></script></code>を記述して、JavaScriptを試してみましょう。</p>
<p><i class="fa fa-check-square-o"></i>
<!-- Download <a href="http://jquery.com/">JQuery</a> and add it to the page above your
JavaScript element. Start working with JQuery and learning how it makes basic
JavaScript easier. -->
<a href="http://jquery.com/">jQuery</a>をダウンロードし、使ってみましょう。jQueryを使い始めたら、JavaScriptの基本を簡単に学ぶことができます。</p>
<p><i class="fa fa-check-square-o"></i>
<!-- Work with JavaScript on the page. Incorporate examples from open source
projects listed below as well as JQuery plugins. Check out the Unheap link
below to find a large collection of categorized JQuery plugins. -->
ページ上でJavaScriptを動かしてみましょう。オープンソースのサンプルやjQueryプラグインを試したり、<a href="http://www.unheap.com/">Unheap</a>で色々なjQueryプラグインを探してみましょう。</p>
<p><i class="fa fa-check-square-o"></i>
<!-- Check out the JavaScript resources below to learn more about advanced concepts
and open source libraries. -->
JavaScriptのリソースを読み、応用的なコンセプト、オープンソースのライブラリを学びましょう。</p>
<p><i class="fa fa-check-square-o"></i>
<!-- Integrate JavaScript into your web application and check the
<a href="/static-content.html">static content</a> section for how to host the JavaScript
files. -->
あなたのWebアプリケーションにJavaScriptを導入しましょう。JavaScriptのファイルを扱う方法は<a href="./static-content.html">static content</a>の章を参照してください。</p>
<!-- ### Do you need to style your app or deploy it next? -->
<h3>Webアプリケーションのデザイン、またはデプロイを学びますか?</h3>
<div class="row">
<div class="col-md-3">
<div class="well select-next">
<a href="./cascading-style-sheets.html" class="btn btn-success btn-full"><i class="fa fa-css3 fa-inverse fa-2x"></i></a>
<p class="under-btn">
WebアプリケーションのUIを作るには?
</p>
</div>
</div>
<div class="col-md-3">
<div class="well select-next">
<a href="./static-content.html" class="btn btn-success btn-full"><i class="fa fa-spinner fa-inverse fa-2x"></i></a>
</a>
<p class="under-btn">
JavaScriptの様な静的なファイルを配信するには?
</p>
</div>
</div>
<div class="col-md-3">
<div class="well select-next">
<a href="./source-control.html" class="btn btn-success btn-full"><i class="fa fa-code-fork fa-inverse fa-2x"></i></a>
<p class="under-btn">
どのようにコードのバージョン管理をすれば良いですか?
</p>
</div>
</div>
<div class="col-md-3">
<div class="well select-next">
<a href="./application-programming-intefaces.html" class="btn btn-success btn-full"><i class="fa fa-exchange fa-2x"></i></a>
<p class="under-btn">
APIとは?
</p>
</div>
</div>
</div><style type="text/css">
#mc_embed_signup{background:#fff; clear:left; font:12px "Helvetica Neue",Arial,sans-serif; }
/* Add your own MailChimp form style overrides in your site stylesheet or in this style block.
We recommend moving this block and the preceding CSS link to the HEAD of your HTML file. */
</style>
<hr/>
<div id="mc_embed_signup">
<form action="http://mattmakai.us2.list-manage.com/subscribe/post?u=b7e774f0c4f05dcebbfee183d&id=b22335388d" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate>
<h4>Interested in a complete Full Stack Python book with detailed tutorials and example code? Sign up here and you'll get an alert email if a book is created. No other emails will be sent other than sign up confirmation.</h4>
<div class="row">
<div class="col-md-9">
<label for="mce-EMAIL">Email Address</label>
<input type="email" value="" name="EMAIL" class="required email form-control" id="mce-EMAIL">
</div>
<div class="col-md-3">
<input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="btn btn-success" style="margin-top: 20px;">
</div>
<div id="mce-responses" class="clear">
<div class="response" id="mce-error-response" style="display:none"></div>
<div class="response" id="mce-success-response" style="display:none"></div>
</div> <!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups-->
<div style="position: absolute; left: -5000px;"><input type="text" name="b_b7e774f0c4f05dcebbfee183d_b22335388d" value=""></div>
</div>
</form>
</div>
<script type="text/javascript">
var fnames = new Array();var ftypes = new Array();fnames[0]='EMAIL';ftypes[0]='email';fnames[1]='FNAME';ftypes[1]='text';fnames[2]='LNAME';ftypes[2]='text';
try {
var jqueryLoaded=jQuery;
jqueryLoaded=true;
} catch(err) {
var jqueryLoaded=false;
}
var head= document.getElementsByTagName('head')[0];
if (!jqueryLoaded) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = '//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js';
head.appendChild(script);
if (script.readyState && script.onload!==null){
script.onreadystatechange= function () {
if (this.readyState == 'complete') mce_preload_check();
}
}
}
var err_style = '';
try{
err_style = mc_custom_error_style;
} catch(e){
err_style = '#mc_embed_signup input.mce_inline_error{border-color:#6B0505;} #mc_embed_signup div.mce_inline_error{margin: 0 0 1em 0; padding: 5px 10px; background-color:#6B0505; font-weight: bold; z-index: 1; color:#fff;}';
}
var head= document.getElementsByTagName('head')[0];
var style= document.createElement('style');
style.type= 'text/css';
if (style.styleSheet) {
style.styleSheet.cssText = err_style;
} else {
style.appendChild(document.createTextNode(err_style));
}
head.appendChild(style);
setTimeout('mce_preload_check();', 250);
var mce_preload_checks = 0;
function mce_preload_check(){
if (mce_preload_checks>40) return;
mce_preload_checks++;
try {
var jqueryLoaded=jQuery;
} catch(err) {
setTimeout('mce_preload_check();', 250);
return;
}
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://downloads.mailchimp.com/js/jquery.form-n-validate.js';
head.appendChild(script);
try {
var validatorLoaded=jQuery("#fake-form").validate({});
} catch(err) {
setTimeout('mce_preload_check();', 250);
return;
}
mce_init_form();
}
function mce_init_form(){
jQuery(document).ready( function($) {
var options = { errorClass: 'mce_inline_error', errorElement: 'div', onkeyup: function(){}, onfocusout:function(){}, onblur:function(){} };
var mce_validator = $("#mc-embedded-subscribe-form").validate(options);
$("#mc-embedded-subscribe-form").unbind('submit');//remove the validator so we can get into beforeSubmit on the ajaxform, which then calls the validator
options = { url: 'http://mattmakai.us2.list-manage.com/subscribe/post-json?u=b7e774f0c4f05dcebbfee183d&id=b22335388d&c=?', type: 'GET', dataType: 'json', contentType: "application/json; charset=utf-8",
beforeSubmit: function(){
$('#mce_tmp_error_msg').remove();
$('.datefield','#mc_embed_signup').each(
function(){
var txt = 'filled';
var fields = new Array();
var i = 0;
$(':text', this).each(
function(){
fields[i] = this;
i++;
});
$(':hidden', this).each(
function(){
var bday = false;
if (fields.length == 2){
bday = true;
fields[2] = {'value':1970};//trick birthdays into having years
}
if ( fields[0].value=='MM' && fields[1].value=='DD' && (fields[2].value=='YYYY' || (bday && fields[2].value==1970) ) ){
this.value = '';
} else if ( fields[0].value=='' && fields[1].value=='' && (fields[2].value=='' || (bday && fields[2].value==1970) ) ){
this.value = '';
} else {
if (/\[day\]/.test(fields[0].name)){
this.value = fields[1].value+'/'+fields[0].value+'/'+fields[2].value;
} else {
this.value = fields[0].value+'/'+fields[1].value+'/'+fields[2].value;
}
}
});
});
$('.phonefield-us','#mc_embed_signup').each(
function(){
var fields = new Array();
var i = 0;
$(':text', this).each(
function(){
fields[i] = this;
i++;
});
$(':hidden', this).each(
function(){
if ( fields[0].value.length != 3 || fields[1].value.length!=3 || fields[2].value.length!=4 ){
this.value = '';
} else {
this.value = 'filled';
}
});
});
return mce_validator.form();
},
success: mce_success_cb
};
$('#mc-embedded-subscribe-form').ajaxForm(options);
});
}
function mce_success_cb(resp){
$('#mce-success-response').hide();
$('#mce-error-response').hide();
if (resp.result=="success"){
$('#mce-'+resp.result+'-response').show();
$('#mce-'+resp.result+'-response').html(resp.msg);
$('#mc-embedded-subscribe-form').each(function(){
this.reset();
});
} else {
var index = -1;
var msg;
try {
var parts = resp.msg.split(' - ',2);
if (parts[1]==undefined){
msg = resp.msg;
} else {
i = parseInt(parts[0]);
if (i.toString() == parts[0]){
index = parts[0];
msg = parts[1];
} else {
index = -1;
msg = resp.msg;
}
}
} catch(e){
index = -1;
msg = resp.msg;
}
try{
if (index== -1){
$('#mce-'+resp.result+'-response').show();
$('#mce-'+resp.result+'-response').html(msg);
} else {
err_id = 'mce_tmp_error_msg';
html = '<div id="'+err_id+'" style="'+err_style+'"> '+msg+'</div>';
var input_id = '#mc_embed_signup';
var f = $(input_id);
if (ftypes[index]=='address'){
input_id = '#mce-'+fnames[index]+'-addr1';
f = $(input_id).parent().parent().get(0);
} else if (ftypes[index]=='date'){
input_id = '#mce-'+fnames[index]+'-month';
f = $(input_id).parent().parent().get(0);
} else {
input_id = '#mce-'+fnames[index];
f = $().parent(input_id).get(0);
}
if (f){
$(f).append(html);
$(input_id).focus();
} else {
$('#mce-'+resp.result+'-response').show();
$('#mce-'+resp.result+'-response').html(msg);
}
}
} catch(e){
$('#mce-'+resp.result+'-response').show();
$('#mce-'+resp.result+'-response').html(msg);
}
}
}
</script>
<!--End mc_embed_signup--> </div>
<div class="col-md-offset-1 col-md-3" id="sidebar">
<div class="panel panel-success">
<div class="panel-heading"><h3 class="panel-head">JavaScript</h3></div>
<div class="panel-body">
<a href="http://daigo3.github.io/fullstackpython.github.com/">Full Stack Python</a>はPythonでWebアプリケーションを開発するための情報を提供するオープンなガイドです。
<hr/>
There's a work-in-progress
現在、作成中の<a href="./full-stack-python-map.pdf">subjects map (.pdf)</a>は、目次に加え各章を視覚化したものです。
<hr/>
より詳細なチュートリアルが必要ですか?
<a href="./email.html">サインアップしてアップデートをメールで受け取ることができます。</a>
<hr/>
このサイトは<a href="http://twitter.com/mattmakai">Matt Makai</a>により、
コミュニティからプルリクエストによる協力を得て作成されています。GitHubで
<a href="https://github.com/makaimc">Mattをフォロー</a>すれば、日々の更新を見ることができます。
</div>
</div>
<div class="panel panel-success">
<div class="panel-heading">
<h3 class="panel-head">Table of Contents</h3>
</div>
<div class="list-group">
<a href="./introduction.html" class="list-group-item smaller-item ">Introduction</a>
<a href="./web-frameworks.html" class="list-group-item smaller-item ">Web Frameworks</a>
<a href="./django.html" class="list-group-item smaller-item ">Django</a>
<a href="./flask.html" class="list-group-item smaller-item ">Flask</a>
<a href="./bottle.html" class="list-group-item smaller-item ">Bottle</a>
<a href="./other-web-frameworks.html" class="list-group-item smaller-item ">Other Web Frameworks</a>
<a href="./deployment.html" class="list-group-item smaller-item ">Deployment</a>
<a href="./servers.html" class="list-group-item smaller-item ">Servers</a>
<a href="./platform-as-a-service.html" class="list-group-item smaller-item ">Platform-as-a-service</a>
<a href="./operating-systems.html" class="list-group-item smaller-item ">Operating Systems</a>
<a href="./web-servers.html" class="list-group-item smaller-item ">Web Servers</a>
<a href="./wsgi-servers.html" class="list-group-item smaller-item ">WSGI Servers</a>
<a href="./source-control.html" class="list-group-item smaller-item ">Source Control</a>
<a href="./application-dependencies.html" class="list-group-item smaller-item ">Application Dependencies</a>
<a href="./databases.html" class="list-group-item smaller-item ">Databases</a>
<a href="./no-sql-datastore.html" class="list-group-item smaller-item ">NoSQL Data Stores</a>
<a href="./web-design.html" class="list-group-item smaller-item ">Web Design</a>
<a href="./cascading-style-sheets.html" class="list-group-item smaller-item ">Cascading Style Sheets</a>
<a href="./javascript.html" class="list-group-item smaller-item active">JavaScript</a>
<a href="./continuous-integration.html" class="list-group-item smaller-item ">Continuous Integration</a>
<a href="./code-metrics.html" class="list-group-item smaller-item ">Code Metrics</a>
<a href="./configuration-management.html" class="list-group-item smaller-item ">Configuration Management</a>
<a href="./static-content.html" class="list-group-item smaller-item ">Static Content</a>
<a href="./caching.html" class="list-group-item smaller-item ">Caching</a>
<a href="./task-queues.html" class="list-group-item smaller-item ">Task Queues</a>
<a href="./application-programming-interfaces.html" class="list-group-item smaller-item ">Application Programming Interfaces</a>
<a href="./api-integration.html" class="list-group-item smaller-item ">API Integration</a>
<a href="./api-creation.html" class="list-group-item smaller-item ">API Creation</a>
<a href="./logging.html" class="list-group-item smaller-item ">Logging</a>
<a href="./monitoring.html" class="list-group-item smaller-item ">Monitoring</a>
<a href="./web-analytics.html" class="list-group-item smaller-item ">Web Analytics</a>
<a href="./web-application-security.html" class="list-group-item smaller-item ">Web Application Security</a>
<a href="./best-python-resources.html" class="list-group-item smaller-item ">Best Python Resources</a>
<a href="./development-environments.html" class="list-group-item smaller-item ">Development Environments</a>
<a href="./about-author.html" class="list-group-item smaller-item ">About the Author</a>
<a href="./change-log.html" class="list-group-item smaller-item ">Change Log</a>
<a href="./future-directions.html" class="list-group-item smaller-item ">Future Directions</a>
</div>
</div>
</div></div>
<hr/>
<div class="footer pull-right">
<a href="http://www.mattmakai.com/" class="underline">Matt Makai</a>
2014
</div>
</div>
<div style="display: none;">
<img src="https://www.linkedin.com/profile/view?authToken=zRgB&authType=name&id=3952407" />
</div>
</body>
</html>