M.C.P.C.

―むり・くり―プラスコミュニケーション


« 2011年2月 | トップページ | 2011年4月 »

2011.03.31

Disc Stakkaが終売になっていた……

CDやDVDなどの12センチディスクを100枚収納でき、データベースで管理して目的のディスクを取り出すことができる男の子ならロマンを感じる製品、Disc Stakkaを2台持っているのですが、

イメーション株式会社|Disc Stakka(ディスクスタッカ) [www.imation.co.jp]

販売終了になっていました……

Amazon.comならまだ買えるんですが……

まだ普通に売っていた当時は、ちゃんとしたプロモーションページとかもあって、当分販売が継続されるものだと思って購入したのですが……

User Report イメーション株式会社|Disc Stakka(ディスクスタッカ) [www.imation.co.jp]

どうするんだろう……

[パソコン・インターネット] | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

2011.03.30

Twitterで#をハッシュタグと認識させないようにするには、HTMLの数値文字参照#を使う。

(2012-05-25 17:09訂正)

上記日付時点で試してみたら、TwitterのWeb表示での数値文字参照の表示はできなくなっていますので、記事を修正しました。

一般的なウェブの投稿で流用できる技であり、論旨は後半の「印刷業界で数値文字参照みたいなものが使えるようになるといいね」というものですので、記事として残しておきます。

なお、最近、「InDesignでCIDコードを入力しておいて、あとから文字に変換するスクリプト」の動きが出ているようです。先方作者さんから絶縁言い渡されているのでリンクできないのが残念ですが……

~~~

あんまり気にしている人はいないと思うんですけれども、Twitterで適当なローマ字単語の前に#を付けると、ハッシュタグとして認識されるわけですけれども、それを防ぐためには、HTMLの数値文字参照「#」を使うとよいです。

Ochinko
▲ちゃんと数値文字参照で実体の文字が表示されているぜ

#でもいいじゃないか、と思うかもしれませんが、キーボードのフルキー側の1~9に合わせて!~)が、そのキーをシフトキーを押しながらタイプしたときに表示される記号と一致しているので、便利だと思いますよ。

実際、お手元のキーボードのフルキー側の「3」の上側には、「#」が書いてあると思います。それからすると、「&#x2」に、「3」をくっつけた、「#」が、「#」の数値文字参照ってことになります。

このTwitterへPOSTする時HTMLの数値文字参照を使うのを応用すると、@を@ もしくは@で入力することで、mentionとして認識されなくなります。

例えば、ServersMan@VPSについてTwitterで書き込むとき、そのまま「ServersMan@VPS」と書くと、@vpsさんにmentionを飛ばすことになりますが、「ServersMan@VPS」と書くと、セーフです。

数値文字参照はけっこう便利ですね! 僕は業界としては一応印刷業界に所属していますので、早くInDesignなどのDTPソフトで普通に使えるようになってほしいと思います。

[Web] | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

2011.03.29

福島の標準電波送信所が停波していて電波時計が自動で時刻合わせできなかった

会社のデスクに置いていた、iPod 3G似の電波時計(ものすごくパチモン、近くのスーパーで買った)が、買ってから3年目で電池が切れたらしく、ゲームウォッチの電池の入れ方を変にしたときのように画面がバグっていたので、こんなこともあろうかと用意してあったeneloopを入れて再始動させたのですが、電波時計のくせに、なかなか時間があってくれないなとか思っていたら、なんと地震により福島の標準電波送信所が停波していました!

電波時計の時刻情報を伝える標準電波(JJY)、福島県の送信所が送出を停止 - ニュース:ITpro

 情報通信研究機構(NICT)は2011年3月12日、福島県にある日本の標準時刻を伝えるための施設「おおたかどや山標準電波送信所」において、電波の送出を停止したことを明らかにした。福島原発に伴う避難指示に従い、3月12日19時46分に停波を実施したという。

電波時計だけなら、手動で合わせれば問題ないですが、ネットワーク機器の時刻合わせを電波時計にしている場合もあるのでしょうか、そういう場合は大変ですよね。

