• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
 
 

ご愛顧いただきありがとうございます。 おかげさまを持ちまして、ついにビジネスカテゴリの有料アプリランキング1位になることができました。

ss1

地価2009 では、高速で継ぎ目の無い地価の推定のために 映画制作などで使われている最先端のCGのレンダリング技術を応用しています。 そのため、大量のデータをもとに瞬時に地価を推定する事が可能となっています。

弊社では iPhoneアプリの受注制作 や共同開発も行っておりますので、 緯度経度や住所等、位置情報にひもづいたデータをお持ちで、iPhoneアプリの制作に関心をお持ちであれば、ぜひ mail までご連絡ください。

地価2009の今後の開発計画といたしましては、

  • ㎡/畳(京間)/畳(江戸間)の表示切り替え
  • データの増強
  • UIの改善

などを行っていく予定です。

また、地価2010のスケジュールについてもお問い合わせを頂いておりますが、地価2010の販売を行う場合、地価2009をご購入いただいた方々には2010年のデータを無償アップデートにてご提供させて頂く予定です。

posted by Png genki on Mon 24 Aug 2009 at 16:44

このたび弊社からリリースいたしましたiPhoneアプリの"地価2009"が ビジネスカテゴリで有料アプリランキングの4位にランクインしました。 ありがとうございます!

ss1

地価2009は、iPhone 3.0から利用可能になったMapKit(地図を使ったアプリケーションを簡単に作れる仕組み)を利用して、日本中どこでも好きな場所の地価を調べる事ができるアプリケーションです。

ss2

経営者の方、不動産業の方、土地の購入を検討されている方など、地価に興味のある方にお勧めです。

See Also

posted by Png genki on Sun 23 Aug 2009 at 15:37

Sinatraのインラインテンプレート(__END__以降に記述するテンプレート)が真っ青になって見難かったので、インラインテンプレートだけHamlとしてシンタックスハイライトするようにしてみました。

Before

ss1

After

ss2

見やすいですね。

INSTALL

Vimに sintax/haml.vim などをインストールした上で、以下のような設定を記述します。

.vim/ftdetect/ruby.vim

   1  " Sinatra
   2  au BufNewFile,BufRead *.rb set filetype=ruby | unlet b:current_syntax | syn include @rubyData syntax/haml.vim | syn region rubyDataHaml matchgroup=rubyData start="^__END__$" keepend end="\%$" contains=@rubyData | syn match inFileTemplateName "^@@\w\+" containedin=rubyData | hi def link inFileTemplateName Type

See Also

posted by Png genki on Sat 22 Aug 2009 at 20:58

高井さんから献本いただきました。ありがとうございます。

エンタープライズ Rails
Dan Chak
オライリージャパン
売り上げランキング: 4228

第一章の冒頭でも触れられていますが、本書の対象読者はWebアプリケーションを作った事がある人が対象です。

  • エンタープライズとは何か
  • 作ったWebサービスが流行ったらどうしたら良いのか
  • ActiveRecordが何をやっているかわからない

本書を読めば、このへんの疑問の答えが見つかると思います。 分量も300ページほどで読みやすく、 Railsで仕事をしている人にとっては必携だとおもいます。

Railsに関する他書と比べて、陳腐化しにくい内容を扱っているので、 お守り的に買っておいても良いと思います。

それにしても、表紙の生物が気になりますね。

posted by Png genki on Sat 15 Aug 2009 at 05:52

最近Twitterクライアントとして Termtter を使っています。 適度に見づらいのが、かえって邪魔にならなくて良い感じです。

発言中のURLを開くときに、$ab のような識別子を指定して開くプラグインを作りました。

open.rb

   1  USAGE
   2  > open $dq
   3  open 1st URI in $dq
   4  > open $dq 2
   5  open 2nd URI in $dq

posted by Png genki on Sat 15 Aug 2009 at 04:22 with 4 comments

ファイル共有のために、DAVを設定する方法のメモです。 手軽さ重視で SSL + Basic認証を。

  1. まずは mod_ssl, mod_dav, mod_dav_fsをインストール。
  2. a2enmodで有効化
  3. sites-available/webdav 等の名前で設定を作る

中身はこんな感じ。

   1  <IfModule mod_ssl.c>
   2  <VirtualHost *:443>
   3    ServerName dav.yourserver.com
   4    ServerAdmin webmaster@dav.yourserver.com
   5    DocumentRoot "/path/to/dav"
   6    
   7    <IfModule mod_dav.c>
   8      DAVMinTimeout 600
   9      DAVLockDB "/var/lock/dav/DAVLock"
  10      <Location />
  11        DAV On
  12        SSLRequireSSL
  13        AuthType Basic
  14        AuthName "DAV Server"
  15        AuthUserFile "/etc/apache2/dav.passwd"
  16        Require valid-user
  17      </Location>
  18    </IfModule>
  19  
  20    # 以下略

/path/to/dav と /var/lock/dav を作成し、www-dataに所有権を設定しておきます。

posted by Png genki on Fri 7 Aug 2009 at 13:08

