読者です 読者をやめる 読者になる 読者になる

mabulog

このブログは、mabuの平凡な日常を淡々と描く物です。 過度な期待はしないでください。 あと、部屋は明るくして、 モニターから3メートルは離れて見やがってください。

FTP, SFTP, FTPS adn SCP Clients by PHP

PHP

bardicheというPHPプラグインを作り始めた。 きっかけはawesomeに無い事に気づいたからだ。 最近のトレンドなどにはめっぽう疎いが最新の機能を知るという意味も込めて、 率先して意味もなく最新の機能を投入した。

インターフェースを共通化させて、引数で処理を分岐している部分が、 PHPのインターフェースと相反するため、ココらへんは要修正項目で今後も改修したいと思う。

#vimconf2015 に参加した

Vim

vimconfへ先日行ってきました。会場は去年同様にmixiさんです。

f:id:kazuomabuo:20141109091952p:plain

スタッフ参加

今回はスタッフ参加で途中ピザを受け取りに行ってきました。 道中は高低差が多く、ピザが滑り落ちそうになるなどあまり速度が出せず、 行きで使ったルートがあまりにも台車には不向きだったため、帰りは別ルートで帰るなどありましたが、 無事配達できたので良かったです。

セッション

去年と違い発表している内容がある程度わかるようになった気がしました。 これは1年間、Vimに関しての情報追い、勉強してきたおかげだと思います。

@kamichidu さんのlibcall呼び出しは全く知らなかったので、 ユースケースが発生したら積極的に活用したいと思いました。

@lambdalisue さんのvim-gitaが良さそうだでした。 vim-fugitiveを入れてもステータスバーにどのブランチで開発しているか確認するためにしか利用していなかったため、だいぶ前に削除してしまい、それっきりでした。 vim-gitaに乗り換えるにあたってポイントは一度起動したVimは閉じない運用が必須な印象でした。(ターミナル運用を想定)
私はある程度できたらVimを閉じてUndo履歴を整理しているのですが、":h clear-undo"にある設定をvimrcに設定し、 また1つVimを閉じる必要がなくなりました。Vimshell, Vimfilerを入れて本格的にVimを閉じなくなるにはまだまだ時間がかかりそう。

突然ですが、ここでvimconf中に質問したアンケートの結果発表。 結果では必要なときに立ち上げる人が7割近くもあり、とても興味深い結果となりました。

最近、JavaScriptの気運が高まってきたのでとてもタイムリーな感じで、 @yoshiko_pg さんのフロントエンド目線からのスライドがすごく勉強になりました。 エディタの使い分けは必要だと思いますが、emmetをフル活用してその他のPluginでよしなに使いこなしてベースを作る速さはヤバかったです。

Vim

vimconf2015の日も開催した毎週土曜日のVimrc読書会を除いて最近、Vim活ができていなかったので、 GitHubで管理しているhombrew-macvimの(野良)formulaをTravisCIに対応させました。 設定方法をネットで調べながら、適時修正して無事にテストが通りました。

Attended "次世代 Web カンファレンス"

Diary

次世代 Web カンファレンスに行ってきました。
当日は河合塾の模試が会場である法政大学の1,2Fであり、他所では情報技術者試験もありで、
TwitterのTLが面白い感じに流れてました。

以下、カンファレンスのセッションメモの雑書き。

f:id:kazuomabuo:20151018230352p:plain

Accessibility

メタデータを改良し、ブラウザ等に解釈しやすいようにする「マシンリーダブル」、コンテンツ自体の色を反転するボタン、文字サイズの切替をするボタンなど、人が解釈しやすいようにする「ヒューマンリーダブル」という2種類の考え方。
ユーザがブラウザの機能を理解しているならば、文字サイズ切替ボタンは本来は不要ではあるが、モバイルサイトでは拡大を禁止するなどあるため、一概にボタンが不要とは言いきれないのも実情。

健常者である事を前提としたAccessibility。
わりとよくあるのは健常者で更に"日本語を理解できる人"を前提という問題がある。これに関してはどこまで許容するかで開発コストが肥大化するので、大変かなぁと思いました。

Googleで商品を検索すると価格まで出るのはメタデータのおかげという話。
スクレイピングで価格情報を取得する場合には、ページ内にある複数の料金情報から該当するものが判断できないため、メタデータに価格情報を埋め込む事でGoogleに理解できるようにしてあるとの事。

