2012-12-28

SONY Readerを買ったよ

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク


kindleが気になっていたのですが、SONYのReader Storeで大量に漫画を買ってしまったのでこちらを買ってみました。
タブレットで読んでいたのですが、もう一つ読めるものがほしいなぁと思って買ってしまいました。

大量に漫画を買ったので本体メモリ1.3Gぐらいでは足りない感じになってしまったのです。
いちいち入れ替えとか面倒なのでやりたくないのです。

Sony Readerでは、32GまでのMicroSDが利用できるようなので、買った漫画をMicroSDに全部突っ込もうと考えたりもしたのです。

でも商品説明ページを見ると

* 著作権保護機能(CPRM)には非対応です

と、いまいまよくわからないこと書いてあります。
Reader Storeで買ったものも著作権保護とかって、きっとかかっているような気がする・・・
ひょっとしてReader Storeで買ったものも、まさかSDに保存したら見れないのか・・・

とか心配になったのですが、問題ないようでした。
Reader Storeで買ったものをSDカードに保存して、読むことがちゃんとできます。

今回は、以下のものを買ってみました。


で、実際に使ってみた感想です。
軽さはすばらしいです。ページもすんなり切り替わってよい感じです。
画面をタッチしてもページはめくれるのですが、物理ボタンでのページめくりの方が私は使いやすいと思いました。
6インチのサイズは実際の単行本よりも小さいサイズなので、ちょっと文字は小さくなってしまいます。文庫版サイズの漫画を読んでいる感覚です。

同じぐらいの軽さで漫画の単行本と同じサイズぐらいのものがあったら、よいような気がします。
6インチは漫画を読むにはちょっと小さい感じです。

あとは電子書籍が実際の単行本と同じタイミングで発売されるようになって欲しいなぁとか思うわけです。


2012-12-27

状態監視ツールmuninのインストール手順

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
SoftwareDesignでlinuxの状態監視ツールのmuninを紹介していて興味を持ってみたのです。


この本で紹介されている手順では、最新版ではズーム機能がうまく動きませんでした。

環境は、CentOS6にmunin2.0.8を入れることを前提とします。

また10.10.10.20のマシンの状態を10.10.10.10で監視するとします。

以下が手順です。


[監視される側(10.10.10.20)]
yum --enablerepo=epel install munin-node

vi /etc/munin/munin-node.conf
以下を環境にあわせて登録
host_nameに監視される側のホスト名を
allowに監視する側のIPアドレスを書きます。
---------------------------
host_name munin.sample.jp
allow ^10\.10\.10\.10$
---------------------------

chkconfig munin-node on

service munin-node start

vi /etc/httpd/conf.d/status.conf
-----------------------------------
<IfModule mod_status.c>
ExtendedStatus On
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
</IfModule>
-----------------------------------

service httpd configtest
service httpd graceful

ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/
ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/
ln -s /usr/share/munin/plugins/apache_volume /etc/munin/plugins/

service munin-node restart





[監視する側(10.10.10.10)]
yum --enablerepo=epel install munin
yum --enablerepo=epel install munin-cgi

vi /etc/munin/munin.conf
以下の変更を行う
[munin.sample.jp]
は監視される側の情報です。addressにIPアドレスを記載します。
------------------------------------
cgiurl_graph /cgi-bin/munin-cgi-graph

[munin.sample.jp]
address 10.10.10.20
use_node_name yes
------------------------------------

#以下はいらないかもしれないです。
chown -R munin.apache /var/log/munin
chmod 775 /var/log/munin
chown -R munin.apache /var/www/html/munin
chmod -R 775 /var/www/html/munin
mkdir /var/lib/munin/cgi-tmp
chown munin.apache /var/lib/munin/cgi-tmp
chmod 775 /var/lib/munin/cgi-tmp
mkdir /var/lib/munin/spool
chown munin.munin /var/lib/munin/spool
chmod 755 /var/lib/munin



これでOKです。お手軽です。便利です。

2012-12-16

ActiveScaffoldでも楽観的ロックは使えるようです

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
railsで楽観的ロックを使うためにはテーブルにlock_versionというinteger型のカラムを追加してあげればOKなのです。

詳しくは、以下が参考になります。
http://rubyonrails.gachinko.org/2012/11/

ActiveScaffoldもlock_versionというカラムがあればきちんと楽観的ロックを利用してくれます。
1点だけ注意する点としては、更新するカラムを限定している場合時でもlock_versionを更新対象に含めてあげることを忘れてはいけないのです。


ちなみに、このブログでactive_scaffoldに関しての情報を他にも乗せています。
ActiveScaffoldの小ネタのまとめ

2012-12-11

windowsでrubyプログラムを配布するにはocraが便利

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
rubyでちょろちょろっとプログラムを書いたから活用してもらいたいなぁとか思ったときです。

rubyを使っている人ならいいのですが、プログラマーでない人にくばるとなるとwindows環境でruby実行環境があることは期待できません。

