February 02, 2005

TrackBackスパム対策 from Memo leaves
Memo Leaves

BLOGの設定の禁止IPってのは別にIPアドレスしか入れれないなんて事はないのでここにURLのリスト入れてやろうということで。
普通にtexas-holdem.psxtreme.com等BanしたいドメインをADDしてやる。

うー。2日連続で200件ずつぐらいのspam食らいました。
むきー。
おかげ様で「このサーバで一番負荷かけてるのはあんただよ」認定されました。
MT-blacklistも考えてたんですが、kenjiさんに教えてもらったので
お手軽な対処で対応してみます。
とりあえず様子見。

May 17, 2004

Movable Type 3.0のライセンス体系について
Six Apart Japan: Movable Type 3.0のライセンス体系について(邦訳)

ユーザーの方から寄せられたフィードバックを基に、紛らわしい点や誤解を生んだ点のご説明、ならびに現状に照らし合わせたライセンス上の変更点などを、米シックス・アパートのCEO、ミナ・トロットが、ウェブサイト上でご説明させていただきました。

米国sixapartでMovable Type 3.0 Developer Editionがリリースされ
そのライセンス体系についていろいろな意見が出されています。
個人的な感想としてはまぁちょっと高い気はするな、というところですが
たぶん3.0に移行するだろうと思います。
Developer Editionでも問題ないような気もしますし。
TypeKeyについては使うかどうか微妙。当分様子見でしょう。
それにつけてもDeveloper Editionのインストールの簡単さは驚きでした。
2.xのインストールに慣れているという面はあるにせよ
シンプルになったとの印象です。

サイトの引っ越しとあわせて3.0へのアップグレードを目論んでいますが
リビルドの問題が解決されているのかどうか、
負荷は軽減されているのかどうかあたりが個人的には焦点になるだろうなぁ。

05:52 PM | このentryの全文表示/parmalink | Comments (0) | TrackBack (0)
このentryへのTrackBack URL:http://gnk.s15.xrea.com/x/mt-tb.cgi/486

March 16, 2004

spamコメント対策:GET拒否
@ parallel minds: MTアップグレードメモ

6.Burningbird: Comment Spam Quick Fix
コメントスパム対策。


以前にコメントスパム対策として
コメントのformにhidden属性を埋め込む作業をしました。
ところがここ1週間ぐらい毎日1〜5個のコメントスパムが
コンスタントに投稿されていて、なんだかなぁと思っていたのですが
ようやくどうすればいいかがわかりました。

まず、individual archiveのコメントフォーム部にhidden属性を追加し
mt-comments.cgi の"use strict;" 直後に以下の内容を追加。

use CGI qw(:standard);
if ($ENV{'REQUEST_METHOD'} eq "POST") {
my $data = param('snoop');
die unless ($data);
}

これってformがPOSTで送られてきた時にだけhiddenチェックしてるんですね。
さっぱり気づいてませんでした。
ログを確かめてみるとGETでずらずらと送りつけてきているSPAMばかりなので
GETでmt-comments.cgiを呼び出されたらエラーにしてやればいいのだ
ということで、改造。

