はらへり日記

腹に弾丸

ファイルサイズをチェックするfslint作りました

なぜ作ったのか 会社でフロントサイドJSを書く時、Browserifyとnpmでいろいろモジュール入れてゴリゴリやってたのだがファイルサイズがでかくなってしまうことが多々あった。 ファイルが1個ならいいが、吐き出すファイルが1個ではなかったしみんなが修正する…

node.jsでprocess.env.HOGEを書き換えようとしてハマった

nodeのコード中で環境変数を書き換えたい そう思って以下の様なことをしてみました。 process.env.LOCAL_ENV = undefined; /* ~略~ */ if (_.isUndefined(process.env.LOCAL_ENV)) { console.log('LOCAL_ENV is not specified'); } しかし何回やってもproces…

HTMLのイベントハンドラ属性における文字実体参照、数字文字参照

文字参照とは 基礎的な話だけどきちんと調べたことなかったので適当に調べてみた。 文字参照とはHTML等のマークアップ文書において直接参照できない文字(例えば文章中に<を入れるとタグが崩れちゃったりする)を表現するために用いられる文字列です。 PHPだと…

electronでテキストフォームが動かない

環境 OS X 10.10.5 (Yosemite) electron 0.37.7 現象 普通にelectronのチュートリアル通りのアプリケーションスクリプトを書いているのにテキストフォームが入力できずにめっちゃ困ってた。 Issue立ててみて何個かアドバイスもらったものの動かず。。。 Keyb…

PHP BLT#4でLTしました

LTした 今年入って2回目のLTをした。 怖いぺちぱーの人がたくさん来ていたので相当緊張したがなんとか喋った。 実践DIコンテナ speakerdeck.com 話した内容を3行で書くと DIコンテナとはなんぞや LaravelにおけるDIコンテナ DIコンテナ活用例 を話した。 こ…

これからのJSの非同期処理関数は全てPromiseを返させるべき

