Mac ports

なぜかMacPortsがうまく動かなかったのでメモ

環境:MacOS X server 10.6.5

以下エラー文

sudo port -d selfupdate
Warning: No index(es) found! Have you synced your source indexes?
--->  Updating the ports tree
DEBUG: Synchronizing ports tree(s)
Synchronizing local ports tree from rsync://rsync.macports.org/release/ports/
DEBUG: /usr/bin/rsync -rtzv --delete-after '--exclude=/PortIndex*' rsync://rsync.macports.org/release/ports/ /opt/local/var/macports/sources/rsync.macports.org/release/ports
rsync: failed to connect to rsync.macports.org: Connection refused (61)
rsync error: error in socket IO (code 10) at /SourceCache/rsync/rsync-40/rsync/clientserver.c(105) [receiver=2.6.9]
shell command "/usr/bin/rsync -rtzv --delete-after '--exclude=/PortIndex*' rsync://rsync.macports.org/release/ports/ /opt/local/var/macports/sources/rsync.macports.org/release/ports" returned error 10
Error: Synchronization of the local ports tree failed doing rsync
DEBUG: Couldn't sync the ports tree: Synchronization of 1 source(s) failed
    while executing
"macports::selfupdate [array get global_options] base_updated"
Error: /opt/local/bin/port: port selfupdate failed: Couldn't sync the ports tree: Synchronization of 1 source(s) failed


then

以下のファイルを編集
/opt/local/etc/macports/sources.conf


以下のようにコメントアウトand追記
#rsync://rsync.macports.org/release/ports/ [default]
http://www.macports.org/files/ports.tar.gz [default]


以上

MacBookAir用のトラックパッドフィルム

MacBookAirのトラックパッド用にパワーサポートから発売されている保護フィルムを買ってみた.
MacBookPro用だったけど,13インチMacBookAirでもピッタリだった.

コレ↓ 型番: PTF-50
http://www.pawasapo.co.jp/products/mac/ptp.php


…しかし先に結論から言うと,3時間ほどで剥がしてしまった.
理由はタッチの感度が悪くなったから.

フィルムを貼る前は「トラックパッドって結構敏感に反応するんだなー」と肌で感じていたんだけど,
フィルムを貼った後はそれが感じられなくなっていた.

「タップしたかと思ったら実はしてませんでした^q^」という現象が何度も起きてさすがにイラッときたので使用からわずか3時間で剥がしてしまったよ.

しかしこのフィルム,2枚入りだったからあと1枚余ってるんだよなぁ.

MacBookAir 設定メモ

MacBookAirを買ったので設定をしたときのメモを残しておく.

Caps lockをCtrlキーに入れ替え

パスワードを設定する際にCaps lockがかかってイラッときたので真っ先に変更.

Google IME

それにともなってことえりを現役引退(現役期間5分)
ことえりを無効にするには「言語とテキスト」→「入力ソース」から.

Quick Silver

いわゆるなんでもランチャ
キーボードだけでアプリからファイルなど色々と呼び出せるのでspotlightよりは便利.

Dropbox, evernote, gyazo

クラウド御三家も忘れずにインスコ

夜フクロウ

Mac最強Twitterクライアント

Growl

夜フクロウで通知が来ないなーと思っていたらGrowlを入れるのを忘れていた.
Growlは対応アプリケーションのイベントをポップアップ通知してくれるツール.
対応アプリケーションが多いのでMust.

MindNode

マインドマップ作成用アプリ.
マインドマップは速度が命.
思い立ったときにさっと起動できるMacBookAirにはもってこいのアプリ.
操作にEnterとTabキーくらいしか使わない(マウスがほとんどいらない)のが気に入っているところのひとつ.
iPadとの連携もできていい感じ.
有料版もあるのだけど,今の使い方だと無料版で十分かな.
ちなみに有料版との違いは http://mindnode.com/jp/mindnode/feature-chart/ このあたりを参照.

iFreeMem


メモリ管理ツール
メニューバーのアイコンでメモリの使用状況が分かるので便利.
未使用領域の開放もボタン一発.
http://www.activata.co.uk/ifreemem/

Kindle買った


かねてより欲しい欲しいと言っていたKindle3をほぼ衝動買いに近い形で手に入れた.
買ったのはKindle3 3G+Wi-Fi版 189USDなり.
円高の恩恵を授かることができました.

Kindleきたー!しかし・・・

