理系学生日記

おまえはいつまで学生気分なのか

忍者TOOLS

technology

はてなBlogをHTTPS化したので HSTS、upgrade-insecure-requests あたりをまとめる

先日、はてなブログが HTTPS に対応したということで、このブログも HTTPS 化を実施しました。 このエントリを見ているとき、ブラウザのロケーションバーを見ると HTTPS になっていることが確認できると思います。 今日は、この HTTPS 化にからめて、混在コ…

Terraformに入門してサーバを構築してみるまで

VPS を何年も前に解約してから Linux の遊び場もなくなってしまっていたのですが、 AWS を勉強したこともあり、あー EC2 なり S3 なり使えば色々できるなぁと思い立ちました。 せっかくなので、楽に遊び場を作ったり消したりしたいなぁということで、 Terraf…

Real World HTTPを読んだ

Real World HTTP 読みました。 Real World HTTP ―歴史とコードに学ぶインターネットとウェブ技術作者: 渋川よしき出版社/メーカー: オライリージャパン発売日: 2017/06/14メディア: 単行本(ソフトカバー)この商品を含むブログ (2件) を見る これまで、HTTP…

"What I Talk About When I Talk About Platforms" にプラットフォームを構築する上でのすごい良いことが書いてあった

最近、"プラットフォーム" というものについて考えることが多いのですが、martinfowler.com にすごい良い記事があがっていました。 記事の内容を忘れたくはないので、(自分にとって)大事だなーと思うことをこのエントリに残しておこうと思います。 ぼくがど…

最近目にする$HOME/.configというディレクトリ

最近、$HOME/.config に設定ファイルを配置するツールが多くて、これは一体どういうことなんだということを思っていました。git とか peco とかですかね。 たぶん、ls -al ~ とかするとファイル数おおくて収拾つかなくなることに対する問題意識からそういう…

Inoreader でできるだけ早くフィード消化を行いたい

LDR がサービスを終了して早5ヶ月が経ちます。 ぼくはそれからもずっと情報収集を RSS に頼っていて、今は、だいたい 1,500 - 2,000 エントリ/day を 30 分くらいでざっと見ているかんじです。 RSS リーダとしては、LDR クローズ後は Inoreader を使用してい…

Amazon Web Services クラウドデザインパターン実装ガイド

30 週くらい遅れて AWS クラウドデザインパターン実装ガイドを読み終わりました。 これ、5 年くらい前に買ったんですが、ずっと積読しておりました…。おい、そしたらいつの間にか改訂版もでてるぞ、おい…。 Amazon Web Services クラウドデザインパターン実…

rsyslogで信頼性のあるデータ転送

ログサーバにログを集中管理しようというとき。fluentd を使うこともありますが、古きよき syslog で転送することもあります。 このようなログの転送を Enterprise でしようと思うと、ログの消失ができる限り無いように、という点に気をつける必要があります…

rsyslogで動的なファイル名を使用する

ここ数日、rsyslog について調べていました。 恥ずかしながら、rsyslog は導入・構築するシステムに入っていることは多かったのですが、それでもきちんと学んだことは無かったので、この際だからきちんと学んでみようと。 今日はそんな中で、動的なログファ…

リダイレクト時の遷移挙動がおかしかったらリバプロ設定を疑ってもいい

リバースプロキシ経由でアクセスしたときにリダイレクトでおかしくなるケースって、だいたいリバプロの設定と社会が悪いです。 リバースプロキシを導入する理由というのは多々あります。セキュリティだったらい、SSL オフロードであったり、負荷分散、圧縮も…

困ったときのパケットキャプチャ+curl

リバースプロキシから渡ってきた HTTP リクエストで WebApp がエラーになるという状況が発生しました。 状況としては、 リバプロにはぼくたちはアクセスできないし、そのリバプロにリクエストを送ることもできない。 リバプロから WebApp 用 FW に何らかの H…

終わり行く2017年にgrepを

みんな大好き grep についてですが、かなり機能が豊富な一方でなかなかそれがまとまっていないこともあるのと、自分自身、結構細かな Tips を忘れたりするので、ここで簡単にまとめてみたいと思います。 OR 検索 後述する拡張正規表現でも可能といえば可能で…

インターネットに接続できないオフライン環境でPython製ツールをインストールしたい

ときに、インターネットに接続できない環境というのが存在します。 しかし、今回はこういう環境において Python 製のツールを使いたいという状況が発生しました。 今日びのパッケージマネージャというものはパッケージリポジトリからダウンロードするのが一…

Cookieのpath属性に対するブラウザ毎の挙動の違い

ブラウザ毎の Cookie の path に対する挙動の違いによって、検証しているアプリに色々とバグっぽい挙動が出てきたので、あらためて Cookie における挙動をまとめてみます。 検証内容 セットするCookie の path 属性に /path、あるいは /path/ を指定した Web…

known_hostsからエントリを消す

定期的に忘れるんだけど、~/.ssh/known_hosts にあるエントリをスクリプトから消すコマンドは、ssh-kengen -R。 そもそも known_hosts とは 接続したことのある各ホストの公開鍵を保存しているファイルで、普通の文脈だとユーザレベルのファイルである ~/.ss…

