ホーム > Note

Note アーカイブ

ArtRage2が面白い

  • 2008 年 7 月 28 日 08:30
  • Note | Tool

結構前からおっさんになったら油絵をやってみたいと考えていたのですが、油絵風の描き味が楽しめるペイントツール ArtRage2きりゅさんに教えてもらって無料体験版を試してみました。
ペンタブレットを持っていないので魅力の10%も感じられてはいないだろうと思ったけど、凄く楽しい!

一気にペンタブレット欲しい熱が上がりました。

描いたヤツ

コモンズ・マーカーの使い方

みなさん、コモンズ・マーカー使ってますか。
ソーシャルブックマークのよりミクロなバージョンとでも言いますか。
あるページにある任意のテキストに対してコメント(注釈)の残せるサービスです。
記事全体についてではなく、ある一文ないし一単語に対してコメントをするので、よりシャープなコメントが見れる面白いサービスです。
tumblr でもそうでしたが、ここ数年のウェブサービスはより抽象的な、いい意味で目的を絞っていないサービスが増えてきました。
その中でもコモンズ・マーカーは特に面白い。ニコニコ動画が成功した「同時に楽しんでる感」がもっとうまく伝われば楽しそうだなと思いました。greasemonkey でお前がやれと言う話ですね。

今の資産を使って面白く出来ないかなと考えたところ、自分の記事に対して自分で注釈をつけたら面白そうだなと思ったので、この記事の一つ前の記事から注釈をつけ始めました。

コモンズ・マーカーを利用している時だけしか読むことが出来ませんが、大体蛇足なので読む必要性は高くないけど、より具体的な、書いている時の思考を反映させた注釈にしてみました。

論理的な証明がうまく出来ないのでニュアンス的なものなのですが、コモンズ・マーカーは「たくさんの人が注目している」と言う、いわゆるホットエントリ的なお勧めは適していないような気がする。
今の段階ではコモンズ・マーカーのブックマークレットを実行している時にしか見れないため、意識していないと確認を忘れがちだけど、おそらく将来的にはログインさえ済ませておけば、意識せずともコメントを認識できる状況になっているのではないかと思うのだけど、その時記事に対してより詳細にコメントされているコモンズ・マーカーでは、コメントの数や鮮度で一概に評価できないのではないかと思う。なんていうか、マッチする率が低そう?
もっとソーシャルな方向に目を向けて、コメントを残している記事の種類などから求めている情報が似ているクラスタ間でのみホットエントリになるなど、サービスとユーザが一対一になるような仕組みでないと「好きな人が使う」だけで終わりそう。
なんていうか、サービスの目に見えるメリットとでもいうか。

なんか途中からだらだらとした文章になりましたがコモンズ・マーカー、お勧めです。

ご報告

  • 2008 年 4 月 11 日 09:06
  • Note

4月8日、入籍ぶっこきました。

今いるページを親にもつページを取得する

何日か前からコンテンツに Output を追加しました。
SPaiS.jp ではちょいちょい何かを作ってはエントリとして公開してきましたが、どうにも他のエントリに埋もれてしまい管理が煩雑になってきてしまっておりましたので、エントリで公開したスクリプトなどを Output 以下のページにまとめることにしました。

で、まとめるに当たって上位ページとなる Output には下位ページの一覧が表示されて欲しいなあと思い「今いるページを親にもつページを取得するクラス」を書きましたので公開しておきます。
ご自由にお使い下さい。もしかしたら似たような機能が既に Wordpress に実装されていて、それを僕が知らないだけかもしれません。なにかお気づきの方がいらっしゃいましたらコメントに残していただけると助かります。

ソースコード

<?php
class outputPageList {
 
    static
        $startTag = '<dl class="log">',
        $endTag   = '</dl>',
        $linkTag  = '<a href="%s" title="%s">%s</a>',
        $listTag  = '<dt>%s</dt>
<dd class="lastupdate"><span class="year">%s</span><span class="day">%s</span><span class="month">%s</span></dd>
<dd class="body">%s</dd>';
 
    function display(){
        foreach( self::getThisChild() as $entry ){
            $entry['content'] = explode ( "\n", $entry['content'] );
            $result[] = sprintf ( self::$listTag,
                sprintf ( self::$linkTag, $entry['permalink'], $entry['title'], $entry['title'] ),
                $entry['date']['year'], $entry['date']['day'], $entry['date']['month'], $entry['content'][0]
            );
        }
        return self::$startTag. "\n". implode ( "\n", $result ). "\n". self::$endTag;
    }
 
