タグ

ブックマーク / paulownia.hatenablog.com (15)

  • サーブレット仕様の認証を使わずにgetRemoteUserやisUserInRoleを使う。 - NullPointer's

    JavaのWebアプリでユーザ認証を行う場合、サーブレット仕様で決められた認証機能を使うか、独自の認証機構を実装するか、いずれかであると思う。 サーブレットの認証機能を使うとHttpServletRequestのisUserInRoleやgetRemoteUserが有効になるのが地味に嬉しい。Strutsフレームワークのロールによるアクセス制御も有効になるのでサーブレットの認証機能は結構使える。一方、独自の認証機構を使うと自由にログイン処理を記述できる代わりにHttpServletRequestのgetRemoteUserやisUserInRoleは使えない。 しかし独自の認証でもHttpServletRequestWrapperとFilterを組み合わせれば、getRemoteUserやisUserInRoleを有効にできる。 まず、認証時にユーザ名とロールを適当な名前でセッションに格納

    サーブレット仕様の認証を使わずにgetRemoteUserやisUserInRoleを使う。 - NullPointer's
    yuiseki
    yuiseki 2015/06/04
  • nodeモジュールとしてC++でLinked listを実装 - NullPointer's

    node.jsのアドオン作成の練習として、先日書いたJavaScriptのlinked listをネイティブ実装に移植してみた。 https://github.com/paulownia/node-linkedlist 先日のJS実装と速度を比較した。リスト先頭への大量の要素追加にかかる時間(ms)を表に示す。 10000 50000 100000 200000 Linked List(JS) 3 14 36 59 Linked List(native) 2 10 19 36 C++で実装しなおしても1.5〜1.8倍程度しか高速化しない。v8が優秀なためJS実装でもかなり高速なこと、アドオン実装ではJavaScriptC++ブリッジ部分でオーバーヘッドが大きい事などが原因だろう。元々nodeのアドオンは高速化ではなくOSのライブラリを呼ぶのが目的なのであまり期待しない方がよいだろう。

    nodeモジュールとしてC++でLinked listを実装 - NullPointer's
    yuiseki
    yuiseki 2013/09/28
  • streamに汎用フィルタ処理 - NullPointer's

    今度は任意のfunctionをフィルタ関数として使用するstreamを書いてみた。先日書いたテキストの行処理を行うストリームと組み合わせると便利に使えそう。 var stream = require('stream'); var util = require('util'); function StreamFilter(filter){ this.writable = true; this.readable = true; this.filter = filter; } util.inherits(StreamFilter, stream.Stream); StreamFilter.prototype.write = function(data) { var filteredData = this.filter(data); // フィルタ結果がundefinedでなければdataイベント

    streamに汎用フィルタ処理 - NullPointer's
    yuiseki
    yuiseki 2012/12/17
  • mongoDBとMySQLのlimit offset skip - NullPointer's

    mongoDBにはMySQLのoffset limitに似たskip limitという機能がありますが、名前だけでなく機能的にも差異があります。 意外と知られていないようなのですが、MySQLでは以下のようなSQLで最初の10件を取り出す場合でもテーブルフルスキャンされてしまいます。 select * from hoge limit 10 offset 0 ;mysql> explain select * from hoge limit 10 offset 0 ; +----+-------------+-------+------+---------------+------+---------+------+------+-------+ | id | select_type | table | type | possible_keys | key | key_len | ref |

    mongoDBとMySQLのlimit offset skip - NullPointer's
    yuiseki
    yuiseki 2012/12/01
  • mongoDBでだいたい新しい順番にドキュメントを取得する - NullPointer's

    mongoDBのコレクションにはnatural orderという概念があります。sortせずにfindするとインサートされた時間が古いものから順番に取得されますが、この並び順がnatural order。 新しい順にドキュメントを取得したい場合は sort に { $natural: -1 } と指定すればおけー db.Hoge.find().sort({ $natural: -1 }); 連番フィールドや時刻フィールドを用意してsortするよりもかなり速いです。 ただし、natural orderはディスク上の物理的な順番なので、分散環境でチャンク移動が発生した場合や、updateでドキュメントが大きく変更された場合などに変わってしまいます。だいたい新しい順でいいやー、というようなゆるい状況でなければ使えません。 ※ capped collectionはインサート順とnatural or

    mongoDBでだいたい新しい順番にドキュメントを取得する - NullPointer's
  • Object.keys - NullPointer's

    javascript の オブジェクトが空かどうかを調べる場合 - Node.js日誌β Object.keysはオブジェクトのプロパティ名を配列で返すメソッド。for inの列挙と違って hasOwnProperty が true になるものだけが返る(だからオブジェクトが空かどうか調べられる)ので便利だお。 文字列の配列限定だけど、keysを使って配列から重複要素の削除をしてみる var ary = ["a", "b", "c", "a", "c"]; Object.keys( ary.reduce(function(obj, item){ obj[item] = 1; return obj }, {}) ) 個人的にはObject.valuesの方も欲しいんだけど、無いみたいすね

    Object.keys - NullPointer's
    yuiseki
    yuiseki 2012/04/29
  • DPIって普通に窃盗じゃないの? - NullPointer's

    プライバシーの問題が懸念されているけど、それ以前にパケットを盗聴して広告業者に販売するって盗品の販売じゃないのか? asahi.com(朝日新聞社):「ネット全履歴もとに広告」総務省容認 課題は流出対策 - ビジネス・経済 (1/2ページ) 例えばGoogleの検索クエリは、Googleがサービス提供の対価として得た顧客情報で、当然その情報の所有権はGoogleにある。DPIで得たデータを広告業者に売る事は、Googleの所有物を盗んで売っているという事ではないのか。Amazon楽天のパケットを解析することは、Amazon楽天が持っている顧客データの窃盗にならないのか。 よくわからんです。 DPIが合法となった場合、AmazonGoogleは情報を守るためサイト全体をSSL化する可能性もあるのではないかな…

    DPIって普通に窃盗じゃないの? - NullPointer's
    yuiseki
    yuiseki 2010/06/02
  • 若者はクソ労働環境で一皮むけるべき、らしい - NullPointer's

    若年労働者の育成にあたっては、「一皮むける」ことが重要であるとされています。 ストレス耐性を真につけるためには、「甘やかす」のではなく、「仕事をさせる」ことも方法の1つでしょう。 またお得意の「ストレス耐性」が出てきました。これはJob is shitのヒトが切り捨てている日人のクソ労働メンタリティそのものですね。 法律を遵守(じゅんしゅ)するという視点からは、36協定の枠内で時間外労働の延長を行い、休日労働を行わせることが、実労働時間に関する使用者の義務となります。これを超える労働は違法とされ、禁止されるべきであるとされます。 これを「甘え」と認識しているのです。休日労働しないとか、過剰な労働から解放されて人間らしい生活を望む事を甘えと言う。狂ってます。 常に仕事優先、給料は我慢料、ストレス耐性wが必須条件、根性と忍耐で心身壊れる限界まで追い込まれて働くような奴隷労働システム、他の国じ

    若者はクソ労働環境で一皮むけるべき、らしい - NullPointer's
    yuiseki
    yuiseki 2009/09/29
  • 満員電車という欠陥社会システム - NullPointer's

    でも多分そんな指摘はとっくにされてるんだろうから、それでもこうなんだから、どうなの?どうしようもないの?アレって。 ……こういう考えを広めようとする人は消えてほしいなー。個人でやるぶんにはいいけどさー。 早出しても給料でないんだから。会社が始業時間を遅くするか、鉄道会社が混雑を解決すべきなんだから。 「現状解決しない問題なんだから、自分でどうにかするしかないでしょ。いいアイデアじゃん。君も実践しなよ」とか言うドヤ顔オヤジは勘弁だわー。 これ見て「システムの不備を個人の努力でなんとかするのが日で、それは日人チームプレイが極めて下手糞だから」のような話を読んでえらく納得したことを思い出したが、どこのブログだったかな。 あ、これこれ。 おれは思うのだが、日人というのは、ステレオタイプな日人像とはまったく異なり、組織やシステムの不備や怠慢を、個人個人の優れた能力と自己犠牲で切りまわしてきた

    満員電車という欠陥社会システム - NullPointer's
    yuiseki
    yuiseki 2009/09/29
  • 受託開発の限界を感じる - NullPointer's

    ジュンク堂とか、三省堂書店とか、紀伊国屋書店とか文教堂とか有隣堂とか 店内(あるいは他の支店もふくめ)にある書籍の情報が検索できる端末を置いている 大型書店が結構増えてきたように思います。便利は便利なのですが、 使うたびにストレスやフラストレーションがたまる設計のシステムを使っているところがあります。 というかどこもそれなりに不満点があります。 特に XXX と YYY はシステムを設計した担当者を体育館裏に呼びつけて(以下略) ... システム作ったやつ、いっぺん自分で使ってみろよ。ほんとに。 いや、100人分くらいの検索を代理で入力させて、 それでもそのシステムのできが誇るに足るものか訊いてやりたいw 書店の検索システムって使いにくいですねえー。コンピュータのインターフェース部分だけでなく、売り場との連携もよくない。例えば新宿の紀伊国屋、検索結果で2FのC8の棚にあります、と場所を教え

    受託開発の限界を感じる - NullPointer's
    yuiseki
    yuiseki 2009/08/08
  • 会社には1時間前に出社するな - NullPointer's

    遅刻はしないほうがいいよ。でも、必要以上に早く行かなくてもいい。 http://d.hatena.ne.jp/repon/20080314#1205482811 というか、始業30分前には行く。出来れば1時間前に行く。ギリギリまで寝ていたい気持ちはわかる。でも、余裕を持って行く。これ大事。 1時間前に行く、か…。規定の始業時刻が9時なのにみんな8時に出社している会社があったな…。中途半端な会社にはよく見られる風景らしいですけどね。みんなが1時間早い出社を実践していたら、いつの間にか早く出社することが当たり前になってしまい、早く出社することが評価されないどころか、規定の時刻に出社する人間が不利益を被るような企業文化が育っていたそうな。 貴重な朝の1時間を会社に無償奉仕する必要はないよ。早起き可能ならば、読書に充てたり、自宅でRSSをチェックして出社する方がはるかに有意義です。 会社の業務なん

    会社には1時間前に出社するな - NullPointer's
    yuiseki
    yuiseki 2008/03/17
  • Rubyはかっこいい - NullPointer's

    Railsの作者は美しいコードが書けるからRubyを選んだそうだが、俺にとってのRubyは美しいというよりもカッコいい。かっこいいからRubyを使う。 Railsに付属しているActiveSupportはTime等のオブジェクトに便利なメソッドを提供する。Railsユーザならご存知のことと思うが、 Time.now.tomorrow.midnight これで明日の00:00:00の日時が取得できるというのを目にして、そのカッコよさにクラクラした。機能拡張に対して非常にオープンなRubyの言語仕様はかっこいい。このtomorrowやmidnightメソッドのように既存のクラスにもメソッドを自在に追加作成できるのも動的言語の楽しみだ。 それにしてもこのTimeの拡張、Javaの腐ったDate、Calendarの仕様と比べると雲泥の差である。ま、Javaでも似たような真似は出来ない事は無いが…、

    Rubyはかっこいい - NullPointer's
    yuiseki
    yuiseki 2007/07/30
  • どうでもいいじゃん - NullPointer's

    http://cssnite.jp/archives/post_746.php カネの匂いとかどうでもいいじゃない。儲けたい奴は儲ければいいし、ビンボー清廉にイベントやりたければそれもいい。 楽しくコードが書ければ、それで幸せです。 追記 楽しけりゃ良いという態度も、自分位な考え方で偽善的と誹りを受けても仕方ないかもな。

    どうでもいいじゃん - NullPointer's
    yuiseki
    yuiseki 2007/07/18
  • Automator面白い - NullPointer's

    しょこたん画像スクレイピングに感化され、格的にAutomatorを弄りはじめたのです。右クリックメニューから選択したファイルをメールで会社に飛ばしたり、Apacheを起動して起動失敗時に「httpd (pid xxx) already running」みたいなエラーメッセージを読み上げさせたり、iCalと連動させてiTunesを起動して曲を流したりと色々変なことが簡単にできて超楽しい。変なことだけじゃなくて普通に使える。超便利。 元ネタのしょこたんスクレイピングを改造してみた。 URLはあらかじめ指定しておく。サムネイル画像付加とプレビューで開くアクションを追加する。あとURLのフィルタリングはRuby、これ重要。 こいつを実行するとダウンロードした画像にサムネイルアイコンが付加され 画像をプレビューで開くところまで自動でやってくれる。 こんな感じにギザマミタス。あとは見るだけ。サムネイ

    Automator面白い - NullPointer's
    yuiseki
    yuiseki 2007/03/02
  • 科学が不完全だから疑似科学を信じるという不思議さ - NullPointer's

    世の中は、科学で全てが証明出来る程、簡単には出来ていないと思うのですけれど、どうなのでしょう。疑似科学的なものを信じる信じないも個人の自由じゃないんですかね。それじゃ駄目なんですかね。 http://d.hatena.ne.jp/ululun/20070112/1168588977 よく見かける意見だが、こういう意見を口にする彼らは科学が不完全だから疑似科学を信じているのだろうか? 「科学で解明できないことがある。科学で全てが証明出来るというわけではない」ならば「疑似科学を信じても良い」のだろうか。逆に「疑似科学がうさんくさい」ならば「科学が完全である」といえるだろうか。 そんなバカな話はない。なぜなら、両者はまったく関係ない事象だからだ。疑似科学は科学に偽装し、科学の権威を利用して証明できないことを真実のように言いふらし利益を誘導しているだけである。 科学が完全だろうが不完全だろうが、そ

    科学が不完全だから疑似科学を信じるという不思議さ - NullPointer's
    yuiseki
    yuiseki 2007/01/18
  • 1