タイル分割問題
N x Mのグリッドがあったとします。 自明ですが、マス目の数は N*M 個です。
これを K 個の長方形に分割することを考えるとき、 K 個の長方形の面積の差が高々 min(N, M) であり、各々の長方形の周の長さの和が最小となるような分割を行うアルゴリズムを求める。
N x Mのグリッドがあったとします。 自明ですが、マス目の数は N*M 個です。
これを K 個の長方形に分割することを考えるとき、 K 個の長方形の面積の差が高々 min(N, M) であり、各々の長方形の周の長さの和が最小となるような分割を行うアルゴリズムを求める。
Ohm を使っていると色々と不満な点が見えてきます
これは AR 脳というよりも、ARの洗練されたAPIと比べてしまうと、 Ohm の未成熟さが浮き彫りになってしまうためだと思います。
そこで、ARのメソッドをOhm上で使えるようにしたラッパーを作成しました。
http://git
1 % gem install ohm-arfreaks
1 require 'ohm' 2 require 'ohm-arfreaks' # これを追加 3 4 class Video < Ohm::Model 5 attribute :url 6 set :tags 7 end 8 9 Video.create!(:url=>"a") 10 Video.first.attributes 11 => {:url=>"a", :tags=>[]}
以下のメソッドが利用可能です (0.1.0 現在)
ARと比べると使えるメソッドは少ないですが、 これだけでも随分Ohmが快適になると思います。
例えば、redis はどこに DB を作っているかわかり辛いので
時々バックアップが欲しくなるのですが、
昔懐かしのar_fixture
1 File.open("videos.yml", "w+") do |f| 2 hash = Video.all.inject({}){|h,v| h[v.id]=v.attributes ;h} 3 f.print hash.to_yaml 4 end
あるアプリでは「Target terminated
@k_katsumiさんからは下記のadhocでget-task-a
実機デバッグでの注意点
http://numata.design ed.jp/ja/2 009/03/iph one-5.html 実機でInstrument
sが使えなくなったときの対処法
http://d.hatena.ne.j p/iphone_d ev/2008082 5/12196499 67
それで、色々調べてまわったのですが、よい方法が見つからず困っていたところ
You are not running the applicatio
n through Xcode when you do this. Start the applicatio n manually, then bring up Instrument s and connect to your device.
http://stackoverflow .com/quest ions/20328 34/memory- footprint- of-an-app- on-iphone
というコメントでした。この中ではActivity Monitorについての話だったのですが、Leaksも同じかも!と思ってぐぐったらありました!
Finding iPhone Memory Leaks: A “Leaks” Tool Tutorial
http://www.mobileorc hard.com/f ind-iphone -memory-le aks-a-leak s-tool-tut orial/
上記の方法だと、xCodeは関係なく、iPhoneとInstrument
1 % gem --version 2 1.3.6 3 4 % ./script/console 5 Loading developmen t environmen t (Rails 2.2.2) 6 /usr/lib/r uby/gems/1 .8/gems/ra ils-2.2.2/ lib/rails/ gem_depend ency.rb:22 4:in `specificat ion':NoMethodE rror: undefined method `version_re quirements =' for #<Gem::Depen dency:0xb7 769604>
(/tmp/ あたりの適当な場所で実行)
1 % svn export http://rubygems.ruby forge.org/ svn/trunk/ rubygems 2 A rubygems 3 A rubygems/H istory.txt 4 ... 5 リビジョン 2460 をエクスポートしました。 6 7 % cd rubygems 8 # ruby setup.rb
(setup.rb の実行でインストールされます。必要に応じてrootで)
1 % ./script/console 2 Loading development environmen t (Rails 2.2.2) 3 /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/rails/gem_depend ency.rb:224:Warning:... 4 /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/rails/gem_depend ency.rb:224:Warning:... 5 ... 6 > User.count 7 => 25707
warning が一杯出るが気にしない。 rubygems 1.3.7 が出るまで、とりあえずこれでOK。
git svnを以下のような構成で使っていた時に、git svnのリモートトラッキングブランチのpointerがtrunkに代わってしまい、いつのまにかブランチにcommitしたつもりのものがtrunkにcommitされるという事があり、困りました。
gitから.gitにpushしたものを git-svnからpullしたタイミングで発生するようです。
解決策としては、git-svnでgit pull
をせずに、
1 % git fetch remote-name 2 % git merge --no-ff remote-nam e/branch-n ame 3 % git svn dcommit
でok. アクシデンシャルなdcommitを防ぐには、--dry-run
が便利です。
git-svnを使っていて、git svn dommit
するときに、
掲題のようなエラーメッセージが出た場合、リモートリポジトリとローカルリポジトリのトラッキングブランチの同期が取れていない事が原因かもしれません。
例えば、SVNリポジトリ上で削除されているブランチが、ローカルのgitリポジトリに残ってしまっている場合、以下のようにリモートトラッキングブランチを削除する事で問題を解決できる可能性があります。
1 % git branch -D -r <branch name>
SConsを使ってscons test
でテストを実行するには、
SConstruct
1 import os, sys 2 Import('env') 3 env = env.Clone() 4 5 test = env.Program('test', Glob('*.cpp'), LIBS='gtest') 6 test_alias = Alias('test', [test], test[0].abspath) 7 AlwaysBuil d(test_alias )
See Also
PLY形式のモデルデータをMSH形式に変換する方法のメモ。
MT Package の FORM2FORMコンバータを使います。
このページの下のほう
から mtjade.tar
1 % ./form2form foo.ply foo.msh
以下の行をコメントアウトしておくと、indexedではないmshが生成されます。
1 #define INDEXED
MSH形式の仕様は こんな感じ です。
1 % gem install activetokyocabinet
1 % ttserver -port 11114 db.tct &
1 require 'active_tokyocabinet/ tdb' 2 3 ActiveReco rd::Base.establish_ connection ( 4 :adapter => 'tokyotyran t', 5 :database => { 6 :englishes => {:host => 'localhost', :port => 11114}, 7 } 8 );
1 class English < ActiveRecord::Base 2 include ActiveToky oCabinet::TDB 3 4 string :word 5 int :length 6 7 validates_ presence_o f :word, :length 8 9 def validate 10 self[:length] ||= word.to_s.size 11 end 12 end
1 # /usr/share/dict/word s を流し込み 2 buf = File.read("/usr/share /dict/word s") 3 buf.scan(/^([a-z]+)$/) { 4 English.create!(:word=>$1) 5 } 6 7 English.count 8 => 64024 9 10 English.all(:conditions =>["word regexp ? and length > ?", '^mai', 12]) 11 [#<English id: 33247, word: "mainstream ing", length: "13">, 12 #<English id: 33250, word: "maintainab ility", length: "15">]
1 e = English.first 2 e.delete 3 ActiveRecord::StatementI nvalid: NoMethodEr ror: undefined method `values_at' for 1:Fixnum: DELETE FROM englishes WHERE (id IN (1)) 4 from /usr/lib/r uby/gems/1 .8/gems/ac tiverecord -2.3.5/lib /active_re cord/conne ction_adap ters/abstr act_adapte r.rb:219:i n `log'
あれ!?あれ?
で、一番驚いたのは、実装方法。 普通なら、ARの各メソッドをTT化していきそうなものだが、
その発想はなかった。目から鱗です。 というか、SQLのparserは実用性が高いのでまず、 それをgem化希望!激しく希望!!