use CGI qw(:standard);
if ($ENV{'REQUEST_METHOD'} eq "POST") {
my $data = param('snoop');
die unless ($data);
}elsif(($ENV{'REQUEST_METHOD'} eq "GET"){
die;
}

ただ、このままだと別ウィンドウでコメントフォームを表示している場合
その呼び出しもエラーになってしまいます。
このサイトでは使ってないので問題ないんですが
その場合には

use CGI qw(:standard);
if ($ENV{'REQUEST_METHOD'} eq "POST") {
my $data = param('snoop');
die unless ($data);
}elsif($ENV{'REQUEST_METHOD'} eq "GET") {
my $check = param('text');
die if ($check);
}

とでもしておけば大丈夫なのではないでしょうか。
GETリクエストでtextがあればエラーにしています。
通常の別ウィンドウ表示呼び出しの場合はtextに値が入ってませんから
エラーにならずに通過。
textが空という投稿もないでしょうし、これでGETコメントは防げそうです。

12:06 PM | このentryの全文表示/parmalink | Comments (6) | TrackBack (6)
このentryへのTrackBack URL:http://gnk.s15.xrea.com/x/mt-tb.cgi/435

March 04, 2004

index.rdfにスタイルシートを適用する。
Going My Way: index.rdfにスタイルシートを適用する。 RSSと書かれたリンクをクリックしたときにソースが見えてしまうのは、知らない人にとってはびっくりするようなので、index.rdfにスタイルシートを適用しておくというアイディアを参考にスタイルシートへリンクさせてみました。

全くもってそのとおりなので早速真似してみた。
3/4 13時現在でcssはkengoさんのをそのまま使わせていただいております。
後で変更予定。


xreaサーバでの手順を以下に書いておきます。
1.style.cssをダウンロード
2.style-rdf.css等にファイル名を変えて、
  ルートディレクトリ(おそらくindex.rdfのあるディレクトリ)にアップロード
3.htaccess等の名前をつけたテキストファイルを作成し以下のコードを記入
  
4.ルートディレクトリにアップロードし、.htaccessにファイル名を変更
5.index.rdf用のMTのテンプレートの2行目に以下のコードを追加
  
6.index.rdfをリビルド

これでindex.rdfをブラウザで整形して表示できるようになります。
さて、cssの変更をするか。
(追記)
と思ったけど、OSXってデフォルトでは.htaccessが使えないのね。
httpd.confをいじらないといけない予感。
ローカルのindex.rdfをsafariで開こうとすると
ダウンロードになってしまうので不便だ(笑)

01:11 PM | このentryの全文表示/parmalink | Comments (6) | TrackBack (1)
このentryへのTrackBack URL:http://gnk.s15.xrea.com/x/mt-tb.cgi/426

February 19, 2004

MT2.661とsafariとbookmarkletの文字化け
JavaScript::Bookmarklet Blog: Safari用MTのBookmarklet


僕はOSXの10.3と10.2を併用しているもので
safariも1.2(v125)と1.0(v85.6)を併用しています。
確かに最近bookmarkletは文字化けするようになっていましたが
safari1.0でも文字化けしていたので
おそらくMovableTypeのバージョンアップ(2.661)
が原因なのかなと思いつつ、不自由なまま使っていました。
けっこうこういう不自由をそのままにしてしまいがち。
だって面倒なんだもん!という感じで。


渡りに船ということでJavaScript::Bookmarklet Blogさんのページ通り
変更をしてみました。
結果、safari1.2での文字化けは解消。
しましたが一部のページでは以前文字化けあり。
safari1.0では当然ながら解消せず。
って1.2用の変更なのだから当然なんですが。
#ちなみに文字コードはUTF-8です。


仕事でもJavaScriptを使う機会が増えてきたので
この際ちゃんと本買って勉強しよう。

01:25 PM | このentryの全文表示/parmalink | Comments (0) | TrackBack (0)
このentryへのTrackBack URL:http://gnk.s15.xrea.com/x/mt-tb.cgi/412

February 02, 2004

編集メニュー画面からコメントスパムを一括削除
Memo Leaves: 編集メニュー画面からコメントスパムを一括削除

おぉぉ快適だー残り180個ぐらいスパムコメントをサクッと消せました。
∩( ・ω・)∩ ばんじゃーい

使わせていただきました。
一度に50個ずつ消していったのでわりと早くに消せた。
ただindividual archiveのリビルドはしていないので
表示上は残ったままですが、それは仕方なし。

#実はKenjiさんのこのentryにトラックバック送るの二度目。
 痛い目みないとわからんというとですな…。

11:32 AM | このentryの全文表示/parmalink | Comments (0) | TrackBack (0)
このentryへのTrackBack URL:http://gnk.s15.xrea.com/x/mt-tb.cgi/400

January 31, 2004

MTアップグレードメモ

前回漫然とアップグレードを行ったことで、以前と違う状態ができていた。
手を加えたらメモっとけこの野郎、ということで今回こそメモる。


1.bookmarkletでblockquoteタグを挿入。
lib/MT/App/CMS.pmの639行目

qq(<a title="%s" href="%s">%s</a>¥n¥n%s)
qq(<blockquote><a title="%s" href="%s" target="_blank">%s</a>¥n%s¥n</blockquote>),
に変更。 このタグでそのまま行くのかどうかはまた検討ということで。


2.トラックバック着信で自動リビルド
参照:HuntingGirledCollective: トラックバック着信で自動リビルド
lib/MT/App/Trackback.pmの213行目

my $blog = MT::Blog->load($blog_id); $app->rebuild_indexes( Blog => $blog ) or return $app->_response(Error => $app->translate("Rebuild failed: [_1]", $app->errstr));
とあるので、
$app->rebuild_entry( Entry => $entry ) or return $app->_response(Error => $app->translate("Rebuild failed: [_1]", $app->errstr));
その後ろに追加。


3.RecentTrackBackに自サイトのエントリーtitleとpermalinkを表示
参照:@ parallel minds: 「最近のTrackback」にエントリーのTitleとPermalinkを!
唯一記録していたもの。
/plugins/mt-pingedentry.pl
をコピーすること。


4.cgiディレクトリ
自分で追加していたcgiディレクトリをコピーすること。


おそらくこれで全部だと思うのだが…。

05:19 PM | このentryの全文表示/parmalink | Comments (2) | TrackBack (1)
このentryへのTrackBack URL:http://gnk.s15.xrea.com/x/mt-tb.cgi/398

January 29, 2004

コメントスパム襲来

あー、来た。
ついに来た。
全エントリにコメントつけてくれたようだ。
古いエントリはテンプレート変更前のデザインになってたので
わざわざ全部一個ずつリビルドしてくれたようなものだな(笑)
とか言ってる場合かと。
あまりにもうざいので消さずにしばらく放置。
ただ、バージョンアップだけはしておくか…。
その辺り億劫になるといけませんなぁ。

10:54 PM | このentryの全文表示/parmalink | Comments (3) | TrackBack (0)
このentryへのTrackBack URL:http://gnk.s15.xrea.com/x/mt-tb.cgi/397

November 25, 2003

コメント削除に注意@MovableType&safari
エントリーを書き換えられ……てはいなかった!: greenplastic.net

spamに限らずコメントを削除するときには、エントリーの編集画面から行うようにして、けしてコメントの編集画面から削除しないこと


以前僕も同じような状況になって驚いたことがありました。
どういうことなのかというと

1).mt.cgiの「メインメニュー > blogの編集メニュー」ページにある  最近5つのCommentのリンクから「Commentを編集する」ページに移動する。

