タグ

ブックマーク / www.kaoriya.net (6)

  • golangとDockerとOOM — KaoriYa

    golangで書いたプログラムをDockerで動かしOOMが発生した際になるべく情報を残して殺される方法を紹介します。 2020/08/16追記: この記事の内容はgolangに関してはやや現実的ではなくなってしまいました。 詳しくは続編を参照してください。 TL;DR golang製のプログラムは仮想メモリ(VSZ)の確保に失敗するとgoroutineのダンプを吐いて死ぬ DockerのOOMはRSSベースで検出時にSIGKILLを投げてくる Docker利用時にVSZで制限をかけるスクリプトを書いた golang製のプログラムはlinux-amd64において最低でも101MBのVSZを要求する VSZの制限がそれより小さいと当然起動できない 実際のRSSは3MB程度で起動する Background コンテナ内で動いているプロダクション上のgolang製のプログラムが時々OOMに殺されて

  • Vimmerに捧げる正規表現の基礎中の基礎 — KaoriYa

    正規表現はVimに限らずコンピューター上でのテキスト操作において非常に強力です。 しかし学習の難しさも非情で多くのIT技術者、Vimmerが正規表現に苦しんでいるのを幾度となく目の当たりにしています。 ただ正規表現は当にそんなに難しいのでしょうか。 いいえそんなことはありません。 正規表現は来とても簡単な原理で学習も容易なのです。 にも関わらず難しいと思われてしまうのは、原理を理解しないまま外見上の機能をそのまま覚えようとするからです。 記事では正規表現の原理にフォーカスし解説することで、Vimを含む様々な正規表現実装の利用難度を適切にしようという記事です。 記事は Vim Advent Calendar 2019 の1日目の記事です。 「正規表現」はもともと形式言語という言語学の一分野の研究から生まれました。 言語学というのは言葉を科学的に研究する学問です。 形式言語はその中でも

  • SPA に特化した http.FileServer — KaoriYa

    SPA の紹介に特化した http.FileServer (http.Handler) を作っていたので紹介します。 Single Page Application (以下 SPA) の特徴の1つとして、 クライアント側でルーティングを行うことがあります。 これは端的に言うと /foo/ というパスに SPA を配置した場合、 Web サーバーは /foo/bar や /foo/bar/quux/ など /foo/ 以下のパスに対しては /foo/ と同じコンテンツを返さなければならないことを意味します。 先日 tyru さんが Gonet/http で Vue.js / Angular 1 などの HTML5 history mode に対応する において、それに対応する方法を記事にしていました。 実は私も似たようなことをするけど設計思想が少し違うパッケージ koron/go-sp

  • golang でのクロスコンパイルの留意事項 — KaoriYa

    golang (for Windows) でクロスコンパイルする際にハマったポイントと、 解決方法を紹介します。 TL;DR golang のクロスコンパイルを準備する場合には、以下の点に留意してください。 (Windows のみ) gccは32ビット版か64ビット版か、使いたい方を正しく選択する 2つ以上の環境へクロスコンパイルする場合には、make.bat/make.bash 実行時に --no-clean を指定する クロスコンパイルの準備をする golang を用いるとクロスコンパイルが容易なことはよく知られています。例えば、Windows上のgolangであっても、OSX向けのバイナリを生成したり、EdisonやRaspberry Pi用のバイナリを生成できたりするのです。ただし、以下に示す、ちょっとした事前準備が必要です。 環境変数 GOOS, GOARCH を設定し %GOR

  • enchantMOON レビュー — KaoriYa

    enchantMOON を使ってみて気になったことを書き留めておきます。 未来の enchantMOON のために。 04/23 に注文した enchantMOON が 07/20 に届きました。 わずかな時間ですが、使ってみたので気になったことを書いておきます。お世辞にも「現状で長く使おうと思えるもの」「もっと使ってからレビューしよう」と言えないあたりは察してください。 一応、購入に至る背景を書いておきます。まずもともとは買うつもりは一切ありませんでした。理由は簡単で「ハードやるのが初めてなところから実用に足るものがでてくるわけがない」と考えていたからです。その考えは今も変わっていません。にも関わらず この記事 が 刺さり 購入を決定しました。 刺さりポイントは次の通り: 自分たちのハードを作って売ろうという心意気 手書きの重要性への共感 彼らに次の打席へ立って欲しかった まとめると、初

  • VimとPythonのバージョン — KaoriYa

    Sublime Textが2から3に上がるのに際しプラグインを書くのに利用可能なPythonバージョンが2から3にあがり、既存のプラグインが利用できなくなる可能性がある問題がここ数日テキストエディタ業界を賑わしております。記事では同様の問題がVimにあるのかを検証します。 最初に言っておきますが、VimPython2とPython3に両対応しています。つまりPython2とPython3を同時に利用できるのです。特に+kaoriya版ではその機能を有効化してコンパイル&配布していますので、まずはやってみましょう。あ、もちろん別途Pythonがインストールされている必要はあります。 :py print(sys.version) 2.7.3 (default, ... :py3 print(sys.version) 3.2.3 (default, ... 1つのVimからPython 2.

  • 1