2011年3月10日木曜日

はてなブックマークが ajax に変更されている

Firefox で RequestPolicy を導入しているので、他のドメイン(st-hatena.com)にある JavaScript のコードから ajax でブックマークのエントリーを取得されても何も表示されなくてこまる。

Firebug の [接続タブ] で確認すると、どうやら次のような URL でブックマークのエントリーを取得しているらしい。

http://b.hatena.ne.jp/(Hatena ID)/fragment?tag=(Tag name)

直接アクセスしてみたら問題なく表示されたので、元のページからエントリーデータのページへ移動するブックマークレットを作ってひとまず回避。

bookmarklet
javascript:var a=/^(http:\/\/b\.hatena\.ne\.jp\/[^/]+\/)(.*)$/.exec(location.href);location.href=a[1]+'fragment'+((a[2]&&a[2]!='')?'?tag='+a[2].replace(/\/$/,'').split('/').join('&tag='):'');

2011.03.11 追記

ブックマークレットで移動した先のページを開いているときに st-hatena.ne.jp を RequestPolicy で許可したら Favicon がリピートして気持ち悪いことに。。。

Stylish で次の css を導入して解決。

Stylish
@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain("b.hatena.ne.jp") {
  h3.entry { background:no-repeat; padding-left: 20px; }
}

2011.04.11 追記

cookie を削除したら ajax を使わない元のはてなブックマークに復帰。
何かの弾み(何かクリック?)で ajax 機能のスイッチが入ってしまっていたみたい。

タグ一覧の右上にある [クラウド(or リスト)表示に切り替え] ボタンをクリックしていたら、 また ajax に。。。

b.hatena.ne.jp の Cookie を覗いてみると "fast" 項目が、値 "1" で追加されている。
どうやらこれが ajax 機能のスイッチみたい。

2011年3月4日金曜日

window.open() していたブックマークレットが新しいウィンドウで開かなくなった

いつもは新しいタブで開いて、ここぞという状況では新しいウィンドウで開いてくれていたのに、何かのきっかけで、すべて新しいタブで開くようになってしまった。 ※ 環境:Firefox 3.6.14/Windows XP

bookmarklet
javascript:void window.open(
 "about:blank"
, "_blank"
, "width=300,height=400,scrollbars=yes");

次のページの

「新しいウインドウではなく新しいタブで開く」の「注意」には、次のように書かれている。

注意: 一部の指定されたサイズでのみ正しく表示されるページのために、このオプション設定 が無視されることがあります。リンクを新しいタブに開くようにしていても、新しいウインドウのサイズがページ作者によって指定されていると、リンクが新しいウインドウで開かれます。

やっぱり、新しいウィンドウで開いてくれてもよさそうな感じの説明。

あれこれ検索していたら、次の記述を発見。

リンクが window.open の時、サイズ指定がある時はウインドウで開く 「browser.link.open_newwindow.restriction」を「2」にする。
  • (bowz.info) [ Firefox ] target="_blank" のリンクを現在のタブで開く方法 | Bowz::Notebook
    → http://bowz.info/817#extended

日本語で検索できるページを作ってくれている事に感謝しつつ browser.link.open_newwindow.restriction を検索

"about:config" で "browser.link.open_newwindow.restriction" を "2" へ設定して回復。

2011年2月23日水曜日

分単位で実行するための項目を crontab に追加

5分毎に /etc/cron.5minsly/* を root で実行する

/etc/crontab
 :
 :
*/5 * * * * root run-parts /etc/cron.5minsly
 :
 :

ディレクトリの作成とサービスの再起動

bash
# mkdir /etc/cron.5minsly
# service crond stop
# service crond start

tidy コマンドラインオプション(とりあえず用)

tidy -<charcode> -asxml -i -w 0 -o <output> <input>
  • -<charcode> { iso2022 | shiftjis | utf8 }
  • -asxml : convert html to xhtml
  • -w 0 : wrap なし
  • -o <output> : 出力ファイル
  • <input> : 入力ファイル

参照

ヘルプ

bash
$ tidy --help
tidy: file1 file2 ...
HTML 整形ユーティリティ
http://www.w3.org/People/Raggett/tidy/ を参照

