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ロック獲得・解放にかかる処理負荷は実処理に比べれば無視…

std::regex_search の第1引数に 一時的な string を入れるとよくない

match_results オブジェクトを引数に取る形式の場合、そのオブジェクトは引数で指定した検索対象文字列へのイテレータを保持する。 このため、検索対象文字列は本関数を呼び出した後も match_results オブジェクトを使用し終わるまで破棄されないようにする…

gdb ハッシュテーブル系 STL の要素を取り出す方法

std::unordered_map などの中身を取り出したい場合、gdb だと .at() や operator[] では print できなかった。 では、特定 key の要素を取り出すにはどうすれば良いか gdb には STL をいい感じに print してくれる拡張があり、ソースコードは python なので…

gdb においてスマートポインタは直接生ポインタに cast できる

shared_ptr 等のスマートポインタは フィールド _M_ptr に生ポインタを保管しているが、これはメモリ上では先頭にあたるので、 _M_ptr を取らなくても、先頭のアドレスから直接生ポインタに cast できる。 gdb でスマートポインタの値を表示したいときに便利…

Rust でどのようなライブラリが開発されているか(人気か)

Rust で trending がリポジトリを見てみると、unixの既存コマンドの高速実装的な物が多かった。なるほど。 いままではこの枠は Go だった気がするけど、こういうOSに近いものは Rust になっていくのかもしれない。 GitHub - sharkdp/fd: A simple, fast and …

swf ファイルの中身を書き換えて実行する方法

FFDec というすごいツール JPEXS Free Flash Decompiler - Opensource SWF decompiler and editor このソフトを使うと、swfファイルの読み込み、中身の書き換えまで全部できちゃう。それでいて完全無料(オープンソース)。良い時代になったものですね!! …

MySQL InnoDB でテーブル全体をロックしないようにする

mysqlで UPDATE をするときは、トランザクションを作るのが基本だが、 トランザクションを作るということは ロックがかかる UPDATE する行が1行であれば、その行だけにロックをかける。それだけなら特に問題ないが、テーブル全体にロックがかかる場合がある…

Javascript (Web) でファイルのドラッグ&ドロップのメモ

ドラッグ&ドロップ dragover イベントで preventDefault しないと、ブラウザがそのファイルを開いてしまいハンドリングできない dragOver ではなく、 dragover である。スペルミスとかに対してなんのコンパイラ警告とかも出してくれないので、やっぱりJSは…

ナンスとソルトの違い

コンピューターセキュリティ分野において、ナンス (nonce) と ソルト (salt) というものが登場する。 この2つはどちらも「セキュリティを高めるためのランダムな値」と説明されることが多く、同じものかと思ってしまうが目的が違う。 手法 目的 ナンス クラ…

Windows プロセスのどの関数がCPUを多く使っているか調べる (Windows Performance Analyzer)

explorer.exe のCPU使用率がずっと25%ぐらいになって困った。しかし「とりあえずクリーンインストール」という考え方だと再発したときに対処できないので、原因が知りたい Linuxでは perf コマンドというものがあり、どのような関数が多くCPUを使っているの…

なぜ Webしかできないプログラマは下に見られるのか

Web系のプログラマっていうと、よく2ちゃんねるなどのサイトで小馬鹿にされている感触がある。特にWebの中でも「PHPプログラマはレベルが低い」などの話題でよくネットが炎上しているのを見る。 それはなぜか Web系のサービスは乱立していて、怪しげなものが…

個人的 git ホスティングサービスの比較

git

リポジトリにアイコン画像があるとないとでは個人的に差が大きくて、アイコンがあるとぱっと見たときに「おっ!」ってなるので、ぜひgithubにも導入していただきたい。

Python で暗号化まわりをするときは pycrypto よりも pycryptodome をつかう

Pythonで暗号化まわりを触りたいときは、pycryptoを使うのが定番だったが、これからはpycryptodomeの方が良さそう 理由 pycryptodomeは2017年になってからも継続的にメンテナンスされている Windowsでも pip install がすぐ通る ←個人的にうれしい!! 参考…

「クソコード」と感じるのは具体的にどんなコードを見たときか

www.megamouth.info この記事を読んでちょっと思ったこと。 インデントがタブとスペースどちらかに統一されていないとか、フレームワークの誤用があるとか、またはフレームワーク自体が独自のものであったりすれば、じんわりと汗が滲み、異様に長大な関数や…

CUI の長所・短所

何かアプリを作る際に、CUI が良いか、GUIが良いか、と考えることがよくある。 GUI があるのが後発だが、今でも CUI のアプリは作られているし、一長一短あるみたい。 個人的に思う CUI の長所短所を考えてみる。 CUI のよいところ 開発が楽 開発者目線にな…

Electron の QuickStart を速攻で Typescript にする

Electronが公式でTypescriptの型定義ファイルを同梱してくれたことにより、Typescript + Electron での開発スタートが簡単になった。 それを記念して、公式のQuickStartをサッとTypescript仕様に変えてしまいたい。 公式にあるQuickStartの手順は次の通り。 …

テーブルを正規化するほど、アプリから使うのは難しくなる

DBのテーブル設計で、正規化するときれいだけど、アプリから使うとき難しくなる問題。 とても有名で今更な話ではあるけど、明文化したことはなかったので書き残しておく。 正規化していると、複数のテーブルから取る必要がある たとえば、ユーザー一覧を表示…

すごいプログラマーは、根拠をだすのが早い

すごいプログラマーの人は、ある技術についてとても詳しいというよりは、 「xxがうまくいかないのはなぜ?」 「どれくらい速くなったか?」 といった問題に対して、わかりやすい根拠をさっと出せる人だと思った。 初心者がやりがちなこと 「問題なく動いてそ…

言うは易く行うは難し プログラミングでも

技術記事などで「我々は以下のような実装をして実運用できた」というのはよくある。 それを見て 「あ〜これ有名な手法じゃん、簡単にできるわ〜〜」 とか思いがちなのだが、実際にコードを書いてみると思いの外上手くいかないもの。 「ぐだぐだ言ってないで…

アナザーエデンの非同期オートセーブの記事の感想

gamebiz.jp 要約 データ管理の大部分がクライアント側。これによって、通信状況が悪くても待たされることが少ない。 クライアント内部にDB (LevelDB) がある シーン遷移時に内部DBの差分を request queue にためていく 基本バックグラウンドで非同期通信 ガ…

UDPの状態は判定可能?

UDPといえば、ステートレス(内部状態を持たない)単純なプロトコルなので、 「今どんな状態か」は見れないはず。 しかし、ある日サーバーで netstat -anu を実行すると UDP かつ状態が ESTABLISHED のものが見つかった。 これは一体どういうこと? 答え 以…