タグ

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

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

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

    ErgoDox ではないナニか。オープンソースかつ Bluetooth 接続のキーボード | tech - 氾濫原
    dann
    dann 2016/09/01
  • curl で大きなファイルを resume しながらファイルダウンロード | tech - 氾濫原

    細い回線で Chrome のダウンローダだとうまくレジュームできないことが多々あって厳しい。キャンセルするとダウンロード途中のファイルが消えたりするし (余計なお世話だ)、大きなファイルはダウンロードしにくい。 ということで、curl でダウンロードすることにする。特にログインセッションが必要でなければ普通にやればいいが、ログインセッションが必要な場合、いちいちヘッダを全部書くのはだるいので、一度 Chrome 上で開発者ツールを開き、リクエストを発生させてすぐキャンセルし、Network ペインで該当リクエストを右クリックして Copy as cURL すると早い。 そのうえでお尻に -o filename -C - をつけてやる、つまり $ noglob curl... -o filename -C - curl... の部分はペースト。noglob は念のためつけておく。-o fil

    dann
    dann 2015/06/09
  • 自宅をかっこいい作業環境にしたい | tech - 氾濫原

    自宅で使っているデスク Garage CL-147H というやつ (約24kg)。fantoni GT-147H というやつ (約34kg) のほうがかっこいいけど、高い。 天板の色が濃くて、丈夫なやつが安くほしかった。これはかなり満足してる。ウォールナットタイプは幕板がないので左右に揺れやすいみたいだけど、普段使いでは全く気にしたことはない 。 天板自体に鉄パイプで補強がしてあり、60kg まで耐荷重がある。最近のモニタは軽いのでまずギリギリになることはなさそう。ゆすろうとすれば揺れるが、キーボード叩きまくる程度ではほとんど揺れることはない。キーボードを叩いてモニタが揺れたりすると、案外かなりイライラしてくるので、机はできるだけ丈夫で重いのを買うほうが良いと感じる。 デスクの配置 窓に背を向ける形、部屋の中のほうを向いて座っている。こうするとモニタを隔てて狭いスペースに身体が押しこめられ

    自宅をかっこいい作業環境にしたい | tech - 氾濫原
    dann
    dann 2015/02/13
  • 年末だし子供関係で買ったものを一括でレビューするぞ!!! | 育児 - 氾濫原

    みんな知らないと思うけど、うんこは臭い。これは確実に臭いを遮断できる。一見高価に感じるけど1枚約10円の課金アイテムなので、レジ袋に10円課金されるスーパーがあることを考えると特に高価ではない。 じゃあスーパーの袋とかでいいと思うじゃろ? あれは結構空気通すんやで。

    年末だし子供関係で買ったものを一括でレビューするぞ!!! | 育児 - 氾濫原
    dann
    dann 2014/12/17
  • YAPC::Asia で「ウェブエンジニアのローレベルプログラミング」という発表をしました | tech - 氾濫原

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

    YAPC::Asia で「ウェブエンジニアのローレベルプログラミング」という発表をしました | tech - 氾濫原
    dann
    dann 2014/08/29
  • MacRuby でスクリーンキャスト用のキー履歴表示ツールを作る | tech - 氾濫原

    よくあるツールなんだけど、なかなか希望に叶うものというと見つけにくく、どうせなら自分で書いたらいいかと思ったので書いてみた。やってみたら割とすぐ書けた。 MacRuby のインストールが必要。1ファイルにしたかったので、XCode なしで使っている。あんまり XCode なしでの作例がないが普通に NSApplication.sharedApplication を取得したらいいだけだった。 NSEvent.addGlobalMonitorForEventsMatchingMask:handler: は「システム環境設定」→「セキュリティとプライバシー」→「アクセシビリティ」で macruby を許可しないと使えない。これができるということは、すなわちキーロガーが実装できるということなので、必要なときだけ許可するほうがいいと思う。 #!macruby framework "Cocoa" cl

    dann
    dann 2014/08/11
  • ngResource は何が便利なのか? | tech - 氾濫原

    ngResource は単にAPIのラッパーという感じではなくて、JS でサーバ側のモデルとうまく同期するように作られている。 最も簡単な例だと以下のように使うが、Entry.get は XHR が完了する前に、とりあえず空のオブジェクトが返るようになっており、XHR の完了とともに破壊的に書きかえられる。これにより、entry の変更がすぐ全体に伝わるようになっている。 var Entry = $resource('/entry/:id'); $scope.entry = Entry.get({ id : 0 }); デフォルトで定義されている query/get/save/delete だけを見ると単に REST API のラッパーのように見えるが、独自のメソッドを追加するとより理解しやすいコードを書ける。 以下のコードは、デフォルトで下書き状態で生成される Entry オブジェクトを

  • AngularJS の ngResource を既存APIの仕様にあわせる | angularjs | tech - 氾濫原

    AngularJS には ngResource という拡張があって、サーバに対する API 経由の CRUD 的操作を JavaScript のオブジェクトとしてラッピングできる。具体的には例えば var Entry = $resource('/entry/:id'); var entry = Entry.get({ id : 0 }, function () { entry.title = "yuno"; entry.$save(); // XHR (async) }); とかできる。ちょっとかっこいいけど、既存APIで使おうとすると、些細なフォーマットの違いで案の定使えなかったりする。どうしても使ってみたいけど、サーバサイドAPIの仕様まで変えたくない場合、若干無理矢理な方法である程度なら対応させることができる。 サーバサイドの仕様 前提として以下のような仕様だとする エントリリスト取

  • 今年買ってよかったものまとめ - 氾濫原

    これも買ってから半年ぐらい経ったけど一切不満がないし、これなしではもはや生きていけない。 手で洗うよりも確実に綺麗になるので安心感がある。無理してでも設置する価値が絶対にある。

    今年買ってよかったものまとめ - 氾濫原
  • リクエストオブジェクトへ、型を明示するメソッドの追加 | tech - 氾濫原

    ウェブアプリケーションを書くとき、最近はだいたい Plack::Request なりなんなりを継承して、そのプロジェクト専用のリクエスト/レスポンスオブジェクトを作ることにしている。 特にリクエストオブジェクトは、リクエストのパラメータを適切に変換して返すようなメソッドを生やすことが多い。例えば以下の例: sub number_param { my ($self, $key, $limit) = @_; $limit ||= 'inf'; my $val = $self->param($key) // ""; if ($val =~ /^\d+(.\d+)?$/) { my $ret = $val + 0; if ($ret <= $limit) { $ret; } else { $limit; } } else { undef; } } この number_param() メソッドは、$

    dann
    dann 2013/03/01
  • そこに誰かがいた #1 - 2011

    後書き この写真集は、2011年にある写真コンテストに応募して落選したものを再編したものである。オリジナルはA3ノビ、40枚、全てランドスケープのものであったが、ウェブで公開するにあたり一部削除している。また、この後書きは作品説明として書いたのを再編したものである 概要 若者たちの孤独のありかたと、入れ物としての写真というのを主題に撮り、「一年」というくくりの元にまとめて作品とした。 賑やかで薄い、無自覚な孤独の中で生きているデジタルネイティブ世代の若者達に、深いポジティブな孤独を感じとって欲しい、という思いと、この写真の集まりを通じて、自分の気持ちのありようを考えて欲しいと考えた。 若者たちの孤独のありかた 「デジタルネイティブ」と呼ばれる若者たちは、インターネットを通じ対面でないコミュニケーションを使いこなし、常にたくさんの誰かと繋っている環境に身を置いている。しかしながら、対面でない

    そこに誰かがいた #1 - 2011
  • XPath, $X function, NSResolver < 16 < March < 2006 < nulog, NULL::something : out of the headphone

    JS の XPath なんて書きましたけど、重大なバグがありまして、っていうかなんで気がつかなかったんだろう、えーそれは application/xhtml+xml なページ、すなわち XML として、名前空間をちゃんと扱うページではまともにセレクトできないんですよーははははー、例えばこのサイトとかね。 $X = function (exp, context) { if (!context) context = document; var resolver = function (prefix) { var o = document.createNSResolver(context)(prefix); return o ? o : (document.contentType == "text/html") ? "" : "http://www.w3.org/1999/xhtml"; } v

  • GreaseMonkey で MochiKit 使ってみる。すなわち外部ライブラリの読み込み。あるいははてなのグラフが綺麗じゃない < 12 < August < 2006 < nulog, NULL::something : out of the headphone

    GreaseMonkey で外部ライブラリが使いたいな。みたいな。似たようなのでは CMS researcher - Greasemonkeyでprototype.jsやscript.aculo.usを使う方法 があるのですが、どうもうまくいかなかったので自力実装。 function dll(loadLibs, afterLoadedFunction) { if (afterLoadedFunction._retry) afterLoadedFunction._retry = 0; else afterLoadedFunction._retry++; if (afterLoadedFunction._retry > 10) throw("Library is not loaded because of some reason."); loadLibs.forEach(function (l

    dann
    dann 2007/09/10
    外部ライブラリのロード
  • GreaseMonkey Driven Development / Shibuya.js Technical Talk #2

    てんぷれ例 // ==UserScript== // @name Test // @description Test // @namespace http://lowreal.net/ // @include * // ==/UserScript== (function () { /* GM_xmlhttpRequest({ method : "GET", url : url, headers : { "User-Agent":"monkeyagent", "Accept":"text/monkey,text/xml", }, onload : function (req) { var doc = new XML(req.responseText.replace(/^<\?xml.+?\?>/, '')); }, onerror : function (req) { alert(req.r

  • JS の XPath &lt; 13 &lt; March &lt; 2006 &lt; nulog, NULL::something : out of the headphone

    前々からいちいちあのクソながったらしい evaluate を書くのがだるかったのでちゃんと関数はさむようにした。 大きなバグがあります。詳細はXPath, $X function, NSResolverに書きました。以下のコードは非推奨です。 $X = function (exp, context) { if (!context) context = document; var result = document.evaluate(exp, context, null, XPathResult.ANY_TYPE, null); switch (result.resultType) { case XPathResult.STRING_TYPE : return result.stringValue; case XPathResult.NUMBER_TYPE : return result.n

  • 検索 UI の改善 &lt; 31 &lt; January &lt; 2006 &lt; nulog, NULL::something : out of the headphone

    Ajax 使うようにした。Javascript が有効なら自動的に Find ボタンで起動する。 Gecko 以外はじいております。 IE, Opera でも使えるようになりました。 トップ ajax 検索 UI の改善 トップ ui 検索 UI の改善 トップ web 検索 UI の改善

  • 1