著者アーカイブ takahashi

takahashi 著者:takahashi

FuelPHPが”‘Monolog\Logger’ not found”で動作不能に。原因はComposerっぽい。

最近、fuelPHPを使ってWebアプリを開発中なのですが、コーディング外でエラーが発生してfuelが動作しなくなったので対処法をメモします。

ことは突然発生しました。
プログラムを書き換え、ブラウザで実行したら下記のようなエラーが…

さて見慣れないエラーです。
エラー内容にもスタックトレースにも自分のプログラムでエラーが発生している表示はなし。

なんとなくfuelPHP側っぽいなーとは思ったのですがわけがわからないのでGoogle先生に助けを求めたところ、下記のサイトを発見。

fuelphp1.7.2をzipで入れた場合にcomposer使うとfuelが動かなくなる – Qiita

僕の場合、上記記事の最後の”Composerでパッケージインストール実行“を実行。

今回の開発ではComposerを使って操作するようなことは何もしていなかったので、アレ?とは思ったのですが、試したところ正常に動作するようになりました。

どうもfuelPHPはいろいろなところでComposerに依存しているようなので、この辺はもう少しちゃんと調べないといけなさそうだな…と思った次第です。

takahashi 著者:takahashi

UbuntuでTensorFlowを動かしてみる

以前からディープランニング型AIを実現するためのライブラリとして、TensorFlowというものがよく使われています。
ご存知の方も多いかと思います。

自分は今まであまり触れてこなかったのですが、知人がTensorFlowを使って簡易的な画像認識アプリを構築しているのをみて、自分も触れてみようと思い立ちました。

手元に自由に触れるUbuntuサーバーがあったので、こちらにTensorFlowが動作する環境を構築してみます。

まずはpipをインストールします。

sudo apt update
sudo apt install python-pip python-dev

インストール完了したらつぎにpipでTensorFlow(CPU版)を入手、インストールします。

#CPU版TensorFlowインストール
sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.7.1-cp27-none-linux_x86_64.whl

TensorFlowはCPU版とGPU版があり、GPU版を利用するとGPUを使って計算を行ってくれます。
ただし、GPU版はnVidia製GPUのみが対応している”CUDA”が必要になります。
GPU版を入手する場合は下記のコマンドを使用します。

#GPU版TensorFlowインストール
sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.7.1-cp27-none-linux_x86_64.whl

nVidia製以外のGPUを搭載していたり、ドライバが適切に設定されていない環境でGPU版を利用すると、エラーが発生して実行できません。

python
Python 2.7.12 (default, Dec  4 2017, 14:50:18) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/__init__.py", line 23, in <module>
    from tensorflow.python import *
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/__init__.py", line 49, in <module>
    from tensorflow import contrib
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/__init__.py", line 23, in <module>
    from tensorflow.contrib import layers
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/layers/__init__.py", line 68, in <module>
    from tensorflow.contrib.layers.python.layers import *
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/layers/python/layers/__init__.py", line 22, in <module>
    from tensorflow.contrib.layers.python.layers.initializers import *
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/layers/python/layers/initializers.py", line 24, in <module>
    from tensorflow.python.ops import random_ops
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/random_ops.py", line 23, in <module>
    from tensorflow.python.framework import ops
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 39, in <module>
    from tensorflow.python.framework import versions
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/versions.py", line 22, in <module>
    from tensorflow.python import pywrap_tensorflow
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/pywrap_tensorflow.py", line 28, in <module>
    _pywrap_tensorflow = swig_import_helper()
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/pywrap_tensorflow.py", line 24, in swig_import_helper
    _mod = imp.load_module('_pywrap_tensorflow', fp, pathname, description)
ImportError: libcudart.so.7.5: cannot open shared object file: No such file or directory

インストールが完了したら、Pythonインタープリタに入ります。

python

すると、pythonの実行環境が起動し、
“>>>”
プロンプトが表示されるので、つづけて下記のように順に入力します。

>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> sess.run(hello)
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> sess.run(a+b)

実行結果はこんな感じです。


>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> sess.run(hello)
'Hello, TensorFlow!'
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> sess.run(a+b)
42

ここまで動作すれば、TensorFlowは正常に動作しています。

Linux環境だと、大抵は初めからPythonが入っているので、セットアップ手順が少なくて済むのでありがたいのですが、Python自体を使用しているディストリビューションやアプリもあるようで、不用意にPythonのバージョンをアップグレードしてしまうと、OSやアプリが動作しなくなる危険もあるようです。

