学習記録

2020-02-09に作成

個人用の学習記録。成果がなくとも毎日更新。

所有者限定モードのためこのボードには投稿できません ボードとは?

Coursera Week4 machine-learning

つまずいた点

all_theta(c, :)と書くべきところ、all_theta(c)と書いてしまった。

matrix(c, :)

c行の列を全て取得する。

matrix(c)

a=[1 2 3;4 5 6]
a =

1 2 3
4 5 6

octave:11> a(1)
ans = 1
octave:12> a(2)
ans = 4
octave:13> a(3)
ans = 2
octave:14> a(4)
ans = 5


PHP
- password_hash()、 password_verify() というパスワード用の関数がある。
- 任意精度数値での除算はbcdivを使う。無ければ、floorやnumber_formatなど他の関数を使う。https://stackoverflow.com/questions/9944001/delete-digits-after-two-decimal-points-without-rounding-the-value/9944052


LPIC対策

調べたこと

リダイレクトでアンドマーク'&'がやっていること

ポイント

  • コマンドは左から実行される
  • 「&1」は lsの標準出力先をコピーしているという意味らしい。

あずき本

11.4 DNSの設定

DNSサーバの役割はホストとIPアドレスを相互に変換すること。
これを名前解決という。
ホスト名からIPを求めることを正引き、その逆を逆引きという。

/etc/resolv.conf

参照先のDNSサーバを設定する。

/etc/nsswitch.conf

問い合わせる順番を設定する。files(/etc/hostsファイル)、dns、ldapのように書く。

getent hostsコマンド

ホスト名の一覧を取得。

/etc/systemd/resolved.conf

systemdを採用したディストリビューションでは名前解決をsystemd-resolvedサービスで行う。

サービスを有効にするコマンド
$ systemctl restart systemd-resolved.service

/etc/systemd/resolved.conf

参照先のDNSサーバを記述する。

hostコマンド

名前解決の問い合わせをする。

digコマンド

DNSへ問い合わせ、登録されている情報を詳細に表示する。


Week4

Coursera

Non-linear Hypotheses

Q. ロジスティック回帰があるのに、なぜNNを使うのか?

特徴がx_1, x_2だけであればロジスティック回帰で良い。
しかしx_1〜x_100もの数を扱うとなると、それらを二次や三次の方程式で表したx_1^3やx_1 * x_2といった特徴も扱うことになり、合計で5000以上の特徴を扱う必要が出る。
特徴が多いとオーバーフィットにつながり、また計算コストが高くなる。
この問題は画像認識を解く際、特に顕著になる。

Model Representation I

ニューラルモデル

x_0はbiasを表すが、常に1なので省略する時もある。
この講義ではθをparameterと呼ぶが、weightと呼ぶ人もいる。

次元sの計算

jがレイヤーのインデックス、sがユニットの数だとする。
下の例ではs_1=2、s_2=4となる。
1.jpg

この時のΘの次元は下記の式で求めることができる。
2.jpg
先の例に当てはめると、4*(2+1)から次元は4*3であることがわかる。


LPIC Lv1

コマ問

  • chownコマンドで所有者グループを切り替えることができる。
    .の意味はコロンと同じ
  • catコマンドは空行に行番号を付けるかどうかで、-n(-number)と-b(-number-nonblank)オプションを使い分ける。参考

LPIC あずき本

10.3.4 エイリアス

ある宛先のメールを別のメールアドレスで受け取る。
設定には2通りの方法がある。
- /etc/alieasesでエイリアスを設定する方法。
- 各ユーザに~/.forwardを用意する方法。

/etc/aliasesを使う場合

  • aliasesファイルの記述について
     root: admin, lpic
     のように書くとroot宛にメールは届かなくなる。
  • newaliasesコマンドで設定を有効にする。
     この処理ではMTAが参照するDBファイルを更新する。

~/.forwardを使う場合

  • ユーザーが各自で設定できる。

LPICあずき本

9.2 ジョブスケジューリング

定期的なジョブはcrontab、1回限りの予約はatコマンドを使う。

crontabコマンドのオプション

-e Edit
-l list
-r remove

crontabファイルは/var/spool/cron以下に置かれている。

