Screenの設定

screenとは

1つのターミナル内で、仮想的に複数の端末を起動することを可能にするアプリケーションのこと。

~/.screenrcの設定
# ~/.screenrc
# 文字コード設定
defutf8 on
defencoding utf8
encoding utf8 utf8

# screen起動時のメッセージをoff
startup_message off

# エラー時に画面がフラッシュするVisualBellをoff
vbell off

# スクロール行数の設定
defscrollback 10000

# マウススクロールを有効
termcapinfo xterm* ti@:te@

# エスケープキーの変更
escape ^Tt

# ステータスラインを常時表示
hardstatus alwayslastline "%{= rw} %H %{= wk}%-Lw%{= bw}%n%f* %t%{= wk}%+Lw %{= wk}%=%{= gk} %y/%m/%d %c "

# 接続が切断されてもプロセスを維持
autodetach on

# screen起動時にウィンドウを4つ表示
screen
screen
screen
screen


コマンド
コマンド 解説
screen screen起動
ctrl+t c ウィンドウ作成
exit ウィンドウ終了
ctrl+t \ 全ウィンドウ削除

AWS関連

AWS

AWS(Amazon Web Services)とは、Amazon.comにより提供されているクラウドコンピューティングサービスである。クラウドコンピューティングは、インターネットなどのコンピュータネットワークを経由して、コンピュータ資源をサービスの形で提供する利用形態である。

Amazon S3

Amazon S3とは、クラウド型のオブジェクトストレージサービスである。

ストレージ
ストレージとは、パソコンのデータを長期間保管しておくための補助記憶装置のことである。 主なストレージにハードディスクやDVD、CDなどがあげられる。

オブジェクトストレージ
オブジェクトストレージとは、オブジェクト(ファイルなど)単位で出し入れが可能なストレージである。各地の物理的なデータセンターに分散して保存されていることで障害に強かったり、オブジェクト単位でのバージョンを残すことが出来たりする。

バケット
バケットとは、「データの入れ物」のことである。「バケツ」のようなもので、バケットにデータを保存する。

AWSマネジメントコンソール

AWSマネジメントコンソールとは、Amazon Web Servicesを管理するためのウェブアプリケーションのことである。ホームページでは、各サービスコンソールへのアクセスを提供するだけでなく、AWS を調べたり、役立つヒントを得たりするための直感的なユーザーインターフェイスも提供している。

Amazon Athena

Amazon AthenaはAWSの分析関連サービスの1つで、S3に保存・蓄積したログに対してSQLクエリを投げて分析を行えるサービスである。分析基盤を整えたり分析サービスにログを転送したりする必要が無いため、簡単に利用できるのが特長である。


f:id:wanwan_bowbow_ilovecat:20180801213546p:plain
Amazon Athenaではじめるログ分析入門


AWS Lambda

サーバレスでプログラムを実行できる環境を提供するAWSのサービスのことを指す。サーバの運用管理費が不要になり、またLambdaの料金についても動作した時間のみに課金されるので、コスト削減が期待できる。
f:id:wanwan_bowbow_ilovecat:20180801214232j:plain
https://www.bit-drive.ne.jp/managed-cloud/column/column_14.html

システム開発の流れ

システム開発とは

業務を効率的に改善したり、従来の手法では出来なかったことを実現するためにプログラムを組んでシステムを作り上げること。


要件定義

要件定義とは、利用者がそのシステムで何がしたいのかを元に、それを実現するために実装しなければならない機能や、達成しなければならない性能などを開発者が検討して明確にすることである。まとめられた成果は「要件定義書」として文書化されることが多い。

一般的にこの段階では「何が」必要なのかを定義するに留め、それを「どのように」実現するかは後の工程で検討される。

外部設計

外部設計とは要件定義で決定した機能や性能、制約条件などを基にしてシステムの基本となる設計を行うことである。

操作画面や操作方法、データ出力など、ユーザーから見えるインターフェース部分の仕様を決定したり、セキュリティや運用規定、システム開発のスケジュールや費用などを設計したりと、基本的にユーザーに向けた仕様を設計するのが外部設計だ。

内部設計

内部設計とは、外部設計を基に、システム内部の動作や機能、物理データなど、ユーザーから見えにくい詳細な部分の設計を行うことである。

外部設計とその後に行われる詳細設計の間の工程だが、内部システムに特化しているため、詳細設計と同じ工程として扱われることもある。プログラム機能を単体に分割し、そこで使用する物理データや入出力を設計する。外部設計の結果をプログラミングしやすくするのが内部設計の役割である。

テスト

システムやソフトウェアを構築したあとに実行するテストのことである。システムやソフトウェア全体が仕様書通りにできているか、求められている機能や性能が満たされているかを確認し、システムの品質を確保するために行う。

単体テスト
単体テストとは,クラスや関数といった単位のプログラムのテストである。主に設計通りにこれらが動くかをテストし,論理構造が適切かを確認する。

  • 機能確認テスト:1つのモジュールが設計書や仕様書通りに動作することを確認するテスト。
  • 制御フローテスト:1つのモジュールが設計書や仕様書通りに動作することを確認するテスト。
  • データフローテスト:データや変数が「定義」「使用」「消滅」の順に行われているかを確認するテスト。

