読者です 読者をやめる 読者になる 読者になる

masatoz’s blog

プログラミングのメモ、日常の記録

高速ソート手法のシュワルツ変換はわりと簡単に実装できることがわかった

「すぐわかる Perlオブジェクト指向」からシュワルツ変換を取り上げます。 シュワルツ変換は、ソートを高速化するための方法です。 ソート対象の文字列の長さを最初に調べてインデックスをつくり、ハッシュの値にします。そのハッシュのキーにはソートする文…

Tie::Fileでテキストファイルをもっとかんたんに配列のように扱う

テキストファイルを全部読み込んで(または読込ながら)、文字列に処理を加える機会は多いと思います。 そんなとき、普通にテキストファイルを読みこむこともできるのですが、Tie::Fileモジュールを使うともっと簡単でした。 これもまたPerlクックブックで発…

Perlの組み込みモジュールText::Diffで差分をとってみる

シンプルなDiffツールのひとつとして 職場ではWindowsを使っていて、普段DiffをとるときはGUIなAraxis Mergeを使っています。1文字単位で差分を色分けして表示してくれるので、わかりやすく便利です。 とはいえ有料ソフトなので、だれでもが使えるわけではな…

Perl サブルーチンのレファレンスをつくる

テーマ サブルーチンをレファレンス化して実行してみる。 「わかりやすい Perlオブジェクト指向」第5章より。 サンプルコード my $codeRef = \&daikeiNoMenseki; my $menseki = $codeRef->(200,40,500); print "Area measurement: $menseki\n"; sub daikeiN…

VBA Dir関数でフォルダ内のファイルを取得する

よくやる処理だけど、全然おぼえられないので写経する。 Office TANAKA - Excel VBAファイルの操作[ファイルの一覧を取得する] Sub GetFiles() Dim buf As String Dim c As Long: c = 0 Dim fs() As String 'hoge以下にあるファイル一覧を取得したい Const P…

Perlで2次元ハッシュをつくる

ハッシュの中にハッシュを入れて2次元データ構造をつくってみる。 今回はハッシュのハッシュレファレンスにしてみた。 「すぐわかる Perlオブジェクト指向」(123ページ) サンプルコード use strict; use warnings; use DDP; my $hash_ref_with_hash; my $c…

Googleフォームから自動返信メールを送る

