楽天に導入されるというソーシャル買い物「ShopTogether」

http://internet.watch.impress.co.jp/docs/news/20110216_427257.html

楽天に導入されるというソーシャル買い物「ShopTogether」

リアルタイムで遠隔地の友人や家族とチャットしながら購入をする・・というもの。ShopTogether Friendsなる友人との購入のものを導入すると

  • 25%たくんさのアイテムがカートに!
  • 50%購入額UP!
  • 400%サイト滞在次官UP!

ということらしい。

この数値だけ見るとすごいけどリアルタイムに・・・というシーンはあまり多くないんじゃないのかな?

非同期でもやりとりが可能なのであれば商品ページであーでもないこーでもないとやりとりしつつ購入するのはすごくいいと思った。

FacebookのInstant Creditsを体験してみる

この記事を見てFacebookのInstant Creditsとは何かと思い体験してみた。
http://jp.techcrunch.com/archives/20110127omgpop-facebook-instant-credits/

OMGPOPのDraw My Thingというゲームで実装されているらしくこれを遊んでみた。

ゲームを始めると下画面にゲーム中常に有料アイテムの画面が表示されており、アイテムをクリックするとなんとそれだけでアイテムを購入できた。(Facebookポイントを購入した覚えはないがいつのまにか持っていた。なにかのキャンペーンでもらったのだろうか・・)

でなんとなく下記のようなものだと理解した

  • Facebookポイントがあれば表示されているアイテムをワンクリックで購入できる
  • ポイントがない場合は購入画面がpopupされる
  • アイテムの購入画面、結果などはアプリ提供者が好きに作成できる。

なかなか衝撃的だった。
確認画面のない本当にワンクリックだったからだ。

間違えてクリックしてもポイントが消費され、何だろう?とクリックしただけでポイントが消費される。
さらにはそのアイテム画面をアプリ提供者のインターフェースで作成できる。
利用者はかなり混乱しそうだ。(実際 意味がわからず連打してしまいポイントが消費された・・)

しかしリアルタイムなアプリには非常に良い方式なのかもしれない。ゲーム中に有料アイテムを瞬時に購入しゲームを有利に進めることなどができる。

また確認画面無しについてはfacebook内のアプリでいつでもfacebookによるコントロールが行えることと小額向けにすることでクレーム等を減らせるという形なのではないかと思う。

あとどうでもいいけどDraw My Thingはなかなか面白いゲームだった。

mysqlをユーザ権限でインストールする

mysqlクライアントだけがすでにはいっていてだけど自分のユーザ権限しかないところにmysqlをいれたくなったのでいれてみる。mysqlは/home/xxxx/mysqlにいれることにする。

mysqlのソースを拾ってくる。ncursesが必要だったので拾ってきてconfigureで--prefix=/home/xxxxしていれる。

mysqlを解凍してconfigureする

./configure --prefix=/home/xxxx/mysql \
--localstatedir=/home/xxxx/mysql/data \
--with-unix-socket-path=/home/xxxx/mysql/tmp/mysql.sock \
--with-mysqld-user=xxxx \
--with-extra-charsets=all \
--with-innodb \
--with-named-curses-libs=/home/xxxx/lib/libncurses.a   

mysqlのDBを初期化する

/home/xxxx/mysql/bin/mysql_install_db --user=xxxx --datadir=/home/xxxx/mysql/data

my.confを用意する。mysqlのソースを解凍したところのsupport-filesからmy-small.cnfを/home/xxxx/mysql/dataに置いてmy.cnfにリネーム

my.confを編集[mysqld]に

datadir=/home/xxxx/mysql/data
pid-file=/home/xxx/tmp/mysql.pid

を追加した

mysqlを起動する

/home/xxxx/mysql/bin/mysqld_safe --defaults-file=/home/xxxx/mysql/data/my.conf & 

