学習記録

2020-02-09に作成

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

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

PHPで
stringをarrayに変える際、区切り文字がある場合はexplodeメソッド、ない場合はstr_splitメソッドを使う。


プロを目指す人のためのRuby入門

2.12.7 require

標準ライブラリやgemを利用する場合、require構文を使う。

2.12.8 load

requireとの比較
- 何度でも読み込める。
- 拡張子を省略できない。

2.12.9 require_relative

実行ディレクトリの外に読み込む対象のファイルがある場合に使う。

3.2.1 テストコードの雛形

下記のライブラリを読み込む。

require 'minitest/autorun'

クラス名とファイル名は対応しており、ファイル名はスネークケースで書く。

minitestは「test_」で始まるメソッド名を探して実行する。

ここで扱う検証メソッドは3つのみ。
- assert_equal # 引数2つが等しければパス
- assert # 真であればパス
- refute # 偽であればパス


プロを目指す人のためのRuby入門

2.10.2 and, or, not

特徴が2つある。

  1. 優先順位の低い演算子である。
t1 = true
f1 = false
!f1 || t1       #=> true
not f1 || t1    #=> false
  1. andとorは優先順位が同じなので、左から順に評価される。
t1 = true
t2 = true
f1 = false
t1 || t2 && f1  #=> true
t1 or t2 and f1 #=> false

制御フローの例(and)

Railsチュートリアルでの使用例

redirect_to root_url and return unless FILL_IN

制御フローの例(or)

def greeting(country)
  country or return '入力してください'

2.10.3 unless文

elsifに相当するものはない。
疑問: unless文の使いどころがわからない。


プロを目指す人のためのRuby入門

2.8.4 フォーマットを指定

sprintf('%0.3f', 1.2)

または下記のようにも書ける。

'%0.3f' % 1.2

複数のオブジェクトを表示したい場合、下記のように書く。

sprintf('%0.3f %0.3f', 1.2, 0.4)

または下記のようにも書ける。

'%0.3f %0.3f' % [1.2, 0.4]

2.9.4 数値クラス

10.class    #=> Integer(過去のバージョンではBignumやFixnumクラスがあったが、2.4からはIntegerクラスにまとめられた。)
1.5.class   #=> Float

複素数や有理数

irb(main):006:0> 2r.class
=> Rational
irb(main):007:0> 2i.class
=> Complex

疑問

「1.superclass」で「Numeric」が得られることを期待したが、「undefined method `superclass'」が返ってくる。

調べたこと

Ruby: How to find superclass of an object?

> 1.class.superclass
=> Numeric
> 1.class.ancestors
=> [Integer, Numeric, Comparable, Object, Kernel, BasicObject]

プロを目指す人のためのRuby入門

ファイルエンコーディングとマジックコメント

Ruby1.9以前の場合、デフォルトエンコーディングはUS-ASCIIだった。
なので日本語をUTF-8で扱う時、下記のマジックコメントが必要になった。

# encoding: shift_jis

マジックコメントはプラグマとも呼ばれる。

2.2.1

nilや正規表現などの値は全てオブジェクトでto_sなどのメソッドを呼ぶことができる。

2.2.2

メソッドの括弧は省略できる。

2.2.3

文の区切りは改行かセミコロン、バックスラッシュ、( で表す。

2.2.4 コメント

=begin と =endで囲んでコメントを書ける。

2.2.7 リテラル

ソースコードの123や””と言った記述はリテラルという。

2.2.8

変数名はスネークケースで書く。

多重代入の使用を避ける。

c, d = 10
d #=> nil

=を複数回使うことも避ける。

a = b = 100

2.3.1 シングルクォートとダブルクォート

ダブルの場合、エスケープシーケンスを改行文字などのように解釈する。


黒田 努. Ruby on Rails 6 実践ガイド

つまずいた点

3.5.5節
ブラウザで「http://example.com:3000/」を確認したところ、エラーで"add the following to your environment configuration"が表示された。

原因

blocked_hosts.rbファイルの置き場所が間違っており、/app/configでなく/app/assets/configに配置していた。


学んだこと

phpを対話形式で動かしていたところ、「echo false」は何も表示されないことに気づいた。

$ php -a
> echo true;
1
> echo false;

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も日曜。