tidy (1998 年 9 月 1 日版) のオプション
  -indent または -i  エレメントの内容をインデントする
  -omit   または -o  省略可能な終了タグを省く
  -wrap 72           テキストを 72 文字目で改行 (デフォルトは 68)
  -upper  または -u  タグを大文字にする
  -clean  または -c  font, nobr, center タグを削除
  -raw               128 以上の文字を出力時に変換しない
  -ascii             入力に Latin-1、出力に ASCII を使用
  -latin1            入出力に Latin-1 を使用
  -iso2022           入出力に ISO-2022 ベースのエンコードを使用
  -utf8              入出力に UTF-8 を使用
  -modify または -m  元のファイルを修正
  -errors または -e  エラー表示のみ
  -f <file>          エラーを <file> に出力
  -xml               入力が XML の場合に使用
  -asxml             HTML を XML に変換
  -help   または -h  オプション一覧
デフォルトでは入出力にそれぞれ標準入出力を使用
以下のように-f 以外の一文字オプションは組合せ可能:
   tidy -f errs.txt -imu foo.html

HTML に関する詳しい情報は "Raggett on HTML" 参照,
(c) 1998, Addison Wesley Longman, ISBN 0-201-17805-2

2011年2月21日月曜日

css で気をつけること - display:inline-block

メモ

  • Gecko 1.9(Firefox 3) からサポート。
    ※ 参照: (mozilla.org) display - MDC Doc Center
    → https://developer.mozilla.org/en/CSS/display
  • IE7 (以下?)は、インライン要素への適用をサポート(block 要素へ適用しても効かない)。
    ※ 確認 IE7/Windows XP
  • IE7 (以下?)は、ブロック要素へ display:inline;zoom:1; を適用することで代用。
    (yomotsu.net) 「書籍などに紹介されていない display : inline-block について」
    → http://www.understandard.net/css/css008.html
    ※ スタイルシートを使用しない方が読みやすいかも (2011.02.22 追記)
  • IE7 (以下?)で display:inline;zoom:1; を適用することで逆に起こる問題について。
    (webtech-walker.com)「hasLayoutプロパティがtrueで発生するバグ - Webtech Walker」
    → http://webtech-walker.com/archive/2007/11/27033016.html
    ※ (2011.02.22 追記)

検証用

iframe

iframe 文書の HTML

Source
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
 <title>display:inline-block</title>
 <style type="text/css">
  * { font-size:100%; }
  body { font-family:arial; sans-serif; }
  body>div { margin-bottom:0.5em; }
  .div, .span {
   display:inline-block;
   padding:0.2em 0.5em;
   border:solid 1px gray;
   font-weight:bold;
  }
  div.block { border:solid 1px gray; padding:1em; }
 </style>
 <!--[if lte ie 6]><style type="text/css">
  body div { margin-bottom:0.5em; }
  body * div { margin-bottom:0; }
 </style><![endif]-->
 <!--[if lte ie 7]><style type="text/css">
  .div, .span { vertical-align:middle; }
 </style><![endif]-->
</head>
<body>
 <h1>display:inline-block</h1>
 <div class="block">text element<div class="div">div style="display:inline-block;"</div>text element</div>
 <div class="block">text element<span class="span">span style="display:inline-block;"</span>text element</div>
</body>
</html>

XSLT - テンプレート

XSLT

Source
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns="http://www.w3.org/1999/xhtml">

<xsl:output
  method="html"
  encoding="utf-8"
  omit-xml-declaration="no"
  doctype-public="-//W3C//DTD XHTML 1.1//EN" 
  doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"/>

<xsl:template match="/">
  <xsl:apply-templates select="html"/>
</xsl:template>

<xsl:template match="@*">
  <xsl:copy/>
</xsl:template>

<xsl:template match="node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>

</xsl:stylesheet>

Preview

iframe

XSLT Capsulized XHTML

XSLT でカプセル化した XHTML

source
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="#"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns="http://www.w3.org/1999/xhtml">
<xsl:output
  method="html"
  encoding="utf-8"
  omit-xml-declaration="yes"
  doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
  doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>

<xsl:template match="xsl:stylesheet">

<html xml:lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>xslt capsulized xhtml</title>
  <style type="text/css">
    /*@import url(style.css);*/
    body { font-family:arial, sans-serif; }
  </style>
</head>
<body>

<h1>xslt capsulized xhtml</h1>

</body>
</html>

</xsl:template>
</xsl:stylesheet>

Preview

iframe