2011年12月6日

Galaxy Note欲しいなあ

移動中に論文が読みたい。
最近はほとんどの論文をPDFで入手できるので、これを移動中に適当に選んで読むことができたらとても良さそうだ。

「今週これを読むぞ!」と思うものはあるのだけれど、なんとなく手持ちぶさたなときとか、準備したものを読みたくないときに、スマホか何かで論文を呼び出して読めたらなあと思う。

いろいろ見ているけれど、やっぱりiPad2に勝るものはないって感じだけど、もうちょい小さいものがいい。
7インチタブレットはどうかと思うけれど、買って試すのもなんだかなあって感じ。

そんなところに、最近よく見るのが、Galaxy Note。
5インチなんだけど、解像度の高い液晶を使っているので細かい文字もよく見えるらしい。
うーん、試してみたい。

2011年11月7日

Google+でshareしたブックマークをevernoteに転送成功!

さきほどのエントリで書いた件、成功しました。
matuダイアリーさんが公開してくださった方法がGoogle Readerのアップデートで使えなくなったと分かったときはがっくりでしたが、これで何とかなりそうです。

こちら
で公開しておきました。
require 'mechanize'
require 'kconv'
require 'tmail'
require 'tlsmail'
という感じなので、mechanize, nokogiri, kconv, tlsmailをgemからインストールする必要があります。
また、インストールディレクトリの下にtempディレクトリを作っておいてください。
こちらにキャッシュが保存されて、以前転送したエントリを重複してダウンロードしないようになっています。

ファイルの冒頭に設定を各欄がありますので、Google PlusのIDやEvernoteのIDなどを入力します。
あとはこれを適当なサーバにおいて、cronで定期的に起動するようにすればオッケーです。

Google+でShareしたブックマークをevernoteに転送できない(調査中)

賛否両論のGoogle+ですが、Readerを使ってきた身としては、新機能がけっこうつらいです。
共有機能がなくなり、共有した記事をevernoteに転送してくれるツールなどが使えなくなってしまいました。

どうすればいいのかなあと考え中です。
とりあえず、一般公開(Public)にした記事のRSSは、http://plu.sr/ユーザIDで取得できます。
で、doRubyさんの記事を参考にして、RubyでRSSを取得することもできます。
後は、これを一個ずつ取り出して、evernoteの登録アドレスに転送すれば、とりあえずの用途は満たします。
その際、登録したノートブック名に@をつけたものをタイトルに追加しておくと、指定したノートブックにデータを登録できます(出所)。

tmail使えば、タイトルの編集や送信も簡単だから、やろうと思えばできますね。
あと、気になっているのは、できればRSSから全文を取得したいということ。
さきほどのmatuダイアリーさんの記事では、instapaperを使えば大丈夫とのことですが、plu.srで取得したRSSのリンク先は、Google+のRSSなんですよね。
こちらは、RSSリーダーでもともと取得した記事そのものなので、サイトが出力した部分しか含まれていません。

ということは、RSSを取得して、そのリンク先であるGoogle+から、さらにリンク先を見つけてInstapaperに渡せばいいということ。
ソースを見てみると・・・何これ?
こんなシンプルなページが、なんでこんなにコードが。。。
どうも、class="B-u-Y"の次にあるリンクを探せば大丈夫みたい。

あとはコード書くだけか。。。
誰かやってくれそうだけどなあ。

2011年10月13日

mtgNotesの開発

Rails3.1を使ってアプリケーションを開発しています。
mtgNotesって暫定的な名前をつけていますが、もう少し名前は考えたいところです。

このツール、自分の周りの人とコラボでいろんなことをやる人に使ってもらいたいなと思って作成しています。
というより、僕自身がそういう感じなので、その記録をとるツールがほしいと思って製作しています。
ただ、コラボっていいながら、このツール自体は個人で使うものになっています。
僕が、どういうグループと何をしたのかを記録していくものです。

プロジェクトに着目するツールというのはけっこうありますが、参加者は常に固定していたりします。
プロジェクトに起こった出来事(活動記録)ごとに、欠席している人もいるはずです。
その、「あのときにはいたけど、このときにはいなかった」ということは、記録できた方がいいはず。
特定の人がいなかったときに決まったことって、後で問題になること、けっこうあります。

そして、(まだ実装してないけど)人側から検索することも可能です。
そうすると、所属プロジェクトに関わりなく、この人と何をしたのかを見ることができます。
もちろんその人の個人情報なんかも収録しておけばよいでしょう。

