サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
都知事選
d.hatena.ne.jp/woremacx
linux, ubuntu, VPSOS を入れ替えれるというのは知っていたけれど、まだ実際やったことなかったので、やってみた備忘録を残しておきます。基本的な流れは、hideden さんの Sakura VPS980のCentOSを再起動一回でGentooに変身させる方法 - Perlとかmemoとか日記とか。 がベースになっています。なので、debootstrap を使うのではなく、Gentoo の stage3 に相当するファイルを作ってやってみました。VMware の中で Ubuntu 10.04 LTS の tarball を準備VMware に Ubuntu 10.04 LTS server を server CD から最小限でインストールします。インストーラ最後らへんの選択項目から OpenSSH Server を入れるようにします。インストールが終わったら、適当に tarba
debiandeb 作成時に、特に重要ではないテストがこけてしまって、deb が作れなくて困ったので man dh してみたところ、上書きする方法がわかった。Often you'll want to pass an option to a specific debhelper command. The easy way to do with is by adding anoverride target for that command. #!/usr/bin/make -f %: dh $@ override_dh_strip: dh_strip -Xfoo override_dh_installdocs: dh_installdocs README TODO というわけで、debian/rules を以下のようにすれば、テストの結果に関係なく deb が生成されるようになった。 #!/u
wget --mirror -np $url とかやると、化け化けなファイル名で保存されて悲惨なことになった。なので、1 階層限定で、ファイル名を復元しつつ wget するやつを試しに作ってみた。再帰的に取ってこれるようにすると便利だろうなぁ。ファイル名をちゃんと扱える wget 的な転送ソフトとか、以下のスクリプトに関する patch とかあればオ願いします。 #!/usr/bin/perl use strict; use warnings; use Encode; use Encode::Detect::Detector; use URI::Escape; use WWW::Mechanize; my @auth = qw/id pass/; sub retrieve { my $url = shift; my $with_dir = shift; my $url_readable =
perl, mojoMojo::Base は、いろんなモジュールのベースになってる子で、アクセサ作りが主な仕事。chained, default, weak の 3 つのオプションがある。chained が何を意味するのかわからなかったので、ちょっと調べてみた。アクセサのコードは、環境変数 MOJO_BASE_DEBUG に何か入れてやると出力される。1 番目の引数を arrayref にすると、デフォルト値が同じアクセサを大量生産したい場合に便利。 アクセサ作成時にオプションなし package Car; use base 'Mojo::Base'; __PACKAGE__->attr('driver'); ふつうのアクセサ ATTRIBUTE: Car->driver sub { Carp::croak('Attribute has to be called on an object,
id:otsune さんが、WWW::HatenaStar 0.03 を使ってスターを付けている(WWW::HatenaStarでうごメモにスターを付けまくる - otsune’s SnakeOil - subtech)そうです。ただ、数が多くなると DoS とされてしまうようで、Forbidden されるとのことでした。その対策として wait を入れれるようにパッチをコミットしていただきました!また、コールバックを渡して、プログレスバー等を表示できると良いとのことで、それを実装しました!コールバックを渡す例として fetch-video.pl を教えていただきました。WWW::HatenaStar では、目標スターが何個で、現在そのうち何個までつけれたかを知れればいいので、コールバックに渡すパラメータは単純に現在値、目標値の2個になっています。使い方は、サンプルスクリプトをご覧ください
fastladderクリップを ldc の代わりにローカルで持ちたくて、hack しています。1 年まえの自分のエントリ(ldR と ldC の通信内容のメモ - woremacxの日記)をもとに、clip コントローラを作って、in_my_clip メソッド、add メソッド、rss メソッドを書くところまでやりました。id:elim さんに、ruby の基本的なところを教えていただいてやっとここまで来ました。現時点での svn trunk に対するパッチです。: http://woremacx.com/fastladder-diff-r2.txtだけど、ぼくが出来るレベルを超えてるので、rails 側のコードをチェックしてくださる人js 側でホットキーの'b', 'i' が無効になっているのを有効にしてくださる人を募集したいと思います。手伝っていただける心の広いハカーの方がいらっしゃれ
Web アプリで permalink 付けたり、なんかあといろいろ検索とかやってみたいよねという話になったので、まずはログを取る子から。Log::Channel をコピって作ってて、現状 PRIVMSG と NOTIFY しかログをとってない。今実際に動かしていて、まあまあそれなりおkな感じでログられている。 package Log::DBI; use strict; use warnings; use IO::File; use File::Spec; use Tiarra::Encoding; use base qw(Module); use Module::Use qw(Tools::DateConvert Log::Logger Log::Writer); use Tools::DateConvert; use Log::Logger; use Log::Writer; use C
それPla!ちなみに、DBIx::Simple で JOIN したときに複数テーブルに同じカラムがある場合、どう取り出せばいいのか困ってました。IRC で質問したところ knagano さんに解決法を速効教えていただきました。select foo.name, bar.name としているところを select foo.name fooname, bar.name barname とすれば、ちゃんと取り出せるということを教えていただきました。ありがとうございます! RewriteEngine On RewriteRule ^/([0-9]+)$ index.php?m=pc&a=page_c_topic_detail&target_c_commu_topic_id=$1 [R=302,L] plugins: - module: Subscription::Config config: fee
以下のような関係のテーブルがあります。 create table user ( id int(11) NOT NULL auto_increment, username varchar(255), password varchar(255), unique key (username), primary key (id) ) ENGINE=InnoDB; create table tag ( id int(11) NOT NULL auto_increment, user_id int(11), foreign key (user_id) references user (id), primary key (id) ) ENGINE=InnoDB; ふつーに foreign key を指定して DBIx::Class::Schema::Loader におまかせすると、 MyApp::Sch
coderepos や lazy-people や vaginarepos といろんな subversion リポジトリにアカウントもらって、さらにはプライベートな subversion リポジトリがあったりすると、どこになにがあったのかさっぱりです。そんなときは、をれをれ subversion リポジトリを作って自分が使うものだけを集約すると、快適な生活を送れるかと思います。やり方はカンタンです!プライベートなリポジトリ( http://example.com/repos/private/ )を用意して、svn:externals をセットするだけです! # checkout する $ svn co http://example.com/repos/private/ $ cd private # coderepos 用ディレクトリを作る $ svn mkdir coderepos $ s
衝動的に Plagger::Plugin::Filter::FetchNicoVideo をベースにした fetch-nico-video.pl を書いてみました。FetchNicoVideo のオプションのほとんどを、コマンドラインで指定できるようにしたお。id:otsune さんと yusukebe(id:kamawada) さんにいろいろ相談にのってもらったお。thanks! FETCH-NICO-VIDEO(1) User Contributed Perl Documentation FETCH-NICO-VIDEO(1) NAME fetch-nico-video - command line downloader of NicoVideo SYNOPSIS fetch-nico-video [options] [urls ...] DESCRIPTION fetch-nico-
こんにちは!こんにちは!こんにちは!erogeek の id:tomyhero さんの手によって vaginarepos に、ちょーエロいモジュールが import されたよ!その名も Woremacx モジュールだよ!'ヴ' メソッドを呼ぶことで、いろんな場所に 'ヴ' と発言できるよ!今は STDOUT に発言するだけだけど、プラガブルな構造なのでプラグインを増やせば、ヴが無限に広がりまくるよ!thanks!! #!/usr/bin/perl use strict; use warnings; use FindBin::libs; use utf8; use Woremacx; my $おれまくえくす = Woremacx->子づくり(); $おれまくえくす->ヴァギナローダー([qw/STDOUT/]); $おれまくえくす->ヴ();
昨日あたりから、id:hideden さんに教えていただきながら Data::ObjectDriver::Loader を作って遊んでます。(nowamacx - Data::ObjectDriver::Loader つくりはじめた)Loader はまだカラム名の自動設定しかできない子ですが、とりあえずおいておくことにして、Catalyst アプリから使ってみたいなぁと思いました。ぼくが Catalyst を始めるきっかけになった id:naoya さんの記事 (Perl の MVC フレームワーク Catalyst に入門してみた : NDO::Weblog) にある Tinyurl をサンプルにやってみました。ぼくの手元で Data::ObjectDriver::Loader はこんな感じになっています。Data::ObjectDriver::LoaderData::ObjectDri
fedora8 の apache で、 Options +Indexes したときに出てくるファイル名一覧が Content-Type: text/html;charset=ISO-8859-1 などというカオスなものがついた出力になっていて、AddDefaultCharset をコメントアウトしてみたりしたものの、どうにも解決できなかった。設定に ISO-8859-1 を書いてる場所はないので、ソースを見てみたところ、 IndexOptions Charset=UTF-8 と conf に書けることがわかり、あっさり解決した。オープンソースなアプリの設定で困ったら、まずはそのアプリに慣れ親しんでいる詳しい人に聞いてみて、それでもだめなら、根拠のないトライアンドエラーとか無駄にぐぐったりとかせずに、よほどカオスなソースでない限り自分の目で見て確認したほうがいいなと思った。
WWW::HatenaStar ってのを書いて coderepos に commit してみたよ。ついでに P::Plugin::Notify::HatenaStar も書いたよ!なので、こんな感じで yaml を書いて cron で回せば、キミが寝ている間も、気になるあの子のスター一番乗りねらえるね! global: plugins: - module: Subscription::Config config: feed: http://h.hatena.ne.jp/dankogai/.rss - module: Filter::Rule rule: expression: $args->{entry}->body_text !~ /blog\.livedoor\.jp\/dankogai/ - module: Filter::Rule rule: - module: Deduped p
mobirc と Skype4IRC つないで出先からウハウハと思ってたら罠が。ソース量が少なくて Skype4IRC のほうがいじりやすそうだと判断したので、とりあえずトークとチャンネルの両刀にしてみた。 Index: lib/Skype4IRC/IRCD.pm =================================================================== --- lib/Skype4IRC/IRCD.pm (revision 3422) +++ lib/Skype4IRC/IRCD.pm (working copy) @@ -16,7 +16,7 @@ $self => { map( { $_ => "poe_$_" } qw/_start _default update_contact privmsg/ ), }, - $self => [qw
フロントで Basic 認証かけておいて、適当な openid url をでっち上げる例。openid 的な url を作るために、$c->config->{namespace} に http://profile.vaginarepos.org/ とか適当な値を入れておく。それにユーザ名を足したものを openid として使う。 Index: lib/Cpip.pm =================================================================== --- lib/Cpip.pm (revision 6256) +++ lib/Cpip.pm (working copy) @@ -80,14 +81,14 @@ } } -sub auto : Private { - my ( $self, $c ) = @_; - if ( $c->se
id:miyagawa さんの Web::Scraper で、HTML::TreeBuilder::XPath の代わりに XML::LibXML を使うととても幸せになれそうなので実験してます。XML::LibXML に手を出す前に IRC で「tinyxpath とか htmlcxx とか使って xpath 周りを高速にしたい」とかボヤいてことがありました。そのときに、id:vkgtaro さんや id:tomyhero さんに激しく libxml や XML::LibXML をオススメされました。libxml をオススメしてもらえてなかったら、確実に路頭に迷ってました。以下が、変更したファイルと差分です。http://pub.woremacx.com/Web-Scraper/Scraper.pmhttp://pub.woremacx.com/Web-Scraper/Web-Scrap
erogeek の id:tomyhero さんにおしえてもらいました。デフォルトの Catalyst だと、アプリの設定を appname.yml とかに全部ブっこんでる。Catalyst::Plugin::ConfigLoader::Multi を使うと、conf/appname.yml conf/appname_view.yml conf/appname_model.yml とか目的別に分割できる。ファイル名さえちゃんと付けてれば、目的の設定にすぐにたどり着けてすばらしすぎます。あと、Catalyst::Plugin::ConfigLoader にある CONFIG_LOCAL_SUFFIX という仕組みあって、その仕組みを Catalyst::Plugin::ConfigLoader::Multi でも使えるということもあわせておしえてもらいました。Catalyst::Plugin
tiarra で User::Nick::Detached を使うと、クライアントの接続の有無に応じて、nick を変えることができて非常に便利。ただし、これには一つ問題があって、nick を変えまくると DIS られることがある。ぼくの記憶が確かならば、irc.perl.org で「自分を見失ってるのか?」とか「うぜーよ」ということを言われた気がする。これって、特定のネットワークで動作させなければ良いわけなので、そういう動きをするようにしてみた。以下のような、各ネットワークの設定で、nick を指定してあったら nick を変更しないようにしてみた。 freenode { host: irc.freenode.net port: 6667 # nick を指定しているので、クライアント数がゼロになっても NICK をさわらない。 nick: waremacx } + User::Nick
Yahoo! JAPAN の「日本語形態素解析Webサービス」を使うモジュールを作り始めて、coderepos にうpらせていただいたよ!この子は、ヴァギナ(#vagina@irc.woremacx.com)から生まれた子供だよ。tomyhero さんとの会話の中でサービスを紹介してもらったのがきっかけで書き始めて、yusukebe さんに命名してもらったんだ。エラー処理を全くしてない子なので、これから書いていくよ!なにか気に入らない点があれば、coderepos の trunk に直接 commit していただけると助かります。WebService::YahooJP::TextParselib/WebService/YahooJP/TextParse.pmYahoo!デベロッパーネットワーク - テキスト解析 - 日本語形態素解析 use strict; use warnings; us
DBIC, Catalystcoderepos にコミットしますた。http://coderepos.org/share/changeset/1038使い方は以下の通りです。 # in your Schema class package Test::Schema; use base qw( DBIx::Class::Schema::Loader ); __PACKAGE__->loader_options( components => [ qw( FromFormValidatorSimple ) ], ); # in your Catalyst controller $c->form; $c->model('DBIC::Member')->create_from_fvs($c, { name => "woremacx", email => "woremacx at gmail", } )
Index: bin/plagger-ircbot =================================================================== --- bin/plagger-ircbot (revision 1977) +++ bin/plagger-ircbot (working copy) @@ -10,6 +10,7 @@ use YAML; use Plagger::ConfigLoader; +use Plagger::Crypt; use POE qw( Session @@ -38,6 +39,10 @@ my $config = $plugin->{config}; +if (exists($config->{server_password})) { + $config->{server_password} = Plagger:
Plaggerなんか、フィードに普通に元画像へのリンクあるので、基本的にいらない子みたいです。><あえて使う場面があるとすれば、画像の大きさを label で指定して、必要な大きさの画像を取る場合のみです。>< woremacx flickr の API 使って、feed の画像を original 画像に upgrade する filter 書くと幸せになれそうな気がしてきた。http://twitter.com/woremacx/statuses/360564352otsune @woremacx TruePermalinkかFindEnclosureあたりで出来そう lang:jahttp://twitter.com/otsune/statuses/360602382woremacx @otsune FindEnclosure で検討してみます!http://twitter.com/
すでに誰かが書いていそうだけど、CustomFeed::Config でなんとかしたかったので、ad-hoc なことをしたよ。global に charset をセットすると、あらゆる decode_content の機会に使われるよ。 Index: lib/Plagger/Util.pm =================================================================== --- lib/Plagger/Util.pm (revision 1943) +++ lib/Plagger/Util.pm (working copy) @@ -101,6 +101,10 @@ # 5) falls back to UTF-8 $charset ||= 'utf-8'; + if (defined(Plagger->context->conf->{
すでにどこかにあるのかもしれないのをぐぐらずに書き始めてみたり、DBIC の Schema 触りたくないという理由だけで DBI つかってたり、途中からエラー処理してなかったり、Message-Id 全部格納してるのに localpart という変なカラム名になってたり、無関係な diff が数行あったり、いろいろ不適切かもしれません。あと、べつに SQLite とか MySQL とかが必須というわけでなくて、$feed->url をキーに Message-Id 保存して、適当に expire すればいいだけなんだよね。 CREATE TABLE thread ( id INTEGER NOT NULL PRIMARY KEY , feed INTEGER NOT NULL, localpart TEXT, created_on INTEGER ); global: timezone: A
trunk にある miyagawa さんの Kwiki::FastCGI のをまねしてみたら動いた。index.cgi #!/usr/bin/perl use strict; use lib 'lib'; use Kwiki; use CGI::Fast; while ( my $cgi = CGI::Fast->new ) { Kwiki->new->debug->process('config*.*', -plugins => 'plugins'); } httpd.conf ServerName woremacx.com Options ExecCGI DirectoryIndex index.cgi AddHandler fcgid-script .cgi
otsune さんの AutoPagerizeのデータを利用して、Filter::EntryFullTextで複数ページの内容を取得できるようにするアイデア - otsune's SnakeOil - subtech を実験してみました。AutoPagerize (swdyh) のデータを利用させていただいています。いまのところ、allabout の記事でのみテストしてます。 現時点での成果物 EntryFullText.pm 実験コードtrunk-to-eft-autopagerize.patch trunk との差分test.yaml 実験に使った config
RSS が出てなくてさびしかったので、Subscription::HatenaRSS をベースに CustomFeed::HatenaStar というものをこさえて、自分が ☆ 付けたものを ldC に stared タグで Publish::LivedoorClip するようにしてみた。それをさらに、はてブと del.icio.us へ。今日から ☆ 付ける分からはちゃんと sync されるはず。 package Plagger::Plugin::CustomFeed::HatenaStar; use strict; use base qw( Plagger::Plugin ); use Plagger::Date; use Plagger::Mechanize; use Plagger::Util qw( decode_content ); our $VERSION = 0.01; s
次のページ
このページを最初にブックマークしてみませんか?
『d.hatena.ne.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く