所感、マシンリーダブルの発展をすごく感じたし、もう少し理解を深める必要があるかなと感じた。

JS Next

ES6を利用している登壇者だが、IE8(ES3)は実際問題捨てられないという過去の精算ができていない感じから始まったセッション。
後半で出てきたが、BabelはES6からES5にトランスレータと出来るものらしい(名前は知ってたよ、名前は)。
ESはドンドン先に進んでいくが、ブラウザが追いついていない。その差分をBabelで吸収する形で今後も活用される存在になるだろうとの事。

ESの仕様はふんわり決まっていて、明確に決まっていないとの事。

"scriptタグは複数書ける"×"+attributeが複数ある"問題。
複数のJSが共通するJSをimportしている場合に、attributeが異なると問題が発生する。個人的にはimport方法のルールを共通するJS側で制御するのがいいんじゃないかという気がする。

TypeScirptでは型定義が出来るとの事(JS界隈わからなす)。
PHP7でも型宣言(関数の引数と返戻値)出来るので、やっぱり型大事、絶対。型宣言が良いのはエディタ(IDE)が理解しやすい事で、言われてみればという感じだった。

Standardization

@ourmaninjapan さんから言語の壁からの「そもそも英語が読み辛い」。@lef さんからIETFは章組立にルールがなく、とても読み辛い。@azu_re さんからES5の仕様書はWordだったという事に驚きました。全体的に保守的で昔のフォーマットを引きずっているが、GitHubを使ったりと変わりだしたとの事。
標準仕様を策定するにあたり、negotiationがとても重要、自分よりもその規格で詳しい(偉い人)に一人づつ勝っていき提案を通すのが、すごく生々しかった。

今のウェブはレンダリングエンジンにベッタリのため、実装は楽だが、
少しの事をやるにもレンダリングエンジンがフルフルについてくるのが問題である。

HTTP2

HTTP2はブラウザに対応してもらう事が待たれるとの事。
FireFoxは優秀、ChromeFireFoxに負けないために対応するだろうとの事。IEについては残念至極らしい。

並列に送る処理の中で優先順位という考え方があるが、「Priorityが銀の弾丸」だとは思わない方がいいとの事。

HTTPS(TLS)時代におけるTCPの負荷が高まる中で、TCPコネクションを束ね、HTTP2のメリットの高速化をはかるとの事。
特にGoogleTwitterなどの高負荷サイトで最高のエクスペリエンスを味わえると。

Monitoring

監視とは障害の検知だけでなく、将来を見据えたシステムの最適化などのために必要。
監視の間隔が1分でもスパイク見逃す時があるので辛い時もある。
インフラエンジニアが少ないので、ミドルウェアを大量に入れると手がまわらないので、
少ないミドルウェアを秘伝のタレで良しなにこなすのは知見というか、すごい。
最近のスタートアップは最初からMackerel、DataDogなどの監視SaaSを活用する傾向との事。
秘伝のタレを作る前から監視をしっかり+インフラエンジニアが少なく、サーバ/ネットワーク設定に人をさいている場合に良さそう。