2).「Delete」をクリックして表示される別ウィンドウでDeleteをもう一度クリック。

3).元のウィンドウのComment編集ページが
 そのコメントのついていたentry編集ページに遷移。

4).「Entryの内容」のtextareaに先ほど削除したはずのコメント本文が入っている。

順を追って説明すると以上のような流れ。
ここでそのままEntryを保存してしまうと
その時点で保存・リビルドされてしまうので気をつけましょう
というのが今回の記事の本論です。

また、テンプレートの削除やエントリーのリストと編集での削除の際にもチェックボックスまわりでの不審な挙動が見られます。Safariでmt.cgiを操作するときはくれぐれも慎重に。
という話も出ているようなので 何か変なことがあったらブラウザを変えてみるとよいかも。
11:53 AM | このentryの全文表示/parmalink | Comments (0) | TrackBack (1)
このentryへのTrackBack URL:http://gnk.s15.xrea.com/x/mt-tb.cgi/353

October 24, 2003

続:コメントスパムへの対処(MovableType)

昨日の今日でうちにもコメントスパムがきていました。
viagraという名前で6つほどだったので普通に削除しましたが
「自分に火の粉が降りかからないと動かない」というのはいかんなと。
さしあたりPreston Wiki - コメントスパムの情報を元に
IP Banningの設定だけ追加しておきました。


実は以前にも同様のコメントが入ったことがあったのを取り上げていたのですが
>>@ parallel minds: comment spam
この時方法としてあげていたhidden属性を追加することも
結局はやらずじまいで現在に至るというところです。
というかこれをするとまたしても「Rebuild問題」が表面化するということで
あー、困った。
wordpressも

WordPress:Dev Blog
0.72 Final Version Available

ということなので、乗り換えをちょっと真剣に考え始めていたり。
#Dave Sheaには管理ツールのデザインもやってほしいな。


コメントスパム対策については上記のwikiの他に
>>ARTIFACT −人工事実− | MovableTypeコメントSPAM対策
こちらも情報がまとめてありますのでご参照ください。