時刻合わせで思い出したのですが、PS3って、ネットワーク経由で時刻合わせする機能はあるのに、自動でやってはくれないんですよね。やっぱり、こういうコンソールは出回っている数が多すぎるので、自動で行うのは問題があるってことなんでしょうか。ブロードバンドルータのNTPサーバが福岡大学固定になっていて大変なことになった、ていう話もありましたし。

[日記・コラム・つぶやき] | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

2011.03.28

自分用ストップウォッチHTML

とあるキャラクターが作品内で発言し始めるタイミングを取得したかったので(いわゆるタイムライン上の時間を取りたかった)、ストップウォッチアプリとか探したんだけれどもめんどくさくなったので5分ぐらいで何とか作った。また必要になるかどうか知らないけれども、一応自分用として。

Filename: stopwatch.html

<html>
  <head>
    <script type="text/javascript">
    var t = 0;
    function click() {
      var now = new Date;
      if ( t == 0 ) { t = now;  }
      var d = (now - t);
      document.getElementById('t').innerHTML
        += ('0' + Math.floor(d / 60000)     ).slice(-2)
         + ':'
         + ('0' + Math.floor(d / 1000) % 60 ).slice(-2)
         + '<br />';
    }
    </script>
  </head>
  <body>
    <p id="t" style="width: 100%; height: 100%;" onclick="click()";></p>
  </body>
</html>

ブラウザに読み込ませて、何もないところを初回クリックでスタート、2回目以降は、初回からの経過時間を分秒で表示します。

見どころとしてはJavaScriptのゼロパディングぐらいかな。あとJavaScriptのモジュラスもよく忘れる。パーセント記号なんですよね。

ブラウザに時刻を表示させてどうするのか、っていう話ですが、ひととおり記録が終わった後、エクセルにコピペして注釈つけていきます。なにやら編集ソフトに突っ込めば一発なような気がしますが、とりあえず間に合わせで。

[Web] | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

2011.03.27

WWW::MechanizeやWeb::Scraperはmetaタグを見てデコードするが、charset=Shift_JISのコンテンツって実際にはCP932なので化けるのを防ぐEncode::Alias

WWW::MechanizeというPerlのウェブブラウザになりきるモジュールで、2006年9月の、バージョン1.21_01から、自動的にHTML文書のmetaタグなどからエンコーディングを取得して、デコードしてくれるのだけれども、オンライン上にあるほとんどのShift_JIS指定のHTML文書のほとんどが実際にはCP932(シフトJISのMicrosoft拡張)になっているために、文字化けしちゃうっていう問題があって、どうすれバインダー(未解決)っていうのを以前やりました。

M.C.P.C.: WWW::Mechanizeはmetaタグを見てデコードするが、charset=Shift_JISのコンテンツって実際にはCP932なので化けるじゃねえか問題

んで、おととい、東北電力の計画停電予定を公表するページのHTMLをYAMLに変換するやつを作ったのですけれども、

M.C.P.C.: 東北電力の計画停電予定告知ページのHTMLからYAMLに変換するPerlスクリプト

その際利用した、Web::Scraperでも同じ問題があったので、ちょっと調べてみたら、解決する方法を見つけました。

問題は、HTML文書がCP932で規定された範囲の文字(髙橋の「髙」、山﨑の「﨑」など)が使われているのに、metaタグでは、<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">とかしなくちゃいけないので、metaタグを真面目に参照すると、文字化けが起こるっていうことです。

これを解決するには、

cp932 vs. shift_jis - Bulknews::Subtech - subtech [g.hatena.ne.jp]

この手の話はよくみるけど、cp932 のほうがうれしいということであれば単純に

use Encode::Alias;
define_alias( qr/shift.*jis$/i  => '"cp932"' );
define_alias( qr/sjis$/i        => '"cp932"' );

としてShift_JISを cp932 のエイリアスにしちゃえばいいんじゃないのかなあ? ていうかこの例は perldoc Encode::Alias にでてくる。