その場合はPyenvを利用してアプリごとにPythonのバージョンを切り替えることで対応できるようです。
pyenv + anaconda + python3 – Qiita

この辺りもまた試してみたいと思います。

参考サイト:
UbuntuにTensorFlowをインストール – Qiita
Ubuntu 16.04+CUDA 8.0+Tensorflow 環境で起きるlibcudartが見つからない問題を解決する – Qiita

takahashi 著者:takahashi

Windowsで手軽にマシンの死活管理をするなら”ExPing”がわかりやすい。

最近、電源が切れると困るが、外部サービスを利用するほどじゃない・インターネットに公開していない、というマシンを監視したい。というときにうってつけのツールを見つけました。

ExPingというアプリです。

対象のホストはテキストで一括指定できます。
指定したうえで実行すると、一括して各ホストにPingを送ってくれます。

もしPingに失敗した場合、または成功した場合に音を出したり、ポップアップを出したりも設定できます。

ちょっとニッチなアプリではありますが、ネットワーク管理をしている方には助けになりそうですね!

takahashi 著者:takahashi

Windows用高性能SSHクライアント”RLogin”

サーバ管理などでリモートからSSH接続を利用している皆さん。SSHクライアントは何を使っていますか?
WindowsOSを利用されている方は分かるかと思いますが、MachintoshやLinuxではターミナル画面から手軽にSSHを利用できるものが多いのに対し、Windowsには標準ではSSHクライアントが入っておらず、そのままではWindowsOSからSSH接続することはできません。

そこで代わりに、”SSHクライアント”と呼ばれる専用のソフトが使われることが多いです。

Windowsユーザーでおそらく最も一般的に使われているターミナルは、”Tera Term“というクライアントソフトだと思います。
Tera Termはオープンソースで開発されているため無料で利用できる上、機能もわかりやすくシンプルなので、最近初めてSSHを触り始めた!という方にはおすすめです。また、標準でCygwinに接続する機能も持っています。

一方で、仕事などで複数台のサーバーを管理していたり、踏み台サーバー経由で目的のサーバーにSSH接続したい場合などは、Tera Termでは少し不便に感じる機会が出てきます。
そんな方にお勧めしたいのが”RLogin“というフリーのSSHクライアントです。


http://nanno.dip.jp より引用

RLoginは複数台のサーバーを同時に接続することを前提とした設計になっていて、TeraTerm以上に多くの機能を備えています。

個人的には、
Terminalを色付きにできたり、踏み台サーバー経由の接続も設定することができるのがとてもありがたいですね。

ちょっと高機能なクライアントが欲しいな、と感じている方はぜひ使ってみてはいかがでしょうか?

takahashi 著者:takahashi

セットアップ中のPCが…

ブルースクリーンになってしまいました…

しばらく使っていないWindows7のPCを、社内のテストサーバーのホストマシンにするためにいろいろセットアップしていたのですが、一晩おいておいたらブルースクリーンになっていました…

エラーコードは

DRIVER_IRQL_NOT_LESS_OR_EQUAL

と出ていて、調べたところ、ドライバの不具合が原因で起こるらしいとのこと。
ただ、いろいろ確認した限りではすべて最新版になっているようで、更新できるものは殆どありませんでした。

