傾向として子供は親の食べるものを食べ、親の見るものを見る

科学的な証拠はないけどなんとなくみんなが感じていることではないかなぁと。
togetter.com

周りの大人がおいしそうに食べていたり、楽しんでいたりするものを子供も真似しようとするのは多くの人が感じているとおり。それを文字に拡張すればTogetterでまとめられているような意見になる。

手元にないので確認できないけれどもヤバい経済学に家に本があることと学力の間に相関関係があった(「家に本がある」=「親の教育水準が高い」の媒介変数)はず。当該の本の感想が書いてあるエントリーから抜粋。

次の調査。学校に本がたくさんある家の子供は、そうでない家の子供より勉強の成績が良いことが、分かった。ただし、子供によく本を読んでやっても試験の成績には関係無い。関係あるのは、親の教育水準である。つまり、親の教育水準が高いと、子供の成績も良い。言い換えれば、親が子供ににしてやれることはほとんど無い、大切なのは親が何をしてやるかではなく、親がどんな人なのかである。
ヤバい経済学、経済ではなく統計の本 - kotaの日記より)

文部科学省が公表した2008(平成20)年度全国学力・学習状況調査(全国学力テスト)の追加分析調査からの話とのこと。

高学力の子どもの保護者は、「本(雑誌や漫画を除く)を読む」「テレビのニュース番組を見る」「学校での行事に参加」などの行動を、多くしています。子どもへの接し方を見ても、「家には、本(マンガや雑誌を除く)がたくさんある」「親が言わなくても子どもは自分から勉強している」「子どもが小さいころ、絵本の読み聞かせをした」という保護者の子どもは、高学力でした。逆に、低学力層の子どもの保護者は、「ほとんど毎日、子どもに『勉強しなさい』という」「テレビのワイドショーやバラエティ番組を見る」「携帯電話でゲームをする」「カラオケに行く」などの割合が高くなっています。
高学力の子どもの保護者に特有の行動や生活スタイルが、経済力のある家庭に多く見られる、ということが、「親の年収が多いほど子どもは高学力」と言われる本当の理由なのかもしれません。要するに、お金よりも、保護者自身の行動や姿勢が子どもの学力を大きく左右する、と言えるのではないでしょうか。
学力は「親の収入」に左右されるだけなのか|ベネッセ教育情報サイトより)


友達からだって影響受けるのだから、身近にいる大人から子供が影響受けるのは当然。

 ピア効果を簡単に説明すると「人から受ける影響」です。大人である私たちも、何かと身近にいる人から影響を受けています。「類は友を呼ぶ」といいますが、「友が類になっていく」ということもあるのだということです。経済学の研究には、私たち人間が、親しい友人や家族の考え方や習慣、行動にまで影響を受けることを示したものもあります。喫煙、肥満、ゴルフの成績や、貯蓄性向に至るまで近しい人の影響を受けていることを明らかにした研究があります。
中室牧子 貧困家庭の子を支援すべき本当の理由 | 中室牧子 「学力」の経済学 | 日経DUALより)

Debian 9上でApache+PassengerでRoRの公開環境をつくる

Debian 9 "Stretch" を用いたサーバ設定メモ - 発声練習Debian 9上でrbenvをシステムワイドにインストールする - 発声練習の続き。

目的

  • 複数のRuby on Railsアプリの公開できるようにする
  • Apache + Passengerで構築する
  • iptableで不要なポートを閉じる

iptableで不要なポートを閉じる

Debian 9 "Stretch" を用いたサーバ設定メモ - 発声練習にてすでに閉じている。40080, 400081をアプリ用に公開する。/etc/iptables/rule.v4に以下を追加する。

-A INPUT -p tcp -m tcp --dport 40080 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 40081 -j ACCEPT

反映させる。

% sudo iptables-restore < /etc/rules.v4

確認する。

% sudo iptables -L | grep 400

ApacheとPassengerのインストール

Installing Passenger + Apache on Debian 9 (with APT) - Passenger LibraryにしたがってPassengerをインストールする。

Passengerをaptでインストールできるように設定する。GPG鍵の登録。

% sudo apt-get install -y dirmngr gnupg
% sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
% sudo apt-get install -y apt-transport-https ca-certificates

/etc/apt/source.listに追加する。

% sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger stretch main > /etc/apt/sources.list.d/passenger.list'
% sudo apt-get update

PassengerおよびApacheモジュールのインストール。

% sudo apt-get install -y libapache2-mod-passenger

Apacheにモジュールを付け加える。

% sudo a2enmod passenger
% sudo apache2ctl restart

