備忘録

物忘れが酷いので

Singleton

概要

シングルトンは外部からのオブジェクトの生成を禁止し
代わりにオブジェクトへのアクセスの手段を提供することで
システム内に存在するオブジェクトが1つであることを保証する。
newを使ってオブジェクトを生成した場合、コンストラクタ
呼び出され初期化される。
しかし、システムの中にはこうした初期化が行われると
不都合な場合がある。
ロケールやLook&Feelなど
システム起動中にオブジェクトを1つだけ生成することを決めていたと
しても、それをオブジェクトを利用する側で管理するのは難しい。
そのためシングルトンが用いられる。

シングルトンの実現方法

・同じ型のインスタンスをクラス変数として宣言
コンストラクタの可視性をprivateで宣言する。
・getInstance()クラスメソッドによってオブジェクトを返すようにする。

//Javaです
public class Singleton{

  private static Singleton singleton;
  //ここでインスタンスをクラス変数として宣言
  //...

  private Singleton(){
    //....
  }
  //コンストラクタの可視性をprivateとして宣言

  public static Singleton getInstance(){
    if( singleton == null ){
      singleton = new Singleton();
    }
    return singleton;
  }
 //getInstance()クラスメソッドでオブジェクトを返す
 
  public synchronized Object getter(Object hoge){
    return hoge;
  }

  public synchronized void setter(Object hoge){
    //...
  }
}

注意

オーバーライドするときはコンストラクタをprotectedまたは
publicにする必要があるので、シングルトンを実現するのは大変。

理解が深まったら追記

http://ja.wikipedia.org/wiki/Singleton_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3#cite_note-GoF-1

Linuxのカーネルのバージョンが上がるたびにVMWareが起動しなくなる

こちらのサイトにある手順に従ったら無事起動するようになりました
http://blog.b0ne.me/ubuntu/vmware-error-when-kernel-upgrade

$ uname -r
3.x.x-x-generic
$ sudo ln -s /usr/src/linux-headers-3.x.x-x-generic/include/generated/uapi/linux/version.h /usr/src/linux-headers-3.x.x-x-generic/include/linux/version.h
$ sudo vmware-modconfig --console --install-all

これで普通に起動するようになりました

python-mecabを入れてみる

環境: ubuntu-12.04,python 2.7.3

mecab -v
mecab of 0.98

MeCabのバージョンに合わせたmecab-pythonをインストールしなければなりません。そのため、上記のコマンドでMeCabのバージョンを調べます。

wget http://sourceforge.net/projects/mecab/files/mecab-python/0.98/mecab-python-0.98.tar.gz
$ tar xvzf mecab-python-0.98.tar.gz
$ cd mecab-python-0.98
$ python setup.py build
$ sudo python setup.py build

これでPythonからMeCabが使えるようになりました。

python
Python 2.7.3 (default, Apr 10 2013, 06:20:15)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import MeCab
>>>

python-twitterをcentosで使う

yumでeasy_installをインストール

# yum install python-setuptools

easy_installでpython-twitterをインストール

# easy_install python-twitter
# vi test.py
------------------------------------------------------------------------------------------------------------------
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import twitter
 
api = twitter.Api(
  consumer_key = '******',
  consumer_secret = '******',
  access_token_key = '******',
  access_token_secret = '******'
  ,cache=None)

s = u"てst"

api.PostUpdate(status=s) -------------------------------------------------------------------------------------------------------------------

consumer_key, consumer_secret, access_token_key, access_token_secretは

https://dev.twitter.comでアプリを登録してもらえます

 

 

教師あり学習・教師なし学習

教師あり学習

決定木、人工ニューラルネットワークサポートベクターマシンベイジアンフィルタ

 

教師なし学習

クラスタリング、非負値行列因数分解、自己組織化マップ