リンク

ラベル 勉強 の投稿を表示しています。 すべての投稿を表示
ラベル 勉強 の投稿を表示しています。 すべての投稿を表示

2020年2月21日金曜日

文字コードについて

はじめに

みなさん、こんにちは 今回題材とするものは文字コードについてとなります。

文字コード

コンピュータ内部は0と1の2進数で表現されています。
ですが、コンピュータが文字を扱うことができるのは文字の一つ一つに特定の2進数が割り当てられ文字という情報をコード化しているためです。
それでは、以下項目にて大まかに使われる文字コードを紹介していきたいと思います。

ASCⅡコード

英数字と特殊文字のみ。漢字・かなに関する規定はない
詳しくはこちら↓

シフトJISコード

ASCⅡコードと漢字・かなが混在可能で、WindowsやMacOSなどに用いられている。
詳しくはこちら↓

EUC

UNIXやLinuxなどで用いられる文字コードコード。漢字・かなが使える。
詳しくはこちら↓

UNICODE

世界の文字の多くを一つの体系で表現するコード。UTF-8は、UNICODEの符号化方式(文字の割り振り方)の一つ。
詳しくはこちら↓

2020年2月20日木曜日

キャッシュメモリとは

キャッシュメモリ

主記録装置のアクセス速度は、CPUの処理速度に比べて遅いのでCPUに待ち時間が発生してしまう。
その問題を解消するために小容量だが高速なキャッシュメモリをCPUと主記録装置の間に配置します。
主記録装置から読みだしたデータをキャッシュメモリに保持し、CPUが後で同じデータを読み出すときは高速なキャッシュメモリから読み出すことで
データ転送を高速に行うことができます。

一次キャッシュ、二次キャッシュ

主記録装置のアクセス時間とCPUの処理時間のギャップが大きい場合に一次キャッシュと二次キャッシュと多レベルのキャッシュ構成によるとより効果が上がる。
CPUがアクセスする順番によって名称がつけられ、CPUは一次キャッシュ、二次キャッシュ、主記録装置の順にアクセスします。

ライトスルー方式

キャッシュメモリにデータの書込み命令が実行されたときにキャッシュメモリと主記録装置の両方を書き換えます。
キャッシュメモリと主記録装置の内容が常に同じなので、データの一貫性(コヒーレンシ)が保たれ、制御や回路構成も簡単であり書込みの速度を上げる効果はない。

ライトバック方式

キャッシュメモリだけを書き換えておき、主記録装置の書換えはブロックの入れ替え時に行う。
主記録への書込み頻度が減り、高速に書き込むことができるがキャッシュメモリと主記録の内容は異なっていて、特殊な状況下においてはキャッシュされたデータが失われます。

2020年2月19日水曜日

SRAMとは

SRAM

フリップフロップ回路で構成され高速だが、構造が複雑で集積度を高くしにくい為DRAMに比べて小容量で効果です。
電源が供給されている限りは記録内容を保持し続けるためにリフレッシュ動作が不要となっています。



2020年2月18日火曜日

DRAMとは

DRAM

コンデンサに電荷を備えた状態か否かによって1ビットを表現している。
構造が簡単で高集積化に適している為に、SRAMよりも大容量で安価になっています。
しかし、コンデンサは放置しておくと自然放電してしまうという特性があるので、一定時間ごとに記録内容を保持するためにリフレッシュ動作(再書き込み)が必要になります。

2020年2月17日月曜日

半導体メモリとは

半導体メモリ

読み書きができるRAM(Random Access Memory)と読み出し専用のROM(Read Only Memory)に分けられます。
そして、RAMには電源を切ると記録していた内容が消える特性があり、
ROMには反対に電源を切っても記録していた内容が消えない性質があります。








2020年2月16日日曜日

GPUとは

GPU

3Dの画像処理を高速に実行する演算装置をGraphics Processing Unit (GPU)という。
数千個ものコアでデータを並列処理を行うことができます。


2020年2月15日土曜日

マルチコアプロセッサについて

マルチコアプロセッサ

一つのCPU内に複数のコアを持っています。
従来のシングルコアに比べて、消費電力を抑えながら、処理速度の高速化を図ることができます。

デュアルコア

二つのコアを持ちます

クアッドコア

四つのコアを持ちます

2020年2月14日金曜日

パイプライン処理について

パイプライン処理

命令実行サイクルの各段階を並行して実行することによって、処理効率を上昇させる方式のこと
パイプライン処理では、分岐命令が現れるとそれまで先読みしていた命令を破棄し、新たに分岐先の命令を実行しなくてはならない
処理の順序が乱れることをパイプラインハザードともいいます。