正しくインストールできているかどうかを確かめる。Apacheを使う方を選ぶ。

sudo /usr/bin/passenger-config validate-install

PassengerInstanceRegistryDirを設定する。

% sudo mkdir -p /var/run/passenger-instreg

railsのソースファイルが/home/hogehoge/rails-serverとし、http://hogehoge.net/rails/でアクセスできるようにするとき、シンボリックリンクをはる。Debian8からはApacheのデフォルトが/var/www/htmlになっているのでその下に置く。

% sudo ln -s  /home/hogehoge/rails-server/public /var/www/html/rails

Apacheの設定

/etc/apache2/ports.conf に新しく開けたポートの記述を追加する。

Listen 40080
Listen 40081

ポート番号40080でアクセスする設定を/etc/apache2/sites-available/001-vhost1.confとして設定する。以下の設定ファイルでSECRET_KEY_BASEの環境変数を定義しているのは、passenger経由だとユーザディレクトリの設定ファイル(.bash_profileなど)で設定した環境変数が反映されないため(参考→tail -f pinzo.log: 本番環境での secret_key_base 設定)。

<VirtualHost *:40080>
	ServerName サーバのFQDN

	ServerAdmin 連絡先メールアドレス
	DocumentRoot /var/www/html

	ErrorLog ${APACHE_LOG_DIR}/vhost1_error.log
	CustomLog ${APACHE_LOG_DIR}/vhost2_access.log combined

	PassengerRuby /usr/local/rbenv/versions/2.4.2/bin/ruby # rbenvで導入したrubyを指定する
	PassengerInstanceRegistryDir /var/run/passenger-instreg #上述のディレクトリ
	PassengerFriendlyErrorPages off  #onにするとエラー時にログが表示される。
	
	SetEnv SECRET_KEY_BASE 「秘密鍵につかう文字列 bundle exec rails secret で生成」
	RackEnv production
	RackBaseURI /rails

</VirtualHost>

設定を反映させる。

% sudo a2ensite vhost1
% sudo systemctl reload apache2

Railsアプリを修正したとき

passengerを再起動する(参考:Restarting applications)。

% sudo passenger-config restart-app

2015年以降のインテルCPUの脆弱性チェックプログラム

やめて!
japanese.engadget.com

あるものはしょうがないので研究室の該当マシンをチェック。ただ、使い方がいまいちわからなかったのでメモ。

判定ツールの結果の解釈

判定ツールのファイルに含まれているドキュメント Intel-SA-00086_Detection_UG.pdf の9ページ表2.2を転載する。

Message(表示されるメッセージ) Meaning(意味)
Vulnerable(脆弱性あり) The detected version of the Management Engine firmware is considered vulnerable for INTEL-SA-00086.
Not Vulnerable (脆弱性なし) The system meets the “Not Vulnerable” criteria described in Identifying impacted systems using the INTEL-SA-00086 Detection Tool
Maybe Vulnerable (わからない) Tool could not communicate with the MEI/TXEI Driver. Platform vulnerability cannot be ascertained. (意訳:検出ツールがMET/TXEIドライバーにアクセスできなかった。このため、脆弱性があるのかどうか判定できなかった)
Unknown (超わからない) 意味省略

この検出ツールで困るのは、 MEI/TXEIドライバーにアクセスできなかったときに「Maybe Vulnerable」を出してくるところ。今回のCoreプロセッサーは第6~8世代(Skylake、Kaby Lake、Kaby Lake R)が対象なところ、試したのはCore i3 530(Nehalem 世代) で検出ツールを動かした結果「Maybe Vulnerable」と判定された。このため、古いPCを調べる場合は、対象のプロセッサーかどうかの判定も必要となる。

ダウンロード

Windows用でも、Linux用でもこちらのサイトからダウンロードできる。
downloadcenter.intel.com

WIndowsの場合

ダウンロードしたZIPファイルを解凍する。解凍したフォルダに移動する。さらに「DiscoveryTool.GUI」フォルダに移動する。
f:id:next49:20171124125358p:plain

以下のようなファイルがあるので「Intel-SA-00086-GUI.exe」を実行する(必要に応じて管理者権限で実行する。ファイルを選択し、右クリック「管理者として実行(A)」を選択する)。
f:id:next49:20171124125417p:plain

