はらへり日記

腹に弾丸

PHPカンファレンス2017に登壇しました #phpcon2017

資料はこちら 雑感 初めて技術シェアというよりも体験シェア系の発表をした スライドづくりがかなり難航した それなりにストーリーを保てた発表ではなかったんじゃなかろうか アーキテクチャ図を書くのが難しい… みんなどんなものを使ってるのか知りたい Clo…

PHPUnitで例外を投げた後の処理をテストする

例えばこんなクラスコードがあるとする。 db = $db; $this…

PHPカンファレンス福岡2017に登壇しました

行ってきました 総じて最高でした。 トークをしました JavaScriptの静的型解析ツールであるflowの話をした。

flowtypeからweakモードが無くなってた

weakモードとは flowtypeの説明は割愛します。 知りたい方は福岡PHPカンファレンスに来て私のトークを聞いてください 冗談はさておき、ざっくり言うとflowtypeはFacebook製のJavaScript用静的型解析ツールです。 ファイルの頭に// @flowを書き足すことでその…

eslint-plugin-importでNODE_PATHにパスを足したい

NODE_PATHを足す JavaScriptを書くとき、ディレクトリを掘って階層が深くなったりテストフォルダが別にあるとrequire('../../../../hoge');みたいになってつらい なのでWebpackで固める場合はconfigで、サーバサイドjsの場合はapp-module-pathを使ってNODE_P…

メルカリに入社して1ヶ月経った

1ヶ月過ごしてみて。ポエムです悪しからず。 楽しい 結論から言うと毎日楽しいです。 社内の雰囲気や制度については事前に社員さんとお話させてもらったり、mercanを読んで知ってたんだけど、入る前の想像とのギャップはほぼ感じずに過ごしてる。 強いて言う…

CTF for ビギナーズ Finalに参加してきました(Write up)

CTFはかじったことはあったけどどんな解き方があるかとか全然わからなかったので参加してきた。 2016.seccon.jp 講義のおかげか、運良くぽんぽん問題が解けて3位になれました。 駆け込みの1問で3位。やったぜ #ctf4b pic.twitter.com/6UZzZOrawg— きりん (@s…

macOS環境下で複数ファイルの先頭に一括で文字を挿入する

やりたかったこと 既存コードにflowを導入したかったのでとりあえず全JSの先頭行に// @flow weakを挿入したかった。 shell find ./app/assets/js -type f -name '*.js' -exec sed -i "" -e $'1s/^/\\\/\\\/ @flow weak\\\n/' {} \; 詳しい解説はshellで疲弊…

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 === '…