2008/12/26

[Blogger]java.net.ConnectException: Connection timed out

Blogger

Blogger を使っていて、FTP 経由で公開している場合、たまによくわからないエラーに遭遇し、投稿に失敗する場合があります。


その一つが、「java.net.ConnectException: Connection timed out」ですね。


FTPでブログを作成し、初めてのこのエラーが発生した場合は、大概、passive(PASV / パッシブ) FTP が原因です。

Blogger では、アクティブ FTP はサポートされていないため、使用するサーバーでアクティブ FTP を要求していないことを確認します。


しかし、今まで正常に動作していたのに、突然このエラーが出てくることもあります。


そんな時は、次のことをトライしてみるといいかもしれません。



  1. 試しにテストの記事を投稿し、すぐに削除する。その後に再構築をする。

  2. アーカイブのファイルか、atom.xml ファイルをサーバ上から削除し、再構築をする。

  3. しばらく様子を見る


今回僕が遭遇したこのエラーでは、



  • 記事を再投稿し、再構築 ・・・ だめ

  • サーバ上から記事のファイルすべてを削除し、再構築 ・・・ だめ

  • テスト記事を投稿し、削除。再構築 ・・・ だめ

  • しばらく様子を見る ・・・ だめ

  • アーカイブファイルのみを削除し、再構築 ・・・ OK!


という感じでした。


原因は全く不明ですが、同様の問題が発生した場合は参考になれば幸いです。


参考サイト:


2008/12/24

Google Android Dev Phone 1

Android

弊社CEOから、クリスマスプレゼントということで、開発者向けテスト機として Google から販売されている、Android Dev Phone 1 を渡されました。


Android

使い始めるにあたり、次の事項に注意しました。



  1. アクティベーションに、データ接続が必要なので、あらかじめ Mopera U (docomo) を契約

  2. アクティベーション完了後に、Gmail 同期が行われるので、受信トレイをアーカイブしておく


SIMカードは、現在使用中のFOMA携帯用のものでOKでした。


気になるパケット代は、受信トレイをアーカイブしておいたので、mopera U の基本料金300円 + 200円程度のパケット料で済んだようです。


さっそく使ってみると、肝心の WiFi が認識しません!

あれこれ試して、結局、無線LANのチャネルの設定を変更して認識。接続成功です。


使用感は、iPhone に負けないくらいすばらしいですね。

まさに、PC と Mac といった感じでしょうか(良くも悪くも)。

iPhone のマルチタッチは使いやすいですが、Android のシングルタッチ + トラックボールもかなり使いやすいですね。



というわけで、日本で Android 携帯が発売される前には、なにかアプリを作ってみたいですね。

2008/11/30

[Gmail][Greasemonkey]Gmail Template Switcher を Safari, Google Chrome, Opera でも

Firefox, Safari, Chrome, Opera
Gmail Template Switcher
Gmail Template Switch


複数のアカウントで使用したり、差出人によって署名・挨拶文を変えたい場合に非常に便利なGreasemonkey、Gmail Tempolate Switcher ですが、

しばらく前に、Safariでも利用したいとのコメントをいただき、ようやく Greasekit 上の Safari でも動作を確認しました。


Safari 対応に伴い、Greasemetal での Google Chrome と、Opera でも動作を確認しました。


最新版のダウンロードは、こちらから。


Gmail Template Switcher - v 2.0


なお、ご利用方法は、Gmail にテンプレート切り替え機能を付けてみた - 記憶は削除の方向で をご覧ください。

Update:

Google Chrome Extension 版を作成しました。

2008/11/11

[Rails][Plugins] multimodel-forms プラグインがすごい便利

has_many な関連を、ひとつのフォームで登録したいことはよくありますが、そんなときにおすすめなのが、 multimodel-forms プラグインです。



たとえば、ひとつの記事に複数のコメントの場合は、以下のようになります。



まずは、ベースプロジェクトを作成です。



rails sample
cd sample
ruby script/generate scaffold article title:string body:text
ruby script/generate model comment body:text article_id:integer
rake db:migrate


# ---------- app/models/article.rb ----------
class Article < ActiveRecord::Base
has_many :comments
end