11:14 AM | このentryの全文表示/parmalink | Comments (0) | TrackBack (0)
このentryへのTrackBack URL:http://gnk.s15.xrea.com/x/mt-tb.cgi/313

October 23, 2003

コメントスパムへの対処(MovableType)
Memo Leaves: 編集メニュー画面からコメントスパムを一括削除

昨日、コメントスパムが200個以上書き込まれていたので消そうとしてたんですが。
20個ぐらい消したところでメンドクサクしかも時間掛かりスギ、効率悪スギだと悟ったので一気に消す方法を考えました。


200というのもえらく本格的というか
単一のサイトに200のコメントをのせることが
いったい何の意味があるのかという疑問も同時に。
単純に嫌がらせ目的?

で、200もちまちまと消していられないということで
編集メニュー画面を変更することで対応なさったとのこと。
これである程度一気に消すことができるわけですね。
DBを直接さわれる人はそのほうが楽なのかもしれませんが
そういうわけにもいかない人は是非参考に。


>>やじうまWatchでも紹介されてました。

06:33 PM | このentryの全文表示/parmalink | Comments (2) | TrackBack (0)
このentryへのTrackBack URL:http://gnk.s15.xrea.com/x/mt-tb.cgi/312

October 22, 2003

「最近のTrackback」にエントリーのTitleとPermalinkを!
Blog@一色政彦WebSite: MTの「最近のTrackback」にエントリーのTitleとPermalinkを!

これがなぜデフォルトの機能じゃないのか
大きな疑問・不満だったのですが
一色政彦さんがプラグインを公開しておられました。
早速入れてみたんですがこれは便利がいい。
やっと痒かったところに手が届いたという感じです。
一色さんありがとうございます。

追記@10/24

ready for the blue | 解決:どの記事へのトラックバックなのか
ついでに今まで「〜へのコメント」としていたのを「To: 〜」と変更。by も from に。トラックバックのところも同様に表記。要は from ○○が個人だとコメント、サイトだとトラックバックという感じ。

これいいですね、採用させてもらおうっと。

01:23 PM | このentryの全文表示/parmalink | Comments (0) | TrackBack (1)
このentryへのTrackBack URL:http://gnk.s15.xrea.com/x/mt-tb.cgi/310

September 18, 2003

MT設置時のtips
はてなダイアリー - 恐がり - 模倣犯

MT設置にあたって参考にしたページやTipsをメモっておく。

individual archiveのファイル名とか
カテゴリー名をどうするかとか
parmalinkにしばられていまさら変更しづらい…。
次別のところでMT使うことがあったらやろう
と思ってることがけっこういくつかたまってきました。
あと先日ネタにしたけれどもrebuild時の負荷問題は
けっこう大きなMTのマイナスポイントだと思う。
individual archiveの分割リビルドは実装して欲しい。
たぶん今でもリビルド部分のプログラムに
適切に値を渡してやればできるのでしょうけど。


で、冷麺にある

Movable Type(以下MT)を使い始めた人は必ずMTに関する話題を書きまくるという法則。
これ、笑った。

02:27 PM | このentryの全文表示/parmalink | Comments (7) | TrackBack (0)
このentryへのTrackBack URL:http://gnk.s15.xrea.com/x/mt-tb.cgi/285

August 13, 2003

リンク集
Plastic Mind: インターネットショートカット

MTのmainindexにチマチマと追加して行くのもなんだか面倒。エントリーを追加する感覚で
できたらいいのにな〜という感じ。

Movable Typeに少し慣れた頃に気がついてちょっと凹んだことのひとつに
「リンク集が自動追加できないこと」があったのを思い出しました。
Plastic Mindさんの上のentryを読むまですっかり忘れてたんですが
「なんでリンクはわざわざテンプレートをいじらなきゃならんのだろう」
と思ってたんですよね。


それと最近HOHBUKUROさんの

HOHBUKURO: log20030810
Entryをつくるほどではない・ネタにするほど時間がない,けれど気になるウェブやニュースをちょっと載せておきたい。そんな用途に使える ネタ帳 をつくってトップページに組み込んでいる。
を読んだことを思い出して、
同じような方法でリンク集が実現できることに思い至りました。


MovableTypeでもうひとつblogを作成して
それをlink集用として使ってみる、という方法です。
Master Archive Indexを例えばarchives.jsとして出力し
内容は
document.write('<MTEntries><MTEntryBody><br /></MTEntries>');
として、本体のblogの方でblogroolingの用に書いておけば
bookmarkletでリンクが追加できると思います。