crontabファイルのフィールド

  • 分 時 日 月 曜日 コマンド
  • *は全ての値にマッチ
  • 間隔で指定する場合、「*/2」
  • 曜日は数値と文字のどちらかで表され、0(日曜)〜6(土曜)、7も日曜。

LPIC あずき本

アクセシビリティ

スティッキーキー、ラッチ、ロック

障がいによっては複数のキーを同時に押す操作が困難。
スティッキーキーを有効にすると、別のキーを入力するまでの間、修飾キーが押されたままになる。
この状態をラッチという。
修飾キーを押したままの状態にしたい場合、連続で押すとロック状態にできる。

スローキー

キー押下を認識する時間を調整したり、キー押下に合わせてビープ音を鳴らす。

バウンスキー

同じキーを連続して押しても、入力は連続とみなさないようにする。

トグルキー

NumLockなどはキーボードのLEDランプで状態を示すが、それをビープ音でも報せる。


7.2.4 シェルスクリプトの実行環境

LPIC あずき本
- bashの引数にシェルスクリプトを指定すると、実行したシェルの子プロセス(bash)の上で実行される。
- シェルスクリプトはSUIDやSGIDでなく実行したユーザの権限で動作する。これはセキュリティ上の理由によるもの。

noteにおける個人情報の定義

https://twitter.com/HiromitsuTakagi/status/1294641521321365505
「noteのIPアドレスが個人情報に該当するのは、〜(割愛)〜個人に紐づいたデータセット内の1属性として記録されているからである。」という説明がわかりやすかった。


Javascriptのデバッグで便利だと思ったメソッド
- debugger
- JSON.stringify(dict) [New!]


LPIC
LPICあずき本

5.4.2 ファイルの検索

findコマンド

-atime access時刻
-mtime modified時刻
-exec rm {} \;のように書ける。

locateコマンド

ファイル名DBに基づいて検索を行い、findより高速。DBの更新が必要となる。

updatedbコマンド

ファイル名DBの更新。
ディストリビューションによってはcronで更新される。

調べたこと

自分の環境でもcronに設定されているのか確認しようとした。
どうやらcrontab -lで確認できるらしい。

自分の環境だと下記のように表示されたので、crontabは使ってないのだろうか

$ crontab -l
crontab: no crontab for user

ユーザーごとに設定ファイルを持つこともあるようなので-uオプションも使ってみたが、やはり設定ファイルはなさそう。
参考:crontabして何も見つからないのに設定ファイルはあるとき

$ sudo crontab -u root -l
crontab: no crontab for root

私の環境はMacなので、そもそもupdatedbがNot Foundなことに気づいた。
Macではlocate.updatedbを使うらしい

localeとlocateを見間違えた。


Laravel From Scratch

Attach and Validate Many-to-Many Inserts- EPISODE 33

ErrorException「Array to string conversion」

下記の変更前のコードは検証した結果をnew Article()メソッドに渡しているが、これだと例外が発生する。
tagsはarticlesテーブルのカラムではなく、Relation?であるためだ。
変更後のコードのように検証とインスタンス作成の処理は分ける必要がある。
変更前

        $article = new Article($this->validateArticle());

変更後

        $this->validateArticle();

        $article = new Article(request(['title', 'excerpt', 'body']));
    protected function validateArticle(): array
    {
        return request()->validate([
            'title' => 'required',
            'excerpt' => 'required',
            'body' => 'required',
            'tags' => 'exists:tags,id'
        ]);
    }

レコードの登録時に更新日時も併せて更新する

モデルの中でwithTimestampsメソッドを下記のように使う。

return $this->belongsToMany(Tag::class)->withTimestamps();

パーフェクトPHP

isset vs array_key_exists

P88
- issetが速い
- issetは値がnullの場合にfalse、array_key_existsはtrueを返す。

P91
PHPにおける式は値を持つ全てのものを指す。
例えば$var, =, 1はそれぞれを1つの式として扱う。


Attach and Validate Many-to-Many Insertsを勉強していたところエラーが出た。

エラーの事象

フォームからリクエストを送ると「Database connection [tags] not configured」というエラーが表示される。

解決

ドットとカンマを間違えていた。
Database connection [users] not configured