タグ

ブックマーク / blog.64p.org (49)

  • TOEICで125点しかとれないような人でもできる英文バグレポートの方法。 - tokuhirom's blog

    または、Pros と Cons をまちがえて書いてしまうような人でもできる英文バグレポートの方法。 まあ小手先のノウハウだけど、俺はこうやってるよ、という話。 ともかく再現可能なテストケースをかく再現可能なテストケースを書けば、コミュニケーションコストを大幅に削減することが可能。これは日人同士の場合でもそうだし、プログラマにとっては必須の技能の一つであるから、是非身につけて実践するべき。 マルチスレッドに起因するものなど、再現可能なテストコードがかきづらいものはともかく、それ以外であれば、再現テストコードを書くべき。 再現テストコードを書けない場合、そもそも自分がバグの原因を把握できていない場合がおおいので、そんな状況でなれていない言語によるコミュニケーションをとるのは困難。

  • micro-location.js がいかす - tokuhirom's blog

    https://github.com/cho45/micro-location.js URL のクエリをいいかんじに書きかえる処理を JS でするためにいいかんじのライブラリをさがしていたのだが、URI.js はなんか大仰なかんじなので micro-location.js をつかってみた。 jQuery#extend と組みあわせることで、目的の処理は達成された模様。 l = Location.parse("http://example.com/?foo=bar&baz=boz"); # → Location l = l.params($.extend(l.params(), {lat: 4, foo: "hoge"})) # → Location l.href # → "http://example.com/?foo=hoge&baz=boz&lat=4"

  • Const なんとかさん関連のツール群をつかうと、簡単に EcmaScript target の言語をつくれる! - tokuhirom's blog

    で、esprima とか関連のツール群は Mozilla の Parser API の AST 形式をサポートしています。詳細はここのへんかな。 https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API で、escodegen があるということは Parser API 形式の AST をはけば、そこから JS を生成できるってことですね。しかも escodegen は source-map の生成にも対応しているので、エラーの処理もらくちんで、実行時エラーがおきても、「ああ、JSでかいておけばよかった。。」とはならない(という未来がくることになっています) CoffeeScriptRedux というカッフィースクリプトのあたらし版をつくってるプロジェクトでは実際に CoffeeScript code => [parse

  • なんてこった…CPANモジュールをnode.jsで動かしてしまうライブラリ「node-perl」 - tokuhirom's blog

    https://github.com/tokuhirom/node-perl/ ここ最近、プログラミング言語同士の壁が徐々に破壊されている気がします。あるプログラミング言語上で別なプログラミング言語を動くようにしたり、置き換えてしまったりするような類です。今回はその一つ、CPAN moduleをnode.js上で動かすという、かなり無茶な気がしなくもない、そんなソフトウェアnode-perlを紹介します。 var Perl = require('../index.js').Perl; var perl = new Perl(); perl.use('LWP::UserAgent'); var ua = perl.getClass('LWP::UserAgent').new(); var res = ua.get('http://mixi.jp/'); console.log(res.as_

    hokaccha
    hokaccha 2012/08/28
    なんてこった
  • shell script を書くときの tips 2つ(初心者向け) - tokuhirom's blog

    shell script は普段さけて通りたいと願ってやまないわけですが、たまには書かないといけないことがあるので、そういうときは覚えておくと便利な tips を2つ。 autodie っぽくするset -eとすると、コマンドの実行に失敗したときにそこで実行がとまるので便利。 #!/bin/sh set -e perl -e 'die' echo SHOULD NOT REACH HEREとすると % ./hoge.sh Died at -e line 1. % echo $? 255となって、最後までいかずに死にます。 複数のコマンドを順番に実行するときに便利。 なお、以下のような挙動をするんだそうです。 ただし失敗したコマンドが until または while ループの一部である、 if 文の一部である、 && または || リストの一部である、 コマンドの返り値が ! で反転されてい

  • いまどきの SCSS 運用方法 - tokuhirom's blog

    最近は scss をつかっています。SCSS の運用についてまとめておこうとおもったので、まとめます。 scss --watch を手元でうごかす運用などをすると、scsscss の両方を git レポジトリにコミットすることになって残念ですし、生成された css を直接いじる人があらわれてまきもどったりするのでそういった運用は避けています。 開発環境についてPlack::Middleware::Scss::Lite ( https://github.com/tokuhirom/Plack-Middleware-Scss-Lite ) というミドルウェアを配置して利用しています。これはリクエストがあったタイミングで scss コマンドがはしります。 実行する際、scss コマンドは、エラーメッセージも stdout に出力するので、stdout を capture することが肝要です

  • sakura vps でのアプリケーションサーバーの実行を upstart にしてみた。 - tokuhirom's blog

    2個前にセットアップしたときは daemontools つかってて、1個前は supervisord をつかってたんだけど、せっかく ubuntu つかってるんだから、ということで supervisord をやめて upstart でうごかすようにした。 なんかこんなかんじ。 description "64p.org upstart script" start on (local-filesystem and net-device-up) stop on shutdown respawn respawn limit 5 60 console log script logger -is -t "$UPSTART_JOB" "starting" chdir /usr/local/webapp/64p.org/ exec 2>&1 exec setuidgid www-data /usr/loc

  • 最速な JavaScript のリファレンスマニュアルサイトをつくった - tokuhirom's blog

    JavaScript のリファレンスマニュアルといえば MDN(Mozilla Developers Network) が有名ですが、MDN の資料は探索がめんどくさいし、表示が遅いということで使い勝手がわるいという問題がありました。 そこで、jQuery のリファレンスマニュアルサイトとして有名な jqapi.com とおなじよような使い勝手のサイトがあったらいいのになーとおもいました。 なので、つくりました。 サイト自体はすべて static なデータで構成されているので、github からデータを取得すれば、イントラや自分のマシン内で閲覧することも可能となっています。 なお IE での動作確認はしていないので、うまくうごかない場合は pull-req してください。

  • node.js で libxml を使うにはどのライブラリをつかうべきか - tokuhirom's blog

    libxmljsこれが結局命です。普通につかいやすいです。 ドキュメンテーションとかはちょっとあまいかも。 elem.text('string') したいけどドキュメントには Getter ってかいてあるなーとおもってたけどソースよんだら Setter も用意されてた! みたいなのが普通にある。 libxml-to-jsXML to JavaScript object parser based on libxmljs なので、そもそも求めているものとちがいます。 Perl でいうと XML::Simple にちかいものです。XML::Simple がほしいときならアリかも。 そしてこれは libxmljs のラッパーです。 libxmlextlibxmljs に css selector の機能を追加するものなようです。libxmlext/node_modules/ 以下に libxml

  • jsdom と libxmlext のベンチマークとったよ! - tokuhirom's blog

    node.js において jquery-ish な css selector をもちいた検索をしたい、という場合、jsdom がオススメされることがおおいのだが、jsdom は pure-js で実装されているせいか、あまり高速ではない。体感速度からして、あきらかにおそい。 どのぐらい遅いのかということを、libxmlext と jsdom のベンチマークをとることによりためしてみる。 jsdom x 6.43 ops/sec ±7.28% (17 runs sampled) libxmlext x 168 ops/sec ±2.93% (55 runs sampled) Fastest is libxmlextlibxmlext の方が 26倍はやいようだ。 利点と欠点の比較jsdom の利点は jquery っぽい操作ができるjquery 互換の css selector がつかえる人

  • node.js で人気のあるライブラリ10選 - tokuhirom's blog

    node.js というか npm で依存されているライブラリの上位10個ぐらいがどういうものがはいっているのかをまとめます! 具体的には serach.npmjs.org の Most depends on にのっているリストに註釈をつけただけです! http://search.npmjs.org/ 1位 underscore.js 392個http://search.npmjs.org/#/underscore クライアントサイド JS で人気のたかいユーティリティーライブラリの underscore.js が堂々の第1位。 クライアントサイドでつかってるからそのままつかってる人が多いのかな、とおもっています。

  • node.js 用のガラケーライブラリできたよー - tokuhirom's blog

    https://github.com/tokuhirom/mobileagent-js var MobileAgent = require('../mobileagent.js'), http = require('http'); http.createServer(function (req, res) { var ma = MobileAgent.getMobileAgent(req); res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello ' + ma.getCarrierLongName() + '\n'); }).listen(1337, "127.0.0.1"); console.log('Server running at http://127.0.0.1:1337/');なんかこんなかんじ。です

  • Node.js で重い処理をしてしまったときにタイムアウトするの法 - tokuhirom's blog

    (この記事は Node.js アドベントカレンダー不参加記事です) チャットサーバー的な使い方とか意外とみんな興味なくて、普通のウェブアプリケーションなどをかく、という用途にちょっと node.js がつかえたらいいのにな、とおもっている人がおおいようにかんじています。Node.js が人気なのは、v8 をうまくパッケージングしているのが node.js ぐらいで、そして v8 をうまくパッケージングするのが結構めんどくさいから、というところが大きいのです。ぶっちゃけ node.js が〜 とさわいでる人のうち8割は I/O multiplexing だからとかそういう理由で支持しているわけではなかったりするのです(偏見)。 さて、普通の web application のようなものを書こうとしたときに Node.js って基シングルスレッドだし、なんかうっかり重い処理したときにどうした

  • visualwidth.js とかかいた - tokuhirom's blog

    https://github.com/tokuhirom/visualwidth-js/blob/master/visualwidth.js だいぶ適当だけど。VisualWidth.width() とか VisualWidth.truncate() とかできるかんじ VisualWidth.width() というのは、見た目上の幅をかえすという関数。 VisualWidth.truncate(str, len, '...') は、なんとなくその幅におさまるように truncate するという関数。 なんか適当でいいやーとおもってサロゲートペアとかしったことかー。ってかんじの実装にしてあるけど日語だとなんとなくうごきます。判定ロジックが超適当だけど、まあなんとなくうごきます。 要は日でまともにつかわれるサロゲートペアの領域は基的に full-width なので、これを half-wi

  • underscore.js の _.isRegExp について - tokuhirom's blog

    underscore.js においては正規表現オブジェクトかどうかの判断を以下のようにしてやっている。 var toString = Object.prototype.toString; function isRegExp(obj) { return toString.call(obj)=='[object RegExp]'; }これは obj instanceof RegExp;でいい気がするんだけど、なんかこれだとだめなのかな。 後者の方が高速だけど。 ベンチマーク: http://jsdo.it/tokuhirom/wfiw 【蛇足: オレはこう思う】 cho45 のベンチマークべんり。 【追記】 multiple frames のときにハマるということらしい。 http://perfectionkills.com/instanceof-considered-harmful-or-h

  • Amon2とJSONとセキュリティ - tokuhirom's blog

    [1]http://d.hatena.ne.jp/ockeghem/20110907/p1[2]http://www.atmarkit.co.jp/fcoding/articles/webapp/05/webapp05a.html[3] http://msdn.microsoft.com/ja-jp/asp.net/ff713315[4] http://labs.cybozu.co.jp/blog/kazuho/archives/2007/01/cross-site_including.phpあたりをよんで、JSON とセキュリティについてかんがえてみた。 ここで、有効とされている対策のうち while(1); を先頭に付与するPOST ですべて処理するといったあたりは、RESTful でないし、BK 感がひどいというか質的ではないのでできるだけやりたくない。 また、Amon2 では互換

  • ゆるふわ CI サーバー Ukigumo ちゃんのつかいかた、かいたよー - tokuhirom's blog

    Ukigumo はゆるふわであることを第一目標として設計されているので、適当にサーバーを設置していれば、プロジェクトの担当者がそれぞれすきなタイミングでつかえるようになります。 まあ、なんか気軽に設置して気軽につかえるやつがいまいまほしかったのでつくったというかんじです。 クライアント側とサーバー側は完全に分離しているんで、クライアント側は自分のすきな実装でできるし、サーバーの管理者の世話になる必要がまったくありません。その方が楽でしょうということで。というか俺は管理したくないので。いや、するけど、できるだけ最低限の手間でやりたいじゃん。セットアップも超簡単にできるようにしてあるというか、むしろ dotcloud とかにすぐに設置できるレベルですよ。 で、クライアント側はどうやってつかいはじめたらいいかということだけども、非常に簡単で、以下のように一個 HTTP Request をおくるだ

  • Testing Web Application 2011秋 - tokuhirom's blog

    とにかく楽に、お気軽に。お気軽にテストを追加できて、お気軽にテストを実行できる。というのがなによりも重要です。 追加しようとおもったときに「どう追加したらいいかわからない」という状況になりがちなので、あらかじめいろいろな構成要素ごとにテストをひととおりかいてみるというのも重要だとおもいます。O/R Mapper のクラスのテストとか、model のテストとか、コントローラのテストとか、JSON API のテストとか。。 ExtUtils::MakeMaker でテストをうごかさないExtUtils::MakeMaker を素でつかうと blib/ とかつかってきてうざいので、Makefile.PL に以下のような hack をほどこしてあります。ウェブアプリケーションで blib/ とかにコピーする必要ないですよね。実運用でも blib/ でうごかさないし、インストールもしませんし。 #

  • supervisord 3.0a8 のバグ - tokuhirom's blog

    環境変数の設定をおこなう environment のパーザがぶっこわれてるので、環境変数の設定がまともにうごかない。 手でいれるが吉。 sakura vps だといれられる ubuntu が ubuntu 10.04.2 LTS というバージョンなのだが、こいつが、そのバグをふくんだものになっているので要注意。

  • Re: Perlで、ある要素が配列(リスト)の中に存在するかを調べる方法 - tokuhirom's blog

    http://dqn.sakusakutto.jp/2011/08/perl_10.html もし大学野球の女子マネージャーがPHPのin_arrayをPerlで実装したら。 use 5.12.0; my @list = qw(apple mango orange); my $item = 'orange'; say $item ~~ \@list ? "yes" : "no"; # 実行結果:'yes' スマートマッチ演算子で簡単に配列のなかに要素がふくまれるかどうかを判定することができます(速度がどうかはともかくとして)。