PokéDiaでは非公開APIは使っていないのですが、 iPhone OS 2.0から iPhone OS 2.1, 2.2, 2.2.1, そして3.0と、OSのバージョンアップにあわせて変動する微妙な挙動の変化への対応などから、相当な歪みが蓄積している状態になってしまっています。 特に任意の場所でテキスト入力を実現する機能の実現に非常に苦労しており、OS 3.0では画面端での日本語入力の変換候補選択がうまく行かない問題等も出てきました。 また、作者の環境では発生しないために修正ができないバグなども多数報告いただいています。

そこで、現状のPokéDiaの開発はデータのエクスポータを用意して一旦停止し、 フルスクラッチで書き直す事を検討しています。

  • 操作をシンプルにするために、縦スクロールを無くしてページを追加できるようにします。
  • データが消えるという問題には、Appleが動作検証をしているCoreDataを利用する事で対応します。
  • 任意位置でのテキスト入力はUITextViewの挙動が不安定なので、表示と編集を分離する方向を検討しています。
  • 機能制限つきの無料版と、有料版の2つを用意します。
    • 既にPokéDiaを買って頂いている方は、エクスポートしたデータを無料版にインポートすると、有料版と同じ機能が使えるようになる予定。
  • 言語リソースはオンラインから取得

などなど。

posted by Png genki on Wed 29 Jul 2009 at 18:04

As I mentioned before, I am making small abstraction FW. For giving the task a vista, I want to make a list of the requirements in advance.

  • Abstract Model (I hope the ActiveORM will be)
  • Basic HTML tag helpers (such as "tag", "url_for")
  • Starting up hook to modify others
  • Way to register helpers
  • Way to read/write configuration of plugin

In particular, abstract model is quite important. There are already several efforts, but they all are probably not succeeding. I think the reason of the failure is what most of them had been concentrating to make abstraction of models for models. It must be designed for agnostic plugins.

Suppose you are an application developer and you are writing some code. Obviously, the FW and ORM have already been chosen. So you have no need to treat various ORMs for making the app. Only agnostic plugins need the abstract model.

What is the requirements of the plugins?

  • read_many with options for specifying :limit and :offset
  • read_one, create, destroy, update
  • read/write access to attributes
  • counting, searching, association and so on.

Is it the DataMapper? Yeah, it is nearly equals to. But it must have more flexibility.

In conclusion, we should not make an abstraction of models but an abstraction of plugin's requirements to FW.

posted by Png genki on Thu 23 Jul 2009 at 21:22

Today, there are many web application frameworks such as RoR, Merb, Ramaze, Sinatra and so on. And then, most of them have original plugin system respectively. It opens curtain of the tragedy entitled "Combinatorial explosion" upon plugin developers.

Just think. FW hackers tend to be opinionated. It is obvious. Because it is the source of energy of his/her great works. But it is a reason of the tragedies as well. Is that a fate of us? It would never be changed?

No, it isn't.

There is a hope we already have. Its name is Rack. Rack is called meta-framework. Most of FWs exploit it today. It saved tons of time of FW hackers to make original HTTP interface for their FW. It must happen for also plugin developers.

I think what they need is not another meta-framework. meta-framework is for FW hackers. Abstract framework is for plugin developers.

I began to make an abstract framework on github. Here is.

http://github.com/genki/agnostic/tree/master

If you have idea, please let me know.

posted by Png genki on Thu 23 Jul 2009 at 18:01

Rub はHaml的なEndless Rubyを気軽にはじめるために作ったGemです。 GitHubをsourceに追加して以下のようにインストールできます。

   1  % sudo gem install genki-rub

ソースコード を見るとわかりますが、非常に短いので現時点では、if文の複数行にまたがる条件文などには対応していません。気が向けばそのうち対応するかもしれません。

Rubを使ってSinatraアプリを作るには以下のようにします。

config.ru

   1  require "rubygems"
   2  require "rub"
   3  rub "app.rb"
   4  run Sinatra::Application

app.rb

   1  require "sinatra"
   2  require "dm-core"
   3  require "haml"
   4  
   5  DataMapper::setup(:default, ENV['DATABASE_URL'] || 'sqlite3://db.sqlite3')
   6  
   7  class Post
   8    include DataMapper::Resource
   9    property :id, Serial
  10    property :content, Text
  11    auto_upgrade!
  12  
  13  get "/" do
  14    @posts = Post.all(:order => [:id.desc])
  15    haml :index
  16  
  17  post "/" do
  18    Post.create(params)
  19    redirect "/"
  20  
  21  __END__
  22  @@ index
  23  %h1 Hello, Sinatra!
  24  %ul
  25    - @posts.each do |post|
  26      %li= post.content
  27  %form{:method => :post}
  28    %textarea{:name => :content}
  29    %input{:type => :submit, :value => "Post"}

面白い点として、 Endless RubyでもVimやこのブログのSyntaxハイライトはちゃんと機能してくれます(Emacs使いのレポート求む)

必要なファイルはこれだけです。あとはおもむろにshotgunしましょう。

   1  % shotgun
   2  == Shotgun starting Rack::Handler::Mongrel on localhost:9393

あとはhttp://localhost:9393にアクセスするだけです。 app.rbを適当に書き換えてリロードすると、変更が反映される事が確認できます。

shotgunは

   1  % sudo gem install shotgun

でインストールできます。

posted by Png genki on Mon 20 Jul 2009 at 05:09 with 2 comments