そんなときはocraが便利です。
rubyスクリプトとruby実行環境をまとめてexeファイルにしてくれます。
gem install ocra
でインストールできます。

exeを作るのも
ocra aaa.rb
みたいにexe化したいスクリプトをわたせばexeファイルを生成してくれます。
以下が参考になります。
http://myruby.seesaa.net/article/124126159.html

他にもexerbもあるのですが、1.9ではocraがよいようです。
以下が参考になります。
http://aoitaku.xrea.jp/logue/2012/04/12/to_distribute_ruby_application/

exe化するときは若干気をつけたほうがよいことがあります。
ocraは実行時にどこかにファイルを展開して実行しています。

なので配布したexeファイルと同じフォルダに設定ファイルを読み込ませるみたいな動きはうまく動きません。
なので設定ファイルの変わりに実行時の引数と渡すようにしてbat側に設定を入れておいてbatの中で引数つきで実行させるとよいです。

またexeファイルと同じフォルダにログでも出力しようかなぁと思ったときも、同じフォルダに出力されずに思わぬところに出力されます。
なのでファイル出力の変わりに標準出力に出力してbat側でファイルに保存させればよい感じです。



2012-11-29

ハニワLED

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
LEDをリューターで削って黒マジックで塗ってみた。


2012-11-03

rubyでicalendar形式のファイルを読み込んでgoogleカレンダーに登録する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
スケジュールソフトで他のソフトと連携できるようにするためにicalendar形式でデータを出力できるものがあります。
そのファイルをgoogleカレンダーで取り込むことができます。
以下に具体的に説明があります。
http://support.google.com/calendar/bin/answer.py?hl=ja&answer=37118

これと似たようなことをrubyでやる方法です。

条件としては、以下のような感じです。
・icalendarのデータを取り込むための他のデータが入っていない専用のgoogleカレンダーが一つ必要
・取り込む際に、一定期間の登録済みデータを削除する
・単純な繰り返し予定は登録可能

sample.icsファイルを読み込む場合は以下のような感じです。
gclapi
icalendar
vpim
simple-rss
が必要ですのでgemでインストールしてください。

# -*- encoding: utf-8 -*-

require 'rubygems'
require 'date'
require 'gcalapi'
require 'icalendar'
require 'simple-rss'
require 'vpim/icalendar'

GACCOUNT = "googleアカウント"
GPASSWD  = "googleアカウントのパスワード"
GCALNAME = "データ登録するgoogleカレンダーの名前"
DEL_TERM = 31 #登録済みデータを削除する期間

service = GoogleCalendar::Service.new(GACCOUNT,GPASSWD)
g_cals = SimpleRSS.parse( service.calendars.body ).entries

gcal_link = nil
g_cals.each do |c|
  if c[:title].encode('utf-8','utf-8') == GCALNAME
    gcal_link = c[:link]
    break
  end
end

gcal = GoogleCalendar::Calendar::new(service, gcal_link)

today  = Date.today
endday = Date.today + DEL_TERM

conditions = {}
conditions['start-min'] = today
conditions['start-max'] = endday
gcal.events(conditions).each do |e|
  e.destroy!
end

f = open("sample.ics")
ics = f.read
f.close

ical = Icalendar::parse(ics,true)
ical.events.each do |ie|
  if ie.recurrence_rules?
    fs = Time.parse(ie.dtstart.to_s.sub(/\+.*/, ''))
    fe = Time.parse(ie.dtend.to_s.sub(/\+.*/, ''))
    diff = fe -fs
    Vpim::Rrule.new(fs,ie.recurrence_rules.first.orig_value).each(endday.to_time) do |time|
      ge        = gcal.create_event
      ge.title  = ie.summary
      ge.st     = time
      ge.en     = time + diff
      ge.allday = ge.st.hour == 0 and ge.st.min == 0 and ge.en.hour == 0 and ge.en.min == 0
      ge.save!
    end
  else
    ge        = gcal.create_event
    ge.title  = ie.summary.encode("utf-8") 
    ge.st     = Time.parse(ie.dtstart.to_s.sub(/\+.*/, ''))
    ge.en     = Time.parse(ie.dtend.to_s.sub(/\+.*/, ''))
    ge.allday = ge.st.hour == 0 and ge.st.min == 0 and ge.en.hour == 0 and ge.en.min == 0
    ge.save!
  end
end


GACCOUNT
GPASSWD
GCALNAME
を利用する環境にあわせて変更すれば利用できるはず。

以下のサイトを参考にさせていただきました。
https://github.com/wtnabe/ical2gcal
http://www.func09.com/wordpress/archives/168

2012-10-28

タカラトミーの「夜空におえかき」がキニナル

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

タカラトミーの「夜空におえかき」というのがキニナルのです。
ものとしては、いろんな色が出るライトのようです。
これと専用の無料のiphoneアプリを使って簡単におしゃれな光で描いた絵の写真が撮れてしまうようです。

専用のアプリでなくても長時間露出できれば絵はできるとは思いますが、アニメーションなども簡単にできるようです。

