WEBアプリ開発に関する技術を綴るブログ

php,js,apache,mysql,laravel,fuelphpあたりの技術

.htaccess

.htaccessとは

Apacheの各種設定や制御を行えるようにしたファイルで、 ディレクトリ単位で設置・設定がおこなえる。

利用用途はセキュリティ対策で用いられる事が多い。

.htaccessは設置したディレクトリ以下に影響を及ぼす。 main/■■■■/★★★★の■■■■と★★★★に.htaccessを設置したら、 ★★★★ディレクトリの設定は、同じディレクトリに設置した.htaccessが優先される

どんな設定ができるのか

1.IDとパスワード認証によるアクセス制限

2.IP or ドメイン指定によるアクセス制限

3.ディレクトリ内のファイル一覧表示の中止

4.リダイレクト

1.IDとパスワード認証によるアクセス制限

パスワードを使い、ディレクトリ全体にアクセス制限を敷くことができる

準備するもの (1).htaccess ファイル (2).htpasswd ファイル(ユーザーID:パスワード(暗号化))

f:id:tanaka19880312:20180831160023p:plain

AuthName “ユーザー名とパスワードを入力してください” AuthUserFile /home/user/test … /.htpasswd AuthType Basic パスワードをかける領域名。 require valid-user 認証されたユーザにはアクセスを許可する旨の記述

AuthGroupFileはログインするグループIDとパスワードの記述ファイルのパスを指定。 (ベーシック認証では関係ないので/dev/nullでいい。

2.IP or ドメイン指定によるアクセス制限

[制限] order allow,deny ←アクセス制限 allow from all deny from viral-community.com ←独自に設定 deny from 130.90.50.120 ←独自に設定

[許可] order deny,allow ←アクセス許可 deny from all allow from viral-community.com ←独自に設定 allow from 130.90.50.120 ←独自に設定

[ファイル単体に対して指定] order deny,allow deny from all allow from 103.10.150.0

3.ディレクトリ内のファイル一覧表示の中止

ディレクトリ構造が外部に公開されないようにする

index of / の画面が表示されてファイルが見られてしまう。

.htaccessに下記を記述するだけで、ファイル一覧が表示される事はなくなる。

Options -Indexes

4.リダイレクト

サイトの引越しをして、訪問した人が自動的に旧→新に転送する設定

301リダイレクトは、永久に移動する

302リダイレクトは、一時的に移動する

a.ページ(個別)を移転した場合

RewriteEngine on (宣言) RewriteRule ^old.html$ http://www.■■■■.com/new.html [R=301,L] .htaccessファイルがold.htmlと同じディレクトリ内にある事が前提。

*URL正規化:サイトにアクセスできるURLを1つに統一しましょうというもの

*mod_rewrite:使用するとリクエストされたURLを読み替えたり、ある条件を満たした場合のみリダイレクトする

URLについて

(1)プロトコル(http, https,mailto,ftp)

対象となる事項を実行するためのルール

(2)スキーム(http://)

プロトコルというルールを規定するもの

(3)ホスト名(www)

ネットワークに接続されたホスト(機器やサーバー)の名前。 ドメインとほぼ同じ意味。

(4)ドメイン

IPアドレスを分かりやすくするために設定する文字列。 インターネット上の住所となるので、同じドメインは1つしか存在しません。

(5)ファルダ名

サーバー内のフォルダ名と位置を表しています。

(6)ファイル名

URLの末尾に配置される一番小さなファイル

URLを書き換えろ!

Apache Rewrite機能:アクセスしたURLを正規表現を使って書き換えて処理する機能

Rewrite指示子

RewriteEngine:Rewrite機能自体のオン・オフを制御

RewriteBase:Rewrite処理のベースになるURLを設定

RewriteCond:サーバ変数を参照して、それが指定した正規表現のパターンと一致していれば、次の条件を引き続き実行する

RewriteRule:URLを書き換えるための指示子

・RewriteEngine On (宣言)

アクセスのあったURLを、正規表現で書き換えてから処理する機能 使いたいそれぞれのバーチャルホストに対してRewriteEngine指示子の設定が必要です。

・RewriteCond %{HTTP_HOST} !nara-f-localhost

書式:"RewriteCond" "対象文字列(条件パターンと照らし合わせる文字列)" "条件パターン(対象文字列とマッチ(部分一致or全体一致)させるパターンを指定する部分)" URL書き換えを行うルール条件を指定するもの。RewriteRuleの前に記述する。 RewriteCondが指定するルール条件を満たす→RewriteRuleが処理される RewriteCond %{サーバ変数名} 正規表現パターン そのサーバの情報にアクセスできる変数。 環境変数名:HTTP_HOST 説明:接続先ホスト名 ["HTTP_HOST"]現在のリクエストのホスト、ヘッダーがあればその内容を返す。 正規表現:メタ文字列(meta string)( ) [ ] { } . ? + * | \,リテラル文字列(literal string)がある。

・RewriteRule ^.*$ - [R=404,L] (URL書き換え処理)

   にアクセスがあったら、    に404Not Foundを行う処理。 URL書き換えにおいて、書き換えそのものを行う構文 書式:RewriteRule パターン(わたってきたURLとマッチさせる部分) 置換対象(わたってきたURLと「パターン」がマッチした場合に、行う処理を指定)

^は行頭、 *は0回以上の繰り返し(最長一致数量子)、 .は改行以外のあらゆる一文字を表す事ができ、 $は行末、

RewriteRuleで使うフラグ

R:指定したURLにリダイレクトする。【例】R=301で301リダイレクト(redirect) L:ここでURL書き換え処理を中止し、それ以降の書き換えはしないようにする(last)

サーバーから渡されたURLが"パターン"とマッチするか確認。ここではマッチしたとすると"置換"が行われる。

特定のドメインの時だけアクセス許可し、違うドメインの場合はアクセス拒否 SetEnvIf Host "^そのディレクトリにアクセスしてもいいドメイン名$" hos_ok SetEnvifを使って環境変数の設定。 SetEnvIf 環境変数 リンク元情報 設定する環境変数

許可と拒否の順番を設定するための命令が「Order」 order deny,allow 拒否してから許可

deny from all 全てをdeny 特定のホスト以外のアクセス全てを拒否すると言う意味

allow from env=hos_ok allow で特別にアクセスを許す範囲を指定

mod_rewriteのログを書き出す方法 httpd.confで、

Apache2.2だと、 RewriteLog "/var/log/httpd/rewrite.log" RewriteLogLevel 3 のように設定する

Apache2.4以降は下記のように LogLevel alert rewrite:trace4 trace4 -> trace8 のように増やすと出力されるログが詳細になっていく。 2.4 からは RewriteLog という独立したログはなくなり、 core モジュールのLoglevel ディレクティブを使って指定する方法に変更されたため、 出力は他のログと一緒に error_log に出るようになりました。 膨大にログが出て重くなるので、 デバッグ以外の目的で trace2 以上を使うのは止めた方がよいです。

ログの見方

Apache access_log

XAMPPコントロールパネルからアクセスログが見れる。

127.0.0.1 - - [29/Aug/2018:14:25:04 +0900] "GET /index.html?pid=1009 HTTP/1.1" 200 7716

192.168.0.65 - - [29/Aug/2018:14:25:06 +0900] "POST /page/categorylist HTTP/1.1" 200 31175

左から順番に、

アクセス元のIPアドレス

ユーザ名(-)

認証ユーザ名(-)

日付と時間: 「+0900」は世界基準の時間に9時間分がプラスされていることをあらわしています。

閲覧Webページ: GET とは、通常、クライアントがWebページを閲覧した場合に記録される動作を示し、 POSTとは、例えば、WebページのフォームからからCGIのプログラムへ値が渡されるときなどを示します。

ステータスコード(200): そのリクエストに対応するステータス。 200はアクセスできたことを意味するステータスである。 アクセスが拒否されたり、リダイレクトされたりすると この部分の値が200ではなく別のものとなる。

ファイルサイズ: 実際に送出したデータ量(バイト)。

GETとPOSTの違い

*GET

・データを取得したい時に使用

データベースの書き換えが必要ない場合。

*POST

・データを変更したい時に使用 データのソート、更新、削除、新規登録などで使用する場合。 パスワードのような秘匿情報をURLに表示したくない場合。 データ量が多い場合。 バイナリデータを送信したい場合。 *一般的には「テキストデータ以外のデータ」を指して「バイナリデータ」と表現することが多い

Apache error_log

XAMPPコントロールパネルのエラーログ で見れる

[Wed Aug 29 13:40:32.627191 2018] [ssl:warn] [pid 16014] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name (サーバー証明書にはサーバー名と一致するIDは含まれません)

[Wed Aug 29 13:40:32.627152 2018] [ssl:warn] [pid 16014] AH01906: www.example.com:443:0 server certificate is a CA certificate (BasicConstraints: CA == TRUE !?) (サーバー証明書はCA証明書です(BasicConstraints:CA == TRUE!?)) CA証明書:電子証明書を発行する認証局自身の公開鍵が含まれた電子証明書

[Wed Aug 29 10:39:42.166501 2018] [mpm_prefork:notice] [pid 3123] AH00169: caught SIGTERM, shutting down (SIGTERMシグナルを受信したため、Webサーバを停止しました。)

warn :警告 PID:プロセス識別子 いくつかのオペレーティングシステムカーネルUnix系やWindows)で使われている番号で、 ある時点で存在するプロセスを一意に識別するために用いられる。優先順位を調整したり、 終了させたり等、プロセス(群)を操作する様々な関数の引数として使う。

mysqld.log

/dev/rdisk1s3: fsck_apfs started at Tue Aug 28 15:47:01 2018 /dev/rdisk1s3: QUICKCHECK ONLY; FILESYSTEM CLEAN /dev/rdisk1s3: fsck_apfs completed at Tue Aug 28 15:47:01 2018

ファイルシステム「APFS」 mysqldプロセスそのものの異常の際にはここに情報が書かれますが, SQLのレベルでエラーになったことなどはここに出力されることはありません。

mysql-slow.sql

フルパス /private/tmp/mysql-slow.sql

/Applications/XAMPP/xamppfiles/sbin/mysqld, Version: 10.1.34-MariaDB (Source distribution). started with: Tcp port: 3306 Unix socket: /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock Time Id Command Argument (Idコマンドの引数)

定数を定義

PHPのdefine関数では定数を定義することができる。

一度宣言するとその後は値の更新ができない値

値が変えれるものは変数

プログラム中で書き換えられてしまうと困るような情報をdefine関数で宣言します。

define(定数名, 値 [, 大文字と小文字の区別]);

定数は変数と違って呼び出す際に$(ダラー)をつけない

defineで定義した値は書き換えられない。

<?php define('TAX', 1.08); // 消費税 define('TAX', 1.10); // 消費税を変更

echo TAX;

<実行結果> Notice: Constant TAX already defined 1.08

const構文との違い

defineはグローバルで、constはローカル

セキュリティ[脆弱性を突いた攻撃方法]

スクリプト埋め込み攻撃(Script Insertion)

XSS クロス・サイト・スクリプティング(Cross Site Scripting)

他人のWebサイト上へ、悪意あるスクリプトを埋め込む

ページに入力フォームがあることが、XSSを行う上での前提条件。

弱点のあるホームページに対してしか攻撃できない。

セッションハイジャック 訪問者のクッキー情報を抜き取るスクリプトを埋め込む cookie情報を第三者に抜き取られてしまったら、 抜き取られた人のアカウントで不正にログインされてします。

UXSS ユニバーサルクロスサイトスクリプティング

XSSはホームページの弱点を利用。

UXXSはホームページを見るソフト(webブラウザ)の弱点を利用。

この攻撃に対する対策はない。

CSRF クロス・サイト・リクエスト・フォージェリ(Cross Site Request Forgeries)

Webアプリケーションに存在する脆弱性、その脆弱性を利用した攻撃方法。 掲示板や問い合わせフォームなどを処理するwebアプリケーションが、 拒否すべき他サイトからのリクエストを受信し処理してしまう。 攻撃手法:攻撃用webページを準備し、ユーザがアクセスするよう誘導。 攻撃用webページに用意されてる不正なリクエストが攻撃対象サーバに送られる。 攻撃対象サーバ上のwebアプリケーションは不正なリクエスト処理し、ユーザーが意図してない 処理が行われる。

影響と被害:いたずら書き込み、不正サイトへの誘導、犯罪予告のような掲示板,アンケートフォームへの書き込み webページに誘導された一般ユーザには直接被害ない。ただ、攻撃対象サーバへの不正なリクエストを 送信した攻撃者として認識される可能性あり。

SQLインジェクションSQL Injection)