とりあえず、しばらく様子見です…(汗

takahashi 著者:takahashi

ドメイン参加済みのWindowsPC/サーバーで自動ログインを有効にする方法

通常、Windowsでは設定画面から起動時の”自動ログイン”の設定が可能ですが、ドメインに参加してしまうと、この設定ができなくなります。
セキュリティ的にも自動ログインしない方がいいのですが、使い方によっては自動ログインしてくれないと困る、という時もあるかと思います。

その場合は、Windowsの設定からは変更ができないので、無料配布されている設定ツールを利用することで自動ログインを有効化できます。

Autologon for Windows – Windows Sysinternals
上記サイトからzipファイルを入手し解凍。
Autologon.exe
があるので起動します。

ダイアログが出てくるので

ユーザーアカウント情報を入力、Enableをクリックします。
次回の起動から、ユーザーアカウント選択画面が表示されなくなります。

Windows7から利用することができるので、お困りの方は試してみてください。

takahashi 著者:takahashi

Googleアカウントでログインしているサービスに、別のGoogleアカウントでログインする方法

最近はいろんなサービスを1つのアカウントで利用することができるOpenID対応サイトがかなり多くなりました。
僕は普段Googleアカウントを使って、多くのサービスにログインしています。

ある日、普段使っていないブラウザでWebサービス”Trello”に接続、Googleアカウントでログインしたのですが、ここでログインするアカウントを間違えていたことに気づき、一度ログアウト。再度ログインしようとしたのですが…

“Googleアカウントでログイン”ボタンをクリックすると最初に使ったGoogleアカウントで自動的にログインされてしまいます。
Webサービス側で何度もログアウトしても、”Googleアカウントでログイン”ボタンを押すと自動的にログインされてしまうので、焦ってしまう方も多いかと思います。

そんなときに、Googleアカウントのログインを解除して、再びログイン画面を出す方法を紹介したいと思います。

まず、ログインしようとしているWebサービスとは別のタブを開き、google.co.jpにアクセスします。

するとおなじみの検索画面が出てくるかと思いますが、画面右上に注目すると、丸いアイコンがあるのでそこをクリック。

すると今ログイン中のアカウントの一覧が出てきます。
写真だとログイン済みのアカウントは3つありますが、このアカウント一覧はログインしているアカウントが1つだけであっても出てきます。

右下の”ログアウト”をクリックすると、Googleにログイン中のアカウントをいったんすべてログアウトさせることができます。

この状態で、先程のWebサービスに戻り、再び”Googleアカウントでログイン”ボタンを押すと…

無事ログイン画面が表示されました!
後は正しいGoogleアカウントでログインすれば完了です。

お困りの際は是非お試しください。

takahashi 著者:takahashi

ストーリーとグラフィックの”オープンソース化”を目指す異色のスマホゲーム”LayereD Stories 0″が面白い!

最近、ふとしたことで知ったゲームがあります。

ゲームのタイトルは「LayereD Stories 0」
舞台は2037年の日本。ARシステム「LayereD」が発展したことで、”イメージできることはすべて実現可能”となった世界です。
この世界では、ARをつかってどんなことも表現可能になった一方で、社会で一定数の人が”不快”を提示したコンテンツやユーザーのアカウントは一方的に削除されてしまいます。そんな中で登場人物たちがそれぞれの葛藤や信念を持ちながら、この仕組みと対峙していくようなストーリーです。

ソーシャルゲームでありながらそんな現実社会の”表現の自由”への考え方に一石を投じるようなストーリーの深さに、とても面白さを感じました。

他にもキャラクターデザインはさることながら、ゲームと本格的なCGアニメの両方をコンテンツとして公開していたりとストーリー抜きにしても力の入れ具合が半端ない印象のタイトルですが、個人的に一番注目したいのは”3Dモデルやストーリーのオープンソース化”が計画されているという点です。

バンナム、UGCを活用して新規IPを創出・育成する新プロジェクト「Project LayereD」始動! – Sotial Game Info

■創出したIPをオープンソース化! UGCを活用してIP育成
「Project LayereD」では、本IPの世界観、キャラクター設定、3Dモデルや2D画像を個人であれば誰でも自由に使える設定・素材として公開、無償提供します。お客様は簡単なライセンス表記のみで二次創作が可能で、個人利用のみならず商用利用も行っていただける予定です。IPの創出のみならず、IP育成においても積極的に二次創作を促し、お客様と一緒に「Project LayereD」を活性化していきたいと考えています。

いままでオープンソースの世界でも、創作界隈でも、”創作物のオープン化”という試みはあまり行われていない印象があります。
ましてや企業の制作物で”オープン化”される作品とは、きわめて希少ではないでしょうか。

プログラムで何か作ろうとしたとき、自分で1からすべてをフルスクラッチで書くのは、非常に大変な作業です。
しかし、オープンソースソフトウェアなどで、あらかじめベースとなるものがあれば、独自の部分だけに力を注げばよくなるので、よりいいものが作りやすくなります。

ゲームにしても物語にしても同じだと思います。1から作るというのは恐ろしい程の労力が必要です。
得意な人や、それを生業としている人は別としても、自力で一から構築していくのは簡単ではないはずです。

でも、作る際に何かベースがあれは、作りたいものをぐっと作りやすくなると思います。
この作品の世界のように、才能や技術にかかわらず、誰でも創作に参加できるような流れづくりに、こちらのゲームが一役買ってくれるのではないのかな、と感じました。

今後の展開に注目していきたいと思います。

レイヤードストーリーズ ゼロ

takahashi 著者:takahashi

HDD/SDDをLinuxで簡単に仮想化する方法

クラウドやサーバーの仮想化が一般的になった現在、物理サーバーから仮想サーバーへ移行したいという方も多いかと思います。
そんな時はLinuxを用いることで簡単に仮想化ができます。

仮想化したいストレージがあるマシンをUSBやLiveCDを使って外部からLinuxを起動します。

Gpartedなどを使って、コピー対象のデバイスファイル(/dev/sdXのような記号)を確認します。

UbuntuのLiveCDを起動した場合で、他に外部の記憶領域を一切接続していない場合、大抵内装ディスクは”/dev/sda”として認識されますが、システムや周辺機器によっては異なる可能性があるので慎重な確認が必要です。(誤ったデバイスファイルを選んでしまうと、最悪の場合データの消失につながる恐れがあります。)

対象のデバイスファイルがわかったら早速ディスクを仮想化してみます。
もし仮想化対象とは別のストレージがコピー元マシンにあり、そこへイメージを作成する場合は下記のようにします。

sudo dd if=/dev/デバイスファイル名 of=ファイル作成先のディレクトリパス bs=1M

または

sudo dd if=/dev/デバイスファイル名 bs=1M > 作成ファイルのパス(ex. /home/hoge/server_storage.img)

ディスクそのものに書き込むこともできます。(間違ったデバイスファイルを指定すると意図しないドライブやファイルのデータが消失します。)

sudo dd if=/dev/コピー元のデバイスファイル名 of=/dev/コピー先のデバイスファイル名 bs=1M

ネットワーク経由も可能です。
サーバー(コピー先)側

nc -l ポート番号 > disk.img

クライアント(コピー元側)

dd if=/dev/sdX bs=1M | nc サーバー側IP ポート番号

学生時代にOpenStackを使ってプライベートクラウドサーバーを構築した際、物理サーバーからOpenStackのインスタンスに変換する際にこの方法を使いました。

実際にOpenStack内のKVMで動作させましたが、物理サーバー同様に問題なく利用することができました。

できたイメージファイルはいろいろな仮想ディスク形式に変換可能ですので、VirtualBoxやVMWareでも利用可能のはずです。
仮想化ツールを持っていない、ディスクのバックアップを取りたい、という方は是非活用してみてください。

参考URL:
http://hogem.hatenablog.com/entry/20120204/1328355984

takahashi 著者:takahashi

WindowsへのMeltdown対策によるCPUベンチマークの変化をMSが公表。旧CPUでは著しい速度低下も。

先日、Microsoftが気になるデータを公表しました。

プロセッサの脆弱性、Microsoftの対策パッチでパフォーマンス大幅低下も – IT Media エンタープライズ

先日発覚したCPUの脆弱性 Meltdown/Spectre の脆弱性対策としてMicrosoftが公開したWindowsへの対策パッチを適用した際のベンチマークを比較したところ、IntelCPUの 第6世代にあたるSkylake以降は特に目立った速度低下はないものの、第4世代にあたる Haswell以前のIntelCPUは相当な減速が確認された、という内容です。
特にHaswellを含むそれよりも古いCPUを搭載したWindows Server機はかなりのスペックダウンが発生する可能性があるようです。

Skylakeが初めてIntelから発売されたのが2015年8月ごろになる(Wikipedia)ので、少なくともこれより前に発売されたIntelCPU、およびそのCPUを搭載したPCはすべてこのスペックダウンの影響を大きく受ける可能性があるということになります。

比較的新しいCPUでもスペックダウンの対象になってしまっているという点で、なかなかショッキングな内容です。
ちなみに、僕が現在所有しているマシンは一番新しいもので第5世代のbroadwellのマシンなので、全滅でした。

なお、LinuxOSにおいても影響が出ているようです。
CPU脆弱性Meltdownのパッチ適用でベンチマークスコアが25%低下した – Qiita

ここまで影響が大きいと、ゲーム用のマシンや企業向けサーバーなどののスペックダウンに各方面からの悲鳴も聞こえてきそうですね。
現にAWSでかなり影響が出ているという報告もあるようです。
チップ脆弱性の修正パッチが招いた、サーヴァーの性能低下という「二次災害」の深刻度 – WIRED

引き続き、Intelや各OSベンダーがさらなる対策を行ってくれることを祈ります。