詳しくは、以下を。
http://www.takaratomy-arts.co.jp/specials/oekaki/

ぜひandoridのアプリも出してもらいもんです。

2012-10-22

twitterを利用した簡易読書録を作る方法

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
twitterを利用して私がやっている簡易な読書録の作り方をまとめてみます。

簡単に言ってしまえば、ツィートに「#読んだ」とハッシュタグをつけるだけです。

さらに自分のつけた「#読んだ」のツィートを見れるようにするために
を利用します。

これで以下のような感じの簡易な読書録ができあがります。

私の場合は、書名とamazonへのリンク(詳しい情報はamazonさんにおまかせ)を入れています。

この書名とamazonへのリンクを入れるために私が作ったandroidアプリ
を利用しています。

BARCOTTERは、バーコード情報をカメラで読み取るか入力することでamazonで検索を行い書名などの情報を取得してtwitterなどに取得した情報を渡すアプリです。
詳しくは、以下をご覧ください。


実際の読書録を作る際の流れは以下のような感じです。

BARCOTTERを立ち上げます。

②カメラがついていれば読取を押してカメラを起動してバーコードを読み取ります。バーコードが読み取りにくいときはフラッシュをつけたりすると読み込みやすくなるようです。
カメラがない場合は、「BARCODE or ISBN」の欄に直接バーコードを入力します。
また、「後にテキストを追加の部分」に「#読んだ」と入れておきます。


③共有を押します。(設定で読み取り後自動で共有を実行できます。)共有すると共有するアプリを選択できるのでtiwtterを選択して、適当にメモを追加してツィートします。

これでOKです。

ちゃんとした読書録を作りたい場合は、以下にいろいろな読書記録のサイトが紹介されているので参考になります。
http://matome.naver.jp/odai/2129578537652781601


ちなみにBARCOTTERで判別できるのは、本だけではなくCDやDVDなども判別できます。
なので読書録だけでなく音楽録や映画録などに応用もできたりもしますよ。

2012-10-13

railsでsend_fileするときに日本語ファイル名を指定するとchromeでたまに文字化けする

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
railsでファイルダウンロードさせるためにsend_fileを使うときに日本語ファイル名でダウンロードさせるとき、私は以下のようにしていました。

filename = "今後の予定.xls".encode("cp932")
send_file(f, :filename => filename)

cp932でencodeしているのは、utf-8でおくるとIEが文字化けしていたので、そうしています。

普段は、chromeでも特に問題がありません。
しかし、たまに文字化けが出ていました。
上記のファイル名の場合は「予」の部分で文字化けがおきてしまいます。

これの原因は、たぶん以下のサイトで書いてあることが影響している気配です。
https://sites.google.com/site/fudist/Home/grep/damemoji

で対策として以下のようにするようにしました。

filename = ERB::Util.url_encode("今後の予定.xls")
send_file(f, :filename => filename)

これで問題なくIEでもchromeでも文字化けしないようになりました。

以下が参考になったサイトです。

http://kiita-it-blog.seesaa.net/article/253744186.html



2012-10-02

お好きなYoutubeムービーをAndroidのホームにショートカットとして登録する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
お好きなYoutubeムービーをAndroidのホーム画面にショートカットとして登録していつでもワンタッチで見れるようにする方法です。

まずYoutubeアプリで登録したいムービーを検索します。
ちなみにロングブレスダイエットの方法を検索してみました。

そして目的のムービーを表示します。

設定ボタンを表示して、URLをコピーします。

ここで一度Youtubeアプリを終了して、ブラウザを立ち上げてコピーしたURLを貼り付けます。

Youtubeで見るように選択します。常にこの操作で私用するにチェックを入れてもよいです。

目的のムービーが表示されることを確認します。

そして、またブラウザに戻ります。ブラウザ上部を触ってURL入力バーを出してタブボタンを押します。

設定を表示して、履歴を表示させます。

今日の履歴を表示して、Youtubeムービーを長押しします。

ブックマークに保存を選択します。

ラベルを好きなものして、追加先を「ホーム画面」にします。

するとホーム画面にショートカットが作成されています。これでワンタッチでムービー見れるようになったわけです。アイコンがちょっと気に入らないのですが、よしとしましょう。

2012-10-01

ActiveScaffoldでpaper_trailの履歴情報を表示する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
ActiveRecordの履歴情報には、
paper_trail
がよさげと先日ご紹介させていただきました。
ActiveRecordの変更履歴を保存するにはpaper_trailがよさげ


そのpaper_trailで保存された履歴情報をActiveScaffoldで表示する方法です。

Blogモデルで履歴情報を残すようにして、Blogモデル用のActiveScaffoldで履歴情報をネストして表示できるようにする例です。

ActiveScaffoldでnestを利用するには、has_manyで関係が明示されていないとダメっぽいので
まずはBlogモデルの履歴表示用のBlogVersionというモデルを作ります。
以下のような感じです。