2006年1月に判明した、スカイソフトのクレジットカード情報を含む個人情報漏洩 スカイソフトは閉店へと追い込まれた。

オープンリダイレクト

Webアプリケーションのリダイレクト機能を悪用して、 ユーザーを悪意のあるサイトに誘導する攻撃

クリックジャッキング

クリック + ジャッキング(乗っ取り)

クリック位置を誤認させることで任意の場所をクリックさせて、 特定の動作を実行させる行為

変数汚染攻撃

リクエストとは独立してるはずの内部変数を上書き。 セッション情報を書き換えたり、任意コードを実行したりする攻撃 攻撃目標:$GET,$POST,$_COOKIEが直接foreach() or extract()にかかってる箇所 被害:セッションを書き換えることで、管理者権限を奪われる。任意のPHPコードを実行される。

バッファオーバーフロー攻撃

確保している領域よりも大きなデータを入れて誤作動させること

HTTPヘッダインジェクション

スパムメール踏み台攻撃

踏み台にされる:パソコンやサーバが乗っ取られ、 不正アクセスや迷惑メールの大量配信などを行う中継地点として 利用されること。サイバー犯罪者が足がつかないように、 第三者を攻撃の発信元として利用。PC遠隔操作事件

ファイルアップロード攻撃

nullバイト攻撃

ディレクトリ・トラバーサル(Directory Traversal)

eval利用攻撃

インクルード攻撃

パス・ディスクロージャ

コマンド実行攻撃(Command Injection)

Dos攻撃 フラッド型:プロトコルを攻略して大量のデータを送りつけて、相手が処理しきれない状態にする。 脆弱性型:サーバやアプリケーションの脆弱性を利用して、不正処理を行わせ、サービス機能を停止させる攻撃。

D Dos攻撃 大量の処理要求を送る事でサービスを停止させてしまう攻撃 トロイの木馬などのマルウェアを使って複数のマシンを乗っ取った上で、 Dos攻撃を仕掛ける。

Dos攻撃を発展させたもの 攻撃元 →🖥攻撃元の司令を受けてさらに違うコンピュータを操作 →🖥実際に攻撃するコンピュータ →🖥ターゲット

サーバーが処理が追いつかなくなり、パンクしてサーバーダウンしてしまう

Dos攻撃とD Dos攻撃の違い

Dos攻撃:単一コンピュータからの攻撃。 攻撃元 →🖥ターゲット

D Dos攻撃:複数のコンピューターからの攻撃。 1.ボリューム攻撃:レイヤ3~4,またはレイヤー7が攻撃対象のフラットベース攻撃 2.演算処理を消費する攻撃:CPUやメモリを消費する攻撃 3.非対向処理型攻撃:タイムアウトまたはセッション状態の変化を引き起こす攻撃 4.脆弱性を突く攻撃:ソフトウェアの脆弱性を悪用する攻撃

トロイの木馬 マルウェアの一種 感染するファイルを必要とせず、自己複製しないので感染したコンピュータから、 他のコンピュータに侵入し感染することはない。 セキュリティソフトを使ってないと、感染したことに気づきにくい。 攻撃者はこっそりと、特定のコンピュータに感染して長く滞在し、目的の情報を盗むことを 目的にしている。

