さわだのノート

書籍のお仕事に役立つかもしれない思いつきを記録しています。

RSS: 記事の更新情報 Rss Feed

[Perl]マルチバイト文字を含む文字列でprintfの桁合わせ

printfとかsprintfを使うときに困るのが、マルチバイト文字の扱い。桁数を指定してもがたがたに崩れてしまう。その対策を考えてみたのでメモしておく。 桁数からマルチバイト文字の文字数分を引けばいいだけだった。printf(もしくはsprintf)の第一引数の文…

PerlでYahoo!校正APIを使う

Yahoo!デベロッパーネットワークの校正支援APIをPerlから使ったときにはまったのでメモを。 校正支援APIは日本語の間違いらしきところを指摘してくれるWeb APIです。アプリケーションIDを取得すれば簡単・無料で原稿をチェックできるうえ、一日につき50,000…

QRコードをベクター画像で出力する

書籍や雑誌にQRコードを貼り付けることってよくありますよね。このQRコード、扱いが意外と面倒で、適当にサイズを拡大・縮小すると輪郭がぼやけて正確に読み込めなくなることがあります。 そこで、Perlを使ってQRコードをベクター画像として出力することにし…

Perlのオブジェクト指向プログラミングで、インスタンスにデフォルト値を設定する

そういえばPerlでオブジェクト指向プログラミングするとき、インスタンスのデフォルト値ってどうやって設定するんだろうと思って調べてみた。どうやらデフォルト値を設定したハッシュと、コンストラクタの引数として受け取ったハッシュをマージして、そいつ…

Perlのオブジェクト指向を補助するモジュールその3 Class::Accessor::Lite

Perlのオブジェクト指向はハッシュにアクセスするためのアクセサーをいちいち書かないといけないとかで、ちょっと面倒だったりします。だったらCPANモジュールでなんとかすればいいよね、ということでそれらの不満を解消するための、オブジェクト指向を補助…

Perl入学式 in Tokyo #1 に行ってきた

Perl入学式 in Tokyo #1 に行ってきた。 Perlの勉強会に行ってきた。勉強会は今回が通算2回目の参加です。やっぱり緊張します。会場はブログでもおなじみのSeesaaさんのオフィス。行ってみると以前通っていた大学のすぐ近くで驚きました。 最近Perlは元気な…

いまさらMouseでモジュールを書く

以前、少しPythonを使ってみたのですが、文字列処理や適当な書き捨てスクリプトならやっぱりPerlのほうがいいなと感じました。でも、クラスを書くなら、Pythonのほうがぜんぜん楽です。 そこで、Perlのオブジェクト指向プログラミングをサポートする、Moose…

住所から郵便番号を探し当てるVimScript

Pythonで書いてみた。 ロケタッチの住所正規化APIがすごい便利です。 MacVimでPython 3インターフェースがうまく動いてくれないのは何でなんだろ。 function! Get_zipcode(arg) python << EOF import vim request_address = vim.eval('a:arg') from urllib i…

Perlで「X営業日後」の日付を計算する

たまにExcelでスケジュール表を作ったりするのですが、今日から30営業日後の日付などを計算するのが面倒です。カレンダーで日付を数え上げていくのもアホくさいので、Perlの「Calendar」モジュールで何とかならないかと思い調べてみました。 Calendarモジュ…

Coro::LWPを使ってPerlで非同期スクレイピング!

以前、よくわかってないながらAny::Eventの紹介記事を書きました。 Perlで非同期処理を行う - takepierrot Editor Note 正直、あれ以来ぜんぜん使っていません。Any::Eventは高機能なんでしょうが、いかんせん書くのが面倒くさいです。Any::HTTPを使いながら…

bigratを使った、Perlにおける分数計算とNaN

Perlで分数の足し算ができないかなあと思い、ちょっと調べてみました。 どうやら、「bigrat」というモジュールを使えば、分数の計算ができるようです。 #!/usr/bin/env perl use v5.16; use warnings; use utf8; use open IO => qw/:utf8 :std/; use autodie…

Vimで少納言をささっと見たい

さて、ここからが本題です。この少納言、とっても便利なのですが、いちいちサイトを見に行くのは面倒です。ぼくは原稿の編集・執筆にVimを使っており、Yahoo!辞書やWeblioの類義語辞典をVimから閲覧できるようにするためのプラグインを過去に作ってみました…

QRコードを印刷するとボケる!読み取れない?! アウトライン化でミスを防止せよ

QRコードのサイズ調整は難しい スマートフォンのアプリ紹介本・ムックなどの制作で、QRコードを扱う機会が増えています。このQRコード、作ること自体はたいして難しくないのですが、印刷に適したサイズにするのが非常に面倒です。と言いますのも、QRコード自…

表現例探しに最適! 少納言で最適な言い回しを探る

「少納言」というWebサイトはご存知ですか? 書籍や雑誌、白書といった文書から、膨大な書き言葉のサンプルを収集し、任意のキーワードで検索できるというサービスを提供しています。 KOTONOHA「現代日本語書き言葉均衡コーパス」 少納言要するに、さまざま…

全角英数字を半角に変換するVimScript

VimScriptといいつつ、いつもどおり基本的にPerlで作業しています。 tr演算子さえ使えば全角/半角の変換なんて簡単にできちゃいますからね。WindowsならActive Perlさえインストールしてしまえばすぐに使えます。 MacやLinuxなら当然Perlはプリインストール…