使用される技術例

分岐予測

実行される確率の高い方を予測する方法

投機実行

予測した分岐先の命令を開始して結果を保持し、分岐先があだしければその結果を利用する方法


2020年2月13日木曜日

逐次制御方式について

逐次制御方式

命令の実行は、「命令フィッチ」「命令の解読」「実行アドレス計算」「オペランド読出」「命令の実行」「演算結果収納」の順にサイクルが行われています。
命令の実行サイクル単位で、1命令ずつ順番に繰り返し実行する方式のことをいいます。

2020年2月12日水曜日

アドレス指定とは

アドレス指定

命令の実行時には、色々なアドレス指定方式を使って実効アドレス(または、有効アドレスとも言いますが)を計算します。

実効アドレス

処理対象となるデータが、実際に格納されている主記録装置上のアドレスのこと

即値アドレス指定

命令のアドレス部にデータそのものを格納する方式のこと

直接アドレス指定

命令のアドレス部の値を実行アドレスとする方式のこと

関節アドレス指定

命令のアドレス部に実行アドレスを格納しているアドレスを格納する方式のこと

相対アドレス指定

命令のアドレス部の値と命令アドレスレジスタの値を加算し、実行アドレスとする方式のこと

インデックスアドレス指定

命令のアドレス部の値とインデックスレジスタの値を加算し、実行アドレスとする方式のこと

ベースアドレス指定

命令のアドレス部の値とベースレジスタの値を加算し、実行アドレスとする方式のこと






2020年2月11日火曜日

命令語について

命令語

プログラムはコンピュータが行わせる命令が集まったものです。
プログラム言語で書かれたプログラムは、最終的にコンピュータが理解できる1と0だけで構成された機械語に変換され、解読の後に実行されます。
機械語の命令語は、「命令部」と「アドレス部」で構成がされている。
だが命令の種類によってアドレス部がないものやアドレス部が複数あるものもあったりする。









2020年2月10日月曜日

AWS ストレージとデータベース

はじめに

今回は、AWSのストレージとデータベースについて投稿していきたいと思います。

ストレージ

AWSのストレージには、大きく分けると二つに分類できます。
・サーバ自身からしかアクセスできないもの
・複数のサーバからアクセスできるもの
に分かれます。
さて、では上記の二つに分かれるものがAWSではどんなものになるのかを紹介します。

Amazon Elastic Block Store(EBS)

さきほどの二つのうちの一つですが、サーバ自身からしかアクセスができないものとなります。
特徴
・一貫性のある低レイテンシーのパフォーマンスを提供することができる永続的なブロックレベルのストレージボリュームです。
・アベイラビリティーゾーン内で自動的にレプリケートできます。
・Amazon S3にスナップショットを保存することができます。

使用例
・OSのブートドライブとして使用する。
Cドライブのような使い方ができる。

ボリュームタイプ
コールドHDDスループット最適化HDD汎用SSDプロビジョンドIOPS SSD
最大ボリュームサイズ16TiB16TiB16TiB16TiB
最大IOPS/ボリューム25050010,00032,000
最大スループット/ボリューム250MiB/秒500MiB/秒160MiB/秒500MiB/秒
ユースケース高いシーケンシャル I/Oを伴うワークロード高いシーケンシャル I/Oを伴うワークロード・ブートボリューム
・小規模から中規模のDB
・開発/テスト環境
・大量のI/Oが必要なワークロード
・リレーショナルDB
・NoSQL DB

ボリュームの特徴
暗号化
暗号化されたEBSボリューム
追加コストなし
伸縮性
キャパシティーの追加
別のタイプへの変更
可用性
耐久性があり自動的にレプリケート
ドライブタイプ
ニーズに最適なストレージ
HDDまたはSSD
パフォーマンス要件と価格要件
スナップショット
ポイントインタイムスナップショット
新しいボリュームをいつでも再作成

Amazon Simple Storage Service (S3)

概念
S3はデータがオブジェクトとしてバケットに保存されます。
オブジェクトは、ファイルとそのファイルについて説明する任意(省略が可能です)のメタデータで構成されます。
アカウントあたり最大100のバケットを所有できます。
バケットとそのオブジェクトのアクセスを制御できます。

特徴
HTTP(s)でアクセス
PUT/GWT,その他メソッドでのアクセス

容量無制限
1ファイル最大5TBまで保存できます。

