【プログラミング】

読書メーターのブログ・パーツ

久しぶりのプログラミングねた。
と、言うか、このブログのタイトルは「プログラマ ずんべ の日記Ⅱ」という事で、プログラムねたがけっこう出てこなければいけないと思うのだが、このブログをスタートしてから2年ちょっとの間で、カテゴリ「プログラミング」の投稿数は、この投稿を含めて、わずか5件…。orz
もうちょっとプログラムねたを頑張らないといけないな。

さて、ずんべ は、何年か前から読んだ書籍の記録と書評を「読書メーター」にアップしている。

読書メーター

このブログに、読書メーターのブログ・パーツを貼ってみた(右サイドバーの一番下)のだが…ん~、使えない。

bm1

一番下のパーツが読書メーターのブログ・パーツで、一見すると、きちんと表示されているように見えるのだが、実は表示されている数値がぜんぜん違う。
このエピソードを書いている時点での、正しい数値はこちら。

bm2

このブログにも、少し前からブログ・パーツを貼っていたのだけれど、どれだけ書籍を登録しても、最初にブログ・パーツを貼った時に表示された数値のままで、まったく更新されない。
読書メーターのサイト上にある不具合報告のBBSでも、この不具合は散々報告されているが、一向に修正される気配がない。
待っていても修正されそうにないので、自分で開発してしまう事にした。

と、言っても、読書メーター側に「読んだ本」と「読んだページ」の値を取得するようなAPIがあるわけではないので、姑息な方法を使ってデータを得るしかない。
幸い、読書メーターは、自分のマイページにはログインなしでアクセスでき、そのページ中に「読んだ本」と「読んだページ」が表示されている。

zunbeさんの読書メーター

そこで、マイページを ajax で読み込み、ページ内に記述されているHTMLから「読んだ本」と「読んだページ」を解析して(解析と言っても、正規表現をちょろっと書いて抜き出すだけなのだが)表示する事にした。

そんなわけで、さくっとJavaScriptのモジュールを作って組み込み。

bm3

と、いう事で、正しい数値が表示された。

読書メーターのページのHTMLを解析しているのだから、読書メーターが表示を変更すれば、まったくデータが取れなってしまうのだけれど、まぁ、このブログで表示できなくなるだけの事なので、ヨシという事にする。

便利ツール Windows PowerShell版

このエピソードの続き。

便利ツール – ドットファイル作成
便利ツール – ファイル・バックアップ

先に作ったツールは Windows Scripting Host(WSH)で作成したのだが、今回は、これらの便利ツールを Windows PowerShell で作り直してみた。
Windows Scripting Host で作成したもので、動作的にはまったく問題ないのだが、これまで、Windows PowerShell でスクリプトを組んだことがなかったので、勉強がてら作ってみた。

todotfile.ps1
fbackup.ps1

Windows Power Shell は、プログラム中で変数への代入とパイプラインでの転送を統合した形で実装されており、興味深い実装なのだが、ちょっと慣れが必要だ。

プログラムの使い方は WSH 版と基本的に同じ。

PowerShell todotfile.ps1 file1 file2 file3 ...
PowerShell fbackup.ps1 file1 file2 file3 ...

で、コマンドラインで使うのはメンドクサイので、これを「送る」に入れて使う。
こんな感じに。

便利ツール PowerShell版

実行!

便利ツール PowerShell版

PoweShell をはじめて使ってみたけど、なかなか面白い言語だった。
もう少し勉強してみよう。

なお、プログラムはダウンロードして自由に使って頂いて構いませんが、自己責任でお願いします。

便利ツール – ファイル・バックアップ

ずんべ の会社では、プログラムやデータなど、ファイルを更新する際は、オリジナルのファイルに「年月日」を付加してバックアップする規則になっている。

たとえば、「test.cgi」というファイルをバックアップする場合は、「20140702.test.cgi」というファイル名でバックアップする。
UNIXのコマンドラインで言うと、以下のようなコマンドを実行するイメージ。

$ mv test.cgi 20140702.test.cgi
$ cp 20140702.test.cgi test.cgi

なぜ、単に cp だけするのではなく、わざわざ mv してから cp して書き戻すのかというと…

バックアップは、可能な限りオリジナルを保存しておく

という考えによるもの。
環境によっては、コピーすると、パーミッションやタイムスタンプが失われてしまう可能性があるので、mv してオリジナルを保存した上で、cp して書き戻している。