ある程度データがたまれば、「Aさんに関する活動記録」というレポートと「mというプロジェクトの活動記録」というレポートを作成することができます。
どちらもさまざまな活動をしていると、後で見返すと便利なものになるはずです。

技術的には大したことないプログラムではあるけれど、僕自身のニーズはぴったり満たしている感じで、気に入って開発しています。
開発を手伝ってくださる方も募集しています。
興味がある方は連絡ください。

そうそう、テストプログラムのサイトはこちらです。
http://mtgnote.ecofirm.com/

2011年10月11日

counter_cache (Rails3.1)のspec

Railsのアソシエーションの数を自動的に数えてくれるというしくみ=counter_cacheで、なんだか悩みました。
今でもよく分からない状態。

どうやってテストすればいいんだろう。。。

プロジェクトを適当に二つ作って、最初の方にメンバーを追加する、と。
そうすると、p.members_countが一つ減っていないといけないと思うんだけど、p.members_countはもともとゼロなんだそうです。


it "increment counter_cache when project has changed" do
p = Factory(:project)
p2 = Factory(:project)
m = p.members.create(:name => 'abc')
lambda do
put :update, :id => m, :project_id => p2
end.should change(@, :issues_count).by(-1)
end


ちなみに、counter_cacheのアップデート部分はこんな感じが今のところちゃんと動きます。
update_countersは使えなくなったのか、なんだか挙動不審。
increment/decrement_counterが中でupdate_countersを呼んでいるので、この方が正しい使い方のようです。
belongs_to :project, :counter_cache => true
before_save :update_counters

private
def update_counters
new_project = Project.find self.project_id
Project.increment_counter(:issues_count, new_project)
if self.project_id_was.present?
old_project = Project.find self.project_id_was
Project.decrement_counter(:issues_count, old_project)
end
end

2011年9月29日

UbuntuでRails3.1

Rails3.1をCapistranoでデプロイしようとして、けっこうはまった。
そもそも、3.0時代にデプロイしておけばよかったのだが、どうせデプロイするなら、環境も最新にした方が、後でめんどうがないだろうとRailsをこの際アップデートしておいた。
みんなも大好きなRailsCastsを見ながら、一時停止を繰り返しながら、AsciiCastsの方からコピペして、設定していく。
ほんとは、AsciiCastsだけでじゅうぶんなんだけど、そこはまあ、ライブ感があって楽しいので、ビデオを見ながらやっていく。

さて、いろいろやって、cap deploy:updateまでこぎつけた。
ここで出る、javascriptのランタイムがないというエラーは、こちらをはじめとして、あちこちで報告されている。
で、Gemfileに以下を追記。
gem 'execjs'
gem 'therubyracer'


これで動くかと思えば、そうでもない、と。
どういう環境だと、これで解決するのかな。
うちは、Ubuntu10.10なんですが、うまく動きません。

なるほど、ランタイムがないのか。therubyracerは違うの?と思いつつnode.jsを入れようと思い立つ。
とりあえず、適当にやってみる。
apt-get install node


これだと、
axconfig: port 1 not active

こんなエラーが出る。
なんでやねん!

こちらでは、「それは、node.jsではなく、nodeをインストールしたからだ。ずぼらせずに、gitでとってきてコンパイル・インストールしろ。」と書かれている。
どうやら、nodeというパッケージは全然関係ないみたい。


git clone https://github.com/joyent/node.git
cd node && ./configure && make
make test
make install

makeでエラーが出るけど、「無視されました」と出て、コンパイル成功。
testでもエラーが出るけど、無視してインストール。
(いつか怖いことが起きそうな気がする)


ここで再びエラー。

今度は、currentがディレクトリなので削除できないよ!ってやつ。
そりゃあ、rm -fでは削除できないでしょ?
勝手にディレクトリ作って、削除できないようもないけどなあ。。。
そういえば、このディレクトリ(current/public)は、apacheをちゃんと設定できているかのテストのために作成したものだった。

そこで、このディレクトリを削除すると、ついにデプロイが完了。

というわけで、もうちょっとしたら、アプリ、超αですが、リリースできそうです。

2011年9月28日

Rails3.1で開発中

