DeepMountain’s diary

駆け出しのITインフラエンジニアのブログです。

KaggleのSubmit方法について (2020/11)

Kaggleのチュートリアルである Titanicコンペのデータの提出方法が分からなかったのでメモしておきます。

 

1.submit.csvを作成し、ローカルにダウンロードする

2.submit.csvの中身を確認し、個人情報を削除してから Compete > (コンペ名) > Summit Prediction にてCSVファイルをアップロードする

3.順位を確認する。

 

ネットの情報ではNoteBookにSubmitのボタンがあるのだが、2020/11ではNoteBookにSubmitボタンがなかった。(あるのだが No Output File ! と怒られる)

 

以上です。

ZabbixのDBメモリ設定変更の順序

Zabbixサーバにて、ヒストリカルデータ、トレンドデータを保存するDBの設定変更を行う順序について、忘備録として記録しておきます。

 

①Zabbixサービスの停止

②Zabbixで使用しているDBサービスの停止

③DB設定ファイルの編集作業←ここでメモリの設定を変更

④Zabbixで使用しているDBサービスの開始

⑤Zabbixサービスの開始

 

上記の手順にサービスのステータス確認手順、ログ確認手順を挟む。今回使用したDBはMariaDBでしたが、どうもメモリの設定の制限があるらしかった。次にZabbixの構築を行う際は、メモリサイジングをきっちりしたい・・・

DNSの各レコードの意味と使い道について

DNS(Domain Name System)はパソコンのIPアドレスとホスト名(もしくはコンピュータ名)の対応関係を解決する仕組み。自分の中で「DNSには hostsファイルみたいにホスト名とIPアドレスが書いてるだけ」と思っていた。

今回は、DNSサーバが保持している情報(DNSレコード)について調べてまとめていく。自分の学んだメモなので間違えている点があっても悪しからず。

 

主なDNSレコード

・Zone APEXレコード:(DNS)ゾーンAPEX(エイペックス)とは、

   以下のようにサブドメインを含まないドメイン名を指す。

   example.jp (not www.example.jp)
   example.com (not www.example.com)

・Aレコード:ホスト名⇒IPアドレス の対応関係を解決

・NSレコード:上位、下位のDNSサーバのIPアドレス

   ①親となる委任元が、子となる委任先を指定する
   ②委任先で、そのゾーンの権威サーバー(権威DNSサーバー)を記述する

・CNAMEレコード:ホストの別名に対する正式名

   例:SMTPサーバを独自ドメインで使用する際に、

     本来のドメイン名と独自ドメインの対応関係を記録する

SOAレコード:ソーン内の登録データの開始マーク。

   ゾーン(ツリー上分割されているDNSの単位)内の情報が書かれている。

   ドーン内情報のリフレッシュ時間などが書かれている。

・WKSレコード:Well-known サービス

・PTRレコード:IPアドレス⇒ホスト名 の対応関係を解決

・HINFOレコード:ホストに関する追加の情報

・MINFOレコード:メールボックスメーリングリストの情報

・MXレコード:メールサーバ (Mail Exchange)

   メールアドレスと、そのメールアドレス宛てのメールを送信すべき

   メールサーバのドメイン名を登録することができる。

   例:hoge.co.jp のMXレコードを example.hoge.co.jp に指定すると

     hoge.co.jp 宛てのメールは全て example.hoge.co.jp に送信される。

・TXTレコード:テキスト文字列

・SIGレコード:セキュリティの署名

・KEYレコード:セキュリティの鍵

・GPOSレコード:地理的な位置

・AAAAレコード:ホストのIPv6アドレス

・NXTレコード:次のドメイン

SRVレコード:サーバの選択

 

 

 

SCSIとは?

SCSIについて調べたことを、ざっくりまとめました。調べていくと知らないことが芋ずる式にワラワラと・・・・

 

SCSIとは?】

Small Computer System Interface の略。 パソコンと周辺機器(ストレージとか)との接続インターフェイスのこと。パラレルとシリアルの2つの種類があったが、現在はシリアル(Serial Attached SCSI : SAS)で一本化されることになった 。

 

【(自分の知識不足により)そんな説明では理解できない!】

ここまで読んで分からない単語が「パラレル」、「シリアル」、「SAS」、ついでに「SATA」。これらの単語について更に調べてみると・・・

 