しばらくたつと結果が以下のように表示される。もし、「Vulnerable(脆弱性あり)」ならば、「モデル」の項に記載されているメーカーのWebサイトからファームウェアを探し、インストールする。「Not Vulnerable (脆弱性なし)」なら、問題なし。「Maybe Vulnerable (わからない)」であるならば、「プロセッサー名」の情報を参考に今回の脆弱性の対象CPUであるかどうかを調べる。たとえば、以下の例の場合はGoogleで「Core i3 530」と検索したところja.wikipedia:Intel Core i3のページが見つかり、530はNehalem 世代であるため、脆弱性対象の世代(Skylake、Kaby Lake、Kaby Lake R)ではないことが確認できた。
f:id:next49:20171124125427p:plain

Linux の場合

SA00086_Linuxtar.gzをダウンロードし、調べたいサーバに持っていく。ホームディレクトリにファイルを置いたとする。

% mkdir IntelCPUCheck
% cd IntelCPUCheck
% tar xvfz ~/SA00086_Linuxtar.gz

./documents/Intel-SA-00086_Detection_UG.pdf に説明がある。Linux版の実行にはPython 2.7が必要。pythonが存在するかどうかはwhichコマンドで確認できる(何も反応がなければpythonはインストールされていない)。pythonのバージョンは以下のように確認できる。

% which python
% python --version

ツールを実行する。

% sudo ./intel_sa00086.py

実行結果の例。

INTEL-SA-00086 Detection Tool
Copyright(C) 2017, Intel Corporation, All rights reserved

Application Version: 1.0.0.128
Scan date: 2017-11-24 03:20:37 GMT

*** Host Computer Information ***
Name:「サーバのホスト名」
Manufacturer: ASUS
Model: All Series
Processor Name: Intel(R) Xeon(R) CPU E3-1226 v3 @ 3.30GHz
OS Version: debian 8.9  (3.16.0-4-amd64)

*** Intel(R) ME Information ***
Engine: Intel(R) Management Engine
Version: 9.1.10.1005
SVN: 0

*** Risk Assessment ***
Based on the analysis performed by this tool: This system is not vulnerable.

For more information refer to the SA-00086 Detection Tool Guide or the Intel security advisory Intel-SA-00086 at the following link:
https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00086&languageid=en-fr

関連リンク

  • HPのファームウェア
    • HPのファームウェアは機器ごとに対応している様子。HP Software and Driver Downloads for HP Printers, Laptops, Desktops and More | HP® Customer Supportのページに使用しているモデルの情報を入力してドライバーのダウンロードのページへ移動し、「Driver-Chipset」→「Intel Management Engine Driver」を探す。「Detail」をクリックし、そこの説明に「Intel-SA-00086」という記載があったら、対応済みのドライバー。

Debian 9上でrbenvをシステムワイドにインストールする

Debian 9 "Stretch" を用いたサーバ設定メモ - 発声練習の続き。

gitのインストール

Debianのパッケージシステムでもgitでインストールできるようになったみたい。

% sudo aptitude install git

rbenvのインストール

CentOSでrbenvをシステムにインストールする - Qiitarbenvでsystem wideに入れるときに気をつけたいこと - Qiitaを参考にインストールする。

Githubからrbenv, ruby-build, そして rbenv-default-gemsを取得する。

% cd /usr/local
% sudo git clone https://github.com/rbenv/rbenv.git rbenv
% sudo mkdir plugins
% sudo git clone https://github.com/rbenv/ruby-build.git plugins/ruby-build
% sudo git clone https://github.com/rbenv/rbenv-default-gems.git plugins/rbenv-default-gems

rbenvの設定をログイン時を読み込むことができるように/etc/profile.d/rbenv.shを作成する。

% sudo touch /etc/profile.d/rbenv.sh
% sudo vi /etc/profile.d/rbenv.sh

中見は以下のようにした。

export RBENV_ROOT=/usr/local/rbenv
export PATH="$RBENV_ROOT/bin:$PATH"
eval "$(rbenv init --no-rehash -)"

rbenvで初期化を行う。

% sudo su
# source /etc/profile
# exit

rbenvでsystem wideに入れるときに気をつけたいこと - Qiitaでおすすめのrbenv-default-gemsを設定する。これを設定することでrubyのインストール時に合わせてインストールするべきgemライブラリを指定することができる。

% sudo touch /usr/local/rbenv/default-gems
% sudo vi  /usr/local/rbenv/default-gems

中見は以下のようにした。

bundler
pry
rbenv-rehash

rubyのインストール

rubyのコンパイルに必要なパッケージをインストールする。

% sudo apt-get install -y libssl-dev libreadline-dev zlib1g-dev

rubyのインストール

% sudo su
# source /etc/profile
# which rbenv
# rbenv install --list
# rbenv install 2.4.2
# rbenv rehash
# rbenv global 2.4.2