高い堅牢性
99.999999999%の可用性を保ちます。(イレブン・ナインとも言ったりします。)

安価なストレージ
月額1GB/約3円(月額0.025UD)という安さ

スケーラブルで安定した性能
データ容量に依存しない性能

バケットについて
オブジェクトキー
オブジェクトキーとは、バケット内のオブジェクトが持っている一意の識別子のことを言います。
例: 文字色-黄色 バケット,赤色 オブジェクトキー
・仮想ホスト形式のURL
http://doc.s3.amazonaws.com/xxxx-xx-xx/AmazonS3.html
・パス形式のURL
https://s3-ap-northeast-1.amazonaws.com/doc/xxxx-xx-xx/AmazonS3.html

データベース

こちらが二つ目の複数のサーバからアクセスできるものとなります。

マネージドデータベースサービス一覧

Amazon RDS
完全マネージド型で、セットアップや運用、拡張が容易なリレーショナル・データベースサービスのことを言います。

Amazon DynamoDB
完全マネージド型で、高速なパフォーマンスやシームレスな拡張性と信頼性をNoSQLサービスのことを言います。

Amazon Redshift
高速で管理も万全なペタバイト規模のデータウェアハウスサービスのことを言います。

Amazon ElastiCache
完全マネージド型で、セットアップや運用、拡張が容易なキャッシュサービスのことを言います。

Amazon relational Database Service(RDS)

特徴
フルマネージドなリレーショナルデータベース
シンプルかつ迅速にスケールすることができる
高速で安定したパフォーマンス
低コストで従量課金制

使用可能SQLツール
Amazon Aurora
ORACLE
Microsoft SQL Server
MySQL
PostgreSQL
MariaDB

バックアップ方法
自動バックアップ
データベースを特定時点まで復元する
デフォルトで有効
最大35日間までの保持期間を選択できる

手動スナップショット
スナップショットから新しいデータベースインスタンスを作成できる
ユーザーによって開始される
ユーザーによって削除されるまで持続される
Amazon S3に保存される

2020年2月7日金曜日

IOPSとは

IOPS

ハードディスクなどの記録装置の性能指数の一つであり、ある条件の下で一秒間に読込・書込みできる回数のことを言います。

特徴

ディスクが1秒当たりに処理できるI/Oアクセスの数
書き込み(追加/更新/削除)清野はIOPSの影響をうけやすい
読込性能はキャッシュに乗る前の初回アクセスが影響を受けやすい
データ転送を一度にまとめて行う場合は影響を受けにくい
データ転送をk眞覚分割して行う場合は影響を受けやすい






2020年2月6日木曜日

レプリケートについて

レプリケート

あるコンピュータやソフトウェアの管理するデータ集合の複製(レプリカ)を別のコンピュータ上に作成して通信ネットワークを使ってリアルタイムに更新を反映させてデータを同期することを言います。

バックアップとの違い

バックアップもデータの複製を取得するという意味としては同じですが通常は複製されるのはデータのみで複製先のシステムが複製元の代用として使用することはできなく、リアルタイムに内容を同期するという運用も一般的ではないです。

ただし、ある瞬間の状態を記録したスナップショットを作成したり、過去の様々な時点における複製を作成する世代管理によって特定の時点に遡れるようにするのはレプリケートにはできない機能です。








2020年2月5日水曜日

スナップショットについて

スナップショット

スナップショットとは、ある時点でのソースコードやファイル、ディレクトリ、データベースファイルなどの情報を抜き出したもののことを言います。

バックアップをする際に、バックアップをしているときにファイルが更新されるとファイルやディレクトリに不整合が起こってしまいます。これを防ぐために使用されるのがスナップショットと言います。ある時点での状態を統一的に保持しているので、バックアップ時の時間的な不整合を防ぐことができます。

ソフトウェア編

ソフトウェア開発やプログラミングの分野では、開発中のソフトウェアについてある時点におけるソフトウェアを超す英するプログラムコードや関連するデータなどのまとまりのことです。
バージョン番号などが付与され正式に利用者向けに提供されるリリースとは異なり、主に開発者や熟練利用者向けにある日時における最新の状態を共有するために作成・提供されたりします。

画像編

ある瞬間の画像全体やソフトウェアの表示状態を画像として保存した画面キャプチャだったりスナップショットのことを言います。







2020年2月4日火曜日

レイテンシーについて

レイテンシー

データの要求を行ってから、そのデータが返ってくるまでにかかる時間のことを言います。
メモリーのデータ読み出しにかかる時間だったり、ネットワークで情報を受け取るまでの時間を言います。

