「JRF 作成ソフトウェア」カテゴリ内の記事 このカテゴリをはてなブックマークに追加 このカテゴリを含むはてなブックマーク (初公開日順)

2018年1月 6日 (土)

Tweet Sig: ウェブ上の三文判?

This is a support page of the Tweet Sig (for the Mozilla Firefox or for the Google Chrome) and the Tweet Sig for Android. This page also supports the simple social page poster which is a Facebook web app and is used in the Tweet Sig. You can write comments on this page, even if you can't understand Japanese blow. If you need explanation of the extension in English, show the English main page of the Tweet Sig.

ブラウザ拡張 Tweet Sig を作った。Web Extension 規格に順って作ったので今後、様々なブラウザで利用できるようになるかもしれないが、今のところ Mozilla Firefox と Google Chrome でしか動かないようだ。

Tweet Sig の説明は、専用ページで行った。まずそちらを読んで欲しい。このページは「サポート」を行うのがメインである。

一応、ここでも軽く説明しておくと、Tweet Sig には、二つのモードがある。一つは、右クリックメニューで選ぶ(for PC)またはボタンを押す(for Android)ことで、セレクションの内容を投稿し、投稿した URL をクリップボードにコピーする。もう一つは、ボタンを押すことで、'#tweet-sig-in' の内容を投稿し、その URL を '#tweet-sig-out'にコピーするというものである。三文判程度の認証に使うことを想定している。

以前から私は、似た用途として、時間記録デバイスを提案している。それは、読み出しと追記のみができる USB メモリのようなデバイスで、契約文書を作ったとき、それをこのデバイスに書き込むと、その文書にデバイスメーカーによる署名が付されて、保存される…といった用途を想定している。

しかし、そのようなデバイスは今にいたるまで使われていない。それに替わるものとして、時間が記録されるもの…というと、Twitter などへの書き込みがあるな…として今回、このようなものを作ってみた。専用ページで書いたように削除ができたり非公開にできたりするのは不便だが、まったく似た用途に使えないわけではないと思う。

なお、このアドオンを作ったときの感想が [cocolog:88703123] に書いてある。

配布物


PC 用のアドオンは、AMO (Mozilla Add-ons) または Google Web Store のページから手に入る。Android 用は AMO for Android から手に入る。このページでは、一応、提出した際のソースのアーカイブを公開しておく。次のリンクが最新のもののはずだが、より以前のものはコメント欄をご参照いただきたい。

なお、tweet_sig.zip には manifest.json が含まれていない。かわりに manifest_for_firefox.json と manifest_for_chrome.json が含まれている。どちらかを manifest.json にリネーム(またはコピー)して使っていただきたい。
更新: 2018-01-06,2018-01-19
初公開: 2018年01月06日 17:12:04
最新版: 2018年01月19日 17:24:35

2018-01-06 17:12:01 (JST) in JRF 作成ソフトウェア Firefox JavaScript | | コメント (7) | トラックバック (0)

2017年12月27日 (水)

PP Interrupter Lite: GET をブロック

This is a support page of the PP Interrupter Lite (for the Mozilla Firefox or for the Google Chrome). You can write comments on this page, even if you can't understand Japanese blow. If you need explanation of the extension in English, show the English main page of the PP Interrupter (Original).

ブラウザ拡張 PP Interrupter Lite を作った。Web Extension 規格に順って作ったので今後、様々なブラウザで利用できるようになるかもしれないが、今のところ Mozilla Firefox と Google Chrome でしか動かないようだ。

PP Interrupter Lite の説明は、PP Interrupter (Original) の専用ページで行った。まずそちらを読んで欲しい。このページは「サポート」を行うのがメインである。

PP Interrupter Lite は PP Interrupter (Original) の機能制限版で、PP Interrupter (Original) がすべてのメソッドをブロックできるのに対し、PP Interrupter Lite は GET メソッドしかブロックできない。

一応、Original と Lite でサポートページを分けたが、こちらのページではなく、Original のサポートページに要望等を書き込んでもよい。

ここでも軽く説明しておくと、PP Interrupter Lite は特定の URL へのアクセスを一旦ブロックし、アドレスバーに表示されるアイコンのクリックによってそのブロックを解除するという汎用のアドオンである。このアドオンにより、自動的なリダイレクトの前に一旦ストップする習慣を作ることができる。このアドオンは、他のブロッカーと違い、悪意のあるサイトではなく、健全なサイトをブロックすることを目的とする。

PP Interrupter Lite は PP Authorizer の姉妹品で、現在の PP Authorizer が一般に使えない状況で、認証の前でアドレスバーのアイコンをクリックしなければならないという点で、PP Authorizer と似た操作を PP Interrupter Lite は実現する。もし、将来、健全なサイトが自動的なリダイレクトを禁じるようになったときには PP Authorizer の出番が来る。

