シバン(shebang)をやっと理解した

こんにちは。

composerで提供されているコマンドの中身を見ていたら

と書かれており、そのあとの行にはPHPのコードが。

のように、phpコマンドを使わずに直接PHPのコードが実行出来るようになっていました
この仕組みは シバン(shebang) というらしいです

シバン自体はBashのスクリプトで似たようなものを何度も見たことがあったのですが、おまじない的に捉えており意味を深く考えていませんでした
拡張子や実行コマンドに縛られず、何の言語で書いても良い実行可能なコードを作るのに適しているのでは??
と疑問が湧いたので、調べて理解したものを残しておきます

Continue Reading…

5分で作るPHPフレームワーク(技術調査、設計編)

こんにちは
突然ですが、PHPのフレームワークを作ろうと思います。

大層なタイトルを掲げてしまいましたが、制作自体は全く5分ではありません。けっこう時間かかりました
じっくり時間を書けて調査した結果、記事に倣って書けば5分くらいで完成する、という意味での5分です

記事は2本立ての構成で、今回は技術選定・設計編です。

Continue Reading…

昨今のPHPのテンプレートエンジンについて調べて共通インタフェースを作った

こんにちは。

突然ですが、FuelPHPのビューを書く場合、デフォルトでは生PHP + Viewクラスの構成だと思います。
Viewクラス自体がエスケープ機構を備えているのでXSSは塞げるんですが、生のPHPで書くとisset地獄だったりifが増えたりと不便なところが多く、テンプレートエンジン使いたいと思うことが多々あります。

そんなFuelPHPにはparserというパッケージがあるので、設定を変更すればテンプレートエンジンが簡単に利用できます。

fuelphpでhaml導入したった – ド忘れ防止雑記帳

が、しかし 対応しているテンプレートエンジンの一覧を見てみると、どれも古い。とにかく古い。
良く言えば枯れてるんですが、調べてみると メンテナンスされてないだろこれ… という感じのものが結構ありました。

ということで自分の知見をアップデートするため昨今のテンプレートエンジンについて調べつつ、
parserパッケージのように複数テンプレートエンジンを同一のインタフェースで扱える仕組みを作ってみました。

Continue Reading…

Fluidで任意のWebページをアプリ化する

Untitled

こんにちは。

Google AnalyticsのiOS版がなぜか「Temporary unavailable」で何も情報を出してくれなくなってはや1ヶ月。
もうiPhoneでの閲覧はあきらめてPCでどうにかしようと思い立ったものの、 ただでさえ増えがちなChromeのタブを増やしたくない

たくさんタブ開いちゃうとファビコンすら見えなくなって何のタブかわからなくなるんですよね。動作も重くなるので常に必要最小限のタブだけ開いておきたいんです。
かといってApp storeを探してみてもいいAnalyticsのアプリが見つからない。

ということでWebページをアプリ化するFluidというアプリを使用していくつかのWebサービスをアプリ化してみようと思います。

Continue Reading…

aタグのdownload属性でサーバを介さずにファイルダウンロードする

この記事はHTML5 Advent calendarの16日目の記事です。

HTML5からaタグにdownloadという属性が指定可能になったようです。
この属性が指定されたaタグは、href属性の値をブラウザで開くのではなく、リンク先をファイルとしてダウンロードします。

今までcanvasで画像を生成した画像など、jsで生成したファイルをユーザに保存させるにはwindow.openにdata urlを渡して新窓で表示させ、ユーザに右クリ等で保存してもらう方法しか知らなかったのですが、
aタグのdownload属性がまさにやりたいことドンピシャだったので備忘録を残します。

Continue Reading…

Goの環境を作るAnsibleの設定をリファクタした

Goの環境を作るAnsibleの設定をリファクタした

の投稿です。

まだGoもAnsibleも良くわかってない頃に作った、Goの環境を整えるAnsibleの設定をリファクタリングしました。

やってる事はごく当たり前なんですが、冪等性を担保し、changedが出ないことによって何回でもいつでも実行できる環境にしたので、その過程をメモします。

Continue Reading…

HTML5のConstraint validationでライブラリ要らずならくらくバリデーション

こんにちは。
Hamee Advent Calendar 2015 8日目の記事です。

Chromeの開発者ツールでHTMLの要素を眺めていたらvalidityという属性を見つけました
validityプロパティの中にはpatternMismatch, tooLongなどそれっぽいプロパティとbool値。

調べてみたら フォームのバリデーションはこれだけで十分なのでは
と思うほどに便利だったので詳しい機能の紹介と、より便利に扱う小ネタの紹介です。

Continue Reading…

APIドキュメントでAPIサーバをテストする

Screen Shot 2015-12-05 at 11.56.30 PM

この記事はWeb API Advent calendarHamee Advent Calendar 2015の6日目です。

SPAやハイブリットアプリを仕事でも趣味で作っているので、APIサーバを実装する機会が増えています。
手軽にしっかりしたドキュメントを書けて、かつ実装とドキュメントの整合性を保つのってコスト高いな…。と悩んでいます。

Web APIのドキュメントといえば、SwaggerJSON-Schemaあたりが有名かと思います。
例えばQiitaのAPIv2はJSON-Schemaを使用して書かれています。

今回はそれらとは違うAPI Blueprintというツールを使用してAPIドキュメントを作成し、そのAPIドキュメントを自動テストとして実行できるDreddというツールを使用し、
APIドキュメントを書いたら、APIサーバのテストもできる 方法を残します。

ついでにAPI Blueprint形式のドキュメントをホスティングしてくれるApiaryとGithubを連携し、masterにマージされたら公開されているAPIドキュメントも最新になるというのもやってみます。

Continue Reading…

フォーム周りで地味に使うUIと実現方法

れこです。
Hamee Advent Calendar 2015 2日目の記事です。

「明日使えるフロントエンドと作業効率化の備忘録」とか銘打っておきながら、
フロントエンドの記事を書くのはものすごく久々な気がします。

フォームやinput周りを扱っていると、毎回小さな機能を作るたびググって毎回使用するライブラリや実装が揺れてしまうので、
2015/11/24現在での決定版を調べてまとめて備忘録にします。

Continue Reading…