以前から開発を進めていたツールの開発が、ようやく一段落した。
だいたい「自分では使える」ようになった感じ。
これから、他の人も使えるように、デザインをちゃんとしたり、操作の動線を考えたりする必要がある。

で、今日はherokuを設定してみたのだが、二点、はまった。

1.gemでpostgresqlを要求される。
 Gemfileに'pg'を追加したらエラーがなくなった

2.fakerがエラーを出す。
rake aborted!
no such file to load -- faker

こちらは、ちょうど同じことを聞いている人がいたので、このとおりに、sample_data.rakeからrequire'faker'を削除したら問題なくなった。

herokuはproduction環境だから、fakerなんて関係なのになって思うけど、なんでなんでしょうね。

2011年7月31日

HTC SensationのRoot(S-OFF)が取得可能に

HTCはまもなく、HTC SensationのRootを取得可能にすると言われているけれど、ハッカーのみんなは待てないみたい。
xdaで、S-OFFのためのツールが公開されました。

ツールをダウンロードして、サイトを見ながら進めれば、簡単にS-OFFできそうです。

ただ、Macでは動かないみたいなので、僕はまだ試してはいません。

そもそも、Rootとる必要性って、最近は、フォント入れ替えることといらないプリインストールアプリを消すこと、バックアップをとることぐらいなんですが、今のところ、どれもそこまで必要としていません。
僕がやるとしたら、単に技術的興味からです。やってみたいからやる、と(笑)
めっちゃ暇になったら、挑戦するかもしれませんが、今しばらくは様子見です。

そうそう、新しいROMでいいのが出てきたら試したくなるかもしれません。

2011年7月6日

HTC Sensation、バッテリーかなり保つ?

Milestoneのバッテリーは朝から晩までしか保たなかった。
なんだかめんどうになって、自宅やオフィスにいるときは電源を切りっぱなしにしたりしていた。
そのため、いつしかGoogle Calendarは使わなくなって、予定の管理は紙の手帳に戻った。

なんだかんだいって、毎日使う道具として考えるおt、スマフォや携帯の一番のポイントはバッテリーの保ちじゃないかなあ。
予備バッテリーを添付して、入れ替えられます!なんて論外だ。

で、HTC Sensation。
初期不良交換から先週末、ようやく帰ってきたので運用開始。
初日は、バッテリーの接触をとめるフィルムを外し忘れていて、充電できず(涙)
改めて、月曜朝から運用を開始した。
そして、今朝まで、バッテリーは保った。
昨夜から「バッテリーが15%以下です」といわれていたけれど、無視して放置しておき、今朝起きたらまだ少し残っていた。
(何%か見ておかないといけませんでしたね)

いちおう完全放電してから充電したいなと思っていたので、TEDのビデオを再生させたまま放置して、シャワーから戻ると、電源が落ちていた。
利用頻度は低いものの、ほぼ丸二日バッテリーは保った。

僕の使い方としてはほぼこんな感じなので、この程度の利用頻度なら、二日バッテリーを充電しなくていいようだ。
バッテリーメーターがもう少し慣れてきたら、もしかするともっと保つのかも知れない。
楽しみ。

2011年7月2日

HTC SensationのTemp Rootが取得可能に?

xda developersを見ていると、HTC Sensationの一時的な(temp)rootの取得に成功したという書き込みがありました。

僕はフォントを日本語のものに変えられれば満足なので、これで十分です。
人によってはRomを書き換えられなければつまらない!というハッカー系の人もいますが、Sensationは公式にアップデートもされそうなので、僕はrootが必須とは感じていません。
Milestoneのばあいは、公式なアップデートが2.1以降なかったと思うので、非公式Romに乗り換えて使っていますが、公式なアップデートさえあれば、それで十分かなと思っています。

Rootをとられたくなければ、それを必死に防御しようとするのではなく、Rootをとる必要がないようにすればいいんじゃないかな。
普通は、次の3点ぐらいが満たされれば、問題ないんじゃないかなあ。
1.フォントの入れ替え
2.不要なプリインストールアプリケーションの削除
3.スクリーンショットの取得

Andoroid太陽政策ってところかな?(笑)

海外携帯の場合、テザリングはもともとやれるし、これとB-mobile fairあたりを組み合わせれば、誰にも文句はいわれないしね。

2011年6月28日

Osukiniサーバにぶじ移行