サンプルコード コードだけアップ。 メール本文のテンプレートをスプレッドシートから取得している。 スクリプトにハードコーディングすると変更しづらいのでこのほうがよいかと思う。 function sendMailFromForm(e) { // 件名、本文 var subject = "受付完…

正規表現で名前付きキャプチャを使う

正規表現パターンがある程度ややこしくなると、後方参照でキャプチャの順番を書くのが大変になります。 そこで番号ではなくて名前でキャプチャを指定できるという名前付きキャプチャを試してみました。 Perlでは(?<name>)とするとキャプチャに名前が付きます。 名</name>…

grepを使ってリストにマッチする要素が含まれるかを判定する

ループの代わりにgrepすると簡潔に書ける。 人の名前がはいったリストがあるとして、その中にFredさんがいるかどうかを確かめたい。 forループならこう書ける。 for my $person ( @people ) { next unless $person =~ /Fred/; $flag = 1; last; } grepを使う…

テキストファイルを一気に読み込む

Whileループじゃなくて一気に中身を変数にいれたいときはこうする。 my $str = do { open my $fh, '<', $file or die $!; local $/ = undef; <$fh>; }; local $/ = undefとやるとdoブロック内でのみ改行コードを無視できる。 readline関数が一度に読み取るの…

Perlで正規表現を使って日本語の文字列にマッチさせる

やりたいこと 日本語の文字列に含まれる任意の箇所にマッチさせたい。 はまったこと (、)をエスケープすることを忘れていた。 use Encode qw/encode/; # source text my $str = 'メッセージ "通信エラー"が表示されます。'; my $p = '通信エラー'; $p = enco…

AjaxをやるときのHTMLとサーバー側コードの書き方を整理する

Ajaxをやろうとして沼だったので、書いて整理したい。 jQueryで$.ajaxを使う一方で画面遷移が起こらないようにpreventDefaultでブラウザのリクエストを止めるか、そもそもHTMLでSubmitしないようにする必要がある。 NGパターン Ajaxなのに画面遷移してしまう…

ナビなしで高速道路を走れない

きのう名古屋市内の住まいから豊田市の実家に用事があり、急いでいたので高速道路でいった。 ナビに目的地をセットして車を出した。 しかしナビが示したのは一般道だった。走行中にルート変更できないヤツなので、ナビはあきらめて記憶とカンに頼って走るこ…

OmegaTの分節化規則: ピリオドの後で分節化するのを避けるには

OmegaTで英文を分節化するときにうまくいかなかったけど、今日発見があったのでメモします。 やりたいこと 英語で複数の文章を1文節とした場合にピリオドの直後に続くスペースで分節化しない。 NGケース: This. is. a. sample. sentence.という、通常ありえ…

夕食の量をへらしてみる

最近、春が来たということもあって、暖かいので、つられて延々と眠ってしまいがち。 週末なんて10時間以上も寝ている。二度寝、三度寝しているからなんですけどね。 春というのを別にしても、7時間は寝ないと調子が出ない。 もっと短い睡眠時間で元気に生き…

Text::XslateでTMを作ってみた

TMつくりが地味に大変 ある程度成果物がたまったら、訳文を翻訳メモリにして、再利用できるようにまとめておきたい。 CATツールにはOmegaTを使っていて、翻訳メモリはTMX形式だ。中身には原文、訳文、原文言語、訳文言語などが含まれていて、これらはXMLで構…

PerlのWAF Amon2で検索窓をつくってみる

Perlを勉強するかたわらAmon2でチュートリアル的なブログサイトを作っております。 さくらのVPSで。 さて、ブログを含めインターネットでよく見かける検索窓を自分のブログサイトにもほしくなりました。 そのあれをつくってみます。 HTML(index.tx) <form action="/search"> <input type="text" name="search_word"> <button type="submit" id="search">Search</button> </form>…

初めてのPerl 6章ハッシュ 練習問題1

プログラミングの参考書をなるほどなるほど、と読みすすめてみても、本を置き、書こうとすると出てこない。 本当に。 なので、まず書いてみようということで、どんどん手を動かしていこう。打ちながら、わからなくなったら本を開けばいい。 ということで、「…

初めてのPerl 練習メモ 第5章 入出力

なんでもブログに書くといいことがあると聞いて、雑でもいいから勉強の記録をUPしてみることにします。 今日は「初めてのPerl」の練習問題をやりました。5章 入出力です。 問1. やりたいこと 標準入力で入力した文字列をおしりから頭に向かって逆順にプリン…

食物不耐症の話

「ジョコビッチ本」との出会い たまたまジュンク堂名古屋栄店のB1でぶらぶらしてたとき、ジョコビッチ本を手に取りました。 ジョコビッチは、あの世界的テニスプレーヤーのことです。 ジョコビッチが実は小麦を食べると体調が悪くなる体質だったらしいです。…

Excelで正規表現を使って置換するためのマクロについて、メモ

今日仕事でいつものようにエクセルを使っているとき、エクセルってワイルドカード使えんかったっけ、とふと思い、ググった。 で、実はエクセルはごくごく限られたワイルドカードしかサポートしていなくて、ワードみたいにあれこれできんのだった。 みんなエ…

VBAでExcelワークシートの間違い探しをする(差分ハイライト)

事務仕事でよくなんかのチェックリストをエクセルで作りますよね。 で、チェック項目が完了したり、内容の変更があったりして、どんどん更新されていくわけです。 が、更新箇所を人力で探すのは大変です。 これをVBAで片付けちゃおう。 やり方: 1.ワーク…

好きな音楽について語ろう ~弱いうた編~

つかれたときによく聴く歌がある。 最近よいと思ったのはcoccoだ。数年前はcoccoの良さがわからなかった。鬼束ちひろの方が絶対いいと思っていた。だが、いまになってわかる。とてもいい。coccoは真実だ。 松崎ナオも好きだ。とくに「光が生まれる日まで」(…