ということで、Encode::Aliasを使って、他の場所でShift_JISをエンコーディングに指定しても、実際にはCP932を指定している、ということにしてしまえばいいのですね。

こうなります。

Filename: sjis.html(シフトJISで保存)

<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=Shift_JIS" />
    <title>髙橋~山﨑 テスト</title>
  </head>
  <body>
    <p>髙橋</p>
    <p>~</p>
    <p>山﨑</p>
  </body>
</html>

これを、前回のコード

use strict;
use warnings;
use utf8;
use WWW::Mechanize;
binmode STDOUT => ':utf8';
 
my $mech = WWW::Mechanize->new();
$mech->agent('Windows IE 6'); 
$mech->get('http://www.example.com/sjis.html');
print $mech->content();
 
exit;
 
__END__

で取得すると……

$ perl sjis.pl
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=Shift_JIS" />
    <title>��橋〜山�ア テスト</title>
  </head>
  <body>
    <p>��橋</p>
    <p>〜</p>
    <p>山�ア</p>
  </body>
</html>$

となってしまうのですが、

こういうコード

use strict;
use warnings;
use utf8;
use WWW::Mechanize;
binmode STDOUT => ':utf8';
use Encode::Alias;
define_alias( qr/shift.*jis$/i  => '"cp932"' );
define_alias( qr/sjis$/i        => '"cp932"' );
  
my $mech = WWW::Mechanize->new();
$mech->agent('Windows IE 6'); 
$mech->get('http://www.example.com/sjis.html');
print $mech->content();
 
exit;
 
__END__

で取得すると、

$ perl sjis.pl
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=Shift_JIS" />
    <title>髙橋~山﨑 テスト</title>
  </head>
  <body>
    <p>髙橋</p>
    <p>~</p>
    <p>山﨑</p>
  </body>
</html>
$

と平気です。

Encode::Aliasは、Shift_JIS(実際にはCP932)のHTMLをマニピュレートしなくてはいけない場合に必須っぽいですね!

[Perl] | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

2011.03.26

オフセット用インキも種類あるからなあ

インキ不足ヤヴァイネタを先日書きましたが、

M.C.P.C.: 混沌とした印刷インキ不足の世界にフォントの救世主が!

さらにニュース出ているみたいです。

インキ使用抑制を新聞協会に要請 印刷インキ工業連合会 :日本経済新聞 [www.nikkei.com]

雑誌や本の発行ピンチ インクも「紙」も品不足 (2/2) : J-CASTニュース [www.j-cast.com]

http://twitter.com/CLCLCL/status/51234765633892352

プロセスインキ「計画停電のご時世電気代かかるUVインキ使っている奴の気が知れない」UVインキ「そういうプロセスインキ自体原材料不足で生産できないじゃないか」→共倒れ

いろいろこまる。

UVインキが原材料的に入手状況がマシっていうのは裏取りしていない。UVインキ取引しているところの人が情報出してくれることを希望。

[印刷] | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

2011.03.25

東北電力の計画停電予定告知ページのHTMLからYAMLに変換するPerlスクリプト

東北電力のウェブサイトで発表される計画停電予定告知ページのHTMLを読み込み、プログラムで扱いやすいYAMLに変換して出力するスクリプトです(2011-03-25現在)。

Filename: tohoku-epco.cgi

#!/usr/bin/perl
 
use strict;
use warnings;
use utf8;
use Encode;
use Encode::Alias;
define_alias( qr/shift.*jis$/i  => '"cp932"' );
define_alias( qr/sjis$/i        => '"cp932"' );
use URI;
use Web::Scraper;
use YAML;
binmode STDOUT => ':utf8';
 
