2011-11-02
ローカルに作った gem の中身を irb の中から読むには
今まで知らなかったのがアホなだけなのだが、
gem では、ホームディレクトリにローカルにリポジトリを作ることができる。
gemには、$HOME/.gemrc を通して、その場所を伝える。
ruby や irb は、そんなファイル、知ったことではない。
そこで、
require 'rubygems'
と書くと、gemの環境定義を調べて、gemの中のlibに、パスを通してくれる。
だから、冒頭で、 require rubygems とやるのは大事。
.gemrcの中で gemhome とかいって、パスを指定するのだが、そこにチルダを書くと、gemコマンドは認識するが、 require rubygems の方は、認識しないので、注意!!
ほげほげ does not appear to be a gem repository というエラーを食らう。
qpidd 設定メモ
前回のTurboGearsは、なにもできてないんだけど、それはさておき、
CentOSでqpidを動かしてみるメモ。
Apache qpid は、AMQPプロトコルをサポートしたMOM。
RabbitMQはErlangで書かれていて、性能をずいぶん追求してるみたいだけど、こちらはおとなしくC++で実装されている。
CentOSでRabbitMQを探したら、入ってなくって、代わりにqpidが入っていたので、動かしてみる。
これを読みながら進める。
まず、qpidをインストールすると、デーモンの起動・停止スクリプトが普通にインストールされるので、それをたたいてみる。
% sudo /etc/init.d/qpidd start
で起動
% sudo /etc/init.d/qpidd stop
で停止。
認証するには、saslとかいう仕組みをつかうらしい。それには、
(1) qpidd の起動時設定ファイルの中で、realm名を決めて指定しておいて
(2) saslのツールを使ってパスワードファイルを所定の場所に作成し、
(3) パスワードファイルのオーナーを qpidd の実行ユーザ (centos では "qpidd")のみにして600 にしておく
ということをする。
(1)について、/etc/qpidd.conf の中に、以下を書く。
auth=yes realm=myrealm
(2) については、saslのコマンドをたたく
% sudo saslpasswd2 -f /var/lib/qpidd/qpidd.sasldb -u myrealm mb25010
パスワードを求められる。
登録されているパスワード一覧を見るコマンドがある。
% sudo sasldblistusers2 -f /var/lib/qpidd/qpidd.sasldb mb25010@myrealm: userPassword
(3)は省略。
デーモンを起動したあとで、これらの設定をしてしまったので、デーモンを再起動。
% sudo /etc/init.d/qpidd restart
2011-10-25
TurboGears 練習
見るのは、http://www.turbogears.org/book/part1/wiki20.html
- virtualenv のインストール
virtualenvは、pythonの追加ライブラリのインストール先として、マシンのデフォルトディレクトリではないディレクトリを作るもの。そのディレクトリにインストールする分には、マシンのデフォルトのライブラリ一式を汚す心配がない。
ubuntuで使えるようにするには、python-virtualenv をインストールする。
% sudo apt-get install python-virtualenv
- ipythonのインストール
ipython を使うと、入力補完とか、できるらしい。
チュートリアルにはeasy_installの利用例が示されているが、うまくいかなかった。
ふつうにapt-getしたらうまくできた。
% sudo apt-get install ipython
ずいぶんいろいろと、前提で取り込まれたぞ。
そしたら仮想環境を作る。
% virtualenv myenv
その仮想環境に入る
% . myenv/bin/activate (myenv)%
入るとプロンプトが変わる。
この中で、turbogearsをインストールする。
(myenv)% easy_install tg.devtools
チュートリアルにいわれるままに、paster quickstart を起動。rails に相当するコマンドですね。
(myenv)% paster quickstart
Enter project name: Wiki 20
Enter package name [wiki20]: wiki20
Would you prefer mako templates? (yes/[no]): no
Do you need authentication and authorization in this project? ([yes]/no): yes
Selected and implied templates:
tg.devtools#turbogears2 TurboGears 2. Standard Quickstart Template
Variables:
auth: sqlalchemy
cookiesecret: a271a731-563d-41e4-b93a-5d264b1e3e24
egg: Wiki_20
geo: None
mako: False
migrations: True
ming: False
package: wiki20
project: Wiki-20
sqlalchemy: True
tgversion: 2.1.3
Creating template turbogears2
Creating directory ./Wiki-20
Recursing into +package+
Creating ./Wiki-20/wiki20/
Copying __init__.py_tmpl to ./Wiki-20/wiki20/__init__.py
Recursing into config
Creating ./Wiki-20/wiki20/config/
Copying __init__.py_tmpl to ./Wiki-20/wiki20/config/__init__.py
Copying app_cfg.py_tmpl to ./Wiki-20/wiki20/config/app_cfg.py
Copying deployment.ini_tmpl_tmpl to ./Wiki-20/wiki20/config/deployment.ini_tmpl
Copying environment.py_tmpl to ./Wiki-20/wiki20/config/environment.py
Copying middleware.py_tmpl to ./Wiki-20/wiki20/config/middleware.py
Recursing into controllers
Creating ./Wiki-20/wiki20/controllers/
Copying __init__.py_tmpl to ./Wiki-20/wiki20/controllers/__init__.py
Copying controller.template_tmpl to ./Wiki-20/wiki20/controllers/controller.template
Copying error.py_tmpl to ./Wiki-20/wiki20/controllers/error.py
Copying root.py_tmpl to ./Wiki-20/wiki20/controllers/root.py
Copying secure.py_tmpl to ./Wiki-20/wiki20/controllers/secure.py
Copying template.py_tmpl to ./Wiki-20/wiki20/controllers/template.py
Recursing into i18n
Creating ./Wiki-20/wiki20/i18n/
Recursing into ru
Creating ./Wiki-20/wiki20/i18n/ru/
Recursing into LC_MESSAGES
Creating ./Wiki-20/wiki20/i18n/ru/LC_MESSAGES/
Copying +package+.po_tmpl to ./Wiki-20/wiki20/i18n/ru/LC_MESSAGES/wiki20.po
Recursing into lib
Creating ./Wiki-20/wiki20/lib/
Copying __init__.py_tmpl to ./Wiki-20/wiki20/lib/__init__.py
Copying app_globals.py_tmpl to ./Wiki-20/wiki20/lib/app_globals.py
Copying base.py_tmpl to ./Wiki-20/wiki20/lib/base.py
Copying helpers.py_tmpl to ./Wiki-20/wiki20/lib/helpers.py
Recursing into model
Creating ./Wiki-20/wiki20/model/
Copying __init__.py_tmpl to ./Wiki-20/wiki20/model/__init__.py
Copying auth.py_tmpl to ./Wiki-20/wiki20/model/auth.py
Copying model.template_tmpl to ./Wiki-20/wiki20/model/model.template
Recursing into public
Creating ./Wiki-20/wiki20/public/
Recursing into css
Creating ./Wiki-20/wiki20/public/css/
Copying admin.css to ./Wiki-20/wiki20/public/css/admin.css
Copying style.css to ./Wiki-20/wiki20/public/css/style.css
Copying favicon.ico to ./Wiki-20/wiki20/public/favicon.ico
Recursing into images
Creating ./Wiki-20/wiki20/public/images/
Copying add.png to ./Wiki-20/wiki20/public/images/add.png
Copying contentbg.png to ./Wiki-20/wiki20/public/images/contentbg.png
Copying delete.png to ./Wiki-20/wiki20/public/images/delete.png
Copying error.png to ./Wiki-20/wiki20/public/images/error.png
Copying header_inner2.png to ./Wiki-20/wiki20/public/images/header_inner2.png
Copying headerbg.png to ./Wiki-20/wiki20/public/images/headerbg.png
Copying info.png to ./Wiki-20/wiki20/public/images/info.png
Copying inputbg.png to ./Wiki-20/wiki20/public/images/inputbg.png
Copying loginbg.png to ./Wiki-20/wiki20/public/images/loginbg.png
Copying loginbottombg.png to ./Wiki-20/wiki20/public/images/loginbottombg.png
Copying loginheader-left.png to ./Wiki-20/wiki20/public/images/loginheader-left.png
Copying loginheader-right.png to ./Wiki-20/wiki20/public/images/loginheader-right.png
Copying menu-item-actibg-first.png to ./Wiki-20/wiki20/public/images/menu-item-actibg-first.png
Copying menu-item-actibg.png to ./Wiki-20/wiki20/public/images/menu-item-actibg.png
Copying menu-item-border.png to ./Wiki-20/wiki20/public/images/menu-item-border.png
Copying menubg.png to ./Wiki-20/wiki20/public/images/menubg.png
Copying ok.png to ./Wiki-20/wiki20/public/images/ok.png
Copying pagebg.png to ./Wiki-20/wiki20/public/images/pagebg.png
Copying pencil.png to ./Wiki-20/wiki20/public/images/pencil.png
Copying star.png to ./Wiki-20/wiki20/public/images/star.png
Copying strype2.png to ./Wiki-20/wiki20/public/images/strype2.png
Copying under_the_hood_blue.png to ./Wiki-20/wiki20/public/images/under_the_hood_blue.png
Copying warning.png to ./Wiki-20/wiki20/public/images/warning.png
Recursing into javascript
Creating ./Wiki-20/wiki20/public/javascript/
Copying empty to ./Wiki-20/wiki20/public/javascript/empty
Recursing into templates
Creating ./Wiki-20/wiki20/templates/
Copying __init__.py to ./Wiki-20/wiki20/templates/__init__.py
Copying about.html to ./Wiki-20/wiki20/templates/about.html
Copying authentication.html to ./Wiki-20/wiki20/templates/authentication.html
Copying data.html to ./Wiki-20/wiki20/templates/data.html
Copying debug.html to ./Wiki-20/wiki20/templates/debug.html
Copying environ.html to ./Wiki-20/wiki20/templates/environ.html
Copying error.html to ./Wiki-20/wiki20/templates/error.html
Copying footer.html to ./Wiki-20/wiki20/templates/footer.html
Copying header.html to ./Wiki-20/wiki20/templates/header.html
Copying index.html to ./Wiki-20/wiki20/templates/index.html
Copying login.html to ./Wiki-20/wiki20/templates/login.html
Copying master.html to ./Wiki-20/wiki20/templates/master.html
Copying sidebars.html to ./Wiki-20/wiki20/templates/sidebars.html
Recursing into tests
Creating ./Wiki-20/wiki20/tests/
Copying __init__.py_tmpl to ./Wiki-20/wiki20/tests/__init__.py
Recursing into functional
Creating ./Wiki-20/wiki20/tests/functional/
Copying __init__.py_tmpl to ./Wiki-20/wiki20/tests/functional/__init__.py
Copying test_authentication.py_tmpl to ./Wiki-20/wiki20/tests/functional/test_authentication.py
Copying test_root.py_tmpl to ./Wiki-20/wiki20/tests/functional/test_root.py
Recursing into models
Creating ./Wiki-20/wiki20/tests/models/
Copying __init__.py_tmpl to ./Wiki-20/wiki20/tests/models/__init__.py
Copying test_auth.py_tmpl to ./Wiki-20/wiki20/tests/models/test_auth.py
Recursing into websetup
Creating ./Wiki-20/wiki20/websetup/
Copying __init__.py_tmpl to ./Wiki-20/wiki20/websetup/__init__.py
Copying bootstrap.py_tmpl to ./Wiki-20/wiki20/websetup/bootstrap.py
Copying schema.py_tmpl to ./Wiki-20/wiki20/websetup/schema.py
Copying MANIFEST.in_tmpl to ./Wiki-20/MANIFEST.in
Copying README.txt_tmpl to ./Wiki-20/README.txt
Copying development.ini_tmpl to ./Wiki-20/development.ini
Recursing into ez_setup
Creating ./Wiki-20/ez_setup/
Copying README.txt to ./Wiki-20/ez_setup/README.txt
Copying __init__.py to ./Wiki-20/ez_setup/__init__.py
Recursing into migration
Creating ./Wiki-20/migration/
Copying __init__.py_tmpl to ./Wiki-20/migration/__init__.py
Copying migrate.cfg_tmpl to ./Wiki-20/migration/migrate.cfg
Recursing into versions
Creating ./Wiki-20/migration/versions/
Copying __init__.py_tmpl to ./Wiki-20/migration/versions/__init__.py
Copying setup.cfg_tmpl to ./Wiki-20/setup.cfg
Copying setup.py_tmpl to ./Wiki-20/setup.py
Copying test.ini_tmpl to ./Wiki-20/test.ini
Running /home/mb25010/tg/env/bin/python setup.py egg_info
['TurboGears2 >= 2.1.2', 'Genshi', 'zope.sqlalchemy >= 0.4', 'repoze.tm2 >= 1.0a5', 'sqlalchemy', 'sqlalchemy-migrate', 'repoze.what >= 1.0.8', 'repoze.who-friendlyform >= 1.0.4', 'repoze.what-pylons >= 1.0', 'repoze.who==1.0.19', 'tgext.admin >= 0.3.11', 'repoze.what-quickstart', 'repoze.what.plugins.sql', 'tw.forms']
running egg_info
writing requirements to Wiki_20.egg-info/requires.txt
writing Wiki_20.egg-info/PKG-INFO
writing top-level names to Wiki_20.egg-info/top_level.txt
writing dependency_links to Wiki_20.egg-info/dependency_links.txt
writing entry points to Wiki_20.egg-info/entry_points.txt
writing paster_plugins to Wiki_20.egg-info/paster_plugins.txt
reading manifest file 'Wiki_20.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'Wiki_20.egg-info/SOURCES.txt'
そうしたら、Wiki-20/setup.py を編集して、requiredなものとしてdocutilsを追加する。
install_requires=[
"TurboGears2 >= 2.1.2",
"Genshi",
"zope.sqlalchemy >= 0.4",
"repoze.tm2 >= 1.0a5",
"sqlalchemy",
"sqlalchemy-migrate",
"repoze.what >= 1.0.8",
"repoze.who-friendlyform >= 1.0.4",
"repoze.what-pylons >= 1.0",
"repoze.who==1.0.19",
"tgext.admin >= 0.3.11",
"repoze.what-quickstart",
"repoze.what.plugins.sql",
"tw.forms",
"docutils"
]
そうして、setup.pyを実行する。
% cd Wiki-20 % python setup.py develop
2011-06-11
CUDA by Example
GTX275のcapability
D:\projects\cuda\CudaByExample\chapter03>enum_gpu --- General Information for device 0 --- Name: GeForce GTX 275 Compute capability: 1.3 Clock rate: 1404000 Device copy overlap: Enabled Kernel execution timeout : Enabled --- Memory Information for device 0 --- Total global mem: 922091520 Total constant Mem: 65536 Max mem pitch: 2147483647 Texture Alignment: 256 --- MP Information for device 0 --- Multiprocessor count: 30 Shared mem per mp: 16384 Registers per mp: 16384 Threads in warp: 32 Max threads per block: 512 Max thread dimensions: (512, 512, 64) Max grid dimensions: (65535, 65535, 1)
2011-05-04
clang doesn't handle non-ascii source files correctly
I am tinkering around with clang-2.9
I noticed it doesn't handle utf-8 source code correctly.
My LANG setting is ja_JP.UTF-8 This means that text oriented programs should expect the encoding of the text files are UTF-8.
gcc handles this correctly, but clang didn't.
I hope it gets supported soon.
FreeBSDでllvm, clang を使ってboostを試してみる。
今日の私のバージョンは、
% pkg_info | grep "llvm\|clang\|boost" boost-libs-1.45.0_1 Free portable C++ libraries (without Boost.Python) clang-2.9 C, Objective-C, and (alpha-quality) C++ compiler llvm-2.9 Low Level Virtual Machine
% clang++ prot1.o -I/usr/local/include prog1.cpp /usr/local/bin/ld: error in /usr/lib/crtend.o(.eh_frame); no .eh_frame_hdr table will be created.
リンク時にエラーが出るけど、これはFreeBSDの問題で、FreeBSD9では治るとか。
動作に支障はないみたい。
2010-02-27
You can't extend / expand / enlarge a mounted FreeBSD partition / slice
I ran out of space for the slice that held /usr on my FreeBSD 8.0 installation.
I tried to enlarge it using fdisk => bsdlabel => growfs, but failed.
The tools will only work for an unmounted slice, which is quite natural.
You can't enlarge the slice that you boot from.
I failed in the part that bsdlabel will not write back the modified label table.
So I chose to install the OS again in a bigger partition.
The reason why I ran out of space is the work space required for building OpenOffice.org . To build it you need something like 30GB of work space, which sounds unreasonable to me.
If you ran out of space for /usr, and you don't want to install the OS again, you can try more conventional things like :
(1) Allocate a separate disk or partition
(2) make a file system on it, mount it somewhere.
(3) Copy the existing contents to your new file system
(4) modify fstab so that next time that new thing will be mounted
(5) After reboot, delete the contents of the old /usr partition.
(6) If the old /usr was not a partition in its own, boot with single user mode, and delete the contents of /usr.