HTML5 – meta

meta要素の配置

meta要素はHTMLのメタデータで、<title>、<link>、<script>などのタグで表現できない様々なメタデータを定義し、<head>~</head>の間に配置する。

metaタグの属性

metaタグでは、以下の属性の少なくとも一つを指定する。

  • charset属性
  • name属性
  • http-equiv属性
    • この属性には、必ずcontent属性をセットで記述する
    • メタデータの定義とその内容が関連付けられる。

charset属性

meta要素のcharset属性で文字エンコーディングを指定する。charset属性を指定したmeta要素は、一つの文書に一つしか配置できない。

日本語のエンコーディングとしては以下を指定。
大文字と小文字の区別はされない。

  • utf-8
  • shift_jis
  • euc-jp

HTML4では、meta要素を指定する場合、以下の用に記述していた。

name属性

name属性でメタデータ名を定義し、content属性でその内容を指定する。

メタデータ名の一覧

keywords
文書の内容に関するキーワードを値に記述。複数のキーワードを指定する場合はcomma”,”で区切る。ここで指定される値は検索エンジンで利用される可能性がある。
description
文書の説明を短文で値に記述。指定した値は検索結果に表示されるなど検索エンジンに利用される。
robots
検索エンジンのクローラ(ロボット)に対しての無効指定(noindex,nofollow)を値に記述。この情報を参照する検索エンジンに対してのみ有効。W3Cの仕様には記載されていない。
author
文書作成に使用したアプリケーションを示す。アプリケーションを利用してドキュメントが作成された際に、アプリケーションにより挿入される。
generator
文書作成に使用したアプリケーションを示す。アプリケーションを利用してドキュメントが作成された際に、アプリケーションにより挿入される。
application-name
HTML4.01からHTML5へのバージョンアップで追加。Webアプリケーションの名前を示すもので、ページがWebアプリケーションの場合のみ使用し、一つの文書に一つだけ指定。
viewport
文書の表示領域を設定。スマートフォン向けの機能であり、表示幅の画面へのフィッティングやスケーラビリティを設定。
format-detection
・・・・・

http-equiv属性

meta要素が実行命令を指示する「プラグマ指示子」(pragma directive)となる。プラグマ指示子はブラウザに対して文書の状態・挙動を指示する。

nameの値1には、以下の4つを指定可能。

content-language
コンテンツ言語の指定。contentの値2に指定する言語は、ja(日本語)、en(英語)、zh(中国語)、zo(韓国語)、de(ドイツ語)、fr(フランス語)、it(イタリア語)、es(スペイン語)、ru(ロシア語)、ar(アラビア語)など。
content-type
HTMLやCSSなどのファイルタイプや文字エンコーディングの指定。charset属性の代わりに、contentの値の中で文字エンコーディングを指定可能。
default-style
デフォルトスタイルの指定。この指定により、link要素で複数のCSSを指定している場合に、その中で優先して利用するCSSファイルをブラウザに伝達可能。
refresh
リダイレクト/再読み込みの指定。リフレッシュ/リダイレクトまでの遅延時間)と、リダイレクト先のURLを指定。URL指定がなければ、そのページをリフレッシュする。遅延時間の単位は秒。

 

CSS3~継承とオーバーライド

CSSのスタイルで、クラス間での継承・オーバーライドを行うことができる。

上記の例では、mainクラスでフォントサイズとカラーを指定し、sub1クラスではmainクラスのフォントサイズを継承しながらカラーを、sub2クラスではmainクラスのカラーを継承しながらフォントサイズをオーバーライドしている。

また、mainを継承したsub1クラスとは別に、単独でsub1クラスのスタイルを定義している。

これらのスタイルをHTMLで利用する場合、複数クラスをスペースで区切って指定する。その際、クラスの順番は問わない。

実行結果は以下の通り。

.mainのスタイル
.main.sub1のスタイル
.main.sub1のスタイル
.main.sub2のスタイル
.main.sub2のスタイル
sub1のスタイル
sub2のスタイル

 

  • 複数クラスの記載順序は影響しないことに注意。
  • 同名のクラスでも単独で定義されたsub1クラスとサブクラスとして定義されたsub1クラスは異なる
  • サブクラスとして定義されたsub2クラスは単独では適用できない

 

CSS3~覚え書き

文法

セレクタ

  • タグはそのまま記述
  • idの場合は”#”に続けて記述
  • クラスの場合は”.”に続けて記述

入れ子のタグの指定

入れ子の中のタグを指定するときは、親要素と子要素の間に半角スペースを入れる。

一括指定

異なるセレクタに同じ設定を適用する場合は、”,”で区切って列挙。

padding

値を1つ指定すると、上下左右に同じ値でパディング。

