Code Day's Night

ichikawayのブログ

条件付けできるDNSキャッシュサーバの構想(Youtube閲覧制限のために)

子供のYoutube閲覧時間を制限したく、ただYoutube以外のアクセスは許可したいという要望が我が家では出てきたので仕組みを作ることにした。 条件例 条件は色々と追加できるようにしたいがとりあえずこんなことができたら面白そう Youtubeのみ1日30分しか閲覧…

DNS改ざん検知ツールNScheckerが全ドメインに対応、v1.0.0をリリースしました!

NScheckerというDNS改竄検知ツール(slack通知も可能)を作っていて、メジャーバージョン v1.0.0をリリースしました。このリリースで使えるツールになりました。 GitHub - ichikaway/nschecker: DNS record changing detection tool with slack notification. …

よく使うbyteやbit操作系のGo言語メモ

1バイトを2進数で 0b00000001 のように表示 fmt.Printf("%#08b\n", message) //2進数 fmt.Printf("%#X\n", message) //16進数 #で0bや0xを付ける。08で最大8個0パディング。bで2進数。Xで16進数 バイトの配列を定義 message := byte{ 0b11011100, 0b10011010…

DNS改ざん検知ツール(Slack通知付き)で検知速度を爆速にした

暑い夏2020、DNSと戯れていました。 レジストラの脆弱性でDNSが改竄されてサイトがハッキングされる事件を見て、これを防ぐ方法がなかったので7月末にDNS改ざん検知ツール NSchecker を作って公開しました。 blog.ichikaway.com 結論 忙しい方のために結論だ…

DNS改竄検知ツールをgolangで作った(Slack通知付き)

DNSのNSレコード、MXレコードの改竄を検知(変更検知)し、オプションでSlack通知もできるツールを公開しました。 https://github.com/ichikaway/nschecker Go言語で開発し、LinuxとMacのバイナリもダウンロードできます。 すぐに実行できるため、cron指定し…

Stripeのクレジットカードフォームで全項目の入力が完了するまで送信させない

Stripe Elementsはこのサイトにあるサンプルを使えば手軽に始められます。https://stripe.com/docs/stripe-js ただ、この例のバリデーションでは全項目の入力を待つことができず、例えばカード番号だけ入力した状態でも送信できてしまいます。 今回はカード…

Mac miniの温度を気にする人生に疲れてしまったので本気出す!

2019年に買ったMac miniはメモリ32GでCPUも高速で最高なのですが、唯一発熱の問題があってクーラーが効いた部屋でも結構熱くなります。 定期的にMac miniに触れて温度を確かめたりしてたのですが、それに疲れてしまったので解決することにしました。検索する…

gitでリモートのブランチをローカルにcheckoutする簡単な方法

結論から書くと、 git fetch git checkout foo これでorigin/fooのブランチがローカルにチェックアウトできます。 今までは、 git fetch git checkout origin/foo git checkout -b foo というのをしていました。下記の方法の方がスタンダードかもしれません…

x86アセンブリで数字を画面表示するだけの実装が大変だった

最近お気に入りの低レイヤーガールというYoutubeチャンネルで、アセンブリでFizzBuzzを書くというのを見て自分でも実践してみました。 Youtube: FizzBuzzをアセンブリ言語で書きたい! x86アセンブリで画面表示するには、writeのsyscallを呼び出して、標準出…

任天堂スイッチのマインクラフトをサーバに繋ぐ方法

任天堂スイッチのマイクラをネットを使ってサーバに繋ぐのに苦労したため、やり方を書いておきます。親のアカウントだけであれば問題ないですが、子供の任天堂アカウントを繋ぐのに苦労した時の解決方法です。 任天堂のスイッチオンラインに加入(複数人で使…

Stripeのクレジットカード入力フォームで郵便番号入力を不要にする

stripe.jsを使ったフォームを構築すると、例えばVISAのカード番号を入力した時に動的に郵便番号フィールドがでてきて、そこも必須入力欄となる。 この場合、下記のようにstripe.elements()のelements.create()のオプションに、hidePostalCode trueを渡すと郵…

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