終電23時11分って早くね?

都内のIT企業で働くカラオケ大好きエンジニアの雑記

【解決済】Windows7でnpm install実行時にエラー

当方Windows7環境なのですが、
npm installを実行するとエラーが出た。

MSBUILD : error MSB3428: Visual C++ コンポーネント "VCBuild.exe" を読み込めませんでした。この問題を解決するには、次のいずれかを行ってください。 1) .NET Framework 2.0 SDK インス
トールする。 2) Microsoft Visual Studio 2005 をインストールする。
3) その他の場所にインストールされている場合、コンポーネントの場所をシステム パスに追加する。 [c:\Users\YourName\Desktop\Path\To\Your\Hubot\node_modules\hubot-xmpp
\node_modules\ltx\node_modules\node-expat\b
uild\binding.sln]

※3)のパスは適当に改変してます。

私はhubot-xmppを利用しようとして、

$ npm install hubot-xmpp --save

のコマンドを打った際にこのエラーが出ました。

今回の解決方法

今回の解決方法としては、
http://go.microsoft.com/?linkid=9816758
からMicrosoft Visual Studio C++ 2012 for Windows Desktop」をインストールしたことで解決した。

その他の解決方法

上記でダメであれば、
https://github.com/TooTallNate/node-gyp#installation
こちらのページの「On Windows」内の「Windows XP/Vista/7: 」か「Windows 7/8: 」の項目のいずれかを試してみるのがよさそうです。

下記の3つが挙げられています。

Microsoft Visual Studio C++ 2010のインストール。

Microsoft Visual Studio C++ 2010 (Express version works well)

http://go.microsoft.com/?linkid=9709949
上記URLからプログラムを直接ダウンロードしてインストール。

Microsoft Windows SDK for Windows 7 and .NET Framework 4 のインストール

For 64-bit builds of node and native modules you will also need the Windows 7 64-bit SDK

Download Microsoft Windows SDK for Windows 7 and .NET Framework 4 from Official Microsoft Download Center
上のURLから、Microsoft Windows SDK for Windows 7 and .NET Framework 4 のインストール。

Windows SDK 7.1 用 Microsoft Visual C++ 2010 Service Pack 1 コンパイラ更新プログラムを適応。

If you get errors that the 64-bit compilers are not installed you may also need the compiler update for the Windows SDK 7.1

Download Microsoft Visual C++ 2010 Service Pack 1 Compiler Update for the Windows SDK 7.1 from Official Microsoft Download Center
上記URLからWindows SDK 7.1 用 Microsoft Visual C++ 2010 Service Pack 1 コンパイラ更新プログラムを適応。


以上。同じようなエラーで困った人の助けになれば・・・

SlackとHubotを連携させてPRIVATE GROUPでも動くようにしてみた

Hubotをhubot-slackで連携させるのは非常に簡単で、

hubot-slack
https://github.com/tinyspeck/hubot-slack

を使えばすぐできるんですが、PRIVATE GROUP上では反応してくれないようで、
なんとかしたい・・ってことで調べてみた結果できましたので
その方法を残しておこうと思います。

結論としては、

hubot-xmpp
https://github.com/markstory/hubot-xmpp

XMPPプロトコルによりHubotとSlackを連携させる感じです。

今回はHubot自体はHerokuにデプロイして動かしています。

※2014年11月21日追記
GitHubにも置いてみた。ツッコミありましたらぜひ!
あわせて見ていただければ。
blue-goheimochi/hubot-slack-xmpp-base · GitHub

事前準備

Hubot用のユーザをSlackで用意しておく。

このユーザがSlack上で反応するので、
アイコンとかユーザ名とかbotにあったものにしくといいかもです。

Hubot用のユーザをPRIVATE GROUPに所属させておく。

Hubot用のユーザを反応してもらいたいPRIVATE GROUPに参加させる必要があるので参加させておきましょう。


Hubotのインストールとボットの作成

$ npm install -g hubot coffee-script
$ hubot --create hubot-xmpp

npmコマンド使えない人は、インストールしてください。


Hubotの動作確認

$ cd hubot-xmpp
$ bin/hubot
Hubot> hubot ping
Hubot> PONG (←自動で応答することを確認)


hubot-xmppのアダプターを追加

$ npm install hubot-xmpp --save


Procfileを編集する

$ vi Procfile
web: bin/hubot -a xmpp -n hubot-xmpp