# -*- encoding: utf-8 -*-
class BlogVersion < Version
  def method_missing(action)
    unless self.reify.attributes.keys.index(action.to_s).nil?
      self.reify[action]
    else
      super
    end
  end
end

paper_trailにより作成されたVersionモデルを継承します。
そしてmethod_missing内でBlogモデルが持つattributeと同じものを利用できるようにします。
厳密にはidとcreated_atだけはVersionのものになってしまいます。

そしてBlogモデルで以下のようにします。

# -*- encoding: utf-8 -*-
class Blog < ActiveRecord::Base
  has_many   :blog_versions, :foreign_key => "item_id"
end

versionsテーブルでblogsのidを保持するのはitem_idになるのでforeign_keyに指定します。


コントローラー側です。
まずは、BlogVersion用のものです。

class BlogVersionController < ApplicationController
  active_scaffold :blog_versions do |config|
    config.label = "変更履歴"
    config.actions.exclude :create, :update, :delete, :search
    config.columns = [:entry,
                      :auther,
                      :updated_at]
  end
end

新規追加、変更、削除はできないようにしておきます。
そして表示するカラムは明示します。

Blog用のものは以下のような感じです。

# -*- encoding: utf-8 -*-
class BlogController < ApplicationController
  active_scaffold :blogs do |config|
    config.label = "ブログエントリ"
    config.columns = [:entry,
                      :auther,
                      :created_at,
                      :updated_at]
    config.nested.add_link(:blog_versions, :label => '変更履歴')
  end
end

ここのnestedでblog_versionsを指定することで各ブログエントリ毎の変更履歴を表示することができるようになります。



ちなみに、このブログでactive_scaffoldに関しての情報を他にも乗せています。
ActiveScaffoldの小ネタのまとめ

2012-09-29

ActiveRecordの変更履歴を保存するにはpaper_trailがよさげ

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
以前、rails2.3の時はActiveRecordでデータの履歴管理をするというエントリで
vestal_versions
がよさげとしていましたが、どうやら今は、
paper_trail
が人気な気配です。

https://www.ruby-toolbox.com/categories/Active_Record_Versioning
にいろいろな履歴管理のものが紹介されています。

ちなみに
paper_trail
を利用するには以下のような感じです。

Gemfileに以下を追加してbundle installします。
gem 'paper_trail', '~> 2'

そして
rails g paper_trail:install --with-changes
とします。するとversionsという履歴管理用のテーブルのmigrationが作成されます。
ちなみに--with-changesとつけるとchangesetというカラムに変更された場所だけ記録することができるようになります。

そして
rake db:migrate
します。

履歴を残したいmodelに以下のようにすると履歴情報が残せるようになります。
class Blog < ActiveRecord::Base
  has_paper_trail
end

履歴情報は以下のような感じで取得できます。

すべての変更履歴情報を取得
blog.versions

最新の変更履歴情報を取得
blog.versions.last

変更前の情報を取得
blog.versions.last.reify

変更した部分だけの情報の取得
blog.versions.last.changeset
これで
{'article' => ['変更前', '変更後']}
みたいな形で取得できます。

結構他にもいろいろなことができそうです。
詳しくは以下を見てみてください。
https://github.com/airblade/paper_trail

2012-09-28

iphone4Sのケースをxperia SXにつけてみた

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
xperia SXを買って、スマホケースをつけてみたい気分になってみました。

しかしxperia SXのスマホケースはそんなに種類がないし、ちょっと試すには高いなぁとか思っています。

そこでiphone4Sのケースに注目してみました。
というのもxperia SXとiphone4Sのサイズがすごく近いというのに気づいたからです。

それぞれのサイズは以下のような感じです。

Xperia SX  54(W)×9.4(D)×115(H)mm
iPhone 4S  58.6(W)×9.3(D)×115.2(H)mm


さすがのiphoneはケースの品揃えもすごいし、100円ショップにもあるというのが魅力でお試しするにはよさげです。
iphone5が発売されたので、今後おしゃれなiphone4S関連商品が安くなっていく可能性があるのかもとか思っています。

で100円ショップで以下のケースを買ってみました。

これをxperia SXにつけてみました。
ぱっと見よさそうに見えます。縦と厚さは確かに問題ないのですが、幅はちょっとカパカパする感じです。
落ちてしまうということはないのですが、ちょっと気になります。

表はこんな感じなのですが、裏はこんな感じです。
カメラの位置が違います・・・
このまま写真を撮ると・・・
トイカメラ風の味があると好意的に見ることもできますが、いつもこれでは困ってしまいます。

他の面も見てみましょう。

まずは上面です。ヘッドホンをさすところがあります。
ぼけてしまっていますが、ヘッドホンの位置が違います。ヘッドホンがさせません・・・

続いて右面です。電源ボタンや音量ボタンがあります。
ケースには何もありません。ソフトケースなので電源ボタンや音量ボタンの操作はできます。
ただカパカパしているので、ちょっと使いにくいです。

左面です。microUSB端子があります。
いい感じの位置に穴が開いているようですが、小さすぎてmicroUSB端子を差すことはできません。

