josef’s diary

10,000時間の法則を実験しています。興味:★★プログラミング/ 統計/ ★ギター/タイ語

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)

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

  • 作者:山本 陽平
  • 発売日: 2010/04/08
  • メディア: 単行本(ソフトカバー)

innerHTMLとtextContentの違い

結論

  • innerHTML
    • HTMLの特殊文字(例:<,>のようにタグとして機能する文字)を機能させる
  • textContent

See the Pen ZEbQOYa by shimizu517 (@shimizu517) on CodePen.

ポイント

  • document.getElementById('hello'): html内のid="hello"を持つ要素を指定
  • hello.textContent = "hello";
    • 要素内にテキストを入れる。

※HTMLにおいてテキストとはタグの中の文字列のこと

142時間目

検索機能をつけようとしてdjangorestframeworkを検索したら当たり前のようにview.pyにクラスを定義している記事ばかりで訳が分からなかった。
そのためまずview.py内のクラスについて調べるとclass-based viewsというものを見つけてしまった。

とても便利そうだが、検索機能をつけるために寄り道しなければならない、、、

ということで頑張って勉強を始めました。

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を結合して実行ファイルを生成する。

131時間目【Djangoでウェブサービス作成開始】

Djangoを使ってウェブサービス作成開始しました。

Vue.jsも使えるといいな~…

DB設計

A5SQL Mk-2を使ってER図を作った。 今年の2月くらいにrailsウェブサービス作ったけど ER=Entity Relation

f:id:josefthai:20190731231808p:plain
分かりやすいER図

it-koala.com