ecofirm.comをOsukiniサーバの一番安いプランに変更しました。
とりあえず、geeklog、redmine、Wordpress、mailmanがぶじ稼働しています。
Webサーバはnginxにしたい気もしますが、まずは旧環境を整備することを目標に作業しました。
次は、slowlist.orgの引っ越し。

で、今日はセキュリティの強化ということで、rootログインの禁止、sshポートの変更(iptablesにルールを追加し、22番ポートをふさぐ、sshdの設定)などを行いました。
あとは職場からのアクセス関係を整備すればオッケーかな。
これでサーバ設定・移行作業は一段落です。

Osukiniサーバ、僕ぐらいの「とりあえずWebサイトが運用できて、ときどきはいろんな実験ができること」という条件にはぴったりです。
今後はコンテンツの充実に力を注ぎたいところです。

2011年6月14日

Sensation、初期不良

昨日、Sensation届きました。
4.2インチのディスプレイはやっぱりいいですね。
フリックとかqwerty入力も打ち間違えがなくて、快適です。
僕のはタイで販売されているものなのか、タイ語キーボードがついていました。

さっそく設定をいろいろやってみたのですが、TEDを見ているときに、不具合?を発見。
なんと、ボリュームキーがまったく効かないのです。
expansysに連絡して交換してもらうことにしました。

せっかく来週の出張で使おうと思っていただけに、なんだかとっても残念です。

2011年6月3日

HTC Sensation

なにげにExpansysを見てたら、HTC Sensationの在庫が3となっていた。
え?もう買えるの?しかも在庫あり?
という感じ。

Galaxy SIIかLGのOptimus 2Xが欲しいなあと思ってたけど、前者はDocomoからもうすぐ出てしまうし、後者は評判がいまいち。
それなら、そろそろ出るSensationを待つか・・・

買えるのは6月末かな?と思っていただけに、このスピードはちょっと予想外。
だけどそれでも、今なら持ってる人少ないし。

というわけで、注文してしまいました。
来週中には到着しそうな感じですが、どうなるかな。

2011年5月31日

Webminが日本語化されてて、なにがなんやらさっぱり

ただいま、とあるサーバを試用中です。
久々に使ったWebminがすごく進化してて、なんでもWebで設定できてしまいそうな勢い。

ですが、日本語が行き届いていて、なにがなんやらよく分かりません。
前は、単語と設定項目がだいたい対応していたので(そりゃそうですよね)、なんとなく意味が伝わったんですが、日本語になると、難しいですね。

2011年5月30日

Androidの設定:K-9メールを使う

ふと思い立ってメーラーをK-9メールに変えた。
ついでにブラウザはOpera Miniに変更。
Titanium Backupを使う前は、標準のGmailアプリと同時に別のメーラーを使うのは通信量(とバッテリー)の無駄だと思ってたから、今までは考えても見なかった。
が、K-9メール、すごく便利った。

僕のMilestoneはメモリがかつかつなので、標準のGmailとメールアプリはTitaniumを使ってアンインストールしておいた。
最近のGalaxy SIIあたりだと、内蔵ストレージもたっぷりなので、アンインストールもしなくていいのかもしれない。

K-9メールはマルチアカウント対応で、Gmailのフォルダごとに同期設定ができるから、Inbox以外に、普段使うフォルダを同期しておくことができる。
同期間隔の設定ももちろん可能だ。

普段使いのGmailアカウントでプッシュと通知を有効にすると、ほとんど常にメールの到着を知らされるはめになる。
ときどき、携帯的に使いたいなと思うときもあるので、gmailアカウントを別にとって、それだけプッシュにするという使い方がいいのかなと思う。
こういうのも、マルチアカウントの利点なんだろうな。

2011年4月27日

僕はB-mobile Fair使えるかなあ

スマートフォン用の通信環境をいろいろと探しているが、今のiPhone3GSは、割引があるみたいで、月々3780円だ。
それよりも安くなるのかなあと見てみると、ドコモだと、月々サポートをいれても6000円弱になるみたい。
ソフトバンクやauもたぶん似たようなものだろうなあ。
考えてみたら、スマフォって高いね。
僕が学生の頃、毎月6000円払えって言われたら、払えなかったと思う。

それはさておき、先日出た1GBまで使えて、4ヶ月で9800円というb-mobile fairがスマフォの通信環境の選択肢にあがってくる。
端末に何を買うかは別として、(Galaxy SII、いいなあ。MilestoneにもSIMいれてあげたいし・・・)とりあえず、今どの程度パケットを使っているかを把握しておこう。

