HTTP1.1の特徴
これまでのバージョン
- HTTP0.9
- リクエストGET /index.html → レスポンス////
- HTTP1.0
* IETFで標準化が行われた最初のバージョン * GET以外のメソッドが追加
HTTP1.1の特徴
−チャンク転送、Acceptヘッダによるコンテントネゴシエーション、複雑なキャッシュコントロール、
持続的接続などの機能が追加された。
−チャンク転送
−メッセージがベティを持っている場合、Content-Lengthヘッダにそのサイズを10進数のバイトで示す。
しかし、動的に画像を生成するようなサービスではサイズが決まるまでレスポンスを返せないとユーザーは腹が立つ
→Transfer-Encoding: chunked ヘッダをセットすることで最終的なサイズがわからないボディを少しずつ転送できること
−Acceptヘッダによるコンテントネゴシエーション
−Acceptヘッダ:クライアントが自分で処理て着るメディアタイプをサーバに伝えるためのヘッダ
※メディアタイプ
−サーバがリクエストヘッダのAcceptヘッダで指定されているメディアを返せない場合は406 NotAcceptableを返す
−キャッシュコントロール
−キャッシュ
※サーバから取得したリソースを補助記憶装置に蓄積して再利用する手法のこと。またキャッシュされたデータのこと。
−持続的接続
−コストのかかるTCPコネクションをリクエストごとに確立するのではなく、Keep-Aliveヘッダによって
コネクションを切らずに複数のリクエスト・レスポンスを繰り返すこと。
−クライアントは Connection: closeヘッダでこのリクエストに対するレスポンスが帰ったらコネクションを切断する
ということを伝えられる。
参考 1日30分くらいずつ読みすすめています。
Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)
- 作者:山本 陽平
- 発売日: 2010/04/08
- メディア: 単行本(ソフトカバー)
142時間目
検索機能をつけようとしてdjangorestframeworkを検索したら当たり前のようにview.pyにクラスを定義している記事ばかりで訳が分からなかった。
そのためまずview.py内のクラスについて調べるとclass-based viewsというものを見つけてしまった。
とても便利そうだが、検索機能をつけるために寄り道しなければならない、、、
ということで頑張って勉強を始めました。
136時間目【CPUとかosとかがいまいちわからない(泣)】
136時間目
久々の川BBQ楽しかった。
os, CPU, メモリわからん!!
今日はお休み
135時間目【Django, コンパイル】
120時間
内定先の内定者顔合わせに行ってきた。
Djangoの多対多テーブル
ある記事にタグをつける場合(多対多)
1. 関連付け
# タグ
class Tag(models.Model):
name = models.CharField(max_length=32)
def __str__(self):
return self.name
# 記事
class Article(models.Model):
title = models.CharField(max_length=128)
tags = models.ManyToManyField(Tag)
def __str__(self):
return self.title
コンパイル
4つの処理をして、3つの中間ファイルを経る。
コンパイル
4つの処理に分けられる。
1.プリプロセス
<何か>
マクロの展開、インクルードファイル(#include <stdio.h等>)の取り込み、コメントの除去を行う
※マクロ=プログラムの最初に定義できるdefine文
ディレクティブ=コンパイル時にコンパイラーに与える補足情報
例)c言語の場合
c言語で書かれたソースコードの以下を、/usr/includesフォルダ内のstdio.hの中身に書き換える。
#include <stdio.h>
2.コンパイル
<何か>
ソースコードをアセンブラに変換する。
アセンブラはソースプログラムの一種なので、プログラマーが作製・編集できる。
3.アセンブル
<何か>
アセンブラを機械語に変換する。
つまりオブジェクトファイル(=バイナリファイル、機械語で表現されるプログラム)を生成する。
4.リンク
<何か>
必要なライブラリとオブジェクトファイルを結合させる。
cにおいてprintf()などは標準関数と呼ばれ、本体は標準ライブラリlibc.aに含まれている。
※標準ライブラリはオブジェクトファイルである。
リンカIdはプリコンパイル→コンパイル→アセンブルによってソースコードから作られたオブジェクトファイル
とオブジェクトファイルliba.cを結合して実行ファイルを生成する。