# ---------- app/models/comment.rb ----------
class Comment < ActiveRecord::Base
belongs_to :article
end


multimodel-forms プラグインをインストール




ruby script/plugin install git://github.com/sudothinker/multimodel-forms.git


model を修正


# ---------- app/models/article.rb ----------
class Article < ActiveRecord::Base
has_many_with_attributes :comments
end


view を修正


# ---------- app/views/layouts/articles.html.erb ----------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<title>Articles: <%= controller.action_name %></title>
<%= stylesheet_link_tag 'scaffold' %>
<%= javascript_include_tag :defaults %>
</head>
<body>

<p style="color: green"><%= flash[:notice] %></p>

<%= yield %>

</body>
</html>


# ---------- app/views/articles/show.html.erb ----------
<p>
<b>Title:</b>
<%=h @article.title %>
</p>

<p>
<b>Body:</b>
<%= simple_format(h(@article.body)) %>
</p>

<h2>Comments</h2>
<ol>
<% @article.comments.each do |c| %>
<li><%= simple_format(h(c.body)) %> <small>(commented <%= time_ago_in_words(c.created_at) %> ago)</small></li>
<% end %>
</ol>

<%= link_to 'Edit', edit_article_path(@article) %> |
<%= link_to 'Back', articles_path %>


# ---------- app/views/articles/new.html.erb ----------
<h1>New article</h1>

<% form_for(@article) do |f| %>
<%= f.error_messages %>

<%= render :partial => 'form', :locals => { :f => f } %>
<p>
<%= f.submit "Create" %>
</p>
<% end %>

<%= link_to 'Back', articles_path %>


# ---------- app/views/articles/edit.html.erb ----------
<h1>Editing article</h1>

<% form_for(@article) do |f| %>
<%= f.error_messages %>

<%= render :partial => 'form', :locals => { :f => f } %>
<p>
<%= f.submit "Update" %>
</p>
<% end %>

<%= link_to 'Show', @article %> |
<%= link_to 'Back', articles_path %>


_form.html.erb を追加


# ---------- app/views/articles/_form.html.erb ----------
<p>
<%= f.label :title %><br />
<%= f.text_field :title %>
</p>
<p>
<%= f.label :body %><br />
<%= f.text_area :body, :rows => 7 %>
</p>

<h3>Comments</h3>
<div id="comments">
<%= render :partial => 'comments/comment', :collection => @article.comments %>
</div>

<%= add_link "Add Comment", :comment %>


comments/_comment.html.erb を追加


# ---------- app/views/comments/_comment.html.erb ----------
<p class="comment">
<% fields_for_associated :article, comment do |comment_form| %>
<%= comment_form.text_area :body, :rows => 2, :index => nil %>
<%= delete_link_for(comment, "Delete", comment_form) %>
<% end %>
</p>


さっそく動作確認です。




非常に便利な、 multimodel-forms プラグインですが、 acts_as_list をサポートしているので、並び替えも簡単にできるようになります。

2008/09/04

Windows で git



Rails の Plugin をインストールしようとしたら、.git な GitHub(ぎっとはぶ)のもので、インストールできませんでした。


GitHub とは

git のホスティングサービス。Rails で作成されており、使いやすいインターフェイスが特徴。


Rails や RSpec 等、また http://gems.github.com/ の Rubygems のレポジトリソース等、Ruby 関係のライブラリのコードを中心とした様々なオープンソースの開発の場所ともなっている。無料で 100M 使えるアカウントを作ることができ、git レポジトリの作成、公開が可能。もちろん Web 上から変更履歴等も参照可能である。


またワンクリックで github で公開されている OSS のコードを fork して開発することが可能で、自分の変更を加えたレポジトリを pull してほしい、等の要望もワンクリックで可能である。


参考:githubとは - はてなキーワード



というわけで、Rails 界では今後 GitHub に移行していくようなので、後ればせながら、git をインストールしました。


git は、 MOONGIFT: » WindowsでGitをはじめるなら「msysGit」:オープンソースを毎日紹介 を参考に、 msysGit をインストール。


これで、 GitHub にあるプラグインもインストールできるようになります。


ruby script/plugin install git://github.com/rubypond/semantic_form_builder.git