My Softbankにアクセスしてみると、過去、月に10万円とか20万円とかパケットを使っている月もあるみたい。
これなら、一瞬で1G超えるやん、と思って計算してみたら、どうもそんなことはないみたい。
Softbankのプランは1パケット0.08円で計算しているから、高く見えるんだろう。

Softbankの割引前の請求額がどの程度のデータ通信料になるのか、こちらを参考に計算してみよう。
まず、8パケットで1KBになるので、8で割る。
これがKBなので、GBに換算する。

だいたいだけど、KBからGBへの変換は百万で割れば概算できる。
1MB=1024KBで、1GB=1024MBだと思うんだけど、ブログでは、わざわざ1GB=1000MBと修正している。
めんどうなので、ここでは概算する。

すると出たのが、12万円ぐらい使っているときで0.18G、20万円だと0.31GB。
4ヶ月使うと・・・20万円ペースだと1.25GBになるが、12万円ペースだと0.75GB。

20万円ペースで使うということはあんまりないと思うので、僕の場合はちょうどb-mobile fairの範囲内っぽい。
ちなみに、20万円ペースというのは、子ども番組をYouTubeでけっこう見たとき。
ふだん、YouTubeとか見ないので、平均すると、12万円ペースと思えばよさそう。

自宅や職場ではWifiがあるし、移動中はほんとに移動しているからネットってあんまりみないしなあ。

ちなみに、iPhoneは一昨年の12月に契約したから、今解約すると1万円ぐらいのペナルティ(かな?)がかかる。
Fairにすると、月2500円なので月に800円ぐらい浮くから・・・12月まで8ヶ月で6400円の差額。
ペナルティを考えると、もうしばらくiPhoneでひっぱったほうが得かも。。。

なんだかんだいって、今使っているサービスにロックインされている感じがする。

Softbankで計算すると月に12万円〜20万円ぐらいになるものを、b-mobileで使うと月に2500円ですむというこの結果、よく考えると損か得かというレベルの問題ではない気がする。
Softbank(だけではなく、ドコモやauも)のパケット単価が高すぎるのではないか。
現代の用途から考えると、二段階定額と言ってもこの単価では上限に張り付いてしまう。
Wired Visionの記事で詳しくこの点が検討されている。

b-mobileのばあいは、パケット単価が100分の1ぐらいだ。
ドコモから回線を買って提供しているにも関わらず、100分の1の価格で提供できるということの意味をしっかり考えないといけない。
そして、大手三者がほぼ横並びの価格設定と料金体系を作っていることも。

僕はここまで書いて、抗議の意味も込めて、b-mobileに引っ越しすることにした。

2011年4月9日

link_to :remote=>trueには、Named Routeが必要?

Rails3でAJAXを使って、画面を動的に更新したいと思っていたのだが、どうもうまく行かなくてすごくはまってしまった。
どうやら、replace_htmlなどを動作させるには、Named Routeを指定する必要があるようだ。

jquery-railsをインストールした環境で、こんなコードは動く。
def show
@item = Item.find(params[:id])
respond_to do |format|
format.js do
render(:update) do |page|
page.replace_html 'Change', "Okay!"
end
end
end
end

しかし、これは動かない。
def showitem
@item = Item.find(params[:id])
respond_to do |format|
format.js do
render(:update) do |page|
page.replace_html 'Change', "Okay!"
end
end
end
end


いずれも、ページ中の
の中身を置き換えるだけのものだ。

show.html.erbで定義したリンクはこんな感じ。
showへのリンク: <%= link_to 'update', item_path(@mole), :remote => true %>
showitemへのリンク: <%= link_to 'update2', :action => 'showitem', :remote => true, :format => 'js' %>


showitemは、config/routes.rbでもこんな感じで定義
match 'items#showitem' => 'items#showitem'


こうすると、show.html.erbのソースは
update
update2

となる。
remote => trueが前者はちゃんとdata-remoteと認識されているのに対して、後者は、単なるパラメータになってしまっている。

後者は、リンクをクリックすると、javascriptが表示されるだけで、何も起こらない。

ここでずーっとはまったのだが、ふと、Named Routeを設定したらどうなるのか?と思い、やってみたら、うまく動いた。

route.rb
match 'items#showitem' => 'items#showitem', :as => 'showitem_item'