PP Interrupter Lite は現実への対応だが、PP Authorizer は未来への投資である。しかし、PP Interupter Lite は汎用のため、PP Authorizer がなくても、 PP Interrupter Lite は動く。

Original のサポートページでは、ストップしたときにページが表示されるようにしたかったのだが難しかったと書いたが、メソッドを GET に限定すると難しくない。そうすることで、Original ではできなかった Google Chrome や Firefox for Android への対応ができた。

なお、このアドオンを作ったときの感想が [cocolog:88646381] に書いてある。

配布物


アドオンは、AMO (Mozilla Add-ons) または Google Web Store のページから手に入る。このページでは、一応、提出した際のソースのアーカイブを公開しておく。次のリンクが最新のもののはずだが、より以前のものはコメント欄をご参照いただきたい。

なお、ZIP には manifest.json が含まれていない。かわりに manifest_for_firefox.json と manifest_for_chrome.json が含まれている。どちらかを manifest.json にリネーム(またはコピー)して使っていただきたい。

GitHub にも登録してあるが、更新は、ここの更新のあと1日から3日遅れるかもしれない。

更新: 2017-12-27,2020-11-03
初公開: 2017年12月27日 20:30:49
最新版: 2020年11月03日 15:11:42

2017-12-27 20:30:50 (JST) in JRF 作成ソフトウェア Firefox JavaScript | | コメント (2) | トラックバック (0)

2017年12月 8日 (金)

PP Interrupter: 健全なサイトをブロック!?

This is a support page of the PP Interrupter. You can write comments on this page, even if you can't understand Japanese blow. If you need explanation of the extension in English, show the English main page of the PP Interrupter.

ブラウザ拡張 PP Interrupter を作った。Web Extension 規格に順って作ったので今後、様々なブラウザで利用できるようになるかもしれないが、今のところ Mozilla Firefox でしか動かないようだ。

PP Interrupter の説明は、専用ページで行った。まずそちらを読んで欲しい。このページは「サポート」を行うのがメインである。

Google Chrome 用または Firefox for Android 用に機能制限版の PP Interrupter Lite がある。そちらについてはそれ専用のサポートページがあるが、こちらに要望・質問を書き込んでもらってかまわない。

一応、ここでも軽く説明しておくと、PP Interrupter は特定の URL へのアクセスを一旦ブロックし、アドレスバーに表示されるアイコンのクリックによってそのブロックを解除するという汎用のアドオンである。このアドオンにより、自動的なリダイレクトの前に一旦ストップする習慣を作ることができる。このアドオンは、他のブロッカーと違い、悪意のあるサイトではなく、健全なサイトをブロックすることを目的とする。

PP Interrupter は PP Authorizer の姉妹品で、現在の PP Authorizer が一般に使えない状況で、認証の前でアドレスバーのアイコンをクリックしなければならないという点で、PP Authorizer と似た操作を PP Interrupter は実現する。もし、将来、健全なサイトが自動的なリダイレクトを禁じるようになったときには PP Authorizer の出番が来る。

PP Interrupter は現実への対応だが、PP Authorizer は未来への投資である。しかし、PP Interupter は汎用のため、PP Authorizer がなくても、PP Interrupter は動く。

このアドオンを作るキッカケとなったアイデアは [cocolog:88492515] に書いてある。そこでは、webRequest に関する拡張を調べていて難しそうだ…と書いていたが、よく読んでいるうちにどうもできそうなので作ってみた。当初は、ストップしたときにページが表示されるようにしたかったのだが難しく、 notifications の表示に留めた。

なお、このアドオンを作ったときの感想が [cocolog:88550595] に書いてある。

配布物


アドオンは、AMO (Mozilla Add-ons)の PP Interrupter のページから手に入る。このページでは、一応、提出した際のソースのアーカイブを公開しておく。次のリンクが最新のもののはずだが、より以前のものはコメント欄をご参照いただきたい。

GitHub にも登録してあるが、更新は、ここの更新のあと1日から3日遅れるかもしれない。

更新: 2017-12-08,2017-12-27,2020-11-03
初公開: 2017年12月08日 16:17:00
最新版: 2020年11月03日 15:11:14

2017-12-08 16:17:00 (JST) in JRF 作成ソフトウェア Firefox JavaScript | | コメント (7) | トラックバック (0)

2017年11月27日 (月)

PP Authorizer: 匿名的ログイン・匿名的支払いをサポートするアドオン

This is a support page of the PP Authorizer (for the Mozilla Firefox or for the Google Chrome). You can write comments on this page, even if you can't understand Japanese blow. If you need explanation of the extension in English, show the English main page of the PP Authorizer.

ブラウザ拡張 PP Authorizer を作った。Web Extension 規格に順って作ったので今後、様々なブラウザで利用できるようになるかもしれないが、今のところ Mozilla Firefox と Google Chrome でしか動かないようだ。