ゲームに例えると

さて、このレイテンシーをゲームに例えるならば「遅延」というのが正しいですかな。
主に足音だったり対戦相手との対戦中に敵に弾が当たらない..とかいう感じのことですね。

単位

レイテンシーの単位としては、「ms(ミリ秒」が使われます。
簡単に言うと1秒の1000分の1のことですね。
ゲーミングモニターを持っている人はこの辺を気にしながら購入をしたことがあるのではないでしょうか。




2020年2月3日月曜日

補助記憶装置とは

補助記憶装置

CPUが直接読み書き出るので、主記憶装置上にあるプログラムやデータだけ。
しかし、主記憶装置は小容量で電源が切れると記憶内容が消えてしまうという揮発性の特徴がある。
一般的に、補助記憶装置は、主記憶装置に比べてアクセス速度は遅いが、大容量で安価、電源が切れても記憶内容が消えない不揮発性の特徴を持っている。

情報量を表す接続語

はじめに


こんにちは、今回は今まで投稿していたものとは少し趣向が違うのですがIT関連の記事を書いていこうかと思います。
まあ、自分の知識面の定着のためのアウトプットを行いたかったのでここに投稿をしていきたいと思います。
各内容としては、基本となるITの単語やらLinux等を書いていきたいと思います。

情報量を表す接続語

コンピュータが扱う情報量は年々膨大な数になっているのはまあ、最近はだれでもわかっていると思う。
そのための単位として俺が生まれていない頃はB(バイト)やらk(キロ)などの単位が主に使われていたみたいだがだんだんと
それでは追いつかない状態が来たためにM(メガ)、G(ギガ)、T(テラ)を使われるようになった。

B(バイト)

B(バイト)は、ビット(bit)を8個集めたものを一つとして表現する際に使用するバイト(Byte)という単位として表現できるもの。

K(キロ)

K(キロ)は、B(バイト)が1,024個集めたものを一つとして表現する際に使います。
例:
1,024 B → 1 KB

M(メガ)

M(メガ)は、K(バイト)が1,024個集めたものを一つとして表現する際に使います。
例:
1,048,576 B → 1,024 KB → 1MB

G(ギガ)

G(ギガ)は、M(メガ)が1,024個集めたものを一つとして表現する際に使います。
例:
1,073,741,824 B → 1,048,576 KB → 1,024 MB → 1GB

T(テラ)

T(テラ)は、G(ギガ)がが1,024個集めたものを一つとして表現する際に使います。
例:
1,099,511,627,776 B → 1,073,741,824 KB → 1,048,576 MB → 1,024 GB → 1TB

2019年11月9日土曜日

DRAMとは

DRAM

コンデンサに電荷を備えた状態か否かによって1ビットを表現している。
構造が簡単で高集積化に適している為に、SRAMよりも大容量で安価になっています。
しかし、コンデンサは放置しておくと自然放電してしまうという特性があるので、一定時間ごとに記録内容を保持するためにリフレッシュ動作(再書き込み)が必要になります。

2019年8月15日木曜日

【GCP】Google Cloud Platform でMinecraftマルチサーバーを立てる方法

0. はじめに



今回は、google Cloud Platform内のGoogle Compute Engineを使用して
Minecraftマルチサーバーを立ち上げたいと思います。

1. Google Cloud Platformにアカウント作成



以下リンクへ飛び、「GCP 無料トライアル」を選択する。
リンク:https://cloud.google.com/?hl=ja


利用規約等を入力してどんどこ進んでください。

最後に「無料トライアルを開始」を選択して作成完了となります。

※画像の右にある通り、無料トライアル期間が過ぎても自動で請求することはないので
安心して使えるかなと思います。


2. Google Cloud Platformのダッシュボードへ移動



作成が完了しましたら、「コンソールに移動」を選択する。


3. インスタンス作成



コンソール画面の左上にある「≡」を選択し、「Compute Engine」→
「VMインスタンス」を選択する。


VMインスタンスから「作成」を選択する。


名前:任意(まあ、minecraftとかわかりやすいのでいいんじゃないかな)
リージョン:us-west1(オレゴン)
ゾーン:us-west1-b
マシン構成:f1-micro(1 vCPU、 614MBメモリ)
ブートディスク:Debian GNU/Linux 9 (stretch) 30GB
ファイアウォール:HTTPおよびHTTPS トラフィックを許可する

を選択後し、ネットワークを選択する



ネットワーク インターフェース内の外部IPをクリックし、「IPアドレスを作成」を選択する



名前:任意

を入力後、「予約」を選択する。



以上を選択後、「作成」を選択する。

4. SSH設定



・ポート変更

「メニュー」→「VPCネットワーク」→「ファイアウォールルール」を選択



「ファイアウォール ルールを作成」を選択



一例
・サーバー用

名前:allow40022-server
ターゲット タグ:allow40022-server
ソースIPの範囲:0.0.0.0/0
TCP:40022

・Minecraft用

名前:maincraft
ターゲット タグ:maincraft
ソースIPの範囲:0.0.0.0/0
TCP:25565

を設定後、「作成」を選択する。



・サーバーへ適応

先ほど作成した設定をインスタンスに紐づけします。

「メニュー」→「Compute Engine」→「VMインスタンス」を選択し、
先ほど作成したインスタンスを選択し、「編集」を選択する。


先ほど作成した設定名を「ネットワーク タグ」へ追加設定し、保存を選択する。


・sshd_configのポート番号設定変更

「メニュー」→「Compute Engine」→「VMインスタンス」を選択し、「SSH」を選択する。


黒い画面が新しく表示されると思うので、そこで以下コマンドを実行する。

# vi /etc/ssh/sshd_config

#Port 22というところの下に以下を追加
Port 40022

※入力ができない!!という人がいたら、「Esc」を押しそのあと入力を行いたい場所で「a」を押す。
※終了できない!!という人がいたら、「Esc」を押しそのあと「:wq」を押す。
※「:wa」を押したときに、「E45: 'readonly' option is set (add 1 to override)」が
出た場合は、ユーザに権限が足りないので一度「Esc」→「:q!」を押し、以下コマンドを実行

# sudo su

実行後、再度 viコマンドから始める。

その後、以下コマンド実行

# systemctl restart sshd

設定したポートでsshができるかを確認する。

「SSH」→「ブラウザ ウィンドウでカスタムポートを開く」

ポート:40022

を設定後、開くを押しコンソールへログインできることを確認する。



・ポート22番を閉じる

「VPCネットワーク」→「ファイアウォール ルール」を選択する。


「ファイアウォール ルールの作成」を選択し、今度は22ポートを閉じるものを作成する。

名前:disallow22-server
一致した時のアクション:拒否
ターゲット タグ:disallow22-server
ソースIPの範囲:0.0.0.0/0
指定したプロトコルとポート:tcp:22

を設定し、「作成」を押す。
作成したものを、インスタンスへ追加します。
追加後、ポート22でssh接続ができないことを確認。

5. minecraftマルチサーバー導入



・javaインストール

# apt-get install default-jdk

# java -version

java versionで1.8が表示されることを確認

・screenインストール

# apt-get install screen

・Minecraftインストールディレクトリ作成
Minecraftマルチサーバーをインストールするディレクトリを作成する。
お好みで場所変更してください。

# mkdir ~/minecraft

# cd ~/minecraft

・Minecraftマルチサーバーインストール

# wget https://s3.amazonaws.com/Minecraft.Download/versions/1.12.2/minecraft_server.1.12.2.jar

・Minecraftマルチサーバー(バニラ)を起動

# java -Xms600M -Xmx600M -jar minecraft_server.1.12.2.jar nogui

起動後、規約を承認するため以下を変更する。

# vi eula.txt

変更前:eula=false
変更後:eula=true

再度起動する。

# java -Xms600M -Xmx600M -jar minecraft_server.1.12.2.jar nogui

ここまでで、Minecraftマルチサーバーバニラ版は作成完了です。

ここからはmod関連になります。

6. forge導入



・installerをDL

# wget https://files.minecraftforge.net/maven/net/minecraftforge/forge/1.12.2-14.23.5.2768/forge-1.12.2-14.23.5.2768-installer.jar

・universalをDl

# wget https://files.minecraftforge.net/maven/net/minecraftforge/forge/1.12.2-14.23.5.2768/forge-1.12.2-14.23.5.2768-universal.jar

・forgeサーバをインストール

# java -jar ./forge-1.12.2-14.23.5.2768-installer.jar nogui --installServer

・forgeサーバを起動

# java -Xms600M -Xmx600M -jar forge-1.12.2-14.23.5.2768-universal.jar nogui

■参考リンク


・https://qiita.com/ryuta69/items/dbb0db5cf7099b7a7cc4
・https://qiita.com/riku-shiru/items/a870edd9dc0b132e092c