タグ

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

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

  • カラー絵文字パッチ制作の経緯 — KaoriYa

    2017/11/26 19:30 頃に vim/vim へ pull request を出したカラー絵文字パッチが、 わずか3時間半のうちにマージされました。 制作に関わったのは mattn さん、k-takata さんそして私の3人で、 超優良な品質のパッチという自負はありましたが、 それでもこの短時間でのマージはまったく予想しておらず、 望外のことに喜びと達成感もひとしおです。 ではその余韻の残るうちに、 この色付き絵文字対応パッチ制作の時間的経緯を ログを掘り返して書き記しておきましょう。 来は Vim アドベントカレンダーのほうにも使えるネタなんですが、 まぁそちらには別のやつを考えましょうってことで。 あ、メッチャ長いんで要注意。 前日譚 まず以前から mattn さんは色付き絵文字を出したいと表明していました。 先日行われた VimConf 2017 でも言っていましたね。

  • Vim昔語2011 — KaoriYa

    目次 第一話 遭遇編 第二話 スクリプト編 第三話 激闘編 第四話 昇華編 第五話 翻訳編 最終話 未来編 あとがき 勢いだけで書いてきて未回収の伏線もあったりしますが、そろそろ記憶のほうもかなり曖昧になってきましたので、ここで一つの区切りといたします。2011年のお盆の緊急特別企画ということで楽しんでいただければと思います。 幾分古いことですし、またエンタテインメントとしての性格が強いものですので、文章の表現には誇張や創作があることをお赦しください。また文章中に名前をあげました皆々様には、事前の許可などいただかず誠に申し訳ありませんでしたが、なにとぞご理解とご協力の程をお願いいたします。同時にネタになっていただきありがとうございました。 こういう企画文章を集中的に掲載するのってしんどいですけど面白いですね。特にtwitterを中心にほぼリアルタイムに反応をいただけるのが、執筆を進める上で

  • VimConf 2016 で演ってきた — KaoriYa

    VimConf はココ数年、毎年秋頃に開催されている Vim の大規模なカンファレンスです。去年まではどちらかというとお客さんの立場でトップバッターで講演してきたのですが、今年は裏方である運営のさらにサポートという形で関わらせてもらいました。 今開催の各講演はどれも素晴らしく、特に Vim にとどまらず別のテキストエディタから見た Vim や、プログラミング言語から見たテキスト編集など、バラエティ豊かな講演となりました。Vim というテーマを中心に、より広い視野でソフトウェアと私達人間の関係の質を探るというのを、今後の VimConf のテーマにできたらなと願わずにはいられません。 VimConf 2016 の開催には、中心的な役割を果たしてくれた ryunixさん, Kuniwakさん, babarotさん を始め、表には書かれていない方々まで多くのご助力をいただきました。この場を借り

  • スパルタンVim 5.0のPDF公開 — KaoriYa

    C90 において頒布したスパルタンVim 5.0のPDFを公開いたします。 http://files.kaoriya.net/goto/c90pdf 以下、「はじめに」より抜粋です。 書スパルタンVim 5.0では、 デフォルト状態での機能と基的なキー割り当ての一部について、その背景や利用シーンを解説することで、賢明な読者諸氏により良いキーマップの定義方法について再検討を促してもらおうとするものです。 頒布したものから文の修正等はしていません。印刷用にasciidoctor-pdfの設定を少しいじり、頒布用に圧縮をしてあります。 訂正 H, L, M の説明が誤っています。「カーソルの位置へスクロールする機能」ではなく「カーソルを画面上の特定の位置へ移動する」機能です。 * * *

  • 書籍「みんなのGo言語」を著者陣よりも早く読んだ — KaoriYa

    先行販売された書籍 「みんなのGo言語」の紙の実物を著者陣よりも早く入手し読んだので、 夏休みの宿題には少し遅れましたが読書感想などまとめてみます。 来たる 9/9 に発売予定の書籍 みんなのGo言語 が、例によって書泉ブックタワーにおいて先行販売されました。この屋の店頭には、著者に見紙が届くよりも早くが並ぶということで、一部にはとても有名です。そのため僕は、著者よりも早く実物のを手にして読んで感想を記事にすることを画策し、数日前から足繁く通っては別のを買ってたりしました。おかげで結構な出費になりました。でも技術書漁りは仕事かつ趣味みたいなところがあるからね。しょうがないね。 9/2先行販売『みんなのGo言語 [現場で使える実践テクニック] 』技術評論社(978-4-7741-8392-3)松木雅幸,mattn,藤原俊一郎,中島大一,牧大輔,鈴木健太著 入荷● Go言語を適材適所

  • Vim scriptによるゲームの新アーキテクチャの考察 — KaoriYa

    従来のVim scriptによるゲーム作成時の問題点を解消する、 新しいアーキテクチャを考察してみました。 この記事は Vim script Advent Calendar 2015 の 13日目の記事です。 まずは以下のデモ画像(別ウィンドウ)を見てください。 かなりスムーズに○リオが動いています。実はこれ、全部Vim scriptでできています。 ソースコードは koron/vim-ario に置いてありますので、チェックアウトして gvim -S game.vim することで試せます。ただし動作確認・保証は Windows版の +kaoriya な gvim でしかしておりません。また解像度も画面幅1920ドット無いとおかしなことになるので、異なる環境の場合は各自で調整してPRなどしてください。 操作は以下のとおりです。 h - 左ボタンのトグル l - 右ボタンのトグル f - ジ

  • Vim に Gosrc コマンド作った — KaoriYa

    この記事は Vim Advent Calendar 2015 の 1日目の記事です。 Vimgolang サポートは非常に手厚いことで有名です。しかしながら、ちょっと $GOROOT や $GOPATH の下にあるソースコードを探検したいって時に、手軽な良い方法がなくて困ってました。主に私が。 誰か作ってくれないかなぁ (/ω・\)チラッ — MURAOKA Taro (@kaoriya) 2015, 11月 20 誰か作ってくれないかなぁって期待していたんですが、誰もやってくれないようでしたので、自分で koron/vim-gosrc を作りましたよ。ほぼ :Godoc のパクりです。 まぁ実際のところアドベントカレンダー用に用意していた、命のネタの進捗が思わしくなかったのと、Vim script アドベントカレンダー 2015のほうがふさわしそうだったので、急遽ネタをコンバート

    Vim に Gosrc コマンド作った — KaoriYa
  • あぁ^~Vimがぴょんぴょんするんじゃぁ^~ — KaoriYa

    let s:gravity = 2.4 function! s:start_pyonpyon() set guioptions-=m redraw! winpos 4000 4000 | winsize 80 24 let [s:maxX, s:maxY] = [getwinposx(), getwinposy()] let [s:unit_h, s:unit_v] = [s:maxX / 133.0, sqrt(s:maxY * s:gravity * 2)] let [s:v, s:w] = [-s:unit_h, s:unit_v] let [s:x, s:y] = [s:maxX, 0] set updatetime=13 augroup PyonPyon autocmd! autocmd CursorHold,CursorHoldI * call s:pyonpyon() aug

  • IoTっぽい温度ロガーを作った — KaoriYa

    暑い日が続きますね。朝、オフィスに一番に乗り込んだ時の、クーラーが入る前のムワッとした暑さに、「これ、人がいない時どんな温度変化があるのだろう?」と気になることはありませんか? 私は非常に気になりまして、過去にはUSB接続の温湿度計を常時稼働しているFreeBSDサーバに接続して、rrdtools などで常時グラフに可視化したりしてました。しかしもろもろの、特にUSBドライバなど関連ソフトウェアのメンテナンスがめんどくさくなって、最近では止めていたんです。ただ技術的には常に気にしていました。 そんな中、つい先日もあまりの暑さに、何か簡単に面白く温度ログを残せる機器はないかなーって探していたところ、BLE温度センサー BLECAST_TM を見つけてしまいました。このBLECAST_TMが面白いのは、アドバタイズパケット(=Bluetooth機器を接続時に、親側へ発見してもらうために発信し続

    IoTっぽい温度ロガーを作った — KaoriYa
  • FcitxでVimからIM制御する — KaoriYa

    過去にも何度か取り上げてきましたが、Linuxでの日語制御にはとても難しい問題が常につきまといます。 Ubuntu上のVimでIME(ibus)制御 iBusがクソになった理由 私は以前から書いているとおりXubuntuを使っているのですが、iBusに愛想を尽かして以降はUIMでMozcを使うようになっていました。しかし結構な頻度で、急にIMが利用できなくなってしまうという現象に見舞われていました。それはIMを通じた入力ができなくなる(英語は入力できる)という現象で、VimからだけではなくChromeでも同様の症状に悩まされていました。 あたかもIMから切断されたような、この現象の原因はUIMではないかと推測し、とりあえずFcitxに切り替えてみようと思い、やってみることにしました。まずは Fcitx のインストールです。 あとは設定マネージャから言語サポートを選択し、「キーボード入力に

  • 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にrevコマンドを実装してみた — KaoriYa

    この記事は Vim Advent Calendar 2014 3日目の記事です。 前説 VAC2014 のネタを全く考えていなくて、ぜんぜん思いつかなくて困っていたところ 面接官「テキストに書かれた4行をキーストローク5回で確実に上下反転させるにはどうしたらいいですか」 KoRoN「ちょっとvimのソース弄って来る」 mattn「五人だけに誤認逮捕でしょ」 thinca「普通に無理なんじゃ」 Shougo「そのまさかだ!」 一同「言わせねぇよ!」 — mattn (@mattn_jp) 2014, 12月 1 まっつんさんから急にネタを振られたので @mattn_jp :rev<ENTER> — MURAOKA Taro (@kaoriya) 2014, 12月 1 やってみることにしました。 ということで早速 :reverse コマンドを作ってみましょう。 調査 まずは :sort が、

    Vimにrevコマンドを実装してみた — KaoriYa
  • スパルタンVim 4.0のPDF公開 — KaoriYa

    すっかり涼しくなってまいりましたが、夏の暑いさなかに行われたコミケ C86において頒布した スパルタンVim 4.0 のPDFを公開いたします。 http://files.kaoriya.net/goto/c86pdf Vim scriptがどう実装されているかを、そのソースコードを通じて理解してしまおうという、斜め&明後日な方向からの超Vim script入門書です。先日、私は Vimlambda()関数の実装 をお手伝いしていましたが、このを読めばあなたも同じようにできるようになるかもしれません(なれるとは言っていない)。 秋の夜長のお暇つぶしになれば幸いです。

  • または私は如何にして例外するのを止めて golang を愛するようになったか — KaoriYa

    Java の finally よりも golang の defer のほうが筋が良さそうだ、 ということから考え始めた結果、 どうして私が golang を気に入ったのかがわかった気がしたので書いておきます。 ファイルをオープンし読み込みな処理で何かして終わったら閉じる、という関数を Javagolang で書き比べてみましょう。 Java で書くとこんな感じですね。 public static void readFile(String fname) throws IOException { InputStream s = null; try { s = FileInputStream(fname); // // Do something with "s". // } finally { if (s != null) { s.close(); } } }

  • 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 3.0のPDF公開 — KaoriYa

    2013年末のコミケ C85において頒布しました スパルタンVim 3.0 のPDFを公開します。 http://files.kaoriya.net/goto/c85pdf 真面目にVimの使い方を解説しながらも思いっきり趣味に走った作品、ご堪能いただければ幸いです。なお頒布版の誤植を1箇所だけ修正しました。お持ちの方は間違い探しとしてもお楽しみいただけるかもしれません。

  • codic-vim プラグイン — KaoriYa

    年もよろしくお願いします。ということでコードを書く際のネーミング辞書 codic をVimから使えるようにするプラグイン codic-vim を書きました。 codic はプログラムを書く上でプログラマを悩ませるクラス名や変数名の命名を助ける目的で作られたWebサービスで、APIこそありませんがその辞書データをクリエイティブ・コモンズのもとに公開してくれています。 インストール 香り屋版Vimを使っているならば バージョン 0.9 のzip をダウンロードして解凍し、出てきた codic-vim ディレクトリをそのまま $VIM/plugins ディレクトリに置けばインストールは完了です。次回Vimを起動した時から codic-vim が有効になります。もしくは普通のプラグインと同じようにマネージャを使っても良いでしょう。 使い方 使い方はとっても簡単で、調べたい単語の上にカーソルを合わ

  • プログラミング言語内の正規表現リテラルについて — KaoriYa

    プログラミング言語内の正規表現リテラルが是か非か、 そんな議論にいまさらながら参加してます。 ただしどちらかの立場に立って擁護したいというわけではなく、 話を抽象化というか一般化して問題の質にせまります。 今週始めに「プログラミング言語内に正規表現リテラルが必要かどうか」という論争がtwitterの一部で盛り上がっておりました。私個人の意見としては以下の発言に集約されております。 正規表現リテラルの議論、プログミング言語の良さをどう定義するかに、結論が大きく依存しそう。言語の定義を最小にするなら要らないし、記述を最小にするなら要る。更に言うと描きやすさと読みやすさの定義と比重。 — MURAOKA Taro (@kaoriya) 2013, 12月 18 つまり言語の良さなどドメイン(≒用途)で決まるのだから、その設定次第で結論はどちらにでもできてしまう、というわけですね。 でも、まてよ

  • 正しいVimのロゴ — KaoriYa

    よく使われているVimのロゴ、なんかおかしいのです。 間違っているのです。その原因を明らかにし正しいロゴの使い方を啓蒙したいのです。 この記事は Vim Advent Calendar 2013 6日目です。 変なロゴとその出自 まずは下の画像を見てください。 2日目からの引用ですが、一見なんの変哲も無いVimの正式なロゴです。しかし何かがおかしい。わからない人もいるかもしれませんが、これは縦横比がおかしいのです。背景の緑の四角は来なら正方形でなければならなにもかかわらず、この画像では菱型になっています。この違いは昔からVimのアイコンに慣れ親しんだ身としては、快速電車の中で足の裏が痒くなったけど掻くに掻けないそんなもどかしさを感じずにはいられない、というわけです。 問題はこの縦横比が狂った画像がどこからやってきたのか。そのネタで引っ張ろうかとも思いましたが、実はWikipediaでした

    正しいVimのロゴ — KaoriYa