タグ

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

  • 自作キーボードを始めて5か月の歩み — KaoriYa

    はじめに 2020年の11月末。 なんとなく自作キーボードでも始めて見るかと思い付きました。 それまで自分にとって自作キーボードはハードウェア技術的にも既知で、 さらに長年使い続けたHHKBから乗り換える気も起こらず見向きもしなかったわけですが 「実際にやってもいないのにわかった気になるのは頭でっかちでよくないな」 と考えてやってみることにしたのです。 ということでやってみて見事にハマりまして 始めて1か月で数台のキーボードを組み立て この5か月で10台を超え20台に迫る勢いでキーボードを組み立て・設計・制作するに至りました。 この記事では自分が作ってきたキーボードたちを振り返ってみたいと思います。 なにぶん数が多いので1つのキーボードにつきなるべく量を絞って以下の観点から書き下していきます。 なぜそのキーボードを選択したのか(作ろうと思ったのか) 作った際の特徴、思い出話とかあれば 作っ

  • 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日目の記事です。 「正規表現」はもともと形式言語という言語学の一分野の研究から生まれました。 言語学というのは言葉を科学的に研究する学問です。 形式言語はその中でも

  • Vim の DirectX を速くした話 — KaoriYa

    先日の記事 に書いたとおり Vim のカラー絵文字パッチにより、 DirectX (正確には DirectWrite) を用いた画面描画がめちゃくちゃ速くなりました。 その記事にはこんなことを書いていましたね。 そして僕は大きな間違いに気がついた。 詳細を説明はしませんが、一言で言えば「Vimは標準的なWin32アプリではない」 このあたりをちょっと詳細に説明してみようと思います。 なので Vim の話でありながらほとんど Windows の話になります。 しかも無駄に長くなりそうです。(実際なった) なおこの記事は Vim Advent Calendar 2017 3日めの参加記事です。 遅かった理由 速くなった理由を知るには、その前の遅かった理由を知る必要があるでしょう。 まずはそれを見ていきましょう。 DirectWrite には大きく分けて2つの描画方法があります。 GPUの性能を

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

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

  • renderoptions の設定のしかた — KaoriYa

    Vim は 8.0 で DirectX に対応しました。 しかし誰もそれの良い設定のしかたを知らないはずなので解説します。 記事は Vim Advent Calendar 2016 の 25日目(最終日)の記事です。 TL;DR Vim で DirectX を使うには以下のようにしてください。 OS の ClearType テキストの調整 を実施する VimUTF-8 モードで起動し、好きなフォントを設定する set rop=type:directx,renmode:5 で DirectX を有効化する Vim の DirectX サポート 御存知の通り2016年の9月に Vim 8.0 がリリースされました。 10年ぶりのメジャーアップデートということで たいそう話題 になりました。 特に Windows 界隈のユーザーにとっては、 テキストエディタが DirectX に対応した

  • 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がぴょんぴょんするんじゃぁ^~ — 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

  • うちのVim(+kaoriya)の c_CTRL-X — KaoriYa

    うちのVim(+kaoriya)には、 私しか使っていなさそうな独自キーマップが仕込まれています。 今回はそれを紹介したいと思います。 この記事は、Vim Advent Calendar 2014の28日目の記事かもしれません(もしかしたら)。 TL;DR うちのVim(+kaoriya)では、コマンドラインで CTRL-X をタイプすると、現在開いているファイルのディレクトリを入力できます。 独自キーマップ うちのVim(+kaoriya)には、私しか使っていなさそうな独自キーマップが仕込まれています。そのキーマップとはコマンドラインにおける CTRL-X です。コマンドラインにおいて CTRL-X を押すと、現在アクティブになっているバッファのファイルがあるディレクトリ、すなわちディレクトリパスをコマンドラインに入力できます。 このキーマップは cmdex.vim にて定義されています

  • 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
  • 最近よく見かけるバッドエンジニアリング — KaoriYa

    最近よく見かけるバッドエンジニアリングの発生パターン。 イカしたフレームワーク/ライブラリが誕生する あるプロダクトがそのフレームワークを利用する フレームワークのスコープから少し外れたことをやるためにハックする フレームワークがセキュリティ問題などにより更新される 3のハックのせいでアップデートできない どーすんだよ、これ。 もちろんハックがシンプルで規模が小さい or 適切な方法ならば、アップデート時にフレームワークのソース読んでなんとかできるわけだけれど。 とくにフレームワークがカジュアルに使えるほど、3のハックを行う人がド素人で、どうにもならなくなるように感じてる。

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

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

    lepton9
    lepton9 2014/09/20
  • 書籍:Vim scriptテクニックバイブル 発売によせて — KaoriYa

    執筆に参加させていただいた「Vim scriptテクニックバイブル」が、 日、正式に店頭に並びます。 執筆に参加させていただいた「Vim scriptテクニックバイブル ~Vim使いの魔法の杖」が、日、正式に店頭に並びます。早いお店では1週間ほど前から先行販売として売っていたようで、かく言う私も著者見よりも先に、その先行販売 で購入したという状況です(苦笑 7/30 先行販売 『Vim script テクニックバイブル Vim使いの魔法の杖』 技術評論社 (978-4-7741-6634-6) Vim script サポーターズ 著 10冊入荷 http://t.co/QJ5nx2t0QN — 書泉ブックタワーコンピュータ書売り場 (@shosen_bt_pc) 2014, 7月 30 余談ですが、この先行販売により一時的にとある書店のコンピュータ書のベスト3にい込んだらしいです。

    書籍:Vim scriptテクニックバイブル 発売によせて — KaoriYa
  • Go/Migemo の紹介 — KaoriYa

    Migemo とは Migemo とはローマ字を入力して漢字を検索するためのライブラリです。詳しく言うとローマ字をひらがなへ変換し、そのひらがなを基に漢字として変換可能な候補を列挙し、それら複数の候補を合成して正規表現パターンを生成する、それが Migemo の主機能です。Migemo が生成した正規表現パターンを用いて検索すれば「ローマ字を入力すれば漢字を含む日語を検索できる」ようになるのです。 1つ具体的な例を示しましょう。ローマ字「kikai」を考えましょう。これはひらがなで示すと「きかい」です。漢字に変換すると「奇怪」「機械」「機会」…まだまだありますが、ひとまず複数候補があるということはわかります。ここまであげた5個の単語に一度にマッチする正規表現は以下のようになります。

  • VimのDirectWriteの設定方法 — KaoriYa

    日配布を開始したVimには、すでに何度か紹介しているフォント描画を綺麗にするDirectWriteを利用したパッチを含めました。記事ではその利用方法を紹介します。 この画面は私が普段使っている UM+ フォントを用いたものです。これはいわゆるビットマップフォントというやつで、dot by dotでカッチリ表示されるので私は好きです。ちなみに設定はこんな感じ。

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

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

    lepton9
    lepton9 2014/03/31
  • 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: 画像生成に。サーバサイドではなにもしてない! サービス概要 外道はるかぜちゃんジェネレータはベースとなる画像があり、そこに面白い

  • codic-vim プラグイン — KaoriYa

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

  • 正しいVimのロゴ — KaoriYa

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

    正しいVimのロゴ — KaoriYa
  • iBusがクソになった理由 — KaoriYa

    Xubuntu を 13.10 へアップデートしたら日本語入力(iBus)がクソになったのでその理由を調べてみました。 Xubuntu を 13.10 へアップデートしたら日本語入力(iBus)がクソ(1.5)になりました。どんなにクソかは iBus 1.5がクソすぎる に譲るとして、私はどうしてそうなったのか (あわよくばどうすれば直るのか) を真夜中に調べてましたのでその成果を記しておこうと思います。 私の場合 Vim でIMEを制御 できないことで問題が根深いことを知りました。調べてみると InputContext というクラスから is_enabled(), enable(), disable() の3つのメソッドが消えていました。これらのメソッドは端的に言うと日語の状態を取得、有効化、無効化するものです。うんもうIME制御なんてできません。ちなみに その修正が行われたのは約2年