helvetica ほしい
経緯
swf上で、文字をグリグリ変形させたい。フォントを指定した上で。
フォント埋め込み→ベクター化(flashでいう分解みたいな)とか出来ればいいんだけど、ぐぐったけど無理そう。
↓
あれ、そういえばPapervision3dとか、ベクターのフォントに対応してたような気がするけどどうなってるんだろう
↓
Papervision3Dソース見てみる
↓
helvetiva フォントのベクター情報がびっちり
__motifs["A"] = 'M',[34.4,43.75,['L',[43.35,69.9]],...みたいな。すっごい力技。
↓
これを拝借してうまい具合にできないもんか。
helvetica自体は埋め込んでも問題なさそうだし(制限はあるけど )
↓
ってことは、僕がhelveticaのライセンスを持ってれば解決するのでは!
↓
ほしい
補足&自分用まとめ
Q.helvetica、お高いんでしょう?
A. http://new.myfonts.com/fonts/adobe/helvetica/
Q.勝手にPapervision3Dのフォントデータ使っていいのか?
A.ライセンス確認しよう
→ MITだったので多分大丈夫、っていうかよくみたらフォントの部分は別ライブラリだった!(FIVe3Dというやつ。これもMIT。平気そう)
Q.他のフォントで似たようにできないの?
Papervison3Dのhelveticaのフォントデータはどうやって作成したんだろう?
A.FIVe3Dのサイトから、フォントデータを作成するためのライブラリ?を落とせるらしい!: 参考
これつかえばできるらしい!
でもflashがいるらしい...
rails 関連で割とどうでもよいメモ
気になった処理を追う
Rails 2.3.5
class User < ActiveRecord::Base has_many :hobbies end
class Hobby < ActiveRecord::Base beloings_to :user end
こんな関係のクラスがあったとして、
コンソールで1人ユーザーを適当にとってきて、
ruby script/console >> >> aaa = User.find :first => #<User id: 1, name: "test">
ユーザーのインスタンスからホビーをみてみると、
>> aaa.hobbies => [#<Hobby id: 1, user_id: 1>, #<Hobby id: 2, user_id: 1>] >>
こんな感じで配列がかえってきます。
>> aaa.hobbies.class => Array
まちがいなく配列ですね。
でも、
>> aaa.hobbies.create => #<Hobby id: 3, user_id: 1>
こんなことできちゃう。
>> aaa.hobbies.methods.grep(/create/) => []
Array に create なんてメソッドないのに。。。
なんで??
で、ちょっとgrepとかで探してみた。
vendor/rails/activerecord/lib/active_record/associations/association_collection.rb
15 # Association proxies in Active Record are middlemen between the object that 16 # holds the association, known as the <tt>@owner</tt>, and the actual associated 17 # object, known as the <tt>@target</tt>. The kind of association any proxy is 18 # about is available in <tt>@reflection</tt>. That's an instance of the class 19 # ActiveRecord::Reflection::AssociationReflection. 20 # 21 # For example, given 22 # 23 # class Blog < ActiveRecord::Base 24 # has_many :posts 25 # end 26 # 27 # blog = Blog.find(:first) 28 # 29 # the association proxy in <tt>blog.posts</tt> has the object in +blog+ as 30 # <tt>@owner</tt>, the collection of its posts as <tt>@target</tt>, and 31 # the <tt>@reflection</tt> object represents a <tt>:has_many</tt> macro. 32 # 33 # This class has most of the basic instance methods removed, and delegates 34 # unknown methods to <tt>@target</tt> via <tt>method_missing</tt>. As a 35 # corner case, it even removes the +class+ method and that's why you get 36 # 37 # blog.posts.class # => Array 38 # 39 # though the object behind <tt>blog.posts</tt> is not an Array, but an 40 # ActiveRecord::Associations::HasManyAssociation.
このへんかな。
とりあえず
not an Array, but an ActiveRecord::Associations::HasManyAssociation
だけよんだ。
こんどちゃんとみたいのでめも。
find で conditions に in をいくつか指定
names = ["たろうくん", "ひとしくん", "はなこさん"] find(:all, :conditions => ["name in ( #{Array.new(names.size,'?').join(',')} )", *names])
こんなんでいいのかな。
いい感じに書けるなにかが用意してあったりしないだろうか
autotest 環境整える
ぐぐると色々でてくるんだけど、autotest が新しめのと古いのだと違うみたい。
ちょっとこんがらがったよ。
まずいれる
gem install ZenTest gem install autotest_screen gem install autotest-rails gem install redgreen
設定ファイルをコピー
cp /home/sk4/.gem/ruby/1.8/gems/ZenTest-4.2.1/example_dot_autotest.rb ~/.autote
早速設定する
vim ~/.autotest
# 2行追加 require 'redgreen' require 'autotest/screen'
export RSPEC=true
※ここ参照 http://blog.s21g.com/articles/913
できた。
なにこれすごいいいかんじ...
ついでにテスト用サーバを立ち上げっぱなしにするように
参考: http://blog.tkmr.org/tatsuya/show/361-rails-macosx-rspec-zentest-growl
RAILS_ROOT/spec/spec.opts に --drb を追記
こんなかんじになりました。
$ cat spec/spec.opts --colour --format progress --loadby mtime --reverse --drb
参考元とはちょっと違い、spec_server はgemで入れる必要があるのでインストール
ここみながら。rspec-rails-1.2.9 から spec_server が 別gem になりました - yuumi3のお仕事日記
$ gem install spork
で、RAILS_ROOT に移動して、
$ spork --bootstrap Using RSpec Bootstrapping /home/sk4/projects/test_app/spec/spec_helper.rb. Done. Edit /home/sk4/projects/test_app/spec/spec_helper.rb now with your favorite text editor and follow the instructions.
なんか、spec_helper.rb に require 'spork' とか足してくれたっぽい。
で、立ち上げる
ruby script/spec_server
たぶんこれでよいはず。
ちゃんとうごいてますおめでとう
rails でアプリ作成準備
DB作成
su - postgres createdb test_app_test createdb test_app_dev
プロジェクト作成
rails test_app cd test_app ruby script/generate rspec ruby script/generate rspec_model User name:string vim config/database.yml
development: adapter: postgresql database: test_app_dev username: postgres password: postgres test: adapter: postgresql database: test_app_test username: postgres password: postgres
cd vendor/plugins gem unpack rspec gem unpack rspec-rails mv rspec-1.3.0 rspec mv rspec-rails-1.3.0 rspec-rails
migrateしてみる
$ rake db:migrate (in /home/sk4/projects/test_app) rake aborted! No such file or directory - /tmp/.s.PGSQL.5432
エラーになった。
ubuntuだとtmpファイルの場所が他と違うところに設定されるよう。
http://blog.memo.vg/2008/09/ubuntupostgresql.html
ここを参考に、unix_socket_directory を '/tmp' に設定して再起動。
sudo vim /etc/postgresql/8.4/main/postgresql.conf sudo /etc/init.d/postgresql-8.4 stop sudo /etc/init.d/postgresql-8.4 start
そしたら、
$ rake db:migrate (in /home/sk4/projects/test_app) rake aborted! FATAL C28000 MIdent authentication failed for user "postgres" Fauth.c L273 Rauth_failed (See full trace by running task with --trace)
こんなエラー。
これも上記参考サイトに権限が足りなくてでてると書いてあったので、そこに書いてあるとおり pg_hba.conf の設定変更。
で、再起動。
sudo vim /etc/postgresql/8.4/main/pg_hba.conf sudo /etc/init.d/postgresql-8.4 stop sudo /etc/init.d/postgresql-8.4 start
すると…
rake db:migrate (in /home/sk4/projects/test_app) rake aborted! undefined method `quote_ident' for PGconn:Class (See full trace by running task with --trace)
なんか違うエラーが。
ぐぐったところ、これは postgres-pr が新しめの rails に対応してないかららしい。
Google グループ
ここに書いてあるとおりのことをやってみる。
vim config/initializers/new_rails_defaults.rb
で、
def PGconn.quote_id(name) %("#{name}") end
を最初に追記。
rake db:migrate (in /home/sk4/projects/test_app) == CreateUsers: migrating ==================================================== -- create_table(:users) -> 0.0551s == CreateUsers: migrated (0.0552s) ===========================================
やっとできた。。
てすとも。
rake db:migrate RAILS_ENV=test
テストコード実行してみる
ruby script/spec -c spec/ . Finished in 0.024017 seconds 1 example, 0 failures
よし。
時間かかったから準備のみで終了。
そういえば、こないだ ubuntu きどうしない!とわめいていましたが、結局ディストリを再インストールしました。。
はてな有料版のお試し中
昨日か一昨日か、書いて消した記事の書き直しです。
ちなみに記事消した理由は、記事に内容がまとまってなくって言いたいことが意味不明で後で見直したら恥ずかしくなってつい消しちゃったという感じです。
さて。さりげなくはてなの有料版(お試し期間)にしてみまして、ファイルのアップロードが出来るようになったから swf あげようとして別のとこではまったりしていました。
swf の中から 別ファイル(3dのモデルデータね)を読み込みたかったんだけど、これがうまくいかなくてね。。エラーがでるんですよ。
そのときにflashプレーヤーが吐いたエラーは以下。
Error #2044: ハンドルされていない securityError : text=Error #2048: セキュリティサンドボックス侵害 : https://file-hatena.com/diary/files/sk4/files/xxx.swf?expire=xxx&session_key=xxxは http://d.hatena.ne.jp/sk4/files/sune.mqo からデータを読み込めません。
これはあれですね。異なるドメイン間ではセキュリティ上の理由でむやみやたらにやりとりできませんというアレ。
そもそも何で両方はてなにあげたのにドメイン違うって言われるのかというと、swf のURL的には http://d.hatena.ne.jp/sk4/files/xxx.swf のようになっているのですが、アクセスすると別ドメイン(file-hatena.com)にリダイレクトされるみたい。
なので実際には、https://file-hatena.com/diary/files/sk4/files/xxxxxx このようになります。アップロードしたファイル全部ね。
アップロードしたファイル全部ならドメインも一緒でもんだいねーじゃんか、という感じなんですが、まぁ実際そうで問題なかったんですけど、僕が1つ勘違いをしていまして。
swf からモデルデータ読み込む際、読み込み先のパスを http://d.hatena.ne.jp/sk4/files/xxx.mqo としてたんですが、この形式のパスはファイルに直なんじゃなくって、http://d.hatena.ne.jp ドメインから iframe でデータを返しているみたいです。
モデルデータを読み込むつもりが d.hatena.ne.jp からのiframeが書いてあるhtmlを読み込んでいたわけですね。
なので当然、swfが file-hatena.com ですから、どめいんちげーよと怒られていたと。
解決法(未完)
swf からファイル読み込む際に、dパラメータを付与してやれば html かました状態じゃなくて、直接ファイルを返してくれるみたい。
こんな感じに。
http://d.hatena.ne.jp/sk4/files/xxx.mqo?d=y
そうすると、d.hatena.ne.jp になってますがそっからリダイレクトされて直接 file-hatena.com からデータ取得できます。
常識だよ!と思われるかもしれませんが。。知らなかったんだよ。
まぁそのように修正しても結局別エラーでちゃって、そんでまだこの話は未完なんですけどね。
TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。
これは今度調べよう。
ちなみに、crossdomain.xmlは置かないそうです。
http://i.hatena.ne.jp/idea/8635
2010-1-17 追記
だめかも。
とりあえず
TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。
これは、モデルデータの読み込みが完了していないのに次の処理をしていたところが問題のよう。なんでまた別の問題か。
で、そこなおしたんですけど、セキュリティサンドボックス侵害のエラーは相変わらずでてます。
そもそも、リダイレクト後にドメインが同じになるから問題ない、っていう考えが間違っている気がしてきた。
読込先のドメインがswfと違った時点でこの制限に引っかかっちゃうのかな。そうだよね。
Embed とかで埋め込めないもんかな。
BetweenAS3練習
BetweenAS3のさわりだけ。
BetweenAS3ってのはトゥイーン系のライブラリです。
ていうか似たようなライブラリありすぎてどれにすべきなのか分かりません。。
wonderfl build flash online | 面白法人カヤック
そういえばこないだ入れたubuntu、起動しなくなった><
shなんてコマンドねーよとか言われる始末。
直前の、アップデートマネージャ?による大量アップデートのせいかなぁ。どうしたもんかね
ubuntu 9.10(64-bit)
年末ということでHDDの中も大掃除していたんですが、意外に中身詰まってたみたいで、全然片付かず。
途中で面倒くさくなり「いっそ新しくOSいれちゃえばいいんじゃない?」ということでubuntuをインストールしてみることにしました。
パーティションきってある1つのHDDの中にvista残しつつubuntuいれましたよ。あれ?全然掃除できてない?
以下、その過程の軽いメモです。
入れたもの
ubuntu 9.10(64-bit)
64-bitのマシンは初めてだったり。
日本語環境用にオリジナルubuntuにパッケージを追加した「日本語 Remix CD」というものがあったんですが、こちらは64-bitのものがみつからなかったため本家からDLしてきました。
Get Ubuntu | Download | Ubuntu
(Alternative download options, including Ubuntu installer for Windows のリンクをクリックすると64-bitえらべます)
イメージファイル名が ubuntu-9.10-desktop-amd64.iso になってて不安になりましたが、intelのでもこのファイルでよいそう。
落としてきたのをCDに焼いてセットしてマシンを起動させインストール。
インストール自体は特に問題なく完了。swap4GBにした。ファイルシステムはext4。
インストール後やったこと
ネットワーク設定
System -> Preferences -> Network Connections から設定。
つながるようになったけど、Update Manager からもろもろアップデートかけたらつながんなくなった。
同じように設定してもだめだったので、CUIから設定。
$ sudo vi /etc/network/interfaces
auto eth0 iface eth0 inet static address 192.168.1.4 network 192.168.1.0 netmask 255.255.255.0 broadcast 192.168.1.255 gateway 192.168.1.1 dns-nameservers 192.168.1.1
$ sudo vi /etc/resolv.conf
# Generated by NetworkManager nameserver 192.168.1.1
で、
$ sudo /etc/init.d/networking restart
つながった!
デュアルディスプレイ対応
ここをみながらNVIDIAのドライバをいれたらおkでした。
デュアルモニタ | アタシのUbuntu備忘録
[nvidiaドライバを導入する方法 - 第2版] by ひねもすLinux
といってもやったことは
$ sudo apt-get install build-essential linux-source linux-headers-`uname -r` xserver-xorg-dev
だけかな。
そのあとリブートかけて、
System -> Administration -> Hardware Drivers で、Recommendedってなってる方をぽちって、avtivateをすると、色々ドライバ落として入れてくれます。リスタートが必要ですよといわれたのでやる。
設定は、
$ sudo nvidia-settings
からね。
sudoからやんないと権限なくて保存できないです。
日本語入力
http://wassr.jp/user/tenforward/statuses/qtSLLPwChg
分かった.入力メソッドに二つ Anthy がある.しかも,デフォルトで追加されているのはそっけない何の設定も出来ない方だ.どう違うんだ? こんなの分かるわけないやん.まあ,最初から日本語環境整ったやつでインストールしたらええんやろうけど.
こことまったく同じはまりかたをしました。
日本語入力できないAnthyで頑張ってたけど、ibus-anthyをインストールしてリブートかけたら新しくいれたAnthy(王冠のマークのやつ)が設定できるようになってたのでそれ設定していいかんじに。
$ sudo apt-get install ibus-anthy
キーバインディングをちょっと変更
職場ではmac + HHKpro という環境で、コマンドキーとスペースで日本語/英字の入力を切り替えているので、それに合わせる。
掃除しようとpro持って帰ってきてたのでproで設定しますが、おうちのはliteです。けど一緒ですよねきっと。
ここを参考に。
ubulog: キーバインディングを変えてみた
xevコマンドでスペース両隣のキーコードしらべたら、左ダイヤ=133、右ダイヤ=134とのこと。
ついでに右altも僕は使わないので、適当に割り当て。こいつは108でした。
以下の割り当てにしてみます。
左ダイヤ(133)=Ctrl key
右ダイヤ(134)=Hyper key
右オルト(108)=Super key
なんだハイパーとかスーパーとか。
まぁいいや。
とりあえず左ダイヤにあてたCtrl keyとスペース同時押しで日本語入力に切り替わるように設定。
(IBusの設定でできます。ほんとはMeta+spaceでできるようにしたかったんだけどうまく設定できず)
vi ~/.Xmodmap
clear Control keycode 133 = Control_L keycode 37 = Control_L keycode 134 = Hyper_R keycode 108 = Super_R add Control = Control_L
こんな感じになりました。
で、再読み込み。
xmodmap ~/.Xmodmap
でもなんか変なんだよなぁ。
例えばfirefoxだとダイヤキーに割り当てた方のCtrlキー+C でコピーとかできない。
普通のCtrlキーだとできるんだけれども。後で確認。
デスクトップにごみばこ
ゴミ箱やっぱりほしいよねということで。
$ gconftool-2 --type bool --set /apps/nautilus/desktop/trash_icon_visible
その他
http://retujyou.com/2009/11/03/ubuntu-9-10-%e3%81%a7%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%97%e3%81%9f%e3%82%bd%e3%83%95%e3%83%88%e3%80%81%e8%a8%ad%e5%ae%9a%e4%b8%80%e8%a6%a7/
ここみながら色々設定。
かなり参考にさせてもらいました。
これから
開発関連もろもろいれなきゃ。。
ubuntuに追加で色々インストール
(勝手に追加していくかも)
postgresql
sudo apt-get install postgresql sudo passwd postgres su - postgres createdb test20091230 psql test20091230
(initdbみつからなくてやってないけどできた。勝手にやってくれたのかな)
memcached
sudo apt-get install memcached
ruby
sudo apt-get install ruby ruby1.8-dev irb rdoc ri
gem
wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz tar zxvf rubygems-1.3.5.tgz rubygems-1.3.5/ cd rubygems-1.3.5/ sudo ruby setup.rb sudo ln -s /usr/bin/gem1.8 /usr/bin/gem
postgres-pr
gem install postgres-pr
mongrel
gem install mongrel
memcache-client
gem install memcache-client
rails
gem install rails export PATH=$PATH:~/.gem/ruby/1.8/bin sudo apt-get install libopenssl-ruby
rspec
gem install rspec gem install rspec-rails --version '=1.3.0' # rspecと合わせた
ZenTest
gem install ZenTest
cucumber
gem install cucumber
vim plugin
gem install vim-ruby
gem listはこんなかんじ。
$ gem list *** LOCAL GEMS *** actionmailer (2.3.5) actionpack (2.3.5) activerecord (2.3.5) activeresource (2.3.5) activesupport (2.3.5) builder (2.1.2) cgi_multipart_eof_fix (2.5.0) cucumber (0.5.3) daemons (1.0.10) diff-lcs (1.1.2) fastthread (1.0.7) gem_plugin (0.2.3) json_pure (1.2.0) memcache-client (1.7.7) mongrel (1.1.5) polyglot (0.2.9) postgres-pr (0.6.1) rack (1.0.1) rails (2.3.5) rake (0.8.7) rspec (1.2.9) rspec-rails (1.2.9) term-ansicolor (1.0.4) treetop (1.4.3) vim-ruby (2007.05.07) ZenTest (4.2.1)