結合テスト
結合テストとは,単体テストで検証したプログラムを組みわせて行うテスト。

機能テスト
機能テストとは,結合したプログラムを1つの機能として行うテスト。

システムテスト
システムテストは,個々のプログラムや機能を結合したプログラムが仕様通りに動くかを検証するためのテスト。
参考:テストの種類と技法

コンピュータシステムの概要

コンピュータシステムが動作するとき、ハードウェア上ではおおよそ次のような手順が繰り返される。

①入力デバイス、あるいは、ネットワークアダプタを介してコンピュータに何らかの処理を依頼する。
②メモリ上に存在する命令を読みだしてCPUにおいて実行して、結果をメモリ上のデータを保持する領域に書き込む。
③メモリ上のデータをハードディスクやSSDなどのストレージデバイス(データを格納できるデバイス)に書き込むまたはネットワークを介して別のコンピュータに転送するまたは出力を介して人に見せる。
④①に戻る。


このような手順を繰り返して、ユーザにとって意味のある1つの処理にまとめたものをプログラムと呼ぶ。プログラムには大きく分けて次のような機能がある。

・アプリケーション:パソコンのオフィススイートや、スマートフォンタブレットにおけるアプリなど、ユーザに直接役立つもの。
ミドルウェア:多くのアプリケーションに共通した処理を括り出して、アプリケーションの実行を助ける。例えばWebサーバ、データベースシステムなど。
・OS:ハードウェアを直接操作して、アプリケーションやミドルウェアの実行に必須な機能を提供する。例えば、LinuxMac OS

プロセス

通常、OSは各種プログラムをプロセスという単位で実行する。各プログラムは、1つないし複数のプロセスから構成される。Linuxを含む多くのOSは、複数のプロセスを同時に実行できる。LInuxの重要な役割の1つに外部デバイスの操作がある。

LinuxのようなOSがない場合、様々なプロセスが独自にデバイスを操作するコードを書く必要がある。
f:id:wanwan_bowbow_ilovecat:20180731232452j:plain
Linuxでは、デバイスを操作する処理をデバイスドライバというプログラムにまとめて、プロセスからデバイスには、このデバイスを介してアクセスするようにしている。
f:id:wanwan_bowbow_ilovecat:20180731232500j:plain
あるプロセスが、バグによって、あるいはプログラマの悪意によって「デバイスにはデバイスドライバを介してアクセスする」というルールを破った場合、複数プロセスが同時にデバイス操作をするという状況が発生する。Linuxは、これを避けるためにハードウェアの助けを借りてプロセスからデバイスに直接アクセスできないようにしている。


具体的には、CPUにはカーネルモードとユーザモードという2つのモードがあって、カーネルモードで動作している時のみ、デバイスにアクセスできるようにしている。デバイスドライバカーネルモードで動作して、プロセスはユーザモードで動作する。プロセス管理システム、プロセススケジューラ、メモリ管理システムもカーネルモードで動作する。


このようなカーネルモードで動作する、OSの中核となる処理をまとめたプログラムをカーネルと呼ぶ。プロセスは、デバイスドライバを含めたカーネルが提供する機能を使いたい場合は、全てシステムコールと呼ばれる特殊な処理を介してカーネルに依頼をする。

htmlの基本

html

HTML(HyperText Markup Language)は、webページを構成する言語の一つである。コンピュータがその文書の構造を理解することで、検索エンジンがウェブページの構造を把握して解析したり、ブラウザがウェブページ内の各要素の意味を理解して閲覧しやすいように表示することなどが可能になる。

マークアップ

文書の各部分が、どのような役割を持っているのかを示すこと。 例えば、見出し・段落・表・リストなど、文書の中で各部分が果たしている役割が分かるように目印をつける。 こうした見出し・段落・表・リストなどの文書内の各部分を要素(element)と呼ぶ。

HTMLの書き方

■開始タグ〜終了タグで内容を囲む
開始タグ〜終了タグで内容を囲めば、 要素(element)の種類を指定することができる。 一部例外として、pタグやliタグなど、HTMLタグの一部には終了タグを省略しても良いとされているものもある。

ウェブページ内の各部分をどのような要素に割り当てるかによって、 タグの種類を使い分ける。また、タグは入れ子(ネスト)にすることができる。


■属性を指定する
HTMLでは、それぞれタグの種類ごとに指定できる属性の名称とその値が定義されています。 タグに属性を追加することで、要素のサイズや配置などをより詳細に指定できます。

