Code Day's Night

ichikawayのブログ

PHPerKaigi2019で自作ファミコンエミュレータの話をしてきたら最高だった(前編)

PHPerKaigi2019で登壇してきました。全体の感想などは後編に書きます。 カンファレンスで発表するのは3年ぶりぐらい。今回はPHPのファミコンエミュレータ実装をGolangで写経してた時の話をしてきました。 ファミコンエミュレータはPHPやGolang, Rustなどたく…

URLにアンカーの#(シャープ)がある場合に送信されるGETリクエスト

URLに含まれる#(シャープ)は、ページ内リンクアンカー、ハッシュ、フラグメントなどの名称があるが、#が入る場合のGETリクエストはどのようになっているか。 例えば http://example.com/foo/bar/#/1 というようなURLにGETリクエストする場合、ブラウザは#以…

なるほどわからない!と実装を繰り返して楽しむ自作ファミコンエミュレータの世界

最近、趣味でファミコンエミュレータをGo言語で実装しています。 github.com 世の中にはたくさんのファミコンエミュレータ実装があり、golangだけでもいくつもあるため何で同じ言語で実装するのかと言われると、楽しそうだからとしか言いようがありませんが…

dockerコマンドでよく使うもの amazonlinuxベース

普段はdocker-composeで操作していても、たまに使い捨てコンテナを扱いたい時がある。 そんな時にdockerコマンドだけで済ませる方法。 dockerイメージの作成、コンテナ起動、コンテナのシェル操作、コンテナ削除の説明。 Dockerfile amazonlinuxの最新を取得…

SQLでdatetimeの差を秒の整数で取得

MySQLのDATETIMEカラムの差を秒で取得する方法 startとendというカラムがDATETIMEだった場合、時間の差は select TIMEDIFF(`end`, `start`) で取得できる。この時、 00:12:13のようなフォーマットで返る これをさらにtime_to_sec関数で整数値の秒にする。 se…

CakePHPではDBカラムのSQLインジェクションに注意!

CakePHPアドベントカレンダー12日目の記事です。 市川@cakephperです。ちゃんとCakePHP使ってますよ! 丹精込めてVAddyを作ってます。 最近コンビニで常陸野ネストビール セッションIPAが売っててテンションが上がりますね。 CakePHP2,3のDBカラム名の扱い C…

Webアプリケーションにおけるタイミング攻撃の実現性 リモートから簡単にパスワードクラックできるのか?

これはPHPアドベントカレンダー2017 8日目の記事です。 今年もBrewDog ホッピークリスマスIPAの季節になりましたね。美味しいクラフトビールに恵まれて幸せです。 市川@cakephperです。 丹精込めてVAddyを作ってます。 経緯 2017年9月にLaravel5.5にタイミン…

Route53のDNSレコード操作のみ許可するIAMロール

Route53を操作するIAMで、下記の要件を満たすロール設定 コンソール画面での操作を想定 特定ゾーンのみのレコードの作成、更新、削除を許可 ゾーン一覧の表示 ゾーンの削除は不可 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action":…

口座振替の依頼書で銀行印が必要なのは1ページ目だけ(捨印は任意)

支払い方法が口座振替(引き落とし)に限られている場合、自分の銀行印を押して提出する必要がある。 一般的には、1枚目は銀行用、2枚目が委託業者用、3枚目がお客様控えになっていると思う。2、3枚目は写しになっているが、なぜかそこにも銀行印を押すよう…

pandasでデータを間引く(リサンプリング)

大量の時系列データをプロットする場合、プロット数が多くなりすぎてグラフが綺麗にでないことがある。 その場合は、データを間引くわけだが、単純にfor文で回して一定期間を処理するのも良いが、pandasを使えば1発でできる。 この間引くという機能はresampl…

pyenvで入れたpython3をcronなどから利用する方法

pyenvを使ってインストールしたpython3をcronなどから利用する場合、他のユーザからも実行できるように、まずは.pyenvを/usr/local/pyenvなどに置く。 git clone https://github.com/yyuu/pyenv.git /usr/local/pyenv vi ~/.bashrc export PYENV_ROOT="/usr/…

MacやLinuxにpyenvを入れてお手軽にpython3環境を構築

MacやLinuxにpyenv入れて、python3とmatplotlibなどをインストールする場合 .pyenvの場所は自由に指定できるので、/usr/local/pyenvなどでもok。 git clone https://github.com/yyuu/pyenv.git ~/.pyenv vi ~/.bashrc export PYENV_ROOT="$HOME/.pyenv" expo…

