capsctrldays

2006-04-04 (火) [長年日記] Edit

[Rails] counter_cache 微妙

increment, decremenetしかしてくれないっぽい。手動なんかで横からぐいっと子データをinsertされたら、何かのタイミングでcounterを更新して欲しい。

つか、fileter 作ればいいのか、な。でも、何のタイミングだ。子データを作るときと消すときか。


2006-04-05 (水) [長年日記] Edit

『Life Hacks PRESS』ランクアップ第1位!

うお。すごくね?

しかも

『入門Haskell』第2位!

[] Nana (15) (りぼんマスコットコミックス―クッキー (1676))(矢沢 あい)

なんか出てるの気づかなくって今頃買ってきた。なんかねえ。アニメもあるらしいですね。

Web Site Cookbook (Cookbooks (O'Reilly))(Doug Addison)

とりあえずsafariへ。他人はどうやってんだろう、という意味で。

本日のツッコミ(全2件) [ツッコミを入れる]

1 あまのりょー [えー、Life Hacks PREESS ゲットしますた!]

2 inao [うおっ,すごいっす. それにしても,さすがグランデってゆう濃いランキングですね.]


2006-04-06 (木) [長年日記] Edit

[Rails] 複数の error_messages_for を出したい

if foo.valid? and bar.valid?

みたいな条件文だと、前者がfalseになった時点で抜けちゃうので、bar.valid?が効きません。だもんで、fooのエラーメッセージは表示されるけど、barのエラーメッセージが表示されないーみたいになる。

ので、愚直に

foo_valid = foo.valid?
bar_valid = bar.valid?
if foo_valid and bar_valid

みたいにやるのだ(まじ?)。

となると、今度はエラーメッセージをまとめたいわけだが。

偉い人がいるわけですよ。

とりあえずplugin化してつっこんどく。

なかださんのやり方がイイ!!

if foo.valid? & bar.valid?

[Rails] railsコマンドで生成されるものの比較。対象はver.1.0とrev.4184。

とりあえず。tmpディレクトリだけかな。

本日のツッコミ(全3件) [ツッコミを入れる]

1 takahashim [valid = foo.valid? valid &&= bar.valid? if valid とか。もうちょっと..]

2 なかだ [if foo.valid? & bar.valid?]

3 laja [http://blog.azpoint.net/blog/paxa buy paxil ]


2006-04-11 (火) [長年日記] Edit

[tDiary] あ、tDiary Partyって何かやらなきゃいけないんだっけ?

あうあう。ネタなんてないなあ。

本日のツッコミ(全1件) [ツッコミを入れる]

1 しばた [自己紹介やtDiaryを使うことになったきっかけとかでもいいですよー。]


2006-04-12 (水) [長年日記] Edit

[Ruby] RMagickでサムネイルをつくりたいー

普通にリサイズとかサムネイルとか呼ぶとぐにゃっとなっていやーんになるのでどーすればいいんだーとか思ってたら、examplesにあった。

  • RMagick-1.6.0\examples\thumbnail.rb
img = Image.read(image)[0]
img = img.change_geometry(geom) { |cols, rows| img.thumbnail(cols, rows) }

知らないと分からんなあ、これは。


2006-04-14 (金) [長年日記] Edit

[Rails] .fieldWithErrosがtextareaだけ変な件

ぐぐっても見つからなかったんだけど、みんなおかしいと思わなくって?

まず、DIVじゃなくてSPANで囲むようにする。

module ActionView
  class Base
    @@field_error_proc = Proc.new{ |html_tag, instance|
      "<span class=\"fieldWithErrors\">#{html_tag}</span>"
    }
    cattr_accessor :field_error_proc
  end
end

で、CSSをtextareaとその他に分ける。

.fieldWithErrors input {
  border: 1px solid #f00;
}

.fieldWithErrors select {
  border: 1px solid #f00;
}

.fieldWithErrors textarea {
  border: 1px solid #f00;
}

firefoxだとradiobuttonはあんまり変更できないんだなあ。

あきらめろ。

[Rails] ファイルアップロードのvalidates

ファイルアップロードとかってフォームと属性の名前が違うのでvalidates_presence_ofとか使ってもエラーでフォームが赤くならねーみたいなことになったりするので自前で用意。

def validates
  unless @image.blank?
    if invalid
      errors.add(:file, '不正ですぞよ')
    end
  else
    errors.add(:file, 'を入力して下さい')
  end
end

[Rails] option_groups_from_collection_for_select 使ったらfieldWithErrorsが出なくなるよ

自分でヤル。

<% if error_message_on "foo", 'bar' %>
  <span class="fieldWithErrors">
<% end %>
<select ...>
 <%= option_groups_from_collection_for_select( ... ) %>
</select>
<% if error_message_on "foo", 'bar' %>
  </span>
<% end %>
本日のツッコミ(全2件) [ツッコミを入れる]

1 urekat [module ActionView はどこのファイルに書きますか?]

2 kdmsnr [pluginとかlibとかですかね。]


2006-04-15 (土) [長年日記] Edit

[tDiary] tDiaryPartyの資料作ったんだけど

30分で作ったお。

独自のフォントを使うと画像にするのが無難だなあ。 と思って、PPTをJPEGにして保存。 それを表示するJavaScriptを作っといた。

あまりにもふつーすぎるのでなんともアレですが、今後も自分で使うと思うので。

<html>
  <head>
  <script>
    var count = 0;

    function next() {
      var image = document.getElementById('image');
      count++;
      image.src = count + '.jpg';
    }

    function back() {
      var image = document.getElementById('image');
      count--;
      image.src = count + '.jpg';
    }
  </script>
  </head>
  <body>
    <a href="#" onClick="next();">
      <img src="0.jpg" id="image">
    </a>
    <br>
    <a href="#" onClick="back();">BACK</a>
  </body>
</html>

[tDiary] tDiary Party 2.1

なんといってもVim使いの7歳の少女だろう(そこか?)。

あと、『 Sweet Goddess―叶美香写真集 DVD付(叶 恭子)』見たよ(そこなのか?)。

ちょっと真面目に

tDiaryを使ってなかったら○○してなかったってことがものすごーーーく多くて、blikiの翻訳もそうだし*1、PofEAAの読書会もそうだし、今Rubyを使って仕事しているっていうのもそうだし、大好きなきらきらアフロもそうだし(重要ね)。大切なことはすべてtDiaryが教えてくれたですよ(言いすぎ?←古い)。

自分のなかでボツになったネタ

「tDiary脳の恐怖」っていうのをいくつか考えてたんだけども、

  • CSSを作るときは「main」と「sidebar」と名づける
  • とりあえずプラグイン化できないかと考える(症例:hsbt氏など)
  • TrackBackは使えるけど使わない(面倒くせー)
  • なんだかんだで、やっぱりCVS

いまいち。

tDiary 2.1.4リリースの瞬間をLiveで

いや、めでたい。

*1 そういえば、artonさん、ありがとうございました。名前出していただいちゃって。

本日のツッコミ(全5件) [ツッコミを入れる]

1 kitaj [色々とお話したいことがあったんですが,あまり話せず残念でした. ところで,PrimoPDFを使うとPDFにフォント埋..]

2 おおもり [今日はどうもでした。tDiary始めてみました。URLはhttp://yadokari.tank.jp/diary/..]

3 kdmsnr [tachさんのアレゲ話に着いていけるかどうか不安で踏み込めませんでした!(残念)]

4 kdmsnr [わ。部下とか書いてある!w(さっき読みました)]

5 しばた [むう、重度のtDiary脳だな…]


2006-04-16 (日) [長年日記] Edit

あ、そうそう、dot Barのジンジャエールはウィルキンソンでしたよ。

たぶん。

日経スペシャル「ガイアの夜明け」できる新卒を採れ

人形町はダサいから移転しましょう、制服はダサいからやめましょう、という人材採用コンサルティング会社ワイキューブの提案が、「人形町は便利だし」「私服だと痛むから制服がいい」と女性社員から反対されていたのが笑ったなあ。

それでも移転しちゃうところがアレだよな。

バルパンサー

年齢不詳っぷりはスゴスなあ。

新しく入ってきたid:secondlifeやらが

「デュアルデュアル」と自前でモニターを増やしたのをきっかけに

言いそうw

[] 開発の現場 Vol.004 効率UP&スキルUP エンジニアのための実践ソフトウェア技術誌(SE編集部)

amazonから到着。artonさん+るいもさんによるPofEAAのところだけ読んだ、本当にありがとうございました。あ、あと、ひがさんが大前研一に影響を受けていたのは意外だった。へー。

っつーか、他のところをちゃんと読める人はすごいなあ。眠くなる。 中でも矢沢久雄さんの連載はすごい。ツッコミどころ満載ですごい。ぜひ読むべき。

本日のツッコミ(全5件) [ツッコミを入れる]

1 muneda [でしたね.しかもノーマルタイプのちゃんと辛い方でした]

2 arton [なぜ、kdmsnrさんが礼を言うんだ? 逆だろう。]

3 arton [っていうか、お買い上げありがとうございます。]

4 kdmsnr [いやいや、触れてもらえるのはうれしいことですよ。]

5 安岡孝一 [矢沢久雄さんの『キーボードが複雑怪奇な理由』(日経パソコン2006年4月24日号p.165)も、ツッコミどころ満載で..]


2006-04-17 (月) [長年日記] Edit

[Rails] つーか、validates_inclusion_of って動く?

なんか知らんけど、常にエラーになっちゃう。

  • View
<%= text_field 'member', 'birth', :value => 1980 %>
  • Model
class Member
  validates_inclusion_of :birth,
                         :in => 1900..Date.today.strftime("%Y").to_i
  :
  :
end

consoleだとちゃんと動きそうなのよ

>> (1900..Date.today.strftime("%Y").to_i).include?(1980)
=> true

あーーーーー分かった!!

MySQLのYEAR型にしてるのがイカンのかなあ、なんかString型で送られてくるらしいので、

  • Model
class Member
  validates_inclusion_of :birth, :in => "1900"..Date.today.strftime("%Y")
  :
  :
end

とするとオーケー。

#validations.rbの中でp打ちまくったよ...orz


2006-04-18 (火) [長年日記] Edit

開発スケジュール管理

なんかツッコミができないので、こちらで。「残り時間」って、「現在見積-経過時間」だったりしますか?

今日のハマりどころ

auに半角カナの入ったメールを送ると「このメールには本文がありません。」とな表示されて本文が読めなくなる。

[DB] Navicat PostgreSQL

PostgreSQL版も出てたのかー。使ったことないけど、良さげだよね。

本日のツッコミ(全1件) [ツッコミを入れる]

1 shugo [そうです > 「現在見積-経過時間」 開発完了してないのに0なっちゃったら、現在見積をアップデートします。]


2006-04-21 (金) [長年日記] Edit

[Ruby] Class名をインスタンス名に変更する

たとえば、ProjectManagerを project_manager に変更するにはどうすればよい?

(1) がんばる

class ProjectManager
end
pm = ProjectManager.new
pm.class.to_s.gsub(/[A-Z]+/) {|m| '_' + m.downcase }[1..-1]
# => project_manager

(2) すごいやり方がある

(たぶんここに書かれる)

(3) Railsとかにいいメソッドがある

さあ? あるといいな。

(3)' お、ありがとう。

def underscore(camel_cased_word)
  camel_cased_word.to_s.gsub(/::/, '/').
    gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
    gsub(/([a-z\d])([A-Z])/,'\1_\2').
    tr("-", "_").
    downcase
end

[Rails] hidden_tag_list へるぱーだお。

セッション、ダメ、ゼッタイ。な人向け。俺か。

 def hidden_tag_list obj
   unless obj.blank?
     obj.class.columns.collect do |c|
       %Q|<input type="hidden" name="#{obj.class.to_s.underscore}[#{c.name}]" value="#{h(obj.send(c.name))}">\n|
     end
   end
 end

サイボウズ・ラボにお邪魔してきましたよ。

話題のサイボウズ・ラボ新オフィスにお邪魔してきました。本当に邪魔だけしに行った感じになってて申し訳ないと思いつつも、あー椅子いいなー、景色いいなー、nekopさんやっぱ背ェ高いなー(関係ない)とか思いつつ、満喫させていただきました。惜しむらくは女性がいないことですが、もうすぐ入社されるとのことデシタ。

竹迫さんがしょこたんにハマってて、ギザウケス。

本日のツッコミ(全2件) [ツッコミを入れる]

1 secondlife [ヒント: http://wiki.rails2u.com/misc/string_flections]

2 laja [http://blog.azpoint.net/blog/paxa buy paxil ]


2006-04-22 (土) [長年日記] Edit

[映画] バタフライ・エフェクト プレミアム・エディション [DVD](エリック・ブレス/J・マッキー・グラバー)

これは面白い。

時間を扱っている以上は、そこに色々とツッコミどころはあるんだけど、とりあえずそれを差し引いて考えると、どこまで行っても自分中心な世界観という「稚拙さ」、そしてそれを自分のスイッチひとつでガラリと変えてしまえる「容易さ」、そしてその容易さとは裏腹に、自分の意思とは関係なく表れる事実の「重大さ」。それらのギャップがいちいちオモシロス。

RPGやってて、敵が強い → やられた → リセット → ストーリーが変わる → 別の敵が強い → やられた → リセット、みたいな。でも、リセットするごとに脳に異常をきたす、という諸刃の剣。

なんかよくわかんないけど、主人公と一緒にゲロ吐きそうになったよ。面白い。

[] 旬彩

うまいし、景色いいし。

六本木ヒルズ行ってきたよ。

実は、はじめての六本木ヒルズ。展望台スゴス。普通に感動しちゃったよ。

相方の付き添いでヒステリックグラマーに行く途中、ジローラモ氏を見たよ。


2006-04-23 (日) [長年日記] Edit

CSS Nite公式ブログ: CSS Nite Vol.7フォローアップ(1)第1部(益子貴寛さん)のプレゼン資料

これは勉強になるなあ。知らないこと多すぎ。いかん。

とりあえず、テーブルレイアウトしか知らないデザイナーみんなしね(たむけん風)。そして、『 Web標準の教科書―XHTMLとCSSでつくる“正しい”Webサイト(益子 貴寛)』を読め。俺はさっき注文したどー。

自分用メモ

基本はdiv要素+id

  • header
  • globalnav
  • content
  • sidebar
  • footer

個別性を忘れていませんか?

基本的にid/classには要素タイプをつける

Mozilla.orgの外部CSSで示されている順序が参考になる。

  1. 視覚整形モデル
  2. ボックスモデル
  3. 背景と前景
  4. フォントとテキスト
  5. 生成内容
本日のツッコミ(全3件) [ツッコミを入れる]

1 takahashim [基本は意味的な要素+idにしたいです。現場の混乱は啓蒙とガイドラインで回避しないと後が辛そう。]

2 takahashim [あと、ワンシートアプローチは「ソースコードは一ファイルに書いたほうが一元管理しやすい」というのと同じくらい危険な香り..]

3 takahashim [というか、スタイルシートはともかく、XHTMLの部分はプログラマ&顧客との協調がよっぽどうまくできてないとがんがん変..]


2006-04-25 (火) [長年日記] Edit

[Ruby] Magick::Image::read_inlineがない

irb(main):001:0> require 'RMagick'
=> true
irb(main):002:0> Magick::Image::read_inline
NoMethodError: undefined method `read_inline' for Magick::Image:Class

うえー。1.10.1なんだけどなあ。

RMagick 1.7.0
   :
   o Added read_inline to Image class

なんか根本的に間違っているのかなあ。

がぁーC拡張かー。

あ、だめだ。よくわからん。makeできぬ。やめ。

[Thunderbird] 保存されているパスワードを変更するには

パスワード変更できないかと思って焦ったよ。


2006-04-26 (水) [長年日記] Edit

[Rails] FileColumnを使ってみるよ(初級)

れしぴぶっくの『Processing Uploaded Images』の「Also See」に載っていたやつ。これはスゴス。クオリティタカス。画像のアップロードが面倒なのでRails嫌いになった人もこれで安心!(たぶん)

でも、日本国では確認画面があるのですよ(しかもセッション使わないやつ!)とか思ってたら対応してやがんの!すげー!

というわけで、やり方を見てみるよ。

テキトーなモデルを作るよ(MySQL)

 CREATE TABLE samples (
   id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
   image VARCHAR(200) NULL,
   PRIMARY KEY(id)
 )

scaffold実行

$ ./script/generate scaffold sample

モデルにオキマリフレーズを追加

class Sample
  file_column :image
end

Controller修正しまーす

confirmメソッド(確認画面)を追加しました。

class SamplesController < ApplicationController
  def index
    new
    render :action => 'new'
  end

  def show
    @sample = Sample.find(params[:id])
  end

  def new
    @sample = Sample.new(params[:sample])
  end

  def confirm
    new
  end

  def create
    @sample = Sample.new(params[:sample])
    if @sample.save
      flash[:notice] = 'Sample was successfully created.'
      redirect_to :action => 'show', :id => @sample
    else
      render :action => 'new'
    end
  end
end

new(新規画面)のView

multipartをフォームに追加するのと、 独自へるぱの file_column_field を追加した。 フォームの飛び先はconfirm。

<h1>New sample</h1>
<%= start_form_tag({:action => 'confirm'}, {:multipart => true} )%>
  <%= file_column_field 'sample', 'image' %><br/>
  <%= submit_tag "Confirm" %>
<%= end_form_tag %> 

confirm(確認画面)のView

<h1>Confirm New sample</h1>
<%= start_form_tag :action => 'create' %>
  <%= image_tag url_for_file_column('sample', 'image') %>
  <%= hidden_field 'sample', 'image_temp' %>
  <%= submit_tag "Create" %>
</form>

ここでのポインツはコレ。

<%= hidden_field 'sample', 'image_temp' %>

(しばらく悩んだのは内緒だ)

はーい、createされたので、show(詳細表示)しまーす(たむけん風)

独自へるぱでごー。

<%= image_tag url_for_file_column('sample', "image") %>

スバラシスなあ。ホホホーイ。


2006-04-27 (木) [長年日記] Edit

[WORK] モチベーション向上研修に行って来る

ぐむー。 いつまで経っても忙しいので、とりあえず今日抜けて行ってくる。 行く前からモチベーション下げてどーするんだ。

DHHは「仕事を成し遂げる」←「モチベーション」←「ハッピー」←「美しいコードを書く」てなことを語っていたわけだが(ハッピーと美しいコードは逆かも)、モチベーションのメタに何かないと素でモチベーションは上がるわけないよなーとか、今は普通にモチベーションありまくりなんだがなーとか思いながら、続きは帰ってきてから書く。

帰ってきた

自己変革重要。おわり。

ちょーつまんね。

[] よつばと! (5) (電撃コミックス (C102-5))(あずま きよひこ)

だんだんと性格が悪くなっている気がするw

本日のツッコミ(全1件) [ツッコミを入れる]

1 おおもり [お疲れ様でした]


2006-04-28 (金) [長年日記] Edit

357 273 277

MySQLに初期化用のデータをインポートしようとしたら、文法が間違ってるZEとか言われて、あーSQLも分からなくなったのかーと、あやうく泣きそうになった。よくよく調べたら頭に「357 273 277」が入ってるらしく、UTF-8Nに保存しなおして解決。これで眠れる。

id:t-wadaさんにレアキャラ扱いされた。

平日は抜けられないし、土日は寝てますからねえ。


2006-04-29 (土) [長年日記] Edit

REAL SIMPLE JAPAN

へーこんな雑誌があったのかー。思えば、主婦の知恵とかってLife Hacksっぽいよね。