属性を指定する際には、値を引用符("か`)で囲んで指定する。複数の属性を指定する場合には、以下の例のように半角スペースで区切って記述する。属性を記述する順序は問われない。


■要素内容を持たない空要素
HTMLの中には、brタグやimgタグのように、要素内容を持たない空要素(empty element)と呼ばれるものもある。 このような内容を持たない要素には終了タグはない。


htmlの基本構造
<!DOCTYPE html>
<html lang="ja">
    <head>
        <meta charset="UTF-8">
        <title>HTML5</title>
    </head>
    <body>
        文章の内容
    </body>
</html>



■DOCTYPE宣言
DOCTYPEの宣言とは文書がHTMLであり次にはじまるHTML文書(HTMLソース)がどのバージョンを利用して、どのDTD(文書型定義)に従って記述されているかをブラウザに伝えるためのものである。

■html要素
HTML文書のルートを表す。全ての要素はhtml要素の中に記述する必要がある。lang属性は要素内で使用されている言語(英語、日本語など)を指定する。「ja」は日本語を意味する値で、html要素内で使われている言語が日本語という意味になる。

■head要素
HTML文書自体の情報(ヘッダ)を表し、html要素の最初の要素として使用する。head要素の中にtitle要素を記述することで、HTML文章のタイトルを設定する。その他にmeta要素などをヘッダ情報として記載できる。

■metal要素
文章に関する情報(メタデータ)を表す。メタデータとは「情報についての情報」で、例えば文章のタイトルもメタデータの1つである。

■title要素
HTML文書の表題を表す。head要素の中でしか使用できず、HTML文書の中に1つ指定する。title要素の内容は、ブラウザのタイトルバーに表示される。

■body要素
文章の内容を記述する領域を表す。body要素の中は、見出し・段落・ハイパーリンクなど、文章の中身を記述する。

ドキュメントツリー

f:id:wanwan_bowbow_ilovecat:20180728174930p:plain
https://blog.codecamp.jp/html_basic


HTMLは要素の入れ子によって構成されており、これをツリー状に表したものがドキュメントツリーである。ある要素の上位にある要素を親要素、下位にある要素を子要素と呼ぶ。

「titile要素はhead要素の中でしか使用できない」のように、親子関係が必須となっている要素もある。

html文書のインデント

半角2つのスペースでインデントする。インデントにタブやタブとスペースを混合して使用しない。
Googleが推薦するHTMLとCSSのコーディング方法 | 簡単ホームページ作成支援-Detaramehp











bashについて

エイリアス

長いコマンド名を短い名前に置き換えたり、常に指定するオプションをあらかじめ設定することを可能にするのがエイリアスである。

$ alias 別名="本来のコマンド"
$ alias ll="ls -l"
$ alias rm="rm -i"

【初心者向け】エイリアスの設定方法




パーミッション

パーミッション

ファイルやディレクトリ一個一個に許可属性を与え、管理出来るようになっている。これを「パーミッション」という。それぞれ「所有者」「グループ」「その他のユーザ」にパラメータを割り振りが可能となっている。

グループ

Linuxは一つのコンピュータを複数人で使うことが前提に作られている。ユーザー一人一人のファイルごとの権限を設定していると非常に手間がかかるので、グループというユーザーの「まとめ」を作って、一括で管理できるようにしてある。

$ cat /etc/group

上記コマンドを使うと、1行に1グループの情報が、yakiniku:x:1005:Korosuke,Doraemon,Donkeyのように表示される。yakinikuがグループ名、xがパスワード(パスワード内容はセキュリティ上表示されない)、1005がグループID(GID)、Korosuke,Doraemon,Donkeyが所属メンバーの一覧を表す。


f:id:wanwan_bowbow_ilovecat:20180721171401g:plain
http://www.infraeye.com/study/linuxz26.html

パーミッションの読み方
種別 意味
- ファイル
d ディレクト
l シンボリックリンク

2文字目から4文字目はファイルやディレクトリの所有者に対する権限を表し、5文字目から7文字目はファイルやディレクトリの所有グループに対する権限を表し、8文字目から10文字目はその他に対する権限を表している。

シンボリックリンクとは、Windowsでいうところのショートカットのようなもので、ファイルや、ディレクトリを参照するファイルのことである。シンボリックリンクファイル自体は、対象ファイルまでのパスを含んだただの小さなファイルである。

ファイルへのアクセス権限
アクセス権 表記 説明
読み取り r read。ファイルへの読み取り(内容表示等)が可能
書き込み w write。ファイルへの書き込み(編集や上書きコピー等)が可能
実行 x execute。ファイルの実行(プログラムやシェルスクリプトの実行等)が可能


ディレクトリへのアクセス権限
アクセス権 表記 説明
読み取り r read。ディレクトリの読み取りが可能 (ディレクトリに登録されているファイル名の表示)
書き込み w write。ディレクトリの書き込みが可能 ( 新規ファイル作成、削除、名前変更など)
実行 x execute。ディレクトリに登録されいているファイルへのアクセスが可能


アクセス権限を変更する方法

数値を指定して変更する方法と、アルファベットで指定して変更する方法がある。後者の方法を今回は紹介する。

$ chmod 変更対象 変更方法 変更内容 対象ファイル
$ chmod u+x hoge.txt

uが変更対象、+が変更方法、xが変更内容となる。


■変更対象

変更対象 意味
u ユーザ
g グループ
o その他
a 全て



■変更方法

変更方法 意味
= 指定した権限にする
+ 指定した権限を付与する
- 指定した権限を除去する



■変更内容

変更内容 意味
r 読み取り
w 書き込み
x 実行