徒然なるままに、日ぐらしP/Cに向ひて――
メインメニュー
ブログカレンダー
2013年 7月
« 6月   8月 »
 123456
78910111213
14151617181920
21222324252627
28293031  
WordPress カテゴリ一覧
WordPress 検索


富士カメラ5

Kestrel とは、チョウゲンボウのことです。ハトくらいの小さな猛禽類、つまりワシの仲間で、ハヤブサに似ています。
チョウゲンボウにはホバリングという特技があります。よく農地の上空で空中に停止している姿が見られます。小さいけれどカッコイイ、そして最近は都会でも繁殖している頼もしいタカです。
このサイトのURLは、そんなチョウゲンボウから名前を借りました。

2013年7月27日(土曜日)

Railsで複数ファイルをアップロードする

カテゴリー: - flyman @ 22時19分32秒

HTML5 で実装された『multiple』機能を使って複数選択したファイルを一括アップロードする仕組みを考えてみた。

まずView側だ。

< %= form_tag( {:action => ”cat”}, {:multipart => true} ) do %>
	

    ファイル選択
    < %= file_field_tag ”uploads[]”, :multiple => true  %>
  
	
  < %= submit_tag ”アップロード” %>
< % end %>

こんな感じにする。『:multiple => true』だけで複数ファイルに対応してくれる。uploads[]と、配列で受け取るようにするのがポイントだ。

controller側も作る。
アップロードされたファイルを結合してダウンロードする、というものを作ってみた。

def cat
  outFile = ””
  fileName = ((’a’..’z’).to_a + (’A’..’Z’).to_a + (’0’..’9’).to_a).shuffle[0..23].join
  tmpFile = File.join(Rails.root, ”tmp”, fileName)
  params[:uploads].each do |file|
    outFile = file.original_filename if outFile == ””
    File.open(tmpFile, ”a”) { |f|
      f.write(file.read)
    }
  end
  File.open(tmpFile, ”r”) { |f|
    send_data(f.read, type => ’text/csv’, :filename => outFile + ’.csv’)
  }
  File.delete(tmpFile) if File.exist?(tmpFile)
end

ランダムに生成した名前で tmp ディレクトリに作業ファイルを作り、アップロードしたファイルを順次追加書き込みしていく。
作業ファイルをメモリに読み込んでからダウンロードする。
作業ファイルを削除する。
といった手順だ。
プログラムは冗長できたないが、要は『params[:uploads].each』で個々のファイルが取得できるということ。

とても良いのだが、この仕組みには欠点もある。
それは、IE8、IE9がHTML5に対応出来ていないということ。Firefoxではちゃんと動く。たぶん、IE10は大丈夫だと思う。
クライアントを選ぶが、複数ファイルアップロードに簡単に対応出来る方法ではある。

PENTAX Q + 02レンズ。


2013年7月21日(日曜日)

うわぁ、中国相手に……

カテゴリー: - flyman @ 22時56分24秒

若手チームはここまで出来ないのか!?
最っ低。A代表に上がれるメンバーが居るのか?
って、A代表か、これは。


さて、なでしこジャパンに続けよ、新生日本代表

カテゴリー: - flyman @ 20時59分47秒
PENTAX Q + 01レンズ
宮ヶ瀬。日射しは強いが風はさわやか。まるで高原のリゾート地のよう
CANON 60D + EF 70-300 L
近所の蓮田
クマバチが来た

2013年7月20日(土曜日)

御殿場は曇り。まあまあ涼しかった

カテゴリー: - flyman @ 22時27分25秒
PENTAX Q + Fish eye
どうも緑が強い。風景モードのせい? ナチュラルにしてみるか。

2013年7月16日(火曜日)

ruby + Thinreports で PDF 出力

カテゴリー: - flyman @ 22時57分53秒

例えば、ruby + Thinreports を使えば、

のような請求書が簡単に作れる。これは『高度な一覧表』のサンプルとほぼ同様のものだ。

ところが、このレイアウトでページあふれが生じると、

