2013.03.26
MTのグローバルモディファイアで、"sanitize"というものがあります。
ブログ設定の「HTMLを許可」に当たるもので、1(有効)と0(無効)で
指定できるのですが、特定のタグ以外を取り除く使い方もできます。
<$mt:EntryBody sanitize="b,br"$>
上記のようにすると、bタグとbrタグを残し、
それ以外のHTMLタグは全て消去して出力されます。
あまり使っていませんでしたが、
事故防止に使えるかも?
ブログ設定の「HTMLを許可」に当たるもので、1(有効)と0(無効)で
指定できるのですが、特定のタグ以外を取り除く使い方もできます。
<$mt:EntryBody sanitize="b,br"$>
上記のようにすると、bタグとbrタグを残し、
それ以外のHTMLタグは全て消去して出力されます。
あまり使っていませんでしたが、
事故防止に使えるかも?
2013.03.14
先日、Google Chromeでいくつかのログインフォームにて
ログインできなくなる問題が発生しました。
結果的にはChromeだけの問題ではなかったのですが、
自分のようにChromeの問題と思って調べている方のために
このように書いてみました。
■症状
Chromeでいくつかのログインフォームにてログインできなくなった。
他のブラウザでは普通にログインできる。
■原因
Kaspersky Internet Security 2013の「入力情報の漏えい防止機能」のせい。
http://support.kaspersky.co.jp/kis2013/error?print=true&qid=208291095
ここに書かれているように、Kasperskyの「入力情報の漏えい防止機能」には
銀行や決済システム以外のフォームでも起動してしまう場合があります。
また、起動中はShiftキーが効かなくなる不具合(?)もあるようです。
今回はデータベースにログインしようとしたのですが、
データベースのログインフォームでこの機能が起動してしまい、
しかもShiftキーが効かないためパスワードの大文字が入力できず
ログイン失敗してしまっていたんですね。
さらに、そのフォームで漏えい防止機能が起動したのはGoogle Chromeだけだったため、
原因を見誤って無駄に苦労しました。。。
■解決方法
Kasperskyの入力情報の漏えい防止機能をオフにするだけです。
「設定」>「データ入力の保護」と進んで、
「物理キーボードの入力をキーロガーから保護する」のチェックを外せばOK。
ログインできなくなる問題が発生しました。
結果的にはChromeだけの問題ではなかったのですが、
自分のようにChromeの問題と思って調べている方のために
このように書いてみました。
■症状
Chromeでいくつかのログインフォームにてログインできなくなった。
他のブラウザでは普通にログインできる。
■原因
Kaspersky Internet Security 2013の「入力情報の漏えい防止機能」のせい。
http://support.kaspersky.co.jp/kis2013/error?print=true&qid=208291095
ここに書かれているように、Kasperskyの「入力情報の漏えい防止機能」には
銀行や決済システム以外のフォームでも起動してしまう場合があります。
また、起動中はShiftキーが効かなくなる不具合(?)もあるようです。
今回はデータベースにログインしようとしたのですが、
データベースのログインフォームでこの機能が起動してしまい、
しかもShiftキーが効かないためパスワードの大文字が入力できず
ログイン失敗してしまっていたんですね。
さらに、そのフォームで漏えい防止機能が起動したのはGoogle Chromeだけだったため、
原因を見誤って無駄に苦労しました。。。
■解決方法
Kasperskyの入力情報の漏えい防止機能をオフにするだけです。
「設定」>「データ入力の保護」と進んで、
「物理キーボードの入力をキーロガーから保護する」のチェックを外せばOK。
2013.03.12
これまで、
・記事が所属しているカテゴリー
・記事が所属しているメインカテゴリー以外のカテゴリー
この2つはMTタグで取得できましたが、
何故か「記事が所属しているメインカテゴリー」を取得するタグは
ありませんでした。
(メインカテゴリーの名前とパスだけなら取得できました)
かなり不便に感じていたのですが、
実はMT5.1からはそのタグが追加されていたようです。
<mt:EntryPrimaryCategory> </mt:EntryPrimaryCategory>
または
<mt:EntryCategories type="primary"> </mt:EntryCategories>
上記のいずれかで、その記事が所属するカテゴリーの中で
メインカテゴリーのみを扱うことができます。
この調子でどんどん便利になってほしい。
・記事が所属しているカテゴリー
・記事が所属しているメインカテゴリー以外のカテゴリー
この2つはMTタグで取得できましたが、
何故か「記事が所属しているメインカテゴリー」を取得するタグは
ありませんでした。
(メインカテゴリーの名前とパスだけなら取得できました)
かなり不便に感じていたのですが、
実はMT5.1からはそのタグが追加されていたようです。
<mt:EntryPrimaryCategory> </mt:EntryPrimaryCategory>
または
<mt:EntryCategories type="primary"> </mt:EntryCategories>
上記のいずれかで、その記事が所属するカテゴリーの中で
メインカテゴリーのみを扱うことができます。
この調子でどんどん便利になってほしい。
2013.02.12
テキスト(複数行)のカスタムフィールドを出力するときの、
改行やpタグの制御についてです。
まず、テキストフィールドには下記のように入っているとします。
あいうえお
かきくけこ
さしすせそ
これを改行を活かして出力するには、
下記のようにします。
※本文の「改行を変換」と同様になります
<$mt:customField convert_breaks="1"$>
出力
--------------------
<p>あいうえお<br />
かきくけこ<br />
さしすせそ</p>
--------------------
逆にpタグやbrタグが入らないようにするには、
convert_breaks="0" とします。
<$mt:customField convert_breaks="0"$>
出力
--------------------
あいうえお
かきくけこ
さしすせそ
--------------------
単純に改行が<br>になってくれればいい!という場合は以下を使います。。
<$mt:customField nl2br="1"$>
出力
--------------------
あいうえお<br />
かきくけこ<br />
さしすせそ
--------------------
参考にしたサイトはこちら。
カスタムフィールドの段落と改行の制御について | タグ:カスタムフィールド | MovableType | いろいろコードスニペット
改行やpタグの制御についてです。
まず、テキストフィールドには下記のように入っているとします。
あいうえお
かきくけこ
さしすせそ
これを改行を活かして出力するには、
下記のようにします。
※本文の「改行を変換」と同様になります
<$mt:customField convert_breaks="1"$>
出力
--------------------
<p>あいうえお<br />
かきくけこ<br />
さしすせそ</p>
--------------------
逆にpタグやbrタグが入らないようにするには、
convert_breaks="0" とします。
<$mt:customField convert_breaks="0"$>
出力
--------------------
あいうえお
かきくけこ
さしすせそ
--------------------
単純に改行が<br>になってくれればいい!という場合は以下を使います。。
<$mt:customField nl2br="1"$>
出力
--------------------
あいうえお<br />
かきくけこ<br />
さしすせそ
--------------------
参考にしたサイトはこちら。
カスタムフィールドの段落と改行の制御について | タグ:カスタムフィールド | MovableType | いろいろコードスニペット
2013.02.06
●カテゴリーA
・サブカテゴリーA
・サブカテゴリーB
・サブカテゴリーC
●カテゴリーB
●カテゴリーC
上記のような構造で、例えばサブカテゴリーAのアーカイブページに、
親であるカテゴリーAの「カテゴリ月別アーカイブリスト」を出力しようとしても、
サブカテゴリーAのものが出力されてしまいました。
ソースは下記のような感じです。
<mt:TopLevelParent>
<ul>
<mt:ArchiveList archive_type="Category-Monthly">
<li><a href="<$mt:ArchiveLink$>"><$mt:ArchiveDate$></a></li>
</mt:ArchiveList>
</ul>
</mt:TopLevelParent>
散々悩みましたが、最終的には次のようにすることで解決できました。
<mt:BlogID setvar="blog_id">
<mt:Blogs include_blogs="$blog_id" ignore_archive_context="1">
<mt:IfCategory name="カテゴリー名">
<ul>
<mt:ArchiveList archive_type="Category-Monthly">
<li><a href="<$mt:ArchiveLink$>"><$mt:ArchiveDate$></a></li>
</mt:ArchiveList>
</ul>
</mt:IfCategory>
</mt:Blogs>
ブログIDからの指定にして「ignore_archive_context="1"」と入れることで、
アーカイブページでも全ての記事を参照できるようになるそうです。
・サブカテゴリーA
・サブカテゴリーB
・サブカテゴリーC
●カテゴリーB
●カテゴリーC
上記のような構造で、例えばサブカテゴリーAのアーカイブページに、
親であるカテゴリーAの「カテゴリ月別アーカイブリスト」を出力しようとしても、
サブカテゴリーAのものが出力されてしまいました。
ソースは下記のような感じです。
<mt:TopLevelParent>
<ul>
<mt:ArchiveList archive_type="Category-Monthly">
<li><a href="<$mt:ArchiveLink$>"><$mt:ArchiveDate$></a></li>
</mt:ArchiveList>
</ul>
</mt:TopLevelParent>
散々悩みましたが、最終的には次のようにすることで解決できました。
<mt:BlogID setvar="blog_id">
<mt:Blogs include_blogs="$blog_id" ignore_archive_context="1">
<mt:IfCategory name="カテゴリー名">
<ul>
<mt:ArchiveList archive_type="Category-Monthly">
<li><a href="<$mt:ArchiveLink$>"><$mt:ArchiveDate$></a></li>
</mt:ArchiveList>
</ul>
</mt:IfCategory>
</mt:Blogs>
ブログIDからの指定にして「ignore_archive_context="1"」と入れることで、
アーカイブページでも全ての記事を参照できるようになるそうです。
2013.01.08
製作用メモ。
jQuery/JavaScriptを高速化するための記述方法がまとめられています。
こういう、普段なかなか身に着けられない知識はとてもありがたい。
jQuery/JavaScriptの高速化テクニックまとめ
http://matome.naver.jp/odai/2134058372410380801
実践できていたのは1つ目と5つ目くらいでした。。
jQuery/JavaScriptを高速化するための記述方法がまとめられています。
こういう、普段なかなか身に着けられない知識はとてもありがたい。
jQuery/JavaScriptの高速化テクニックまとめ
http://matome.naver.jp/odai/2134058372410380801
実践できていたのは1つ目と5つ目くらいでした。。
2012.12.26
ボタンクリック時などのイベントハンドラの中で、
イベントが発生したムービークリップ自身を扱う書き方。
_btn.addEventListener(MouseEvent.CLICK, xClick);
function xClick(evt:MouseEvent):void {
var target_mc:MovieClip = evt.target as MovieClip;
}
上記のように書くことで、
_btn(クリックしたボタン)を「target_mc」として扱うことができます。
AS2からの移行で結構悩んだとこだったりします。
イベントが発生したムービークリップ自身を扱う書き方。
_btn.addEventListener(MouseEvent.CLICK, xClick);
function xClick(evt:MouseEvent):void {
var target_mc:MovieClip = evt.target as MovieClip;
}
上記のように書くことで、
_btn(クリックしたボタン)を「target_mc」として扱うことができます。
AS2からの移行で結構悩んだとこだったりします。
2012.12.12
Sassを勉強し始めました。
自分はmacユーザーなのですが、ターミナルを使うより簡単そうなので
Scoutをインストールしてみました。
下記からインストールできます。
※もちろんwinユーザーさんもつかえます!
Scout - Compass and Sass without all the hassle
左下の「+」ボタンから作成します。
ここではとりあえず「test」と設定。
右にある「Configure」から細かく設定していきます。
【Stylesheet Directories】
■Input Folder
元の「.scss」のファイルを入れるフォルダを選択
■Onput Folder
書き出す「.css」のファイルを入れるフォルダを選択
【Other Directories】
ここは、まだよくわかりません。
Compassで使うみたいです。
【Output Modes】
■Environment
Scoutが勝手に吐き出すコメントの有無の設定です。
「Deveropment」だとどのscssファイルの何行目だよみたいな
下記のようなコメントが出てきます。
/* line 13, sass/style.scss */
「Production」にすればコメントは吐き出されません。
■Putput Style
書き出されるCSSのフォーマットを指定することができます。
「Expanded」CSSと同じように
「Compact」シングルライン
「Compressed」圧縮されるので容量は軽いですが解読難しい感じに。
「Nested」ネストされます
【Manage Project】
■Remove Project
「Remove」というボタンのみです。
これを押すと何の確認もなく消えます。ご注意を!
自分はmacユーザーなのですが、ターミナルを使うより簡単そうなので
Scoutをインストールしてみました。
下記からインストールできます。
※もちろんwinユーザーさんもつかえます!
Scout - Compass and Sass without all the hassle
左下の「+」ボタンから作成します。
ここではとりあえず「test」と設定。
右にある「Configure」から細かく設定していきます。
【Stylesheet Directories】
■Input Folder
元の「.scss」のファイルを入れるフォルダを選択
■Onput Folder
書き出す「.css」のファイルを入れるフォルダを選択
【Other Directories】
ここは、まだよくわかりません。
Compassで使うみたいです。
【Output Modes】
■Environment
Scoutが勝手に吐き出すコメントの有無の設定です。
「Deveropment」だとどのscssファイルの何行目だよみたいな
下記のようなコメントが出てきます。
/* line 13, sass/style.scss */
「Production」にすればコメントは吐き出されません。
■Putput Style
書き出されるCSSのフォーマットを指定することができます。
「Expanded」CSSと同じように
「Compact」シングルライン
「Compressed」圧縮されるので容量は軽いですが解読難しい感じに。
「Nested」ネストされます
【Manage Project】
■Remove Project
「Remove」というボタンのみです。
これを押すと何の確認もなく消えます。ご注意を!
2012.11.27
addChild()で作成した表示オブジェクトに名前を付ける方法。
AS2.0では作成時に当たり前に付けていましたが、AS3.0では後から付けるようです。
インスタンス名の設定は .nameプロパティで設定できます。
var mc:MovieClip = new MovieClip();
mc.name = "sample";
また、インスタンス名を使って表示オブジェクトにアクセスするには、
getChildByName("インスタンス名") を使用します。
var mc:MovieClip = new MovieClip();
mc.name = "sample";
mc.x = 30;
trace(getChildByName("sample").x); //出力結果:30
参考にしたサイトは以下。
■ActionScript3.0でインスタンス名を調べたり設定する方法 | creator note http://creator.cotapon.org/articles/flash/actionscript3-0/actionscript3-0...
基本的なことなのに結構面倒な手順だなと思いましたが、
そもそもインスタンス名を使ってのやりとりはAS3.0では
あまり利点がないそうです。
AS3.0の入門書を読んでも上記のような手順は紹介されてませんでしたし、
根本的な頭の切り替えが必要そうです!
【おまけ】
配列アクセス演算子を使えば文字列で変数名を付けられます。
インスタンス名の利点がないのは、変数名で同じことができる、ということかも。
var mcName:String = "sample";
this[mcName] = new MovieClip();
this[mcName].x = 30;
trace(this.sample.x); //出力結果:30
AS2.0では作成時に当たり前に付けていましたが、AS3.0では後から付けるようです。
インスタンス名の設定は .nameプロパティで設定できます。
var mc:MovieClip = new MovieClip();
mc.name = "sample";
また、インスタンス名を使って表示オブジェクトにアクセスするには、
getChildByName("インスタンス名") を使用します。
var mc:MovieClip = new MovieClip();
mc.name = "sample";
mc.x = 30;
trace(getChildByName("sample").x); //出力結果:30
参考にしたサイトは以下。
■ActionScript3.0でインスタンス名を調べたり設定する方法 | creator note http://creator.cotapon.org/articles/flash/actionscript3-0/actionscript3-0...
基本的なことなのに結構面倒な手順だなと思いましたが、
そもそもインスタンス名を使ってのやりとりはAS3.0では
あまり利点がないそうです。
AS3.0の入門書を読んでも上記のような手順は紹介されてませんでしたし、
根本的な頭の切り替えが必要そうです!
【おまけ】
配列アクセス演算子を使えば文字列で変数名を付けられます。
インスタンス名の利点がないのは、変数名で同じことができる、ということかも。
var mcName:String = "sample";
this[mcName] = new MovieClip();
this[mcName].x = 30;
trace(this.sample.x); //出力結果:30
2012.11.20
前回の記事 MT:スパムコメント対策 では
スパムコメントを防ぎきれなかったため、次なる対策を講じることに。
今回はプラグインも取り入れます!
■keystrokes.pl
http://overstated.net/projects/mt-keystrokes/
このプラグインは、
・コメントフォームに直接入力したか
・送信ボタンを直接押したか
をJavaScriptで判断し、そうでないものを弾いてくれます。
JSが無効だとコメントできないため、少し乱暴な気もしますが・・
スパム対策には間違いなく有効だとのことで。
またMT3.X用ですが、修正すれば5.Xでも使えます。
■手順
1. keystrokes.plをダウンロード
http://overstated.net/projects/mt-keystrokes/
上記サイトの右上にある「DOWNLOAD」から、keystrokes-0.1.5.zip をダウンロード。
※0.1.5と書かれていますが落せるデータは0.1.4です。
さらにプラグイン内に書かれたバージョンは0.1.3になってます。不思議ですが問題なし。
2. 解凍後、plugins フォルダ内の keystrokes.pl を修正
return 1 unless $MT::VERSION =~ m(^3\.);
赤字部分を5(使っているMTのバージョン)に変えます。
3. MTフォルダ内の plugins フォルダに keystrokes.pl をアップ
ダイナミック・パブリッシングを使っている場合は、
php フォルダも同様に MT > php フォルダにアップ。
4. テンプレートを修正
コメントフォームのソースが書かれたテンプレートを下記のように書き換える。
(デフォルトなら コメント と コメントプレビュー )
●<form>タグの直後に <$MTKeystrokes$> を追加
<form method="post" action="<$MTCGIPath$><$MTCommentScript$>" name="comments_form" id="comments-form" onsubmit="if (this.bakecookie.checked) rememberMe(this)">
<$MTKeystrokes$>
<input type="hidden" name="static" value="1" />
●<textarea>タグに onkeypress="keystrokes(this.form)" を追加
<textarea id="comment-text" name="text" onkeypress="keystrokes(this.form)" rows="15" cols="50">
●投稿ボタンの<input>タグに onclick="keystrokes(this.form)" を追加
<input type="submit" onclick="keystrokes(this.form)" accesskey="s" name="post" id="comment-submit" value="投稿" />
5. 再構築
以上で完了です。
これで今度こそスパムコメント対策ができた!・・はずです。
【参考にした記事】
Movabletype3.3コメントスパム対策 | フリーソフトダウンロード5
http://ww-ape.com/movabletype/kome_spam3.html
MT5.1の再構築 早し!!
http://trendate.com/blog/archives/2010/02/mt51.php
スパムコメントを防ぎきれなかったため、次なる対策を講じることに。
今回はプラグインも取り入れます!
■keystrokes.pl
http://overstated.net/projects/mt-keystrokes/
このプラグインは、
・コメントフォームに直接入力したか
・送信ボタンを直接押したか
をJavaScriptで判断し、そうでないものを弾いてくれます。
JSが無効だとコメントできないため、少し乱暴な気もしますが・・
スパム対策には間違いなく有効だとのことで。
またMT3.X用ですが、修正すれば5.Xでも使えます。
■手順
1. keystrokes.plをダウンロード
http://overstated.net/projects/mt-keystrokes/
上記サイトの右上にある「DOWNLOAD」から、keystrokes-0.1.5.zip をダウンロード。
※0.1.5と書かれていますが落せるデータは0.1.4です。
さらにプラグイン内に書かれたバージョンは0.1.3になってます。不思議ですが問題なし。
2. 解凍後、plugins フォルダ内の keystrokes.pl を修正
return 1 unless $MT::VERSION =~ m(^3\.);
赤字部分を5(使っているMTのバージョン)に変えます。
3. MTフォルダ内の plugins フォルダに keystrokes.pl をアップ
ダイナミック・パブリッシングを使っている場合は、
php フォルダも同様に MT > php フォルダにアップ。
4. テンプレートを修正
コメントフォームのソースが書かれたテンプレートを下記のように書き換える。
(デフォルトなら コメント と コメントプレビュー )
●<form>タグの直後に <$MTKeystrokes$> を追加
<form method="post" action="<$MTCGIPath$><$MTCommentScript$>" name="comments_form" id="comments-form" onsubmit="if (this.bakecookie.checked) rememberMe(this)">
<$MTKeystrokes$>
<input type="hidden" name="static" value="1" />
●<textarea>タグに onkeypress="keystrokes(this.form)" を追加
<textarea id="comment-text" name="text" onkeypress="keystrokes(this.form)" rows="15" cols="50">
●投稿ボタンの<input>タグに onclick="keystrokes(this.form)" を追加
<input type="submit" onclick="keystrokes(this.form)" accesskey="s" name="post" id="comment-submit" value="投稿" />
5. 再構築
以上で完了です。
これで今度こそスパムコメント対策ができた!・・はずです。
【参考にした記事】
Movabletype3.3コメントスパム対策 | フリーソフトダウンロード5
http://ww-ape.com/movabletype/kome_spam3.html
MT5.1の再構築 早し!!
http://trendate.com/blog/archives/2010/02/mt51.php