PHP開発者が知っておくべきセキュリティ対策

PHP脆弱性への対策方法とは?

アクセス制御 ・ユーザーにログインIDとパスワードを入力させる ・指紋認証 ・クライアント証明書 (b)認可 ネットワークルーターを通過しようとするアクセスに対して、 通過を許可するものと拒否するものを決める事 (c)監査 認証や許可に関する諸々の処理をログとして記録して、 条件の見直しやアクセスの検証をする事

アクセス制御方式とは何か

(a)任意アクセス制御 アクセス権限の設定。最もスタンダードな方式。 Owner,Group,Everyoneといった属性ごとに、 Read,write,executeといった権限を付与していく。

(b)強制アクセス制御 サブジェクト:アクセスするユーザー側 オブジェクト:アクセス対象となるシステム側のリソース サブジェクトとオブジェクトそれぞれにセキュリティレベルを設定し、 レベルを比較することによってアクセス制限を行う。

都度最新バージョンへアップデートする

常時SSL化

httpからhttpsへリダイレクトする

.htaccessに下記を追加

RewriteEngine On

RewriteCond %{HTTPS} off 「%{HTTPS} off」は「httpsではない場合」

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

元のURLページ評価を引き継ぎたい場合は、301リダイレクトにする!

RewriteEngine on

RewriteCond %{HTTPS} off 「%{HTTPS} off」は「httpsではない場合」

RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

WAF(web application firewall)

webアプリケーションに潜む脆弱性の"無害化"

一般的なファイアウォールと違って、データの中身をアプリケーションレヴェルで解析可能

従来型WAF 1.導入費用の高さ 100万円以上の初期費用と年間数十万円以上のサポート費が必要 2.導入・撤去の敷居の高さ 複雑な設定作業と時間がかかる 3.ホワイトリスト型の防御機能を使うからハイコストのチューニング作業を要する 4.セキュリティエンジニアの配置コスト

クラウド型 1.導入まで一週間 2.システム構成を変えずに導入や解除可能 3.セキュリティ技術者不要 4.初期費用 10万円くらいで、月額3万円あたりから利用可能 5.短期のみの利用可能

IDS(不正侵入検知システム)

通信を監視して、異常があれば管理者へ通知。 ネットワーク型:ネットワークを流れる通信パケットを監視 ホスト型:監視対象のサーバに置かれ、通信の結果生成されたサーバ上の受信データ,ログを監視。 不正侵入検知やファイル改ざんにも対応

IDSのデータ収集方法 不正検出 異常検出

IPS(不正侵入防止システム)

IDSより進んで、異常通信があれば、管理者へ通知 + 異常な通信をブロック。 迅速な対応が可能になる。

IDS/IPSはwebアプリケーションレベルの内容まで見るのは限界があるので、 そこまでをカバーする場合はWAFを検討する必要がある。

ファイアウォール パケット・フィルタリング NAT

Dos攻撃対策 端末のIPアドレスをアクセス制御すれば被害を最小化する

D Dos攻撃対策

海外サーバを経由することが多いので、海外からのアクセスはブロックする

XSS対策

悪意あるコードを埋め込めないようにする

1.<>"&は文字参照にする HTML中に悪意あるコードを埋めなくするには、 <>"&の文字をエスケープしないといけない。 <は<に、>は>に変換される。

2.JavaScriptに動的に文字列を渡す時はURLエンコードする

HTMLに悪意あるコードを埋め込まれるより、JavaScriptを埋め込まれる方が 大きな被害につながる

3.hrefやsrcの値がURLか確認する

4.php.iniでsession.cookie_httponly=on

5.httpd.confでTraceEnable Off

LaravelのNotificationを使ってSlackに通知する

LaravelのNotificationを使ってSlackに通知する | Laborukun.io

qiita.com

上記URLを参考にslackに通知する設定をする

(1)slackのウェブフックを取得する Webhookは別名Webコールバック,HTTPプッシュAPIと呼ばれることもある。 あるアプリケーションから別のアプリケーションに対してリアルタイムな情報提供をする仕組み。 デメリットは初期設定が難しい。

Incoming WebHooks | Slack App Directory

アクセスしたら、Add Configurationをクリック。 投稿したいチャンネルを選択し、 Add Incoming WebHooks intragrationをクリック。 ウェブフックURLが作成されるので、これをコピー

(2)Webhook URLを書き込む Laravelの.envに以下のように書き込む

LOG_CHANNEL=slack LOG_SLACK_WEBHOOK_URL=https://hooks.slack.com/services/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

(3)logging.phpで設定 slackへのテスト投稿を楽にするために、/config/logging.phpでslackのエラーレベルを下げる。

'slack' => [ 'driver' => 'slack', 'url' => env('LOG_SLACK_WEBHOOK_URL'), 'username' => 'Laravel Log', 'emoji' => ':boom:', 'level' => 'debug', ],

(4)テストのエラー送信

slackへログをテスト投稿

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller { public function logging_slack() {

    \Log::notice('slackにテスト通知!');
    echo $test; // 変数を宣言してないんで、ここでエラー発生

}

}

忘れそうな用語集

絶対パス absolute path URLでページを指定して、目的地(情報)がどこにあるのかを確実に伝えます。 実際に道案内をするときに、目的地の住所(URL)を教えるのが絶対パスの伝え方 トップからの位置

相対パス relative path 今いる場所(階層)を基準にして、目的地(情報)がどこにあるのかを伝えます。 ある地点から道を曲がって道路沿いのつきあたりを右…というように、今いる場所から目的地までの経路を案内するのが相対パスの伝え方になります。 自分がいる場所を起点にした位置

FTP(エフ ティー ピー)とは

Webサイトを運営していくと、「HTMLファイル」や「画像」などを、 サーバーにアップロードする場面がでてきたりするのだが そのサーバーに接続する為の手段! File Transfer Protocol(ファイル・トランスファープロトコル)の略 日本語に訳すと「ファイル転送プロトコル」 パスワードや認証情報などが暗号化されることなくそのままの状態で通信を行なっている。 悪い人に転送内容を盗まれる場合あり。

FTPS,SFTPは、どちらもセキュリティを備えているプロトコル都内、安全にファイル転送ができる。 FTP接続は危険!

threshold」 しきい値:感覚や反応や興奮を起こさせるのに必要な、最小の強度や刺激などの(物理)量。閾値 あと少しズレると動作や表示内容などが変わるギリギリの値のこと

if(つまみ食いの数 < 2){

 今回だけは見逃す

}else{

 地獄の果てまで追い詰める

}

この話における「1個」と「2個」が閾値です。

SSLサーバー証明書

入力した情報を暗号化してやり取りできるようにしているのがSSLという仕組みです。 サーバー証明書を導入することで、SSLという仕組みを利用できます。 SSLで情報を暗号化することにより、データの盗聴、改ざん、なりすましを防ぐことができます。

SSLを使っているサイトでは アドレスバーのURLが https:// から始まります。 また、ブラウザに鍵マークが表示されます。

SSLサーバー証明書は、主に3種類あります。

EV認証証明書

企業認証証明書

ドメイン認証証明書

ソケット 「ネットワークとの接続口

名前解決 IPアドレスドメイン名に変換したり、ドメイン名をIPアドレスに変換 名前(人間様向け)」と「アドレス(コンピュータさん向け)」の変換であれば、すべて「名前解決」と表現して差し支えない 『人間用の名前←→コンピュータ用のアドレス』の変換をすること

バリデーション 入力内容や記述内容が要件を満たしているか、妥当性を確認すること

API Application Programming Interfaceの略で、 プラットフォーム側の汎用性の高い機能を外部から手軽に利用できるように提供する仕組みのこと。 開発のスピードアップやメンテナンスのしやすさから、 多くのクラウドサービスでAPIが用意されているケースが増えています。

名前解決 利用者はドメイン名を用いて接続先のサーバーを指定する(1)。

