頭脳一式

人の記憶なんて曖昧なもの。すべての情報を頭に記憶するなんてナンセンス。困ったらここに来ればいいじゃん?

【HTML5】要素とタグの違いを理解する。 親要素,子要素,子孫要素とは

要素とタグの違いについて

HTMLを勉強していると要素やタグの意味が段々と分からなくなってくる。
以下のサンプルを使って要素とタグの違いについて整理してみる。

<!-- サンプル -->
<p>あいうえおABCDE</p>
タグとは

タグとは、上記サンプルの<p></p>のことを指し、前者は開始タグ、後者は終了タグと呼ばれる。
また”p”自体のことをタグ名と呼び、開始タグには、タグ名の他に属性が含まれる場合がある。

コンテンツ(内容)とは

コンテンツとは、開始タグと終了タグに囲まれた部分のことを指す。
上記サンプルのあいうえおABCDEの部分を指す。

要素とは

要素とは、開始タグ、コンテンツ、終了タグのまとまりを指す。
つまり、上記のサンプル部分すべてを指す。

親要素,子要素,子孫要素について

執筆中…

【HTML5】テキストの表示を強調する主な要素 <b>要素と<strong>要素の違い

テキストを太字にしたい場合は、<b>要素又は<strong>要素を用いる。
囲みたい内容が重要なものであれば<strong>要素を使い、重要でなく単に読者に強調させたい場合は<b>要素で囲むようにするのが望ましい。
以下はテキストの表示を強調する主な要素。

要素 意味
<b> 太字
<strong> 重要
<em> 強調
<i> イタリック体(斜体)
<u> 下線を引く。
<mark> マーカー(蛍光ペンの意)
<b>要素の使用例
あいうえお<b>かきくけこ</b>さしすせそ

あいうえおかきくけこさしすせそ

<strong>要素の使用例
あいうえお<strong>かきくけこ</strong>さしすせそ

あいうえおかきくけこさしすせそ

<em>要素の使用例
HTML<em>Javascript</em>CSS

HTMLJavascriptCSS

<i>要素の使用例
HTML<i>Javascript</i>CSS

HTMLJavascriptCSS

<u>要素の使用例
123<u>456</u>789

123456789

<mark>要素の使用例
123<mark>456</>789

123456789

【HTML5】基礎知識(タグ編)

DOCTYPE宣言(ドキュメントタイプの宣言)

HTML文書がHTML5で記述されていることを明示的にブラウザに伝える役割を果たす。
DOCTYPE宣言をした場合、レンダリングモードが標準モード(Standards mode)での解釈となり、
DOCTYPE宣言をしない場合、レンダリングモードが互換モード(Quirks mode)での解釈となる。

<!DOCTYPE html>
<html>タグ

DOCTYPE宣言の後に記述するタグ。
HTML文書であることを明示し、文書の最初と最後に記述する。

<html>
</html>
<head>タグ

文書のヘッダ情報を表すタグ。
htmlタグの内側に記載する。

<head>
</head>

<head>要素に記述できる情報

<meta>タグ

HTML文書に関する情報を指定するタグ。
meta要素を指定する際には、 name属性,http-equiv属性,charset属性のうち、少なくとも一つを指定する必要がある。
【charset】
HTML文書の文字コードを指定する属性。
以下はそのHTML文書の文字コードが「UTF-8」であることを示す。

<meta charset="UTF-8">
<link>タグ

外部ファイルを参照するときに使うタグ。

<link rel="stylesheet" href="style.css" type="text/css">
<title>タグ

文書のタイトルを表すタグ。
ブラウザのウインドウタイトルや、ブックマーク、検索エンジンの検索結果等に表示される。

<title>サンプルサイト</title>
<body>タグ

HTML文書本体の内容を表すタグ。

<body>
</body>
タグ

タグは目印を意味する言葉で、HTMLはタグで目印をつけ各要素の役割を示す。

<h1>見出し</h1>
属性

属性は要素の役割を細かく指定するために使われ、開始タグの中に書く。

<img src="image/sample.jpg">

ディレクトリとパスの記載方法について

開いているhtmlファイルと同階層の別ファイルを指定する場合

<a href="page.jpg">

開いているhtmlファイルよりも上位階層の別ファイルを指定する場合

<a href="../page.jpg"><!--1つ上の階層の場合-->--一つ上の階層の場合、
<a href="../../page.jpg"><!--2つ以上上の階層の場合、「../」を続けて記述する。-->

開いているhtmlファイルよりも下位階層の別ファイルを指定する場合