以下HOHBUKUROさんに習って手順。

03:35 PM | このentryの全文表示/parmalink | Comments (6) | TrackBack (0)
このentryへのTrackBack URL:http://gnk.s15.xrea.com/x/mt-tb.cgi/239
Movable Typeのcss変更の際
小心者の杖日記

スタイルシートをいじったら表示を確認するのにいちいち再構築をしなくちゃいけないことに戸惑ったり

僕もこれは面倒だと思ったので、スタイルシートの調整に関しては
htmlとcssをローカルにおいたもので色々弄ってました。
で、ある程度決まった段階で管理画面のcssテンプレートに
コピーしてリビルド。
こうすることで少なくともcssを試行錯誤しながら変更
という段階ではリビルドをする必要がなくなります。
indexのテンプレート等はMTタグがあるので
ローカルではなかなか触りづらいですが。
#ローカルにサーバたてるのがよいっすね。


あと、以前MacIE使ってたときには

はてなダイアリー - Underconstruction by Taiyo@hatena
MacIEはアプリケーション終了までCSSをリロードしないんだが、IEで読み込んでやると適用される。
Webサイト製作中はcssもブックマークしておくと良い。
これに気づいて無くてしばらく困ってたんですが
ウィンドウ2枚開いて片方にはつねにcssを出しておいて
cssの編集をする毎にリロード、という手順でやってました。


こめんとでぬまさんがあげてくださった

ARTIFACT −人工事実− | MTでのスタイルシート変更を楽に

このテクを使えば、SAVEするだけでREBUILDしてくれます。


この方法を使うことでも手順が1つ減って楽チンになりますね。

11:56 AM | このentryの全文表示/parmalink | Comments (7) | TrackBack (0)
このentryへのTrackBack URL:http://gnk.s15.xrea.com/x/mt-tb.cgi/238

May 20, 2003

Movable Type 日本語化手順
Milano::Monolog: ドキュメントひとまず完成

Movable Typeの日本語化パッチを作成されたみらのさんが
そのマニュアルも作成されました。
MTのダウンロードからはじめてあるので
随分と親切な手順になっていると思います。
ご苦労様でした。
難関はサーバごとにくせのあるパス表記ぐらいでしょうか。
xreaでの設置についてはARTIFACTさんでも記事が出ていましたので
あわせて紹介しておきます。

ARTIFACT −人工事実− | XREAでMovableTypeを運用する際の注意

03:13 PM | このentryの全文表示/parmalink | Comments (6) | TrackBack (0)
このentryへのTrackBack URL:http://gnk.s15.xrea.com/x/mt-tb.cgi/140

May 09, 2003

MacOSXにMovabletypeをMySQL仕様でインストール

手元のOSXにMovableTypeをMySQL仕様でインストールしようかと思って
いろいろとやってみてたのですがトラブル発生。


とりあえず

Unsupported driver MT::ObjectDriver::DBI::mysql: Can't locate DBI.pm in @INC
とエラーが出ていた。
perlでMySQLをさわるにはDBI、DBDが必要とのこと。
このページの通りにCPANからダウンロードしてきたがmakeができない。
Error: Unable to locate installed Perl libraries or Perl source code.
どうやらDBI日本語メーリングリストでも
既出の話題だったようですが、なぜかdevelopper toolを入れてみればとの話。
うーむとは思いつつAppleDeveloperConnectionに登録してダウンロード中。
うまくいくのだろうか。

08:19 PM | このentryの全文表示/parmalink | Comments (0) | TrackBack (0)
このentryへのTrackBack URL:http://gnk.s15.xrea.com/x/mt-tb.cgi/130

March 16, 2003

TrackBackの表示カスタマイズ
ishinao's WikiLike - tDiary的TrackBack from Rubyにまつわるえとせとら日記 なぜMovableTypeはあんなにTrackBackとコメントが分離してしまっているんだろう。意味的には似ているんだから、もうちょっと(見た目を)連携させればいいのに。