PP Authorizer の説明は、専用ページで行った。まずそちらを読んで欲しい。このページは「サポート」を行うのがメインである。

一応、ここでも軽く説明しておくと、PP Authorizer は、「Privacy-Protected なログインまたは支払いを実現するための構成要素の一つ」ということになっている。

「PPログイン(pplogin, Privacy-Protected login)」や「PP支払い(pppayment, Privacy-Protected payment)」という概念自体はずっと以前に私は《保証付き匿名ログインと即時銀行振込を可能にして! - プライバシープロバイダ API(仮称)》という記事で紹介し、また、《Statuses_Editor_Proxy.CGI - XMLRPC と OAuth を組み合わせた「ひとことサイト」ソリューション》で、その概念を使うためのブックマークレットを作ったりしていた。

なお、このアドオンを作ったときの感想が [cocolog:88492515] に書いてある。

配布物


アドオンは、AMO (Mozilla Add-ons) または Google Web Store のページから手に入る。このページでは、一応、提出した際のソースのアーカイブを公開しておく。次のリンクが最新のもののはずだが、より以前のものはコメント欄をご参照いただきたい。

なお、ZIP には manifest.json が含まれていない。かわりに manifest_for_firefox.json と manifest_for_chrome.json が含まれている。どちらかを manifest.json にリネーム(またはコピー)して使っていただきたい。
更新: 2017-11-27,2017-12-27
初公開: 2017年11月27日 11:54:57
最新版: 2017年12月27日 20:42:35

2017-11-27 11:55:00 (JST) in JRF 作成ソフトウェア Firefox JavaScript | | コメント (11) | トラックバック (0)

2016年1月 7日 (木)

The Proofs about Alpha-equivalences in Isabelle

Abstract


The word of "occurrence" in terms is useful to explain notions intuitively, which frequently leads proofs into ambiguous and inaccurate ones. With theorem provers on the computer like Isabelle, however, we can handle the proofs strictly and maybe complicatedly. In the archive I show, I proved notions of the lambda calculus on the computer especially about alpha-equivalence(s) handling with occurrences.

The second merit was that though I was lacking confidence about mathematics, I could affirm my proofs were correct because of theorem provers. However, I originally proved the proofs in Isabelle before 1998. When I have proved originally, I certainly have comprehended what I did. Now, I almost don't recognize what I do, but I rewrite the legacy proofs into the present style of the Isabelle2015. Though, I often consider proofs partly when rewriting leads to failure. I can't prove in the recommended style of Isar structured proof, but prove in the style of "apply ... done" proofs with tactics and tacticals.

The proofs about alpha-equivalence(s) of the lambda calculus include the proof of correspondence between the definition of alpha-equivalence using occurrences and that using inductive set, and proofs about connection of the usual notation and de Bruijn notation.

続きを読む "The Proofs about Alpha-equivalences in Isabelle"

2016-01-07 14:20:18 (JST) in JRF 作成ソフトウェア 関数型言語・定理証明器 | | コメント (3) | トラックバック (0)

2014年3月11日 (火)

JRF Flag Semaphore for NES Emulator を作った

私は『Monty Python』(日本版)の VHS ビデオを持っている。そのコントの中に大小さまざまな手旗で、会話というかストーリー(『嵐ヶ丘』)を紡ぐというものがあった。

大学時代、ブラウザは xmosaic か最新の netscape かというころ、ウェブのウィジェットを作るネタを考えていて、ふとそのコントを思い出した。そのころの知り合いが、入力された文字列を元に 3D で文字を表示できるようにしたりしたと聞いていた。私は、そういう技術面でのすごさを出せなくても、ネタ的にクスッと笑えるようなものとして、「手旗フォント」みたいなものを作りたいと思った。

続きを読む "JRF Flag Semaphore for NES Emulator を作った"

2014-03-11 08:00:00 (JST) in Perl ハード JRF 作成ソフトウェア JavaScript | | コメント (18) | トラックバック (0)

2014年2月 8日 (土)

hide_img.js:画像のクラス指定に順って閲覧を要クリック化する

暴力表現や性的表現を含むような画像で、「18禁」まではいかないが、「見たくないものを見ない権利」に多少配慮して、何か[おお]いはかけておきたいといったことがある。本サイトではそういうとき、img タグの class に sexual や violence を指定してやると、あとから JavaScript が要クリックの覆いをかけるようになっている。パスワードによる「閲覧制限」まではしない。

例としては《壁紙化:「moecco vol.31」 その1》だと、おとなしめなので覆いを(モデル活動を知らない家族以外の)誰が外してもそれほどの不快がないはず。私の、覆いをかける基準とか哲学みたいなのは、今のところ《デスクトップ壁紙公開についてのこのサイトのポリシー》のコメント欄が参照先になる。

