タグ

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

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

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

    raimon49
    raimon49 2021/04/23
    沼だ
  • テストのためだけに`interface`を書きたくないでござる — KaoriYa

    golangでテストのためだけにinterfaceを書くのが死ぬほど嫌だったので編み出した技を紹介します。 TL;DR テスト(=mock)のためだけにinterfaceは切りたくない 型エイリアスとビルドタグを組み合わせるとinterfaceがなくてもモックが作れる この手法に必要なモックを自動生成するプログラムを作った interfaceは当に必要なシーンで使うべき Background 現在モックを使った単体テストは一般的です。 Javaでの例を挙げると、モックしたいコンポーネントについて予めinterfaceを定義しておき、モックではそのインターフェースを実装するのが定石です。 しかしgolangのinterfaceはJavaなどのそれとは若干性質が異なるため、テスト=モックのためだけにinterfaceを書くのはオーバーワーク気味です。 そうテストのためだけにinterface

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

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

  • DockerNATが一部のポートを潰しちゃう話 — KaoriYa

    Docker Desktop for Windows と VirtualBox を共存できないか試していて、 もっとも納得できていない現象を紹介します。 記事はトライしたけどできなかった系のお話から始まります。 さらに妥協した方法を模索しているうちに不可解な現象に遭遇しました。 たまたまその不可解な現象の回避方法を発見しましたが、 どうしてそれがうまく機能するのかはわかっていません。 教えてもらったことをきっかけに正しい理解を得ました。 詳しくはこちらの 追加記事 をご確認ください。 TL;DR Docker Desktop for Windows の仮想スイッチ vEthernet (DockerNAT) が生きてると、VirtualBox のポートフォワーディングで 1688 から 2279 の範囲が利用できなくなる ネットワークアダプタ vEthernet (DockerNAT)

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

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

  • 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

    raimon49
    raimon49 2015/10/07
    やばいやつ
  • または私は如何にして例外するのを止めて 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(); } } }

    raimon49
    raimon49 2014/04/17
    defer s.Close()とfinallyの中のif
  • Vimが変なファイルを作るようになった — KaoriYa

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

    raimon49
    raimon49 2014/04/17
    7.4.227 から :set noundofile
  • 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.

    raimon49
    raimon49 2013/02/01
    has('python3') :py3
  • githubでの複数アカウントの使い分けかた — KaoriYa

    githubで複数アカウントを使い分ける方法を紹介します。gitそのものではなくsshの使い方になってしまいますが。 前置き みなさんgithubは使ってますか? 趣味のオープンソース活動だけでなく、最近はお仕事githubを利用する人も多くなってきたことでしょう。 そうなると困るのが情報漏えい対策です。githubではお金を払えばprivateなレポジトリや組織を作ることができ、それらを活用することでNDAの下にあるプロジェクトも安心して取り扱えます。というわけで私もプライベートに使ってるアカウントをそのまま仕事に使おうと考え評価していたのですが、ある問題点が浮上しました。githubから飛んでくる通知 メールです。あれをプライベートと仕事で同じメールアカウントに飛ばしてしまうと、オペミスなど万が一の事故が起こらないとは言えないのです。特に粗忽な私はメールのオペミスしやすいですからね。

    raimon49
    raimon49 2012/07/14
    素晴らしい。早速これ導入したい。
  • 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

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

    C81での頒布からそろそろ三週間になろうとしていますので、スパルタンVimPDFを公開します。以下からダウンロードしてください。 http://files.kaoriya.net/goto/c81pdf このPDFは表紙とそれ以外を別々のPDFとして出力し、MERGE PDFというWebサービスを使って1つのPDFにしました。最近はほんとうに便利になりましたね。 2012/01/20追記 スパルタンVimに対してtwitterでいただいた誤りの指摘をまとめました。 http://togetter.com/li/244330 その他に見つけた場合はtwitterならば @kaoriya にお願いします。その他の手段は…まかせます。私の目に入りそうなところに書いてください。

  • Vimの問題を見つけた時の報告のしかた — KaoriYa

    Vimを利用していてなんかおかしいなって思った時にどうしてますか?是非、問題として報告してください。今回は日語で報告する方法をご紹介いたします。 Vimを利用していてなんかおかしいなって思った時にどうしてますか?理想を言えば英語vim-devへ報告できることですが、ちょっと日人には敷居が高いですよね。そんな時は是非vim-jpまで不具合として報告してください。今回は日語で報告する方法をちょっと細かく紹介いたします。 問題発見から報告までの流れ まずは実例ということで、ちょうど今さっき私が発見した問題を報告するまでのストーリーを紹介します。 Vimを使う 「Vim Advent Calendarの欠番を埋めるため、正規表現を使ったネタスクリプトでも書くかー」 :help pattern.txt 「なんか使ったこと無い正規表現の機能はないかなー 行をまたいだ操作したいなー」 /line

    raimon49
    raimon49 2011/12/28
    これは一般的なバグレポートの書き方としても参考になる話。
  • Walkman Android買った — KaoriYa

    Walkman Android (ウォークマン Zシリーズ)を買ったので開封の儀&インプレッションなど。 実は私、普段あまり音楽を聞きません。ただ気に入った新しい音楽デバイスが登場した時に購入&集中的に聞いたりします。最初は初代iPodでした。次は初代iPod touchでした。そして今度はウォークマンです。しかもAndroid搭載。 ウォークマン Zシリーズ 今回購入したのはZ1000シリーズの64GB版、NW-Z1070です。価格はヨドバシカメラで42800円でした。 開封の儀 まずは開封の儀をとり行います。まずは外装。 外箱をあけて中身を取り出すと二段に別れます。上(右)が体。下(左)が付属品。 内容物を並べるとこんな感じ。 インプレッション そして早速セットアップ。基的にAndroidなので慣れてます。というか携帯電話としての余計なセットアップが要らないし、変なアプリもプリイン

  • rubyをdisってみる — KaoriYa

    自分で運用しているredmineが依存性の問題で動かなくなったので、腹いせ&八つ当たりでrubyをdisってみることにしました。 redmineが動かなくなりました。背景はこうです。 FreeBSDにportsでredmine入れて快適だぜ! セキュリティとか怖いからなるべくportsは新しくするぜ! あれredmineが動かくなったぜ? なんでだぜ? 結論からいうとruby-gemsとrailsのバージョンがコンフリクトしたのが原因でした。もともとこのFreeBSD boxにはredmine 1.2.1とruby-gems 1.7が入っていました。そしてある時portsでruby-gemsが1.8にアップグレードされたのです。redmine 1.2.1にはrails 2.3.11がバンドルされています。このrails 2.3.11、実はruby-gems 1.7以前でないと動かないという

    raimon49
    raimon49 2011/09/17
    portsのコンフリクト
  • Vim昔語/遭遇編 — KaoriYa

    mattnさんのエントリを読んでいたら懐かしくなったので思い出話でも。 当時私は大学生で、自宅、研究室、バイト先の3箇所で開発をしていた。Visual C(Studioの前身)、ViVi、jvimなんかを使ってプログラムを書いていたと記憶している。jvimのサイトにはgvim(version 5)のバイナリがあったので試してみたが、ろくに設定もされていなかったもんだから「ああjvimで良いな」と思ったものだった。 ところがふとしたことから家のVimのマニュアルを読み、添付されているサンプルの設定(vimrc_example, gvimrc_example)を利用したとき、私に衝撃が走る。それまで書いていたC、PerlTeXのコードがカラフルに色づけされていた。圧倒的に読みやすい。今では珍しくないシンタックスハイライトも当時はキーワードハイライトが出始めた頃でまだ珍しかった。しかもvim

  • 1