Google Public NTP の Leap Smear

ずっとエントリ書こうと思っていたんですが、Google Public NTP で使われている Leap Smear についてです。 Leap Smear について書き始めたは良いものの、思っていたよりコンテキストが厚くて、閏秒から話をしないといけませんでした。 そうすると、Leap Sme…

declare、typeset、そして local

declare とか typeset、local まわりの使い方について。 まず、declare と typeset は、シノニムなので、この 2 つの差異は考えなくて良いと思います。このため、ここでは declare でひとまとめにして扱いたいと思います。 そういうわけで、declare と local…

シェルスクリプトで部分文字列を切り出す

ときどき、シェルスクリプトで文字列の 3 文字目から 4 文字を切り出したいみたいなユースケースがあって、これまでずっと cut でやってた。 $ echo $str 1234567890 $ echo $str | cut -c3-6 3456 これ、じつは文字列操作でできる。 $ echo ${str:3:4} 4567…

はてな開発者ブログから参照されてたうれしい話

はてな開発者ブログから人知れずエントリが引用されてたのが、ちょっとうれしいことでした。 自律分散監視システムとそれを利用したネットワークグラフ可視化への挑戦 - Hatena Developer Blog ちょっと Serf いけるかなーと思ってその仕組み調べてたときの…

シェルスクリプトにおける [ と [[

シェルスクリプトで条件分岐を書くとき、[ を使ったり [[ を使ったりすることになると思います。 POSIX の test にも記載がありあすが、[ は test と同じ機能を持つことになっており、同じ実装であることも多いです (ただし、[ として実行されるか、test と…

Varyヘッダとキャッシュについて

さっき Cache-Control ヘッダの話を書いたんですが、もちろんキャッシュ制御に関しては Cache-Control ヘッダだけで収まる話ではなく、他にも多々のヘッダが影響を与えます。 その一つに、Vary ヘッダがあるので、今日はその話でも。 Vary ヘッダ Vary ヘッ…

セキュリティ対策としての Cache-Control ヘッダについて

今日はブラウザのキャッシュ制御の話。キャッシュについては主に性能面で語られて、情報漏洩に繋がる重要な制御であることは見逃されがちです。 CDN切り替え作業における、Web版メルカリの個人情報流出の原因につきまして - Mercari Engineering Blog 情報漏…

Socket

最近ソケット通信実装のサポートに入っていたので、ちょっとまとめてみたいと思います。 Socket からのデータ読込 Java に関しては不勉強なところが多いんですが、Socket クラスは「ソケット」を抽象化したものであり、「ソケット」は TCP におけるコネクシ…

HTMLから画像をアップロードするためのinput type="file"とHTML Media Capture

HTML を使って、スマートフォンから画像をアップロードをするケースがあります。 このような場合、エンドユーザに対して カメラを使ってアップロードさせる フォトライブラリや iCloud Drive からアップロードさせる などができると便利です。 このあたりを…

Docker ComposeでPostgresバックエンドのgitbucket/redmineを構築する

Redmine をマジメに使ったことがなかったのですが、使う機会が多くなってきているので、ちょっと慣れとかないと厳しいなぁと思っておりました。 とりあえず本を買ったは良いのですが、手元で確認したいというのと、同じく良く使われるようになってきている G…

特定ディレクトリ配下の拡張子の一覧を取得するワンライナー

特定ディレクトリ配下で特定の拡張子を持つファイルを探すのは find コマンドで一発ですが、一方で、特定ディレクトリ配下の拡張子をすべて抽出する、というユースケースがあります。 ぼくは、.gitattributes に書く拡張子って何にしよう、ってときに、その…

Excelの結合セルの高さを調整する伝家の宝刀

Excel 方眼紙を使いこなすぼくたちにとって、セルの結合というのはエクスカリバーに近しい最終兵器です。 そんなエクスカリバーたる結合セルに入れる文章というのもまた、明治の文豪がその人生を賭して綴り捻り出す人生そのものであって、セル内改行に伴って…

.gitattributesによる改行コードの変換設定

Git での改行コードの取り扱いについてきちんと調べたことがなくて、プロジェクトにおいては「みんなー! ただしく .gitconfig 設定してねー」という立場を取っておりました。 しかししかし、改行コード設定については、もはや個人の設定に正しさを求めるので…

モジュール間の依存関係図をGraphvizで図示する

ちょっとライブラリ間の依存関係を可視化することになりました。 おなじみ Excel 方眼紙に書くというのも考えたんですが、Microsoft Office のオブジェクトで描画するのって、依存関係が複雑になるほど大変になってきます。 ほらー、きっとモジュール 1 つを…

任意のプログラムをWindowsサービスとして構成する

Windows で Java のデーモンをサービスとして起動させときたかったんですが、なんか良いものないかなと思ったら winsw というのを見つけました。 作者は Jenkins の川口耕介さんであり、もともと winsw も Jenkins を念頭に作成されたらしいです。 実際に Gi…