AWS Linuxでpython2.7に切り替えてmatplotlibをインストール

メモ AWS Linuxでは、python2.6が利用されているため、それを2.7に切り替える。 python2.6のpipでは古すぎてmatplotlibがインストールできないため。 alternatives --display python alternatives --set python /usr/bin/python2.7 python -V pipをインスト…

サイトの日英翻訳は?自分が評価できない納品物の悩み

VAddy Adventカレンダー6日目の記事です。 VAddyの海外展開 VAddyは海外にも売れるサービスだと思ってます。海外のブログ記事では、「DevOpsにセキュリティテストを!」という記事をよく見かけるため、需要は国内の何倍もあると思います。 セキュリティテス…

VAddyの歴史を振り返る

VAddy Adventカレンダー5日目の記事です。 最近ではコンビニでクラフトビールが買えるようになってきて良いですね。福岡だとまだ少ないですが、東京ではナチュラルローソンのビールの品揃えがすごくて、BrewDogのPunk IPAが普通に置いてあってビックリしまし…

VAddyを運営するビットフォレストという会社

VAddy Adventカレンダー4日目の記事です。 私が最初にクラフトビールに出会ったのはたぶん2008年ごろ、アメリカにあるセーフウェイというスーパーに行った時でした。ビールの陳列棚の大きさもさることながら、多種多様なビールが置いてあり、ほとんどは小さ…

サービス名を決めた時の5つの基準! VAddyの名前が決まるまで

VAddy Adventカレンダー3日目の記事です。 今日もVAddyプロダクトマネージャ兼フロント側の開発を担当している市川が書いてます。週末はポエムっぽい内容にしようと思うのでQiitaではなく、自分のブログに書きます。 2日目の記事で私の好きなビールはペール…

自前のページング処理でもLaravelのページング用htmlを出力する方法

Laravel5.1を使ってます。 LaravelのEloquentやクエリビルダーを使わない場合でも、View側で下図のようにLaravelのページングのhtmlを出力したい場合の話。 Illuminate\Pagination\LengthAwarePaginatorクラスを使います。 $paginator = new LengthAwarePagi…

Go言語のクロスコンパイルで生成したバイナリが動作しない

VAddyのコマンドラインツールをgolangを使って書いているのですが、MacからLinuxやWindowsのバイナリを生成して、例えばLinux環境で動作させようとすると、 line 1: syntax error near unexpected token `newline' line 1: `!<arch>' というエラーが出て動作しない</arch>…

ZOHO APIからデータを更新する方法

ZOHO APIからデータを更新する方法の紹介です。今回は、PotentialsというZOHO CRMの種類のレコードを更新します。 まずはじめに、APIを使うためのチケットを発行します。下記のURLに必要なEmail IDとPasswordを入れてブラウザでアクセスすればチケットとよば…

PHPに関するHTTPOXY脆弱性の問題と対応方法

外部から簡単にHTTP_PROXYという環境変数がセットでき、サーバ間通信や外部サイトと連携している場合に影響があるかもしれない脆弱性です。(HTTPoxy. CVE-2016-5385) PHPの場合はphp-fpm, mod_php, Guzzle4以上やいくつかのライブラリで影響あります。 対応…

MacでPHPをコンパイルする時にzlibがnot foundエラーとなる問題

MacOSX El CapitanでPHPをコンパイルしようとすると、zlib not found(libz not found)のエラーが出てしまいました。 検索すると、xcodeのCommand line toolsをインストールする必要があって、 xcode-select --install とすればダイアログが立ち上がってイン…

Unix考古学を読んで遠い昔に思いを馳せる

3年ほど前に「Unixという考え方」という本を読んで感銘を受けたので、最近話題になってたUnix考古学も読んでみました。これは非常に面白く、早く先を読みたいと思う本でした。 1960年から1990年ぐらいまでのUnixの歴史が、数多くの参考文献やメモを掘り起こ…

Gitコマンドで行単位ではなく文字単位の差分表示を手に入れる

git

Githubを使っていると、diff表示が行単位ではなく文字単位になってて便利かと思います。手元の端末でも同じようにdiffを文字単位に表示したい時は、diff-highlightというスクリプトを使えばできます。表示は上の画像のようになります。 diff-highlightは、gi…

ブログはじめました

技術やサービス運営のことを中心に書いていく予定です。 基本的には個人の感想程度のブログです。