最後に下面です。特に何があるというわけではないです。強いて言えばストラップホールがあるぐらいです。
ケースには余計な穴が開いています。そしてストラップケースの位置とはあいません。

とりあえず実用を考えると、
①カメラの穴の位置
②microUSBが挿せない
③ヘッドホンが挿せない
が問題かなと思います。

というわけで、ソフトケースなので強引に切ってみました。
ソフトケースですが、加工は結構大変です。

まずはカメラの穴対策です。
すごく広げることになりました。そしてかっちょ悪くなりました。
しかし、カメラは普通に使えるようになりました。
この通りです。

続いてヘッドホン対策です。
ちょっと穴が小さすぎました。ぎりぎり挿せないことはないけど、とても扱いにくいです。
もっと大きな穴が必要です。
そしてやっぱり2つ穴があり、かっちょ悪いです。

最後にmicroUSB対策です。
ここの加工が一番大変でした。もともとあいている穴を広がるスペースが狭い中広げるのは、なかなか大変です。
他の二つに比べれば、かっちょ悪い感じは若干ましかもしれませんが・・・


というわけで、結論的にはiphone4ケースは、カメラをトイカメラ風に使い、ヘッドホンを利用せずにに充電時にはケースをはずして充電するようにすれば使えないことはないかな?という感じです。

普通に使いたい場合は、もっとうまくカットできて、さらに余計な穴をオシャレにふさぐなどことができる技術が必要です。

普通にxperia SXのケースを買ったほうがよさそうです。

店頭では、xperia SXのケースの数はそんなにないのですがamazonさんで調べれば結構ありました。
amazonさんでxperia SXのケース

2012-09-21

ActiveScaffoldで新規作成画面にデフォルト値を表示する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
ActvieScaffoldで新規作成画面にデフォルト値を埋め込む方法です。

対象のコントローラーに以下のような感じのdo_newを作成すればOKです。

protected
def do_new
  super
  @record.end_date = 1.month.from_now
end

superは忘れてはだめです。
そして@recordに値を設定すればOKです。
上記の例ではend_dateに今日の1ヶ月をデフォルト値として埋め込んでいる例です。


ちなみに、このブログでactive_scaffoldに関しての情報を他にも乗せています。
ActiveScaffoldの小ネタのまとめ


2012-09-18

xperia tabletを買ったよ

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
xperia SXを買ったのに続き、xperia tabletも買いました。



こちらもなかなかよいです。

まず軽いです。初代ipadは使っているのですが、こちらを使ってしまうとipadが重く感じるのと、あとさすが新しい端末だけあって動作が軽快です。
なので、ipadよりもこちらを優先して使う感じになっています。

他にもテレビリモコンにもなるのは、何かと便利です。
結構テレビ見ながら、雑誌感覚でタブレットも見るみたいなこともあるのでタブレットからテレビを操作できるのは結構便利です。

あと、ゲストモードというのがあってこれが便利です。
うちでは子供用のゲストモードを用意して子供に触らせてもよいアプリだけを表示させるようにしています。
ipadの時は、まれによけいなことをされたりしたので、このゲストモードは相当便利です。


残念こととしては、スリープしたときにいちいちwifiも切断される感じで、スリープから復帰したときにwifiへの接続がもたつく感じがあります。

あともう一つ残念なこととしては、防水のため充電ケーブルをさすところにカバーがしてあるのですが、これが充電するときにいちいちはずすのが面倒です。

なので以下のクレードルはあったほうが便利です。(もちょっと安いとうれしいのに・・・)



まだまだ使い始めたばかりの感想です。

2012-09-17

iphone5が発表されたけどxperia SXを買ったりした

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
iphone5が発表されてiphone5への注目が集まっている中、
xperia SXを買いました。

iphoneはいい端末だと思うのですが、
いろんなセンサー系などをついていたり、arudinoとの接続も簡単そうなandroidのほうに興味がったのでiphoneの購入はまったく考えていなかったのです。

ですが、android端末はでかいのが多すぎです。
なのでxperia SXです。

発売された直後は、品薄みたいでしたが、
最近はだんだん出てきている感じですが、全色すべてそろっているというのは、なかなかない感じです。

で、xperia SXですが、よいです。
動作もいい感じですし、なにより大きさがほんとによいです。

xperia SXに限らず最近のスマートフォンでは充電ケーブルとかがついてきません。
なので充電ケーブルを購入する必要があります。

とりあえず昔のFOMAの充電ケーブルがあったので、FOMA->microUSB変換ケーブルがあれば充電はOKです。



100円ショップにも変換ケーブルはあるので、それでもよいかもしれません。

しかしこれだけでは、スマホに音楽データを入れることなどができないので、USBでスマホと接続できるケーブルも必要なことを忘れてはいけないのでした。


こちらは100円ショップにもあるのですが、データ通信できずに充電だけできるというのが多いです。
なので間違って買わないように注意してください。
meet.という100円ショップにはあるようです。

