2012年6月11日月曜日

rails3.2でCan't mass-assign protected attributesがでたときのメモ

ちょっとはまりました

外部キーを使うときのモデルでは(例えばbelongs_to:product,belongs_to:cartとなるようなとき)をもつときは

attr_accesible :product_id, :cart_id

とするのではなく

attr_accesible :product, :cart

とするのですね。

2012年6月10日日曜日

railsでCan't connect to local MySQL server through socketのerrorが出た時

railsでCan't connect to local MySQL server through socketのエラーがでたときの対応です。

例えばCan't connect to local MySQL server through socket '/tmp/mysql.sock'とでたとき,railsは/tmp/mysql.sockに接続しにいこうとしているけど,接続できなかったよということです。

/config/database.ymlをみると
socket: /tmp/mysql.sock

つづいてmysqlのソケットがどこにあるかを調べてみます

mysqladmin -p version

とうつと

僕の環境の場合

UNIX socket /var/lib/mysql/mysql.sock

とでてきました。
そこでdatabase.ymlの中身を

socket: /var/lib/mysql/mysql.sock

と変えると,無事動きます。

2012年5月18日金曜日

twitterでtweetを全削除するスクリプト

tweetを全削除するサービスでTwitWipeというのがあったんですが,アクセスできなくなったので自分でスクリプトを作ってみました

#! /usr/local/bin/python
# -*- coding:utf-8 -*-
import twitter
import sys
import time
consumer_key='Your Consumer Key'
consumer_secret='Your Consumer Secret'
token='Your Access Token Key'
token_secret='Your Access Token Secret'
def set_api():
return twitter.Api(consumer_key=consumer_key,
consumer_secret=consumer_secret,
access_token_key=token,
access_token_secret=token_secret)
#最新のtweet3200個のidを取得
def get_tweet_id():
tw_api=set_api()
count=200
max_id=None
id_list=[]
i=0
while True:
if i==16:
break
i+=1
try:
data=tw_api.GetUserTimeline(count=count,max_id=max_id,include_rts=True)
for s in data:
if max_id!=s.id:
id_list.append(s.id)
max_id=s.id
print "get_tweet_id%s回目" % i
except:
print "get_tweet_id%s回目" % i
print sys.exc_info()
break
return id_list
#渡されたtweetのidのリストを展開してtweetを削除
def tweet_delete(id_list):
tw_api=set_api()
for id in id_list:
try:
data=tw_api.DestroyStatus(id)
print "delete id:%s,tweet:%s" % (data.id,data.text)
except:
print sys.exc_info()
continue
if __name__=='__main__':
id_list=get_tweet_id()
tweet_delete(id_list)
view raw tw_delete.py hosted with ❤ by GitHub


consumer_keyとかtokenとかは自分でアプリつくってください。
アプリの権限はPostまでとるようにしてください。

twitterのapi制限で1時間あたり3200tweetしか取得できないのでcronで1時間ごとに回してください。

このコードで不具合が起こった場合は自己責任でおねがいします

※追記
python-twitterってモジュール使ってます。http://code.google.com/p/python-twitter/
pipかbrewで入ったきもします。はいらなかったら上記のリンクのソースからインストールしてください

3200tweet消したら以降のtweetが取得できませんでした。おそらくtwitterは直近3200のtweetはキャッシュがきく位置にあって,それ以降はキャッシュにのらないように運用しているからだと思われます。cronでまわさずとも3200個けしてしまえばおわりみたいですね。

2012年4月20日金曜日

今更www2011の論文を読んでみる

今更www2011の論文読んでみます。

とりあえず気になるSessionとしては,Recommendation,Web Mining,Semantic Analysis,Social Network Analysis,Social Network Algorithm,Temporal Dynamics,Information Credibility,Clusteringあたりですかねー。 

社会人と違って時間だけはあるので,じっくり読んで,またサーベイでもBlogに書こうかなーと思います。ではでは

2012年3月31日土曜日

英語のお勉強 -A new dimension for solar energy

これから毎日MIT news office というサイトの記事を読んで英語のお勉強しようと思います。

 今日はこの記事 A new dimension for solar energy 

太陽電池の構造のお話。構造をflatではなく3次元のキューブやタワー状(記事の写真を見るとイメージ沸きます)にすることで2-20倍の出力が出たらしいです。

3次元構造にすることによって朝とか夕方とか冬とかの太陽が地平線に近い時でも効率的にエネルギーを集めれるのがこの出力の大きさの理由みたいです。

それでcell自体のコストはどんどん下がっていってるみたいで,そうなればなるほど3次元構造が有利になっていくらしいです(?)ここらへんよくわからなかった。(設置費用とか土地の費用の方が相対的に高くなっていくから効率的な構造で設置できることが大事になるってことなのかな ...) 

発見のきっかけもなかなか快晴の日がなくて実験できずにイライラしていたのですが,曇りの日に大きな改善を示してることからこの発見に至ったそうです。観察大事

というわけでこうゆう電池系となると素材とかの実験ばっかやっているのかなーという勝手なイメージだったのですが,構造を変えることで効率を良くできるみたいなシステム的なことも考えてるのだな(当たり前か...)というくだらない感想を持ちました。こういうシミュレーションとかもおもしろそうと思っちゃいますね。

 -調べた単語
photovoltaic cell:光電池
equator:赤道
configuration:地形
ripe:熟した

2012年3月21日水曜日

macでScalaで日本語

若干はまった。

設定ファイルに

JAVA_OPTS="-Dfile.encoding=UTF-8"

とかけばおっけー

2012年3月15日木曜日