Active Record の哲学

rails で使われている ORM である Active Record。当たり前のように広く使われているが、Active Record は何を解決するのか? Active Record の哲学 README に書いてある。 Philosophy - rails/activerecord Active Record attempts to provide a coherent w…

Process Hacker を使ってかんたんDLL Injection

DLL Injection をするツールはたくさんあると思うが、Process Hacker でも簡単にできる ちゃんと Injection できたか確認するにはプロセスをダブルクリックして Modules タブを見るとよい

Go のミドルウェア Adapter パターンに美しさを感じた話

medium.com 間に処理を差し込みたいとき、直接中身をいじるのではなく handler を引数にとって、新しい handler で返す関数(decorator pattern?) なのが良いね。 そして、Go の http.Handler の仕組みってすげーってなった。 handler は本来は Handle() を…

Node.js Standard on Google App Engine はじめて触った

何もない状態から AppEngine にデプロイするまでの流れ npm init npm install --save express vim app.js # 簡単な express のサンプル書く echo 'runtime: nodejs8' > app.yaml gcloud app deploy これだけで Hello, World できた!すごいはやい!シンプル…

美しい Go の設計とコードを目指して

Step 1. コードの書き方を学ぶ コードレビューする際に気をつけるポイントをまとめた CodeReview Comments。 他の言語とは違っている Go 特有の事例をたくさん載せてくれている。 原文は英語だけど、日本語訳もある。 golang/go CodeReviewComments 日本語翻…

スクエア・エニックスのテクニカルカンファレンスに行った

これに参加してきた。ネットゲームの通信の話だいすきなのでとても楽しかった。 www.jp.square-enix.com スクエア・エニックス社内の具体的な事例をベースにわかりやすく話してくれたし、無料でこんなに技術公開するのすごい!!って思った。 以下講演中にと…

GAE/Go の嫌なところ2018年4月

Google App Engine (GAE) + Go の組み合わせはとても良くて、これでクイックにWebアプリが始められる!って感じなんだけどまだいくつかなんとかしてほしい点があるのでこの時点でメモっておく カスタムドメイン+ワイルドカード証明書ができない https://<service_name>.ex</service_name>…

PHP のネイティブ拡張 (PHP extensions) についてメモ

php

php --re <extension_name> | head -n1 で拡張の詳細なバージョン情報を見ることができる php-fpm の場合、restart php-fpm しないと拡張の変更は反映されない</extension_name>

PHP と MySQL とマイクロ秒精度

