Webサイト・Webサービスの開発をしていると何かとよく使うHostsの設定。
たまに変更するだけであれば直接ファイルを触ってしまえばいいのですが、頻繁に変更するときがあったりするとなかなか面倒です。
そんな時に便利なのがGUIのHosts書き換えツール。
普段使っているWindows機ではこんなツールを入れています。
管理者権限が必要ですが、分かりやすいGUIからHostsの設定を簡単に書き換えることができるので、毎回CドライブからHostsファイルを探し出して管理者権限のエディタで開いて…なんて操作が必要なくなります。とても便利です。
さて、最近はサブ機・動作確認用としてMacも利用するようになったのですが、やはり毎回ファイルを直接編集するのはなかなか面倒くさい…
Macにも同じようなアプリないかなーと思っていたらありました!
名前もそのままHostsというアプリです。
pkg形式で入手できるので、クリックしてインストーラーを起動します。
特に設定項目はないので、画面に従ってインストールしていきます。
インストール完了後、Applicationフォルダを探しても見当たらず、「あれ?どこいった??」となり、調べたところ、
なんとシステム環境設定画面に追加されていました。
なるほど、システム全体にかかわる設定なのでちゃんとシステム設定として起動できるようにしてくれるのですね。
これは分かりやすくていいですね。
Hostsのアイコンをクリックすると設定画面に飛びます。
操作方法はWindowsのHosts File Managerとさほど変わりません。
むしろ起動すれば現在のHostsファイルの内容が出てくるのでよりシンプルで分かりやすいです。
鍵マークをクリックし、管理者のパスワードを入力するとロックが解除状態(管理者モード)になります。
後は変更したい項目をダブルクリックして値を入力し、確定すると反映されます。
Web開発などで頻繁にHostsを書き換える必要がある方は是非一度試してみてはいかがでしょう?
手作りのもちもちのうどんや出来立ての天ぷらが楽しめて、しかも安い。丸亀製麵は機会があるときは良く足を運ぶお気に入りのチェーン店です。
そんな丸亀製麵ですが少し前からスマホアプリを使ったクーポン配信などが始まり、よりお得に利用できるようになりました。
そんな丸亀アプリですが、最近リニューアルされたようで、
クーポンについているバーコードをレジで読み込ませる形式に変更されたようです。
いつも店員さんが忙しそうにしている中、恐らく画面を見てレジに割引を打ち込んでいたような感じだったので、これで少し負担が軽減されるといいですね。
他にもスタンプシステムが導入など、使いたくなるような工夫が追加されました。
ちなみに2月7~9の期間限定で夜6時から、鴨ねぎうどんが半額で頼めるようです。
半額カモン! 夜なきうどん – 丸亀製麵
めっちゃ食べに行きたい…
は一つしかありません。
笑いましょう!
HTTPステータスコードとは、主にブラウザからサーバーへの要求に対して、その結果を3桁数字で表したものです。
例えばよく見かけるものとして、404なら”Not Found(見つかりませんでした)”、403なら”Forbidden(アクセスが拒否されました)”、500なら”Interlal Server Error(サーバー内で問題が発生しています)”などです。ほかにもたくさんの種類があります。
そんなステータスコードの中の一つとして存在しているのが”418 I’m a teapot” です。
意味は “私はティーポット。” で、”ティーポットにコーヒーを淹れさせようとして、拒否された場合に返されるステータスコード”です。わけがわかりません。
なんでこんなステータスコードが存在しているのかというと、”1998年4月1 のエイプリルフールに作成されたものが、そのまま実装されたコード”らしいです。
出典:HTTP ステータスコード 418 I’m a tea pot のページを実装してみた- thought is free
ちなみに、Googleの公式のサイトで、418ステータスコードが実装されているページがあります。
https://www.google.com/teapot
開発者ツールで開くとちゃんとエラーとして表示されます。さすがGoogle。
ちなみのちなみに、ステータスコード418を利用するプロトコル”HTCPCP/1.0″(ハイパーテキスト・コーヒーポット制御プロトコル)なるものがあり、ちゃんとRFC 2324として登録されています。ワケガワカラナイヨ!!!
インターネットのこういうちょっとしたおふざけを公式非公式関わらずに行う文化、個人的に結構好きです。
今年もあと数か月でエイプリルフールがやってきますが、ここ数年インターネット上ではは企業もこぞってジョークを投げあう、混沌とした日となっています。
今年は各方面からどんなジョークが飛んでくるのか…楽しみですね。
持ち運びに特化したノートPC:ネットブックが一時期大流行しましたが、最近はその数をかなり減らし、タブレット型PCやキーボードと画面が分離するコンバーチブルPCが目立ってきています。
持ち運びに重点を置くのなら確かにタブレット型で、キーボードは必要な時に着ける形の方が理にかなっている気はします。ただ、個人的にはキーボードとタブレットを別々で持ち運ぶというのにもちょっとわずらわしいのでは…と思うときがあります。
やっぱり、ノートPCにはハードウェアキーボードがついていてほしい…でもかさばってほしくない….
そんなわがままを叶えてくれるのがネットブックだったので、少なくなってしまったのはちょっと残念に思っていました。
そんな中、彗星のごとく現れたのが、
中国・深センのデバイス製造メーカーGPDが発売した「GPD Pocket」という機種です。
大きさはなんと7インチという極小サイズ。電子書籍と見間違うほどの小ささなのですが、スペックはIntel Atom x7-Z8750、ストレージ128GB、RAMも8GBあります。
CPUを除けばMacBookAirとさほど変わらないスペックです。
ポートもUSB3.0、イヤホンジャック、USB Type-Cなど、主要なものは一通りそろえています。
OSもWindows 10 Home入りですが、Ubuntuも公式にサポートしている点はガジェット通な人の心をつかみそうです。
使用感はこちらのかたのブログでよくまとめられています。
7インチの極小ノートパソコン「GPD Pocket」と過ごした1ヵ月まとめ – goodegg.jp
昔は2番煎じ、3番煎じ間の強かった中華製ガジェットですが、最近は国内や主要メーカーよりもより痒いところに手が届く”一番手”なハードが増えてきた気がします。
是非今後も注目していきたいですね。
LinuxやUnixでSSHにつなぎながら作業する際、時間のかかる処理を行わせたりでしばらく放置しておく機会と言うのはしばしばあります。
そんなときに、途中でインターネット接続が切れてしまうと最悪です。また、トラブル以外でもは会社の業務終了時間になって退社する時するなどでマシンの電源を落とさないといけない場面があったりします。
そんなときにscreenコマンドは便利です。
サーバー側に仮装のターミナルを作成し、そこで様々な処理を実行することが出来ます。
途中でSSHが切断されてしまっても、screenはサーバーの中で動作しているので、処理も続行されます。途中で処理させながらscreenターミナルから抜けることも、再度入ることも可能です。
また、スクリプトを簡易的にデーモンっぽく動作させる使い方もできます。
このscreenコマンドですが、実は外部からコマンドや文字列を与えることができるのはご存知でしょうか。
例えば、s1という名前でスクリーンを作成し、
$ screen -S s1
s1スクリーン内でpythonのプロンプトを起動しておきます。
$ python Python 2.7.5 (default, Aug 4 2017, 00:39:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>>
このs1スクリーンに、外からs1の標準入力に対して文字列を入力したい場合、
まず、ctrl+a d でスクリーンをデタッチした後で、
$ screen -S s1 -X stuff 'print "Hello world!" '`echo -ne '\015'`
とした後、再度screen -r s1 でアタッチすると
>>> print "Hello world!" Hello world! >>>
と表示されているはずです!
これは例えば、screenで実行中のプログラムに文字列を渡したい時や、特定のscreenでのみ定期的にプログラムを実行したいときに有効です。
予めシェルスクリプトにしておけば、cronで回すことも出来ます。
便利なので、ぜひ一度試してみてはいかがでしょうか?
参考サイト:
Minecraftサーバをscreenとcronでプラグインを使わずに自動再起動する – 純規の暇人趣味ブログ
最近、fuelPHPを使ってWebアプリを開発中なのですが、コーディング外でエラーが発生してfuelが動作しなくなったので対処法をメモします。
ことは突然発生しました。
プログラムを書き換え、ブラウザで実行したら下記のようなエラーが…
さて見慣れないエラーです。
エラー内容にもスタックトレースにも自分のプログラムでエラーが発生している表示はなし。
なんとなくfuelPHP側っぽいなーとは思ったのですがわけがわからないのでGoogle先生に助けを求めたところ、下記のサイトを発見。
fuelphp1.7.2をzipで入れた場合にcomposer使うとfuelが動かなくなる – Qiita
僕の場合、上記記事の最後の”Composerでパッケージインストール実行“を実行。
今回の開発ではComposerを使って操作するようなことは何もしていなかったので、アレ?とは思ったのですが、試したところ正常に動作するようになりました。
どうもfuelPHPはいろいろなところでComposerに依存しているようなので、この辺はもう少しちゃんと調べないといけなさそうだな…と思った次第です。
以前からディープランニング型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
最近、電源が切れると困るが、外部サービスを利用するほどじゃない・インターネットに公開していない、というマシンを監視したい。というときにうってつけのツールを見つけました。
ExPingというアプリです。
対象のホストはテキストで一括指定できます。
指定したうえで実行すると、一括して各ホストにPingを送ってくれます。
もしPingに失敗した場合、または成功した場合に音を出したり、ポップアップを出したりも設定できます。
ちょっとニッチなアプリではありますが、ネットワーク管理をしている方には助けになりそうですね!
サーバ管理などでリモートからSSH接続を利用している皆さん。SSHクライアントは何を使っていますか?
WindowsOSを利用されている方は分かるかと思いますが、MachintoshやLinuxではターミナル画面から手軽にSSHを利用できるものが多いのに対し、Windowsには標準ではSSHクライアントが入っておらず、そのままではWindowsOSからSSH接続することはできません。
そこで代わりに、”SSHクライアント”と呼ばれる専用のソフトが使われることが多いです。
Windowsユーザーでおそらく最も一般的に使われているターミナルは、”Tera Term“というクライアントソフトだと思います。
Tera Termはオープンソースで開発されているため無料で利用できる上、機能もわかりやすくシンプルなので、最近初めてSSHを触り始めた!という方にはおすすめです。また、標準でCygwinに接続する機能も持っています。
一方で、仕事などで複数台のサーバーを管理していたり、踏み台サーバー経由で目的のサーバーにSSH接続したい場合などは、Tera Termでは少し不便に感じる機会が出てきます。
そんな方にお勧めしたいのが”RLogin“というフリーのSSHクライアントです。
RLoginは複数台のサーバーを同時に接続することを前提とした設計になっていて、TeraTerm以上に多くの機能を備えています。
個人的には、
Terminalを色付きにできたり、踏み台サーバー経由の接続も設定することができるのがとてもありがたいですね。
ちょっと高機能なクライアントが欲しいな、と感じている方はぜひ使ってみてはいかがでしょうか?
ブルースクリーンになってしまいました…
しばらく使っていないWindows7のPCを、社内のテストサーバーのホストマシンにするためにいろいろセットアップしていたのですが、一晩おいておいたらブルースクリーンになっていました…
エラーコードは
DRIVER_IRQL_NOT_LESS_OR_EQUAL
と出ていて、調べたところ、ドライバの不具合が原因で起こるらしいとのこと。
ただ、いろいろ確認した限りではすべて最新版になっているようで、更新できるものは殆どありませんでした。
とりあえず、しばらく様子見です…(汗