Procfireに記述する -n [文字列]で指定した文字列(上の例で言うとhubot-xmpp)を監視してHubotが反応してくれます。
※Slack上のユーザ名で反応するわけではないので注意


Heroku appを作成する

$ git init
$ git add .
$ git commit -m "first commit"
$ heroku create yourname-hubot-xmpp

herokuコマンド使えない人は、インストールしてください。


Herokuにデプロイする

$ git push heroku master


Herokuのconfig設定する

※2014年11月20日追記
しばらくするとherokuのインスタンスがアイドル状態になってて、
hubot-slackのときはそんなことなかったのになーと思って調べまして、

$ heroku config:add HEROKU_URL=http://yourname-hubot-xmpp.herokuapp.com

HEROKU_URLの設定をしておくと20分に1回URLにPOSTされて、
アイドル状態にならなくなる。とのコトでした。

参考


Hubot - HerokuにデプロイしたHobotをIdlingさせない方法 - Qiita


HubotとSlackの連携の設定をする

おそらくここが肝です。

SlackのXMPPGatewayを有効にする

https://my.slack.com/admin/settings#permissions

管理者権限を持ったユーザで上記URLにアクセスし、

f:id:blue_goheimochi:20141019003136p:plain

「Gateways」の「expand」で設定項目を開き、
上記の画像のように「Enable XMPP gateway(SSL only)」にチェックを入れ「Save Settings」をする。

Hubot用ユーザの認証情報を取得する

https://my.slack.com/account/gateways

「Getting Started: XMPP」の項目を確認すると、

f:id:blue_goheimochi:20141019003742p:plain

上記画像のように認証情報が表示されていると思います。
ここが、「XMPP is disabled for your team. Ask your team owner to enable it.」と表示されている場合は、
まだXMPPGatewayが有効になってないので、再度管理者権限をもったユーザでXMPPGatewayを有効にしてください。

HerokuにSlackの認証情報を設定

$ heroku config:add HUBOT_XMPP_USERNAME="hubot-xmpp@your-team.xmpp.slack.com"
$ heroku config:add HUBOT_XMPP_PASSWORD="HUBOT_XMPP_PASSWORD"
$ heroku config:add HUBOT_XMPP_ROOMS="test@conference.your-team.xmpp.slack.com"

上記の画像で赤枠で囲った部分をそれぞれ設定します。


PRIVATE GROUPでHubotにpingしてみる

f:id:blue_goheimochi:20141019004010p:plain

ping すると hubot-xmppユーザがPONGを返すようになりました!

「Procfileを編集する」のところにも記述しましたが、

参考

Hubot起動時の -n [名前] の名前に反応するので、その点お気をつけください。

Procfileに

web: bin/hubot -a xmpp -n hoge-hoge

と設定した場合

f:id:blue_goheimochi:20141019004149p:plain

となります。


おわり

という感じで、hubot-slackのアダプターを使うよりは少し複雑ですが、
hubot-xmppのアダプターを使えばプライベートグループでもHubotと連携できますので、
より幅が広がるのではないでしょうか?

参考サイト

Slack を XMPP プロトコルで Hubot と連携する - ja.ngs.io
Home · markstory/hubot-xmpp Wiki · GitHub

ちなみに、xmppと連携しないバージョンはこっち↓
PRIVATE GROUPで使わないのならこっちのが楽ちん。


blue-goheimochi/hubot-slack-base · GitHub

おまけ

「誰か教えてくれるかな・・・」という淡い期待を持ってつぶやいたんですが、
@ex_takezawaさんに「知りたい(ので調べてね)」って言われたので調べさせていただきました 笑

Laravel4のhomesteadでmigrateしようとしたら「SQLSTATE[HY000] [2002] 対象のコンピュータによって拒否されたため、接続できませんでした。」でハマった件

タイトルが長いけどそういうことです。

当方Windows7のLaravel4.2でHomesteadを利用した環境でございます。
Macご利用の方はその辺脳内変換していただければと。。

やろうとしたこと

migrate:makeでマイグレーションを作成し、

$ php artisan migrate:make create_users_table

DBスキーマ等々設定の上、

$ php artisan migrate --env=local

を入力してたらエラーが出ました。

[PDOException]
SQLSTATE[HY000] [2002] 対象のコンピュータによって拒否されたため、接続できませんでした。

【参考画像】

f:id:blue_goheimochi:20140915231233p:plain

これです。

解決方法

上記のmigrateコマンドを見ていただいても分かるかと思いますが、
今回はlocalに対する操作だったのと、
もう1点、Homesteadを利用していたので、
MySQLのポートを参照するためには、33060のポートを参照しないといけませんでした。