my $scraper = scraper {
    process '//ul/table/tbody/tr', 'plan[]' => scraper {
      process '//td[1]', day => [ 'TEXT', sub { s/[\x00-\x1f\x7f\s]//g; } ];
      process '//td[2]', sc1 => [ 'TEXT', sub { s/[\x00-\x1f\x7f\s]//g; } ];
      process '//td[3]', sc2 => [ 'TEXT', sub { s/[\x00-\x1f\x7f\s]//g; } ];
    };
};
my $res = $scraper->scrape( URI->new( 'http://www.tohoku-epco.co.jp.cache.yimg.jp/information/1182377_821.html') );
 
my ( $sch, $plan );
foreach my $item ( @{ $res->{ plan } } ) {
  if ( $item->{day} eq '' ) {
    $sch->[ 0 ] = $item->{ sc1 };
    $sch->[ 1 ] = $item->{ sc2 };
  }
  else {
    my $day = _date( $item->{day} );
    $plan->{ $day }->{ _duration( $sch->[ 0 ] ) } = $item->{ sc1 };
    $plan->{ $day }->{ _duration( $sch->[ 1 ] ) } = $item->{ sc2 };
  }
}
 
print "Content-Type: text/yaml; charset=utf-8;\n\n";
print Dump $plan;
exit;
 
 
sub _date {
  # input: 3月22日(火) output: 2011-03-22
  my $text = shift;
  my ( $date, $mday ) = split '(', $text;
  $date =~ s/[月日]/-/g;
  my ( $month, $day ) = split '-', $date;
  return sprintf( '%04d-%02d-%02d', 2011, $month, $day );
}
 
sub _duration {
  # input: 17:00~20:00 output: 17:00:00/20:00:00
  my $text = shift;
  my ( $start, $end ) = split '~', $text;
  return  $res = _hms( $start ).'/'._hms( $end );
}
 
sub _hms {
  # input: 9:00 output: 09:00:00
  my $text = shift;
  my ( $hour, $min ) = split ':', $text;
  my $sec  = 0;
  return sprintf( '%02d:%02d:%02d', $hour, $min, $sec );
}
 
__END__


あえてYahoo! Japanのキャッシュサイトから取得していますので、発表から1分ぐらい遅れることがあるようです。

実行例はこんなんです。

$ ./tohokuepco.cgi
Content-Type: text/yaml; charset=utf-8;
 
---
2011-03-19:
  09:00:00/12:00:00: 実施いたしません
  17:00:00/20:00:00: 実施いたしません
2011-03-20:
  09:00:00/12:00:00: 実施いたしません
  17:00:00/20:00:00: 実施いたしません
2011-03-21:
  09:00:00/12:00:00: 実施いたしません
  17:00:00/20:00:00: 実施いたしません
2011-03-22:
  09:00:00/12:00:00: 実施いたしません
  17:00:00/20:00:00: 実施いたしません
2011-03-23:
  09:00:00/12:00:00: 実施いたしません
  17:00:00/20:00:00: 実施いたしません
2011-03-24:
  09:00:00/12:00:00: 実施いたしません
  17:00:00/20:00:00: 実施いたしません
2011-03-25:
  09:00:00/12:00:00: 実施いたしません
  17:00:00/20:00:00: 実施いたしません
2011-03-26:
  09:00:00/12:00:00: 実施いたしません
  17:00:00/20:00:00: 実施いたしません
2011-03-27:
  09:00:00/12:00:00: 実施いたしません
  17:00:00/20:00:00: 実施いたしません
2011-03-28:
  09:00:00/12:00:00: 実施いたしません
  17:00:00/20:00:00: 実施いたしません
2011-03-29:
  09:00:00/12:00:00: 実施いたしません
  17:00:00/20:00:00: 実施いたしません
2011-03-30:
  09:00:00/12:00:00: 実施いたしません
  17:00:00/20:00:00: 実施いたしません
2011-03-31:
  09:00:00/12:00:00: 実施いたしません
  17:00:00/20:00:00: 実施いたしません
2011-04-01:
  09:00:00/12:00:00: 実施いたしません
  17:00:00/20:00:00: 実施いたしません
2011-04-02:
  09:00:00/12:00:00: 実施いたしません
  17:00:00/20:00:00: 実施いたしません
2011-04-03:
  09:00:00/12:00:00: 実施いたしません
  17:00:00/20:00:00: 実施いたしません
$

なお、東北電力の計画停電は予定の発表はされていますが、まだ実施されたことがありませんので、このスクリプトで対応できるかどうかは未知数ではあります。

応用すれば、JSONでも書き出せますので、東北電力の計画停電実施に連動してウェブサイトを書き換える業務を持っている人は、このスクリプトを工夫すると自動化ができると思います。

書式が変なのは、ISO 8601のフォーマットで書きだそうとしていたころの名残です。日付の扱いにDateTimeを使うと遅くなるので、やめました。

あと、APIとして設置しないのは、いま僕はフットワークが非常に悪い状態だから緊急でスクリプトを直せないからです。サーバに余裕があり、メンテナンスできる人は、APIとして設置してみてはいかがかと思います。

[Web] | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

2011.03.24

混沌とした印刷インキ不足の世界にフォントの救世主が!

ニュース:印刷インキ工連、インキの原材料調達困難な危機的状況を説明|PJ web news【印刷ジャーナル】 [www.pjl.co.jp]

「資材調達の環境がいつ改善されるのか、まったく見通しが立たないというのが実情。このような状況が継続すると、製品出荷が止まることも考慮せざるを得ない危機的状況にある。これまで印刷インキを供給してきたインキメーカー各社は、この未曽有の難局を打開すべく様々な可能性を追求し、あらゆる角度から全力で立ち向かってはいるが、今日、厳しい現実を突き付けられているというのが正直なところである」(印刷インキ工業連合会)とし、印刷物製作にあたって、インキ使用量抑制への配慮を求めている。

ついにニィス・エコフォントの出番だな!

使ってみました。

Nisecofont1

Nisecofont2

▲製品付属の使用許諾契約書から引用転載

どう見ても印刷不良です。こんなん使ったら印刷オペレータからはたきつけられると思うけれども、インキ使用量を減らす「エコ」のためだもんね……

ちなみに見やすいようにってPDFを作ってここに掲載するのは使用許諾契約書における第二次使用権となるので、フォント買っただけではできないのです。

[フォント] | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

2011.03.23

Yahoo! JAPANで、電力会社などのウェブページをキャッシュサーバに取ってくれている

地味によい。

Yahoo! JAPAN、行政機関や自治体、電力会社などのキャッシュサイト設置 -INTERNET Watch [internet.watch.impress.co.jp]

 ヤフー株式会社は22日、公共機関などのウェブサイトについて、キャッシュサイトの提供を開始したと発表した。行政機関や交通機関、災害情報サイト、電力会社 ライフライン/生活情報、原発関連情報、自治体のカテゴリーで、その数は現在180サイトに上る。

東北電力の計画停電は、今のところ、停電開始の1時間前または2時間前に実施の最終決定を下すというスタイルなのですが、その時間になるとアクセスが集中しウェブサイトが表示できなくなるので、停電実施の確認が取れず、自社サービスでのウェブサイトによる告知が遅れてしまうんですよね。

実際のYahoo! JAPANによるキャッシュページ一覧は

キャッシュを行っているサイト一覧 [pr.yahoo.co.jp]

で確認できます。これでちょっと業務が楽になったかな……

[Web] | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

2011.03.22

自宅サーバからVPSに移行してあったのでブレーカー落としても平気

ずいぶん前に自宅でMacMiniからMac OS Xを消去してLinuxを入れたマシンをサーバとして家庭でも外出先でも使えるようにしていたのですが、電気代が馬鹿にならないので、ちょっと前に、ServersMan@VPSを借りたわけです。

そんで、今東日本の電気が足りないから節電しろ、というタイミングにおいては我が家は自宅サーバがございませんので、とりあえず節電できているわけです。

そして、更にいいこととして、外出するときにブレーカーを落としても、自宅にサーバがないので平気になりました! ブロードバンドルータも無線アクセスポイントも外出時には必要ありませんし。

ただ、うちに帰ってきてからブレーカー上げるのをしばしば忘れる。これは慣れかなあ。

[パソコン・インターネット] | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

< 最後 « これより前10ä»¶ | 全件