「パラレル」:パラレルデータ通信のこと。複数の端子や信号線で複数の信号を転送する方式。伝送路が多いので速度は大きくすることができるが、信号の同期が難しくなり通信品質の劣化に繋がることも。最終的に信号の同期問題で開発が断念された。

 

「シリアル」:シリアルデータ通信のこと。パラレルとは対照的に一本の端子、信号線で信号を転送する方法。信号の同期が不要、ノイズ対策、混信、干渉もしにくいといった特徴がある。長距離通信はほとんどシリアル方式である。

 

SAS」:Serial Attached SCSIの略。コンピュータ本体にストレージを接続するコネクタ、ケーブル、電気通信、通信制御の方式を定めた規格。(SATAケーブルとか自作PCを組み立てる際に聞いたことがあるかも) コンピュータとストレージを一本のケーブルで接続する。(ほかのストレージとケーブルを共有しない点がパラレル方式と異なる)仕様上は 1台のコントローラに65535台までの機器を接続することができる。(接続台数を気にしなくともよい)

 

SATA」:IDE(ATA)規格の拡張仕様の一つ。従来のATA方式はパラレルだったが、SATAにてシリアル方式に変更した。これまでのパラレルATA方式との互換性もある。現在は 6GbpsのSATA3規格が主流。

 

【さらに分からない単語が・・・】

ATA」:AT Attachmentの略。コンピュータ本体に外部記憶装置を繋いで通信するための接続方式。IDEという接続方式をアメリカのとある協会(ANSI)が ATA-1として標準化したもの。

 

今回は調べるのは、これぐらいにしておきます。(たぶん無限に出てくるので)

 

 

 

参考:

https://ja.wikipedia.org/wiki/Small_Computer_System_Interface

http://e-words.jp/w/%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB%E9%80%9A%E4%BF%A1.html

https://www.newtech.co.jp/introduce/h3/

http://e-words.jp/w/SAS-1.html

http://e-words.jp/w/ATA.html

Android Studio でのストップウオッチ作成 ( Windows環境 )

Android Studio でのストップウオッチ作成の作成手順を書き留めておきます。言語は Kotlinを使用しています。基本的に参考サイトのコピペですが、自身が再現する際に詰まった点などを書いています。

 

参考サイト

employment.en-japan.com

 

*******************************************

環境

*******************************************

エミュレータも起動させる場合は、メモリ16GBのほうが快適に作業できると思われます。

※注意: スクショのファイル名 MainActivity.java → MainActivity.kt の間違いです

 

AMD製のCPUを使用している場合は、一部のコンポーネントがインストール失敗しますが問題ないです。

 

まず新しくプロジェクトを始めると以下の画面になります。今回は Empty Activity を採用します。

f:id:DeepMountain:20191207230002p:plain

 

言語を選択できるので Kotlin を選択します。

f:id:DeepMountain:20191207230031p:plain

 

プロジェクトを開始した最初の画面

f:id:DeepMountain:20191207230036p:plain

 

今回使用するのは MainActivity.kt, activity_main.xml, string.xnml の3つのファイルのみです。f:id:DeepMountain:20191207230040p:plain

 

activity_main.xml の designタブを開き、GUIで画面の設定を行います。

f:id:DeepMountain:20191207230045p:plain

 

ID と text にそれぞれ timeText, @string/timeText を入力します。しかし、このままでは以下のように画面上の文字が@string/timeText のままです 。この文字列で時間を表示できるようしていきます。

f:id:DeepMountain:20191207230051p:plain

 

string.xml を編集していきます。デフォルトは、こんな感じです。

f:id:DeepMountain:20191207230056p:plain

 

ここに timeText に 00:00:00 の設定を入れます。ほかのボタンの設定も、ついでに入れておきます。

f:id:DeepMountain:20191207230102p:plain

 

そうすると画面に 00:00:00 と表示されます。START, STOP, RESET ボタンは「BUTTON」から同じように作成しています。

f:id:DeepMountain:20191207230106p:plain

 

しかし、このままではウィジェットの位置が設定できていないとエラーが出ます。

f:id:DeepMountain:20191207230112p:plain

 

なので START, STOP, RESET ボタンの位置調整を行います。まず STOPボタンの Layout の横方向を Fixed に変更します。

f:id:DeepMountain:20191207230118p:plain

 

上と横の距離を 32 に設定します。

f:id:DeepMountain:20191207230124p:plain

 

STARTも横方向は Fixed で画面のように設定します。(RESETも同じように設定します)

f:id:DeepMountain:20191207230129p:plain

 

