ラブライブ!OP曲を(株)白ヤギさんのテキスト要約にかけてみた
ラブライブ!OP曲を(株)白ヤギさんのテキスト要約にかけてみた
つい先日、株式会社 白ヤギコーポレーションさんにて「自動要約サービス」が公開されました。
Webスクレイピング勉強会への参加で、自然言語処理に興味が湧いてきており、さっそくこのサービスを試してみました。
- 自動要約サービス(株式会社 白ヤギコーポレーション)
ラブライブ!OP曲をテキスト要約してみる
要約の元になるテキストとして、アニメ版ラブライブ!のOP曲を用いてみました(いずれも名曲です)。
結果は以下となりました。要約結果を自分のなかで予想したものと並べてみます。
「僕らは今のなかで」の要約結果
予想 |
|
結果 | (歌詞が丸ごと返ってきた) |
「それは僕たちの奇跡」の要約結果
予想 |
|
結果 | (歌詞が丸ごと返ってきた) |
歌詞が丸ごと要約結果として返されます。これは当たり前の結果であり、『要約』は文書内の重要な部分を抽出するものであるからして、ラブライブ!の歌詞は一字一句無駄は無いと言えるのです!(キリッ
……ではなく、少し考えてみると、歌詞というものは想いのたけをそのまま文字にしているので、論理的な構成を見つけ出して抽出する要約には不向きな文章と言えるのだと思います。
「フランドン農学校の豚」を要約してみる
今度は歌詞ではなく、宮沢賢治の「フランドン農学校の豚」を要約してみましょう。
要約結果は以下となります。みごとに要約されています。
- フランドン農学校の豚宮沢賢治〔冒頭原稿一枚?なし〕以外の物質は、みなすべて、よくこれを摂取(せっしゅ)して、脂肪(しぼう)若(もし)くは蛋白質(たんぱくしつ)となし、その体内に蓄積(ちくせき)す。
- 」とこう書いてあったから、農学校の畜産(ちくさん)の、助手や又(また)小使などは金石でないものならばどんなものでも片(かた)っ端(ぱし)から、持って来てほうり出したのだ。
- というわけはその晩方、化学を習った一年生の、生徒が、自分の前に来ていかにも不思議そうにして、豚のからだを眺(なが)めて居た。
- 豚の方でも時々は、あの小さなそら豆形(まめがた)の怒(おこ)ったような眼(め)をあげて、そちらをちらちら見ていたのだ。
- ところが次の日のこと、畜産学の教師が又やって来て例の、水色の上着を着た、顔の赤い助手といつものするどい眼付して、じっと豚の頭から、耳から背中から尻尾(しっぽ)まで、まるでまるで食い込むように眺めてから、尖(とが)った指を一本立てて、「毎日阿麻仁(あまに)をやってあるかね。
まとめ
ラブライブ!OP曲をテキスト要約にかけてみました。あまり論理的な構成になっているとは言えない歌の歌詞のようなものは、機械的な要約に向かないようです。これを逆手に取って、自分の書いた文章の要約結果から文章の良し悪しを判定できたりもするのかなと思いました。
「第2回Webスクレイピング勉強会@東京」に参加してきました
「第2回Webスクレイピング勉強会@東京」に参加してきました
第2回Webスクレイピング勉強会@東京に参加し、お手軽に未知語を探すアイディアについて発表してきました。
発表してきた内容
前回に引き続き、今回の勉強会でも発表させていただきました。発表資料は以下のURLにて公開しています。
発表内容はGoogleサジェストで得られた単語をChasen(形態素解析器)にかけ、未知語の場合はChasen辞書の登録エントリを作成する、というものです。
Googleサジェスト結果からChasen辞書を作成するスクリプト
発表時はデモの実演ができませんでしたが、作成したスクリプトをGitHubで公開しています。シェルスクリプトで作成しており、Chasenとwgetがインストールされている環境であれば動作するかと思います。
(自分の環境ではNetBSD-6.1-i386にて動作確認が取れています)
- suggest2chadic.sh
以下のような実行結果を得られます。
$ ./suggest2chadic.sh きるみ (品詞 (名詞 一般)) ((見出し語 (キルミーダンス 3641)) (読み キルミーダンス) (発音 キルミーダンス)) (品詞 (名詞 一般)) ((見出し語 (キルミーベイベー 3641)) (読み キルミーベイベー) (発音 キルミーベイベー))
まとめ
第2回Webスクレイピング勉強会@東京にて発表してきました。この勉強会は全3回の予定となっており、次回が最終回となるようです。Webスクレイピング勉強会 Season 2が決定したり、この勉強会での知見を活かした発展的な勉強会が開催されるとイイなと思いつつ、次回も楽しみにしています。
CentOS 7.0でDockerを動かしてみた
CentOS 7.0でDockerを動かしてみた
先日開催された第2回東京SoftLayer勉強会で『SoftLayerでDockerを使ってみた』という発表があり、Dockerのインストールから使い方までの手順が解説されていました。
個人的にDockerを試してみたいということもあり、さっそく解説されていた手順を参考にDockerを動かしてみました。勉強会ではCentOS 6系向けの手順となっていましたが、私の方ではCentOS 7系で試してみました。
CentOS 7.0のセットアップ
GUI等は使用しないので、minimalインストールの状態からDocker環境を構築していきます。以下はインストール後にsshログインが行えるようになるまでの手順です。
SELinuxの無効化
/etc/selinux/configを以下のように修正し、SELinuxを無効化します。
--- config.orig 2014-07-29 11:24:02.949653548 +0900 +++ config 2014-07-29 11:24:09.957653412 +0900 @@ -4,7 +4,7 @@ # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. -SELINUX=enforcing +SELINUX=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected.
grub.cfgの設定
起動時のコンソールログを見えるようにしておきたいので、/boot/grub2/grub.cfgを以下のように修正します。ついでにLANGもen_US.UTF-8に変更しておきます。
--- grub.cfg.orig 2014-07-29 11:24:18.721653243 +0900 +++ grub.cfg 2014-07-29 11:24:38.572652858 +0900 @@ -81,7 +81,7 @@ else search --no-floppy --fs-uuid --set=root dd4521d9-ca1c-462b-b353-2ba57bf4fc61 fi - linux16 /boot/vmlinuz-3.10.0-123.el7.x86_64 root=UUID=dd4521d9-ca1c-462b-b353-2ba57bf4fc61 ro vconsole.keymap=us crashkernel=auto vconsole.font=latarcyrheb-sun16 rhgb quiet LANG=ja_JP.UTF-8 + linux16 /boot/vmlinuz-3.10.0-123.el7.x86_64 root=UUID=dd4521d9-ca1c-462b-b353-2ba57bf4fc61 ro vconsole.keymap=us crashkernel=auto vconsole.font=latarcyrheb-sun16 LANG=en_US.UTF-8 initrd16 /boot/initramfs-3.10.0-123.el7.x86_64.img } menuentry 'CentOS Linux, with Linux 0-rescue-6764668114ff4741a8994286ae140fdd' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-6764668114ff4741a8994286ae140fdd-advanced-dd4521d9-ca1c-462b-b353-2ba57bf4fc61' { @@ -95,7 +95,7 @@ else search --no-floppy --fs-uuid --set=root dd4521d9-ca1c-462b-b353-2ba57bf4fc61 fi - linux16 /boot/vmlinuz-0-rescue-6764668114ff4741a8994286ae140fdd root=UUID=dd4521d9-ca1c-462b-b353-2ba57bf4fc61 ro vconsole.keymap=us crashkernel=auto vconsole.font=latarcyrheb-sun16 rhgb quiet + linux16 /boot/vmlinuz-0-rescue-6764668114ff4741a8994286ae140fdd root=UUID=dd4521d9-ca1c-462b-b353-2ba57bf4fc61 ro vconsole.keymap=us crashkernel=auto vconsole.font=latarcyrheb-sun16 initrd16 /boot/initramfs-0-rescue-6764668114ff4741a8994286ae140fdd.img } if [ "x$default" = 'CentOS Linux, with Linux 3.10.0-123.el7.x86_64' ]; then default='Advanced options for CentOS Linux>CentOS Linux, with Linux 3.10.0-123.el7.x86_64'; fi;
ホスト名の設定
以下の手順でホスト名を設定します。
# echo dockertest.furandon.net > /etc/hostname
固定IPアドレスの設定
DHCPよりも固定IPアドレスの方が作業しやすいため、Arch Wikiの『固定IPアドレス』を参考にしながら設定します。
/etc/conf.d/network@enp0s3にIPアドレス等を記述します。/etc/conf.dディレクトリは存在しないので予め作成しておきます。
# mkdir /etc/conf.d # touch /etc/conf.d/enp0s3
/etc/conf.d/network@enp0s3の中身は以下の通りです。
address=192.168.0.232 netmask=24 broadcast=192.168.0.255 gateway=192.168.0.1
/etc/systemd/system/network@.serviceにsystemdのユニットファイルを作成します。
(Arch Wikiの内容を参考に作成しています)
Arch Wikiの/etc/systemd/system/network@.service中でipコマンドが/usr/bin/ipでフルパス指定されていますが、CentOS-7では/sbin/ipとパスが異なるので注意してください。
[Unit] Description=Network connectivity (%i) Wants=network.target Before=network.target BindsTo=sys-subsystem-net-devices-%i.device After=sys-subsystem-net-devices-%i.device [Service] Type=oneshot RemainAfterExit=yes EnvironmentFile=/etc/conf.d/network@%i ExecStart=/sbin/ip link set dev %i up ExecStart=/sbin/ip addr add ${address}/${netmask} broadcast ${broadcast} dev %i ExecStart=/bin/sh -c 'test -n ${gateway} && /sbin/ip route add default via ${gateway}' ExecStop=/sbin/ip addr flush dev %i ExecStop=/sbin/ip link set dev %i down [Install] WantedBy=multi-user.target
サービスを有効化します。
# systemctl enable network@enp0s3.service
/etc/resolv.confの設定
インストール時にrpmパッケージのインストール等でネットワーク設定が行われており、/etc/resolv.confには(DHCPでのIPアドレス取得による)nameserver設定が入っています。固定IPアドレスでも同じnameserver設定を利用するため、この段階での設定変更は不要です。
LANGの設定
/etc/locale.confでLANGをen_US.UTF-8に設定します。
(日本語のままでいいよ、という場合はこの手順をスキップしてください)
--- locale.conf.orig 2014-07-29 11:24:55.014652540 +0900 +++ locale.conf 2014-07-29 11:25:01.258652419 +0900 @@ -1 +1 @@ -LANG="ja_JP.UTF-8" +LANG="en_US.UTF-8"
不要なサービスの停止
Dockerを試す用途では不要と思われるサービスを停止します。
$ sudo systemctl disable avahi-daemon.service $ sudo systemctl disable dbus-org.fedoraproject.FirewallD1.service $ sudo systemctl disable dbus-org.freedesktop.Avahi.service $ sudo systemctl disable dbus-org.freedesktop.NetworkManager.service $ sudo systemctl disable dbus-org.freedesktop.nm-dispatcher.service $ sudo systemctl disable NetworkManager-dispatcher.service $ sudo systemctl disable NetworkManager.service $ sudo systemctl disable postfix.service $ sudo systemctl disable tuned.service $ sudo systemctl disable avahi-daemon.socket
ユーザの追加
作業用のユーザを追加します。
$ sudo useradd -g users -G wheel -m -s /bin/bash fpig $ sudo passwd fpig
再起動
ここで一旦再起動します。再起動後、固定IPアドレスが付与されているか等の確認をおこないます。
$ sudo shutdown -r now
ここまでで最低限の設定は完了し、sshでログインできる状態になっています。
以降はsshログインした状態での作業となります。
Dockerを試してみる
dockerのインストール
docker.x86_64というパッケージが提供されているので、これをインストールします。
$ yum search docker ... docker-registry.noarch : Registry server for Docker docker.x86_64 : Automates deployment of containerized applications $ sudo yum install docker
勉強会で例示されていたCentOS 6系の環境では、EPELからDockerをインストールしていましたが、CentOS 7系の環境ではベースリポジトリにDockerパッケージが含まれていました。
$ rpm -qa | grep docker docker-0.11.1-22.el7.centos.x86_64 $ yum provides docker ... docker-0.11.1-19.el7.centos.x86_64 : Automates deployment of containerized : applications Repo : extras $ grep -A5 '^\[extras' /etc/yum.repos.d/CentOS-Base.repo [extras] name=CentOS-$releasever - Extras mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras #baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Dockerサービスを有効化します。DockerパッケージにSystemdのユニットファイルが同梱されているので、これを利用します。
$ rpm -ql docker-0.11.1-22.el7.centos.x86_64 | grep systemd /usr/lib/systemd/system/docker.service $ sudo systemctl enable docker.service ln -s '/usr/lib/systemd/system/docker.service' '/etc/systemd/system/multi-user.target.wants/docker.service' $ systemctl list-unit-files | grep docker docker.service enabled
上記設定は再起動してから有効になるので、ここでは手動でdocker.serviceを起動します。
$ sudo systemctl start docker.service
さっそくdockerコマンドを使ってみます。
$ sudo docker version Client version: 0.11.1-dev Client API version: 1.12 Go version (client): go1.2 Git commit (client): 02d20af/0.11.1 Server version: 0.11.1-dev Server API version: 1.12 Go version (server): go1.2 Git commit (server): 02d20af/0.11.1
Dockerイメージのダウンロード
手元でDockerイメージを作るところまで試してみたかったのですが、まだ使い始めたばかりということもあり、既存のDockerイメージファイルを使ってみることにしました。
$ sudo docker pull ubuntu
しばらく待つとUbuntuのイメージファイルが手元にダウンロードされます。使用可能なイメージはdocker imageで確認できます。
$ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ubuntu 14.04 ba5877dc9bec 7 days ago 192.7 MB ubuntu trusty ba5877dc9bec 7 days ago 192.7 MB ubuntu latest ba5877dc9bec 7 days ago 192.7 MB ubuntu precise b9e56c8f2cf5 7 days ago 103.8 MB ubuntu 12.04 b9e56c8f2cf5 7 days ago 103.8 MB ubuntu 14.10 6ef6f1a66de1 7 days ago 194.1 MB ubuntu utopic 6ef6f1a66de1 7 days ago 194.1 MB ubuntu 12.10 c5881f11ded9 5 weeks ago 172.1 MB ubuntu quantal c5881f11ded9 5 weeks ago 172.1 MB ubuntu 13.04 463ff6be4238 5 weeks ago 169.4 MB ubuntu raring 463ff6be4238 5 weeks ago 169.4 MB ubuntu 13.10 195eb90b5349 5 weeks ago 184.6 MB ubuntu saucy 195eb90b5349 5 weeks ago 184.6 MB ubuntu 10.04 3db9c44f4520 3 months ago 183 MB ubuntu lucid 3db9c44f4520 3 months ago 183 MB
Dockerコンテナの起動
さっそくDockerでUbuntuを起動してみます。
$ sudo docker run -i -t ubuntu:14.10 /bin/bash
サクッとUbuntuが起動しました!
/etc/lsb-releaseを見ると、確かにUbuntuです。
root@9cf71dd83894:/# cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=14.10 DISTRIB_CODENAME=utopic DISTRIB_DESCRIPTION="Ubuntu Utopic Unicorn (development branch)"
Dockerコンテナのデタッチ・アタッチ
起動したDockerコンテナ上でexitするとコンテナは停止してしまいます。練習もかねてDockerコンテナのデタッチ→アタッチ→exitによるコンテナ停止という手順を試してみます。
Dockerコンテナを終了せずに抜ける(デタッチする)には、Ctrl+p Ctrl+qを入力します。
root@9cf71dd83894:/# (ここでCtrl+p Ctrl+qを入力)$ $
docker psコマンドで稼働しているコンテナを確認できます。
$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9cf71dd83894 ubuntu:14.10 /bin/bash 9 minutes ago Up 9 minutes backstabbing_rosalind0
コンテナにアタッチしてみます。
$ sudo docker attach 9cf71dd83894 root@9cf71dd83894:/#
無事にアタッチでできました。後はexitでコンテナを終了します。
root@9cf71dd83894:/# exit exit $ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES $
export/import
私の手元ではまだ試していませんが、イメージファイルのexport/importも可能です。
以下の手順でexport/importを行います。
$ docker export <コンテナID> $ docker export 14773ff9e93c > myweb.tar # コマンド例
$ docker import [リポジトリTAG] $ docker import < - myweb:rel1 < myweb.tar # コマンド例
ローカルストレージのアタッチ
こちらも私の手元では試していませんが、Runコマンドの"-v"オプションでホストのディレクトリをアタッチ可能です。
$ docker run -t -i -v <local_dir>:<container dir>:<rw|ro> centos /bin/bash $ docker run -d -p 5000:5000 -v /home/hoge/data:/tmp/data centos # コマンド例
/home/data/dataは、共有ストレージ(NFS)やディスクミラー(DRBD)、分散ストレージ(Ceph-fs)等を利用して自分でミラーリングします。
まとめ
参加した勉強会でDockerの一連の使用手順が解説されていました。Dockerを覚えてみたいと思っていたので、さっそく覚えた手順を自分の環境で試してみました。
思っていたよりも簡単にコンテナの実行が行え、ついに我が家にもDockerの技術が伝来したという感じです。
(種子島に火縄銃が伝来した……という気分です)
まだ試してはいないものの、イメージのexport/importやプライベートリポジトリといった機能もあるようなので、勉強会用のイメージ提供に活用できればと思います。
第2回 東京SoftLayer勉強会に参加してきました
第2回 東京SoftLayer勉強会に参加してきました
第2回 東京SoftLayer勉強会に参加してきました。前回は5月だったので、2ヵ月ぶりの開催ですね。
前回の勉強会メモと同様に、今回も勉強会メモをまとめてみました。
サムライスタートアップアイランドご紹介
はじめに勉強会の会場であるサムライスタートアップアイランドの紹介がありました。
2011年11月1日にオープンしたサムライスタートアップアイランド(SSI=Samurai Startup Island)は、スタートアップ企業とその支援者が集まる場所を提供しているとのことです。
(SSIの紹介ページからの受け売りです……)
会計士さんも常駐しており、スタートアップ企業におけるファイナンス関係のお悩みごともフォローできますとのことです。
現在50社ほど入居しており、コワーキングスペースとしても活用されています。羽田空港が近いことから、外国からの訪問者への対応も考えられており、海外展開を考える企業にもオススメのようです。
SoftLayerのストレージと使い分けについて
発表者は日本IBMの新島さん。SoftLayerのビギナーズガイドを書いておられるとのことです。
SoftLayerはサーバに組み込まれたストレージだけでも複数種類あり、ストレージの観点から利用可能なサービスの一望と目的別の使い分け方の解説という内容での発表でした。
SoftLayerのストレージ
- BM(Mare Metal Server)とVS(Virtual Server)で構成が異なる
BMのディスク
VSのディスク
- ローカルドライブとSAN storageのを選んで指定できる
ローカルドライブは2台で400Gまで
SAN storage(iSCSI)は以下の構成から選択できる
- 5台まで、25,100Gまで、2台以降は100-2000GBまで)の2つ
仮装サーバのローカルドライブ→故障すると少し時間かかる
- (SoftLayerの中の人が故障ドライブをせっせと交換する)
- SANストレージの場合はバックアップ構成がくめる
- ただしネットワークも障害点となる可能性が出てくる
portable diskとしての利用
- virtual serverの2nd diskを切り離し、portable diskとして利用できる
- 切り離したportable diskは、別のvirtual serverに取り付けることもできる
SoftLayerで利用できるストレージ
iSCSIのスナップショット
- 30分毎にレプリケーションが実行される
- 切り戻しは時間がかかる
- レプリカのカスケードはできないので、マスター復帰時には必ず切り戻しが行われる
- 切り戻しは時間がかかる!とのこと
各ストレージの使い分け
サーバのストレージとして
データ用、バックアップ用として
その他
- 近日中にiSCSIの弱点を克服したソリューションが出てくるかも?
Why Riak & Why SoftLayer?
発表者はBashoジャパンの上西さん。Riakの紹介とSoftLayer上でRiakを動かすと何が嬉しいかについての発表でした。
スライドはWhy Riak? Why SoftLayer?にて公開されています。
スライドが公開されているので、自分のメモは不要かとも思ったのですが、前回のSoftLayer勉強会でのRiakのLTはただ聞くだけになっていたので、今一度自分なりにRiakについてがーっとまとめてみました。
Riakについて
- システムの運用において可用性は大事
- しかし、可用性に対する脅威は数多く存在する
- ハードウェア故障
- ネットワーク故障
- スプリットブレインシンドロームによるデータ破壊
- ソフトウェアのアップデートやメンテナンス
- システムの過負荷
Riak
- RiakはErlangで記述されたNoSQLデータベース
- QuorumレプリケーションによりN個のノードにデータを複製することでノードがひとりくらい壊れていてもデータの書き込みが可能
- 各ノードが管理するパーティションはConsistent Hashingと呼ばれる160bitのキー空間を等分したリング状のハッシュテーブルになっている
- レプリカはN個(=3)のノードにコピーされる
ノードが一時故障した場合
- リング上の次のパーティションに書き込むことで、レプリカがN個ある状態を担保しておく
- 一時故障ノードが復旧した時にレプリカを返す
ネットワーク故障の場合
- Riakでは分断された各ノードでの書き込みを許容する
- 復旧したら書き戻す
- そのため、復旧時にデータの不整合(暗黙的な上書き)が発生する場合がある
- 以下の手法で不整合を回避する
- 不整合のパターンはいくつか存在する
- write-write conflick →比較的対応しやすい
- write-delete conflick →少しややこしい対応手順になる
Riakのバックアップ機能
なぜクラウドでRiakか
- DBなどのミドルウェアが優れていてもHWがこけたら意味がない
- なので、SoftlayerのBM上でRiakを使えると嬉しい
- なぜBMか?VSではダメなのか?
- 分散システムで大事なことは「故障の単位」
- VSが動いているBMがこけると、Riakからは多重故障にみえてしまう
- するとRiakの分散ノードがまるごと落ちるという事態が発生する
- そのため、RiakはBMでの運用を推奨している
その他
- SoftLayerのRiakならエンタープライズ版Riakが使用できる!
参考リンク
QuantaStor概説/QuantaStor使ってみた
発表者はアファーム・ビジネスパートナーズ株式会社の西脇さんと日本情報通信の常田さん。
QuantaStoreのアーキテクチャ、ユースケース、使ってみた感想についての発表でした。
OSNEXUSについて
- QuantaStore(QS)の開発元
- クラウドコンピューティング、BigData、ハイパフォーマンスのアプリケーションに対応可能なSDS(Software Defined Storage製品の製造を行っている企業
QuantaStor
来月のSoftwareDedisnからSoftLayerの記事が連載されるとのこと
参考リンク
Object Storageを使ってみた
発表者は日本IBMの高良さん。SoftLayer探検隊の隊長さんとのことです。
Raspberry PiとSoftLayerのObjectStorageの連携に関する発表でした。
発表スライドは第二回SoftLayerユーザ会 ラズベリーパイとオブジェクトストレージを繋いでみたにて公開されています。詳細な手順はSoftLayer探検隊 第16回 Raspberry Pi で撮影した画像をSoftLayerのオブジェクト・ストレージに保存するにて公開されています。
発表の中で「組み込み機器とクラウドがつながる時代になった」という説明が印象的でした。最近IoT(Internet of Things:モノのインターネット)という言葉(バズワード?)をよく聞きますが、Raspberry PiとSoftLayerの組み合わせによる具体的な事例を見るのは初めてだったので、とても感銘をうけました。
SoftLayerでDockerを使ってみた
発表者はCUPA(一般社団法人クラウド利用促進機構)の荒井さん。
Dockerを利用したシステムポータビリティとDR(Disaster Recovery)対応について、SoftLayerを使用しての解説でした。
Dockerは個人的に試してみたいと常々思っていたので、SoftLayerの話は一旦どっかに置いておき(Dockerだけに)、別途ブログ記事を分けてみました。
まとめ
第2回東京SoftLayer勉強会に参加してみました。何となくSoftLayerがどんなものが見えてきた気がします。とはいえ、実はまだSoftLayerを使ってみたことが無いので、そろそろ触ってみようかなと思います。
Emacs Lispで解く月刊少女野崎くんED「ウラオモテ・フォーチュン」
Emacs Lispで解く月刊少女野崎くんED「ウラオモテ・フォーチュン」
今期オススメのアニメのひとつである「月刊少女野崎くん」、ED曲の「ウラオモテ・フォーチュン」には以下のフレーズが出てきます。
キライの ハンタイの ハンタイの ハンタイの ハンタイの そのさらにハンタイの キモチを伝えるのって 何だか難しい
ぐぬぬ、まるでバカボンのパパ話法(「賛成のハンタイなのだ」)です。これではスキなのかキライなのかよく分かりません。
ここはひとつ、Emacs Lispでスキなのかキライなのかはっきりさせてみましょう。
Emacsのscratchバッファ(lisp-interaction-modeなバッファならどれでもOKです)で以下を実行してみます。
(setq キライの nil) (defun ハンタイの(p) (not p)) (defun そのさらにハンタイの(p) (not p)) (defun キモチを伝えるのって(p) (if p 'スキ 'キライ)) (defun 何だか難しい(p) p) (何だか難しい (キモチを伝えるのって (そのさらにハンタイの (ハンタイの (ハンタイの (ハンタイの (ハンタイの キライの))))))) スキ
無事に「スキ」というお返事(?)が得られました。
が、曲のラストでさらに苛烈なフレーズが出てきます。
キライの ハンタイの ハンタイの ハンタイの ハンタイの ハンタイの ハンタイの ハンタイは?
これはいけません。スキなのかキライなのか考えているうちに曲が終わってしまいます。これもEmacs Lispで解いてみましょう。
(setq キライの nil) (defun ハンタイの(p) (not p)) (defun ハンタイは?(p) (if (not p) 'スキ 'キライ)) (ハンタイは? (ハンタイの (ハンタイの (ハンタイの (ハンタイの (ハンタイの (ハンタイの キライの))))))) スキ
こちらも無事に「スキ」というお返事が得られました。
まとめ
月刊少女野崎くんED曲の「ウラオモテ・フォーチュン」をEmacs Lispで解いてみました。『(キライの (ハンタイの (ハンタイの ...)))』のように、歌詞の並び通りにしたかったのですが、実際は単語の順番をひっくり返しての処理になり、日本語は後置演算子なのか……と変なことに気がついてしまいました。
Fedora20をインストールしてみた
Fedora20をインストールしてみた
Fedora20の環境を用意する必要があったので、インストール後の設定手順をまとめてみました。
sshログインのみで使用する形態を想定しているため、GUIの設定は行わず、インストール後に最低限の設定をするだけの手順になっています。
インストールCD-ROMの入手
今回は以下のURLからネットワークインストール用のCD-ROMをダウンロードしました。インストール作業中に出てくる「ベース環境」の画面で「最小限のインストール」を選択すると、(CentOSでいうところの)minimalインストールになるようです。
- http://fedoraproject.org/ja/get-fedora-all
- http://download.fedoraproject.org/pub/fedora/linux/releases/20/Fedora/x86_64/iso/Fedora-20-x86_64-netinst.iso
インストール後の作業
不要なサービスの停止
必要に応じて不要なサービスを停止します。CentOS環境のようなchkconfigかと思っていたのですが、initデーモンがsystemdに置き換えられたため、コマンド自体が変わっていました。
systemdではsystemctlコマンドを使用しており、以下はchkconfigとのコマンド対応表です。
サービスの 一覧表示 | CentOSの場合 | chkconfig --list |
Fedora20の場合 | systemctl list-unit-files | |
現在有効に なっている サービスの 一覧表示 | CentOSの場合 | chkconfig --list | grep 3:on |
Fedora20の場合 | systemctl list-unit-files | grep enabled | |
サービスの 有効化 | CentOSの場合 | chkconfig sshd on |
Fedora20の場合 | systemctl enable sshd.service | |
サービスの 無効化 | CentOSの場合 | chkconfig sshd off |
Fedora20の場合 | systemctl disable sshd.service |
ネットワークの設定
ネットワークまわりの設定はこれまでの方法(CentOS等の設定方法)と変わりないようです。
# diff -u /etc/sysconfig/network.orig /etc/sysconfig/network --- /etc/sysconfig/network.orig 2014-06-26 16:56:00.223810936 +0900 +++ /etc/sysconfig/network 2014-06-26 17:02:09.848893449 +0900 @@ -1 +1,4 @@ # Created by anaconda + +NETWORKING="yes" +GATEWAY="192.168.0.1"
ただし、NICのデバイス名がeth0等ではなく、p2p1といった名前になっています。
# diff -u /etc/sysconfig/network-scripts/ifcfg-p2p1.orig /etc/sysconfig/network-scripts/ifcfg-p2p1 --- /etc/sysconfig/network-scripts/ifcfg-p2p1.orig 2014-06-26 16:38:20.626798779 +0900 +++ /etc/sysconfig/network-scripts/ifcfg-p2p1 2014-06-26 16:54:57.349810215 +0900 @@ -1,5 +1,7 @@ TYPE="Ethernet" -BOOTPROTO="dhcp" +BOOTPROTO="none" +IPADDR0="192.168.0.225" +PREFIX0="24" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes"
ホスト名の設定
ホスト名は/etc/hostnameに記載します。CentOS等では/etc/sysconfig/networkにHOSTNAME="..."な形式で設定していたのですが、これもFedora20では設定方法がかわったのでしょうか?(まだ調査しきれていないです...)
# cat vmfedora20 > /etc/hostname
SELinuxの無効化
SELinuxは無効化しておきます(ごめんなさい...)。
# diff -u /etc/selinux/config.orig /etc/selinux/config --- /etc/selinux/config.orig 2014-06-26 17:04:15.353965308 +0900 +++ /etc/selinux/config 2014-06-26 17:04:42.989963918 +0900 @@ -4,7 +4,7 @@ # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. -SELINUX=enforcing +SELINUX=disabled # SELINUXTYPE= can take one of these three values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected.
起動時のログをコンソールに出力させる(grub.cfgの設定)
OS起動時のグラフィカルな起動画面もよいのですが、起動時のログがコンソールに出力されないと不安になるので、ログが出力されるよう設定します。
以下のdiffではちょっと分かりにくいですが、"rhgb quiet"というオプションを除去しているだけです。
# diff -u /boot/grub2/grub.cfg.orig /boot/grub2/grub.cfg --- /boot/grub2/grub.cfg.orig 2014-06-26 16:59:24.535293206 +0900 +++ /boot/grub2/grub.cfg 2014-06-26 17:00:01.614295112 +0900 @@ -72,7 +72,7 @@ else search --no-floppy --fs-uuid --set=root 6b176d94-7c9a-4ff7-a007-51d0cd40ccaa fi - linux /boot/vmlinuz-3.14.8-200.fc20.x86_64 root=UUID=6b176d94-7c9a-4ff7-a007-51d0cd40ccaa ro vconsole.font=latarcyrheb-sun16 rhgb quiet LANG=ja_JP.UTF-8 + linux /boot/vmlinuz-3.14.8-200.fc20.x86_64 root=UUID=6b176d94-7c9a-4ff7-a007-51d0cd40ccaa ro vconsole.font=latarcyrheb-sun16 LANG=ja_JP.UTF-8 initrd /boot/initramfs-3.14.8-200.fc20.x86_64.img } menuentry 'Fedora, with Linux 0-rescue-78fd1bcdf2504b058f547faf585019df' --class fedora --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-0-rescue-78fd1bcdf2504b058f547faf585019df-advanced-6b176d94-7c9a-4ff7-a007-51d0cd40ccaa' {
yum update
ここまでで一旦OSを再起動し、IPアドレスが付与されているか等の確認を行ってからyum updateを実行します。
# yum -y update
sudo設定について
Fedora20ではminimalインストールでもsudoがインストールされています。また、wheelグループがsudoできるよう設定されており、visudoで改めて設定する必要はありませんでした。
ユーザの追加
一般ユーザを追加します。sudoできるようにしたいので、セカンダリグループとしてwheelを指定します。
# useradd -g users -G wheel -m -s /bin/bash fpig # passwd fpig
これでインストール後の設定は一通り完了です。後はsshでログインし、パッケージの追加等で生活環境を整えていきます。
まとめ
Fedora20のインストール後の設定手順をまとめてみました。initデーモンがsystemdに置き換えられた点がCentOSとの大きな違いでした。サービスの有効・無効を切り替えるコマンドもchkconfigからsystemctlになっており、当面はコマンドを調べながらの利用になりそうです。
第1回Webスクレイピング勉強会@東京に参加してきました
第1回Webスクレイピング勉強会@東京に参加してきました
第1回Webスクレイピング勉強会@東京に参加してきました。
「シェルスクリプトでスクフェス(スクレイピングフェスティバル)」というタイトルで、シェルスクリプトによるWebスクレイピングの方法について発表してきました。
発表スライドのURLは以下になります。
第2回Webスクレイピング勉強会@東京の開催も決定しており、次回も楽しみです。
補足事項
発表スライド内のスクレイピング手順例は、とある新聞社のデータに対するものです。
勉強会での発表時は今現在のスクレイピング手順を説明していましたが、Web上に公開している発表スライドについては、古いデータ(HTML内のフォーマットが少し異なっている)に対するスクレイピング手順に差し替えています。