<a href="abc/page.jpg">
<a href="abc/def/page.jpg">

サイトルートパス 「/」がルートディレクトリを示すので後は絶対パスと同じように続けて書く。

<a href="/image/sample/page.jpg">
<ul>要素と<ol>要素

<ul>要素と<ol>要素は、リスト項目を表示するための要素。
<ol>要素は「order list」の略で順序付きリスト、<ul>は「unordered list」の略で順序なしリストの意。
前者はリストの昇順に採番されたリストになり、後者は箇条書きのリストになる。
一連の用語と説明の組み合わせを表す<dl>要素とは目的に応じて使い分ける必要がある。
また、パンくずリストや画像ギャラリーなど、文中のリスト以外にも何かを同列に並べたいときにも使用される。

<!--<ul>要素で記述した場合-->
<ul>
        <li><a href="https://www.google.co.jp/">Google</a></li>
        <li><a href="https://www.yahoo.co.jp/">Yahoo</a></li>
        <li><a href="https://www.amazon.co.jp/">Amazon</a></li>
        <li><a href="https://www.softbank.jp/">SoftBank</a></li>
        <li><a href="https://toyota.jp/">TOYOTA</a></li>
</ul>
<!--<ol>要素で記述した場合-->
<ol>
        <li><a href="https://www.google.co.jp/">Google</a></li>
        <li><a href="https://www.yahoo.co.jp/">Yahoo</a></li>
        <li><a href="https://www.amazon.co.jp/">Amazon</a></li>
        <li><a href="https://www.softbank.jp/">SoftBank</a></li>
        <li><a href="https://toyota.jp/">TOYOTA</a></li>
</ol>
  1. Google
  2. Yahoo
  3. Amazon
  4. SoftBank
  5. TOYOTA
<div>要素

<div>要素はそれ自体に特別な意味はなく、複数の要素を一つの塊として再定義するコンテナ要素として機能する。
複数の要素を一つにまとめることでCSS等で効率的に修飾することができる。 <div>要素のほかに適切な要素がある場合はそちらを使用したほうがセマンティクス的にはアクセシビリティが向上する。

#ID名#class名の違い

#IDは一つのHTML文書内で一度しか出現できないが#class名は何度でも使えるといった違いがある。
例えば<ul id="gallery">という#ID名を付けた<ul>要素は同じページに1つしか設定してはいけない。
また、それぞれの要素は#IDを1つしか持つことが出来ない。
つまり、galleryという#ID名を持った<ul>要素は他の#ID名を持つことが出来ない。
一方、#class名は何度でも使うことが出来ため、<ul class="gallery">という名前を付けた場合、ページ内にいくつでも設置することができる。
同じページ内に複数のglleryを持つ場合はclass属性を使用したほうが良い。 また、1つの要素に複数のクラス名を付けることを可能。 <ul class="gallery flower">のようにクラス名の間を半角スペースで区切ることで名前を付けることができる。
これをマルチクラスという。

画像のalt属性

画像の代替テキスト情報を保持する属性。
画像だけでは意味を理解できない音声読み上げブラウザや検索エンジンに対して、それが何の画像であるかを伝える大切な役割を果たす。 音声読み上げブラウザで読まれる文章はこのalt属性で指定したテキストである。 セマンティクスやアクセシビリティの観点からも必ず記述した方が良い。

<article>要素

ページ本文やブログ投稿記事など、その部分の内容だけを取り出した際に独立したコンテンツとして成立する場合に使用する。 その中にいくつかの<section>要素を入れ子にして配置する。 <article>要素や<section>要素は「セクショニングコンテンツ」と呼ばれ、これらを配置することで文書内に<section>が作られる。 <section>による区切りがあることで文書構造(アウトライン)や階層をより明示的に表すことが出来る。

パンくずリスト

WEBサイト内で「今どのページにいるのか」を示すナビゲーションである。 パンくずリストという名前は「ヘンゼルとグレーテル」で主人公が森で迷子にならないように通った道にパンくずを置いて行ったエピソードに由来する。 SEOにも効果があるとされている。

<aseide>要素

<aseide>要素はその部分がページ内において、補足情報であることを示す要素。
asideという名前であるが、サイドバー専用というわけではなく、補足情報を<article>要素内に記載したい場合など、サイドバー以外に設置することも可能。

リンク先を別タブで開く方法
<a href="#" target="_blank">
<address>要素

<address>要素は直近の<article>要素か<body>要素の連絡先情報を表す。 後者の場合はその連絡先情報はドキュメント全体に適用される。 著作者の連絡先情報を掲載するときに使用し、それ以外の目的で使用してはいけない。