せっかくUSBとmicroUSBのケーブルを買ったら以下のようなコンセントからUSBを充電できるものもあると便利だと思います。



というわけで、xperia SXはよいよということと、スマホを買ったらコンセントからUSB機器を充電できるものとデータ通信ができるUSB-microUSBケーブルがあると便利ですよということでした。


2012-09-14

rubyでDate.todayを使っているメソッドのspecを書くとき

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
rubyでDate.todayをどこかで使っているメソッドのspecを作るときのことです。

単に今日の値を表示するだけならば、普通にテストすればよいと思うのですが、
今日の日付によって動作が変わるときの場合です。

そんなときは、
Date.stub!(:today).and_return(Date.new(2012, 9, 14))
みたいにstubを用意してやって、テストを実行する感じです。

2012-09-13

ActiveScaffoldを使っているときにログインユーザ情報をモデルに持ち込む方法

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
ログインしているユーザ情報をモデルでも利用できるようにしたい場合です。

以下のような手段があるようです。
http://rails-bestpractices.com/posts/47-fetch-current-user-in-models

ActiveScaffoldを使っていれば、以下のようにcontrollerにcurrent_userメソッドを定義すれば、
modelでcurrent_userが使えるようになります。

以下のような感じです。
app/controllers/application_controller.rb
class ApplicationController < ActionController::Base

  protected
  def current_user
    User.find(session[:user_id])
  end
end

app/models/aaa.rb
class Aaa < ActiveRecord::Base
  def set_user_info
    self.user_name = current_user.name
  end
end

みたいな感じです。

以下が参考になります。
http://www.ibm.com/developerworks/jp/linux/library/l-activescaffold/
https://github.com/activescaffold/active_scaffold/wiki/Security

current_userがモデルで使えるようになる処理は

lib/active_scaffold/active_record_permissions.rb
に記載されています。
ざっくりとした仕組みとしては、以下のような感じのことが行われているようです。

#モデル相当のもの
class Moo
  class << self
    attr_accessor :test_func
  end
  
  def current_user
    Moo.test_func.call
  end
end

#コントローラ相当のもの
class Con
  attr_accessor :val
  
  def set_mod_func
    Moo.test_func = proc { p "========#{@val}" }
  end
end

c = Con.new
c.val = "111"