次に MainActivity.ktの編集を行います。class部分のコードは参考サイトと同じです。今回は以下の import文を追加しました。

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.Handler
import android.widget.Button
import android.widget.TextView
import kotlinx.android.synthetic.main.activity_main.*

 

f:id:DeepMountain:20191207230021p:plain

 

Run > Run 'app' でアプリ起動します。エラーが出なく私の場合は以下のような表示も出ました。

f:id:DeepMountain:20191207230025p:plain

 

エミュレータを作成しておけばアプリの動作が確認できます。

f:id:DeepMountain:20191207230028p:plain

 

以上で、Android Studio でのストップウオッチ作成 ( Windows環境 ) は完了です。

 

(追記)

他のWindowsPCで同様のことを試みた際に Unresolved reference Button, TextView のエラーが出た際は、もう一度 Build することでエラーが出なくなりました。海外のサイトを見ても、もう一度 Projectを開くと直る と書かれていますが、原因までは理解できていません。

 

 

 

 

 

 

 

 

 

 

x86 (32bit) と x64 (64bit)

ソフトウェアのダウンロードの際に x64, x86 のどちらのバージョンが聞かれたことがある。
 
x64 = 64bit, x86 = 32bit ですが、「x86」が32bitである理由はインテル初の32bit CPUである 80386 の略称が「x86」だから。
この名称も文脈によって 64bit, 16bit CPUのことを指すこともあるらしく、歴史的な経緯があるので現代から見ると分かりにくい・・・・(笑)
 
ここで 32bit, 64bit CPU とは何か自分なりの理解を書く。
 
まず 32bit, 64bitとは CPUのアドレス空間を表すビット数のこと。初めて聞いたときは 32bit CPUは「32個」のアドレスしか記憶できないと勘違いしました。
しかし正しくは0と1の数字列を32個記憶できる。つまり 2^32 個のアドレス (おおよそ 4GB) を使用できます。
 
32bit CPU では ~10^9 の事象にアドレスを割り振ることができる。
しかし64bit CPUでは更に32bit CPUに比べて~10^9倍の事象にアドレスを割り振ることができ、現在のところ単一のマシンでは到底使い切れない量に設定されている。
プログラムのアドレスの使い方も32bit と 64bit の場合では、かなり異なること。現在では一般的なスマホ、PCでは 64bitのプログラムが主流であり、32bitのサポート無くなっていく傾向にあります。
 
しかし一概に64bitが良いということではなく、メモリに制限があるエッジのデバイスでは今後も使用されるかもしれません。またキャッシュの効率は32bitのほうが高い。(実行しているプロセスのアドレスは集中している方がキャッシュのヒット率が高いから)
 
 
参考:

メモリタイミングとは?

モリタイミングとは?
メモリがデータの読み書きを行う際の各動作にかかる時間(レイテンシ)のこと。
15-15-15-36 というメモリタイミングは、tCAS, tRCD, tRP, tRAS という各動作に要する「クロック数」。
 
つまり高クロックなメモリは、メモリタイミングの「時間」が小さくなりデータの読み書き速度が高速。
また同じクロックのメモリでも、メモリタイミングが小さければデータの読み書き速度が高速。
 
 
 
以下、大まかなtCAS, tRCD, tRP, tRASについての説明です。(参考:メモリ内のアドレスは、rowアドレスとcolumnアドレスの2つで決まる。)
 
tCAS (= Column Address Strobe Latency)
rowアドレス(メモリの大まかな位置)がメモリコントローラによって選択されてから、結果が返ってくるまでの時間。
最も重要なメモリに関するタイムスケールである。
 
tRCD (= Row Address to Column Delay)
メモリコントローラにrowアドレスを送信してから、読み書きを行うデータにメモリコントローラがアクセスするまでの時間。
RAMから結果を得るには、tCAS+tRCDの時間がかかる。
 
tRP (= Row Precharge Time)
メモリコントローラがrowアドレスを変更する時間。
rowアドレスが異なる場合、結果が返ってくるまで tRP+tCAS+tRCD の時間がかかる。
 
tRAS (= Row Active Time)
メモリコントローラが、一つのrowアドレスを選択している最小時間。上3つの量の総和に等しい。
tRAS =  tRP+tCAS+tRCD
 
参考:
 
 
調べてみたいこと:
・RAM内にデータはどのように格納されているのか?
・セキュリティの重要課題:「Row Hammer」を利用したGLitch攻撃