しかし、利用者のパソコンが接続先として指定されたサーバーと通信を行うためには、 「IPアドレス」と呼ばれるネットワーク上の識別番号を示す数字が必要である。 そのため、利用者のパソコンはDNSに対して利用者が指定したドメイン名を問い合わせ(2)、

接続先のサーバーのIPアドレスを得る(3)。

そして、利用者のパソコンは、このDNSから得た接続先のIPアドレスを使用して通信を行うのである(4)。

コンピューターネットワークにおいては、このような、 より抽象度の高いアドレス(例:ドメイン名)に対応する、 より抽象度の低いアドレス(例:IPアドレス)を見つけ出すこと

人間とコンピュータ双方がDNSによりスムーズにリクエストとレスポンスを行うこと ドメインIPアドレスの名前の違いを解決している

DNSの正引き・逆引き

正引きとは、ドメインIPアドレスを調べること 逆引きとは、IPアドレスドメインを調べること DNSと同じように、IPアドレスとホスト名のマッピングを行う最も原始的な仕組みが「hosts」ファイル

アドオン(add-on)とは、

ソフトウェアに後から追加できる拡張機能のことである。 具体的には、アプリケーションの機能を追加する目的で作成されるソフトウェアのことである。 代表的な例としては、ブラウザに追加されるプラグイン(plug-in)などがある。 別名、アドイン(add-in)とも呼ばれる。 その他にも、拡張パッケージ・パワーアップキット・アペンドディスクなどの呼び方があるが、 主にパソコンソフトやゲームソフトの分野で使われる用語である。

エイリアス 【 alias 】

エイリアスとは、偽名、別名、通称などの意味を持つ英単語。 ITの分野では、ファイルなどの実体を別の名前で参照するためのシンボルといった意味で使われることが多い。

冗長化 もしものときに備えて余計に用意しておくこと 使い方例:クラウドサービスを利用することで、オンプレミスより容易に冗長化を実現できる。

二重化 同じ物を、もう1個用意しておくこと

可用性とは 「システムやサービスが利用できる時間の割合」、つまり稼働率のことを指す。

リファラ

HTTPヘッダ」の中に書いてある「自分はどこから来ましたよ~」な情報を「リファラ」と呼びます。

ユーザーエージェント

Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_5 like Mac OS X; ja-jp) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8L1 Safari/6533.18.5"

この人はiPhoneから見てる。

このように自分はどんな人(ブラウザの種類とか)かを示してくれる情報がユーザエージェント

プロキシ (proxy) 代理

クライアントとサーバの間に入ってやりとり

メリット (1)身元を隠せる (2)場合によってはホームページへのアクセスが速くなる(キャッシュ機能があるから) 一度閲覧したWebサーバーのデータを一時的に保存しておける

サブネット

会社がネットワークで、部署がサブネット

100台でつくる大きなネットワークの中にある、 10台で作った小さなネットワーク メリットは3番目ネットワークの中の4番目のコンピュータといったように特定するのが容易になる

ローカルIPアドレス 仲間内でしか通用しないIPアドレス

グローバルIPアドレス

独自ドメイン 自分だけが利用できるドメイン お金がかかる ドメインの取得業者(ムームードメインやお名前.com)からお金を払って取得可能 一般的に「co.jp」、「ne.jp」などは割高で、 「com」や「net」は安価に取得できます。高くて1万円強、安価なものなら数百円で取得 目安として、 ・ドメイン維持費:1,000円/年 ・レンタルサーバー代:250円/月 かかったりする。(月額換算すると500円にも満たない額) レンタルサーバロリポップなどがある

無料ドメイン 一つのドメインを複数人で共有して利用 例)アメブロライブドア、FC2 http://ameblo.jp/★★★★/の ameblo.jpがアメブロドメインで、 ★★★★がユーザー毎のID

サブドメイン(メインサイトに対して、テーマが異なる場合はサブドメイン) Yahoo!ではサブドメインを利用して複数サービスを展開している Yahoo!JAPAN: http://www.yahoo.co.jp/ Yahoo!オークションhttp://auction.yahoo.co.jp/ Yahoo!ニュース : https://news.yahoo.co.jp/

バーチャルドメイン(マルチドメイン) 一台のサーバコンピュータあるいは一つのIPアドレスに複数のドメイン名を同時に割り当て、それぞれでサービスを提供すること。

サブディレクトリ(メインサイトに対して、同じテーマのコンテンツならばサブディレクトリ) 価格.com パソコン : http://kakaku.com/pc/ 家電 : http://kakaku.com/kaden/ カメラ : http://kakaku.com/camera/ 自動車・バイク : http://kakaku.com/kuruma/

環境変数 コンピュータが持っている変数

シンボリックリンク(windowsでいうショートカット) ファイルやフォルダの代理人ファイル ★★★★ ファイル ☆☆☆☆ シンボリックリンク

☆☆☆☆ シンボリックリンクを開くと、 ★★★★ファイルが開く。 直接★★★★ファイルを開いたのと同じ結果。 ☆☆☆☆ シンボリックリンクは★★★★ ファイルとして振る舞う。 ただし、実際には本物ではない。 ☆☆☆☆ シンボリックを削除しても、★★★★ ファイルは削除されていない。

アクセス制限 見せたくない人に、見せたくないことを、見せないようにすること

アクセス制御 ソフト,ネットワーク,ファイルとかに対する「誰が」「誰に対して」「何を」 やって良い(してはいけない)を管理

アクセス制限とアクセス制御の違い アクセス制限:見せたくない人に見せない アクセス制御:見せたくない人に見せない + 見せてOKな人には見せる

SSL 通信プロトコルの一つで、インターネット上の通信を暗号化する仕組み

TLS SSLの後継者。通信プロトコルの一つで、インターネット上の通信を暗号化する仕組み

SSLTLSの違い SSL 1.0→SSL 2.0→SSL 3.0→TLS 1.0

SSLSSHの違い SSH:通信が暗号化されるtelnet どちらも暗号化される どんな通信を暗号化するのか。 SSL:インターネット用。インターネットのやり取りが暗号化される SSH:遠隔操作用。他のコンピュータを遠隔操作する際のやり取りが暗号化される

プロバイダ 回線事業者(NTTの「フレッツ光」、KDDIの「auひかり」、ケイ・オプティコムeo光」など) 回線事業者に支払う費用は、初回だけ発生する「回線工事費」と、 毎月支払う「回線使用料」「回線終端装置のレンタル使用料」などがある。

回線を通してインターネットに接続する役割を担うのが「インターネットサービスプロバイダ」(接続事業者) プロバイダ以外にISPと呼ばれたりもする。 パソコン-回線-プロバイダ-インターネット

スマートフォンもプロバイダを通してインターネットをしています。

固定回線に対応している主なプロバイダ(@nifty,BIGLOBE,OCN,So-net)

"回線サービス" + "プロバイダ" を契約して"初めて"インターネットに接続可能となる

バックアップポリシー 何を、どのように、何のために、いつバックアップするかを決めること。

ログローテーション 一定期間ごとにログファイルをまとめ、古いログをバックアップファイルに移行、 そして設定期間を過ぎたログは自動的に削除する処理

バイナリ・ラージ・オブジェクト 別名:BLOB

データベースのフィールド定義などで用いられるデータ型の一つで、テキスト(文字)や数値以外の任意の形式のバイナリデータを格納することができるもの。

パッケージマネージャ ソフトウェアに関わるファイル一式がまとまったものをパッケージ このパッケージをまとめて管理してくれる。

デプロイ

ソースコードをサーバー上に新しく置き、プログラムを立ち上げること

ビルドしてできた実行ファイルを、実行する環境に合わせて、実際に実行できるようにすること。

Webサービスの場合であると、 追加したいアプリケーションを利用可能にするために、 サーバーの動きを止め、その間にアプリケーションを反映させる

開発環境からステージング環境、 ステージング環境から本番環境へ反映させることもそれぞれデプロイと言う

