タグ

ブックマーク / lowreal.net (9)

  • ErgoDox ではないナニか。オープンソースかつ Bluetooth 接続のキーボード | tech - 氾濫原

    ここ数ヶ月ぐらいキーボードを作っていた。そのためにいろいろ yak-shaving としかいいようがないことも多々していた。 いろいろ書くことが多いので、細かい設計などについては別途エントリを分ける。 コンセンプトとキーレイアウトおよび技術仕様の決定 回路設計とアートワーク・実際の製作 ファームウェアの実装 あたりをそれぞれ別途詳細なエントリを書く。だいたいの人は細かいことはどうでもいいと思うので、概要のみこのエントリにまとめる。 コンセプトや特長 UNIX ベースのキーレイアウト (というかHHKBをベース) とし、違和感なしに分割キーボードとする。 キー配列 UNIX キーボードを2分割した形を基にする。つまり HHKB とほぼ同じで、Ctrl キーはAの左、ESC は 1 の左など。 矢印キーはどうしても欲しい (HHKB への大きな不満のひとつ) F1〜F12キーもできれば欲しい

    ErgoDox ではないナニか。オープンソースかつ Bluetooth 接続のキーボード | tech - 氾濫原
    hide_o_55
    hide_o_55 2016/08/31
  • C++ でビットフィールドを再発明する | tech - 氾濫原

    ビットフィールドとは C/C++にはほとんど使われてないがビットフィールドという機能がある。 union { uint8_t raw; struct { unsigned FAULT_QUEUE : 2; unsigned CT_PIN_POLARITY : 1; unsigned INT_PIN_POLARITY : 1; unsigned INT_CT_MODE : 1; unsigned OPERATION_MODE : 2; unsigned RESOLUTION : 1; }; } config; このように書ける。struct 内で名前の後ろについているのが、そのフィールドで消費するビット数で、この場合合計で8bitになり、それを uint8_t と共用している。 こうすると config.OPERATION_MODE = 2; などと、マスクやシフトを伴わずに直接書けて、結果

  • スクリーンキャスト用のキーストローク表示アプリ | tech - 氾濫原

    前にMacRuby でスクリーンキャスト用のキーストローク表示スクリプトを書いたんですが、それを Swift で書きなおして機能を追加したりしてアプリにしました。 https://github.com/cho45/KeyCast 追加の機能:パスワードフィールドで自動非表示 基的に AXSecureTextField への入力って、そもそもアクセシビリティのコールバックにこない?っぽいのですが、一部のアプリでは飛んできてしまったり、よくわからない挙動をします。 なので、こちらのツール側で、パスワードフィールドかどうかを判定して非表示に切り替えています。 と書くと簡単なんですが、実際一番やりたい Google Chrome ではデフォルトではアクセシビリティオブジェクトが生成されないみたいな罠があったり (VoiceOver が有効でなければアクセシビリティオブジェクトを作らない)、やっか

  • YAPC::Asia で「ウェブエンジニアのローレベルプログラミング」という発表をしました | tech - 氾濫原

    ちょっと時間に対して話したいことが多すぎて、各分野での掘り下げが足りなかったとは思いますが、一通り下のほうまで盛りこみました。 電子工学について:自分は学校で電子工学を体系的に学んだことはありません。 YAPC 会期中はそこらへん歩いてます。

    YAPC::Asia で「ウェブエンジニアのローレベルプログラミング」という発表をしました | tech - 氾濫原
  • golang で event emitter/dispatcher 的なもの | tech - 氾濫原

    golang で JS 的な addEventListener/dispatchEvent 的なことをしたいときどうするか? emission https://github.com/chuckpreslar/emission JS にあるようなのと全く同じ様に「イベント名」でイベントの種類を識別して任意の「イベントオブジェクト」をやりとりする。 On/Off/Once とか jQuery にあるような便利メソッドがついてる。 リフレクションで型変換は隠蔽されているが、もしリスナーとエミッターとで型がい違っていると、実行時エラーになる。 package main import ( "github.com/chuckpreslar/emission" "log" ) type ClickEvent struct { button string } type KeyEvent struct {

  • ユーザ由来の構造化データによるSQLインジェクション | tech - 氾濫原

    Kazuho's Weblog: The JSON SQL Injection Vulnerability について。元記事をはっちゃめっちゃに要約すると SQL::Maker にユーザから受けとったデコード済み JSON をそのまま突っ込むと SQL インジェクションになる場合がある SQL::Maker 側でそういったことが起こらないように strict オプションをつけたから、できればそっち使え 別に SQL::Maker に限らないから気をつけろ という話っぽい。来であればユーザ入力をタイプチェックをすべきだけど、クエリビルダレベルでも、脆弱性にならないようにもうちょっと考慮してもいいよねという趣旨かな… strict モードは非互換なので、既存のコードが動かなくなる可能性があるようです。 Teng での対応 Teng を使っているとデフォルトで SQL::Maker がクエリビ

    hide_o_55
    hide_o_55 2014/07/03
  • Perl (PSGI) で zip ファイルを動的に作りつつ順次クライアントに送りつける | tech - 氾濫原

    滅多にないことだと思うが、非常に大きな zip ファイルを動的に生成してダウンロードさせるみたいなことをしたいことがあるかもしれない。 Archive::Zip だとストリーム生成できないので、Archive::Zip::SimpleZip を使う。Archive::Zip::SimpleZip だとストリーム出力で file handle などに書き出せる。 これで一度ファイルに書いてから、そのファイルを sendfile 的にレスポンスしてもいいのだけれど、書いている間はクライアントからしてみれば完全に無反応になるので、場合によってはタイムアウトになってしまうことがある。そこでストリーム出力をそのままクライアントにストリームしたくなる。 簡単なコードにすると以下のようになった。Archive::Zip::SimpleZip にコールバックかオブジェクトを渡せたらいいが、渡せないようなの

  • YAPC 初心者ほど YAPC にトーク応募すべき10の理由 - 氾濫原

    懇親会対策 基的にこういうイベントは懇親会が一番重要といってもいいぐらいだが、コミュ障だと懇親会とかで誰と何を話せばいいのかさっぱりわからなくなる。LT でもなんでもいいがトークをすると一定の人から認識され、トーク後や懇親会などで話しかけられやすくなる。逆に話かける側としても「あれおもしろいですね」と気軽に言いやすくていい。 また一応の話題を前もって作れるのでコミュニケーションしやすくなる。YAPC にきて「いやぁ今日はいい天気ですね」とか話はじめるわけにはいかないので、このような話題を持っておけるのは気が楽になる。 つまりコミュ障ほど応募すべき 強制的アウトプット 普段生活していると、アウトプットといってもブログになんちゃら書いて終わりがちか、あるいはそれ自体も忘れて日々バタバタ過ごしてしまう。何らかのイベントのタイミングにあわせてアウトプットを出すといいモチベーションになる。 それと

  • node.js で Perl における Test::TCP または Ruby における Glint | tech - 氾濫原

    Perl には Test::TCP というのがあって、テスト中、空いてるポートで何かしらのサーバーを起動して使うということができます。Ruby においては Glint というライブラリがあって、同じことができます。 node.js の場合、node-test-tcp というのがあって、node の net.Server で動くサーバに関しては簡単に同じことができます。が、memcached とか外部プロセスを起動させようとするとちょっと困るのと、done() を呼ばないと終了しないので、何かいい方法はないかなと思ったので書いてみました。 https://github.com/cho45/node-glint test-tcp だとカブるので glint のほうの名前を仮りています。 つかいかた glint( function (port) { // ここは外部プロセスで実行される // た

  • 1