forked from mattmakai/fullstackpython.com
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsource-control.html
More file actions
568 lines (526 loc) · 33.7 KB
/
source-control.html
File metadata and controls
568 lines (526 loc) · 33.7 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
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
<!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>Source Control - 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">
<!-- # Source control -->
<h1>ソース管理</h1>
<!-- Source control, also known as *version control*, stores software code files
with a detailed history of every modification made to those files. -->
<p>ソース管理、または<em>バージョン管理</em>は、ソフトウェアのコードを記述したファイルを変更した履歴を管理しています。</p>
<!-- ## Why is source control necessary? -->
<h2>なぜソース管理が必要?</h2>
<!-- Version control systems allow developers to modify code without worrying
about permanently screwing something up. Unwanted changes can be easily rolled
back to previous working versions of the code. -->
<p>バージョン管理をすることで、これまで作り上げたものを台無しにする心配をせずにコードを編集することができるようになります。コードの変更を無かったことにしたい場合も、前のバージョンのコードに巻き戻すことができます。</p>
<!-- Source control also makes team software development easier. One developer
can combine her code modifications with other developers' code through
[diff](http://en.wikipedia.org/wiki/Diff) views that show line-by-line
changes then merge the appropriate code into the main code branch. -->
<p>また、ソース管理はチームでの開発を簡単に行えるようになります。ある開発者が他の開発者のコードを<a href="http://ja.wikipedia.org/wiki/Diff">diff</a>によって1行づつ見比べることができるので、メインのコードブランチにマージすることができます。</p>
<!-- Version control is a necessity on all software projects regardless of
development time, codebase size or the programming language used. Every
project should immediately begin by using a version control system such
as Git or Mercurial. -->
<p>バージョン管理は開発期間、規模、言語に関わらず必須です。すべてのプロジェクトで直ちにGitやMercurialの様なバージョン管理システムを導入するべきです。</p>
<!-- ## Source control during deployment -->
<h2>開発中のソース管理</h2>
<!-- Pulling code during a deployment is a potential way source control systems fit
into the deployment process. -->
<p>開発段階において、開発中のコードを取り出すのがソース管理システムの用途です。</p>
<p><img src="theme/img/app-source-control.png" width="100%" class="technical-diagram" alt="ソース管理システムからコードを取り出すためのサーバを利用する"></p>
<!-- Note that some developers recommend deployment pipelines package the source
code to deploy it and never have a production environment touch a source
control system directly. However, for small scale deployments it's often
easiest to pull from source code when you're getting started instead of
figuring out how to wrap the Python code in a system installation package. -->
<p>デプロイにはソースコードをパッケージングし、プロダクション環境には一切ソース管理システムを利用しないというケースもあります。しかし、初学者にとってはシステムのインストールパッケージにPythonコードをパッケージングする方法を学び始めるよりも、小規模のデプロイにはソースコードを取り出して行うほうが簡単でしょう。</p>
<!-- ## Source control projects -->
<h2>ソース管理プロジェクト</h2>
<p><!-- Numerous source control systems have been created over the past several
decades. In the past, proprietary source control software offered features
tailored to large development teams and specific project workflows. However,
open source systems are now used for version control on the largest and most
complicated software projects in existence. There's no reason why your project
should use anything other than an open source version control system in
today's Python development world. The two primary choices are: -->
この2~30年の間様々なソース管理システムが作られてきました。過去にはプロプライエタリなソース管理ソフトウェアが大規模なプロジェクトチームのために作られたり、特定のプロジェクトに対応してきました。しかし、今日では最も巨大で複雑なプロジェクトが実際にオープンソースのバージョン管理システムを利用しています。今日のPythonプロジェクトでオープンソースのバージョン管理システムを使わない理由はありません。主な選択肢は2つです。</p>
<!-- * [Git](http://git-scm.com/) is a free and open source distributed version
control system. -->
<ul>
<li><a href="http://git-scm.com/">Git</a>はフリーでオープンソースのバージョン管理システムです。</li>
</ul>
<!-- * [Mercurial](http://mercurial.selenic.com/) is similar to Git, also a free
and open source distributed version control system. -->
<ul>
<li><a href="http://mercurial.selenic.com/">Mercurial</a>はGitに似た、フリーでオープンなバージョン管理システムです。</li>
</ul>
<!-- ## Hosted source control services -->
<h2>ソース管理のホスティング</h2>
<!-- Git and Mercurial can be downloaded and run on your own server. However,
it's easy and cheap to get started with a hosted version control service.
You can transition away from the service at a later time by moving your
repositories if your needs change. A couple of recommended hosted version
control services are: -->
<p>GitやMercurialはあなたのサーバにインストールして利用することができますが、ソース管理のホスティングサービスを使うほうが、扱いやすく経済的です。必要に応じて利用するサービスは変更できます。お勧めのホスティングサービスは2つです。</p>
<!-- * [GitHub](https://github.com/) is currently the most commonly used source
control platform for using Git. -->
<ul>
<li><a href="https://github.com/">GitHub</a>は、現時点で最も利用されているGitホスティングサービスです。</li>
</ul>
<!-- * [BitBucket](https://bitbucket.org/) provides free Git and Mercurial
repositories for open projects and private repositories for up to five
users. Users pay for hosting private repositories with more than five users. -->
<ul>
<li><a href="https://bitbucket.org/">BitBucket</a>はGitとMercurialに対応し、5人までのチームであれば公開・非公開のレポジトリを無料でホスティングすることができます。</li>
</ul>
<!-- ## General source control resources -->
<h2>一般的なソース管理のリソース</h2>
<!-- * [Staging Servers, Source Control & Deploy Workflows, And Other Stuff Nobody Teaches You](http://www.kalzumeus.com/2010/12/12/staging-servers-source-control-deploy-workflows-and-other-stuff-nobody-teaches-you/)
is a comprehensive overview by Patrick McKenzie of why you need source
control. -->
<ul>
<li><a href="http://www.kalzumeus.com/2010/12/12/staging-servers-source-control-deploy-workflows-and-other-stuff-nobody-teaches-you/">Staging Servers, Source Control & Deploy Workflows, And Other Stuff Nobody Teaches You</a>はPatrick McKenzieによる、なぜソース管理が必要なのかを解説した記事です。</li>
</ul>
<!-- * [Version control best practices](https://blog.rainforestqa.com/2014-05-28-version-control-best-practices/)
is a good write up of how to work with version control systems. The post is
part of an ongoing deployment guide written by the folks at
[Rainforest](https://www.rainforestqa.com/). -->
<ul>
<li><a href="https://blog.rainforestqa.com/2014-05-28-version-control-best-practices/">Version control best practices</a>は、バージョン管理システムの利用方法について書かれています。記事は<a href="https://www.rainforestqa.com/">Rainforest</a>によってフォークされ、継続しています。</li>
</ul>
<!-- * This lighthearted guide to the
[ten astonishments in version control history](http://www.flourish.org/blog/?p=397)
is a fun way to learn how systems developed over the past several decades. -->
<ul>
<li><a href="http://www.flourish.org/blog/?p=397">ten astonishments in version control history</a>は、ソフトウェア開発の歴史について楽しく学ぶことができます。</li>
</ul>
<!-- * [A visual guide to version control](http://betterexplained.com/articles/a-visual-guide-to-version-control/)
is a detailed article with real-life examples for why version control is
necessary in software development. -->
<ul>
<li><a href="http://betterexplained.com/articles/a-visual-guide-to-version-control/">A visual guide to version control</a>は、なぜバージョン管理が必要なのかということが実践的なバージョン管理とともに解説されています。</li>
</ul>
<!-- * [An introduction to version control](http://guides.beanstalkapp.com/version-control/intro-to-version-control.html)
shows the basic concepts behind version control systems. -->
<ul>
<li><a href="http://guides.beanstalkapp.com/version-control/intro-to-version-control.html">An introduction to version control</a>では、バージョン管理の基本的なコンセプトについて解説されています。</li>
</ul>
<!-- * [What Is Version Control? Why Is It Important For Due Diligence?](http://oss-watch.ac.uk/resources/versioncontrol)
explains the benefits and necessity of version control systems. -->
<ul>
<li><a href="http://oss-watch.ac.uk/resources/versioncontrol">What Is Version Control? Why Is It Important For Due Diligence?</a>ではバージョン管理システムの恩恵と必要性について解説されています。</li>
</ul>
<!-- * [About version control](http://git-scm.com/book/en/Getting-Started-About-Version-Control)
reviews the basics of distributed version control systems. -->
<ul>
<li><a href="http://git-scm.com/book/en/Getting-Started-About-Version-Control">About version control</a>では、分散型バージョン管理システムの基礎について解説されています。</li>
</ul>
<!-- ## Git resources -->
<h2>Gitのリソース</h2>
<!-- * [Pro Git](http://git-scm.com/book) is a free open source book that walks
through all aspects of using the version control system. -->
<ul>
<li><a href="http://git-scm.com/book">Pro Git</a>はバージョン管理システムを利用に関して、すべてを網羅したオープンな書籍です。</li>
</ul>
<!-- * [A Hacker's Guide to Git](http://wildlyinaccurate.com/a-hackers-guide-to-git)
covers the basics as well as more advanced Git commands while explaining each
step along the way. -->
<ul>
<li><a href="http://wildlyinaccurate.com/a-hackers-guide-to-git">A Hacker's Guide to Git</a>は、Gitコマンドの基礎と応用を学ぶことができます。</li>
</ul>
<!-- * [A practical git introduction](http://mrchlblng.me/2014/09/practical-git-introduction/)
is exactly what the title says it is. This is a well written guide with
plenty of code snippets to get you up to speed with Git. -->
<ul>
<li><a href="http://mrchlblng.me/2014/09/practical-git-introduction/">A practical git introduction</a>はタイトル通り、実践的なGitガイドです。Gitの使用を加速する豊富なコードとともに詳細な解説が掲載されています。</li>
</ul>
<!-- * [git ready](http://gitready.com/) has a nice collection of blog posts based on
beginner, intermediate and advanced Git use cases. -->
<ul>
<li><a href="http://gitready.com/">git ready</a>は初心者向けから中級者、上級者向けに分けれられたGitの利用方法について解説しているブログです。</li>
</ul>
<!-- * [git-flow](http://nvie.com/posts/a-successful-git-branching-model/) details
a Git branching model for small teams. -->
<ul>
<li><a href="http://nvie.com/posts/a-successful-git-branching-model/">git-flow</a>は、小規模なチームに最適なブランチモデルについて解説しています。</li>
</ul>
<!-- * [GitHub Flow](http://scottchacon.com/2011/08/31/github-flow.html) builds on
git-flow, goes over some of the issues that arise with it and presents a
few solutions to those problems. -->
<ul>
<li><a href="http://scottchacon.com/2011/08/31/github-flow.html">GitHub Flow</a>はgit-flowをベースに構築され、その問題点と解決方法を紹介しています。</li>
</ul>
<!-- * [Git Workflows That Work](http://blog.endpoint.com/2014/05/git-workflows-that-work.html)
is a helpful post with diagrams to show how teams can create a Git workflow
that will help their development process. -->
<ul>
<li><a href="http://blog.endpoint.com/2014/05/git-workflows-that-work.html">Git Workflows That Work</a>は、チームでGitを使う際に参考となる、ワークフローのダイアグラムを紹介しています。</li>
</ul>
<!-- * "[Our Git Workflow](http://www.braintreepaymentsolutions.com/devblog/our-git-workflow)"
by Braintree goes over how this payments company uses Git for development
and merging source code. -->
<ul>
<li>"<a href="http://www.braintreepaymentsolutions.com/devblog/our-git-workflow">Our Git Workflow</a>"はBraintreeがGitを使いソースコードをマージするためのノウハウを紹介しています。</li>
</ul>
<!-- ## Source control learning checklist -->
<h2>ソース管理を学ぶためのチェックリスト</h2>
<p><i class="fa fa-check-square-o"></i>
<!-- Pick a version control system. Git is recommended because on the web there
are a significant number of tutorials to help both new and advanced users. -->
バージョン管理システムを選択しましょう。Web上のリソース、チュートリアルの数、様々なレベルのユーザ層の数からすると、Gitがお勧めです。</p>
<p><i class="fa fa-check-square-o"></i>
<!-- Learn basic use cases for version control such as committing changes, rolling
back to earlier file versions and searching for when lines of code were
modified during development history. -->
変更のコミット、変更の取り消し、履歴から変更箇所を探す方法など、基本的な使い方を学びましょう。</p>
<p><i class="fa fa-check-square-o"></i>
<!-- Ensure your source code is backed up in a central repository. A central
repository is critical not only if your local development version is corrupted
but also for the deployment process. -->
あなたのソースコードが中央のレポジトリにパックアップされているかを確認して下さい。中央レポジトリは、ローカルの開発バージョンが壊れた場合だけでなく、開発段階でも重要なものです。</p>
<p><i class="fa fa-check-square-o"></i>
<!-- Integrate source control into your deployment process in three ways. First,
pull the project source code from version control during deployments. Second,
kick off deployments when code is modified by using webhooks or polling on
the repository. Third, ensure you can roll back to a previous version if a
code deployment goes wrong. -->
3つの方法であなたの開発プロセスにソース管理を組み込みましょう。まずはデプロイ時にバージョン管理システムからソースコードを取り出します。次にコードが変更されたらデプロイが起こるようにwebhookやレポジトリのポーリングをしてみます。最後に開発が間違ったら以前のバージョンに巻き戻すことができることを確認しましょう。</p>
<!-- ### Now that your source code is versioned, what's next? -->
<h3>あなたのソースコードはバージョン管理されました。次は?</h3>
<div class="row">
<div class="col-md-4">
<div class="well select-next">
<a href="./deployment.html" class="btn btn-success btn-full"><i class="fa fa-share fa-2x"></i></a>
<p class="under-btn">
自分が作ったアプリケーションをデプロイするには?
</p>
</div>
</div>
<div class="col-md-4">
<div class="well select-next">
<a href="./web-analytics.html" class="btn btn-success btn-full"><i class="fa fa-dashboard fa-2x"></i></a>
</a>
<p class="under-btn">
自分のアプリケーションを利用しているユーザについて知りたい。
</p>
</div>
</div>
<div class="col-md-4">
<div class="well select-next">
<a href="./api-integration.html" class="btn btn-success btn-full"><i class="fa fa-link 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">Source Control</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 active">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 ">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>