ホットデプロイ

ソースコードのデプロイ時にシステムを一瞬も停止することなくデプロイすること

サーバーをオンにした状態でデプロイをできる

アプリケーションが動かない時間(≒ダウンタイム)が発生しないデプロイがホットデプロイ

ビルド

ソースコードとしてコーディングされたソフトウェアを、 コンパイルリグレッションテスト、リリースノートや関連ドキュメントの生成、 第三者に提出したり配布したりするための専用のファイルの生成、などを行う一連の工程のこと

ソースコードをそれぞれ翻訳するのがコンパイルで、 コンパイルされたファイル達を1つの実行ファイルにまとめてあげるのがリンク。 ビルドっていうのはこのコンパイルとリンクをまとめて行っているみたいなイメージ

リグレッションテスト デグレードデグレ)とリグレッションは同じ意味の用語 今まで動いていた部分が動かなくなっていないかを確認するためのテスト

デグレート

前に作ったはずの機能が無くなっちゃったり直したはずのバグが復活したりといった 「プログラムを変更したら前よりおかしくなっちゃった」な状態を指す。

Kubernetes(クーベネティス/クーベルネイテス) Googleが開発 高度なことを簡単に使えるようにテクノロジーが注ぎ込まれている 1.アプリを迅速に予定通りにデプロイする (コンテナをサーバー群へ展開する) 2.稼働中にアプリをスケールする(稼働中にコンテナ数を変更する) 3.新機能をシームレスに提供開始する (稼働中にロールアウトする) 4.ハードウェアの利用率を要求に制限する (コンテナで共存させて稼働率を高くする)

クラスタ構成 実際には複数のコンピュータだけど、1台っぽく振る舞わせる構成 クラスタリングする目的は、 主に「誰かが力尽きても大丈夫なようにしておく」 ためと「苦労を分かち合う」ため。冗長化と負荷分散

オーバーヘッド

焼き芋を食べる時に、芋の皮を剥く行為のこと。 本来は食べるのが目的であって皮を剥く行為は 1.余計な処理が発生 2.時間がかかる 3.負荷がかかる

最初から剥いてある芋や、皮を剥かずに食べるかをすると 無駄が省ける

エミュレーション ある装置やソフトウェア、 システムの挙動を別のソフトウェアなどによって模倣し、 代替として動作させること。

オーケストレーション

仮想化環境において、 仮想サーバーやアプリケーションの設定を統合的に行う、 あるいは運用を自動化するといった意味

Amazon EC2

クラウド上で仮想マシンを稼働させるサービス 料金は従量課金制

Microsoft Azure

クラウドプラットフォーム

ベンダー

ITベンダーとは、ITのソフトウェアやサービス、システム、製品などを販売する企業のこと

大手のITベンダーでは、富士通NEC、日立があり、海外では、 IBMやHP(ヒューレット・パッカード)などがあります。 また、セキュリティベンダーには、トレンドマイクロマカフィーシマンテックなどがあります。

サードパーティ ある企業やその提携企業が構築したビジネス-モデルに,第三者的に参加する企業のこと。

コマンドラインツール (command line tool)

キーボードで操作するプログラム

ポータビリティ 【 portability 】 可搬性 / 移植性

あるプログラムを他のOSやコンピュータの上で動かそうと思ったときに、 どのくらい簡単にプログラムを改造できるかを示している。

プラガブル(Pluggable)

プラグ(Plug)が可能(able)という意味で、「脱着できる」といった感じで使われる言葉。

アドネットワーク

webサイトやブログ、SNSなど、複数メディアの広告枠を束ねているネットワークのこと

クロール (crawl)

インターネットの世界を徘徊し、ホームページに記載されているリンクを辿って、情報を集めていく 収集した情報を、検索エンジンさんに報告

カプセル化【通信】 (encapsulation)

パケットを包んだパケット

パケット

細切れにしたデータ パンを一本丸かぶりするより、細切れちぎって食べるイメージ 10パケットと言ったらパケット10個分のデータ(転送)量

コンテナ

仮想的OS環境の事。1台のコンピュータしかないのに、複数のコンピュータが動いている環境

OS上に個々のアプリケーションごとの専用区画を作り出す技術

依存ファイル

プログラムの実行ファイル以外に必要となるファイルのこと

実行環境

動かすために用意された環境

動作環境

最低限の動作を保証する環境の条件 「メモリはこのくらい必要で、 これのバージョンはいくつ以上だったら大丈夫で、 その他、これこれの条件を満たせば動作を保証するよ!」のような内容

コンポーネント

部品

IPC

2つのプログラム間でデータ交換を行なうこと。

Immutable Infrastructurea インフラを使い捨て

Imuutable:不変 クラウドや仮想環境で利便性の高いシステム運用法

Infrastructure as Code

インフラを設定する全ての手順をコード化するという意味。 ChefやAnsibleといったオープンソースソフトウェアが、 このような機能を提供しています。

マイクロサービス

用途・目的ごとに小さなサービスを作っておくことで、「変化に強くて柔軟性の高い、 アプリケーション開発を行おう」というのがマイクロサービス プログラムを機能ごとのモジュールとして完結させ、 それらを独立したプロセスとして動かし、APIでつなぎ合わせて連携させる。 そうして、一つの大きなサービスを構成する手法 社会の急激な変化・開発期間の単位が短くなる傾向から、昨今注目されているソフトウェアのアーキテクチャ 米国:Amazon,NetFlix 日本:LINE,クックパッド,Gunosy が取り入れている。

DevOps(development operations)

アジャイルとDevOpsとの違い

リコメンデーション・エンジン

従来型のデータマイニングや統計分析手法とは全く異なる、きわめて高い予測・分析、学習機能に基づいてWebにアクセスしてきた顧客に、商品やサービスをリコメンド(推薦)するアプリケーション・ソフトウェア。

疎結合

システムどうしが標準的なインターフェースに基づいて接続されているため,一方が他方を容易に取り替えられる状態をいう。

密結合

システムどうしが固有のインターフェースに基づいて接続されているため、一方が他方を容易に取り替えられない状態をいう。

データマイニング

マーケティング手法の一種で、あるデータ群から潜在的な顧客のニーズを採掘(マイニング)する方法。

CIサーバー

CI(継続的インテグレーション)を実行するためのサーバーのことである。

CIサーバーの主な役割として「ビルド」と「テスト」がある。これらを自動化することによって、開発の効率的が促進できる。

モノリシック(一枚板)

ソフトウェア的には、全体が1つのモジュールでできていて、分割されていないことを意味する。 特にカーネルの構造などで、必要な機能を1つのバイナリに全部組み込んでしまい、外部モジュールを必要としないようなものをモノリシックカーネルと呼ぶ。これとは逆に、最小限のものだけをカーネルに入れ、多くの機能を外部のモジュールで行うものを「マイクロカーネル」と呼ぶ。モノリシックカーネルは、このマイクロカーネルに対して従来のカーネル構造を指す言葉として使われる。 なお、現在では、マイクロカーネルではないもののモジュール構造を持ったり、一部だけを外部モジュールとして実現することも行われており、それぞれの違いは曖昧なものになってきている。

カーネル

オペレーティング-システムの中でもっとも基本的な機能を受け持つ部分。 通常,ユーザーは直接制御できない

高密度化

NAT(Network Address Translation)

グローバルIPアドレス←→プライベートIPアドレスの変換を行う仕組み

Cacti

サーバのネットワークトラフィック、CPU使用率、 空きメモリ量、ディスク使用率などをグラフ化するソフトウェア SNMPを使用し、監視ターゲットの統計情報を取得・グラフ化

SNMP(Simple Network Management Protocol)

ルータ、スイッチ、サーバなどTCP/IPネットワーク に接続された通信機器に対し、ネットワーク経由で監視、制御するためのアプリケーション層プロトコル