値を2つ指定すると、1つ目の値で上下に、2つ目の値で左右にパディング。

値を4つ並べて指定すると、それぞれtop、right、bottom、leftのpadding値になる(上から時計回り)。

padding値を個別に指定することも可能。

 

ベンダー・プレフィックス

 
ブラウザ プレフィックス
FireFox -moz-
Google Chrome, Safari -webkit-
Opera -o-
Internet Explorer -ms-

box-sizing

要素のサイズには、margin、borderの幅、paddingは加味されないため、 サイズ指定が煩雑になり、時に意図しない結果になる。

たとえばHTML5のbodyとnavブロック、sectionブロックの幅を ピクセル単位で指定し、 mavとsectionがbodyの幅にピッタリ納まるようにしたいとき、 各々にmarginなどをを設定していると、 その分だけ意図するサイズから差し引いた値をwidthに設定しなければならない。

HTML5では、box-sizing属性をborder-boxにすることでこれを解消し、 paddingとborderを含めたサイズでwidthを指定できるようになる。以下の例は、 div要素のboxクラスに対して以下の属性を適用し、box-sizing属性を変えた例。

box-sizing:content-boxのとき
box-sizingテスト
box-sizing:border-boxのとき
box-sizingテスト

 

border-sizingをborder-boxにするため、デフォルトで読み込むCSSファイルに 以下を記述。この際、各ベンダーのブラウザに対応させるため、 ベンダー・プレフィックスをつけておく。

calc()ファンクション

CSS3で実装された機能で、動的にブロックの幅などを計算できる。 ブラウザによって実装状況が異なるので、ベンダー・プレフィックスを 付けて列挙するのが安全。

ぶら下げインデント

CSS3ではtext-indent属性にhangingスイッチが定義されているが、 Chromeのバージョン47.0.2526.73 mでは再現できなかった。

paddingとtext-indentを使って同じ効果を得る方法がネット上で紹介されている。 paddingで全体を右へ移動させ、text-indentに負の値を指定することで 先頭のみ元の場所へ戻す。

position: ~で右寄せ

親要素にposition: relativeを指定し、子要素でposition: absoluteとright: 0やbottom: 0などを指定すると、子要素を親要素の右端や下端に寄せることができる。要素の右寄せなどに簡易に使えるかもしれない。

HTML

CSS

 

Linuxコマンド – vi

機能

viエディタを起動する。

記法

モード間移動

コマンドモードと編集モード

vi起動直後はコマンドモードになり、以後、編集モードとコマンドモードを行き来する。

  • コマンドモードから編集モードへは、i, T, A, O, oのいずれかのコマンドで移行
  • 編集モードからコマンドモードへは[ESC]で移行。

終了

コマンドモードで:q, :q!, :wqのいずれかのコマンドでviを終了。なお、:wコマンドは終了せず保存。

モード間移動のまとめ

起動

コマンドモード
↓ (i,R,A,O,o)
編集モード
↓ [Esc]
コマンドモード
↓ (:q.:q!,:wq)
終了

viコマンドを参照

 

Linuxコマンド – ls

機能

ファイル、ディレクトリを表示する。

記法

オプション

表示形式

-l  詳細表示(パーミッション、タイムスタンプなど)
 -T  -lオプションの時、日付と時刻を完全表示する
-F  ファイル種類に応じた表示(/:ディレクトリ、*:実行可能ファイル、@:シンボリックリンク|:名前付きパイプ)
 -1  ディレクトリを一行ごとに表示
 -R  下層ディレクトリの内容も再帰的に表示
 -D format  -lオプションの時、formatに従って日付と時刻を表示
 -G  カラー表示

表示対象

-a ドットファイルを含めたすべてのファイルを表示
-L 引数がシンボリックリンクの時、リンク先を表示する

表示情報の付加

-s ファイル名の前にファイルサイズをキロ・バイト単位で付加
-i ファイル名の前にインデックス番号を付加

表示順序

-u ファイルの最終アクセス時刻の新しい順にソート
lsのデフォルト
-t ファイルの最終修正時刻の新しい順にソート
-c ファイルステータスの最終修正時刻を用いる
-r ファイルを逆順にソート
-f ソートしない(ディスクに格納された順)

 

さくらレンタルサーバーの初期状態

ユーザディレクトリ

/home/アカウント名

設定ファイル

.login_conf

.chrc

 

WordPressで固定ページの階層化が崩れた

固定ページの新規追加をしていたとき、ページの階層構造表示がおかしくなった。

使っているテーマでは、ページの階層構造に応じて下位ページが折り畳まれたり表示されたりするが、下位ページがすべてフロントページと並んで表示されてしまうという状況。

