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

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

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さんもおっしゃってるんですが、
これに尽きる 笑
(公開しませんが一緒に写真とってもらった!限定おだんみつ様ステッカーももろた!)

勉強会でDockerのことを話してみた

社内でひっそりと勉強会を開催しているんですが、
Dockerをちょろっとさわってみたのでそこで情報共有のために、

  • 5分でなんとなーくわかるDocker
  • Dockerをすこーしさわってみる

と2回に分けて発表しました!

5分でなんとなーくわかるDocker

いろいろと端折ってたり、
自分の理解不足で入ってなかったりする情報があるかと思いますが、
「なんとなーく」Dockerの雰囲気はつかめるかな・・・

そして、さらに理解とどんな感じかなーというのを深めるために、
手を動かしてさわってみる感じの発表もしてみました!

Dockerをすこーしさわってみる


ローカルPCでVagrantでホストOSを起動して、
ホストOSのDockerでコンテナを起動する。
(+コンテナにApacheインストールしてブラウザでアクセスする)

っというところをゴールに据えて、
みんなで手を動かしながらDockerに触れてみました。

Vagrantインストールしたり、
Dockerインストールしたり、
Docker Image落としてきたり、
ってところがダウンロード時間とかかかっちゃって、
「じゃあ次のスライドのコマンドちょろっと紹介しますかねー」
とか言ってスライドを行ったり来たりしちゃったりしましたが、
おおむね雰囲気をつかんでもらえた印象でした。

まとめ

正直、どんな感じでプロダクション環境とかに使ったりできるのかなー
と、まったく運用イメージがついていない状態(笑)ではありますが、
Docker1.0のリリースも目前のようなので、
今後の動向に期待しつつ、情報集めたいなーと思っております。

Agile Samurai Base Camp Re:TDD に行ってきた!

Agile Samurai Base Camp Re:TDD に行ってきました!
http://agilesamurai-basecamp.doorkeeper.jp/events/9333