    function getThisChild() {
        global $wpdb, $id;
        $query = "SELECT * FROM `$wpdb->posts` WHERE `post_type` = 'page' AND `post_parent` = '$id'";
        $pages = $wpdb->get_results( $query );
        foreach ( $pages as $page ) {
            list ( $date, $time ) = explode ( " ", $page->post_date );
            $date = explode ( "-", $date );
            $time = explode ( ":", $time );
            $contents = explode ( "\n", $page->post_content );
            $result[] = array (
                'id'        => $page->ID,
                'permalink' => get_permalink ( $page->ID ),
                'title'     => $page->post_title,
                'content'   => $page->post_content,
                'date'      => array (
                    'year'      => $date[0],
                    'month'     => $date[1],
                    'day'       => $date[2],
                    'hour'      => $time[0],
                    'minute'    => $time[1],
                    'second'    => $time[2]
                )
            );
        }
        return $result;
    }
}
echo outputPageList::display();
?>

解説

outputPageList::getThisChild() で今いるページを親にもつページを取得しています。
取得したページの要素は下記の通りです。

<?php
array (
    'id'        => 'ページの ID',
    'permalink' => 'ページのパーマリンク',
    'title'     => 'ページのタイトル',
    'content'   => 'ページの本文',
    'date'      => array (
        'year'      => 'ページの投稿年',
        'month'     => 'ページの投稿月',
        'day'       => 'ページの投稿日',
        'hour'      => 'ページの投稿時',
        'minute'    => 'ページの投稿分',
        'second'    => 'ページの投稿秒'
    )
);

outputPageList::display() で取得したエントリのリストを元に HTML を生成しています。
わかりにくい点などありましたら体ごとぶつかってきて下さい。

導入手順

ページの本文に含める場合は RunPHP などエントリにスクリプトを書き込めるプラグインが必要です。
もしくはテンプレートに直接いっちゃってください。

tumblr への画像の無断転載にカッとなる前に

  • 2008 年 2 月 4 日 15:14
  • Note

せっかく自分が描いた絵を tumblr に post されるなんてまっぴらごめんだ!という向きのために性善説よりも確実なアンチ post 方法を書いておきます。

前提として、mod_rewrite を利用しているのでお使いのサーバの Apache に mod_rewrite が導入されている必要があります。
mod_rewrite が導入されていて尚且つ .htaccess が許可されている場合はいる場合は下記のコードを .htaccess というファイル名で保存し、サーバにアップロードすることで適用となります。

ざっくり分けてニーズとしては下記の3つに分かれるかと思います。

  1. post ok
  2. post はいいけどサムネイル出して欲しくない(リンクは ok)
  3. 直リンク厳禁!

1は特に何もする必要はないですね。
2に関しては下記のような rewrite rule を適用することによって tumblr が画像のサムネイルを作成することを防ぎます。

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} Tumblr
RewriteRule ^.+(jpg|gif|png)$ [F,L]

また、wordpress など mod_rewrite を使うアプリケーションを導入している場合には下記コードを RewriteBase / の次の行に挿入して下さい。

RewriteCond %{HTTP_USER_AGENT} Tumblr
RewriteRule ^.+(jpg|gif|png)$ [F,L]

3をお考えのあなた。パブリックな場所にデータを公開するのがそもそもの間違いだとは思いますが、下記コードで tumblr からのアクセスをトップページにリダイレクトします。
http://spais.jp をお使いのドメインに変更して下さい。

RewriteEngine On
RewriteCond %{HTTP_REFERER} tumblr.com
RewriteRule ^.+$ http://spais.jp [L]
RewriteCond %{HTTP_USER_AGENT} Tumblr
RewriteRule ^.+(jpg|gif|png)$ [F,L]

注意

2に関しては tumblr からのアクセスを防ぐことによりサムネイル画像の作成を防いでいるため、基本的には無断転載されることはありません。が、無断転載される方が自分の使っているサーバに画像をコピーした上で post することを防ぐことはできません。もちろん、ローカルからのアップロードも防げません。
3に関してはリファラを変更することで対応されてしまいます。

僕は無断転載云々に関しては肯定派です。
無断転載に対して性善説や人情に訴えるのはナンセンスだとも思います。
そもそもインターネットというパブリックな仮想空間にデータを公開している時点で、そのデータに対しどのような形でアクセスしようとも文句は言えないと、僕は考えています。
もちろん認証機構などを設け、その認証を受けないとアクセスできないデータへアクセスすることはまったく別の話ですが、少なくとも「窓を開けていたら外から見える」と言うのは自然の摂理です。

盗用と引用の境はデリケートかもしれませんが、少なくとも画像においては著作権表示を画像に埋め込むなどの対処が可能ですので、やはり他のサイトに表示されたくないのであればそれなりの手段を講じる必要があるのではないかと、僕は考えています。

ためしに、tumblr に post できない画像を置いておきます。
image

ホーム > Note

カテゴリー

ページの上部に戻る