使い方は、次をページ(ブログテンプレートとか)で CSS や JavaScript をロードしてる部分に足すだけ。ただし、私は下のように書かず、CSS はブログ全体のスタイルシートから @import するようにしている。

<style type="text/css">
  @import url('http://jrf.cocolog-nifty.com/archive/lib/hide_img.css');
</style>
<script type="text/javascript" src="http://jrf.cocolog-nifty.com/archive/lib/hide_img.js"></script>


もちろん、hide_img.jshide_img.css はダウンロードして自分のサイトに置いて使ったほうがいい。難しいことはやってないので、ソースを読めるなら、sexual や violence を指定したときの表示等も簡単に変えられるはず。

そして、ブログ記事等を書くときは、img タグに class="sexual" とするか、すでに class="nantoka kantoka" ってのがあれば class="nantoka kantoka sexual"みたいにスペースを開けて sexual を足すだけで機能するはず。このあたりは、自作の「電子小切手」的な広告非表示ツール No_Ad_URL と相性がいい。

ただ、このスクリプト、置き換えた要素の CSS 周りが難しくて、 vertical-align とか float 等のからみで相性良くないページとかはありそうで要注意。このスクリプトのひとことでの紹介は [cocolog:78822199] なんだけど、そこでは float がらみでハマった経験を書いている。

スクリプトのブラウザ対応状況に関しても注意が必要で、スクリプト自体は IE 6 でも動くんだけど、古い IE は CSS の opacity に対応してない。このスクリプトでは、画像を隠すのに CSS で opacity をまず 0.0 して、表示するときに、それを 1.0 にするというトリックを使う。JavaScript を OFF にしてると、opacity が 0.0 で画像が見れなくなり、IE 6 みたいに opacity が効かないと、覆うまでの時間差でチラっと見えちゃう。だから、私のサイトではその辺りの注意書きとして次のようなことをしている。

<style type="text/css">
#nonjs-warning { font-size: x-small; }
#opa-warning { font-size: x-small; opacity: 0.0; }
</style>

(…中略…)

<!-- 下をサブタイトル部分などに挿入 -->
<noscript><span id="nonjs-warning">JavaScript が OFF のため、機能が制限されています。画像が見えなかったり、要クリックの画像がいきなり見えたりする可能性があります。</span></noscript>
<script type="text/javascript">
<!--
document.write('<span id="opa-warning">本サイトには閲覧者が成人であることを前提にした画像があります。御不快、御寛恕願います。</span>');
-->
</script>

(…略…)


「素人」が自分のサイトで使うために作っただけなので、コード品質は「良い」とは言えないと思う。ただ、その程度なのでパブリックドメインが著者たる私の意志。商用だろうが改造しようが、お好きに使っていただいても私は文句言いません。

とはいえ、上で書いたように使う上で注意すべきことが多くて正直、他のサイトでは使いにくいと思う。普及させようとして設定する人と使う人が違うと、導入よりも class 指定のほうが敷居が高いかもしれず、もっと広く、大手がちゃんとした機能として導入するなら、「素人」の私のソースは使わないだろうし。機能の実現性を聞かれたときとかにプレゼンで使うにはいいかも…といったぐらいか。
更新: 2014-02-08,2014-02-12
初公開: 2014年02月08日 17:22:44
最新版: 2014年07月25日 11:16:35

2014-02-08 17:22:42 (JST) in JRF 作成ソフトウェア JavaScript | | コメント (3) | トラックバック (0)

gengou.js:日付を後付けで元号表示にする

ブログ記事の上の日付とかを西暦から元号に変えるための JavaScript。最初の紹介はいちおう [cocolog:78797141] になるが、ほぼ説明してない。このサイトで使ってるので、どういう感じになるかは PC でこのサイトを見てればわかるはず。使い方は、次をページ(ブログテンプレートとか)で JavaScript をロードしてる部分に足すだけ。

<script type="text/javascript" src="http://jrf.cocolog-nifty.com/archive/lib/gengou.js"></script>
<script type="text/javascript">
<!--
add_event_listener_rewrite_gengou("//div[@class='content']/h2");
add_event_listener_rewrite_gengou("//div[@class='sticky-entry']/h2");
-->
</script>


どの日付を換えるかは、上の add_event_listener_rewrite_gengou の引数の XPath で指定してるので、そこを変えればほぼどんなサイトでも使えるはず。

もちろん、gengou.js はダウンロードして自分のサイトに置いて使ったほうがいい。そのときは、内部で古いブラウザ用にここから取ってきた XPath のライブラリを使ってるので、それもいっしょに置いて、ソースの GENGOU_XPATH_JS で指定すること。(どうせならと、XPath 2.0とかを選ぶ人もいるかもしれないけど。)

