アーカイブ
‘未分類’ カテゴリーのアーカイブ
Herokuで秋月電子の新商品RSS作った
2012 年 5 月 4 日
コメントはありません
Nokogiriで取得してRSS作った http://shokai.herokuapp.com/feed/akizuki.rss
Yahoo Pipes版が動かなくなってたので作りなおした。
意外と重要な部分だけ抜き出すの面倒だった。
RSS読まれるたびに秋月にアクセスすると申し訳ないのでcacheを作って、20分はcacheを使うことにした
memcacheを使えばいいんだけどなんとなく車輪の大発明をしてしまった。
昔は秋月RSSあったんだけどサイトリニューアルした時に無くなったんだよね。4年ぐらい前だったっけ?
電子工作の勉強をはじめたときは、何か作ろうとしても何が作れるのかわからない。
とりあえず有名な店の新着商品を3ヶ月ぐらい見ていれば、世の中にどんな部品が存在しているのかわかってくるはず。
このへんを定期的にチェックしておくと良い
UbuntuにMySQL5.1.62インストールした
2012 年 4 月 30 日
コメントはありません
sudo apt-get install mysql-server-5.1
rootパスワード設定した
localhostからしかrootでログインできないようになってた
ユーザー追加した
mysql -uroot -p
GRANT ALL on *.* TO shokai@"localhost" IDENTIFIED BY "password";
FLUSH PRIVILEGES;
DataMapperでMySQLを使ってみる
2012 年 4 月 30 日
コメントはありません
MacにhomebrewでMySQL5.1.58インストールしたの続き。Ruby+DataMapperで使ってみた編。
gem install data_mapper dm-mysql-adapter
できたもの
https://github.com/shokai/datamapper-study
全体的にMongoidに似てる。Mongoidっぽい華麗なメソッドチェーンによるqueryができないっぽいのだけ残念・・
でもコード書いてて書き心地よかったし、SQL素人なのでORマッパーごしじゃないと怖くて使えない。
参考にしたページ
- DataMapper – Getting started with DataMapper
- DataMapper – Documentation
- DataMapper – Properties
- DataMapper – Finding Records
chatとかBBSみたいなのを作ろうと思ったがWebアプリにしないでCUIで使うやつにした。
ruby -Ku bin/post_comment.rb てすとでMySQLに保存して、
ruby -Ku bin/show_comments.rbで保存してあるのを読む。
ファイルの構造はこうなってる
そのうちsinatra templateに組み込むつもりで書いてみた。
.
├── Gemfile
├── Gemfile.lock
├── README.md
├── bin
│ ├── console.rb
│ ├── migrate.rb
│ ├── post_comment.rb
│ └── show_comments.rb
├── bootstrap.rb
├── config.yml
├── models
│ └── comment.rb
└── sample.config.yml
2 directories, 11 files
DBの設定 config.yml
db :
adapter : mysql
host : localhost
database : study
username : yourname
password : xxxxxxxx
設定に書いたstudyって名前のDBをmysqlに作って、migrateしておく。
mysql -u your_name -p
mysql> create database study;
ruby bin/migrate.rb
model定義 models/comment.rb
Mongoidに似てる。デフォルト値はlambdaで渡すと都度計算してくれる。
class Commentクラスメソッドに「最近数件のコメントを取得」するメソッドを書いた。Query系はmodelに全部抽象的な名前で書いておいて、controllerとかにquery書かないようにすると綺麗になるし、modelだけで単体テストもできるようになる。
include DataMapper::Resource
property :id, Serial
property :name, String, :required => true
property :body, String, :required => true
property :created_at, Time, :default => lambda{Time.now}
def to_s
"[#{name}] #{body} - #{created_at}"
end
def self.get_latests(num=10)
self.all(:order => [:id.desc], :limit => num)
end
end
設定読み込んでMySQLに接続する
bootstrap.rb
#!/usr/bin/env rubyDataMapperにどのDBを使うか設定してからModelを読み込んで、Loggerを設定したらfinalizeする。finalizeしないとwebアプリとかで使った時に何度もDBに接続しにいったりModelの定義とかを実行してしまうらしい。
require 'rubygems'
require 'bundler/setup'
Bundler.require
require 'yaml'
begin
@@conf = YAML::load open(File.dirname(__FILE__)+'/config.yml').read
rescue => e
STDERR.puts e
STDERR.puts "config.yml load error!!"
exit 1
end
DataMapper.setup(:default, @@conf['db'])
Dir.glob(File.dirname(__FILE__)+'/models/*.rb').each do |rb|
puts "loading #{rb}"
require rb
end
DataMapper::Logger.new($stdout, :debug)
DataMapper.finalize
postする
bin/post_comment.rb
#!/usr/bin/env ruby
require File.dirname(__FILE__)+'/../bootstrap'
if ARGV.empty?
puts 'error : comment required'
puts "e.g. ruby #{$0} \"hello world\""
exit 1
end
begin
c = Comment.new(:name => `whoami`.strip, :body => ARGV.join(' '))
c.save
rescue => e
STDERR.puts e
exit 1
end
total = Comment.count
Comment.get_latests(5).each do |c|
puts "(#{c.id}/#{total}) #{c}"
end
最近のcommentを見る
bin/show_comments.rb
#!/usr/bin/env ruby
require File.dirname(__FILE__)+'/../bootstrap'
total = Comment.count
Comment.get_latests(20).each do |c|
puts "(#{c.id}/#{total}) #{c}"
end
postしたりshowした実行結果
(12/12) [sho] てすと - Mon Apr 30 13:14:10 +0900 2012
(11/12) [sho] MySQLに保存できるようになった - Mon Apr 30 00:52:25 +0900 2012
(10/12) [sho] できた!! - Mon Apr 30 00:52:06 +0900 2012
(9/12) [sho] できたのでは - Mon Apr 30 00:50:05 +0900 2012
(以下略)
あと、modelを読み込んでDB接続してIRB起動する簡単なスクリプト作っておくと、modelのメソッド試したりQuery発行できたりして便利
bin/console.rb
#!/usr/bin/env ruby
require File.dirname(__FILE__)+'/../bootstrap'
require 'irb'
IRB.start
MacにhomebrewでMySQL5.1.58インストールした
2012 年 4 月 30 日
コメントはありません
OSX Lionにosx-gcc-installerとCommand Line Tools for XCodeとHomebrewを入れてある。
MySQLほぼ使ったことなかったのでおっかなびっくりインストールした
brew install mysql++
brew tap homebrew/versions
brew search sql
brew install mysql51
portsが入ってるのでlinkを解決
brew link mysql51
unset TMPDIR
/usr/local/Cellar/mysql51/5.1.58/bin/mysql_install_db
LaunchAgent登録
cp /usr/local/Cellar/mysql51/5.1.58/com.mysql.mysqld.plist ~/Library/LaunchAgents/loadで起動、unloadで止めれる
launchctl load ~/Library/LaunchAgents/com.mysql.mysqld.plist
ps aux | grep mysql
test DBを消したりrootパスワード設定したりする
/usr/local/Cellar/mysql51/5.1.58/bin/mysql_secure_installation
新規ユーザー追加する
mysql -uroot -p
GRANT ALL on *.* TO shokai@"localhost" IDENTIFIED BY "password";
FLUSH PRIVILEGES;
ログインしてみる
mysql -ushokai -p
mysql> show databases;
GoldFishが日経BP Android Application Awardで優秀賞もらった
2012 年 4 月 28 日
コメントはありません
イエーイ
GoldFish
畑山さんがキャプチャしてくれた授賞式のようす
GoldFishという、Android NFCとJavaScriptで実世界GUIを作れるフレームワークを作っています。
- 橋本商会 » Interface(雑誌)に記事を書いた
- 橋本商会 » ORF2011で実世界コピペ、実世界ユーザインタフェース等を展示した
- 橋本商会 » AndroidとNFCで研究室の鍵を開けるシステムができた
- AndroidでNFCタグに触るとアプリが起動する
- アプリはJavaScriptで書く
- JSだけどAndroidの各種センサー使える(ネイティブとのブリッジがある)
- アプリはタグタッチ時にロードされるので、Marketでインストールしてない人もすぐ使える
最近よく作っているPhidgetsやプリンタや赤外線リモコンやシリアルポートやNFCタグリーダやらをHTTPサーバ化するのも、GoldFishの部品的な位置づけです。
目の前にある物を操作するなら直接操作でできるべきだし、そのためには物理的に存在する全てがHTTPでアクセスできた方がいい。
当日使ったスライド(pdf)
どうやらslide shareが容量のリミットに達したらしくアップロードできない・・

最近のコメント