前回(http://agilesamurai-basecamp.doorkeeper.jp/events/5844)はインセプションデッキトラックで参加させていただき、
「後ろでやってるTDDトラックも見たいなー」
「体が二つほしいなー」
と思っていたので待望でした 笑

印象に残ったところをさっくりまとめます。

基調講演

TDDのこころ/@t_wadaさん

TDDは下記の平鍋さんの記事でいうところの、

アジャイルの「ライトウィング」と「レフトウィング」
http://blogs.itmedia.co.jp/hiranabe/2012/09/rightwing-and-leftwing-of-agile.html

「レフトウィング」に含まれる。

アジャイル開発が語られるときには割と、
「ライトウィング」のほうがフォーカスされがちだという。

が、右サイドだけ強くても点が取れない。
と日本代表の内田と長友を引き合いに出したスライドは、
サッカー経験者としてはすごい納得感があった。

キャプテン翼でいえば・・・
って考えたけど、石崎と早田・・・?
だめだ、これはしっくりこない。

アジャイルサムライのP235ページにも書かれている

最後に残った4つの章では、私が「問答無用で実践すべき」だと考えているアジャイルなソフトウェアエンジリアニングのプラクティスを紹介していきたい。

と紹介される中にも、
ユニットテストリファクタリングテスト駆動開発(TDD)があげられている。

ということで、「開発環境」による支えも、
アジャイル開発の一翼を担っているのだと、
改めて意識させられた。

ペアプログラミング

FizzBuzzをお題としたペアプログラミングを、
デモとしてやっていただいた。

色々と端折られた箇所はあったようですが、
ペアプロにより
・TODOリストを作成
・RED→GREEN→リファクタリングのサイクル
・役割チェンジのタイミング
・新たなTODOの追加
の流れがすごく見ていて分かりやすく、
実践で実際やる場合の想像がついた気がします。

工数見合いの部分とか色々と社内で実施しようとすると調整が難しそうだが、
・その場で2人でコードを見ている分バグが入りにくそう
・互いの知識や書き方のナレッジ共有
・仕様を(ちゃんと)把握する人が2人になる
といったあたりはかなり有効なのかもと思いました。

質問コーナー

@t_wada さんに直接質問できるという貴重な場で、
テストコードがなくプロダクションコードだけしかない場合、どのあたりから手をつけるのがよいのか・・・?
という質問があり、

・依存の少ない部分を狙い撃ちにする
・仕様化テストで今動いている仕様をテストに落とし込む

の部分が非常に腑に落ちました。
仕様化テストについては、

レガシーコード改善ガイドでも紹介されているようなのでぜひ読んでみたい。
テストがないコードはそもそもテストが書きにくいという場合が多いが、それを泥臭くステップバイステップで解消してく・・というような流れで分かるそうなので、
0からテスト駆動始めるよ!じゃない人にはお勧めっぽいです。

アジャイルサムライの次に読む本

これは読みたい!と思ったものをメモ。

JUnit実践入門

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

JUnitの本だけど、Unitテストとは何か?的なところから書かれている。CIとかCucumberとか欲張り。JUnitはこれ1冊でOK!


リーダブルコード

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

いまさら説明不要のリファクタリングを知るための良本


レガシーコード改善ガイド

レガシーコード改善ガイド (Object Oriented SELECTION)

レガシーコード改善ガイド (Object Oriented SELECTION)

先ほどもあげましたが、レガシーコード(テストがないコード)からはじめるTDD本ぽい。
現場に一番必要とされている本かもしれない・・とのことだった。


ソフトウェアテスト技法ドリル

ソフトウェアテスト技法ドリル―テスト設計の考え方と実際

ソフトウェアテスト技法ドリル―テスト設計の考え方と実際

TDDをやっているてバグが生まれてしまう場合、
それは自分の考えが及んでいない部分になることが多い。
そういう部分を拾いより品質を上げるためのステップアップの1冊。


達人プログラマ

達人プログラマー―システム開発の職人から名匠への道

達人プログラマー―システム開発の職人から名匠への道

  • 作者: アンドリューハント,デビッドトーマス,Andrew Hunt,David Thomas,村上雅章
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2000/11
  • メディア: 単行本
  • 購入: 42人 クリック: 1,099回
  • この商品を含むブログ (347件) を見る
新人が入ったときに1冊目これを渡す会社も多いそう。
積まれているので早く読む。


データベース・リファクタリング

データベース・リファクタリング

データベース・リファクタリング

  • 作者: スコット W アンブラー,ピラモド・サダラージ,梅澤真史,越智典子,小黒直樹
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2008/03/26
  • メディア: 単行本
  • 購入: 10人 クリック: 211回
  • この商品を含むブログ (53件) を見る
データベースの体質改善テクニック。
データベースのよくない設計にどう対応するのか?ということが書かれているらしく大変興味がある。
が、絶滅危惧種なので見つけたら保護してください 笑

そのほかにあげられていた本も読みたいが、
特に気になったのが上記な感じ。

他の現場を知ってみよう

皆さん口をそろえておっしゃっていたのが、
自分にもチームにも根付かせていくためには、
“無理をしない”ということをあげてらっしゃった。

テストを書くことで、モチベーションが下がったり、変更が怖くなってしまったりすることの無いようにしないといけない。
プログラミングが嫌いになってしまったら本末転倒。

中でも、@PoohSunnyさんのお話しの中にあった、

× レガシーコードをTDDで改善する

のではなく、

○ レガシーコードで自分のTDD力を高めよう

というお話は、明日から実際に始めるための勇気をもらったような気がして、とてもうれしかったです!

私的まとめ

実は以前に@t_wadaさんの発表を聞く機会があって、

DevLOVE現場甲子園2013で拝見したときも「TDDやらねば・・」と思いつつも
今まで実践できていなかった自分がいたのですが、
本日改めて、「やらねば!」という気持ちとともに「なんかできそう!」という気持ちになっています。

この気持ちを切らさぬよう、頑張りたいです。



いつも自分が「キツいなー」とか「つらいなー」とか思ったときに思い出す言葉があります。

「適度に適当に。好い加減で。」by 嫁

「適当」も「好い加減」も言葉で聞くと、
すごくネガティブな表現というか雑な感じがするのですが、

「適当」
http://dictionary.goo.ne.jp/leaf/jn2/151064/m0u/%E9%81%A9%E5%BD%93/
→程度などが、ほどよいこと。また、そのさま。

「好い加減」
http://dictionary.goo.ne.jp/leaf/jn2/9323/m0u/%E5%A5%BD%E3%81%84%E5%8A%A0%E6%B8%9B/
→程よい程度。手ごろ。適当。

という風に考えるといつも「あ、そっか」と思えて気持ちが楽になります。


そんな感じで、
TDDも「適度に適当に。好い加減で。
という気持ちで1つずつ、少しずつ進めていければなと思います。