SNMPを利用することにより、導入したネットワーク機器を監視することができるので、ネットワークに障害 が発生した場合にどの機器に障害が発生したのかをすぐに突き止められるなど、迅速な障害復旧に役立

状態監視:CPU,メモリ,インターフェースでのパケット受信使用量,筐体内の温度 ハードウェア監視:HDD,電源,ファンなどの部品が壊れてないか。 ソフトウェア監視:L2ループが発生してないか。

リレーショナルデータベース(RDB) 現在の多くがリレーショナルデータベース

データベースマネジメントシステム(DBMS) データベースを扱う為の道具 データベースが図書館だとしたら、そこで働く職員さん

リレーショナルデータベースマネジメントシステム(RDBMS) リレーショナルデータベースを扱う為の道具

リンク切れ

自ページに設置してあるリンクの遷移先がHTTPステータスコード404 Not Found 等によりアクセスすることが出来なくなっている状態を指します。

リンク先のURLを間違えて設定していたり、リンク先のページが削除されてしまったりすることで生じます。

デッドリンク(Dead Link)とも言われ、長く運用しているサイトに多く見られることがあります。

ユーザビリティ

一般には製品やソフトウェア、Webサイトなどの「使いやすさ」や「使い勝手」を表す言葉です。 ただし、実際にはそれだけでは説明し切れない広い意味合いを持っており、複数の定義が存在します。(後述) Webサイトのユーザビリティの良し悪しは、コンバージョン率やリピート率、離脱率、滞在時間、サイトに対する心的印象などに影響し、 サイトのビジネス上のパフォーマンスを左右する要因となります。

パージ

データやファイルなどをまとめて削除・消去するという意味

エッジコンピュータ

端末の近くにサーバーを分散配置するというネットワークコンピューティングの技法の1つ

同期処理と非同期処理の違い 同期処理:あるタスクが実行している間、他のタスクの処理は中断される方式 非同期処理:あるタスクが実行をしている際に、他のタスクが別の処理を実行できる方式

非同期処理と並列処理の違い 並列処理:コンピュータの処理速度を向上させるための手法。 複数あるタスクを、別々のコアに演算を割り当てる事でタスクを同時(並列)に実行して処理を行わせます。

並列処理と並行処理の違い 並行:複数の動作が論理的に順不同、もしくは同時に起こる 並列:複数の動作が物理的に同時に起こること

並行処理: ひと昔まえのシングルコアのCPUを積んだPCで、youtubeで動画を見ながら、ブログの更新ができるのは、 人間の目では同時に処理演算が実行されているように見えるが、シングルコアなので1処理ずつ行っている。 一瞬すぎて人間には同時に処理されているように見える。

並列処理: その名の通り、同時実行させて物理的に並行して処理

時代は、並行→並列へ。そしてその先へ

core2の登場

コア:中央処理装置(制御装置,演算装置) デュアルコア:1つのCPUに2個のコアが存在。 先ほどのコード読み込み〜処理までを「物理的に同時に」実行可能。 これが並列処理

物理メモリと仮想メモリ

仮想メモリ:物理メモリが不足したときにwindowsが使用するのが、ハードディスク上に設定した仮想メモリ。 別名バーチャルメモリやページングファイルという。pagefile.sysと隠しファイルになっている。 デメリットは、物理メモリに比べて処理速度が1000倍くらい遅いため、頻繁に仮想メモリにアクセスするような状態では、 パフォーマンス悪くなる。

多次元配列

配列の配列

インピーダンスミスマッチ

情報工学において概念や構造の異なる2分野の領域の間で発生するギャップのこと。 多くの場合、オブジェクト指向プログラミングとリレーショナルデータベースとのギャップを指す。

オブジェクトデータベース

オブジェクト指向プログラミングにおけるオブジェクトの概念を取り入れたデータベースのことである。

O/Rマッピング

「オブジェクト」と「リレーショナルデータベース」をマッピング(対応付け)すること O/Rマッピングは実装時のデータベース操作にかかわる煩雑な作業を軽減し、 「インピーダンスミスマッチ」を解決してくれる

REST

Webサービスの設計モデル

言語解析技術

互換

本来の環境よりランクが上→上位互換 本来の環境よりランクが下→下位互換 本来の環境より新しい(新しい奴)→後方互換 本来の環境より古い(昔の奴)→前方互換

オブジェクト指向 データベース

リレーショナル データベース

多次元 データベース

複数の属性項目(次元)を持ったデータを管理し、分析の視点を次々に切り替えて検索・表示できるデータベース。

データウェアハウス・システム

企業経営の中で時系列に蓄積されたデータの中から、 各項目にある関連性を分析するためのシステム

例) コンビニエンスストア 「月曜日に鶯ボールを購入する10代の女性は、マイルドセブンを購入していることが多い」 「猛暑の日に売れる商品は、アイス」 など単純なデータ集計では発見できなかった各データ間の関連性を洗い出すことが出来る。 ビッグデータ活用においてデータとデータの関連性を洗い出す行為はとても重要であり、 DWHの導入は必須

ドリリング

多次元データベースでは,詳細に展開する操作をドリルダウンといい,逆に集計する操作をドリルアップ

スライシング

パンやハムをスライスするように,スライシングとは,多次元データベースをある断面で切り取って2次元の表にする操作

ダイシング

ダイスとはサイコロのことで,ダイシングとはサイコロを振ることである。多次元データベースでの操作では,縦軸と横軸を指定して2次元の表にする操作

スパースアレイ配列

配列の添え字が順序だてて並んでいなくて、途中の値が飛んでいても良い、という構造

例) 添字の値 1,2,3,5,6(4がない)とか"大阪府","兵庫県","京都府"のように数値以外のデータでも構わないというもの。

グローバルマッピング

データのマッピング

ルーティンマッピング

処理プログラムのマッピング

構造化データ

HTMLで書かれた情報が何を意味するのかを、 検索エンジンやその他のクローラーに理解できるようタグ付けしたもの

メリット: 1.リッチスニペットが表示できる 2.ページ内コンテンツがナレッジグラフに表示される

リッチスニペット

通常テキストのみであるスニペットを発展させたもの。 画像とかレビュー評価などのテキスト以外の情報も表示されているもの

強調スニペット

ユーザーが疑問を投げかけるような検索を行った際に、回答として 検索結果上部に表示されるスニペット。 例) トランジット とは

ナレッジグラフ

レジスタ

CPUの中の部品で、覚えるのが速いけど、たくさんは覚えれない記憶装置。

プロシージャキャッシュ

Oracleで言う所のライブラリキャッシュ。コンパイルされた物を格納する場所

OODB

オブジェクト指向データベース

ストリング

プログラミング言語における、文字列型のデータ、または文字列型であることを示すステートメントのこと。

ステートメント

コンピューターのプログラムで、一つの指令を与えるための文。

オブジェクトストレージ

ブロックストレージ

固定長のブロック単位によって、データにアクセスする仕組み

オブジェクトストレージ

IDとメタデータによってデータを特定し、アクセスや読み書きを行います。 こうした特徴から、オブジェクトストレージはデータ保存容量の上限が実質的にありません。 大量のデータを高速に処理し、かつブロックストレージが不得意な非構造化データの保存にも適しています。

相関分析 2つのまたは2つ以上の変量の間で、一方の変量が変化すると、 他方もそれに応じて変化する関係を言い、これを統計的に分析すること

回帰分析 相関関係や因果関係があると思われる2つの変数のうち、一方の変数から将来的な値を予測するための予測式(回帰直線)を求めるための手法。2組のデータの傾向を分析するために行われる。

組み込みソフトウェア

大きく産業機器や家電製品などに内蔵される、特定の機能を実現するためのシステムで動作するソフトウェアのことで、大きくはソフトウェアとハードウェアに分けられます。

組み込みシステム

特定の機能を実現するために機械や装置等に組み込まれるコンピュータシステム。

近年におけるマイクロプロセッサの価格の低下、能力の向上などにより組込みシステム導入は広がっている。

new演算子