ただ、このスクリプト、元号は直近の記事分は変わらないようになってて、「その日以降元号にする」という部分は、ソース直書きになる。そこはソース中の↓の "2014-02-12" を最新の日付に更新しさえすればいい。私は(生きてれば)だいたい3ヶ月ごとに更新していくはず。三つ組の最後の部分は終了日で、ネット時代になってからずっと平成なので null のまま、ソースには「ももくり三年」にちなんだ例が載ってて、"平成%(数)G年%(和)m%(数)d日" と指定して「平成二十六年如月十一日」と漢数字化するような例も載ってる。

var Gengou = [
  [null, "2019-04-30", null], 
  ["平成%(半)G年(%Y年) %_m月%_d日", "1989-01-08", null]
];


一番上でリンクしたひとことでも書いたんだけど、私が死んだあと誰かがここを引き継ぐと、デフォルトでは元号の表示が切れるわけで、そこは少し失礼にあたる。ずっと同じ元号のほうが失礼が薄いという考え方もあるのは知ってるが、私の後継者が万一現れたとき、よくわからないまま、この先のすごい高齢化社会において「新しく若い元号」を認めないような形になるのをむしろ避けたかった。

そういうことだから、このスクリプトを自分のとこにおけないと、私の更新が止まれば元号表示が止まっちゃう。こういうスクリプトの提供は政府がやってくれたら便利なんだけどね…。政府だと責任とか小回りの点で難しかったら、神社の団体とか、特定のデカい神社とかがやってくれたらありがたいのに。(いちおう、最新の JavaScript には Intl.DateTimeFormat とかいう機能があるらしいけど…。)

「素人」が自分のサイトで使うために作っただけなので、コード品質は「良い」とは言えないと思う。ただ、その程度なのでパブリックドメインが著者たる私の意志。商用だろうが改造しようが、お好きに使っていただいても私は文句言いません。
更新: 2014-02-08,2014-02-11,2019-02-21
初公開: 2014年02月08日 00:37:43
最新版: 2019年02月21日 00:26:38

2014-02-08 00:37:41 (JST) in JRF 作成ソフトウェア JavaScript | | コメント (3) | トラックバック (0)

2013年2月23日 (土)

HLPVIEW: プチコンmkII用の簡易アドヴェンチャーゲーム用ルーチン

ハイパーテキストという概念があり、現在の Web が(一部)実現したハイパーリンクのもとになった考え方という見方もある。NCSA Mosaic という最初のネットブラウザーがでてくる以前にも、Mac には HyperCard があったし、90年代のエロゲーの中には、システムを一般化して内部でリンクを辿っていくような処理をしているものもあった。

なんでエロゲーの話が出てくるかというと、私が最初にこの概念に触れたのがそのエロゲーの解析をしていたときだからであるというのは、内緒だ!と宣言しておく。(^^)

ゲーム作りに関心のあるようなゲーマーにとってみれば、そういうストーリーを選択して追うだけの「アドヴェンチャーゲーム」ならば、「プログラム」をしなくても良いという点に売りがある。この点、Web が広まるにつれて、そこかしこでそういうゲームにもっと出くわすようにも私は考えたんだが、そうならなかった。

そういったハイパーテキスト風のリンクを辿って文書を読むしくみを、簡単なものだが、プチコンmkII 用にも実装した。それが STACKLIB に含まれる hlpview.prg である。実際の文書例としては『易双六 PTC』の YSCHELP プログラムがそれになる。

続きを読む "HLPVIEW: プチコンmkII用の簡易アドヴェンチャーゲーム用ルーチン"

2013-02-23 09:53:30 (JST) in JRF 作成ソフトウェア プチコン | | コメント (2) | トラックバック (0)

2013年2月21日 (木)

STACKLIB: プチコンmkII用スタックライブラリ

プチコン(mkII)の SMILE BASIC には、いわゆる関数定義の方法はないが、 GOSUB & RETURN はある。GOSUB は、変数に入ったラベル名でも OK な優れものだが、引数を取れないので、引数や戻り値をどうやって返すかは、(自分で) 決めておく必要がある。

普通には、A1="A":A2="B":GOSUB @F1:PRINT R といった感じで、 A1,A2,A3... に引数を入れ、R に返すとでも決めればいいのだが、この方法だと呼び出されたときの引数の値が、デバッグ時に残らない。

そこで、コンパイラが吐くアセンブラでよく使うテクニックとして、スタックを使って、そこに変数を push して引数を渡す方法があるのだが、私はそれを採用することにした。

このテクニックの自然な拡張として、push pop で「ローカル変数」みたいなものも確保できる。実際、それをローカル変数と見なして「文法」チェックする(そしてQRコードを吐く) Perl スクリプトも書いた。

今回は、そのライブラリと Perl スクリプトを紹介する。

続きを読む "STACKLIB: プチコンmkII用スタックライブラリ"