洋書が読める方はKindle storeにウン十万と蔵書されている本からお買い物ができるらしいのだが,
残念ながら自分はその条件には当てはまらないので,自分で自炊をすることになる.

自炊とはすなわち自分で書籍をスキャンして電子化する作業のことを指すんだが,これがなかなか面倒.
ひとまずどんなものか試したくてウズウズしていたのでiPad用に自炊してたものをKindleで読んでみた.


・・・文字が潰れて読みづらい.


Kindleには自動で余白を検知して拡大縮小してくれる仕組みがあるのだが,
これがかなり余計なことをしてくれてるみたいだ.
もともと大きめのサイズにスキャンしているので当然自炊したデータは縮小表示されるわけだが,
スムージングがうまくいってないせいかこんな風↓に文字が潰れてしまう.

これでは快適に読むなんて到底無理.せっかくの電子ペーパーなのに!
というわけで先人たちの知恵を借りつついろいろ試してみた.

PDF→MOBIに変換する

Kindle用のフォーマットであるMobi形式に変換するとうまいこと表示されるようだ.
Mobi形式に変換するにはいくつか方法があるみたいだが,今回はcalibreという電子書籍管理ソフトを利用した.
さっそく変換してみた結果がこれ↓

これはいいんじゃないか,と思ったけど,PDFに比べてページ送りなどのレスポンスが2〜3倍遅くなった.
見た目は理想的だが,反応速度の点でイライラするのでこの方法は却下.

Dot-by-dotのサイズにする

Kindleによる余計な縮小機能を防ぐために,縮小も拡大もされないDot-by-dotなサイズに画像を加工する.
どうやらKindle3のDot-by-dotのサイズは460x742らしい.
このサイズに自炊データをリサイズしてあげれば,Kindleによる余計な縮小機能を回避することができる.

しかしPDFのまま画像をリサイズするのは骨が折れる作業なので
PDF→Jpeg→リサイズ→PDFという手順を踏む必要がある.なんて面倒なの!


と文句を言いながらも一応やってみることに.
手順は


1. Adobe AcrobatでPDFをJpegに分解
2. JpegをChainLPで460x742にリサイズし,PDFに戻す


で,その結果がこれ

及第点と言ったところか,若干ノイズが入ってるのはAcrobatでPDFの最適化をしてサイズを減らしてしまったのが原因.
最適化をしなければもうすこしマシになるはず.
レスポンスもMobi形式の時と比べると速いので満足.

ネックなのは手順が面倒なことかなぁ.
もうすこし追求してみる必要がありそう.


<追記予定>

サイボウズ Live API を使ってみる

サイボウズLiveAPIが公開されていたのでさっそく試してみた.
使用言語はRuby

アプリの登録

デベロッパセンターにログインしたら上メニューの「Myアプリケーション」→「アプリケーションを登録する」を選択.


以下の必須項目を記述.アプリの説明は任意で.

  • アプリケーション名
  • アプリケーションの種類

  今回はクライアントを選択

  • アクセスレベル

  レベルA ... 簡易情報の読み込みが可能。
  レベルB ... 詳細情報の読み込みが可能。
  レベルZ ... API が提供する全ての機能を利用可能。
  今回はレベルZを選択.

OAuthの設定

サイボウズLive APIへのアクセスはOAuthを利用する.
OAuthの仕組みなどはおググりあそばせ.


まずはアプリケーション管理画面にいき,Consumer KeyとConsumer Secret(赤線部分)を控えておく.


これをもとに認可されたアクセストークンを取得する必要があるが,
手続きが面倒なので対話式にアクセストークンを取得できるコードを用意.

手順としては,

  1. Consumer Keyを入力
  2. Consumer Secretを入力
  3. [許可用のURLが出力される]→ブラウザでURLにアクセス
  4. 確認コードを取得
  5. 確認コードを入力
  6. アクセストークンGET

という流れ.

require 'rubygems'                                                                                                                                                      
require 'oauth'                                                                                                                                                         
                                                                                                                                                                        
puts "consumer_key =>"                                                                                                                                                  
consumer_key = gets                                                                                                                                                     
consumer_key.chomp!                                                                                                                                                     
puts "consumer_secret"                                                                                                                                                  
consumer_secret = gets                                                                                                                                                  
consumer_secret.chomp!                                                                                                                                                  
                                                                                                                                                                        