m = Moo.new
m.current_user
NoMethodError: undefined method `call' for nil:NilClass

c.set_mod_func
m.test
"========111"


ちなみに、このブログでactive_scaffoldに関しての情報を他にも乗せています。
ActiveScaffoldの小ネタのまとめ

2012-09-12

ActiveScaffoldでmodelのデータ内容に応じて変更できたり、できなかったりする方法

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
ActiveScaffoldでmodelのデータ内容によって変更の可否を決めたい場合などのケースです。

たとえばあるモデルの状態が特定の値になったら変更できなくする場合です。

モデルにauthorized_for_update?という関数を定義しtrueを返せば変更ができてfalseを返すと変更ができなくなります。
class Sample < ActiveRecord::Base
  def authorized_for_update?
    if self.status < 99
      true
    else
      false
    end
  end
end

画面上では、変更できないレコードの変更ボタンがグレーになり利用できなくなっています。

authorized_for_update?をauthorized_for_delete?にすると削除できたり、できなかったりになります。

以下が参考になります。
https://github.com/activescaffold/active_scaffold/wiki/Security

ちなみに、このブログでactive_scaffoldに関しての情報を他にも乗せています。
ActiveScaffoldの小ネタのまとめ



2012-09-11

ActiveScaffoldでsession情報によってメニューを出したり出さなかったり

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
ActiveScaffoldでsessionにuser情報などを入れておいてログインしたユーザによって利用できる機能を変えるといったことをやる方法です。


class SampleController < ApplicationController
  
  #filterを利用するのがポイントです
  before_filter :update_table_config

  active_scaffold :samples do |config|
    #ここの処理はだいぶ早い段階で処理されるようでsessionオブジェクトが生成されていません
    config.label = "Sample"
    ・・・
  end

  protected
  def update_table_config
    #ここでsessionを利用して変更ができます。
    #Uesrモデルをsession[:user]にセットする処理はApplicationControllerなどで行います
    #年齢によって変更できるカラムが異なる例です
    if session[:user].age >= 20
      active_scaffold_config.update.columns = [:hobby,:smoke,:sake]
    else
      active_scaffold_config.update.columns = [:hobby]
    end
  end

end


active_scaffoldブロックの中で記載している設定をfilterではactive_scaffold_configというのに記載すればsession情報によって画面内容を変更できます。
ただfilter内ではすべての設定項目を変更できるわけではなさそうです。
試した限りactionsとnestedは利用できませんでした。

以下が参考になります。
https://github.com/activescaffold/active_scaffold/wiki/Per-Request-Configuration


ちなみに、このブログでactive_scaffoldに関しての情報を他にも乗せています。
ActiveScaffoldの小ネタのまとめ

2012-09-07

日よけ付きスマホカバーを試作してみた

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
晴れた日、外でスマホの画面って見えにくいですよね。
これを何とかできないかなぁと思って、日よけつきのスマホカバーをダンボールで試作してみました。

こんな感じです。画面側にもカバーがある感じのケースです。


開くとこんな感じです。


光の下では、通常こんな感じで見にくいです。


カバーの途中でちょっと折れる感じで日よけになります。カバーの一部は日よけの支えにしてみました。
ちょっと見やすくなったような気がしないでもないです。

横から見るとこんな感じです。


どっかに、こんな感じでもっと良さげなスマホカバーないかなぁと思ってみたしだいです。

2012-09-06

MANHATTAN PASSAGEのカバンを買い換えた

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
今までMANHATTAN PASSAGEのサイドウェイズパックというカバンを使っていました。

 

かなり気にいって長い間使っていたのですが、今年の暑さのせいか肩紐に汗染みみたいなものが入ってしまったのと、一部ほつれが出てきたので買い換えることにしてみました。

こんどはシティ トレイルというカバンにしてみました。



サイドウェイズパックに比べると横幅がスリムになっていて肩紐部分のつくりがだいぶしっかりした感じです。
MANHATTAN PASSAGEらしく、いろんな小ポケットがついていて、いろいろ入れることができる感じです。
こちらも、気に入ったので長く使っていこうと思ったりしています。
なかなかオススメのバッグです。

2012-08-24

svn commitするとE492: Not an editor command: Bundle ...なエラーが出るとき

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
どうやら最近は、vimを使う時はVundleとやらを導入するのが流行っているのかなと思って真似っ子してみました。

以下のサイトなどを参考にしてdotfilsというディレクトリを作って、そのディレクトリをバージョン管理で管理してみました。
http://d.hatena.ne.jp/oovu70/20120324/p1

で普通に
vi aaa
とかする分には何も問題ないのですが、

svn commit
をしてviを起動させてcommitログを記述する際に

E492: Not an editor command: Bundle....

みたいなエラーが表示されていました。

まぁ、commitする時だけ我慢すればよいかなぁと思っていたのですが
ちょっと探してみたところgitでも同じことが起こるケースがあるようです。
https://github.com/gmarik/vundle/issues/168
どうやら利用するeditorの指定をviではなくvimとしないといけないようです。

gitの場合は
git config --global core.editor "vim"
とすれば良さそうです。

svnの場合は、環境変数でSVN_EDITORで指定しているので
今まで

export SVN_EDITOR=vi

としていたものを

export SVN_EDITOR=vim

にしたら、エラーがでなくなりました。



2012-08-09

rubyを1.8から1.9にあげるときはmagic-commenterが便利

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
rubyを1.8.xから1.9.xにあげるときにやらなくてはならないこととして
日本語を扱うファイルの頭に
# encoding: utf-8
って感じのマジックコメントを追加するということがあります。

railsとかの場合、いくつものファイルに対応しなくてはならなくて面倒です。
そんなときは、
magic-commenter
が便利です。

インストールは
gem install magic-commenter
でOKです。

使い方は、railsプロジェクトの場合ruby1.9対応させたいプロジェクトのルートで
magic-commenter
と実行すればOKです。これで実行したディレクトリ以下のファイルで日本語を利用している.rbのファイルにマジックコメントを追加してくれます。

あくまでもファイル内で日本語を使っているものにだけマジックコメントを追加するというものなので、日本語は使っていないけど日本語を文字列処理するようなファイルがあった場合は自分でマジックコメントの追加が必要ではあります。

以下で紹介されていて参考になりました。
http://blog.s21g.com/articles/2024


railsの場合、どっかにちょこっと何かを書けば、うまく1.9対応できそうな気がしないでもないですが・・・

2012-08-01

FreeTDSのバージョンをあげたら接続できなくなったところがあった

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
FreeTDSをv0.82からv0.91にあげてみました。
そしたら一部接続ができなくなってしまったのです。
接続的なくなったのは、以下のように設定したSQL Serverです。

freetds.conf
[abc]
 host = 192.168.0.111
 instance = SQLEXPRESS
 tds version = 8.0
 charset = sjis
 client charset = UTF-8

odbc.ini
[def]
Driver = /usr/local/lib/libtdsodbc.so
Description = Microsoft SQL Server
Servername = abc
Database = testdb
Port = 1433


tsql -S abc -U user -P pass
では接続できるのに
isql -v def user pass
では接続できないという感じです。
v0.82の時は、どちらも接続できていました。

で、これを解決する方法ですが
odbc.iniを以下のように修正すればOKです。

[def]
Driver = /usr/local/lib/libtdsodbc.so
Description = Microsoft SQL Server
Servername = abc
Database = testdb
#Port = 1433


PortをコメントアウトすればOKです。
原因はSQLEXPRESSとなっている場合は、ポートがどうも動的に変化するようです。
v0.82ではodbc.iniのPort設定を無視していたのですが、v0.92ではodbc.iniで指定されたPortで接続をかけようとするため接続ができなかったというわけでした。

2012-07-19

週刊 一度は行きたい 世界の博物館を買ってしまった

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
ふと衝動にかられ
週刊 一度は行きたい 世界の博物館
を買ってしまいました。

45号出ている状態からの定期購読です。

なかなか楽しいです。

とりあえずご紹介です。個人的にオススメな号に◎をつけてみました。

そしてステキなもののリンクはgoogleの画像検索した結果にリンクしています。

50号 世界の天文・宇宙博物館・・・「はやぶさ」がステキです。
49号 世界の偉人博物館・・・「ヘミングウェーキャット」がステキです。
48号 世界の民族博物館・・・「カチーナ人形」がステキです。◎
47号 九州国立博物館・・・「山水花鳥螺鈿蓋付きナイフ入れ」がステキです。
46号 ケニア国立博物館・・・「アーメッド」がステキです。
45号 トリノ・エジプト博物館・・・「カー立像」がステキです。◎
44号 アクロポリス博物館・・・「カリュアティド」がステキです。
43号 国立民俗学博物館・・・「ニャウ・ヨレンバ」がステキです。◎
42号 ヨーク国立鉄道博物館・・・「ハミルトン公爵夫人号」がステキです。
41号 ラファエル・ラルコ・エレラ考古学博物館・・・「クモを描いた石皿」がステキです。◎
40号 イスラエル国立博物館・・・「タアナクの香台」がステキです。
39号 バンコク国立博物館・・・「黒漆螺鈿経典厨子」がステキです。
38号 国立科学博物館・・・「万年時計」がステキです。◎
37号 秦始皇兵馬俑博物館・・・「2号銅車馬」がステキです。
36号 シカゴ科学産業博物館・・・「パイオニア・ゼファー」がステキです。
35号 フランス国立自然史博物館・・・「サルコスクス」がステキです。
34号 アナトリア文明博物館・・・「儀礼用スタンダード」がステキです。
33号 カイロ・エジプト博物館・・・「ツタンカーメン王の黄金のマスク」がステキです。◎
32号 ロイヤル・ティレル古生物学博物館・・・「ブラック・ビューティ」がステキです。◎
31号 プノンペン国立博物館・・・「ガルーダ」がステキです。
30号 京都国立博物館・・・「縹糸威胴丸」がステキです。
29号 カラチ国立博物館・・・「女性土偶」がステキです。◎
28号 ドイツ博物館・・・「デッケン・デモンストレーション・シャッター」がステキです。
27号 ナポリ国立考古学博物館・・・「海の幸のモザイク」がステキです。
26号 韓国国立中央博物館・・・「白磁鉄画梅竹文壺」がステキです。
25号 アメリカ自然史博物館・・・「ジェファーソンマンモス」がステキです。◎
24号 ダマスカス国立博物館・・・「アンズー」がステキです。
23号 ウィーン美術史美術館・・・「塩入れ(サリエラ)」がステキです。
22号 ロンドン科学博物館・・・「バベッジの計算機」がステキです。
21号 陝西歴史博物館・・・「金怪獣」がステキです。
20号 イスタンブール考古学博物館・・・「イシュタル門の浮き彫り」がステキです。
19号 ペルー国立考古学人類学歴史学博物館・・・「黄金のトゥミ」がステキです。
18号 大英博物館Ⅲ・・・「グリフィンのリュトン」がステキです。◎
17号 スミソニアン国立自然史博物館・・・「リチア電気石」がステキです。◎
16号 エルミタージュ美術館・・・「孔雀のからくり時計」がステキです。
15号 ニューデリー国立博物館・・・「踊るシヴァ」がステキです。◎
14号 メトロポリタン美術館・・・「ファイアンス製カバ像」がステキです。
13号 奈良国立博物館・・・「如意輪観音坐像」がステキです。◎
12号 メキシコ国立人類学博物館・・・「太陽の石」がステキです。◎
11号 アテネ国立考古学博物館・・・「獅子頭形リュトン」がステキです。
10号 スミソニアン国立航空宇宙博物館・・・「ロッキードSR-71Aブラックバード」がステキです。
9号 ルーヴル美術館Ⅱ・・・「バビロン王ハンムラビの法典碑」がステキです。◎
8号 ローマ国立博物館・・・「ルドヴィシの大石棺」がステキです。
7号 トプカプ宮殿博物館・・・「トプカプの短剣」がステキです。
6号 東京国立博物館・・・「土偶」がステキです。
5号 ベルリン美術館・・・「王妃ネフェルティティの胸像」がステキです。
4号 台北国立故宮博物院・・・「玉龍紋盤」がステキです。
3号 ルーヴル美術館Ⅰ・・・「アモルとプシュケ」と「シュジュールの鷲」がステキです。◎
2号 大英博物館Ⅱ・・・「バターシーの盾」がステキです。
創刊号 大英博物館Ⅰ・・・「牡山羊の像」がステキです。◎