Author Archive

    はてなブックマーク - PHPmatsriにてCsvCombinePluginを紹介してきました。
    このエントリーをはてなブックマークに追加

    ブログはお久しぶりです。萩原です。

    今回は、PHPmatsuriに弊社、小山、櫻川、杉本と、私の4人で行ってきました。

    PHPmatsuriの感想

    私は、ハッカソンという形式のイベントは初めてで、LTも初めてでしたので非常に緊張しましたが、何とか無事に発表まで終える事が出来て良かったです。

    発表でおーと声が上がった時は非常にうれしかったです。
    後、下記にも載せているホークスのスタメンを出したときに、「何でそんなマニアックな」と言って下さった方、ありがとうございます。
    あれが一番うれしかったりします(笑)。

    普段、私はCakePHPを扱っていますが、SymfonyやLithiumなどの他のフレームワークについてはまったくといっていいほど知りませんでしたので、その二つのセッションを両フレームワークの開発者から聞けたことも非常に貴重な機会でした。

    また、開発風景やLTの発表を見まして、皆さんすごい、もっと自分も頑張らないとと改めて感じました。

    CsvCombinePlugin

    さて、今回私がPHPmatsuriで紹介しました、CsvCombinePluginについてご紹介したいと思います。

    このプラグインはCSVの入出力の処理を簡単に行うことが出来るプラグインです。
    CakePHP1.3と2.0の両方のブランチをGithubで用意しています。

    せっかくですのでCakePHP2の方式で紹介したいと思います。

    まずはこちらのGithubの”cake2″というブランチよりダウンロードしてきて、Pluginディレクトリ内に”CsvCombine”とrenameして下さい。

    CSVの入力

    まずはCSVを添付して配列で返すメソッドを紹介します。

    モデルにBehaviorを宣言します。

    <?php
    App::uses(&#039;AppModel&#039;,&#039;Model&#039;);
    CakePlugin::load(&#039;CsvCombine&#039;);
    class CsvTest extends AppModel{
        var $actsAs = array(&#039;CsvCombine.CsvImport&#039;);
    }

    後は、コントローラで列ごとの配列のキー値を指定したらアクションをたたいて完了です。

    <?php
    App::uses(&#039;AppController&#039;,&#039;Controller&#039;);
        class CsvTestsController extends AppController{
        var $name = &#039;CsvTests&#039;;
    
        function index(){
            if ($this->request->is(&#039;post&#039;)) {
               /***基本必要な個所***/
               //配列のキー値を左から指定
                $list = array(&#039;打順&#039;, &#039;守備&#039;,&#039;名前&#039;,&#039;打率&#039;,&#039;HR&#039;,&#039;打点&#039;);
                //このアクションで配列が返ってくる
                $data = $this->CsvTest->csvData($list);
                 /***!基本必要な個所***/
                if ($data === false) {
                    print_r(&#039;MISS&#039;);
                    exit;
                }
                print_r($data);
                exit;
            }
     
        }

    これで下記の様なCSVを添付すると・・・(PHPmatsuri1日目夜の日のホークスのスタメンです・・・)

    1,遊,川﨑,.271,1,37
    2,二,本多,303,0,43
    3,左,内川,.341,12,73
    4,三,松田,.283,25,83
    5,中,長谷川,.293,4,34
    6,右,福田,.256,1,20
    7,DH,柴原,.077,0,0
    8,一,明石,.277,1,12
    9,捕,山崎,.191,0,11
    P,投,杉内,.200,0,3
    

    以下のような配列が返ってきます。(preで整形しています。

    Array
    (
        [0] => Array
            (
                [打順] => 1
                [守備] => 遊
                [名前] => 川﨑
                [打率] => .271
                [HR] => 1
                [打点] => 37
            )
    
        [1] => Array
            (
                [打順] => 2
                [守備] => 二
                [名前] => 本多
                [打率] => 303
                [HR] => 0
                [打点] => 43
            )
    
        [2] => Array
            (
                [打順] => 3
                [守備] => 左
                [名前] => 内川
                [打率] => .341
                [HR] => 12
                [打点] => 73
            )
    
        [3] => Array
            (
                [打順] => 4
                [守備] => 三
                [名前] => 松田
                [打率] => .283
                [HR] => 25
                [打点] => 83
            )
    
        [4] => Array
            (
                [打順] => 5
                [守備] => 中
                [名前] => 長谷川
                [打率] => .293
                [HR] => 4
                [打点] => 34
            )
    
        [5] => Array
            (
                [打順] => 6
                [守備] => 右
                [名前] => 福田
                [打率] => .256
                [HR] => 1
                [打点] => 20
            )
    
        [6] => Array
            (
                [打順] => 7
                [守備] => DH
                [名前] => 柴原
                [打率] => .077
                [HR] => 0
                [打点] => 0
            )
    
        [7] => Array
            (
                [打順] => 8
                [守備] => 一
                [名前] => 明石
                [打率] => .277
                [HR] => 1
                [打点] => 12
            )
    
        [8] => Array
            (
                [打順] => 9
                [守備] => 捕
                [名前] => 山崎
                [打率] => .191
                [HR] => 0
                [打点] => 11
            )
    
        [9] => Array
            (
                [打順] => P
                [守備] => 投
                [名前] => 杉内
                [打率] => .200
                [HR] => 0
                [打点] => 3
            )
    
    )
    

    CSVの出力

    CSVの出力はコントローラでComponentを宣言して、出力したい配列を準備してアクションをたたいて完了です。(今度は同日の阪神のスタメンです・・・大阪でしたし。)

    <?php
    App::uses(&#039;AppController&#039;, &#039;Controller&#039;);
    CakePlugin::load(&#039;CsvCombine&#039;);
    
    /**
     * ParentEnquetes Controller
     *
     * @property ParentEnquete $ParentEnquete
     */
    class CsvTestsController extends AppController {
     
        var $components = array(&#039;CsvCombine.CsvExport&#039;);
    
        function export(){
            $list[] = array(&#039;1&#039;,&#039;二&#039;,&#039;平野&#039;,&#039;.297&#039;,&#039;1&#039;,&#039;28&#039;);
            $list[] = array(&#039;2&#039;,&#039;中&#039;,&#039;柴田&#039;,&#039;.280&#039;,&#039;0&#039;,&#039;8&#039;);
            $list[] = array(&#039;3&#039;,&#039;遊&#039;,&#039;鳥谷&#039;,&#039;.300&#039;,&#039;5&#039;,&#039;49&#039;);
            $list[] = array(&#039;4&#039;,&#039;三&#039;,&#039;新井&#039;,&#039;.274&#039;,&#039;17&#039;,&#039;89&#039;);
            $list[] = array(&#039;5&#039;,&#039;一&#039;,&#039;ブラゼル&#039;,&#039;.282&#039;,&#039;15&#039;,&#039;66&#039;);
            $list[] = array(&#039;6&#039;,&#039;右&#039;,&#039;マートン&#039;,&#039;.316&#039;,&#039;13&#039;,&#039;57&#039;);
            $list[] = array(&#039;7&#039;,&#039;左&#039;,&#039;金本&#039;,&#039;.218&#039;,&#039;12&#039;,&#039;37&#039;);
            $list[] = array(&#039;8&#039;,&#039;捕&#039;,&#039;藤井&#039;,&#039;.218&#039;,&#039;2&#039;,&#039;15&#039;);
            $list[] = array(&#039;9&#039;,&#039;投&#039;,&#039;スタンリッジ&#039;,&#039;.095&#039;,&#039;0&#039;,&#039;0&#039;);
    
            $this->CsvExport->export($list);
        }
    }

    以下のCSVが出力されます。

    1,二,平野,.297,1,28
    2,中,柴田,.280,0,8
    3,遊,鳥谷,.300,5,49
    4,三,新井,.274,17,89
    5,一,ブラゼル,.282,15,66
    6,右,マートン,.316,13,57
    7,左,金本,.218,12,37
    8,捕,藤井,.218,2,15
    9,投,スタンリッジ,.095,0,0
    

    以上が、PHPmatsuriで発表してきました、CsvCombinePluginの紹介でした。
    このプラグインは実際にはオプションで区切り文字など指定が出来ますので、TSVなどにも対応が可能です。
    GithubのREADMEに詳しく書いているのでそちらもご覧頂けたらと思います。
    よろしければお使いください!

    最後に

    このような、有意義で楽しいイベントを準備、運営していただいた皆さん。ありがとうございました。
    次も参加したいと思えるイベントでした!

    それでは、弊社二人目が明日、また書きますのでよろしくお願いします!

      はてなブックマーク - 【windows】開発環境の移行
      このエントリーをはてなブックマークに追加

      最近、bitshiftersのバスケットの試合で出場3分で息は上がるは、足は痛いは、のどはカラカラだは、汗は全くかかないわと、色々と酷かった萩原です。こんにちは。

      最近会社で新しいPCを買ってもらいました。
      買ったら最初にやることと言えば旧PCからの環境の移行ですね。

      新しくソフトをダウンロードすればすむものもありますが、特に開発環境においてダウンロードのみで済むものはあまり多くないと思います。

      今回、私は移行に大分時間を取られました。
      というわけで今回は開発環境の移行をまとめてみました。

      開発環境移行

      今回の環境の移行はwindowsXPからwindows7への移行です。
      まぁ、windows環境なら大体問題ないと思います。

      Firefox

      XPならC:\Documents and Setting\(ユーザ名)\Application Data\Mozilla\Firefox\Profilesの中のランダム文字列のフォルダ、
      7ならC:\Users\(ユーザ名)\AppData\Roaming\Mozilla\Firefox\Profilesのなかランダム文字列のフォルダを新環境に持ってきます。

      次に一つ上の階層のFirefoxフォルダ内のprofiles.iniの[Profile0]のPathを旧環境から持ってきたランダム文字列に書き換えることでブックマークもアドオンも移行できます。

      Thunderbird

      基本的にFirefoxと同じです。
      XPならC:\Documents and Setting\(ユーザ名)\Application Data\Thunderbird\Profilesの中のランダム文字列のフォルダ、
      7ならC:\Users\(ユーザ名)\AppData\Roaming\Thunderbird\Profilesのなかランダム文字列のフォルダを新環境に持ってきます。

      その後のprofiles.iniの書き換えも同様です。

      PUTTY

      旧環境で、ファイル名を指定して実行でregeditを実行し、マイコンピュータ\HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessionをエクスポートします。
      これを新環境に持って行ってダブルクリックで実行すれば移行完了です。

      NetBeans

      [ツール]→[オプション]の左下にエクスポート、インポートがあります。

      NavicatLite

      [File]の中にExport Connections、Import Connectionsがあります。
      後は、XPならC:\Documents and Settiongs\(ユーザ名)\My Documents\Navicatフォルダ、
      7ならC:\Users\(ユーザ名)\Documents\Navicatフォルダを持ってきます。
      その後、設置場所が異なる場合は各DBでConnection Propertiesを書き換えてあげる必要があります。

      以上、簡単にでしたが移行作業したものをあげてみました。
      一つ一つ調べると結構時間がかかるのでまとまっていることで何かお役に立てたらいいかなと思います。

      それでは。

      いつもの化学豆知識コーナー

      なんか一回始めてしまったんでやめるにやめられなくなったコーナーです。

      今回はフラーレンについてご紹介しましょう。
      フラーレンは炭素が60個以上集まって、球状になっている分子です。
      一般にサッカーボール状の構造といわれていますが、まさにサッカーボールと同様の骨格をしています。

      この分子の面白いところはただ構造が面白いだけでなく、通常の炭素骨格と異なった配置を取るため、変わった性質を持っているということです。

      中でも私が面白いと思う点はフラーレンの中心に金属原子など、別の原子を取り込むことがある点ですね。
      これによって、また分子の性質が変化します。

      フラーレンは発見されたのがそこまで昔でなく、本格的に研究され始めたのはここ10年、15年ほどの話なのでこれからさらに発展が期待できる分子です。

      もうすでに実用化はされていますし、これから色々なところに使われるものだと思います。

      今後のフラーレンに注目です!

        はてなブックマーク - [jQuery プラグイン]draggableの使い方
        このエントリーをはてなブックマークに追加

        アドベントカレンダーも最終日になりました。

        誕生日プレゼントに次いで、アンカーというクリスマスプレゼントまでもらってしまった、弊社安元に続いてまさかの4回目の登場の萩原です。

        まぁ今年はクリスマスは中止なわけですが

        [jQuery プラグイン]draggableの使い方

        今回はjQueryプラグイン、draggableの紹介をします。

        draggableはその名の通り、divやsqpnなどのドラッグ&ドロップを簡単に実装できるプラグインです。

        まずはこちらからjQuery UIをダウンロードします。

        その中から以下のjsファイルを使用します。
        jquery.ui.core.js
        jquery.ui.widget.js
        jquery.ui.mouse.js
        jquery.ui.draggable.js

        実際のコードを見てもらった方が早いと思うので早速コードを。

        <script type="text/javascript" src="jquery-1.4.2.min.js"></script>
        <script type="text/javascript" src="jquery.ui.core.js"></script>
        <script type="text/javascript" src="jquery.ui.widget.js"></script>
        <script type="text/javascript" src="jquery.ui.mouse.js"></script>
        <script type="text/javascript" src="jquery.ui.draggable.js"></script>
        <script type="text/javascript">
        	$(function(){
        		$('div').draggable({
        			helper:'clone',//ドラッグ時に要素を複製する
        			opacity:'0.5',//不透明度の指定
        			drag:function(){},//ドラッグ中
        			stop:function(){}//ドラッグ終了時
        	});
        	})
        </script>
        <div style="border-color:black;border-style:solid;border-width:1px;width:50px;">
        	テスト
        </div>あああ

        draggableにはいくつもオプションが準備されていまして、ドラッグする時の要素の動きから、
        ドラッグ中やドラッグ終了時に関数を指定することもできます。
        関数の中ではthisを使うことでドラッグ中の要素を取得することもできますので、
        DIVを左の枠から右の枠に移すと言った動きを作ることもできます。

        (というか今回draggableを使用した目的がそれでした。)

        他にもたくさんオプションが準備されていますので、多分一通りはできるのではないかと思います。

        少しは役に立つかもしれない化学知識

        毎度おなじみになってきた化学知識コーナー第4回です。
        皆さんクロロホルムってご存知だと思います。
        ドラマとか推理アニメとかバーローとかに出てくるあれです。
        ハンカチにクロロホルムをしみこませて、かがせることで即おねんね、という描写が良くなられてますが、あれは大ウソです。

        化学ではかなり一般的に使われるもので、主に水に溶けないものを溶かすことに使われています。
        蒸発しやすく結構強烈な匂いがします。(少なくとも私は苦手です・・・)

        まぁ匂いを把握していることからわかるとおり、嗅いだら即気絶するようなものじゃありません。
        濃厚なクロロホルムを10分以上かぐと気絶したりするらしいですが・・・

        何でクロロホルムがあんな扱いなのか不思議ですね。
        昔麻酔に使われていたせいらしいですが・・・

        あ、因みに絶対に試したりしないで下さいね。
        発がん性とかありますし。

        総括

        最後なんで簡単に総括もさせていただきます。
        アドベントカレンダーをご覧下さった皆さん、Fusicの皆さん、24日お疲れ様です。
        感想としては、まず結構登場人物が割と偏っていたなぁという感じですね。
        担当を決めるルーレットをテストしていた際は、特に偏ったりしていなかったようなのですが・・・
        特に、企画者の小山が一人だけ当たらないという展開あり、4回当たりが二人もと・・・
        社内もある意味スリリング(?)な24日でした。

        内容も汎用的に使えそうなものから、なかなかコアなものまで多様な記事が登場しました。
        記事の傾向から弊社の何某はどういった分野が得意か、等もわかったんじゃないかなと思います。

        最後に

        これで、Fusicアドベントカレンダーはおしまいです。
        普段Fusicブログに登場しない人物も登場していい企画だったなと思います。
        それではまたお会いしましょう。

        Fusicアドベントカレンダーエキストララウンド(!?)にご期待下さい?