Perlでsetter/getterを楽に(動的に)定義する

簡単だけど面倒なPerlのオブジェクト指向プログラミング Perlのオブジェクト指向プログラミングは、「リファレンス」さえわかっちゃえば簡単に使える分、巷で言われているよりは意外ととっつきやすいんじゃないかと思います。しかし、とっつきやすいのはいい…

原稿の縦書き整形スクリプトを修正

以前、半角英数字で書いた原稿を一発で縦書き用の体裁に整形するスクリプトを書きました。 縦書きフォーマット変更スクリプト修正版 - takepierrot Editor NotePerlでの処理部分で、無意味にindexを使うとか、なかなかがんばっていたのですが、今考えると「t…

続・Vimで国語辞典を見る(同音異義語 対応版)

先ほど作った、Yahoo!辞書の国語辞典を閲覧するためのVimScriptですが、同音異義語や同じ表記だけど違う読みの語に対応しないのがどうもなあ……と感じ、ちょっと手を入れてみました。 http://takepierrot.hatenablog.jp/entry/2012/06/03/054938ちょっと長く…

Vimから国語辞典をチェックする

ライターや編集者にとってなくてはならないアイテムが辞書。 最近はYahoo!辞書のような便利なインターネット経由で利用できる辞書サービスも増えています。便利になったものです。しかし、そんな状況も慣れてくると不満が出てきます。 わざわざエディタから…

bash&Perl! ワンライナーでファイル名の置換リネームをお手軽に

SkitchでHistoryに保存したファイルをドラッグ&ドロップでエクスポートすると、拡張子の前に「-1」みたいな数字がついてきました。もともとこんな感じのファイル名だったのですが、 62-1.jpg 62-2.jpg 63-1.jpg 63-2.jpg 63-3.jpgエクスポートしたファイル…

perlbrewでPerl 5.16.0を入れてみた

Perl 5.16.0がリリースされたらしいですね。 perlbrewを使うと、ホームディレクトリに複数バージョンのPerlをインストールして使い分けられるという話を聞き、この際両方試してみるかと思い、昨晩挑戦してみました。ただ、さっそく試してみたはいいものの、…

表記のゆれを確認するスクリプト

前回の記事で考えた校正用のスクリプトをちょっと書いてみます。 辞書ファイルを用意するのが面倒だったので、ひとまずは表記ゆれのチェックのみです。 #!/usr/bin/env perl use 5.12.3; use warnings; use utf8; use open IO => qw/:utf8 :std/; use URI; u…

形態素解析と自分ルールの校正システムについて考えてみる

Yahoo!校正APIは統一表記のチェックとかが今ひとつという話を前回しました。しかし、無料で利用できるサービスに「自分の思い通りに動かない」なんてことを言っても仕方ありません。 ならば自分で作るしかありません。そこで、今回は一歩踏み込んで、自分ル…

原稿を簡単に校正してくれるモジュールを書いた

Yahoo!デベロッパーネットワークの校正支援APIを使って文章を構成してくれるモジュールを自作してみました。 Yahoo!デベロッパーネットワーク - テキスト解析 - 校正支援こちらがモジュールのスクリプト。 package Yahoo::Kosei; use 5.12.3; use warnings; …

原稿に連番を振るVimスクリプトを作った。

原稿に手順を指定する番号を振っていくのが面倒なので、「%a」「%A」の形式で指定した文字列に連番を振るVimスクリプトを作った。「%」のあとに異なるアルファベットを指定することで、アルファベットごとに連番を振ることができます。「%数字」に変換するの…

WindowsでもMacでもLinuxでもOK! PerlでさくっとQRコードを作ろうぜ

昔、Android関連の書籍でQRコードをひとつずつ手作業で作っていたことがあります。 刺身にタンポポをのせるのと同じような、なんだかむなしい感覚に襲われました。結局その後はPowerShellとコマンドラインで使えるQRコード作成アプリを組み合わせて何とかし…

MacでHomebrewを利用してGitをインストールするまで

HomebrewはMac OS X向けのパッケージ管理システムです。パッケージ管理システムというのは、ソフトウェアのインストール/アンインストールを簡単に行うための仕組みらしいです。Mac用のパッケージ管理システムには「MacPorts」というのもあるらしいですが、…

再帰呼び出しでN回連続した行を抽出する

行単位で文字列を比較し、N回連続した行を抽出するPerlのスクリプトを書いてみました。 練習がてら、あまり得意ではない再帰呼び出しを使っています。 #!/usr/bin/env perl use 5.12.3; use warnings; use utf8; use open IO => qw/:utf8 :std/; use Attribu…

Perlでコマンド置換を使ってみよう

bashやzshでは皆さんよく使っているであろうコマンド置換。 $ mv `ls | grep .txt | grep blog` Downloads/ みたいな感じで、バッククオートで囲んだところを実行して、コマンドの実行結果に置き換えてくれます。このコマンド置換、実はPerlでも使えるみたい…

Vimの補完機能について復習する

vim

CTRL-X CTRL-NとCTRL-X CTRL-Pくらいしか使っていなかったので復習。 意外とたくさんあるので驚きました。 補完機能 キーマップ 1. 行全体 CTRL-X CTRL-L 2. 現在のファイルのキーワード CTRL-X CTRL-N 3. 'dictionary'のキーワード CTRL-X CTRL-K 4. 'thesa…