2013-02-21 04:44:53 (JST) in Perl JRF 作成ソフトウェア プチコン | | コメント (7) | トラックバック (3)

「易双六 PTC」開発記

2013年正月明けに 3DS と共にプチコンをダウンロード購入。最初から作るものは決めていた。可能ならば、自作の(Web版の)『易双六』を移殖したい…。

しかし、その前には数々の困難が待ち受けるのであった。

続きを読む "「易双六 PTC」開発記"

2013-02-21 04:29:42 (JST) in JRF 作成ソフトウェア プチコン | | コメント (10) | トラックバック (1)

2012年2月 9日 (木)

cp_with_prefix.pl: ディレクトリ平坦化機能付きコピー

ハードのメディアプレイヤーで画像をランダムに閲覧したい。私が持っているメディアプレイヤーに限らず専用ハードのものはたいていそうだが、PC などのソフトではあった、zip にまとめられたものを見るようなことはできず、また、ディレクトリの構造を奥へ奥へと "recursive" に辿って見るような機能もない。フォルダ内のランダム再生はある。

そこでディレクトリ構造を平坦化(flattening)してコピーするような Perl スクリプトを書いた。

はじめはソースと同じファイル名(ベース名)で一つのディレクトリにコピーしたとき重複を避けるため、手動で接頭辞(prefix)を付けられるようにすれば十分かと考えたが、使うと面倒くさいので、-F オプションによって、ファイル名にディレクトリが含まれているとき、そのディレクトリ名を prefix とする機能も作った。

例えば、

$ perl cp_with_prefix.pl --prefix=p_ a/b/c.jpg d


…としたときは、d/p_c.jpg というファイルができる。

$ perl cp_with_prefix.pl -F a/b/c.jpg d


…としたときは d/a_b_c.jpg というファイルができる。

Cygwin の mv や cp の実装を参考に、xargs といっしょに使いやすいよう -t (ターゲットディレクトリ)オプションを用意した。

例えば次のように使う。

$ find dir1 dir2 -name '*' -print0 | xargs -0 perl cp_with_prefix.pl -F -t dir3


こうすると、dir1 や dir2 の下にあるファイルがリカーシブに dir3 の下にファイル名の重複が(ほぼ)なくなるようにコピーされる。

なお、私の最初に書いた目的にそった上で高速化するため、同じファイル名があったときはコピーせずスキップする。ちゃんと上書き(overwrite)して欲しいときは -f (force)オプションを付ければよい。スキップしている表示がうっとうしいなら、-q (quiet)オプションを付ければよい。目的がただの rename に近いため、コピーしたあとの日付けはソースと変わらないようにしている。

ファイル名とコンソールの文字エンコーディングについては、ソースの以下の部分をいじって欲しい。本当は、ロケールとかを使ってコーディングできれば美しいのだが、これまでの私の経験から言うと、オプションで指定してもらうか、今回のようにスクリプトをいじってもらったほうが話が早い。現在、 Cygwin の 1.7 系列の場合、ファイルシステムのエンコーディングが cp932 (Windows 用の Shift JIS コード)であっても、utf8 で処理される。昔の Cygwin であれば、utf8 の部分を、ファイル名では cp932 にコンソールでは euc-jp にすると、うまくいくかもしれない。

our $FILENAME_ENCODER = Encode::find_encoding('utf8') or die;
our $CONSOLE_ENCODER = Encode::find_encoding('utf8') or die;



配布物


これは、とても簡単なプログラムなので、数式のようにパブリックドメインなものとして扱っていただいてよい。こんなプログラマなら誰でも作れそうなものをプログラムできる人しか使えないであろう Perl スクリプトで公開する意義はないかもしれないが、こんな簡単な機能がググっても見つからないのも変なので公開することにした。

関連


スクリプト自体はパッと見つからないが、シェルで同じような機能を求めてる人はいそうだった。Windows なら高機能なリネームソフトはいろいろある。 iTunes とかもそういう機能がありそうだが、このような機能だけが欲しくて使っているとかありうるんだろうか?

Flexible Renamer》。Windows 用のリネームソフトの例。
更新: 2012-02-09,2012-02-11
初公開: 2012年02月09日 22:26:18
最新版: 2012年02月11日 19:10:51

2012-02-09 22:26:15 (JST) in Cygwin Perl JRF 作成ソフトウェア | | コメント (2) | トラックバック (0)

2012年1月 7日 (土)

ブログのバックアップ&「ひとこと」のクロスリファレンス

私の《ひとこと》サイトで「クロスリファレンス」を張ろうと思い立った。少し試した段階でスパム制限等のため時間がかかることがわかったので、その前に《ひとこと》を「ダンプ」つまりフルバックアップすることにした。