consumer = OAuth::Consumer.new(                                                                                                                                         
  consumer_key,                                                                                                                                                         
  consumer_secret,                                                                                                                                                      
  :site => "https://api.cybozulive.com",                                                                                                                                
  :request_token_url => "https://api.cybozulive.com/oauth/initiate",                                                                                                    
  :access_token_url => "https://api.cybozulive.com/oauth/token"                                                                                                         
)                                                                                                                                                                       
                                                                                                                                                                        
request_token = consumer.get_request_token                                                                                                                              
puts request_token.authorize_url                                                                                                                                                                                                                                                                                             
########################
#ここで一度ブラウザに戻り,出力されたURLにアクセスする.
########################
puts "Code =>"                                                                                                                                                          
code = gets                                                                                                                                                             
code.chomp!                                                                                                                                                             
access_token = request_token.get_access_token(:oauth_verifier => code)                                                                                                  
                                                                                                                                                                        
puts "access_token"                                                                                                                                                     
puts access_token.token                                                                                                                                                 
puts "access_secret"                                                                                                                                                    
puts access_token.secret                                                                                                                                                
                                                                                                                                                                        
#############################
# 以下コピペ用
#############################
puts "Paste this to your code =>"                                                                                                                                       
puts "consumer = OAuth::Consumer.new(\"#{consumer_key}\",\"#{consumer_secret}\",:site => \"https//:api.cybozulive.com\")"                                               
puts "token = OAuth::AccessToken.new(consumer,\"#{access_token.token}\",\"#{access_token.secret}\")"  

試しに新着情報を取得してみる

アクセストークンを取得できたら,あとはそのトークンを使ってサイボウズLiveの様々な情報にアクセスすることができる.
以下はサイボウズLiveの新着情報を取得するコード.<==Consumer Key==>の部分は先程取得したものに置き換える.

require 'rubygems'                                                                                                                                                      
require 'oauth'                                                                                                                                                         
                                                                                                                                                                        
def get_oauth                                                                                                                                                           
  consumer = OAuth::Consumer.new(                                                                                                                                       
             "<==Consumer Key==>",                                                                                                                 
             "<==Consumer Secret==>",                                                                                                                   
             :site => "https://api.cybozulive.com"                                                                                                                      
             )                                                                                                                                                          
  token =   OAuth::AccessToken.new(                                                                                                                                     
            consumer,                                                                                                                                                   
            "<==Access Token==>",                                                                                                                         
            "<==Access Token Secret==>"                                                                                                                          
            )                                                                                                                                                           
end                                                                                                                                                                     
                                                                                                                                                                        
token = get_oauth                                                                                                                                                       
                                                                                                                                                                        
puts token.get("https://api.cybozulive.com/api/notification/V2")

これで新着情報がXML形式で取得できるのであとは煮るなり焼くなり.
この他にどのようなデータが取得/更新できるのかはAPIドキュメントを参考にする.

追記予定

サイボウズ Live API を使ってみる

サイボウズLiveAPIが公開されていたのでさっそく試してみた.
使用言語はRuby

アプリの登録

デベロッパセンターにログインしたら上メニューの「Myアプリケーション」→「アプリケーションを登録する」を選択.


以下の必須項目を記述.アプリの説明は任意で.

  • アプリケーション名
  • アプリケーションの種類

  今回はクライアントを選択

  • アクセスレベル

  レベルA ... 簡易情報の読み込みが可能。
  レベルB ... 詳細情報の読み込みが可能。
  レベルZ ... API が提供する全ての機能を利用可能。
  今回はレベルZを選択.

OAuthの設定

サイボウズLive APIへのアクセスはOAuthを利用する.
OAuthの仕組みなどはおググりあそばせ.


まずはアプリケーション管理画面にいき,Consumer KeyとConsumer Secret(赤線部分)を控えておく.


これをもとに認可されたアクセストークンを取得する必要があるが,
手続きが面倒なので対話式にアクセストークンを取得できるコードを用意.

手順としては,

  1. Consumer Keyを入力
  2. Consumer Secretを入力
  3. [許可用のURLが出力される]→ブラウザでURLにアクセス
  4. 確認コードを取得
  5. 確認コードを入力
  6. アクセストークンGET

という流れ.

require 'rubygems'                                                                                                                                                      
require 'oauth'                                                                                                                                                         
                                                                                                                                                                        