操作としては mv して cp するだけなので、際立って面倒な作業というわけではない。
Windows上で操作する場合では、「オリジナルをリネーム」→「ファイルをコピー」→「コピーしたファイルをオリジナルのファイル名にリネーム」という手順になり、少し手順が増えるものの、やはり、際立って面倒な作業というわけではない。
とは言え、可能な限り作業は簡略化したいし、細かい事であっても、自動化できるところは自動化したい。

と、いう事で、Windows環境で使える便利ツールを作ってみた。

fbackup.vbs

コマンドラインでは、以下の様に使用する。

cscript fbackup.vbs file1 file2 file3...

で、コマンドラインで使うのはメンドクサイので、これを「送る」に入れて使う。
こんな感じに。

送る

実行!

送る

自分で言うのもナンだが、便利だ。(^^)

なお、プログラムはダウンロードして自由に使って頂いて構いませんが、自己責任でお願いします。

便利ツール – ドットファイル作成

WEB関連の仕事をしていると、「.htaccess」というファイルに触れる機会がある。

UNIXでは、「.」という文字は基本的に英数字と同じように扱われるので、普通にコマンドラインなどで「.」から始まるファイル名にする事ができる。
Windowsでは、「.」は、拡張子を表すための区切り文字として扱われるため、「.」から始まるファイル名を作ろうとすると、「ファイル名なし+ドット+拡張子」となってしまい、エクスプローラ上の操作などでは、「.」から始まるファイルを作成する事ができない。

「.」から始まるファイルは作成できない

メモ帳などのエディタを起動して、「名前を付けて保存」などの操作で「.」から始まるファイルを保存する事はできるが、いちいちエディタを起動してこの操作をするのは、ちょっとメンドクサイ。

名前で付けて保存

もっと簡単にWindows上で「.」から始まるファイルを作成できないだろうか。

と、いう事で、Windows環境で使える便利ツールを作ってみた。

todotfile.vbs

コマンドラインでは、以下の様に使用する。

cscript todotfile.vbs file1 file2 file3...

で、コマンドラインで使うのはメンドクサイので、これを「送る」に入れて使う。
こんな感じに。

送る

実行!

送る

自分で言うのもナンだが、便利だ。(^^)

なお、プログラムはダウンロードして自由に使って頂いて構いませんが、自己責任でお願いします。

jQueryの filter() で小ハマリ

jQueryの filter() で小ハマリしたのでメモ。

jQueryで filter() を使用した時に、「div」「span」などのタグに記述した name 属性の値が参照できないという現象に遭遇した。
たとえば、以下のようなHTMLがあるとする。

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript" SRC="jquery-1.10.2.min.js"></SCRIPT>
</HEAD>
<BODY>
<DIV NAME="HELLO_NAME" ID="HELLO_ID">Hello,World!</DIV>
</BODY>
</HTML>

これに対して、以下のjQueryのコードを実行してみる。

<SCRIPT LANGUAGE="JavaScript">
var aryItems;
aryItems = $('*').filter
(
    function ()
    {
        return (('name' in this) == true) ? this : null;
    }
);
alert(aryItems.length);
</SCRIPT>

このフィルターでは、name属性を持つ、すべての要素を取得しているはずなので、最後にダイログで表示される値は「1」を期待している。
ところが、実際に実行すると、なぜか「0」と表示される。
なぜだ?

filter() の関数内で以下の alert() を挿入してみる。

alert('NAME=' + this.name + '\nID=' + this.id);

id属性は取得できるが、name属性は undefind と表示される。

name属性はundefined

なぜだ?

いろいろWEBを漁ってみたところ以下のような資料を発見した。

Index of the HTML 4 Attributes

表の左端(Name)列を下に探していき、「name」のあたりを参照してみると、divタグにname属性は定義されていない。
どうやら、本来、divタグにname属性は指定できないようだ。
知らなかった…。

そういう事なら仕方がないと思うのだけれど、どうしても name で引っかけたい。
なんとかならないだろうか。
いろいろ試行錯誤したところ、以下のセレクタであれば、ヒットさせる事ができた。

var aryItems;
aryItems = $('[name=HELLO_NAME]');
alert(aryItems.length)

どうしてこれならヒットするのかと、ちょっと納得いかないけれど、仕方がないと割り切る事にした。

広告

まとめページ

取得した資格
登った山

広告

サイト内検索

WordPress

最近のコメント

広告

RSS

RSS 記事
RSS コメント
Server offered by
有限会社パテンティックソフトウェア
Profile for zunbe