サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「#文学」
charsbar.hatenadiary.org
今年は Japan Perl Association が4月末にリスボンで開催された Perl Toolchain Summit のスポンサーについてくださったということで、久しぶりに日本語の記事も用意します。細かなことまで興味のある方は英語版のレポートもあわせてご覧いただければとおもいますが、ざっくり本年の成果を説明しますと、 Perl 5.37 で導入された class 宣言を PAUSE が認識できるようにしました。 PAUSE にアップロードしたモジュールがインデックスに掲載されない事件の原因となっていたデッドロックの問題を解消してきました。 将来の Perl や PAUSE の開発に関する議論などに参加してきました。 class 宣言については、2000年に Perl 6 の構想が発表されてからというもの、MooseX::Declare を代表とするいくつかの実験的なモジュールが
これはPerl Advent Calendar 2018 7日目の記事です。 tl;dr 先日リリースされたJSON::XS 4.0が2013年に行われたJSONの仕様変更に追随したので、decode_json($json) の結果はかならずしもリファレンスではなくなりました。encode_json($value) にもリファレンス以外の値を受け入れるようになっています。結果、JSONモジュールの挙動がバックエンドによって異なる状態になり、各地でテストがこけるなどの影響が出ました。これを受けてJSON、JSON::PP側も変更に追随しましたが、みなさまの方でも適宜ご対応をお願いします。 2018年11月16日付けでJSON::XSのバージョン4.0が出ました。3.0が出たのが2013年10月29日のことですから、5年振りの大型アップデートということになります。今回の目玉は二点。いずれもこの
YAPC::HokkaidoやYAPC::Kansaiで話した通り、Perl 5.26ではセキュリティ上の問題で@INCにカレントディレクトリが含まれなくなります。p5pやツールチェーン側ではその影響を軽減すべくCPANクライアントやTest::Harnessに従来の挙動を残すような仕組みを用意中ですが、現時点ではまだすべての対策が出そろっているわけではありません。最終的にどうすべきかは5月に開催される予定のPerl Toolchain Summit (旧Perl QA Hackathon)後にあらためてまとめるつもりですが、直接的な影響を受けるCPAN Authorのところには順次バグレポートが届いているかと思いますので、可能であれば以下の対応をご検討ください。 incディレクトリなどにMakefile.PL/Build.PL用の特殊なモジュールなどを同梱している場合 カレントディレクト
London Perl Workshop 2016に続いてYAPC::Hokkaidoにも前夜祭から参加してきました。資料は以下の通りです。前夜祭では今年の夏にまかまかさんからメンテを引き継いだJSON(::PP)の現状、土曜日の本編では昨年までならPerl5やPerl6の重鎮が発表していたであろうPerl5/6の現状をウォッチャー目線でざっくりまとめておきました。夏のLigthweight Language of Thingsでは日本語でスライドを書きましたが、今回は海外からのスピーカーがいらしたということでスライドはいつも通り英語になっています。 JSON, JSON::PP, and more from charsbar 2016年のPerl (Long version) from charsbar あと、syohexさんの発表にあったメンテをやめたくなったときの話ですが、CPAN/
tl;dr: It was really awesome (again)! A big thank you to the organisers and the speakers and everyone. YAPC::Hokkaidoの前週ということで悩ましくはあったのですが、もろもろありまして、2016年12月3日にロンドンで開催されたLondon Perl Workshopに行ってきました。資料はそのうち公開されていくと思いますが、ひとまず参加できたセッションの情報をごく簡単にまとめておきます。 Custom Keyword Plugins Paul Evans氏によるKeyword Plugin (Perl 5.12で導入)、Custom Op (Perl 5.14で導入)まわりの話。仕組みについて解説した後、Keyword::Boolean、Switch::Plain、Functi
気がつけばもう一ヶ月も前のことになってしまいましたが、uzullaさんが多くのスタッフの方々を巻き込んで手弁当で開催してくださったYAP(achimon)C::Asia Hachioji 2016 mid in Shinagawaで、今年の春からちまちま作り直しているPerl::PrereqScanner::NotQuiteLiteの経過報告的な話をしてきました。スライドの方は翌日には公開してあったのですが、ここに書くのはコードの方をもう少し(というか、当初目論んでいたあたりまで)直してから、などと思っていたらこのていたらくで、uzullaさんにも聴きに来てくださった方にも大変申し訳ないことをしました。ようやく旧版のテストが全部通るところまではたどり着いたので、コードをCPANとGitHubにあげておきました。話題に出したplan skip_allなどへの対応はまだなので、本丸であるCPA
ロンドンで話を聞いたInline::Perl5の印象が強すぎてうっかり存在を忘れていたのですが、特に複雑なことをするのでなければ、最新のRakudo Starに同梱されているDBIishというモジュールを使うと、Perl5のDBIと同じような書き方ができるようになっています。たとえばSQLiteのデータベースを扱うのであれば、Rakudo StarとSQLiteのライブラリ(libsqlite3的なもの)をインストールしたあと、こんなコードを書けばOK。 use v6; use DBIish; my $dbh = DBIish.connect("SQLite", :database, :RaiseError); $dbh.do("CREATE TABLE IF NOT EXISTS foo (id, text)"); my $sth = $dbh.prepare("INSERT INTO
tl;dr: It was really awesome! A big thanks to the organisers and the speakers and everyone. もろもろありまして、2014年11月8日にロンドンで開催されたLondon Perl Workshopに行ってきました。会期こそ一日こっきりでしたが、予約制のワークショップを含めて都合六トラックも走るという非常に盛りだくさんなイベントで、当日は本当に身体が二つ三つ欲しいと思ったことでした。資料は少しずつ公開されているようですが、ひとまず参加できたセッションの情報をごく簡単にまとめておきます。 An introduction to Sereal, a better Storable (Yves Orton) Booking.comで開発されているSerealというモジュールの紹介。この分野で伝統的に使われてきた
4月24日発売のWEB+DB PRESS Vol.80に、Perl Hackers Hub連載の第26回として「Perlで困ったときの調べ方」という記事を書きました。 WEB+DB PRESS Vol.80 作者: 鶴長鎮一,宮下剛輔,縣俊貴,中村知成,西尾泰和,新井俊一,南川毅文,伊藤直也,石垣憲一,浅木朗,渡邊恵太,中島聡,はまちや2,竹原,川添貴生,河合宜文,WEB+DB PRESS編集部出版社/メーカー: 技術評論社発売日: 2014/04/24メディア: 大型本この商品を含むブログ (6件) を見る 最初に「新入社員の人に見てもらいたいもの」というお題をいただいたときは何を書こうかと迷ったのですが、やはり一番は ということだよなあというわけで、perldocの使い方を中心に、自分が日頃困ったときの情報源としてよく利用しているもろもろについて、ざっくりまとめてあります。 perld
たまに、そう、CPANディストリビューションの割合からすると1%ほどのことではあるのですが、他の人からモジュールを引き継いだときに必要なパーミッションを全部もらえていなかったとか、名前がかぶっているのに気づかなかったとかで、PAUSEの索引に登録してもらえないディストリビューションが生まれてしまうことがあります。 そういう問題を防ぐにはリリース前にPAUSEのパーミッションの確認しておくに限る、というわけで、Test::PAUSE::Permissionsというモジュールをリリースしました。 基本的な使い方は、SYNOPSISに書いてある通り、xt/perms.tのようなテストファイルにこう書いておくだけ。 use strict; use warnings; use Test::PAUSE::Permissions; all_permissions_ok();リリース時に(環境変数RELE
今回は特に予告を書きませんでしたが、昨年、一昨年に続き、今年も3月13日から16日までフランスのリヨンで開催されたQA Hackathonに参加してきました。すでに多くの方がまとめ記事を書かれているので詳細はそちらをご覧いただくとして、今年は、昨年ランカスターで議論したことを肉付けしてPAUSEなどの実装に落とし込むという位置づけの年だったこともあり、細かい点で突っ込んだ議論は多々あったものの、昨年のように「ここがこう変わるから注意してください」とみなさんに報告しておかなければならないことはなかったかと思います(古いディストリビューションなど最近のベタープラクティスにしたがっていないディストリビューションをアップロードする際に多少の注意が必要になったことや、package NAME BLOCKの形式が正しくPAUSEに認識されるようになったことなど、細々とした挙動の変化はありますが、これは
これはMojolicious Advent Calendar 24日目の記事です。 iTunesに英語教材などを放り込んでエンドレス再生していると、「ここにテキストが表示されていればいいのになあ」と思うことがあります。あるいは、洋楽を流しっぱなしにしているときに、ふと聞き取れなかった歌詞を確認したくなるとか。 もちろんその都度メモなりなんなりを開いてもいいのですが、いちいち該当のトラックに関係のあるファイルを探すのも面倒ですから、トラックが変わるたびに自動でテキストが表示されるようにしたいものです。GUIをごりごり書くのは面倒ですし、ターミナルに流し続けるのも見づらいですから、ここはテキストはブラウザに表示することにし、WebSocket経由で更新し続けるようにしてみましょう。 Windows環境では以下のようにWin32::OLEを利用することでiTunesからトラック情報を取得できます
Perlとは何の関係もありませんが、今年からかれこれ20年近く読者の立場で愛読してきた『世界の名酒事典』の執筆作業にたずさわるようになりました(ブランデー、スピリッツ、リキュール担当)。もっとも、執筆といっても、偉大な前任の福西先生がすでに膨大な原稿を残してくださっていますし、私以外はもう何年、何十年と名酒事典の執筆にたずさわっておられるベテランの方ばかりですので、私がしたのは、年月とともに古くなっていた数字等の事実関係の更新や、扉を含む各項目の字数調整くらいのものですが。先ほど見本も届きましたので、宣伝もかねて、ご報告しておきます。 世界の名酒事典 2014年版 作者: 講談社出版社/メーカー: 講談社発売日: 2013/11/22メディア: 単行本(ソフトカバー)この商品を含むブログ (2件) を見る
YAPCの楽しみのひとつに、ふだんなかなかお会いする機会のない方々との旧交をあたためるというものがありますが、今年は残念ながら福岡の方々があまりいらしていなかったようだったので、これはもうこちらから会いに行くしかないっしょ、というわけで、昨年に引き続き、今年もFukuoka Perl Workshopに参加してきました。台風騒ぎで一時はどうなるかと思いましたが、ふたをあけてみれば、素晴らしいネタを披露してくださったdebility@Fusicさんをはじめとする地元福岡の方々に加えて、首都圏からは講師としてyusukebeさん、関西(?)からは2週間前にも天神Perlに来ていたはずのpapixさんも集まり、懇親会では前回お会いできなかったdragon3さんにも再会できて、楽しい時間を過ごせたことです。主宰の津留さん、会場を提供してくださったヌーラボさん、参加されたみなさん、お世話になりました
朝も早うから雑多な話を駆け足で詰め込んだので、消化不良になった方も多かったろうと申し訳なくも思っていますが、ポイントは、CPAN本家のFAQからたどれる「CPANにアップロードする方の責務」についてのこの一節(「私たちはみなさんも空気を読んでくれるものと信じています」)と、 Your duties, the basics, traps We trust that you have read the perlmodinstall, perlmodlib, perlmodstyle, and perlnewmod manpages and that you regularly check out uploads to CPAN and that you have been watching CPAN activities for a while to have an impression of
SQLite 3.8.0 が出たので、DBD::SQLiteにバンドルされているライブラリも更新して、1.41_01としてリリースしました。SQLite 3.8.0ではクエリプランナーが一新されているほか、where節で限定する部分インデックスも利用できるようになっています。 新しいクエリプランナーの詳細については下記をどうぞ。 http://www.sqlite.org/queryplanner-ng.html 私自身はまだ使い込んでいませんが、SQLiteの作者氏によれば、sqlite.orgで2ヶ月以上使ってみたけれども問題は出ていないとのこと。DBD::SQLiteのテストから判断する限り、今回の変更によって余分なsortがひとつ減ったりしていますので、通常は新しいクエリプランナーの方が多かれ少なかれよい結果が期待できるはずですが、前回のクエリオプティマイザ最適化のときにもあったよ
気がつけば前回の安定版を出してから丸一年が過ぎてしまいましたが、ようやくDBD::SQLiteの1.39をリリースしました。 それぞれ以前にも書いたことですが、今回の1.39ではimmediate transactionをデフォルトにしたのと、クエリオプティマイザ最適化によってORDER BYのないSELECT文の返り値の並び順がこれまでと異なったものになる可能性があるのが大きな変更点です。 また、やや地味な変更ですが、カラム名などにutf8文字列が含まれている場合の処理が改善されたほか(jamadam++)、bind_paramに渡す変数を再利用しようとしたときに起こる問題も修正されました。 最近のDBD::SQLiteがOpenBSDを除くBSD系のシステムでスレッド対応版のPerlを使っているときにうまくコンパイルできていなかった件も暫定的に対応してあります。 その他、細かい変更点に
最初に結論を書いておきますが、これは正しい使い方をできている方ならまったく気にする必要がない記事です。要するに「ORDER BYを指定していないのにSELECT文の返値に一定の並び順を期待する方が間違い」というだけの話なんですが、先日のQA Hackathonで潜在的な問題が存在していることが浮き彫りになったので、念のため共有しておきます。 さて、SQLiteは2012年12月12日にリリースされたバージョン3.7.15でクエリオプティマイザを強化し、その結果、ORDER BYがより積極的に最適化されるようになりました。 ただ、DBD::SQLiteはしばらくリリースから遠ざかっていたため、この変更がPerl界隈の開発者の目に触れるようになったのはつい最近、2013年4月4日に1.38_02がリリースされたときのことでした。 このときどのモジュールのどのテストがこけるようになったのかはまだ
以前こちらでも予告しておいた通り、4月12日から14日までイギリスのランカスターで開催されたPerl QA Hackathonに参加してきました。今回のイベントも多くのスポンサーさまに支えていただきました。運営チームのみなさまおよび企業団体スポンサー(cPanel, Dijkmat, Dyn, Eligo, Evozon, $foo, Shadowcat Systems Limited, Enlightened Perl Organisation, Mongueurs de Perl)のみなさま、そして昨年に引き続き個人スポンサーとして寄付をいただいたSyohei Yoshida (@syohex)さま、ありがとうございました。おかげさまで大変有意義な時間を過ごすことができました。 また、今回のQA Hackathonでは、ランカスターでのHackathonにあわせて東京でも一日Hacka
肉の日のリリースには間に合いませんでしたが、先日からgroongaのPerl/XSバインディングを書き始めています。Perlからgroongaというと、過去にはYappoさんが着手されたXSバインディングや、hide_o_55さんがHachioji.pmで発表されていたApp::Groonga::Wrapper、ダウンロードたけしさんのAnyEvent::Groonga、Perl Advent Calendarにも記事を書かれたokamuuuさんのTest::Groongaなど、カジュアルに使う分にはそれなりにツールも揃っている(というか、groonga自体HTTPを話せるので、groongaコマンドでサーバさえ用意してしまえばあとはFurlなりLWP::UserAgentなりで事足りてしまう)のですが、それだけではかゆいところに手が届かない部分もあるようなので、ちょっと手を出してみた次第
以前こちらでも書いた通り、DBD::SQLite 1.37以降ではバンドルしているSQLiteライブラリのデフォルトのファイルフォーマットが変更になったため、「PRAGMA legacy_file_format=ON」を有効にしないと2006年以前のSQLiteでは読めなくなるという問題があるのですが、それとは別に、SQLite 3.7以降で新設されたWAL (Write Ahead Logging)という機能を使うと、バージョン3.7より前のsqlite3コマンドでは「file is encrypted or is not a database」などといわれて該当のデータベースが開けなくなります。 詳細については下記のリンクをご覧いただくとして、データベースを開いたときに-walとか-shmという接尾辞のついたファイルができる場合はこの機能が妨げになっているものと思われますので、最近のD
遅ればせながら、先日開催されたFukuoka Perl Workshop #22に参加してきました。発表資料は以下の通りです。 Analyze CPAN, Analyze Community from charsbar YAPCのLTではとにかく時間がないとのことだったので思い切り端折り(すぎ)ましたが、Fukuoka Perl Workshopの方はタイムテーブルにかなり余裕があるようでしたので、なんでこういう分析をするのかということも含めて都合1時間近く話をさせていただきました。明日からすぐに役立つというたぐいの話ではありませんが、地方でイベントを開催するときなどの参考になればさいわいです。 なお、発表当日には間に合いませんでしたが、補足資料として、CPAN Authorになった年とアクティブな作者数やリリース数との関係をグラフにして追加しておきました。実のある結論を出せるだけのもので
細かいことについてはYAPC::Asiaの発表が済んでからまたあらためて記事を書くつもりでいますが、多くの方に関係のありそうな部分だけ先に書いておきます。 デフォルトのトランザクションモードをdeferredからimmediateにしました DBD::SQLite 1.30_02以降、sqlite_use_immediate_transactionというアトリビュートを使えばトランザクションのモードを(デフォルトの)deferredからimmediateに変更できるようにしてありましたが、今回このimmediateの方の挙動をデフォルトとしました。deferredの挙動が必要な方は明示的にsqlite_use_immediate_transactionアトリビュートをfalseにしてください。 といってもわかりづらいと思うのでもう少し平易に言い換えると、今回の変更で(おもに書き込み用の)ト
すごい適当だけど、手元のWin32マシン(XP @2.40GHz)でこんな感じ。WWW::Mixi::Scraperとか、Mojoliciousベースで書き換えてもいいかもなーとか思った(しないけど)。ちなみにテキスト抽出時の空白文字の扱いがMojo::DOMとWeb::Scraperで微妙に違うので、$test = 1にするとテストがひとつこけます。あと、抽出するものが単純なら正規表現やらなにやらでごりっと抜いた方が速いはず。 追記:Craftworksさんからブクマでご指摘いただいたように、Web::Scraper::LibXMLを使えば桁違いに速いですね。すっっかり忘れていました。LibXMLありなし版のベンチを同時にとるのは面倒だったので、::LibXMLに差し替えた場合の結果も追記しておきました。ありがとうございます。>Craftworksさん cf. http://www.pe
既存のArchive::Anyがパラレルに動作させるとおかしなことになっていたので、ちょいと作ってみました。使い方はこんな感じで。 use strict; use warnings; use Parallel::ForkManager; use Archive::Any::Lite; use File::Temp qw/tempdir/; my $pm = Parallel::ForkManager->new(5); for my $i (1..100) { $pm->start and next; my $dir = tempdir(DIR => './tmp', CLEANUP => 1); my $type = qw(lib)[int(rand(1))]; my $ext = qw(tar.gz tar.bz2 tgz zip)[int(rand(4))]; if (my $arch
報告が遅くなりましたが、週末にDBD::SQLite 1.37をリリースし(てもらい)ました。1.35以降の大きな更新については過去記事やDBD::SQLiteのChangesファイルもあわせてご覧いただくとして、今回のリリースでは1.35で問題噴出していた型指定時の数値の処理が修正されていますので、これまで1.35を使っていた方はぜひ更新をお願いします。 http://d.hatena.ne.jp/charsbar/20120119/1326981740 http://d.hatena.ne.jp/charsbar/20120508/1336487730 なお、既報の通り、今回のバージョンアップでは過去のDBD::SQLiteとの互換性が一部失われます。万一2006年以前に構築されたシステムとデータベースファイルをやりとりする可能性がある場合は「PRAGMA legacy_file_fo
tokuhiromさんのOrePANをはじめ、似たようなものはすでにいくつかあるわけですが、テスト用のツールとしてはいまいち使いづらかったので屋上屋を重ねてみました。 使い方はこんな感じ。 use strict; use warnings; use Test::More; use WorePAN; my $worepan = WorePAN->new( root => './tmp/', files => [qw( I/IS/ISHIGAKI/Path-Extended-0.01.tar.gz )], cleanup => 1, use_backpan => 1, no_network => 0, ); # 何かCPANミラーが必要になるようなテストを実行 my $mirror_url = "file://".$worepan->root; ok !system("cpanm -f --m
報告が遅くなりましたが、2012年3月30日から4月1日にかけて、パリのシテ科学産業博物館で開催されたPerl QA Hackathon 2012に参加してきました。今回のイベントでは渡航費から現地での宿泊費、会場での朝食、昼食、そして会期中の夕食=懇親会の費用に至るまで、ありがたいことにすべてスポンサー様からの出資で賄っていただきました。収支の概要については以前からサイト上に公開されていますが、過去最大規模となったイベントを支えてくださった運営チームおよび企業・団体スポンサーの皆様(Cité des sciences & de l'industrie、Diabolocom、Dijkmat、DuckDuckGo、Dyn、Freeside Internet Services、Hedera Technology、Jaguar Network、Shadowcat Systems Limited、
8割方書き終えて放置されていた原稿が出てきたので貼り付けておくの巻。 すっかり遅くなってしまいましたが、(pre) Hachioji.pm #14に行ってきました。今回は(今回も?)ぎりぎりまで参加できるかどうかわからず、ハッカソンのテーマが存在していたことすら把握していなかったのですが、日中は3月末のQAハッカソンに向けた下準備の一環としてAcme::CPANAuthorsのサイトの拡充をしつつ、本編の方ではその過程でこさえたツールの話などをしてきました。サイトはいまのところ公開リポジトリにはあげておらず、ハッカソンの成果もまだブランチの中で熟成中ですが、ツールについてはgithubにあげてあるのでこちらにも簡単に書いておきます。 最近FetchJSというツールを書いて使っています。自分がウェブアプリを書くときに使うJSのライブラリをダウンロードしてきてアプリの静的ファイル置き場とおぼし
次のページ
このページを最初にブックマークしてみませんか?
『Charsbar::Note』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く