タグ

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

  • 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に殺されて

  • Golangでログを吐くコツ — KaoriYa

    この記事は Go Advent Calendar 2018 の16日目の記事です。 Golangでプログラムを書く時にログを吐くの、どうしてますか? 記事ではログを吐く際のコツというか気にして欲しい事項と、 なぜそうなるのかを解説していきます。 一概に「ログを吐く」と言っても、 ライブラリからログを吐く場合とアプリケーションから吐く場合では 相当に事情が異なります。 TL;DR ライブラリ(パッケージ)を書く時は… まずログを吐かないことを検討しましょう。 error で返してライブラリのユーザーにログへ吐かせるかどうかを選ばせましょう。 *log.Logger を使いましょう。 デフォルトは log.Printf に対して吐き(またはそれと同等のログを吐く)、 ライブラリユーザーの設定で任意の *log.Logger に切り替えられるようにしましょう。 自前の Logger インターフ

  • Vim の配布場所を github に変更しました — KaoriYa

    香り屋版の Vim の一次配布場所を github の releases に変更しました。今後は以下のURLより最新版の香り屋版 Vim にアクセスしてください。 最新リリース情報: https://github.com/koron/vim-kaoriya/releases/latest 過去のリリース情報: https://github.com/koron/vim-kaoriya/releases また vim-jp より、各最新バイナリへのショートカットURLが提供されています。クッションページを挟む形になりますが、必要に応じてご利用ください。 Windows 32bit版 : http://vim-jp.org/redirects/koron/vim-kaoriya/latest/win32/ Windows 64bit版 : http://vim-jp.org/redirects/

  • WindowsのRuby 2.2でNokogiriを無理矢理使う — KaoriYa

    ブログでは過去にWindowsでnokogiriを使う方法を紹介していました。 WindowsRuby 2.0でNokogiriを使う 以前は真面目にインストールしようとして何度も苦労させられたので、もう今回は付き合ってられるかってことで、Vimを使って無理矢理使えるようにしちゃいましょう。現時点で最新のnokogiri 1.6.6.3にはruby 2.0と2.1のプリコンパイルバイナリが含まれています。この2.1のやつを書き換えます。 使ってるruby 2.2はRubyIntallerのもので、devkitはインストール&セットアップ済みです。 まずは、普通にnokogiriをインストールしましょう。 次にrubyのインストールディレクトリ(私の場合はD:\Ruby\ruby-2.2.3-x64-mingw32)を開きましょう。そこから順番に以下のフォルダを開いていきます。32bit

  • Ractive.js の紹介 — KaoriYa

    HTML の DOM 操作を良い感じで隠蔽してくれる Ractive.js というライブラリを紹介します。 記事は VirtualDOM Advent Calendar 2014 の13日目の記事です。 VirtualDOM といえば React だ、と言わんばかりの流れですが、記事では敢えて Ractive.js を取り上げます。Ractive.js が VirtualDOM かって? 確かめてみましょう。 良し、大丈夫。VirtualDOMです。 Ractive.js とは? Ractive.js は家サイトの説明を借りれば、テンプレートドリブンなUIライブラリです。なんのこっちゃわからないでしょうね。 まずVirtualDOMのメリットとは 生のDOMを直接操作しなくても、JavaScriptのオブジェクトだけを操作すれば、上手いこと自動的に書き換えてくれる ことだと言えます。

  • Vimが変なファイルを作るようになった — KaoriYa

    +kaoriya版として配布しているVimでは デフォルトで undofile がオンになった関係で ファイルの保存時に変な名前のファイルが作成されるようになりました。 その解説をします。 うちで配布している Vim は 7.4.227 から、デフォルトで undofile がオンの状態で配布されるようになりました。そのためデフォルトではファイルを保存した時に同時に.{ファイル名}.un~ を undo ファイルを作成します。この undo ファイルにより Vim は undo の情報をセッションを越えて保持できます。 しかしいきなりゴミのような名前のファイルが生成され、普通のユーザは驚くことでしょう。かく言う私も驚きました。っていうかそのまま間違えてレポジトリに commit しちゃいました。それでは困りますので、無効化する設定などを紹介しておきます。 完全に無効化する こう設定してくだ

  • jQueryのメモリーリークの傾向と対策 — KaoriYa

    Web開発にとても便利なjQueryですが、 実はメモリーリークを誘発しやすい構造であることは あまり知られていないようです。 記事ではメモリーリークが発生する傾向と対策を紹介します。 皆さんjQueryは使ったことありますよね。Webでの開発ではとても便利で、ほぼ必須と言っても過言ではありません。しかしながらこのjQueryはメモリーリークを誘発しやすい構造であることはあまり知られていません。 GCのあるJavaScriptでメモリーリークが発生するとは何を言っとるんだ、と思われる向きもあるやもしれません。しかしGCがあっても、もう使わなくなったオブジェクトを配列やテーブル(Object)にしまいこんでいて、それを回収するタイミングが存在しなければ積もり積もってメモリを圧迫する、メモリーリークとなりうるというのは想像に難くないでしょう。jQueryで起こりうるメモリーリークはそのような

  • Webアプリをいまどきの手法で爆速開発した — KaoriYa

    外道はるかぜちゃんジェネレータというWebアプリを いまどきな手法を用いて爆速で開発した話を紹介します。 先の3連休中、外道はるかぜちゃんジェネレータというWebアプリを開発&公開しました。ここで採用した開発手法がいまどきな爆速開発でしたのでちょっと紹介&ステマします。使った技術は以下の通りです。 AngularJS: Googleが開発しているViewModelなWeb開発ライブラリ(MVW: Model View Whateverだったかな?w) Github pages: スタティックサイトのホスティングに最適 Kii Cloud: mBaaS (mobile backend as a service) で共有データの保存に利用 HTML5 Canvas: 画像生成に。サーバサイドではなにもしてない! サービス概要 外道はるかぜちゃんジェネレータはベースとなる画像があり、そこに面白い

  • 【成人】 Vim + DirectWrite版(rev. b)の人柱 【限定】 — KaoriYa

  • JDK7でAndroidアプリをリリースビルドする方法 — KaoriYa

    AndroidアプリはJava/JDKを使ってビルドしますが、少し前までJDK7ではリリースビルドできませんでした。 2013/02/05追記: 既に最新のAndroid SDK (r21で確認)ではこの記事に書いてあることをやらなくてもJDK7でビルドできるようになっています。 AndroidアプリはJava/JDKを使ってビルドしますが、少し前までJDK7ではリリースビルド(ant release)できませんでした。正確にはビルド自体はできるけど実機にインストールできないバイナリができてしまっていたのです。しかしあれから半年がたち、気がついたらリリースビルドするための条件が揃っていたのでちょっとやってみましょう。 必要なもの まずrequirementsですが、まぁ私が試した各ソフトウェアのバージョンです。 Android SDK r19 (r18をDL後SDK managerでupd

  • Vimスクリプトを書いてみよう — KaoriYa

    目的 機能を持ったVimスクリプト(プラグイン)を徐々に作る様子を見て、書き方を学習してみよう 作るのはよくあるタイプのプラグイン Javaの単体テスト用クラスファイルを開く(作る)コマンドを作るよ 「ね、簡単でしょう(by ボブ)」と言ってみたい まずは雛形 ひな形としてこんなスクリプトを作ります。 command! -nargs=0 UtestAppend call <SID>UtestAppend() function! s:UtestAppend() echo 'HERE' endfunction " s:UtestAppend() UtestAppendというコマンドを追加 UtestAppendコマンドいが実行されたら ‘HERE’ と表示する ほら、すごく簡単ですね。 Javaだけに作用させる 以下はdiff形式で変更点だけ。 @@ -1,5 +1,17 @@ c

  • Google Readerのヘッダーを低くする拡張を作ったよ~ — KaoriYa

    Google Readerのデザインが新しくなりました。一部の人にはあまり好評ではないようですが、私もその一人で特に無駄にスペースを使っているヘッダー部分が邪魔でしたので、Chrome拡張機能を作る練習も兼ねてヘッダー部分を低くして見ました。試験的に下記のリンクで公開します。 拡張機能のダウンロード(インストール) ソースコード CSSだけ追加定義して、ヘッダーを低くし、あとコンテンツのリストとビューの間にセパレータ入れました。 気が向いたらちゃんとChromeウェブストアに登録するかも。 2011/11/04 01:10 追記 Chromeウェブストアに登録してみた。インストールした拡張機能を同期&管理するには登録が必要そうだったので。

  • Vimの起動が遅い場合の原因と対策 — KaoriYa

    Vimの起動にかかる時間は来すごく短い。しかし使い方によっては長く(遅く)なってしまう。そうなる原因と対策を紹介する。 Vimは起動にかかる時間が短いソフトウェアです。この言葉に納得できない人はこの文章の残りをちょっと読んで行きませんか? 「Vimの起動、長い(遅い)なぁ」と感じているあなた、その原因が何か調べたことはあるでしょうか。Vimが遅くなる原因の95%はスクリプトの読み込み&実行にあります。「autoload化する」「–startuptimeを使ったことがある」?なかなかやりますね。でもautoloadは単に遅延させるだけで結局かかる総時間はかわりませんし、startuptimeで主にわかるのは各スクリプトの読み込みにかかった時間です。そのスクリプトがなぜ遅くなっているのか、どうすると速くなるのかを紹介しましょう。 遅くなる原因 回りくどいのはここまでです。遅くなる原因を列挙し

  • 1