Submit Search
Upload
Thin reports再び
•
1 like
•
908 views
S
sy250
Follow
ThinReports and Sinatra
Read less
Read more
Report
Share
Report
Share
1 of 15
Download now
Download to read offline
Recommended
RubyではじめるIoT(Wakayama.rb活動報告)
RubyではじめるIoT(Wakayama.rb活動報告)
三七男 山本
大阪版IoT縛りの勉強会での発表資料です。
Rubyボードハンズオン
Rubyボードハンズオン
三七男 山本
わかやまITカーニバルのRubyボードハンズオンで使用する説明資料です。
20130615 組込みの仕事場でRubyを使う
20130615 組込みの仕事場でRubyを使う
Ryo Nagai
第58回 Ruby/Rails勉強会@関西 でお話しした、ライトユーザなRubyistの日常のお話です。
GR-CITRUSの紹介
GR-CITRUSの紹介
三七男 山本
缶サット甲子園でのプレゼン資料です。
メモリアロケーションからみた拡張ライブラリに大切なこと
メモリアロケーションからみた拡張ライブラリに大切なこと
Masaya TARUI
C Extension and GC in Ruby
Rubyボードハンズオンテキスト
Rubyボードハンズオンテキスト
三七男 山本
わかやまITカーニバルで開催するRubyボードハンズオンのテキストです。
okrk01_ kitanokunikara-konnnichinu
okrk01_ kitanokunikara-konnnichinu
Asami IMAZU
わたくし、ぬRubyについてお話しました。
GC本読んでJSで偽GC作った
GC本読んでJSで偽GC作った
to_ueda
第11回 minami.rb 勉強会で発表した資料
Recommended
RubyではじめるIoT(Wakayama.rb活動報告)
RubyではじめるIoT(Wakayama.rb活動報告)
三七男 山本
大阪版IoT縛りの勉強会での発表資料です。
Rubyボードハンズオン
Rubyボードハンズオン
三七男 山本
わかやまITカーニバルのRubyボードハンズオンで使用する説明資料です。
20130615 組込みの仕事場でRubyを使う
20130615 組込みの仕事場でRubyを使う
Ryo Nagai
第58回 Ruby/Rails勉強会@関西 でお話しした、ライトユーザなRubyistの日常のお話です。
GR-CITRUSの紹介
GR-CITRUSの紹介
三七男 山本
缶サット甲子園でのプレゼン資料です。
メモリアロケーションからみた拡張ライブラリに大切なこと
メモリアロケーションからみた拡張ライブラリに大切なこと
Masaya TARUI
C Extension and GC in Ruby
Rubyボードハンズオンテキスト
Rubyボードハンズオンテキスト
三七男 山本
わかやまITカーニバルで開催するRubyボードハンズオンのテキストです。
okrk01_ kitanokunikara-konnnichinu
okrk01_ kitanokunikara-konnnichinu
Asami IMAZU
わたくし、ぬRubyについてお話しました。
GC本読んでJSで偽GC作った
GC本読んでJSで偽GC作った
to_ueda
第11回 minami.rb 勉強会で発表した資料
ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介
三七男 山本
ET2016のカンファレンスで話した内容です。
RubySeminar16_Analyze
RubySeminar16_Analyze
sady_nitro
第16回 岡山Ruby, Ruby on Rails勉強会発表スライド。デモを挟まないと無いと全然面白くないですが、一応アップしておきます。
Ruby with My Life
Ruby with My Life
Hiroshi SHIBATA
Talk of RubyPrize 2014
出会い駆動コミュニティー
出会い駆動コミュニティー
yoku0825
2014/02/13 Developers Summit 2014
JRubyで作るapiサーバー
JRubyで作るapiサーバー
Yamamoto Kazuhisa
2012年2月25日に開催された岡山Javaユーザー会勉強会で発表した内容です
20190910 rpalt
20190910 rpalt
Hironari Ono
2019/9/10 RPALT札幌の資料です
Nendo At Kansai Ruby Kaigi03
Nendo At Kansai Ruby Kaigi03
Kiyoka Nishiyama
Presentation of Nendo programming language at Ruby Kaigi03 at Kansai. Written in Japanese.
Mrubyについて 第16回 岡山ruby, ruby on rails勉強会
Mrubyについて 第16回 岡山ruby, ruby on rails勉強会
Masaya Konishi
第16回 岡山ruby, ruby on rails勉強会でmrubyについて調べたこと、試したことを発表しました。
Ruby関西76 gr citrusの使い方#2
Ruby関西76 gr citrusの使い方#2
三七男 山本
Ruby関西での発表資料です。
Happy Life Hacking Ruby on Rails
Happy Life Hacking Ruby on Rails
Koichiro Ohba
At SendaiRubyKaigi
Building Static Website With Github And Jekyll
Building Static Website With Github And Jekyll
Yoji Shidara
Rubymotion
Rubymotion
jewel12
ET2016展示パネル
ET2016展示パネル
三七男 山本
ET2016に展示したパネルです。
ランダムにおちるfeature_system spec対策rspec-retry_ex の 紹介
ランダムにおちるfeature_system spec対策rspec-retry_ex の 紹介
Yuya Taki
scenario内の一部分をリトライできるrspec-retry_exについて紹介しています。 ブログもご覧ください。https://tech.enechange.co.jp/entry/2019/02/22/083700
なぜか技術書典5で 3サークルの運営を同時にやった話
なぜか技術書典5で 3サークルの運営を同時にやった話
ota42y
技術書典非公式アフター(10/08)で話した内容です https://techbook-and-ethanol.connpass.com/event/97154/
[RubyMotion LT] nitronに見るiosアプリ開発の未来
[RubyMotion LT] nitronに見るiosアプリ開発の未来
Masahiro Nishimi
よちよち.rbで知ったコミュニティの素晴らしさ
よちよち.rbで知ったコミュニティの素晴らしさ
bonbon0605
よちよち.rbで知ったコミュニティの素晴らしさ
よちよち.rbで知ったコミュニティの素晴らしさ
shinyaogasawara
GC黄金時代
GC黄金時代
Narihiro Nakamura
GC黄金時代
やさしいGemパッチの作り方
やさしいGemパッチの作り方
Maki Toshio
#omotesandorb発表資料
Jupyter x rise
Jupyter x rise
Shingo Tawada
PyData.Okinawa × PythonBeginners沖縄 合同勉強会 LT資料です。
Yapc2012ltthon
Yapc2012ltthon
Junya Murabe
YAPC::Asia Tokyo 2012 で開催されたLTソンで話したネタ。タイトルは釣りです。
More Related Content
What's hot
ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介
三七男 山本
ET2016のカンファレンスで話した内容です。
RubySeminar16_Analyze
RubySeminar16_Analyze
sady_nitro
第16回 岡山Ruby, Ruby on Rails勉強会発表スライド。デモを挟まないと無いと全然面白くないですが、一応アップしておきます。
Ruby with My Life
Ruby with My Life
Hiroshi SHIBATA
Talk of RubyPrize 2014
出会い駆動コミュニティー
出会い駆動コミュニティー
yoku0825
2014/02/13 Developers Summit 2014
JRubyで作るapiサーバー
JRubyで作るapiサーバー
Yamamoto Kazuhisa
2012年2月25日に開催された岡山Javaユーザー会勉強会で発表した内容です
20190910 rpalt
20190910 rpalt
Hironari Ono
2019/9/10 RPALT札幌の資料です
Nendo At Kansai Ruby Kaigi03
Nendo At Kansai Ruby Kaigi03
Kiyoka Nishiyama
Presentation of Nendo programming language at Ruby Kaigi03 at Kansai. Written in Japanese.
Mrubyについて 第16回 岡山ruby, ruby on rails勉強会
Mrubyについて 第16回 岡山ruby, ruby on rails勉強会
Masaya Konishi
第16回 岡山ruby, ruby on rails勉強会でmrubyについて調べたこと、試したことを発表しました。
Ruby関西76 gr citrusの使い方#2
Ruby関西76 gr citrusの使い方#2
三七男 山本
Ruby関西での発表資料です。
Happy Life Hacking Ruby on Rails
Happy Life Hacking Ruby on Rails
Koichiro Ohba
At SendaiRubyKaigi
Building Static Website With Github And Jekyll
Building Static Website With Github And Jekyll
Yoji Shidara
Rubymotion
Rubymotion
jewel12
ET2016展示パネル
ET2016展示パネル
三七男 山本
ET2016に展示したパネルです。
ランダムにおちるfeature_system spec対策rspec-retry_ex の 紹介
ランダムにおちるfeature_system spec対策rspec-retry_ex の 紹介
Yuya Taki
scenario内の一部分をリトライできるrspec-retry_exについて紹介しています。 ブログもご覧ください。https://tech.enechange.co.jp/entry/2019/02/22/083700
なぜか技術書典5で 3サークルの運営を同時にやった話
なぜか技術書典5で 3サークルの運営を同時にやった話
ota42y
技術書典非公式アフター(10/08)で話した内容です https://techbook-and-ethanol.connpass.com/event/97154/
[RubyMotion LT] nitronに見るiosアプリ開発の未来
[RubyMotion LT] nitronに見るiosアプリ開発の未来
Masahiro Nishimi
よちよち.rbで知ったコミュニティの素晴らしさ
よちよち.rbで知ったコミュニティの素晴らしさ
bonbon0605
よちよち.rbで知ったコミュニティの素晴らしさ
よちよち.rbで知ったコミュニティの素晴らしさ
shinyaogasawara
GC黄金時代
GC黄金時代
Narihiro Nakamura
GC黄金時代
やさしいGemパッチの作り方
やさしいGemパッチの作り方
Maki Toshio
#omotesandorb発表資料
What's hot
(20)
ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介
RubySeminar16_Analyze
RubySeminar16_Analyze
Ruby with My Life
Ruby with My Life
出会い駆動コミュニティー
出会い駆動コミュニティー
JRubyで作るapiサーバー
JRubyで作るapiサーバー
20190910 rpalt
20190910 rpalt
Nendo At Kansai Ruby Kaigi03
Nendo At Kansai Ruby Kaigi03
Mrubyについて 第16回 岡山ruby, ruby on rails勉強会
Mrubyについて 第16回 岡山ruby, ruby on rails勉強会
Ruby関西76 gr citrusの使い方#2
Ruby関西76 gr citrusの使い方#2
Happy Life Hacking Ruby on Rails
Happy Life Hacking Ruby on Rails
Building Static Website With Github And Jekyll
Building Static Website With Github And Jekyll
Rubymotion
Rubymotion
ET2016展示パネル
ET2016展示パネル
ランダムにおちるfeature_system spec対策rspec-retry_ex の 紹介
ランダムにおちるfeature_system spec対策rspec-retry_ex の 紹介
なぜか技術書典5で 3サークルの運営を同時にやった話
なぜか技術書典5で 3サークルの運営を同時にやった話
[RubyMotion LT] nitronに見るiosアプリ開発の未来
[RubyMotion LT] nitronに見るiosアプリ開発の未来
よちよち.rbで知ったコミュニティの素晴らしさ
よちよち.rbで知ったコミュニティの素晴らしさ
よちよち.rbで知ったコミュニティの素晴らしさ
よちよち.rbで知ったコミュニティの素晴らしさ
GC黄金時代
GC黄金時代
やさしいGemパッチの作り方
やさしいGemパッチの作り方
Similar to Thin reports再び
Jupyter x rise
Jupyter x rise
Shingo Tawada
PyData.Okinawa × PythonBeginners沖縄 合同勉強会 LT資料です。
Yapc2012ltthon
Yapc2012ltthon
Junya Murabe
YAPC::Asia Tokyo 2012 で開催されたLTソンで話したネタ。タイトルは釣りです。
るりまの1/nはMatsue.rbでできています。
るりまの1/nはMatsue.rbでできています。
Sho Hashimoto
桐島、Rubyやめるってよ
桐島、Rubyやめるってよ
Narihiro Nakamura
本セッションでは「プログラミングへ向き合い方」ということについて発表者なりに考察した結果を述べます。 スゴイ級のプログラマからプログラミングのエモい話を拝聴することはあり、それも非常に興味深いのですが、私のような平凡なプログラマの視点からも少し提案できることがあるのではないかなあと考えている次第です。
Perlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobody
azuma satoshi
Sinatraの紹介
Sinatraの紹介
longkey1
Raspberry pi最新情報アップデート&いろいろ比較
Raspberry pi最新情報アップデート&いろいろ比較
Masafumi Ohta
OSC福岡での資料です。内容については聴講者に話をしてありますが、実講演資料より一部省略しています。
Github pagesでRPubsにサヨナラ!
Github pagesでRPubsにサヨナラ!
yutannihilation
第48回Tokyo.RでのLTです。
Yokohama.vim
Yokohama.vim
gu4
Rubykaigi 2010 at vimkaigi 2010 8/29. Lightning Talks.
Rails上でのpub/sub イベントハンドラの扱い
Rails上でのpub/sub イベントハンドラの扱い
ota42y
Shinjuku.rb #63 で発表した資料です
Sinatra Pattern 20130415
Sinatra Pattern 20130415
Naotoshi Seo
Similar to Thin reports再び
(11)
Jupyter x rise
Jupyter x rise
Yapc2012ltthon
Yapc2012ltthon
るりまの1/nはMatsue.rbでできています。
るりまの1/nはMatsue.rbでできています。
桐島、Rubyやめるってよ
桐島、Rubyやめるってよ
Perlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobody
Sinatraの紹介
Sinatraの紹介
Raspberry pi最新情報アップデート&いろいろ比較
Raspberry pi最新情報アップデート&いろいろ比較
Github pagesでRPubsにサヨナラ!
Github pagesでRPubsにサヨナラ!
Yokohama.vim
Yokohama.vim
Rails上でのpub/sub イベントハンドラの扱い
Rails上でのpub/sub イベントハンドラの扱い
Sinatra Pattern 20130415
Sinatra Pattern 20130415
Recently uploaded
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
K Kinzal
https://lu.ma/wgpk8fdp
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
You&I
Tree Decades of Agileというブログ記事が面白そうなので、これを読んでみたいと思います。 http://www.managecomplexity.dk/blog/2024/03/12/three-decades-of-agile/
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
TatsuyaHanayama
ソフトウェア・サプライ・チェーン攻撃は、ソフトウェア開発のプロセス自体が侵害され、その結果、重大なセキュリティインシデントが生じてしまいます。 クラウドネイティブは顧客に迅速な価値を提供できる反面、開発プロセスは複雑で、どのようにセキュリティ対策をすべきかが課題になっています。 本セッションでは改めて上記の課題について整理し、弊社のアプリケーション・セキュリティ・テスト・プラットフォームであるPolarisを用いた解決策を紹介します。
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
yamamotominami
「ASUENE」は、複雑だったCO2排出量算出業務をカンタンにサポートする、CO2排出量見える化・削減・報告クラウドサービスです。温室効果ガス・CO2排出量の算出・可視化、削減・カーボンオフセット、Scope1-3* のサプライチェーン排出量の報告・情報開示を支援します。
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
K Kinzal
https://lu.ma/wgpk8fdp
NIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしよう
You&I
今年2月に1.1→2.0に更新されたNIST CSFの変更内容について整理したいと思います。
Recently uploaded
(6)
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
NIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしよう
Thin reports再び
1.
Kazuhiro Yoshida ThinReports 再び
9 April 2014! at Hamamatsu.rb #38
2.
振り返り 思えば2年前... ! 前回は少し投げやり感があった... ※投げやり感があった 労基署の監査でやりたくない仕事の後始末に追われていた
3.
今回は寝ても覚めてもコーディング ❖ 明確な目的 ❖ 現実逃避 ❖
たのしいRuby!
4.
前回は 「帳票出力」 ! ThinReports + Ruby
on Rails
5.
今回は 「帳票出力」 ! ThinReports + sinatra
6.
なぜRailsじゃないのか? ❖ 勝手にファイルが作られる ❖ ルール?規則?つーか俺がルール! ❖
PerlでCGI.pmで作ってた頃がたのしかった♪ で、 sinatra いいんじゃない!
7.
開発の流れ 1. 現状の作業をエクセルにて可能なかぎり 自動化 2. それをRubyでコーディングしてコンソー ルアプリにする 3.
さらにそれをsinatraでWEBアプリにする 目標:作業時間の短縮 15分 を 15秒に
8.
開発イメージ 受注オーダーファイル .xls 帳票作成プログラム pdicard.rb thinreports sinatra require 'spreadsheet'! require 'sequel'! require
'thinreports' コントローラー pdicard_controller.rb テンプレート upload.haml %html! %body! %h1 PDi Card Generate! %form(method="post" enctype='multipart/form-data') ! %input(type='file' name='myfile') ! %br! %input(type='submit' value='Upload!') require 'rubygems'! require 'sinatra'! require 'haml'! require 'pp'! require './pdicard'! require 'tempfile'! require 'sinatra/reloader' .pdf
9.
ファイルアップロード画面とコード %html! %body! %h1 PDi Card
Generate! %form(method="post" enctype='multipart/form-data') ! %input(type='file' name='myfile') ! %br! %input(type='submit' value='Upload!') #!/usr/bin/ruby! # encoding:utf-8! require 'spreadsheet'! require 'sequel'! require 'thinreports'! require 'pp'! ! class ItemTB! DB = Sequel.sqlite! DB.create_table :items do! primary_key :id! String :item_no! String :item_name! String :code_of_customer! String :line_code_of_production! end! DataSet = DB[:items] # Create a dataset! ! book = Spreadsheet.open("品目マスター.xls")! sheet = book.worksheet(0)!
10.
ThinReportエディターとコード report = ThinReports::Report.create
do |r|! r.use_layout 'inspections.tlf', :default => true! r.start_new_page #:layout => 'inspections.tlf'! until (label_data.empty?) do! read_as_col(label_data, 2) do |data_row_array|! r.page.list(:list).add_row do |row|! # Set details! data_row_array.each_with_index do |col_array, _index|! row.item(Symbol_table[_index][0]).value(col_array[:item_no row.item(Symbol_table[_index][1]).value(col_array[:date_del row.item(Symbol_table[_index][2]).value(col_array[:time_de row.item(Symbol_table[_index][3]).value(col_array[:quantity row.item(Symbol_table[_index][4]).value(col_array[:quantity row.item(Symbol_table[_index][5]).value(col_array[:inspectio row.item(Symbol_table[_index][6]).value(col_array[:line_cod row.item(Symbol_table[_index][7]).value(col_array[:line_nam row.item(Symbol_table[_index][8]).value(col_array[:code_of_ row.item(Symbol_table[_index][9]).value(col_array[:order_no end! end! end! end! ! r.use_layout 'inspections_list.tlf', :id => :list_all! r.start_new_page :layout => :list_all! orders.DB.fetch("select * from orders where line_code_of_produc or line_code_of_production is null", '42%') do |data_row|! r.page.list(:list).add_row do |row|! row.item(:item_no).value(data_row[:item_no])! row.item(:date_delivery).value(data_row[:date_delivery])! row.item(:time_delivery).value(data_row[:time_delivery])!
11.
出力帳票とコード r.use_layout 'inspections_list.tlf', :id
=> :list_all! r.start_new_page :layout => :list_all! orders.DB.fetch("select * from orders where line_code_of_productio or line_code_of_production is null", '42%') do |data_row|! r.page.list(:list).add_row do |row|! row.item(:item_no).value(data_row[:item_no])! row.item(:date_delivery).value(data_row[:date_delivery])! row.item(:time_delivery).value(data_row[:time_delivery])! row.item(:quantity_of_order).value(data_row[:quantity_of_order row.item(:quantity_of_order_sum).value(data_row[:quantity_of_ row.item(:inspection_as_standard).value(data_row[:inspection_a row.item(:line_code_of_customer_delivery).value(data_row[:line row.item(:line_name_of_customer_delivery).value(data_row[:lin #row.item(:code_of_customer).value(data_row[:code_of_custom row.item(:order_no).value(data_row[:order_no])! end! end! end! report.generate! report = ThinReports::Report.create do |r|! r.use_layout 'inspections.tlf', :default => true! r.start_new_page #:layout => 'inspections.tlf'! until (label_data.empty?) do! read_as_col(label_data, 2) do |data_row_array|! r.page.list(:list).add_row do |row|! # Set details! data_row_array.each_with_index do |col_array, _index|! row.item(Symbol_table[_index][0]).value(col_array[:item_no]) row.item(Symbol_table[_index][1]).value(col_array[:date_deliv row.item(Symbol_table[_index][2]).value(col_array[:time_deliv
12.
結果 受注オーダー ファイル .xls .pdf 「現状」 .doc 差し込み印刷 .xls 差し込みデータ 作成 「改善後」 受注オーダー ファイル .xls 帳票作成 プログラム PDFファイル 出力 目標作業時間 15分 ->
15秒 達成
13.
課題 1. PDFをインラインで表示したい(今はダ ウンロードさせている) 2. ドキュメントが少ないので問題解決に時 間がかかる 3.
基本的にたのしすぎて家族と会話が少な くなる
14.
“Rubyで世界を変える!” 今後もRubyで寝食を忘れて 作業改善に取り組んでいく!
15.
その後… 1. PDFをインラインで表示したい headers["Content-Type"] =
"application/pdf"! headers["Content-Disposition"] = "inline;filename=pdicard.pdf" 解決!!
Download now