インスタンス(実体)を作るときに使う演算子

値渡し

関数に変数を(引数として)渡すときの「渡し方の種類」のひとつ。 渡す変数をコピーして、コピーした変数を「これを使ってね」と渡すやり方 変数の中身を書き換えても呼び出し元には影響しない 関数に対して情報を与えたいだけの場合は値渡しを使います。 呼び出し元から呼び出し先の関数に対する一方通行の場合です。

参照渡し

関数に変数を(引数として)渡すときの「渡し方の種類」のひとつ。 変数の置いてある場所が書かれた紙を渡して「ここにある変数を使ってね」と伝えるやり方 変数の中身を書き換えると呼び出し元の変数の中身も書き変わる 関数内での変更を呼び出し元にも反映したい場合は参照渡しを使います。 呼び出し元と呼び出し先の関数で双方向のやり取りをしたい場合です。

オブジェクト指向言語は基本的に参照渡し

値渡しと参照渡しの違い

Eclipse (統合開発環境)

IBMによって開発された統合開発環境 (IDE) の一つ。 高機能ながらオープンソースであり、Javaをはじめとするいくつかの言語に対応する。 Eclipse自体はJavaで記述されている。

・主な機能 -プラグイン -デバッグ・ステップ実行 -JUnit連携 -Ant連携 -リファクタリング -コード編集支援 -Eclipse Compiler for Java

Unicode

いろいろある符号化文字集合のひとつ 『文字』と『文字に割り当てた番号』の対応表のひとつ

OpenVMS

ディジタル・イクイップメント・コーポレーション (DEC、現在はヒューレット・パッカードエンタープライズ) によって設計された、 タイムシェアリングシステム、 バッチ処理およびトランザクション処理用のオペレーティングシステムである。 当初は単にVMSと一般的には呼ばれており、 元々はVAXシステム上で動作していたが、 後にDEC Alphaとインテル Itaniumに移植された。 2014年、ヒューレット・パッカードはVMS Software, Inc.に OpenVMSの将来のリリースを開発する独占的な権利を与えると発表した。

ロケール

ソフトウェアに内蔵される、言語や国・地域ごとに異なる単位、記号、日付、 通貨などの表記規則の集合。または単に、利用する言語や国・地域の指定。

ヒープ領域

動的に確保可能なメモリの領域。ヒープ (heap) とは、『山積み』という言葉の中の『山』をさす英単語である。

スーパーサーバ (super server)

様々なデーモン宛のお仕事要求をまとめて受け付けるデーモン ftpdやtelnetdの代わりに仕事をする。 ただし、httpdは見ない。

メンバ変数

オブジェクト:ピヨ太君  ■メンバ変数(属性) どんなやつ   ・基本的にのんびり屋   ・たまに頑張り屋さん   ・寝るのが好き   ・食べるのも好き

 ■メソッド(操作) どう動ける   ・寝る   ・食べる   ・遊ぶ

抽象メソッド

実装を持たない、シグネチャ(メソッド名、引数の型、引数の数)と戻り値の型のみを定義するメソッド

共有ロック

トランザクションが SELECT 文によりデータを参照するものであるときのロックのモードです。 共有ロックによりデータがロックされている間は、 他のトランザクションからデータを参照することはできますが、データの変更はできません。

排他ロック

トランザクションが INSERT 文、UPDATE 文及び DELETE 文であるときのロックのモードです。 排他ロックされている間、他のトランザクションからデータの参照も変更もできません。

インスタンス化(instantiation)

newする事

point-to-point link (ポイント・ツー・ポイント接続)

2 つのコンピュータを、両端に 1 つずつ接続するネットワーク・リンク。 PPP(point to point protocol)

2ノード間を一対一で接続するためのプロトコル PPPは主に電話回線やISDN、専用回線やATM回線などの通信で使われます。

スーパークラス

オブジェクト指向プログラミングにおいて、 あるクラスの仕様を継承して新しいクラスを作成する際に、 元となるクラスのこと。 新しいクラスのことは 「サブクラス」(subclass)、 「派生クラス」(derived class)、 「子クラス」(child class)などと呼ぶ。

インスタンス変数 【 instance variable 】

オブジェクト指向プログラミング言語で、 オブジェクトの個々のインスタンス毎に固有の変数。 オブジェクトのクラスを定義する際にその内部で使用される変数として定義されるもので、 実行時にインスタンス毎に領域が確保され、それぞれが固有の値を取る。

エクステント

エクステントとは、ハードディスクやMOディスクなどの外部記憶装置に記録された、 論理的に連続した記憶領域のことである。

ファイルの記録された領域が物理的には連続していなくても、 論理的に連続した領域として認識させることで、 アプリケーションプログラムは物理的な記録領域を意識することなくファイルへアクセスすることができる。

コンソール

Macでいうターミナル

機械語

0 or 1の羅列

if~やfor~も、最終的には0 or 1に変換される

スタック領域

ヒープ領域

ストレートエンジン

InnoDB -対象のレコードだけをロック(行ロック) -MySQL5.5以降でのデフォルトのストレートエンジン -トランザクション機能ある

MyISAM -対象のテーブル自体をロック(テーブルロック) -トランザクション機能がない

プロシージャ

コードの塊を作成する仕組みをリーチン、関数、メソッドなども 似たような仕組みを指す。 pascalvisual basicのように呼び出し元に値を返さないものをプロシージャ、 返すものを関数と呼んで区別する場合もある。

.tar【拡張子】

複数のファイルを一つにまとめたファイル

同期と非同期

インターフェイス 「このクラスは、○×△メソッド(≒関数)を持ちます!」という「約束」 インターフェイス」は割と幅広い意味で使われる用語

透過的

実際に存在するものを存在しないように見せる ヴァーチャルリアリティの逆。

OSI参照モデル(Open System Interconnection)

ISO(国際標準化機構)が決めた異なるベンダ感で相互通信するための「ネットワーク・モデル」と言われる統一規格のこと。

<OSI参照モデル> 第一層 物理層 第二層 データリンク層 第三層 ネットワーク層 第四層 トランスポート層 第五層 セッション層 第六層 プレゼンテーション層 第七層 アプリケーション層

<TCP/IPの階層> ネットワークインターフェイス層 インターネット層 トランスポート層 アプリケーション層

フェイルオーバー (failover)

冗長化されたシステムにおいて、障害が発生したときに自動的に待機系に切り替える機能

ミラーサーバ (mirror server)

バックアップ用だったり、負荷を分散する目的で作られることが多い 同じ物が複数あれば、1つがぶっ壊れても何とかなりますね。 同じ物が複数あれば、やることがいっぱいあっても分担できます。 そのような用途で作られるのが「ミラーサーバ」です。

ミラーリング

複数のハードディスクに同じ内容を記録しておく事

可用性

「めったに使えなくならないよ!普通に使える状態を長期間にわたって良い感じに維持してるよ!」です。

コネクションプーリング (connection pooling)

接続した状態を用意しておいて、それを貸し出しますよ機能

SSL/TLS

SSL、もしくはTLSだよ!」の意味。

通信内容を暗号化する

だから盗み見られても大丈夫

SSL 1.0→SSL 2.0 →SSL 3.0→TLS

レコードプロトコルとハンドシェイクプロトコルの 2つの層から構成されます

リテラル

ソースコードに書いた文字とか数字

正規表現

いくつかの文字列を一つの形式で表現するための表現方法

論理演算

AND演算,OR演算,XOR演算,NOTの4種類がある。 2進数の1桁を対象として演算結果がけた上がりしないですから、 0または1だけを演算し、その結果も0または1のいずれかになる。 論理演算は真偽を演算するものとみなせるので、 論理演算の結果を表す表のことを真理値表とも呼ぶ。

ワイド文字

常に 16 ビットの多言語文字コード 文字定数の型は char です。ワイド文字の場合、型は wchar_t です。 ワイド文字は常に固定サイズであるため、ワイド文字を使用すると、 各種言語の文字セットを使ったプログラミングが簡単になります。