そりゃもっともだということでしこしことローカルでテンプレート
いじってみてたんですが、表示は当然ながら可能でした。
commentとTrackBackを両方Individual archiveのページ(記事単独のページ)
に表示させるようにテンプレートをいじってたのですが問題がひとつ発生。
TrackBackを受けたタイミングで各記事のページがリビルドされない。
hirataさんのところはどうなってるんだろう…。
リビルドのタイミングを設定する部分がどこかにあるかも。
もうしばらく調べてみることにします。


いろいろとTrackBackで動きがあって面白いんですが
MovableTypeの作者側ではどの程度TrackBackの機能に意図を込めてるんだろう。
commentとTrackBackの分離具合だとか、初期設定ではTrackBackがオフだとか
その辺りを考えるとどうなんだろうかなと。
tDIaryでツッコミの中にTrackBackをあわせて表示するというのは
非常にいいインターフェイスかもしれません。
双方の使われ具合によってはやっぱ別のほうがいいべってなことに
なるかもしれませんが、ひとつの方向性ということで成り行きに注目です。

03:08 AM | このentryの全文表示/parmalink | Comments (3) | TrackBack (0)
このentryへのTrackBack URL:http://gnk.s15.xrea.com/x/mt-tb.cgi/77

February 25, 2003

日本語化パッチとtrackback仕様
Milano::Monolog: 日本語化パッチ


milanoさんとhirataさんの御尽力によって日本語化パッチが作成されています。
その間にMTのバージョンが2.63になっていたり
ishinaoさんの提案によって異なる文字コード間でのtrackbackについて
一定の方向性が見えてきたようでありがたい話です。
trackbackはたくさんのサイトで使えるようになると
便利度が増していく仕組みだと思うので
最大のネック「日本語文字コード」がクリアされた仕様になると
blog以外のシステムにも導入しやすくなりそう。


私はと言いますと。
ローカルではバージョンアップしてあるんですが
まだこちらにはアップできておりません。
2.63と日本語化パッチの完成を待とうかなと。


何か貢献できること探さないとな。

08:57 PM | このentryの全文表示/parmalink | Comments (1) | TrackBack (0)
このentryへのTrackBack URL:http://gnk.s15.xrea.com/x/mt-tb.cgi/50

February 13, 2003

recent trackbacks
salvageship: Trackbackされた時に対応して。
以前からやりたかったんですが なかなかこのやり方が見つからなかった。 googleで検索してみると http://salvageship.dropcontrol.com/archives/000137.html#000137 や http://salvageship.dropcontrol.com/blog/archives/000673.html を参照して変更した人達がいるらしいことは わかったのだけれどもいずれも404。


うーむと困った結果
salvageshipさんの過去ログ検索で発見。

よかったよかった。
とは言うもののサイトやディレクトリの移動が頻発すると
後々で面倒なことになるのだなぁと実感。
trackback等で非常に簡単に相互参照の関係ができる状況が
逆の方向に働いてしまうっていうことか。
難しいなぁ…。

05:49 PM | このentryの全文表示/parmalink | Comments (0) | TrackBack (0)
このentryへのTrackBack URL:http://gnk.s15.xrea.com/x/mt-tb.cgi/34

February 06, 2003

月初め白紙になってしまう現象@movable type

mpmさんからコメントをいただいたついでといってはなんだけども
pop-space blogJAPANESE Movable Type Blog Slideshowを見ていたところ
けっこう白紙になってるサイトが多かった。

しばらくして気が付いた。
あー、これ僕もやったな、と。
Main Indexのテンプレートがデフォルトのままだと
<MTEntries>
となっているんだけれども
この場合同じ月の記事しか表示されない。
<MTEntries lastn="10"> #この場合新着10件
とでもしておくと月初めの白紙を回避できます。

06:30 PM | このentryの全文表示/parmalink | Comments (0) | TrackBack (3)
このentryへのTrackBack URL:http://gnk.s15.xrea.com/x/mt-tb.cgi/27

January 28, 2003

blogrollingの日本語タイトル文字化け対策
movabletype JapanBlog in Xrea: blogrollingの日本語タイトル文字化け対策

これはすばらしい。
日本語でも実態参照すればいいのか。
日本語の部分は適当にローマ字にしたりはしょったり
してましたが、これでちゃんと表示できます。

03:39 PM | このentryの全文表示/parmalink | Comments (0) | TrackBack (0)
このentryへのTrackBack URL:http://gnk.s15.xrea.com/x/mt-tb.cgi/15