<small>要素

HTML4.01以前はテキストを小さくするための要素だったが、HTML5では注釈や細目を表す要素となる。「意味合いを弱める」という役割なので昔の仕様と違うことに注意。

特殊記号

コピーライトの先頭に記述されている<&copy;>「©」は特殊文字と呼ばれるものでHTMLで記号などの特殊な文字を使いたいときに使用する。

<figure>要素

<figure>要素は画像や表などの要素をさらに囲む要素である。 前後の文章と切り離せない挿絵や画像ではんかう、参照や補足的なものを掲載する際に使用する。 <figure>要素で囲んだ部分を他の場所に移動しても本文の文脈に問題がない場合に使用する。

<dl>,<dt>,<dd>要素

<dl>,<dt>,<dd>要素を使うと定義リストを作成できる。 定義リストとは、ある語句とそれに対する説明を一対一にしたリストのこと。 よく用語集などに使われる。 <dl>,<dt>,<dd>要素は必ず3つセットで使用する。

<dl>
    <dt>りんご</dt>
    <dd>赤い果物。</dd>
    <dt>レモン</dt>
    <dd>黄色い果物。</dd>
</dl>
<br>要素

breakの略で改行を意味する。

<table>要素

<tr>要素で横1行を定義し、さらにその中に<th>要素で見出しセルを、<td>要素でデータセルを定義する。

<form>要素

<form>要素は属性を使用してデータの送信先や送信方法を指定する。

ラジオボタンチェックボックス

input要素で設置する部品のうち、ラジオボタンチェックボックスは複数項目から選択するものなので、
複数の部品をグループにする設定が必要。
性別など、選択肢の中から1つだけ選択する項目の場合はラジオボタンを使い、好きな食べ物など
いくつ選択してもよいものはチェックボックスを使用する。
どちらもinput要素にname属性で同じ値を指定し、グループであることを示します。
またvalue属性には、その項目が選択されたときにサーバに送信される値を指す。

<textarea>要素

複数行を入力できるテキストエリアを設置するときは<textarea>要素を使用する。
<textarea>要素はrows属性とcols属性によって入力フィールドの高さと横幅を指定できる。
HTML4.01まではこの2つの属性は必須であったがHTML5からは必須ではなくなった。

<span>要素

<span>要素は何かの理由でテキストの一部を区別したいときに使う要素。
<div>要素同様、それ自身は特に何も意味を持たないため、クラス名などを付けて意味を与える。

email属性

メールアドレス専用の値で、「@」がない「全角になっている」などメールアドレスに相応しくない値が入力されたときにエラー表示する機能を持つ。

required属性

その項目が必須項目であることをブラウザに知らせることができる。未入力のまま送信ボタンを押すとエラーが表示される。

【CentOS7】コマンド

IPアドレスを確認する。

ip addr show

サービスの起動/停止/再起動/ステータスの確認方法(apacheの例)

systemctl start httpd.service   #起動
systemctl stop httpd.service    #停止
systemctl restart httpd.service #再起動
systemctl status httpd.service  #ステータスの確認

Apacheのバージョンを確認する。

[root@localhost ~]# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built:   Aug  4 2017 03:19:10
[root@localhost ~]#

httpのポートを確認する。
servicesにhttpが書いてないとhttp通信ができない。
以下のコマンド結果は書いてあるのでOK。