ココログの機能として、他所に移転するのを支援するために、バックアップの機能がもとからあるが、これは、元の URL やトラックバック URL、記事 ID などを記録しないため、今回の目的には適さない。少し迷惑かなぁと思いつつ、 XMLRPC と普通のページ読み込みの両方を使って、「フルバックアップ」するスクリプトを書いた。それが dump_blog.pl である。

このフルバックアップにもとづいて、当初は、URL マップみたいなのを XMLに書いて、Ajax で読み込もうかとも考えたが、私以外の場所で使うことを想定すると、これが巨大になることもありえるかもしれず、するとただでさえ重い《ひとこと》サイトがさらに重くなるかもしれないので、その方法は採用しなかった。代わりに単純に後向きの参照としてトラックバックを張ることにした。スクリプトでリンクを張っているため、検索エンジンにその密結合ぶりをアピールできてないことを疑っていたので、それを補う意味でもこの方法が良いと思われた。それを実現するのが、xref_trackback.pl である。

続きを読む "ブログのバックアップ&「ひとこと」のクロスリファレンス"

2012-01-07 14:28:08 (JST) in ウェブログ・ココログ関連 Perl JRF 作成ソフトウェア | | コメント (0) | トラックバック (0)

2011年6月 3日 (金)

Statuses_Editor_Proxy.CGI - XMLRPC と OAuth を組み合わせた「ひとことサイト」ソリューション

このアプリケーションは何?


ユーザーとして MovableTyle の機能を XMLRPC から使い、Twitter.com やはてな社が実装する OAuth をユーザー認証に用いることで、CGI のサーバーにリソース・セキュリティが乏しい場合でも、ユーザー追加型の「ひとこと」サイトを一般ユーザーが比較的安心して運用できる Web アプリケーションです。

MovableType のテンプレート、そのサーバーに置く Javascript、ユーザー側で起動する Greasemonkey JavaScript(Google Chrome の UserScript にも対応)、(ローカルで起動する) httpd で使う CGI Perl スクリプトから構成されます。

当初は、アバウトミーの「ひとこと」をココログプロへ移転するツールとして作られたため、その変換のための Perl スクリプトも添付されています。

配布される MovableType のテンプレートは「ココログプロ」用に調整されていますが、SSI が使える MovableType 環境に対応させるのは困難ではないでしょう。

続きを読む "Statuses_Editor_Proxy.CGI - XMLRPC と OAuth を組み合わせた「ひとことサイト」ソリューション"

2011-06-03 05:28:30 (JST) in ウェブログ・ココログ関連 Perl JRF 作成ソフトウェア JavaScript | | コメント (4) | トラックバック (2)

2011年4月23日 (土)

aboutme2cocolog: アバウトミーの「ひとこと」をココログプロへ移転するツール

2011年6月30日終了したアバウトミー(aboutme.jp)から、「ひとこと」のデータをココログプロに移転するために作ったツールです。このドキュメントは、移行の手順を示すものです。

あくまで私個人用に作ったもので、あまり多くの人が使うことを想定していません。よってツール類も個人的嗜好と私の労力削減に重きを置いたものになっています。移行まで時間もなく人数が少ないことが想定されるのでそうしていますが、逆に少ないからこそ、要望等にはかなり融通を[]かせることができると思います。要望・質問等はお気軽にお知らせください。

私の「ひとこと」はこのツールを使って↓に移行しました。「正式なオープン」は 2011年6月1日に決めてましたが、それまでに順次、移行は終っており、すでに Google で検索できるような公開の仕方をしていました。

なお、更新情報は現在ご覧の↓のページでご確認ください。

配布ツールをダウンロードするためのリンクは一番下のほうにあります。

続きを読む "aboutme2cocolog: アバウトミーの「ひとこと」をココログプロへ移転するツール"

2011-04-23 08:56:02 (JST) in ウェブログ・ココログ関連 Perl JRF 作成ソフトウェア HTML/XML/CSS JavaScript | | コメント (36) | トラックバック (4)

2010年5月22日 (土)

balance_mail_redirect:ランダムだが確実にメールが誰かに届くよう振り分けたい

本作は、ずっと以前からアイデアがあり、2005 年ぐらいに sendmail 等のメーラー用プログラムとして一端書き上げたが、組織で運用するようなチャンスもなく、そのままオクラ入りになっていた。死蔵していても無意味だし、せっかく sendmail 等がなくても Perl の標準ライブラリがあれば動くようにしているので、Net::SMTP を直に利用するサンプルとして、私の個人サイトにコソッと置いておくことにした。


要旨


random_mail_redirect は、たまにメールをリダイレクトする。

balance_mail_redirect は、最低何人、最高何人にランダムにメールをリダイレクトしたいときに使う。balance_mail_redirect は random_mail_redirect と違い、必ずメールを送ることが保証されている。

中小組織が、メーラーの /etc/aliases などにこのプログラムをフィルタとして使うことを想定している。

