はらへり日記

腹に弾丸

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にはテスト用のモックを作る機能があらかじめ用意されている。 公式ドキュメントにもちょろっと案内されているが、レス…