の様になってしまう。これはまずい。
何がまずいかというと、『記』『以上』でくくっているはずの明細の途中に、改ページ毎に『記』が書かれてしまうのだ。『記』は最初だけ、『以上』は最後にだけ表示されなければいけない。
これを避けるために複数レイアウトを組み合わせてみたが、うまく行かなかった。最初のオーバーフロー時に余計なページが挟まってしまうのだ。それを避けるためにトップページのオーバーフローを抑止すると、今度は途中に『以上』が挟まってしまう。
で、泣きそうになりながら作ったのが、

だ。レイアウトは1つにして、2ページ目以降では邪魔な部分の表示を抑止するようにした。

実際の帳票では、

のように空白行を入れてフッター位置を調整するのが普通なので、さらに調整してみた。

ファイル一式をここに置く。

2ページ目以降でヘッダーの出力を抑止しているのは

report.events.on :page_create do |e|
  # Set page-number.
  e.page.list(:default).header.item(:Page).value(”Page: ” + sprintf(”%02d”, e.page.no))
  if e.page.no > 1
    report.page.list(:default).header do |header|
      header.item(:Customer).hide
      header.item(:Fix01).hide
      header.item(:Fix02).hide
    end
  end
end

といったルーチンだ。ページ生成イベントで2ページ目以降の時、非表示にしている。

最終ページで空白行を挿入してフッターの位置合わせをしているのは

maxLine = 37  # オーバーフローする行数
minLine = 34 # フッター表示時の行数
amari = itemNo % maxLine  # 最終ページの行数
if amari > minLine
  (amari - maxLine).upto(minLine - 1) {
    report.page.list(:default) do |list|
      list.add_row do |r|
      end
    end
  }
elsif amari < minLine
  amari.upto(minLine - 1) {
    report.page.list(:default) do |list|
      list.add_row do |r|
      end
    end
  }
end

という、なんだかいい加減なルーチンである。出力した行数を基に計算している。
もっと賢い方法があるのだろうが、flymanはググってもたどり着けなかった。

まだまだ機能不足なThinreportsだが、工夫すれば使えそう。
でも、欲しい機能も一杯 ――

:idea:バンドを増やして欲しい
 ボディ・ヘッダー
 グループ・ヘッダー
 明細ヘッダー
 明細
 明細フッター
 グループ・フッター
 ボディ・フッター
など。
:idea:各種プロパティをダイナミックに変更可能に。例えばバンドの高さとか。

要は、QuickReportsやRaveReports のようなレポート作成ツールの機能に迫って貰いたい。フリーじゃ無理かも知れないが、なるべくフリーのままで。バージョンアップに期待 ;-)

2013年7月6日(土曜日)

ペンタックスQマウントの魚眼単焦点レンズ

カテゴリー: - flyman @ 21時14分35秒

買ってしまいました、Qマウントの03フィッシュァイ

これは01スタンダードレンズ。
同じ場所をフィッシュアイで撮ったのがコチラ。

ピント合わせが難しい。

ようやくピントが合った。

9,000円以下で買えるフィッシュアイレンズだ。絞り固定、マニュアルフォーカス、レンズシャッターなし。
ピントが合えば、トイレンズという肩書きに似合わぬ綺麗な絵が撮れる。


2013年7月5日(金曜日)

今年も七夕祭り

カテゴリー: - flyman @ 23時18分21秒

平塚市では本日より3日間、七夕祭りだ。3.11以来、開催期間が短縮され、テキ屋の数も全盛期の1/5程度か。今年は派手な飾りも減っているようで、アベノミクス効果はま?ったく感じられない。
それでもソコソコの人出で、風は強いが、東海道線が徐行運転するほどの朝の豪雨が止んで良かった。

PENTAX Q + 01レンズ

でも、七夕祭りは地元住人にはあまり喜ばれてはいないようだ。


28 queries. 0.036 sec.
Powered by WordPress Module based on WordPress ME & WordPress

ヘッドライン
nikkansports
IT Pro
レスポンス
テーマ選択

(4 テーマ)