マルチバイト文字

1 つ以上のバイトのシーケンスで構成される文字 マルチバイト文字は、漢字などの文字セットで使用されます。

ASCII(American Standard Code for Information Interchange)コードとは

アスキー。 コンピュータは二進数しか扱えないため, 文字データも二進数(つまり整数)として表現される. コンピュータは,ある二進数を特定の文字だと思いこんで処理する約束になっている. このような,文字を表現する二進数のことを特に文字コードと呼ぶ.

そこで,どの数値とどの文字を対応させるかを決めて,一覧表を作成することなる. 現代のコンピュータでは標準的な文字コード表が決まっている. 特にアルファベットと記号ではASCII(アスキー)コード表が使用される.

後方互換

新しいので使えるかを示している

ダイアログボックス

ポンと開く子画面のこと。

閉じますか?

yes no

リファレンス

プログラミングの分野では、主に関数の使い方などが書かれた文書のことを指す。

文字列連結演算子

2つの文字列を結合して1つの文字列にします。

「.」を使うと文字列を連結することができます。

my $str3 = $str1 . $str2;

my $str1 = 'ABC'; my $str2 = 'DEF'; my $str3 = $str1 . $str2;

文字列「$str3」は「ABCDEF」になります。

Perlでは文字列連結を加算演算子「+」で行うのではないので注意です。

比較演算子

<,>,<=,>=,=,!=,<> 比較演算子は意味が通じるなら全てのデータ型で使える。 全ての比較演算子二項演算子で、booleanデータ型を返します。

BETWEEN演算子

SQL文の検索条件に使われる範囲比較演算子のこと。 対象領域にある値が、指定した範囲内にあるのか、ないのかを検証する。

NOT 論理演算子

後に続く文の真偽値を反転します。例えば、IF NOT EXISTS(...) のように指定します。 NOT では大文字と小文字が区別されません。

ビット単位論理演算子

インタプリタ

ちょっと翻訳して、ちょっと実行方式

コンパイラ型言語と対比されたりする。

コンパイラ型言語

最初に全部まとめて人間語から機械語へ翻訳してから実行する方式のプログラミング言語

データ型の種類

数データ:INTEGER,SMALLINT,DECIMAL,DOUBLE PRECISION 文字データ:CHARACTER(n),VARCHAR(n) 日時データ:DATE,TIMESTAMP 行データ:ROW

オペランド (operand)

1 + 1 = 2 の 1と1と2のこと

react native

ReactはFacebookが開発したJavaScriptフレームワークであり、 React Nativeはそれをモバイルで使えるようにしたものである。 React Nativeを使用することでネイティブに描画されるiOSAndroidのアプリを作ることができる。 1つのコードで、両方のプラットフォームで動くものが作れる。

ホットデプロイ

WebアプリケーションやWebサービス(に加えた変更)を運用環境に適用する際、 システムの一時停止と再起動を伴わずに適用することである。

リージョン

サーバーやストレージ、ソフトウェアなどをネットワーク経由で利用できるクラウドサービスですが、 物理的なサーバーやストレージが存在しないわけではありません。

サーバーやストレージはクラウド事業者のデータセンターにあり、 データセンターが設置されている独立したエリアのことを「リージョン」と呼んでいます。

例えば「東日本リージョン」のクラウドサービスを利用する場合、 東日本にあるいずれかのデータセンターのリソースを利用していることになります。

また、各リージョン内には独立したインフラの運用区画として「ゾーン」が設置されていて、 サーバーラックやネットワーク、電源、ストレージなど、すべてのリソースがゾーンごとに分離されています。 この複数のゾーンを冗長化して活用することで、可用性や耐障害性を高めているのです。

グロナビ

各ページに共通して設置されるサイト内の案内メニュー 例)会社概要,事業・サービス・採用情報,お問い合わせ のところ

イベントドリブン型

「イベントの発生をきっかけとして、仕事を始めるやつ」

「C10K問題」(クライアント1万台問題)

ハードウェアの性能上は問題がなくても、あまりにもクライアントの数が多くなるとサーバがパンクする問題のこと。

チケット駆動開発

チケット駆動開発は、プロジェクトの中で発生する数あるタスクをチケットという単位に分割してタスク処理する手法です。

具体的に言うと、開発の中には新機能追加、バグ修正、課題解決、テスト、サポートなどなど様々な手順がありますが、それぞれを一つの作業として切り出しチケット化します。

チケットには担当者が割り当てられるので担当の人間がソースコードを修正したりしてチケットを終了させるわけです。

テスターやマネージャーはチケットをバンバン発行してプログラマーはチケットをクローズするという作業に分割できるので、作業分割できるし組織っぽい開発環境を作れるわけです。

チケット駆動開発はプログラミングが主な開発会社だけでなくて、プロジェクトマネージメントが必要な組織であれば共通して使える概念です。

ツール:backlog,redmine,trac,jira

EPEL

エンタープライズ Linux 用の拡張パッケージでFedora プロジェクトの貢献者たちがFedora のパッケージを自分たちが使っているRed Hat Enterprise Linux (RHEL) やその互換ディストリビューション上で使用したいという要望から作成された拡張パッケージです。

RHELクローンとしてサーバー用途に用いられることが多いCentOSは簡素で堅牢なパッケージを提供する傾向にあります。 CentOSの公式リポジトリは保守的でパッケージ数も多くないため、 EPELやRemi, RPMforgeを追加し必要なパッケージを追加するといった使い方をされるようです。

.tar【拡張子】

アーカイブファイルは「複数のファイルやフォルダを1つにまとめたファイル」 アーカイブファイルには、いろいろな形式があります。 その、いろいろある中の1つが「tar」です。 拡張子「.tar」のファイルは圧縮・解凍ソフトやUNIX系OSでよく使われる「tar」コマンドで解凍できます。 ちなみに、拡張子が「.tar」のファイルは「1つにまとめられている」だけです。 圧縮は、されていません。 ご注意ください。 圧縮ファイルとは、ちょっと違います。

.yml【拡張子】 YAMLファイル 拡張子が「.yml」のファイルは、どちらかと言えば、 プログラムやソフトでデータを受け渡しするときに使われるファイルの形式です。 手動でファイルを開いて、中身を直接目で見る必要に迫られることは多くない

クロスルート

通常、「SSL証明書」を認証する際は、「中間証明書」の内容を元に ブラウザにインストールされている「ルート証明書」を確認し、 正しい認証局から認証されているかを確認するのですが、 「ルート証明書」が入っていなかった場合、認証しあっている 別の認証局の「ルート証明書」で、代わりに認証を行っているのですが これが「クロスルート」という考え方です。

EFO

申し込みフォームの入力完遂率を高めるために、 フォームを改善する施策のこと。 典型的なパターンとしては、 ・多すぎる入力項目を減らす ・入力ミスがあった場合、どのように修正すればいいかをわかりやすくする ・フォームを送信することでどんなメリットがあるかを伝える EFOをする前に入力フォームまで辿りつけるかを確認して動線を考えることが大事!

低遅延(低レイテンシー

情報機器や通信回線の状態が良くて遅れが少ないこと

CDF(channel definition format)

インターネット上の情報をユーザーの操作なしで取り込めるように規定された, 情報配信ファイルの形式。HTML を拡張したもの。

xibファイル

XcodeでI phone,i padのアプリ開発する時の画面作成で使われるファイル

project builderとinterface builderを兼ねた開発環境がxcode

XMLファイル

nibファイル(NeXTStep Interface Builder)

NeXT Step(OS)に付属するInterface Builderというアプリケーションで作成されたファイル

バイナリファイル

storyboard

xibの画面遷移をわかりやすくしたもの。 storyboardをnibと呼ぶ人もいる。

DAU

「Daily Active Users」の略であり、 企業や個人の運営するWEBサイトやスマートフォン用のサイトなどを 一日にどれぐらいのユーザーが利用したかを確認するための指標です。