showitemへのリンク: <%= link_to 'update2', showitem_item_path, :remote => true %>

htmlのソース:update2


なにか間違えているからこうなるのかなあ。
Named Routeなしで同じことができるべきという気がするんだけど・・・

2011年3月17日

HomebrewでEmacs23.3+フルスクリーン


以前、同じようなネタを紹介したが、今回Emacsを23.3にあげて、フルスクリーン環境を整備した。
あのときは、Emacsのバージョンが23.2だっただけではなく、なぜかフルスクリーンにならなかった。

今回はHomebrewを使ってEmacsをインストールし、無事darkroom-modeを動かすことに成功した。インラインパッチもちゃんと動いている。

パッチのところを、ここあたりを参考に、

def patches
{:p1 => [ "http://cloud.github.com/downloads/typester/emacs/feature-fullscreen.patch"],
:p0 => [ "http://jaist.dl.sourceforge.jp/macemacsjp/47986/inline_patch-23.2-beta3.tar.gz"]} if ARGV.include? "--cocoa"
end

として、

brew install emacs --cocoa

とするだけだ。

ちょっとはまったのは、fullscreenパッチのダウンロードURLが変わっていたのか、僕がいじっているうちに変えてしまったのか、先ほどのcola-zeroさんのサイトどおりの
http://github.com/downloads/typester/emacs/featureーfullscreen.patchはだめで、http://cloud.github.com/downloads/typester/emacs/feature-fullscreen.patchでないと動かない。

あとは、darkroom-mode.elだが、こちらは以下のように、Windows用のw32なんとかと書かれているコードを削除して、(ns-toggle-fullscreen)とすればよい。


; (w32-fullscreen-off)
(ns-toggle-fullscreen)

init.elには、こんな感じがいいかもしれない。