■Laravel Homestead
http://laravel.com/docs/homestead#ports

SSH: 2222 -> Forwards To 22
HTTP: 8000 -> Forwards To 80
MySQL: 33060 -> Forwards To 3306
Postgres: 54320 -> Forwards To 5432

という感じで、ローカルからHomesteadに向けて、
ポートフォワードしてくれているわけですな。

ということで、ポートの設定をdatabasae.phpに書くことで解消できました。

対象は、\app\config\local\database.php です。

【変更前】

'mysql' => array(
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'homestead',
    'username'  => 'homestead',
    'password'  => 'secret',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
),

【変更後】

'mysql' => array(
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'homestead',
    'username'  => 'homestead',
    'password'  => 'secret',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
    'port'      => '33060',
),

'port' => '33060',
こいつを追加です。

という感じで無事にmigrateの処理が通るようになりましたとさ!

余談

別途、

[PDOException]
could not find driver

というエラーにもはまったんですが、
php.iniでphp_pdo_mysql.dllが有効になっていませんでした・・・

Laravel4でcomposer installしたらopensslが必要だよってエラーが出た件

当方Windows7の環境でございますので、
Macご利用の方はその辺脳内変換していただければと。。

一応Laravel4.2の環境です。

やろうとしたこと

新規にLaravelのアプリケーションを作ろうとして、
GitHubからzipでファイルダウンロードして展開して、
いざ、

$ composer install

を入力してEnterを「ッターン!」ってやったらエラーが出ました。
いたるところで。

You must enable the openssl extension to download files via https
Now trying to download from source

が表示される。

【参考画像】

f:id:blue_goheimochi:20140915224145p:plain

opensslのエクステンションがない。ということのようです。

解決方法

php.iniでphp_openssl.dllを有効にする

【変更前】

;extension=php_openssl.dll

【変更後】

extension=php_openssl.dll

のようにコメントアウトを削除してあげれば、解決できるかと思います!


それでも解決できない場合・・・

実は私はそれだけでは解決できませんでした・・・笑

というのも、そもそもphp.iniを配置していなかったのでした。

なので実際の解決手順としては、

1.php.iniの配置

PHPがインストールされているディレクトリに
php.ini-developmentがあると思いますので、
これをコピーし、php.iniという名前にリネームする。

2.extension_dirの設定を有効にする

php.ini内の以下の部分のコメントアウトを削除し、
extension_dirの設定を有効にします。

【変更前】

; On windows:
; extension_dir = "ext"

【変更後】

; On windows:
extension_dir = "ext"

3.php_openssl.dllを有効にする

php.ini内の以下の部分のコメントアウトを削除し、
php_openssl.dllを有効にします。

【変更前】

;extension=php_openssl.dll

【変更後】

extension=php_openssl.dll

の手順を踏んだ後、composer installでエラーが出ないようになりました!

なぜこんなところではまったのか・・・笑

【解決済】Windwos7でVirtualboxとVagrantで仮想マシンが起動できずハマった件

【追記あり:2015-10-01】とりあえずVirtualBoxのバージョンを下げてみましょう

下記では新しいVirtualBoxをインストールすることで問題解決しましたが、
新たにVirtualBox 5.0.4をインストールしたことで問題発生しました。。

Windowsにやさしくないのですかね。。。

ということで、4.3.28までバージョンを落とすことで無事に仮想マシンが起動できるようになりました。。

【追記あり:2014-09-11】VirtualBox 4.3.16がリリースされました

VirtualBox 4.3.16 がリリースされましたので、そちらを利用しましょう。

https://www.virtualbox.org/wiki/Changelog
こちらのページご確認でご確認いただけますが、
2014-09-09にVirtualBox 4.3.16がリリースされておりまして、
こちらのバージョンでは仮想マシンが起動できないエラーは発生しませんでした。
2014-09-10にはChocorateyにも最新バージョンが反映されています。

よって「仮想マシンが起動できない!」って状況で、VirtualBoxが最新版でない場合は、
まずVirtualBoxを最新版にアップデートしてみましょう。

Chocorateyユーザーの方は、

C:\> chocolatey update virtualbox

もしくは

C:\> cup virtualbox

で、アップデートできます。

「諸事情によってアップデートできねぇ・・・」って方は、
下記のように、4.3.12にバージョン落としていただく方法をお試しください。

※【2014/10/21追記】