PHP とマイクロ秒 経過秒数を int で返すものだと、マイクロ秒は切り捨てられる date() \DateTime::getTimestamp() マイクロ秒までの精度で取りたい場合、次のいずれかでやる 小数点以下を含む秒として扱う(例)1.234567秒 マイクロ秒を整数として扱う(例…

トラックパッドできるだけ触りたくない

自分の使い方が悪いだけなのか、トラックパッドを高頻度で使うと指が痛くなる。 この癖は直りそうにないのでそもそもトラックパッドに触る回数を減らす方向でかんがえる 極力キーボードで操作する 現在トラックパッドでやってる頻度の高い操作は ウィンドウ…

PHP の実行のやり方についてメモ

php

phpはなんとなく、mod apache と php-fpm があって、とりあえず php-fpm 使うか、といった適当な認識でいっていたが、いい加減どういうふうにスクリプトが実行されるのか知りたくなったのでメモ。 "SAPI" について知る ちょうど最近良い資料があがっていたの…

画像をDBに保存する

DBに画像などのメディアファイルを保存したい場合、保存する情報は次の2つに分けてかんがえる 画像の実体(バイナリ) 画像のメタデータ(名前、形式) 実体はどこに保存するべきか いまどきだと、クラウドサービスを使うのが良いと思う。 Amazon S3 Google …

minikube 入門した

最近は kubernetes (k8s) が人気。ただ、k8s は大規模なアプリでも耐えられるような設計なので、概念がめちゃ多くて理解がむずかしい。 ローカル環境開発では、そんなたいそうな物はいらないので、docker-compose を使うと簡単で良い しかし、それだとローカ…

Vuex で Flux pattern を勉強する

flux pattern とは? ただの observer パターン。このスライドを読めばわかる ReactとFluxのこと // Speaker Deck Flux が解決してくれること 遠く離れたコンポーネントへの情報伝播が楽になる 「苦しいバケツリレーをしなくてすむ」 これの一番下にある「統…

どこまでがソースコードの”コピペ”といえるのか?

ソースコードのコピペは著作権違反みたいだけど、ちょっと変えたらそれはコピペではないと言えるのか?ちょっと調べた。 ネット上で公開されているコードをコピペする前に確認すべきこと – tomeapp 自分の場合は以下の方法を取っています。 コピーしたいコー…

GAE + CircleCI, Gitlab CI ですごく消耗した記録

GAE/Go が gcloud app deploy でも goapp deploy でもデプロイできない これが一番はまってしまったので、Qiita に書いた。 qiita.com cp の引数のスラッシュの有無 cp でも rsync でもそうだが、 / をつける・つけないで挙動が変わるので思っていたのと異な…

依存関係の自動解決とパフォーマンスのトレード・オフ

依存関係を手動で書くというのは非常に面倒 なので、ソフトウェアによって自動的に解決する、という手段はよくある。 しかし、依存関係というのは recursive に探索するものが多いので、パフォーマンスの問題が起こる この話についてうまくまとまった記事と…

Angular 開発をはじめて面倒だったこと+解決策

とても急いで angular で開発をしていた。 angular-cli がとても便利で、フロントエンド環境構築面倒すぎ問題がかなり軽減される。 しかし、実際に開発してみるとまだ面倒なことがいくつかあったので、それを解決する方法もあるはず、で調べた。 調べただけ…

goroutine の数はどれくらいが良いのか

Go の主要な機能である Goroutine 好きなだけ並列に実行できるけど、増やしすぎるとかえって遅くなったりするのかどうなのか、気になった。 CPU処理か、IO処理かで変わる CPU処理であれば、CPU数以上上げても切り替わりが激しくなるだけで性能は上がらない I…

Google App Scripts はアプリのバックエンドとして割と使える説

webアプリの環境を整えるのは大変だけど、Google App Scripts (GAS) を使ってサーバーなしで状態の維持などができて結構すごい webアプリとして公開する GoogleカレンダーとSlackステータスをワンクリックで連携できるアプリをGoogle Apps Scriptで書いた - …

DNS の A, CNAME レコードについて復習

Google AppEngine でデプロイしたアプリを独自ドメイン管理にしたときに、CNAME レコードが出てきて「これってどういう意味だっけ?」となったのでメモ。 レコード 役割 A ドメイン名→IPアドレス CNAME ドメイン名→別のドメイン名 ということで、複数のサブ…

Google Cloud Platform (GCP) に Datastore 系のサービスがいくつもある?

最近 GCP に入門していて、DBとして Datastore というものがよく使われているみたいなので自分も早速使おうと思って調べた。 そしたら、次の記事がヒットして ぼくが かんがえた さいきょうの でーたすとあ らっぱー - Qiita AppEngine DatastoreとCloud Dat…

Wordpress を使いたくない理由

設置型のブログとして、現在もっとも有名なものは Wordpress だろう。最近だとホワイトハウスで Wordpress が採用されたニュースがあったりと賑わっている印象だけど、自分はできる限り使いたくない。 Wordpress を使ったことは何度かあって、それを経験して…

Google API の OAuth 2.0 認可方式のおさらい

Access Token さえあればいい Google API を使うためには、Access Token という文字列さえあればOK。ただ、この Access Token を取得するための手続きが複雑というだけである。 Refresh Token Access Token は使用期限がある。では、切れる度に新たに Access…

#SECCON 2017 Online CTF に参加した (+write-up)

SECCON 2017 オンライン予選に Team: wight のメンバーとして参加した。 結果としては 2,500pt で全体57位、国内13位と今まで参加した中では最高記録! その中で自分が解いた問題は次の通り。 SHA-1 is dead (Crypto 100) SqlSRF (Web 400) Log search (Web …

日本語を Lint する技術

プログラミング言語には文法が正しいかどうか、悪い書き方をしていないかどうかといったことをチェックして指摘してくれるツール(通称 linter)がたくさんある。 機械的にチェックできるようなことは、人にチェックしてもらう前に直しておく。そうすること…

Google Cloud SQL に接続時 unix socket fileが見つからなくてエラーになった

きっかけ GCP入門してみようと思って、本棚アプリのチュートリアル をやりはじめた。 しかし、gcloud app deploy コマンド実行後、次のエラーが出て Google Cloud SQL に接続できなかった。 Updating service [default] (this may take several minutes)...f…

引数の順番に悩まされる

メソッドを作る時、複数の引数を取ることはよくあるが、その引数の順番をどうするべきか、結構悩んでしまう。 重要なものが先 def func(require_arg, option_arg=None): ... 重要な引数を先にする。 指定しなくてもよかったりするものは後に置く。 引数が2つ…

ISUCON 7 予選に参加した

言語はチーム3人全員が触れたことのある PHP にした。 時刻 できごと 補足 13:09 Score 3473 初期状態のスコアを計測 13:38 DB server に slowlog 設定 14:26 message.channel_id と image.name に INDEX をはる 14:26 php-fpm を tcp から domain socket に…

mutex と atomic の違いは何か、どちらが良いか

C++

どちらも排他制御にかかわる仕組みである。 どのような場合に、どちらを選ぶべきか https://teratail.com/questions/54740 「mutexそれ自体が重い」というのは単なる盲信の事が多いと思います。mutexロック獲得・解放にかかる処理負荷は実処理に比べれば無視…