;; Darkroom-mode
(require 'darkroom-mode)
(global-set-key [f10] 'darkroom-mode)


typester氏のフルスクリーンは、OSXのツールバーも覆ってくれるので、これを使ってdarkroom-modeに切り替えると、ほんとうにEmacsの一フレームだけになる。
液晶パネル全体のスクリーンショットは右上のような感じ。
ウィンドウの横でちらちらとFireboxのページがのぞいていたり、Mailの未読数が増えていたりすると、仕事に集中できない。
そんなときは、F10をぽんと押してこのモードに切り替えてしまえば、ほんとうに執筆に集中できる。

そうそう、執筆に集中といえば、次の二つもinit.elに追加しておくとずいぶん使い勝手があがる。

(mac-add-key-passed-to-system 'shift)
(add-hook 'minibuffer-setup-hook 'mac-change-language-to-us)

前者は、記号を入力するときに、デフォルトだと半角の記号が直接入力されてしまう問題を回避してくれる。
後者は、日本語入力をしていても、ミニバッファに入ると英語モードに切り替えてくれる。
どちらも、ちょっとした「いらっ」を解決してくれる設定だ。

2011年2月10日

anything.elで新規保存・新規作

いつも忘れていらいらするので、メモしておきます。
emacsのインターフェイスを革命的に変えたと言われるanything.el。
このおかげで、いつも使うファイルをほぼ瞬時に呼び出すことができるので、使えば使うほど手になじむコンピュータができます。

Windowsのエクスプローラとか、Macのファインダなんかはマウスで操作できるけど、使っても使っても便利にはなっていかないという問題があります。
GUIでももっと便利にできると思うんですけど、まあ、僕はほとんどemacsしか使わないから別にいいか。

さて、anythingでイライラするのは新しいファイルをつくるとき。
新しいファイル名なので補完が効かないのは当然です。なのに補完しようとするから、変なところにファイルができてしまったりして、すごくいらいらします。
ただ、よく読んでみると、ちゃんと方法があるみたいで、このとおりやれば、むしろ「めっちゃ便利やん!」って感じになります。

新規ファイルの作成

新しいファイルを作成したいときは、まず、ファイルを作成するディレクトリを決めますよね?
そこで、そのディレクトリに含まれているファイルをC-x C-f から、いくつかファイル名をタイプして見つけます。
そしてそのファイルを選択して、再び、C-x C-fです。
すると、ファイル名を入力するミニバッファがでますので、ファイル名を入力すれば、そのディレクトリに新規ファイルが作成されます。
作者のrubikichiさんの説明にちゃんとありました)

←これがうまく動かないなあ。
今のところ、該当するディレクトリのファイルを開いてから、もう一度C-x C-fして、そこで新しいファイル名を入力する方法をとっています。
めんどくさいし、何かがおかしい気がする。

新規保存

もっといらいらするのが、新規保存です。
適当なファイルをコピーして新しいファイル名で保存したいときってありますよね。
ほとんど同じようなファイルをつくるときとか、なにかのファイルをテンプレートにして新しいファイルをつくるときとかです。
僕は(1)そのファイルを開いて、(2)新規保存(ファイル名をつけて保存)=C-x C-wしていたのですが、これがうまく行かない。
なんだか変なディレクトリに保存されてしまったりするんですよね。

どうもこれ、順番を変えるとストレスがないようです。
(1)ファイルをコピーする(2)ファイルを開いて編集する
の順ですね。
ファイルをコピーするのは、C-x C-dを使い、適当なディレクトリを選択し、diredを開きます。
そして、コピーするファイルの上で、Cコマンドです。
そうするとコピー先を聞かれますので、ファイル名をいれれば、同じディレクトリ内でのコピーができます。
同じように、コピー先をパス付きにしたら、そのディレクトリにコピーされます。

まあ、発想の転換なんですが、よく考えたら、この方が、元になるファイルに間違えて上書き保存することもないので、安全ですよね。

2011年2月6日

Redmineを久々にアップグレード

ときどき使ってみるのだけれど、使う習慣付けができないredmineだが、改めて使うことにした。
プログラミングというよりは、関わっている団体での文書管理等で使いたいなと思っている。

redmineは0.8.0と古かったので、一気に1.1.1にアップグレード。
なぜか、変なエラーがでて、止まってしまうので修正してみた。
ここで紹介したサイトでは、エラーではなく警告と書かれていたけれど、僕のところではエラーでDBのmigrateが止まってしまっていた。

というわけで、無事アップグレード完了。

なにが進化しているのか、使ってみるのが楽しみ。

2011年1月3日

dreamhostVPSでOpenPNE3がうまく動いた

先日書いたとおり、OpenPNE3(3.4.9)をdreamhostにインストールして運用しようと実験しています。
デイリー・メール(cron)と、携帯からのメールによる投稿もうまく動きました。

cronの方はsshでログインして、crontab -eで編集して保存すれば問題ありません。

一方、メール投稿の方は何をすればいいのか、方針が決まらずに少し迷走しましたが、なんとか使えるようになりました。

やったことは、次のような感じ。
  1. dreamhostに新規アカウント(例:pne)を追加して、届いたメールをOpenPNEに渡す中継用とする
  2. OpenPNEをインストールしたドメインにメールアカウント(catch-all)を追加して、ドメイン宛のメールをすべて捕捉する。
  3. コントロールパネルで、メールアカウントにフィルタを追加して、catch-all宛のメールをpneに転送する
  4. sshでシェルにログインし、pneに届いたメールをOpenPNEに渡すよう設定する。
という感じ。
実は一番困ったのは、携帯から、どういうアドレスにメールを送れば日記への投稿となるかが分からなかったこと。
この件は、携帯からログインして、「日記を書く」すると上に「メールで投稿」というボタンがあるので、これをクリックすれば、アドレスがでてきた。
(うちの場合は、設定でメアドにハッシュを設定しない使用にしているためか、d@xxxxxというシンプルなもの。)
2回目からは、このアドレスに直接送っても投稿できる。

上記1−4は、DreamhostのWikiに書かれていた。
Dreamhostってパワーユーザが多いのか、やりたいことがけっこうWikiで解説されていることが多い。
あ、今確認したら、こっちの方がちゃんとした(=新しい)情報。
微妙にやり方が違うから脳内変換しながらやったけど、単にドキュメントが古かっただけみたい。

2011年1月1日

dreamhostでOpenPNE3

OpenPNE3が使いたくなったのでインストールしてみた。
特に問題ないかと思えば、シェル経由でのphpのバージョンが4と古くて、いきなりすんなり行かない。
が、こちらの情報で、symfonyの一行目を、php5用に書き換えたところ、うまく動いた。
#!/usr/local/php5/bin/php
ですね。

cronはcrontab -eで設定できそうです。
(今、設定時間に送信されるのを待っています)

まずはここを見ながら必要な情報を集めます。
うちではroot権限がないのでどうすればいいのか、情報収集中です。