id:hiwa4さんの下記記事で言及されておりますが、
どうやらWindows8.1の場合、VirtualBoxの最新版でも動かないことがあるようです・・最終的に4.3.12までバージョンを落としたところ動いたようです。

【追記あり】結論(2014.07.25 10:51現在)

Virtualboxの最新バージョン(4.3.14)+Vagrantの環境だと、仮想マシンが起動できないので、
おとなしく前のバージョンのVirtualbox(4.3.12)をインストールしましょう。

ChocolateyでVirtualboxをインストールする場合、バージョンを指定してインストールしましょう。

C:\> cinst virtualbox -version 4.3.12

※※追記※※
■2014.07.25 10:51 現在
https://www.virtualbox.org/ticket/13187
上記ページを見ていただくと、
どうやらこの問題のFix版であるバージョン4.3.15がビルドされた模様。

New build available: https://www.virtualbox.org/download/testcase/VirtualBox-4.3.15-95226-Win.exe

インストールしてvagrant upしてみたところ、当方の環境ではエラーも起きず起動できました。

ただ、本家サイトやChocolateyではまだ対応していないようなので、
上記リンクから手動でダウンロードのうえ、インストールする必要があります。


経緯

最近流行りのChocolatey
Windowsで使える、MacのHomebrewやUbuntuのaptというようなパッケージ管理システムです。
すでにインストールされているプログラムたちを、Chocolateyで管理するように、

「すでにインストールしているプログラムをアンインストールして、
Chocolatey経由でインストールしなおす」

ということをちまちまやっていまして、
VirtualboxVagrantに関しても移行させていました。

