世界的日曜WEBプログラマー日記 -23ページ目

世界的日曜WEBプログラマー日記

一年後に世界的なWEBサービスを運営するにはどうすればいいのか書いていく(予定)


DjangoでMogoDBを動かす方法を説明します。

DjagoでMongoDBを使うにはいくつかの拡張をいれます。尚、ここではOSはUbuntuを想定しています。なお、すでにmongodbとdjangoはインストールされているとします。(MongoDBのインストール方法)

DjangoでMogoDBを動かす!
手順その1 必要ライブラリのインストール
apt-get で一発…という訳にはいきません。以下のライブラリをインストールする必要があります。
1.pymongo
2.mongoDB backend(https://github.com/django-mongodb-engine/mongodb-engine)
3.Django-nonrel
4.djangotoolbox

インストールは単純です。次に示します。
$ sudo apt-get install pymongo
$ mkdir install_dir && mv install_dir # ディレクトリの作成と移動
$ git clone https://github.com/django-nonrel/mongodb-engine
$ hg clone https://bitbucket.org/wkornewald/django-nonrel
$ hg clone https://bitbucket.org/wkornewald/djangotoolbox

3つディレクトリが出来ているので、それぞれのディレクトリで次のコマンドをタイプします。
$ python setup.py install

これでインストール終了です。

(2013/2/17) 以前、以下のものをダウンロード必要と行っていましたが間違いですm(_ _)m
$ hg clone https://bitbucket.org/wkornewald/allbuttonspressed


それではアプリケーションディレクトリを作ります。
$ django-admin startproject mysite # マイサイトを作成。名前は任意
$ cd mysite
$ emacs settings.py

settings.pyは以下のように記述されているでしょう。
DATABASES = {
'default': {
'ENGINE': 'django_mongodb_engine',
'NAME': 'test',
'USER': '',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': 27017,
}
}

INSTALLED_APPS = (
...
'djangotoolbox',
)


つづいて、recommendation(名前は任意)というアプリをつくります
$ django-admin.py startapp recommendation

とします。Djangoではプロジェクトの中にいくつもサイト(アプリ)を作ってい行くイメージです。recommendationsというアプリを作ったのでこのアプリを登録しましょう。現在いるディレクトリ(mysite直下のはず。。。)にあるurls.pyを編集します。
$ emacs urls.py

以下のように記述します。
urlpatterns = patterns('',                                         
url(r'^test/', include('mysite.recommendation.urls')),
)

作ったrecommendationに移動して、urls.pyを作成します。
$ cd recommendation
$ emacs urls.py

ディレクトリrecommendationにあるurls.pyは以下のようになります。(くどいようですがrecommendationは先ほど作成したディレクトリで名前は任意に決められます。)
from django.conf.urls.defaults import patterns
urlpatterns = patterns('recommendation.views',
(r'^$', 'testview' ),
)

ここまでは普通のDjangoプロジェクトと同じです。
続いてModelを作成します。( models.pyの編集)
$ emacs models.py

models.pyの中身は以下のようになります。
from django.db import models
class Article(models.Model):
title = models.CharField(max_length = 64)
content = models.TextField()

そして、最後にViewを書きます。ここでDjangoをやったことのある人はお気づきかもしれませんが
マイグレーションが入りません!これが大きな違いです。
$ emacs views.py

views.pyは以下のようになります。
from django.http import HttpResponse
from models import *

def testview(request):
article = Article(title = 'test title',content = 'test content')
article.save()
return HttpResponse("<h1>Saved!</h1>")

以上でおわりです。なお、この関数名testviewはurls.pyに書かれているものと一緒でなくてはなりません。注意してください。

ブラウザで以下のサイトを訪れます。
127.0.0.1/recommendation/recommendation
Saved!とでたらOKです。

つづいて、実際にデータが格納されたのか確かめてみます。mongoとコンソールでうつとデータベースとつながるはずです。

$ mongo
> show dbs
> use mydatabase # 使うデータベースの選択
> show collections # 要素の確認。Tableの確認みたいなかんじ
> db.recommendation_article.find() # コレで実際に格納されているデータを確認する。


以上です。お疲れ様でしたー。

困ったときはhelpが使えます

株式会社OctOpt
コンピューターサイエンス会社OctOptの技術公式ブログ
等々力 康弘
@rocky_house
ランダムフォレストってなんだ? SVMとは?機械学習ってなんだ?PCA(主成分分析)とは、LDA(線形判別分析)ってなんだろう?
RBFを知りたい!

そんな要望に答えるために、ある機械学習のサイトを製作中です。知りたいアルゴリズムなどありましたらガンガン要望ください!

株式会社OctOpt
コンピューターサイエンス会社OctOptの技術公式ブログ
等々力 康弘
@rocky_house
AndroidでSDCARDにある画像を読み込む方法について。

Android上におけるSDCardのファイルパスは/mnt/sdcardとなっている。
単に/sdcardだけでもアクセスできる。
例えばSDCARDにhoge.jpgをおいた場合/sdcard/hoge.jpgがファイルパスとなる。

画像の読み込みにはBitmapFactoryを用いる。
Bitmap jpgfile = BitmapFactory.decodeFile("/sdcard/hoge.jpg");
これだけで読み込まれる。

画素に直接アクセスしたい場合(読み込み、書き込みなど)は、
画像サイズ分(縦x横)の空の配列を用意してgetPixelsを呼ぶ。
以下はそのサンプル。

int w = jpegfile.getWidth();
int h = jpegfile.getHeight();
int array_data[] = new int[ base_width * base_height ];
jpegfile.getPixels(array_data, 0, w, 0, 0, w, h);

これでarray_dataに値が書き込まれている。


株式会社OctOpt
コンピューターサイエンス会社OctOptの技術公式ブログ
等々力 康弘
@rocky_house