wp-hierarchy-collapse-1
こういう階層表示になっていたのが・・・
wp-hierarchy-collapse-2
こんな風に

少したって気づいたのは、上位ページは指定していたが、その下で指定する「順序」が”0″のままだということ。

複数の階層化されたページがあるとき、フロントページ以外の下位ページの順番が一つでも”0″だと、すべての下位ページがフロントページと同一レベルに扱われてしまうらしい

 

 

Boids 2.x (JavaScript)

概要

Boids 1.3までで、基本的な個体の運動ルールを設定して群の動きを実現した。

これに対して、ルールの条件を変えて、それらが群の挙動に与える影響を見てみる。

Boids 2.0~引力と斥力の導入

考え方

Boids 1.3の基本的なコードでは、3つのルールについて、位置座標を元にした幾何的な計算で速度を変更したが、ここで結合と分離に対して引力・斥力の概念を導入する。

重力や正電気力は距離の自乗に反比例するが、この形で試したところ、かなり距離が近づくまで反応せず、近い距離になって急に力が強くなるため、挙動が不安定な傾向となった。

そこで、ここでは距離に反比例した引力・斥力が個体間に働くものとし、近傍距離以内では斥力が、それより遠く一定距離以内であれば引力が働くものとした。

挙動と考察

その挙動は、若干の振動があるものの基本コードと似ており、基本コードに対して、個体間の距離がより均等に近くなっている。心理的な行動が物理法則と類似である可能性を示唆している。

デモンストレーション

Boids 2.0を新しいタブで実行

Boids 2.1~直近個体に追随

考え方

結合と分離の実装は上記のまま、整列の条件を、直近の一個体の速度に追随するようルールを変更した。

挙動と考察

各個体が集まるのが極めて速く、群が密集状態になる。

また、群を形成してからのは振動を繰り返すのみで、、群全体としての移動は鈍い。

日常生活でも、近くの一人のみに注意して歩こうとすると却ってスムーズに移動できないことが多いが、これを示唆している。

デモンストレーション

Boids 2.1を新しいタブで実行

Boids 2.2~周辺個体に追随

考え方

整列のために追随するのが直近一個体では「近視眼的」なため、一定距離内の個体群の平均速度に追随するように変更。

挙動と考察

一個体のみに追随するよりも群として移動しやすくなるが、それほど大きな効果はなく、個体数が多くなるに従って(このケースでは個体数が15~20程度以上で)群として振動状態に入りやすくなる。

直近1個体でないとしても、周辺の動きだけに合わせると整然とした動きになりにくいことを示唆している。

デモンストレーション

Boids 2.2を新しいタブで実行

Boids 2.3~リーダーに追随

考え方

特定の一つの個体がリーダーとしてふるまい、他の個体はリーダーにのみ追随するルール。リーダーは他の個体のようなルールに従わないとしている。

挙動と考察

当然ながら、群の行動はリーダーの動きのみに追随して比較的なめらかになる。さらに、群全体が広がりを持つのも特徴。「雁行」を想起させる。

デモンストレーション

Boids 2.3を新しいタブで実行


前の記事:基本コード

 

Boids 1.x (JavaScript)

概要

Boids 1.0で準備した枠組みに、分離(Separation)、結合(Cohesion)、整列(Alignment)のルールを適用していく。

Boids 1.1~分離の導入

個体が近づいたときに、互いに近づき過ぎないように速度を修正するルールを導入。

デモンストレーション

Boids 1.1を新しいタブで実行

各個体が他の個体とぶつからないよう避けながらランダムに移動している。

グローバル定義部

個体同士が近づきすぎた場合の分離行動に入る最大距離を指定。

Creatureクラス

分離行動は個体のmove()メソッド内で実装し、相手との距離が大きいほど逆方向への力をかける。速度調整後、速さを初期設定の値にそろえる。

Boids 1.2~結合(Cohesion)の導入

分離に加えて、各個体が群として集まろうとするルール。具体には、群の中心に向かおうと速度を変更するルールを導入。

デモンストレーション

Boids 1.2を新しいタブで実行

個体がランダムに移動しながら、群を形成しようとしている。

グローバル定義部

まず、群の中心をグローバル変数として保持。

中心に向かって速度を変更する度合いを定数で指定。この値が小さいほど素早く、大きいほどゆるやかに群れようとする。

結合とのバランスで、分離の判定距離を小さめの値に設定している。

群の中心の算出

各個体が目指す群の中心を、実行関数moveAll()の中で計算する。ここでは、全個体の平均重心を群の中心としている。

Creatureクラス

結合行動も個体のmove()メソッド内で実装する。群の中心に向かって行くよう速度を変更。