ChocolateyはちゃんとVirtualboxの最新版に追従しているようで、
最新のVirtualboxをインストールできるのですが、
それが逆にエラーを引き起こしてしまったみたいです・・・(苦笑


エラー内容

https://www.virtualbox.org/ticket/13187
おそらくこちらに該当するエラーかなと思います。

上記ページ内でも書かれていますが

The only fix is to uninstall and reinstall 4.3.12.

っていうことなので、Virtualboxの4.3.12にバージョンを落としてインストールするしかなさそうですね。


■「vagrant up」でエラー

当方、Virtualbox 4.3.14、Vagrant 1.6.3がインストールされていたのですが、
vagrant upのコマンドを実行すると以下のようなエラーが発生しておりました。

$ vagrant up
~~中略~~
The guest machine entered an invalid state while waiting for it
to boot. Valid states are 'starting, running'. The machine is in the
'poweroff' state. Please verify everything is configured
properly and try again.

If the provider you're using has a GUI that comes with it,
it is often helpful to open that and watch the machine, since the
GUI often has more helpful error messages than Vagrant can retrieve.
For example, if you're using VirtualBox, run `vagrant up` while the
VirtualBox GUI is open.

で起動できない。


VirtualboxGUIでエラー

上記のvagrant upでのエラーの中でも、
GUI使ってるならそっちに役立つ情報あるかもよ」
ってなってたんですが、
結局Virtualboxから起動しようとしても、
下記のエラーが立て続けに出て起動できませんでした。。

f:id:blue_goheimochi:20140725102035p:plain

f:id:blue_goheimochi:20140725102048p:plain

で、結局VirtualBoxのバージョンを下げることで問題回避しましたとさ。

終わりに

上記のエラーメッセージで検索していると、
「たまにそういうことになるから、再インストールするといいよ!」
とか
Virtualboxのプロセスを一旦全部切ってからやるとうまくいくよ!」
とか出てくるんですが、
また別の問題だった・・・という感じでした。。

半日くらいハマったのでくやしい!

参考URL

Windows + VirtualBox仮想マシンが起動できない
http://qiita.com/yusuke-k/items/e1cedaa421be4de25e33

atomがWindows対応したのでインストールしてみた!

掲題の件。

Qiitaに初投稿してみました!

atomWindows対応したのでインストールしてみた(zip版)
http://qiita.com/blue_goheimochi/items/90f2901f053fff2b50d6

プレビューとかMarkdown記法とかステキ。

というかホントに6月1日のGitHubKaigi時点では、
Windows版?ねーよ!」的な感じだった気がするのに、対応早いな。

というか、chocolateyでインストールするのがいいよって言ってるんですが、
そもそもchocolateyに関して知識遅れだったので、そちらも試してみたいです。。

If you haven't used chocolatey before, this is the perfect chance to start.

ってatomの公式ブログでも言ってますし、おすし!

Laravel Meetup Tokyo Vol.4 に行ってきた!

前回のLaravel Meetup Tokyo Vol.3から約3ヶ月。
http://blue-goheimochi.hatenablog.com/entry/Laravel_Meetup_Tokyo_vol3

Laravel(ララベル) Meetup Tokyo Vol.4 に行ってきましたよと。
http://laravel.doorkeeper.jp/events/12367

今回はなんとUstream配信という大役を仰せつかりまして、
事前準備からまるっとやらせていただきました。

おだんみつ様

今回会場が21cafeというおだんみつ様が管理人をやっておられるところでした。

■21cafe
http://www.ni-ichicafe.com/

■おだんみつ様
https://twitter.com/21cafe_shibuya

気になる方は、「おだんみつ」でググるとより魅力が伝わると思いますが、

という感じでみんな初っ端から浮き足立ってた!(と思う)

21cafeさん、IT・Web系のイベントであれば無料で会場をお貸しいただけるそうで、
雰囲気もオシャレですし、おだんみつ様もいらっしゃいますし、
ぜひ何か開催される方は会場候補として頭に入れておいてよいのではと思います!

Ustream配信

今回初の試み(個人的にも)だったのですが、
Ustream配信を担当させていただきました。

@HiroKwsさんにもご覧いただいたようで、
それ以外でも会場にこれなかった方が
ひょっとすると見ていただいてるのかなと思うと
やってよかったなぁと思います。

が、音が切れてるとかスマホタブレットで見ると映像にノイズが入っちゃったりとか
満足にご覧いただけない状況もあるようなので、
次回以降やらせてもらえれば改善していければな・・・と。。

ちなみに今回のために買ったカメラはこちらです!

マイクロソフト フルHD Webカメラ LifeCam Studio Q2F-00020

マイクロソフト フルHD Webカメラ LifeCam Studio Q2F-00020

上の商品のほうが若干安くて私はそちら購入したんですが、
簡易包装のモデルらしくぜんぜんそっちで大丈夫だなーという感想です。

接続するだけであら簡単すぐ配信できちゃう。

せっかく買ったので別の機会でもいろいろ試してみたいなぁと思っております!



Broadcast live streaming video on Ustream

ハンズオン

@ex_takezawaさんのハンズオン!

残念ながら当日はUst配信に付きっ切りだったので、
その場で一緒に手を動かすことはできなかったのですが、
Laravelをはじめて使う方にはぴったりの内容だと思います。

ハンズオンの内容は@ex_takezawaさんがGitHubに置いてくれておりますので、
そちら見ながら是非やってみてほしいです。

https://github.com/laravel-jp/meetup/blob/ytake-handson/vol-4.md

個人的にはハンズオン中に出てくる、
PHPのコーディング規約 PSRに変更する事でdump-autoloadは不要
・依存性の注入
Iocコンテナ
このあたりすごく面白そうなんですが理解に乏しいので、
勉強しなきゃなと思っています!

ってな感じでハンズオンを流してみると、
より深く知りたいな・・ってさらに思ってもらえるような内容だと思いますので、
これからLaravel始められる方はぜひこのハンズオンを自分でやってみて欲しいです。

LT×4

なんとLTが4本も!!

3 Tips of Laravel @kurikazuさん

Google OAuth for Laravel 4 リーウィーさん

https://github.com/edisonthk/google-oauth-laravel4

簡単便利!Laravel Homestead! @syossan27さん

http://qiita.com/syo/items/0104615e5f9ae26f0720

Laravel開発カフェ〜Railsアプリ『かんばんりすと』の移植

Masahiro Yamashitaさん
http://laravelers.doorkeeper.jp/

私も前回のLaravel Meetup TokyoでLTデビューしたので、
@syossan27さんに勝手に仲間意識もってました 笑

次回!

すでに次回のLaravel Meetup Tokyo Vol.5は開催が予定されています!
http://laravel.doorkeeper.jp/events/13148

日程は仮ですが、yiiとの対バン(?)で楽しみですね!
また新たなLaravelユーザーさんとめぐり合えれば・・と思っております。

個人的な話ですが、最近あまりLaravelずぶずぶになってないので、
もっとちゃんとやりたいなぁ・・・と思います!!

でも結局・・・

結局今回は、@ex_takezawaさんもおっしゃってるんですが、
これに尽きる 笑
(公開しませんが一緒に写真とってもらった!限定おだんみつ様ステッカーももろた!)