タグ

2007年6月4日のブックマーク (17件)

  • ユメのチカラ: 若者との会話

    びぎねっと主催のオープンソースパーティ2007に参加した。今年は120人を越える参加者ということで、会場がごったがえしていたので、落ち着いて話をすることはなかなか難しかったが、それでも懐しい顔にいっぱいあえて楽しかった。前日はカーネル読書会だったので2日連続で会う人も少なくなかった。特にオープンドリームの皆様には、あ、どーも、とか言う感じであった。 入口近くには、びぎねっと勢が陣どっていて、Linux World Expo3日間の疲れかテンション低くまったりとしていた。 その一人大内さんとお話をする。まだ10代のハッカーである。はりぼてOSの会で、自分OSを作っている若者である。 はりぼてOSの会は、「30日でできる! OS自作入門」に触発されて自作のOSを作ろうという狂気(誉めています)の集団である。わたしみたいな人間はOSを自作しようなんていう発想にはまったくもってついていけないのであ

    nitsuji
    nitsuji 2007/06/04
    リストを作る
  • TAKESAKO @ Yet another Cybozu Labs: 第1回XSS祭り(サニタイズ勉強会)

    ついカッとなって企画された第1回XSS祭り、ネタかと思っていましたが、先日の日曜日に開催され、無事終了しました。 XSSの洋書 XSS Attacks: Cross Site Scripting Exploits and Defense が日に届いたので、 このタイミングに最近のXSSの傾向を整理して、それらの攻撃を防御する手法についてみんなで勉強しました。 実際、の内容にはあんまり触れなかったですけど。ネタでAnti-Anti-Antiとか。 終始まったりとした雰囲気の中、参加者の飛び入りプレゼンやSkype中継もあったりと、大変楽しい勉強会でした。 参加者が参加者だけに、国内(世界的にも)最先端の話を共有することができて、有意義な時間を過ごすことができました。 (詳細はあとで書く。) わざわざ、この勉強会のためだけに新幹線で上京された方もいらっしゃったとのことで、 その熱意には感

    nitsuji
    nitsuji 2007/06/04
  • Hatena::Diary::Neko::kak 500 Internal Server Error

    MacBook Air 11インチ欲しい! ください 自分のトークの宣伝 http://blog.nekokak.org/show?guid=YoQmCv3X3xGA7lhooKD0CA こっちをみてね。 最近はてながけっこう重いので http://blog.nekokak.org/ こっちをベースにしようかなと思ったり思わなかったり。 まぁここのサーバもVPSで重かったりするんですけど。 というのをつくりました。 http://github.com/nekokak/p5-dbix-skinny-cache package Mock::Basic; use DBIx::Skinny setup => +{ dsn => 'dbi:SQLite:', username => '', password => '', connect_options => { AutoCommit => 1 },

    Hatena::Diary::Neko::kak 500 Internal Server Error
    nitsuji
    nitsuji 2007/06/04
  • DBICのRの拡張の必要性 - Hatena::Diary::Neko::kak 500 Internal Server Error

    http://d.hatena.ne.jp/hi-rocks/20061228/1167291723 結局、ResultSetクラスにメソッド生やしちゃうと、全部のSchema(テーブル)でそのメソッドが共有されちゃう その通りです。 こちらについては、findのように共通メソッドとして使うものだけを考えています。 例のretrieve_ridはどのスキーマでも使いたいメソッドになるので。 まあ、例が悪かったりもしますが。 MoFedge::Data::DBIC::ResultSetRegisterをもっと作りこめば このスキーマからしか実行できないぜ!とかもできますが、 EXPERIMENTAL!! です。オイラもつかってません>< ちなみにDBICでは、実はスキーマ毎のResultSetの拡張はあんまり必要ないかなとか思ってます。 CDBIの場合はset_sqlしたりなんやかんや動的に

    DBICのRの拡張の必要性 - Hatena::Diary::Neko::kak 500 Internal Server Error
    nitsuji
    nitsuji 2007/06/04
  • MoFedge::Data::DBIC::Schemaの解説してみますかね - Hatena::Diary::Neko::kak 500 Internal Server Error

    MoFedge::Data::DBIC::SchemaってのがMFのラボで公開されてるのですが、 http://code.mfac.jp/trac/browser/MoFedge-Data-DBIC-Schema/ いまいち分からないらしい。 DBIx::Class::Schema::Loaderとなにがどう違うのかとかとか。 まあ、基DBIx::Class::Schema::Loader http://search.cpan.org/dist/DBIx-Class-Schema-Loader/ これを使っとけばいいんじゃないでしょうか。 終わり(マテ MoFedge::Data::DBIC::Schemaって何をヤッテクレル人なのかを かるーく書いてみようと思う。 load_componentsを書くところを1箇所にするためのもの。 MoFedge::Data::DBIC::AutoS

    MoFedge::Data::DBIC::Schemaの解説してみますかね - Hatena::Diary::Neko::kak 500 Internal Server Error
    nitsuji
    nitsuji 2007/06/04
  • DBIx::Class::StorageReadOnly - Hatena::Diary::Neko::kak 500 Internal Server Error

    とかいうのをでっち上げてみた。 スレーブにinsertとかupdateとかかけて死ねるのはイヤンなので。 まあ、開発環境のDBもちゃんと設定しておけば こんなの使わなくても気づくのですが、保険です。 package DBIx::Class::StorageReadOnly; use strict; use warnings; use base 'DBIx::Class'; use Carp::Clan qw/^DBIx::Class/; sub insert { my $self = shift; if ($self->result_source->schema->{__READ_ONLY_CONNECTION}) { croak("This connection is read only. Can't insert."); } $self->next::method(@_); } sub

    DBIx::Class::StorageReadOnly - Hatena::Diary::Neko::kak 500 Internal Server Error
    nitsuji
    nitsuji 2007/06/04
  • MoFedge::Data::DBIC::Schemaのauto_blogns_to - Hatena::Diary::Neko::kak 500 Internal Server Error

    http://d.hatena.ne.jp/lestrrat/20060815#1155614343 Loaderはリレーションのかけかたが微妙だったので、 (前にちょっと試しただけで、そうでもないかもしれませんが) 自前でやるようにしました。ただそれだけで、たいした意味はありませぬ。 MoFedge::Data::CDBIもLoaderつかってないので、それにあわせた感じです。 ついでなので。 こんな感じでリレーション設定してまふ。 sub _auto_belongs_to { my $self = shift; my $column = shift; my $col = shift; my $base = shift || ''; if ($col =~ /([^_]+)$/) { my $pkg = $self->base_name . "::Schema::" . ucfirst(

    MoFedge::Data::DBIC::Schemaのauto_blogns_to - Hatena::Diary::Neko::kak 500 Internal Server Error
    nitsuji
    nitsuji 2007/06/04
  • MoFedge::Data::DBIC::Schemaの一部を公開してみるの術 - Hatena::Diary::Neko::kak 500 Internal Server Error

    Makiさんが、 http://d.hatena.ne.jp/lestrrat/20060811#1155274519 こういうHackをしていたので、書かずには居られなくなった。 一部切抜きでご紹介。 (DataTimeにインフレートしてるところだけをご紹介) これがMoFedge::Data::DBIC::Schemaだ!! package MoFedge::Data::DBIC::Schema; use strict; use warnings; use base qw/MoFedge DBIx::Class::Schema/; use DateTime::Format::MySQL; use MF::DateTime; sub register_column { my ($self, $col) = @_; $self->next::method($col); $self->dat

    MoFedge::Data::DBIC::Schemaの一部を公開してみるの術 - Hatena::Diary::Neko::kak 500 Internal Server Error
    nitsuji
    nitsuji 2007/06/04
  • DBIC::RandomStringColumnsバグってるよー。 - Hatena::Diary::Neko::kak 500 Internal Server Error

    DBICのバージョンを最新にしてやるぜ!と思いごりっと入れてみた。 プロジェクトで使ってたバージョンは確か0.00400かな。 まず、Module::Buildが最新じゃなかったのでエラー祭り。 うがー。 Module::Buildを最新にしたら問題なくインストール完了。 とあるプロジェクトで使ってたので動作確認してたらうごかねー。 CRUDのCがうごかねー。 それ以外は問題なさげ。 調べたところDBIC::RandomStringColumnsで無限ループしてた。 sub get_random_string { my $self = shift; my $column = shift; my $val; do { # must be unique $val = String::Random->new->randregex(sprintf('%s{%d}', $self->rs_solt-

    DBIC::RandomStringColumnsバグってるよー。 - Hatena::Diary::Neko::kak 500 Internal Server Error
    nitsuji
    nitsuji 2007/06/04
  • How we build Vox

    The document discusses how Vox, a large-scale, fast, internationalized website, is built using various web technologies. It uses Catalyst as its web framework, Data::ObjectDriver for caching and partitioning data across multiple databases, Perlbal for fast static content delivery, and Memcached for caching. Template Toolkit templates are optimized through versioned caching and syscall reduction. A

    How we build Vox
  • hide-k.net#blog: Lucene Web Serviceのインストール

    DBIx::Class::Indexer::WebService::Luceneを使ってみたいので、まずはLucene Web ServiceをCentOS 5にインストールしてみたメモ。 ちなみにLucene Web ServiceとはJavaで出来てる検索エンジンLuceneにREST APIでアクセスできるようにしたWebアプリケーションです。これにより他の言語からも使いやすくなるということ。 Lucene Lucene Web Service perlのwrapper WebService::Luceine DBICから検索エンジンにアクセスするモジュール DBIx::Class::Indexed そのLucene Web Service Indexer DBIx::Class::Indexer::WebService::Lucene JDK 6のインストール *基的にこのエント

  • hide-k.net#blog: DBIx::Class::DigestColumnsがちょっと便利になった件

    以前、DBIx::Class::DigestColumnsの問題というエントリーでDBIC::DigestColumnsがいまいち使いづらいようなことを書きましたが、今年に入ってアップデートされてちょっと便利になった模様。 ユーザー管理で生パスワードを保存したくない場合には結構便利なコンポーネントです。 テーブルを作って create table users ( id integer not null primary key, username text not null, password text not null ); schemaクラスはLoaderにまかせて package MyApp; use strict; use base qw/DBIx::Class::Schema::Loader/; __PACKAGE__->loader_options( components =>

    nitsuji
    nitsuji 2007/06/04
  • hide-k.net#blog: Catalyst::Model::DBIC::Schemaでのトランザクション管理

    以前 Catalyst::Model::DBIC::Plainでのトランザクション管理 というエントリーを書きました。 Catalyst::Model::DBIC::Plainってあたりが時代を感じさせます。 Cookbokにもありますが現在のDBIx::Classでトランザクションを管理する場合には$schema->txn_do($coderef)を使うとトランザクションの開始からコミット、ロールバックまでやってくれます。 my $schema = CD::Schema->connect(...); $txn = sub { my $artist = $schema->resultset('Artists')->create( { name => $name, } ); my $album = $schema->resultset('Albums')->create( { title

  • hide-k.net#blog: Chained ActionでスマートなURL

    Chained Actionを使った例でこんな記事がありました。 /user/ ユーザー一覧 /user/add ユーザー追加 /user/[ユーザー名] [ユーザー名]の詳細 /user/[ユーザー名]/edit [ユーザー名]の編集 /user/[ユーザー名]/delete [ユーザー名]の削除 というURL構成を再現するのに package MyApp::Controller::User; use strict; use warnings; use base 'Catalyst::Controller'; sub _parse_PathPrefix_attr { my ( $self, $c, $name, $value ) = @_; return PathPart => $self->path_prefix; } sub root : Chained('/') PathPrefi

  • hide-k.net#blog: 使ってるCatalystのPlugins/Components

    こんなエントリーがあったので進行中のプロジェクトで今のところ使ってるのを晒してみる。 Catalyst::Action::RenderView Catalyst::Model::DBIC::Schema Catalyst::View::TT::ForceUTF8 Catalyst::View::JSON Catalyst::Plugin::Static::Simple Catalyst::Plugin::ConfigLoader Catalyst::Plugin::Dumper Catalyst::Plugin::StackTrace Catalyst::Plugin::Session::* Catalyst::Plugin::Authentication::* Catalyst::Plugin::FormValidator::Simple Catalyst::Plu

  • hide-k.net#blog: パスワードの保存方法

    仕事でパスワードによる認証があるサービスを立ち上げるにあたって、お客さんがパスワードを忘れたときのパスワードの救済措置(いわゆる、「パスワードを忘れましたか?」とか「パスワードリマインダ」ってやつです。)をどーするか、ちょっとした議論(そもそも要件で決めて置けという話もありますが)になったのでまとめてみました。 パスワードの保存方法として大きく三つ考えられます。 1. そのままの文字列として保存 ・認証 ユーザーが入力した文字列と同じかどうか比較するだけです。 ・リマインダ 文字列がそのまま保存されているのでそのまま送ればユーザーはそれを使ってログインできます。 ・問題点 パスワードがそのまま保存されているのでデータベースなどを盗まれたらだだ漏れします。 2. 秘密鍵を使って復号可能なアルゴリズムで暗号化して保存 ・認証 復号できるので保存されているパスワードを復号化してユーザー

  • hide-k.net#blog: DBIx::Classでauto insert/update datetime

    とっても便利なDBIx::Class::InflateColumn::DateTimeですが、前にも書いたとおり作成日時、更新日時などの設定が面倒です。 LyoさんのDBIx::Class::DateTimeColumnsはその辺がRails likeになっていてお気に入りだったので取り込んで見ました。 package DBIx::Class::InflateColumn::DateTime::Auto; use strict; use warnings; our $VERSION = '0.01'; use base qw/DBIx::Class::InflateColumn::DateTime/; use DateTime; __PACKAGE__->mk_classdata( datetime_timezone => 'local' ); __PACKAGE__->mk_classd

    nitsuji
    nitsuji 2007/06/04