そのような組織において、balance_mail_redirect は秘書に仕事を振り分けるのに便利であり、random_mail_redirect は上司が直訴をたまに許すなど、部下のチェックをするのに便利であろうと想像した。苦情処理を分散させたい場合、メールの配送処理を分散複線化させたいときにも使えるかもしれない。


配布


本作はαバーションである。

今では珍しいかもしれないが、shar でまとめてある。このファイルをシェル上でスクリプトとして実行するなり、unshar すれば展開できる。ファイルとしては以下のものが入っている。

balance_mail_redirect.pl
random_mail_redirect.pl
README.alpha.txt


README.alpha.txt
は、この記事のもとになったもので、ほぼ同じものである。

続きを読む "balance_mail_redirect:ランダムだが確実にメールが誰かに届くよう振り分けたい"

2010-05-22 21:46:54 (JST) in Perl JRF 作成ソフトウェア | | コメント (0) | トラックバック (1)

2006年2月26日 (日)

native2ascii.pl をいちおう作ってみた

Firefox の .xpi をいじろうとすると、locale の部分で .properties の拡張子を持ったファイルを JAVA で使える形式にしないとダメなんだそうだ。そのためのコマンドとして native2ascii というものが JDK に入っているらしい。

ただ、それだけのために JDK を入れるのもバカらしいので、Perl のスクリプトを書いてみた。native2ascii.pl がそのファイル。

ものすごいテキトー。フィルタらしく一行づつ処理せず、ファイル全部をいったん読んで、一気に処理してる。--encoding=japanese と指定すると自動判別するんだけど、guess_encoding も最初の n バイトとかじゃなくて、全部わたして guess させてる。

まぁ、自分が使えりゃそれでいいし、ダメだったら JDK をすなおにインストールすればいいし。

更新

2006-02-28
Surrogate Pair に対応。
Javaにおける文字/文字列の扱い方》を参考に \uuXXXX に対応。
2006-02-26
公開。
更新: 06/02/26,06/02/28
初公開: 2006年02月26日 05:31:34
最新版: 2006年02月28日 03:47:16

2006-02-26 05:31:33 (JST) in Perl Windows アプリ JRF 作成ソフトウェア | | コメント (1) | トラックバック (1)

2006年2月22日 (水)

ddwin.el: Meadow から DDwin を使う

Meadow で電子辞書を使うには普通、Lookup を使うところなのですが、使えない辞書も多いようですし、更新も止まっているようなので、 DDwin32 に乗り換えました。

DDwin は起動時のオプションにより、簡単に既存のウィンドウで検索するよう指定できます。そこで突貫工事で Meadow から call-process 関数を使って DDwin に検索語を渡す Elisp を書きました。

他の誰かが作ってるかもしれませんし、Emacs 使いなら誰でも作れるレベルの物ですが、いちおう公開しておきます。

まず、DDwin 側で串刺し検索をするためのグループを作ってください。ここでは、「Meadow用」という名前だとします。

この ddwin.el をダウンロードして c:/Meadow/site-lisp 以下にでも置き、.emacs の適当なところに次の行を足してください。

(require 'ddwin)
(setq ddwin-dictionary-group "Meadow用")
(setq ddwin-dictionary-number "G1")
(global-set-key "\e\"" 'ddwin-search-word-at-point)
(global-set-key [M-mouse-3] 'ddwin-search-word-at-mouse)


これでインストールは終り。

あとは、M-x ddwin-search-word で、その後に単語を入力、または M-x ddwin-search-region でリージョンを指定して検索します。M-" を押すと、そのカーソル位置にある単語を検索します。

Alt を押しながらマウスの右ボタンを押すと、直前にマウスをドラッグしていればそのリージョン、そうでなければカーソル位置の単語が検索されます。メニューバーの Tools に DDwin を登録してあり、マウスのときとほぼ同じ動作をします。


ただし単語の切り出しは、「ひらがな」「カタカナ」「それ以外の日本語のワード」「日本語以外のワード」の続きしか判別しません。

ほとんどテストしてないので、不具合があると思います。何かあれば、ここにコメントしていただけるとうれしいです。

更新履歴

2011-05-13
call-process の前で sjis-dos を指定するようした。
2006-02-27
replace-regexp を関数から使わないようにした。
2006-02-26
独仏語の検索のために latin-1 のアクセント記号を抜くようにした。
2006-02-25
マウスに対応。
2006-02-21
'ー'に対応していなかったのと、判別のミスを修正。
2006-02-20
作成&公開


なお、Permalink に関しては http://jrf.cocolog-nifty.com/archive/ddwin-el.html をご利用ください。
更新: 06/02/20-06/02/27
初公開: 2006年02月21日 00:10:08
最新版: 2011年05月13日 20:57:55

2006-02-22 14:41:23 (JST) in Emacs/Meadow JRF 作成ソフトウェア | | コメント (0) | トラックバック (2)