タグ

ブックマーク / blog.uu59.org (8)

  • uu59のメモ | vimでファイル名をData URIに置換する

    選択範囲をそのまま外部プログラムに渡して実行結果で置換したかったんだけど、vim-operator-userを使うのが手っ取り早そうだったので使ってみた。 .error { background-image: url(/icons/gnome_dialog_warning.png); } こんな感じのCSSで、/icons/gnome_dialog_warning.pngをビジュアルモードで選択してるときに任意のキー(ここではBとする)を押すと .error { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAAYAAAAGAB4TK

    Layzie
    Layzie 2012/12/28
  • uu59のメモ | vimのsyntastic + jshintでwarningとerrorを無理やり区別する

    jshintのerror出力はwarning出力と同じ処理です。よってvimerrorformatを使ってエラーメッセージを解析し、そこからエラーの種類を判断しているsyntasticではwarningとerrorの区別ができず、すべてがエラーとして扱われます。 ⚔ 1 foo; ⚔ 2 bar( , , , ); 1行目はfooが未定義というwarning、2行目はシンタックスエラーというerrorです。どちらも直すべきものではありますが、jshintの性質上、特段問題でなくとも++や==をif(cond) return;などを使うと警告を出すことが設定によってはありえます。また設定項目は膨大であり、これを自分が望むように正しく設定するのはjshint初心者には不可能でしょう(参考: うちの発展途上のjshintrc)。その結果、syntasticをインストールしたあと試みに開いたjs

  • uu59のメモ | Rails(Rack app)とNodeを両方動かしてストリーミングしたい

    Rails 4でSinatra::Streaming相当のストリーミング機構が入るとのことですが、そもそもRackやEventMachineに寄り添ったストリーミングは筋悪というか強引すぎると考えていて(Phusionの人の懸念に近い)、それなら最初から向いてるテクノロジーを使ったほうがいいよねと思いNode.jsを触ることにしました。 といってもストリーミングのためだけにすべてをNodeで書く気はなくて、メイン部分をSinatraやRailsで処理し、ストリーミング部分(EventSourceやWebSocket、あるいはSocket.IOに丸投げ)をNodeで処理し、この2つがZeroMQかなんかでプロセス間通信するのが理想かなと思っています。つまりクライアント(ブラウザ)はまずRailsに接続し、そこでnew EventSource('http://host:8080/sse')みた

  • uu59のメモ | VCSとITSとテストがない開発環境で正気を保つには Part 0 プロローグ

    お金がなくなりそうなので某所でプログラミングのバイトをしています。そこでは2000年代初頭に書かれたPHPスクリプト群が特にリファインされずに使われ続けており、また開発体制も昔ながらのまま維持されています。VCS(gitとか)とITS(Tracとか)とテスト(ユニットテストやCIなどの自動化されたテスト)のサポートに慣れきった身には辛い環境です。 まずVCSがないので誰かが自分の知らない間にファイルを変更していたり、変更箇所や理由や履歴が追えなかったりそもそも誰がやったのかすらわからなかったり、「hogehoge.phpアップしました」「はい」といった謎の通信が発生したりなどの弊害があります。GW明けに来てみたら以前に追加した機能がなぜか削除されていたのでオフラインで探偵ぽいことをしたりもしました。 ITSがないので要望やらバグ報告やらが各人からばらばらに提出されており、また作業の進捗も担

  • uu59のメモ | VCSとITSとテストがない開発環境で正気を保つには Part 1 git 編

    Part 0 プロローグ まずバイト初日、サーバに入れるようになったあと、scprsyncを適当に使って指示された変更に関係しそうなファイルをダウンロードします。だいたい揃ったらgit init; git add -A; git commit -m "ファイル取ってきた(noedit)"でとりあえずの体制は構築できました。 ここから開発を進めていくわけですが、色々と難関があります。 sjisとeuc-jpのファイルが混在してるのでgit diffが文字化けして使えない lvやnkfにパイプしても、そもそも異なる文字コードの文字列が混在してるのでどうしようもありません。これを解決するにはdiff.externalを設定して、ファイルごとに自前でdiffを取ります。 $ cat ~/mydiff.bash #!/bin/bash old=$2 new=$5 # バイナリは無視 if [ -n

    Layzie
    Layzie 2012/05/14
    ご苦労さまです
  • uu59のメモ | jQuery.Deferred その1 JSDeferredとの基本的な違い

    JSDeferred $.Deferred 長年JSDeferredを愛用してましたが、jQueryにDeferredがついたらしいので記憶を整理して慣れていきます。 おさらい 基チェイン // JSDeferred Deferred.next(function(){ alert("a"); }).next(function(a){ alert('b'); }).next(function(b){ alert('c'); }); // $.Deferred $.Deferred().done(function(){ alert("a"); }).done(function(a){ alert('b'); }).done(function(b){ alert('c'); }).resolve(); 値のリレー // JSDeferred Deferred.next(function(){

  • uu59のメモ | 訳:Node.jsは癌だ

    http://d.hatena.ne.jp/yosuke_furukawa/20111002/1317572377で知って、原文を読んでみたら罵倒しまくってて面白かったので全文翻訳してみました。 原文はNode.js is Cancerです。 ウェブデベロッパー逹は伝統的なやり方よりも冴えたやり方が大好きだが、伝統的なやり方がなぜ伝統になってるかというと動きやがるからだ。Node.jsのナンセンスな振る舞いにはしばらくムカついてたが、Node.js作者のRyan Dahlによるこのポストを読むまでは相手しないようにしてた。「UNIX難しいよぅ」とか弱音を吐くよく居るタイプのマヌケに肩をすくめていただけだ。 でも、家族連れのミニバンをガサ入れしたら50kgの上物ヘロインを見つけてしまった警官が世の中間違ってると感じるように、こいつの弱々しいすすり泣きの何が間違ってるのか考えた。たぶん、たぶん

  • uu59のメモ | Node.jsの癌騒動まとめ

    承前 まずNode.js is CancerでTedさんは以下の3点を問題視しました。 ブロックしないから速いとかプログラマは未熟でもいけるとかスケーラビリティとか全部大嘘だろう システム管理者にやさしくないアーキテクチャ JavaScript製 あまりに感情的で論点が曖昧なこの記事に、多くの人がtrollingだと指摘しつつも色々と論を展開しました。 2日後に出たTed人によるフォロー記事では主に1点目について掘り下げています。 まず数学を使ってイベントモデルとスレッドモデルのそれぞれのスループットについて考察していきます。数式や変数展開の説明をしていくと長いので要点だけまとめると以下のようになります。 スレッドの実行数を増やせばCPU-boundなときはもちろんI/O-boundなときでもスループットを伸ばせる 理論的にはイベントモデルでもスレッドモデルでもスループットの最大値(=限

  • 1