mysqlに接続。(クライアントは元からはいっていたものを使ってるのでlocalでの接続にsocketを指定している

mysql -uroot -hlocalhost --socket=/home/xxxx/mysql/tmp/mysql.sock

subversion 1.6.3のclientだけをユーザ権限でインストール

subversion clientだけのインストール

都合によりsubversionのclientだけversionをあげたかったのでユーザ権限でインストールした

wget http://subversion.tigris.org/downloads/subversion-1.6.13.tar.bz2
wget http://subversion.tigris.org/downloads/subversion-deps-1.6.13.tar.bz2
tar xvf subversion-1.6.13.tar.bz2
tar xvf subversion-deps-1.6.13.tar.bz2

./configureしたらzlibが無い無いわれてしまったので

cd subversion-1.6.13
cd zlib
./configure --shared --prefix=~/
make
make test
make install

した。

subversionのconfigure

./configure --prefix=~/ \
--with-zlib=~/ \
--without-apxs \
--without-serf \
--without-neon \
--without-ssl \
--without-berkeley-db \
--without-kwallet \
--without-gnome-keyring \
--without-ctypesgen

make
make install

なにもいらないので手当たりしだいにwithoutした。
あとzlibがhomeの下に置いたので--with-zlibで指定。
正直よくわかってないのもあります。

without-berkeley-dbなのにberkeley dbでWARNINGいわれたけどスルーしよう

svn co, commitとかがsvn://にできればなんでもよかったわけです

perl editor のpluginを作る ソースコードを区画分けする。

今回はエディタ上のソースコードを区画に分けます。

ここはコメント部分、ここはpod、ここはperlのコードみたいに分けることができます。それぞれを区画にわけて異なるコードアシストなどを設定できます。あとたぶんある程度わけたほうがパフォーマンスがいいんじゃないかなぁ・・・とか思ってます。

まず区分けするためのソースコードをスキャンするスキャナーを作成します。

package com.appspot.charisoku30km.editor.perl.editors;

import org.eclipse.jface.text.rules.IPredicateRule;
import org.eclipse.jface.text.rules.IToken;
import org.eclipse.jface.text.rules.RuleBasedPartitionScanner;
import org.eclipse.jface.text.rules.SingleLineRule;
import org.eclipse.jface.text.rules.Token;

public class PerlPartitionScanner extends RuleBasedPartitionScanner {
    
    public PerlPartitionScanner() {

        IToken comment = new Token("____perl_comment");

        IPredicateRule[] rules = new IPredicateRule[1];
        rules[0] = new SingleLineRule("#", "", comment);

        setPredicateRules(rules);
    }
}

とりあえずすごく簡単なスキャナを作成しました。

RuleBasedPartitionScannerを継承しコンスタラクタでIPredicateRuleという区分けのためのルールをsetPredicateRulesで設定しています。

new Token("____perl_comment");の____perl_commentはこの区画の識別のため
のものです。

SingleLineRuleはよんでそのままソースコードの1行のためのスキャン用のルールです。

new SingleLineRule("<", ">", comment);

とか書くと<から>までをこのITokenと識別します。

つぎにこのソースコードのドキュメントオブジェクト(IDcument)生成時に上記のスキャナーをセットするFileDocumentProviderを継承したクラスを作成します。

package com.appspot.charisoku30km.editor.perl.editors;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IDocumentPartitioner;
import org.eclipse.jface.text.rules.FastPartitioner;
import org.eclipse.ui.editors.text.FileDocumentProvider;

public class PerlDocumentProvider extends FileDocumentProvider {

    protected IDocument createDocument(Object element) throws CoreException {
        IDocument document = super.createDocument(element);
        if (document != null) {
            IDocumentPartitioner partitioner =
                new FastPartitioner(
                    new PerlPartitionScanner(),
                    new String[] {
                        "____perl_comment", //スキャナのトークンとおなじ値
                    }
                );
            partitioner.connect(document);//ドキュメントとパーティショナーを接続 ↓でsetするのにね
            document.setDocumentPartitioner(partitioner);
        }
        return document;
    }
}

FileDocumentProviderのcreateDocumentをオーバーライドし、先ほどのPerlPartitionScannerをつかってFastPartitionerを生成し、setDocumentPartitionerでドキュメントにpartitionerをセットしてあげます。

ではこのDocumentProviderをPeroOreditorのコンストラクタでセットしてあげます。

    public PerlOreditor() {
        super();
        setSourceViewerConfiguration(new PerlConfiguration());
        setDocumentProvider(new PerlDocumentProvider());
    }

ということで区画わけができました!でも区画分けしてあげただけなので何もおこりません。。。

あ、#以降でコンテンツアシストが動作しなければ成功しています。コンテンツアシストは今回作成したコメントの区画ではなくデフォルトの区画に設定しているためです。

コピーは一回20文字

追記

↓の記事は間違いらしい
そんな議事録は存在しなかった!

http://twitter.com/SharpGalapagos/status/27818715289

ITpro EXPO 2010]「コピーは1回20文字まで」---シャープが電子書籍ビュー「ガラパゴス」を展示
http://itpro.nikkeibp.co.jp/article/NEWS/20101018/353037/

コンテンツによっては文章のコピーができる。ただし、著作権に配慮し、「1回にコピーできるのは20文字まで」(同社)だ。

ふざけすぎだろ

何をいったいどうしたらこんなことになってしまうのか。
なぜこれが企画会議を通過してしまうのか。
なぜこれが通過したものを商品として開発してしまうのか。


どういった会議が行われているのかすごく議事録が読みたい。