RDSのようなマネージッドサービスが増えた反面、ブラックボックスが増えた。
ただ、全体的には負荷の軽減方向に寄せたい(切実。

感想

名前を知っているだけの知識が多く、全体的に初めての情報が多かった。
ココらへんは情報追ってるだけではわからない部分も多々あり、
アプリ開発をしている自分としてはJSの理解をもう少し深めたいかなという思いがある。

vim-sqlfix を改良した(1)

Vim

前回の記事からもろもろ改良したので備忘録を残しておく。

追加した機能

対括弧チェック機能

整形する過程で対括弧が一致しないとよろしく挙動をしていたので、
いっそ対括弧をチェックすれば良いかなと思い、チェック機能を追加しました。

EXPALIN文追加オプション機能

SQLを整形する際に整形したSQLをそのまま、EXPLAINにかけるケースが多々あるため、
オプション機能を追加しました。

一行の文字列長制限オプション機能

テーブルのカラムを全て出力している場合などで1行が長くなって見辛いので、
指定した文字列長になった際に改行するオプション機能を追加しました。

[BugFix]閉じ括弧チェック処理をスタック化

元々は関数の閉じ括弧を優先し、その後通常の閉じ過去を処理するロジックになっていました。
ただ、関数の括弧、通常の括弧を交互に利用しているSQLを整形した際に期待した動きになっていなかったため、スタック化し、LIFOで処理するように修正しました。

感想

ボチボチ良さ気になってきたので、使ってみてよかったら、
右上のStarをクリックして頂けると私が幸せになれます。

github.com

vim-sqlfix を作った

MySQL Vim Yii

前々からVimでのSQLの整形に違和感と不要な手間が気になっていたのですが、
幾つかプラグインを作ってなんとなくそろそろいけそうな気がしたので自作した。
ただの整形ならVimというカテゴリーでもすでにありますし、Vim以外も大量にあります。

ただ、私が求めているのはFrameWorkのログを即座に整形して、
実行可能な形式にできるVimプラグインです。
そういったニッチなプラグインは聞いた事がなかったのが、作った大きな理由です。

使用方法などについては、GitHubリポジトリを参照して頂けると幸いです。

github.com

今のところ、PHPのYiiにのみ対応しているのですが、
今後はいろいろなフレームワークに対応していきたいと思います。
特にRailsに対応して認知度を上げたいなと個人的に思っていますが、
railsインストールにてこずってる雑魚なので、railsSQLを実行した時のログを教えて頂けるとうれしいです。

Kindleストア以外の(Non-DRM)電子書籍をKindleに取込

Diary Mac

Kindleストアで電子書籍を買うように心がけていましたが、株式会社技術評論社出版の本で読みたい書籍がKindle化されず、(買っていないが)積み本状態が酷かったためどうにかKindleで読めないかと調べた備忘録を残します。

Non-DRM電子書籍について

以前から存在は知っていた株式会社技術評論社出版の電子書籍について調べた所、Non-DRMだという事がわかり、これはイケると確信しました。

DRMフリーで専用アプリ不要な電子書籍ストアをリストアップ | Binbo-Special – WEB制作や運営に関する楽屋話 –

Kindleアプリのインストール

Kindle Previewerを利用する事でEPUBをMOBIに変換します。ただ、Kindle Previewerを使うにはJava SE 6(古いバージョン)が必要となるため、別途インストールが必要となります。

ここからJava SE 6をダウンロードしてインストールを行います。
Kindleアプリはhomebrewから行いました。

$ brew tap caskroom/cask
$ brew cask install kindle

※kindle-previewer は私の環境ではエラーとなったため、
 Kindle Previewerのサイトからインストーラを取得してインストールしました。

$ brew cask install kindle-previewer

Kindle PreviewerはこのままだとJava SE 7(現在バージョン)を参照する問題があるため、Java SE 6を参照するようにid:JunichiItoさんの記事を参考に起動スクリプトを修正しました。

$ /usr/libexec/java_home -v 1.6
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

$ vim /Applications/Kindle\ Previewer.app/Contents/MacOS/Launcher

   export DYLD_LIBRARY_PATH=.
   export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

Amazon Cloud Driveにアップロード

Amazon Cloud DriveにMOBIファイルをアップロードします。アップロード方法はいろいろありますが、極秘文書でないのならメールで送付するのがツールをインストールする必要もなく楽に実現できます。アップロード手順の詳細はこちらに記載されています。

タブレットで動作検証

各デバイスで確認して問題なければ、完了です。

感想

この手の情報があまり出回っていないのは問題があった時に誰が悪いのかという問題に発展するので出版社もリーダー作成元もあまり情報を発信しないのが電子書籍が普及しない理由ですね。私自身もNon-DRMだという事を知るまでは諦めていました。

参考サイト

NERDTreeが便利だった件

Vim

NERDTreeをいい感じに使い込んだので、ここらへんでブログにまとめる。

設定

NERDTree設定例

コンセプト

Netrwを起動させず、NERDTreeを起動するようにpluginの制御と遅延ロードの徹底です。

NERDTreeを使うにあたって、プロジェクトディレクトリ内で起動した際に、プロジェクトのルートディレクトリから展開するようにした。また、プロジェクトのルートディレクトリをNERDTreeのブックマーク機能を利用する事で良い感じに移動が出来て便利です。