[root@localhost ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources:
  services: ssh dhcpv6-client http
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

[root@localhost ~]#

ファイアウォールにhttpを許可する。

firewall-cmd --permanent --add-service=http

ファイアウォールを再起動する。

firewall-cmd --reload

【Java SE8】プリミティブ型と参照型の違い。wrapperクラスとは

プリミティブ型はint,char,booleanなど。
参照型はオブジェクト型、列挙型、配列型がある。

プリミティブ型の変数は値を保持するものだからnullは代入できない。
プリミティブ型の変数は値そのものを保持する。
参照型の変数はオブジェクトへの参照(リンク)を保持する。

プリミティブ型(基本データ型) wrapperクラス superクラス
boolean Boolean Object
char Character Object
byte Byte Number
short Short Number
int Integer Number
long Long Number
float Float Number
double Double Number

wrapperクラスとは

プリミティブ型をラップするクラスの総称。
プリミティブ型と対応するラッパークラスのオブジェクトを作成し、
そのオブジェクトに対して用意されたメソッドを利用することでプリミティブ型の値を操作することができる。

wrapperクラスの特徴はキャスト宣言せずにプリミティブ型に戻せること。
この仕組を「オートボクシング」と呼ぶ。
以下の両パターンが書ける。

int i2  = (int) Integer.valueOf("100");
int i3  = Integer.valueOf("100");//キャストを省略できる。

【Java SE8】配列の宣言と配列インスタンスの生成

Javaの配列はややこしいのでまとめてみる。

配列の宣言方法

配列の宣言には大カッコを使う。
データ型の後ろに記述するパターンと変数名の後ろに記述するパターンの2通りある。

int[] array;//データ型の後ろに大カッコを記述するパターン。
int array[]://変数名の後ろに大かっこを記述するパターン。

多次元配列の場合は、大カッコの数で次元数を表す。

int[][] arrayA;//2次元配列の宣言
int arrayB[][][];//3次元配列の宣言

また、多次元配列の場合は、大カッコを一度にまとめて記述する必要は無く、
データ型と変数名の後ろに分けて記述することができる。

int[] arrayA[];//1+1で2次元配列の宣言
int[][] arrayB[];//2+1で3次元配列の宣言

配列インスタンスの生成方法

配列インスタンスの生成には以下の制約がある。

  • 配列インスタンスの生成には必ず要素数を指定すること。
  • 素数の指定はint型の整数値でなければならず、
    浮動小数点や、整数値であってもlong型は記述できないこと。
  • 多次元配列の場合は、変数の次元数と参照先の次元数が一致すること。

以下はコンパイルエラー

int[] arrayA = new int[];//要素数がないのでコンパイルエラー
int[] arrayB = new int[2.3];//浮動小数点を記述しているのでコンパイルエラー
int[][] arrayC = new int[]{};//次元数が一致してないのでコンパイルエラー。

1次元目の要素数は省略できない。が、2次元目の要素数を省略して別々のタイミングで生成することが可能。
データ型に書くは要素数を表し、変数に書くは添字を表す。

int[][] arrayA = new array[3][];//2次元目の要素数が無くても可。
array[0] = new int[3];
array[1] = new int[3];
array[2] = new int[3];

int[][] arrayB = new array[][3];//1次元目の要素数がない場合はコンパイルエラー。

配列インスタンスの生成と同時に要素の値を初期化したい場合は、初期化演算子{}を使う。

int[] arrayA = new int[] {10,20,30};//パターン1
int[] arrayB = {10,20,30};//パターン2

newと初期化演算子の両方を使った場合は、要素数を指定することはできない。
なぜなら初期化演算子の中に記述した値の数によって自動的に配列の要素数が決まるから 。
次のように記述するとコンパイルエラーとなる。

int[] array = new int[3] {10,20,30};//要素数を指定するとコンパイルエラー。
素数0の配列。

インスタンス的には何の意味も無いが、文法上間違っているわけではないのでコンパイルが通る。
以下の書き方はどれも同じ意味になる。

int[] arrayA = {};
int[] arrayC = new int[0];

【Java SE8】関数型インターフェースとは

関数型インターフェースとは、抽象メソッドを1つ持っているインターフェースのこと。
Objectクラスからオーバーライドしたメソッドや、defaultメソッド、staticメソッドの実装が含まれていても
抽象メソッドが1つ定義されていれば、関数型インターフェースとして認識される。
関数型インターフェースとして定義出来ているかどうかを確認するには「@FunctionalInterface」を用いる。

関数型インターフェースとして定義できている例1)

抽象メソッドが1つのみのパターン。

@FunctionalInterface
public interface IF {
    public void Ex1(String str);
}

関数型インターフェースとして定義できている例2)

抽象メソッド、ObjectクラスのからオーバーライドしたtoString()メソッド、defaultメソッドの組合せ。

@FunctionalInterface
public interface IF {
    public void Ex1(String str);
    public String toString();
    default void Ex2() {}
}

関数型インターフェースとして定義できていない例1)

抽象メソッドが1つもないパターン。

@FunctionalInterface
public interface IF {    //ここでコンパイルエラー。
    public String toString();
    default void Ex2() {}
}

関数型インターフェースとして定義できていない例2)

抽象メソッドを2つ以上定義したパターン。

@FunctionalInterface
public interface IF {    //ここでコンパイルエラー。
    public void Ex1(String str);
    public void Ex2(String str);

}

関数型インターフェースの実装

@FunctionalInterface
interface IF {
    void add(int x,int y);
}

//普通に実装するとこうなる。
@Override
public void add(int x,int y){
  System.out.println(x + y);
}

//ラムダ式で書くとこうなる。
IF IF1 = (x,y) -> System.out.println(x + y);
IF1.add(5,3);