はてなブックマーク - TechTouch for Fusic -Vagrant ハンズオン- を開催しました
    このエントリーをはてなブックマークに追加

    最近プライベートで作っているツールの名前が決まらなくて、どうにもリリースができない小山です。
    よくありますよね。

    さて、今回社内勉強会としてVagrantハンズオンを開催しましたので、紹介します。

    なぜわざわざ開催したのか

    Vagrant、Macならすぐに設定できて試せるのはご存じのとおりです。ハンズオンの必要は全くないですね。

    問題は「Windowsで簡単に導入できるのかわからなかった」ところでした。

    インストールはインストーラでできるだろうことはわかるものの、「その後はあのコマンドプロンプトなのか?」「sshは?」と。

    個人的にはMac側で設定していたので、Windowsで試す気になれず、そのまま放置していました。

    ところが、とてもわかりやすいエントリーを見つけたのと、「新規環境でCakePHP1.2betaをCakePHP1.3.17まであげる」というなかなかアグレッシブな要件が個人的にでてきたので、いい機会なのでWindowsで設定してみました。

    すると、Windows上でも思いのほか便利に使える(コマンドプロンプトがいらない)ことが分かりましたので、「これは紹介しよう」と、社内でハンズオンを開催した次第です。

    この場を借りて@ogomrさんにお礼をいいたいと思います。

    素晴らしいエントリ、どうもありがとうございます。

    ハンズオン資料

    ほとんどは、先ほどのエントリのままなのですが、混乱を避けるためにいくつか省略した形で作成しました(パスの変更はデフォルト、Chefの説明は今回はしない、など)。

    gist.github.com/k1LoW/dda2f213d4dfae35db4b
    (embedしようとしたら、ブログCSSの影響でボロボロだったのでリンクにしました。。。)

    つまづいたところ

    つまづいたところは基本的にありませんでした。

    強いて言うならbox addが時間内に終わらなかったことでしょうか?ここはしくりました。

    終わらなかったので、その後は自分の環境で簡単に説明をしました。

    まとめ

    目的は「難しいものを分かりやすく」というよりも「話題の技術をとりあえず触ってもらうきっかけを作る」だったのですが、とりあえず最後まで説明できたので良かったです。
    今回のハンズオンで「Vagrant?触ったことない」ってことはほぼなくなったかと。
    次回は何かな。Ansibleか・・?

    { 2013.7.29 }

    LambdaとTryと私

      はてなブックマーク - LambdaとTryと私
      このエントリーをはてなブックマークに追加

      こんにちは、Fusicの中野です。
      Ruby on Rails(ActiveSupport) にObject#tryという便利なメソッドがあります。

      1
      2
      3
      4
      5
      
      a = { b: 1}
      a.try(:[], :b) # => 1
       
      a = nil
      a.try(:[], :b) # => nil

      で、便利なのでついついこんな感じで書いてしまいます。

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      
      class Tables < ActiveRecord::Migration
        def up 
          create_table :as do |t|
            t.text :title
            t.timestamps
          end
          create_table :bs do |t|
            t.text :title
            t.integer :a_id
            t.timestamps
          end
          create_table :cs do |t|
            t.text :title
            t.integer :b_id
            t.timestamps
          end
          a = A.new(title: "title")
          a.bs << B.new(title: "title1-1"); a.bs << B.new(title: "title1-2")
          a.bs[0].cs << C.new(title: "title1-1-1"); a.bs[0].cs << C.new(title: "title1-1-2"); a.bs[0].cs << C.new(title: "title1-1-3")
          a.bs[1].cs << C.new(title: "title1-2-1")
          a.save
        end
        def down; drop_table :as; drop_table :bs; drop_table :cs; end
      end
       
      # ↑のようなデータがあったとして
       
      c = C.find_by_id(1)
      c.try(:b).try(:a).try(:title).try { |_| "#{_} == title" } # => "title == title"

      なんかかっこ悪いので、こちらの素敵なライブラリを使ってみましょう。

      1
      2
      3
      4
      5
      6
      7
      
      require &#039;lambda_driver&#039;
       
      c = C.find_by_id(1)
      (-:try < c).(&:b >> :a >> :title >> lambda { |_| "#{_} == title" }) # => "title == title"
       
      c = C.find_by_id(10)
      (-:try < c).(&:b >> :a >> :title >> lambda { |_| "#{_} == title" }) # => nil

      すごく、ナウいですね。

      最後に

      最近、このブログがPHPばかりだったので、なんとなくRubyの記事を載せてみました。
      決して社内研修の次の日なので、疲れているとかではありません。

        はてなブックマーク - PHPMatsuri 2013 に参加してきました!
        このエントリーをはてなブックマークに追加

        初めまして、自転車と焼き鳥が大好きな早崎と申します。
        イベント中に振舞われる魔法の飲物(アルコール)の飲みすぎて体調が何だかよろしくない感じですが
        これから頑張っていきますので宜しくお願い致します。

        発表したネタ

        早速ですが

        WindowsAzureでシューティングゲームを作ってみました

        というタイトルでリジェクトLTをしてきました。

        内容はAzureの仮想サーバー上でWEBサーバーを動かし、PHPでFBログインをさせJSでシューティングゲームをしようというものです。

        クラウドの一つであるAzureですが弊社ではAWSがメインであるため使用する機会がなく、
        折角のいい機会ということでそれを使った何かをということで使用してみました。


        Azureの管理画面、GUIがとてもいい感じ

        Azureで仮想サーバーを立ち上げ、WEB環境を構築(Apache、Postgresql、PHP)をインストール、CakePHPを突っ込んでBakeでひな形を作成

        予め用意をしていたJSで作られたというシューティングゲームを設置、動作確認し完成

        ※ゲーム自体はこちらから拝借しPHP Matsuri用に修正を加えさせて頂きました。
        この素晴らしいゲームを作られた@daishi_hmrさんに感謝いたします。

        と、ここで会場にいらっしゃっていた株式会社pnopの桜井さんからAzureのBlob(AWSでいうとS3)機能を是非使ってみてくださいとお話があったので
        FBログイン機能を組み込み自分のFBアイコンをBlob上に保存しプレイヤーリストとして表示するようにカスタマイズしてみました。


        画面右側のモザイク部分にゲームで遊んでくれたかたのFB写真が表示されます(Blobに保存した画像を表示しています)

        技術的な話

        Azureで仮想サーバーを立ち上げて云々は特筆すべき場所はないと思うので割愛します(AWSでもさくらでも同じですしね)
        今回使用したBlob(ストレージ)、簡単にですが使い方を忘備録的な感じで書いていきます。

        1.Azureのストレージを作成する
        ストレージで「新規作成」→「簡易作成」→「URL(ストレージ名)を入力、場所は東アジアを選択」
        今回は「ストレージ名をmatsuri」とする

        2.作成されたストレージ内にコンテナを追加する
        作成したストレージ内で「追加」→「名前(コンテナ名)を入力、アクセスはパブリックBLOBを選択」
        今回は「Blob名をfoo」とする

        3.PHPでBLOBを使うためにWindowsAzureのPHP用のSDKを取得して設置をする
        github.com/WindowsAzure/azure-sdk-for-php
        CakePHPを使用しているのでapp/Venderへ解凍したフォルダをazureとリネームして設置

        4.コードを書く

        とまあこんな感じで量的には少ないのですが、いかんせん情報量が少なすぎるので実際に動かすまでに四苦八苦しました。

        で、LT参加枠に入っていないにも関わらずAzure賞を頂きWindowsSurfaceRTをゲットしました。
        (桜井さん本当にありがとうございましたm(_ _)m、これから遊び倒してみたいと思います)

        今回の感想

        日本中から沢山の人が集まってセッションしたり開発したりと交流はとても楽しいものでした。

        また、自分の知らない技術がてんこ盛りで話半分ついていけないところもあり、
        もっともっと勉強しなければ!とモチベーションアップに繋がったりと。

        あとは、お酒が沢山飲めて(ry

        と、とにかく、行って損はしなかったイベントでした。
        (北海道の地元の皆様、運営の方々本当にありがとうございました)

        次回も是非参加したいですね

        それでは、また