はじめに JSで非同期関数を書く時、個人的に意識してる話です。 別にTipsとかじゃないです。 要するにポエムです。 あしからず(´・ω・`) 非同期関数を使いこなす JSを書いたことがある人なら知ってるであろう非同期処理ですが、僕は非同期処理はなるべくPro…

Babel + Browserifyで環境変数を使用する

前提 Babel6系でES2015のJSをBrowserifyを使用してコンパイルします。 願い JSをコンパイルする際、Ajax通信で使用するURIを開発と本番で分けたい場面がありました。 なので以下の様なことがしたい。 let uriPrefix = '/api'; if (process.env.APP_ENV === '…

Laravel5.1でsuperagentを使用する際の注意点

環境 Laravel 5.1 superagent 1.7.2 ajax通信にsuperagentを使用したい JS弱者なりに「jQueryから自立したい…!」と感じ、Ajax通信を$.ajaxでなくsuperagentというものを採用しました。 かのexpressやstylusを開発したTJ作ということもあり、とても使いやす…

雑兵MeetUp #3でLTしました

雑兵MeetUpに行って来た 詳しくはイベントページをどうぞ。 zohyo.connpass.com 第一回目でもLTしたのだけど、2回目飛ばしての参加でした。 LTをした 年末ポエムでも言ってたが人前で喋る機会を増やしたく、LTした。 スライドはこちら。 speakerdeck.com DB…

2015年振り返り

振り返る。 卒業・入社 4年間お世話になった大学を卒業しました。 卒業してからもなんだかんだ友人と飲んでる気がするので引き続きオナシャス!! 勉強したこと 一部抜けてるが、読んだ本達はこちら 主に以下のものたち。 Git JavaScript React PHP Laravel データ…

Gitのコミットメッセージをまとめて修正する

Git

前提 Shell上でコマンドを叩いて修正する人向けです。 ある日 普段、GitHubのIssue駆動開発をする際はIssueトラッカーを使いたい派なのでコミットメッセージにIssue番号をつけるようにしている。 そんなある日、直近の6コミットぐらいのIssue番号を間違えて…

オール◯ター感謝祭もどきアプリで社内イベントを乗り切る

はじめに この記事はアイスタイルアドベントカレンダー24日目の記事です。 qiita.com 納会の紹介 弊社では毎年、夏と冬に社員を労う納会なるものが開催されます。 (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(…

レビュアーを選ぶ話

はじめに この記事はアドベントカレンダー15日目の話です。 qiita.com 大遅刻になってしまったのは社内宴会での新卒芸を用意していたからで、まぁいろいろ言い訳はあるのですがそちらのことはアドベントカレンダーの24日目に…。 コードレビューの話をしよう …

LaravelのテストをPHPUnitで書く時にやってる工夫

はじめに この記事はアイスタイルアドベントカレンダー4日目の記事です。 1日目に記事を書いたばかりな気もしますがたぶん気のせいですね。 qiita.com 弊社については2日めに先輩の@ktarow氏が書いたこちらの記事をどうぞ! アドベントカレンダー - 複数の言…

JSでカスタムイベントを作る

はじめに qiita.com この記事は株式会社アイスタイルアドベントカレンダーの1日目の記事です。 今日のお話 新卒研修でSinatraで作られた社内向けツールをLaravel5でフルスクラッチで改修するというものを行いました。 その際、フロントJSの実装はほぼ私が担…

Babelで書いたReactのJSXがNo Display Nameになる

困ったこと 最近今更ながらReact.jsを書いているのだがその際に困ったことについて書く。 コンパイルにはGulpを使う前提です。環境としては以下のとおり React.js v0.14 babelify v7.2.0 問題 GulpでES2015で書いたjsxファイルをコンパイルをすると各コンポ…

Guzzleのレスポンスをモック化する

ユニットテスト ユニットテストを書く際、依存してるクラスやライブラリをモックに差し替えると思うが、PHPのHTTPライブラリであるGuzzleにはテスト用のモックを作る機能があらかじめ用意されている。 公式ドキュメントにもちょろっと案内されているが、レス…

Laravelでアプリケーションテストをする際のモックの話

アプリケーションテスト 要するに結合テストのことです。 Laravelでの単体テストは基本的にPHPUnitとLaravelによるヘルパーメソッドを使用することで楽に書けます。 アプリケーションテストもまた、ヘルパーが用意されており直感的に書くことができると個人…

LaravelのAjax通信でCSRFトークンを扱う

LaravelにおけるCSRFトークン Laravel5.1(おそらく以前のバージョンも)ではデフォルトでCSRFトークンによる認証ミドルウェアが有効になっています。 なのでフォームを書くときは以下のようなBladeファイルを書く必要がある。 <form method="POST"> <input type="text"> <input type="submit"> {{ csrf_token() }} </form> こうす…

Laravelのアプリケーションテストでコケた

Laravelのアプリケーションテスト LaravelでPHPUnitを使うとLaravelによる拡張でアプリケーションテストを行うことが出来る(Laravel 5.1以上) テスト 5.1 Laravel なので上記ドキュメントに従って以下の様な感じでテストを書いてみた。

ua-parser-jsでブラウザ判定をする

楽したい ua-parser-jsなるライブラリを使って何も考えずにブラウザ判定できる関数を作ります。 インストール 今回はbowerでインストールします。 $ bower install ua-parser-js --save bowerの他に、npmでも配布されているようです。 自分の作成するスクリ…

PHPUnitでファサードモックに例外を投げさせる

例外を投げたいマン こんなコードをテストしたいとする。 andThrow(n…

dotfilesを作った

dotfilesを作った 今までずっとoh-my-zshに甘えさせてもらって開発をしていたのだがShellに慣れるにつれて痒いところに手が届かなかったり高機能がゆえに動作が重い時に悲しくなったりしてたので、自前のdotfilesをコツコツ育ててきた。 それが結構ほぼ(僕は…

Google Map APIのMap生成をjQueryで行う

困ったこと 例えば以下のようなHTMLを作り、<div id="map_canvas"></div>の部分にMapを生成しようと思う。 <html> <head> <title>Google Map Sample</title> <script src="js/jquery.min.js"></script> <script src="http://maps.googleapis.com/maps/api/js?key={Your Google Map API Key}&amp;sensor=true"></script> </head> <body> <p>Google Map Sample…</p></body></html>

YAPC::2015に行って来ました

行って来た YAPC::2015に行って来ました。 大きなカンファレンスに参加したのは初めてだったのですが、本当に行ってよかったと思いました! 特に1日目の懇親会ではいろんな人と話すことができて、とても刺激的でした。 イベントの大小関わらず、カンファレン…

CentOS7とOS X Mavericksのechoコマンドの違いについて

8/9(日) @bataさんにご指摘いただいて追記しました! 研修でこれから書く予定のWebアプリの開発環境がCentOS7なのでそれに合わせてしこしこdotfilesを書いて、つい先日完成させた。 GitHub: sota1235/dotfiles それを手元のMacで動かしたところ、インストー…

【翻訳】Gitで様々なUndoを行う方法

はじめに この記事はThe GitHub BlogのHow to undo (almost) anything with Gitを和訳したものです。 書こうと思った動機は Gitで様々な処理をロールバックする方法がわかりやすくまとまっているので自分用に整理 英語が超苦手で克服したいから って感じです…

tmuxを起動するとvimの色が変になる時

tmux起動した状態でVim起動したら色がめちゃくちゃになってた話

hubot choiceに変数機能をつけた

hubot choiceとは 名前の通り、与えられた引数の中から1つをランダムにchoiceするスクリプトです。 大学の先輩がゼミ用に実装していたものを拝借し、会社でコードレビュアーを決めるために導入していました。 masuilab/slack-hubot 実装は至極シンプルなので…

HerokuでHubotを指定の時間に寝かせる

Heroku料金体系 Herokuの料金体系が変わり、18h/Dayしか動かせなくなったのでオレオレHubotが24時間稼働できなくなった。 Heroku | Beta Pricing Heroku公式によると無料プランは以下のような仕様らしい。 30分間活動がないとSleepする 1日、6時間はSleep状…