puts "consumer_key =>"                                                                                                                                                  
consumer_key = gets                                                                                                                                                     
consumer_key.chomp!                                                                                                                                                     
puts "consumer_secret"                                                                                                                                                  
consumer_secret = gets                                                                                                                                                  
consumer_secret.chomp!                                                                                                                                                  
                                                                                                                                                                        
consumer = OAuth::Consumer.new(                                                                                                                                         
  consumer_key,                                                                                                                                                         
  consumer_secret,                                                                                                                                                      
  :site => "https://api.cybozulive.com",                                                                                                                                
  :request_token_url => "https://api.cybozulive.com/oauth/initiate",                                                                                                    
  :access_token_url => "https://api.cybozulive.com/oauth/token"                                                                                                         
)                                                                                                                                                                       
                                                                                                                                                                        
request_token = consumer.get_request_token                                                                                                                              
puts request_token.authorize_url                                                                                                                                                                                                                                                                                             
########################
#ここで一度ブラウザに戻り,出力されたURLにアクセスする.
########################
puts "Code =>"                                                                                                                                                          
code = gets                                                                                                                                                             
code.chomp!                                                                                                                                                             
access_token = request_token.get_access_token(:oauth_verifier => code)                                                                                                  
                                                                                                                                                                        
puts "access_token"                                                                                                                                                     
puts access_token.token                                                                                                                                                 
puts "access_secret"                                                                                                                                                    
puts access_token.secret                                                                                                                                                
                                                                                                                                                                        
#############################
# 以下コピペ用
#############################
puts "Paste this to your code =>"                                                                                                                                       
puts "consumer = OAuth::Consumer.new(\"#{consumer_key}\",\"#{consumer_secret}\",:site => \"https//:api.cybozulive.com\")"                                               
puts "token = OAuth::AccessToken.new(consumer,\"#{access_token.token}\",\"#{access_token.secret}\")"  

試しに新着情報を取得してみる

アクセストークンを取得できたら,あとはそのトークンを使ってサイボウズLiveの様々な情報にアクセスすることができる.
以下はサイボウズLiveの新着情報を取得するコード.<==Consumer Key==>の部分は先程取得したものに置き換える.

require 'rubygems'                                                                                                                                                      
require 'oauth'                                                                                                                                                         
                                                                                                                                                                        
def get_oauth                                                                                                                                                           
  consumer = OAuth::Consumer.new(                                                                                                                                       
             "<==Consumer Key==>",                                                                                                                 
             "<==Consumer Secret==>",                                                                                                                   
             :site => "https://api.cybozulive.com"                                                                                                                      
             )                                                                                                                                                          
  token =   OAuth::AccessToken.new(                                                                                                                                     
            consumer,                                                                                                                                                   
            "<==Access Token==>",                                                                                                                         
            "<==Access Token Secret==>"                                                                                                                          
            )                                                                                                                                                           
end                                                                                                                                                                     
                                                                                                                                                                        
token = get_oauth                                                                                                                                                       
                                                                                                                                                                        
puts token.get("https://api.cybozulive.com/api/notification/V2")

これで新着情報がXML形式で取得できるのであとは煮るなり焼くなり.
この他にどのようなデータが取得/更新できるのかはAPIドキュメントを参考にする.

追記予定

JCSS2010発表してきた

9月17-20日の3日間、JCSS in 神戸大学に参加してきましたよ。

一日目

前々からTwitterで絡みのあった方と合流し、その方の発表を聞いた。
フレームを利用した学習についての研究、という認識でよいのだろうか、とても興味深い内容だった。

他の発表で興味深かったのは、接尾語「の」における長期記憶との関係についての研究。
語尾に「の」をつけた文章は長期記憶につながりやすいらしいの。


その後は芋づる式に知り合いが増えていき、そのメンバーと一緒に中華街に晩ご飯を食べにいった。

2日目

体調不良でダウン。
発表は一度も聞けずだった。

夕方頃から体調が回復してきたので、知り合ったメンバーで晩ご飯を食べに行くことにした。
今夜のおかずはかねてより期待していた神戸牛ステーキ。
5000円超の肉を食べたのは人生で初めてだった。UMEEEE!

3日目

この日は発表の日だった。
2時間近く喋りっぱなしだったのはかなり久しぶりで、時間がたつのがあっという間だった。
そして人に何かを説明するという経験値はかなり大きいことを再確認した。
考えが整理されると言う意味でも、どんどん人に話を聞かせていくべきだね。


あぁ、中間発表をポスター発表にしたらいいかもしれないな。