ルールの適用準は、衝突回避を後にするため、結合→分離の順としている。

Boids 1.3~整列(Alignment)の導入

一通りのBoidsの実装の最終段階。

各個体が、群全体の移動方向に合わせようとするルールを導入。各個体が、自分の速度を群の全個体の平均速度に近づけようとする。

デモンストレーション

個体数

各個体が集まりながら「なんとなく」一定方向に動こうとしている。個体数が200程度と多くなると、群としての動きは鈍くなる。このとき、各個体が全く均等になるのではなく、数個程度集まって移動するさまが見られるのは興味深い。

グローバル定義部

整列の際の速度変更の度合いを指定する。この値が小さいほど素早く整列しようとする。

群の平均速度の算出

moveAll()関数を変更し、群の中心の算出に続いて平均速度を求める。

Creatureクラス

整列のルールを個体のmove()メソッドに実装する。

ルール適用の順番は、結合→整列→分離。これは一般に想定される生物の行動形態、「集まろうとする→一緒の方向に向かおうとする→衝突を避ける」と符合している。


前の記事:枠組みの準備

次の記事:条件と挙動のバリエーション


 

Boids 1.0 (JavaScript)

概要

BoidsをJavaScriptで再現するために、基本コードの枠組みとなるコード準備する。

  • 指定した下図の個体を発生させる
  • ボタン操作で各個体の動作を開始・停止する
  • 個体の動作は同じ速さでランダムな方向に動く

基本の動作から始めて順次拡充していくが、以後共通する仕様は以下の通り。

  • グローバル定義
    • HTML5のcanvasで描画することとし、canvasとそのコンテキストをグローバルオブジェクトとする
    • その他、個体や群れの挙動に係るパラメータもグローバル定義する
  • 個体のクラスCreature
    • move()メソッドは、個々のCreatureインスタンスの一定時間後の位置をその現在位置と速度から決定し、新しい位置に変更する
    • draw()メソッドは個々のCreatureインスタンスをcanvasに描く
    • 初期段階から、Boidsの3つのルールに対応するメソッドの枠のみ用意し、順次実装していく
  • Boidsの実行
    • 個体クラスのインスタンスをランダムな位置に複数発生させ、配列に格納する
    • 以下を繰返す
      • 現在位置の全てのCreatureオブジェクトをdrawAll()関数で描画
      • 一定時間間隔で全てのCreatureオブジェクトの位置をmoveAll()関数で変更する
      • moveAll()の中で3つのルールに対応する関数を呼び出すが、初期段階では枠のみ用意し、順次実装していく

仕様

以下の仕様で、個体とその群の生成、基本動作のみを実装する。

  • 操作
    • ブラウザのテキストボックスに個体数を入力
    • ボタンを押すごとに起動・停止を繰り返す
  • 初期設定
    • 初期状態で、ランダムな位置に個体を生成
    • 各個体の速さは一定とし、速度ベクトルの向きはランダムに与える
  • 挙動
    • 各個体は与えられた速度で移動
    • 上下左右の壁に当たった時は全反射
    • 個体間の干渉は考慮しない(重なりを許す)

デモンストレーション

個体数

スクリプトの内容

グローバル定義部

アプリケーション全体で保持・利用する変数・オブジェクトを定義。

Creatureクラス

一つ一つの個体を表すCreatureクラスを以下の様に構築する。これらのコンストラクタやメソッドは、以後の拡張を通して変わらない。

コンストラクタ

コンストラクタは、Creatureクラスのインスタンスを生成する。Creatureオブジェクトは、個々の座標と速度ベクトルの要素を保持する。

位置と速度のセッター

位置座標、速度ベクトルの要素を個体にセットする。

描画メソッド

自身をcanvasに描画する。ここでは位置座標を中心とする小円を描いている。canvasのコンテキストはグローバル変数contextに設定されている前提。

移動メソッド

与えられた速度で移動する。上下・左右の壁に当たった時の反射処理を行っている。

実行関数群

以下の関数群のうち、createCreatures()はボタンが押されるたときに与えられた数の個体を生成。

boids()はボタンが押されるたびに実行・停止を切り替える。

他の関数は、実行時に群全体を異動させ、描画するための関数。

createCreatures()~個体の生成

与えられた数の個体をCreatureインスタンスとして生成し、グローバルな配列に格納する。

boids()~メイン関数

ボタンが押されるたびに呼び出され、全体の実行/停止を制御する。

動画処理

タイマーにより個体を動かし、描画する。呼び出されるたびに、全ての個体を移動させ、描画する関数を呼び出す。

個体の移動

配列に格納された個体に移動を指示する。

個体の描画

配列に格納された個体に描画を指示する。


次の記事:基本コード