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

はらへり日記

腹に弾丸

2016年振り返りと2017年目標

いまさらに。 2016年やったこと 発表しまくった 2016年の目標としてアウトプットの量を増やすということを掲げていた。 なので「申し込んでからネタ考える」勢いでLTやカンファレンスに申し込みしまくった。 社内勉強会と外部発表合わせて18枚のスライドを作…

来客(カノジョ)用にVLANを切る話

この記事は カノジョできないエンジニア Advent Calendar最終日の記事です。ニゲキレナカッタ… qiita.com 前半ポエムなので技術の話が見たい方は「今日のお話」から読んでどうぞ。 Advent Calendarの参加者の方々、お疲れ様でした 25日間の戦いがようやく終わりを告…

PHPでISO8061に準拠した日付フォーマットをバリデーションする

この記事は PHPアドベントカレンダー13日目の記事です。大遅刻ですごめんなさい。 qiita.com 正直、なぜか投稿した気になってしまってました…ちゃんとやらなきゃダメですよね気をつけます…。 したいこと すいません。タイトルちょっと厳密に言うと違います。…

身内向けにCTF開催した

CTF開いた 某コミュニティでCTF開いた やるきっかけとしては ISUCONで人権を失う SECCON予選で人権を再び取り戻そうという決意を固める でもCTF力全然ないし練習会しよう という感じ。 学生の頃にちょっとだけCTFに参加したことがあったのと、ちょっと使って…

Laravelでセッターインジェクションする

この記事は Laravelアドベントカレンダー8日目の記事です。 qiita.com 前提知識 この記事ではDIパターンを実現する1つの手段であるセッターインジェクションをLaravelで実現する方法を紹介します。 なのでDIパターンやDIコンテナを知らない方は先にこれらの…

アイスタイルを退職します

近況報告 兼 ポエムです。悪しからず アイスタイルを退職します 新卒として入って2年目ですが、今月一杯でアイスタイルを退職することになりました。 退職の動機として、「やめたいから転職する」というより「行きたい場所があるから転職する」というニュア…

社内で横断的に使えるPHPライブラリを書こう!

この記事は アイスタイルアドベントカレンダー3日目の記事です。 タイトル的に技術知見っぽいんですがどちらかと言うとポエムに近いのであしからず。。。 qiita.com 社内の共有ライブラリを作る 弊社といえば化粧品クチコミサイトの@cosmeを運営してい…

今さら聞けないChromeエクステンションの作り方

この記事は JavaScriptアドベントカレンダーの1日目の記事です。 qiita.com JavaScriptというよりはChromeの話かもしれませんが、最近エクステンションを作って楽しかったので簡単に作り方を書いてみます。 Chromeエクステンションとは github-label-creater…

Webpackで複数のファイルをそのままバンドルする

やりたいこと お仕事でページごとに必要なモジュールのみimportしたJSを実装し、それぞれコンパイルしたいという場面があった。 イメージ的にはsrc/(pc|sp)/**/*.jsをフォルダ構成やファイル名をそのままpublic/js配下に吐きだすといった感じ。 Webpackは基…

webpackのDefinePluginとbabel-plugin-transform-environment-variablesの併用には注意

やりたいこと webpackを使ってフロント用のファイルをバンドルしたい。 そのとき、環境変数に合わせて値を変えたいという場面があった。 ノリ的には以下のようなコード。 if (process.env.NODE_ENV === 'development') { console.log('Debug message'); } こ…

ISUCON6予選に出た

結果 正確なスコアはメモし忘れたんですが、最高点が15000点ぐらいでした。 後半はずっと14000点を前後してた 何をしたか 自分用に覚えてる範囲で軽くメモ。 まずalp, pt-query-digestを仕込んでベンチを叩く。スコア200くらい DB周りの@aboyとミドルウェア…

npm scriptsでエラーログを表示させたくない話

npm run hogeでエラーを出したくない eslintでのチェックやトランスパイルの実行は下のような感じでpackage.jsonに書いてnpm run lint等で実行するようにしてる。 { "scripts": [ "lint": "eslint src/", "build": "babel src --out-dir dest" } } その際、e…

YAP(achimon)C::Asia Hachioji 2016に登壇しました

YAPCに登壇したぞ! 30分のトークとLTでそれぞれ登壇しました。 10分以上の発表は実は初めてでした。 年初のポエムで立てた対外発表の第一歩として応募して採択されたので頑張った。 sota1235.hatenablog.com DIコンテナの話 DIの発表はよく見るけどDIコンテ…

社内で1年ぶりにXSSの話した

1年前 だいたい1年前、社内でXSSの認知を広めるべくXSSの話をわからないなりにしました。 今さら聞けないXSS from Sota Sugiura 1年経ったのでもう一回、社内で発表しました。 XSSの無い最高の夏を過ごそう ほんと、タイトルの通り。 今回は座学より実践形…

JSのArrayBufferがよくわからなかったのでほんの少しだけ調べた

前提 初心者なりの超浅い理解です。 (というのも、元々Web Audio APIに食わせるためだけに調べてたので…) ArrayBufferとは ひとことで言うと「JavaScriptでバイナリを扱う」ために生まれたという認識。 なので画像処理等に使われていることが多い印象です。 …

ファイルサイズをチェックする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状…

CSSで均等割り付けを実現する方法

研修中、社内のツールに対して問題点を探し、改善策を提案しろというのがあった。 その際、運用フロー、機能等いろいろケチをつけたのだが、その1つにテキストの右端がでこぼこしていて見づらいので均等割り付けにしたほうがよいと指摘した。 その際、「この…

Gitのコミットメッセージに接頭語をつけてる話

Git

Gitのコミットメッセージのルールで何かいいのないかなぁとなんとなく思っていて 丁寧にまとまってる記事がすごくたくさんあって「お!これええやん!」ってなるものの使ってみると僕の場合は以下の2つの壁にぶち当たった ルールを覚えられない 選択肢が多…

print("Hello World")

ブログ移転します(予告) Middleman + GitHub Pagesという運用でかれこれ半年やってきて、ブログを手元で書いてbundle exec middleman deploy!ッターン!みたいなのすごい快適だったんだけど、 痒いところが異常に増えてきて、その中でも特に思ったのが いい…