gemのバージョンを最新にしておく。

# gem update --system

gemパッケージをインストールする際にドキュメントをつくらないように設定する。

# touch ~/.gemrc
# vi ~/.gemrc

.gemrcの中見は以下の通り。

install: --no-document
update: --no-document

Ruby on Railsのインストール

SQLite3関連のパッケージをインストールする。

sudo apt-get install libsqlite3-dev sqlite3

Ruby on Railsをインストールする。

% sudo su
# gem install rails

動作確認をする。

% cd /tmp
% rails new demo --skip-bundle
% cd demo
% vi Gemfile

Javascriptの実行環境であるtherubyracerをコメントインする。

gem 'therubyracer'

パッケージをインストールする。

% bundle install

動かしてみる。

% rails generate scaffold person name:string age:integer
% rails db:migrate
% rails server

Debian 9 "Stretch" を用いたサーバ設定メモ

Debian 9 (stretch)を使ってサーバを構築した際のメモ。

Debian 8との変更点

net-tools (ifconfig, netstatなど)ではなくiproute2 が入っているとのこと。また、GCC6になったのでカーネルのコンパイルしなおしが必要である場合がこと。

Debian stretch で提供される GNU GCC 6 コンパイラは、デフォルトですべての実行ファイルを position independent なものとしてコンパイルします。これはあらゆる種類の脆弱性に対する緩和を提供します。

残念なことに、(8.7 までの) Debian 8 での Linux カーネルは、position independent な実行ファイルとしてコンパイルされたプログラムのうちの幾つかがセグメンテーションフォルトのような、よくある問題を起こしてクラッシュする可能性がある問題がありました。この問題は 8.8 で提供される linux バージョン (3.16.43 以降) および Debian 9 でのカーネル (4.9 以降) で解決されています。

stretch へのアップグレードを開始する前に、カーネルを修正されたバージョンにアップグレードしてから再起動するのをお勧めします。Debian 8.8 以降のカーネルを稼働させている場合は、この問題の影響を受けません。

アップグレード中、影響を受けるバージョンのカーネルで稼働している場合、アップグレード直後にこの問題が直撃するのを避けるため、再起動を実行して stretch のカーネルにするのを強くお勧めします。
5.1.5. 実行ファイルはデフォルトで PIE (position independent executables) が有効でコンパイルされています

インストール

省略。

/etc/apt/sources.list を編集する

contoribとnon-freeを追加する。また、私はaptitudeが好きなのでインストールする。

% su
# apt-get update
# apt-get upgrade
# apt-get install aptitude

セキュリティ関係の設定

そこそこセキュアなlinuxサーバーを作る - Qiitaを参考に以下を実行する。

  • sshでrootにlogin出来なくする
  • sshdのプロトコルを2に限定する
  • sshguardかfail2banを導入する
  • 使わないポートを閉じる
  • passpromptを変える
  • logwatchを入れる

passpromptを変える

まず、sudoをインストールする。

% su
# aptitude install sudo
# visudo

sudoを実行した際のパスプロンプトをそこそこセキュアなlinuxサーバーを作る - Qiitaの設定を参考に変更する。

sshdの設定の変更

/etc/ssh/sshd_configの設定をそこそこセキュアなlinuxサーバーを作る - Qiitaの設定を参考に変更する。

sshguardかfail2banを導入する

% sudo aptitude sshguard

使わないポートを閉じる

iptableを使って、使わないポートを閉じる。まず、iptables-persistentをインストールする。

% sudo aptitude  install iptables-persistent

/etc/iptablesに設置されているrules.v4を変更する。変更は以下のサイトを参考にする。

logwatchを入れる

% sudo aptitude install logwatch

Debian 8 (Jessie) - ログ解析ツール logwatch インストール! - mk-mode BLOGに従い、設定ファイルを設置する。

% cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/

logwatch.conf の「MailTo =」でログを送信したい宛先メールアドレスを設定する。

自動時刻合わせ

ntpdateをインストールする。

% sudo aptitude install ntpdate

crontabで時間合わせする。/etc/cron.weekly にスクリプトを置く。

% sudo touch /etc/cron.weekly/ntpdate.sh
% sudo chmod 755 /etc/cron.weekly/ntpdate.sh

組織内のNTPサーバがhogehoge.jpとしたとき、ntpdate.shの内容は以下の通り。

#!/bin/sh
/usr/sbin/ntpdate hogehoge.jp > /dev/null 2>&1

GCC関連のインストール

% sudo aptitude install gcc g++ make autoconf m4 bison flex