Enviar pesquisa
Carregar
Asr
•
0 gostou
•
1,272 visualizações
Akio Tajima
Seguir
Sapporo RubyKaigi 2008
Leia menos
Leia mais
Tecnologia
Educação
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 33
Baixar agora
Baixar para ler offline
Recomendados
PHP at Yahoo! JAPAN
PHP at Yahoo! JAPAN
Ippei Ogiwara
Web技術勉強会9回目(Slideshare用)
Web技術勉強会9回目(Slideshare用)
龍一 田中
Windows MobileとWeb Api
Windows MobileとWeb Api
Kenji Wada
Web2.0 and Ruby
Web2.0 and Ruby
guest396df3
すまべん関東#1「WindowsMobileでMortscriptを活用しよう!」
すまべん関東#1「WindowsMobileでMortscriptを活用しよう!」
icchu3
Щастливият програмист
Щастливият програмист
Nikolay Bachiyski
256 Ch
256 Ch
anjaan
Распределенная обработка потоковых данных
Распределенная обработка потоковых данных
mayperl
Recomendados
PHP at Yahoo! JAPAN
PHP at Yahoo! JAPAN
Ippei Ogiwara
Web技術勉強会9回目(Slideshare用)
Web技術勉強会9回目(Slideshare用)
龍一 田中
Windows MobileとWeb Api
Windows MobileとWeb Api
Kenji Wada
Web2.0 and Ruby
Web2.0 and Ruby
guest396df3
すまべん関東#1「WindowsMobileでMortscriptを活用しよう!」
すまべん関東#1「WindowsMobileでMortscriptを活用しよう!」
icchu3
Щастливият програмист
Щастливият програмист
Nikolay Bachiyski
256 Ch
256 Ch
anjaan
Распределенная обработка потоковых данных
Распределенная обработка потоковых данных
mayperl
AGPsource Game Platform 3.0
AGPsource Game Platform 3.0
CoinIndex.agency
تمرينات المصادر الحرة
تمرينات المصادر الحرة
نوافذ حاسوبية
Rise7 Solution 표준제안서 V2.5
Rise7 Solution 표준제안서 V2.5
Kim Dong Keun
Что такое Site Sapiens
Что такое Site Sapiens
rglab
Yarvmi
Yarvmi
Akio Tajima
Howtousenetboss
Howtousenetboss
kumee
RDF and FOAF
RDF and FOAF
Masaki Komagata
WebDAV as Web API
WebDAV as Web API
Masaki Komagata
What is PHP Frameworks?
What is PHP Frameworks?
Masaki Komagata
cblue@njug5
cblue@njug5
ทวิร พานิชสมบัติ
徐景春:企业级开源数据库灾备体系
徐景春:企业级开源数据库灾备体系
XMourinho
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
XMourinho
070829 intra-SNS case-study
070829 intra-SNS case-study
Yoshihito Kuranuki
Ubuntu オススメ・アプリケーション
Ubuntu オススメ・アプリケーション
ubon
Php.On.Windows.Training.Chs
Php.On.Windows.Training.Chs
cqwang
【13-B-3】 企業システムをマッシュアップ型に変えるには
【13-B-3】 企業システムをマッシュアップ型に変えるには
devsumi2009
PHPによるユニットテスト入門
PHPによるユニットテスト入門
Hiromu Shioya
How to use Virtualization Technology in Hatena
How to use Virtualization Technology in Hatena
Shinji Tanaka
How to use Open Source in Software Development
How to use Open Source in Software Development
Isriya Paireepairit
変わる時代、変わらぬ思い
変わる時代、変わらぬ思い
Hiromu Shioya
Ruby Extended Library
Ruby Extended Library
Akio Tajima
Geojournalistik og nye fortælleformer
Geojournalistik og nye fortælleformer
Jesper Ishoj
Mais conteúdo relacionado
Mais procurados
AGPsource Game Platform 3.0
AGPsource Game Platform 3.0
CoinIndex.agency
تمرينات المصادر الحرة
تمرينات المصادر الحرة
نوافذ حاسوبية
Rise7 Solution 표준제안서 V2.5
Rise7 Solution 표준제안서 V2.5
Kim Dong Keun
Что такое Site Sapiens
Что такое Site Sapiens
rglab
Yarvmi
Yarvmi
Akio Tajima
Howtousenetboss
Howtousenetboss
kumee
RDF and FOAF
RDF and FOAF
Masaki Komagata
WebDAV as Web API
WebDAV as Web API
Masaki Komagata
What is PHP Frameworks?
What is PHP Frameworks?
Masaki Komagata
cblue@njug5
cblue@njug5
ทวิร พานิชสมบัติ
徐景春:企业级开源数据库灾备体系
徐景春:企业级开源数据库灾备体系
XMourinho
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
XMourinho
070829 intra-SNS case-study
070829 intra-SNS case-study
Yoshihito Kuranuki
Ubuntu オススメ・アプリケーション
Ubuntu オススメ・アプリケーション
ubon
Php.On.Windows.Training.Chs
Php.On.Windows.Training.Chs
cqwang
【13-B-3】 企業システムをマッシュアップ型に変えるには
【13-B-3】 企業システムをマッシュアップ型に変えるには
devsumi2009
PHPによるユニットテスト入門
PHPによるユニットテスト入門
Hiromu Shioya
How to use Virtualization Technology in Hatena
How to use Virtualization Technology in Hatena
Shinji Tanaka
How to use Open Source in Software Development
How to use Open Source in Software Development
Isriya Paireepairit
変わる時代、変わらぬ思い
変わる時代、変わらぬ思い
Hiromu Shioya
Mais procurados
(20)
AGPsource Game Platform 3.0
AGPsource Game Platform 3.0
تمرينات المصادر الحرة
تمرينات المصادر الحرة
Rise7 Solution 표준제안서 V2.5
Rise7 Solution 표준제안서 V2.5
Что такое Site Sapiens
Что такое Site Sapiens
Yarvmi
Yarvmi
Howtousenetboss
Howtousenetboss
RDF and FOAF
RDF and FOAF
WebDAV as Web API
WebDAV as Web API
What is PHP Frameworks?
What is PHP Frameworks?
cblue@njug5
cblue@njug5
徐景春:企业级开源数据库灾备体系
徐景春:企业级开源数据库灾备体系
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
070829 intra-SNS case-study
070829 intra-SNS case-study
Ubuntu オススメ・アプリケーション
Ubuntu オススメ・アプリケーション
Php.On.Windows.Training.Chs
Php.On.Windows.Training.Chs
【13-B-3】 企業システムをマッシュアップ型に変えるには
【13-B-3】 企業システムをマッシュアップ型に変えるには
PHPによるユニットテスト入門
PHPによるユニットテスト入門
How to use Virtualization Technology in Hatena
How to use Virtualization Technology in Hatena
How to use Open Source in Software Development
How to use Open Source in Software Development
変わる時代、変わらぬ思い
変わる時代、変わらぬ思い
Destaque
Ruby Extended Library
Ruby Extended Library
Akio Tajima
Geojournalistik og nye fortælleformer
Geojournalistik og nye fortælleformer
Jesper Ishoj
Afrunding - Kortdage 2008
Afrunding - Kortdage 2008
Jesper Ishoj
Rubyize
Rubyize
Akio Tajima
Ruby – The Scripting Language
Ruby – The Scripting Language
Akio Tajima
Ruby on windows 2010
Ruby on windows 2010
Akio Tajima
Virtual Earth In The News
Virtual Earth In The News
Jesper Ishoj
DSLの過去と未来
DSLの過去と未来
Akio Tajima
Destaque
(8)
Ruby Extended Library
Ruby Extended Library
Geojournalistik og nye fortælleformer
Geojournalistik og nye fortælleformer
Afrunding - Kortdage 2008
Afrunding - Kortdage 2008
Rubyize
Rubyize
Ruby – The Scripting Language
Ruby – The Scripting Language
Ruby on windows 2010
Ruby on windows 2010
Virtual Earth In The News
Virtual Earth In The News
DSLの過去と未来
DSLの過去と未来
Mais de Akio Tajima
変身動物園.pptx
変身動物園.pptx
Akio Tajima
Rails,RSpec & Capybara で困った話
Rails,RSpec & Capybara で困った話
Akio Tajima
子供は本を読み、本は子供に読まれる
子供は本を読み、本は子供に読まれる
Akio Tajima
C# on lambda
C# on lambda
Akio Tajima
Nougakudo
Nougakudo
Akio Tajima
Decades around here
Decades around here
Akio Tajima
RJB - another choice for Ruby and Java interoperability
RJB - another choice for Ruby and Java interoperability
Akio Tajima
N Lize
N Lize
Akio Tajima
Mais de Akio Tajima
(8)
変身動物園.pptx
変身動物園.pptx
Rails,RSpec & Capybara で困った話
Rails,RSpec & Capybara で困った話
子供は本を読み、本は子供に読まれる
子供は本を読み、本は子供に読まれる
C# on lambda
C# on lambda
Nougakudo
Nougakudo
Decades around here
Decades around here
RJB - another choice for Ruby and Java interoperability
RJB - another choice for Ruby and Java interoperability
N Lize
N Lize
Asr
1.
Ruby on Windows
日本Rubyの会 arton(a.tajima)
2.
Agenda 種類 特徴
問題点 ASR Way
3.
種類
Cygwin MinGW MSWin32 VC6 VC7以降 BCC32
4.
Cygwin
GCC Cygwin 矛盾した自由(不自由の中の自由)
5.
MinGW
GCC + MSVCRT(VC++6用libcのようなもの) 不自由承知の自由というより無料
6.
MSWin32
Microsoft Visual C++ + MSVCRT ≦VC++5 問題外(osfhandleなど) VC6 事実上の標準 持っている人だけ ≧VC7 バージョンごとに異なるランタイム VC7のライセンス問題 VC8の実行権限がらみのいろいろ セキュア強迫症(良いか悪いかはともかく) 無料の開発環境(Visual Studio Express Edition)が入手可能
7.
Ruby処理系への影響(1)
無料な環境はフリーな環境 Cygwin → 野良ビルド MigGW → 野良ビルド MSWin32 ≧ 7 → 野良ビルド 跡地? ftp://ftp.ruby-lang.org/pub/ruby/binaries/
8.
Ruby処理系への影響(2) 有償な環境は誰かが作らなければ使えない Ruby-mswin32(う)さん提供
http://www.garbagecollect.jp/ruby/mswin32/ One-Click (なんでもあり) http://rubyinstaller.rubyforge.org/wiki/wiki.pl ASR (One-Clickではない。元はASR配布目的) http://arton.hp.infoseek.co.jp/indexj.html 標準的な拡張ライブラリの提供(zlib, open-ssl, socket, iconv) 要望があれば入れる(exerb)……たぶん おもしろそうなら入れる(StarRuby) Windowsの作法に準拠
9.
Windowsの特徴
短所 貧弱なシェル 空白入りディレクトリ名 非POSIX バージョンごとの標準の欠如のように見えるもの (APIを使えば標準フォルダは取れたりする) 16/32ハイブリッドの存在 長所 Win32API COM
10.
16/32ハイブリッドはなぜだめか
環境変数の容量制限 レジストリが中途半端 非同期IO(もともと無理) WinSock2も後付け IEコンポーネントが後付け Unicode APIのサポートが中途半端 Win32APIではなくWin32cAPI (cはcommonのc)
11.
問題点
空白入りディレクトリ パスセパレータ、ファイルセパレータ ドライブレター UAC forkの欠如 改行コードとBOM メモ帳のUTF-8のBOMは多分バグ的なものではないか?(Unicode のBOMを機械的にUTF-8にエンコードしたのかも。でも、もし自動判 別にしくじったらとんでもないことになりそうなので、あえて入れてい るのかも)
12.
Ruby 1.9
BOM付きutf-8のスクリプトを実行可能 STDIN.getsでもスレッドを実行可能
13.
空白入りディレクトリ(1)
Rubyの中では使わない。 PATH環境変数に含めても危険(__FILE__や$0に影響) systemの引数をクォートしないプログラム Rubyの中では空白を見せなければ良い ShortPathName
14.
空白入りディレクトリ(2) C:¥temp>dir /x ドライブ C
のボリューム ラベルは OS です ボリューム シリアル番号は AEAD-5363 です C:¥temp のディレクトリ 2008/10/19 01:16 <DIR> . 2008/10/19 01:16 <DIR> .. 2008/10/19 01:15 <DIR> TESTDI~1 test dir
15.
空白入りディレクトリ(3)
Rubyの中では使わない。 PATH環境変数に含めても危険(起動ディレクトリを参照 しておかしくなるものがあってもおかしくない) GetShortPathName API winpath.rb (ASR同梱) as is copyright Pathname#shortname
16.
ASR winpath.rb C:¥temp>ruby -rpathname
-e 'puts(Pathname.glob(quot;test*quot;)[0].realpath)' C:/temp/test dir C:¥temp>ruby -rwinpath -e 'puts(Pathname.glob(quot;test*quot;)[0].shortname)' C:/temp/TESTDI~1
17.
ASR ruby console
C:¥Program Filesにインストールしても問題なし (起動されたプログラムはC:¥PROGRA~1¥ruby-1.8¥bin or lib or share だと考える) C:¥temp%PATH% C:¥PROGRA~1¥ruby-1.8¥bin; c:¥program files¥imagemagick-(略) C:¥temp>ruby -e p($:) [“c:/progra~1/ruby-1.8/lib/ruby/site_ruby/1.8”, “c:/progra~1/ruby-1.8/(略) ただし、カレントディレクトリがC:¥Program Files¥ruby- 1.8¥bin だとダメ(CD優先)
18.
ASR ruby consoleの使い方
スタートメニューのアイコンをコピー 作業ディレクトリへペースト プロパティの「作業フォルダ」を空にする。 またはデスクトップのアイコンの「作業フォルダ」を自分の ホームに変える 以降は、そのアイコンをエクスプローラでクリック カレントディレクトリが異なるため、常にPATHに登録した ShortPathNameが使われる 団さんのアイディア
19.
UAC
ユーザーがシステムファイルを破壊できない仕組み。 cd /;rm –rf しても大丈夫なように cd ¥Windows; rmdir /s * しても大丈夫(たぶん) Program Files書き込み禁止 /usr/binが書き込み禁止と同じこと。 が、sudoが無い。gemのインストールをどうしろと?
20.
ASR suexec.rb
ShellExecute API suexec.rb fair licence cstructが必要(dl調べるのが面倒だったので) SuExec.exec(prog, *args) sudo C:¥>ruby -rsuexec -e 'SuExec.exec(quot;notepad.exequot;)'
21.
ASR ruby console(Administrator)
つまり su gemの実行 $: への書き込み、削除など 普通に C:¥Windows¥System32¥drivers¥etc とかをいじ るのにも便利
22.
cstruct
もともとは、http.sys を使うため freeすべきメモリーブロックをアロケーションして返してくる→ど うしろと なんか面倒になって中断 実装も中途半端 でも、suexecの役には立っている
23.
cstruct (suexec) ShellExecuteInfoA =
C::Struct.define { DWORD :cbSize; ULONG :fMask; HANDLE :hwnd; PCSTRA :lpVerb; (略) } def self.exec(prog, *params) shellExecuteExA(ShellExecuteInfoA.new( ShellExecuteInfoA.size, 0, 0, 'runas', prog, params.join(' '), '', 1, 0, 0, nil, 0, 0, 0, 0).serialize)
24.
ASR おまけライブラリ
Rjb http://rubyforge.org/projects/rjb/ Ruby-Java Bridge lhalib http://arton.no-ip.info/collabo/backyard/?LhaLib LHa for Unixの単純移植 HeapShow RubyKaigi 2008デモ用
25.
Rjb
http://rjb.rubyforge.org/svn/ Ruby Java Bridge OS X Win32 Linux スレッディング周りの制限
26.
lhalib
http://arton.no-ip.info/collabo/backyard/?LhaLib require „lhalib‟ LhaLib.x „arc.lzh‟ #=> arc.lzhの内容を展開 LhaLib.x(„arc.lzh‟) do |info| puts(“#{info[:name]} extracted”) end Lhaは役目を果たした。過去のアーカイブをxだけできれ ば良い。という発想からxメソッドだけ実装。
27.
HeapShow
http://svn.arton.no-ip.info/raa/trunk/HeapShow/ 適当にheapポインタテーブルを探しているので、途中で 死ぬことが多すぎる。トイプログラムなので真剣に直す 気にはならなかったり おもしろいことはおもしろい bitで読んだApple LISPの記事が元ネタ ruby -rheapshow -e quot;s='';(1..1000000).each{|i|s<<i.to_s}“ 最後まで走ったら、その日はラッキー CreapShow ロメロ+キングのおばか映画
28.
Win32固有のライブラリ
Win32OLE (助田氏) …… Ruby標準ライブラリ SWin(vruby)(nyasu氏) Win32API (Moonwolf氏 ?) uconv (よしだむ氏) StarRuby (星氏) exerb (Yuya氏)
29.
Win32OLE
RubyからCOMを呼び出す require „win32ole‟ x = WIN32OLE.new(“com.object”) x.foo
30.
ActiveScriptRuby
COMクライアントが、IActiveScriptインターフェイスを呼び 出す。 ActiveScriptRubyが、RubyをIActiveScriptサーバとして登 録する <script language=“RubyScript”> alert(“hello world”) </script> COMクライアント……HTA、VB+ScriptControl、WSH ……
31.
ASR サンプル C:¥Program Files¥ruby-1.8¥samples
biorhythm.hta バイオリズム表示のHTA ruby.html 動かないデモ htaディレクトリ Windows2000マガジンに掲載したHTAなど rubyize wscを利用してオブジェクトをRuby化 vb VBのフォームをCとV、RubyをMとしたMVC
32.
まとめ ASRを使おう
33.
Q&A
Baixar agora