Mruby VM ポーティング手順マニュアル Mrubyポーティング

Total Page:16

File Type:pdf, Size:1020Kb

Mruby VM ポーティング手順マニュアル Mrubyポーティング mruby VM ポーティング手順マニュアル mrubyポーティング mrubyポーティングとは mruby を特定のシステム上で動作させるためには、 mruby の移植作業 (修正および再構築) が必要となる。この移植作業がポーティングである。 mrubyのポーティングでは、mruby の実⾏基盤である mruby仮想マシン (mruby VM) を 実⾏環境で動作させることが必要となる。 本稿では、mrubyをQSIPボードで動作させるために実施したポーティング作業の概要を示す。 1 mrubyポーティングの概要 mruby ポーティングの概要 QSIPボードにmrubyをポーティングする手順を以下に示す。 1. mruby ビルド環境の構築 mrubyをビルドするための開発環境を構築する。 本稿ではWindows上にmrubyビルド環境を構築した。 2. QSIP向けのmrubyクロスビルド mrubyをQSIPボード用にクロスコンパイルし、mrubyライブラリ (libmruby.a) を作成 する。 本稿では、 IAR Embedded Workbench for ARM にmruby クロスビルド環境を構 築した。 3. QSIP アプリケーションへの mruby 組み込み QSIPアプリケーションにmruby VM を呼び出す処理 (mruby API) を追加し、 mrubyライブラリ(libmruby.a)をリンクする。 4. QSIP用ライブラリの作成 QSIP ボードに搭載されているデバイスを制御するためのクラスライブラリを作成し、 mruby VMに組み込むことで、mrubyアプリケーションからQSIP搭載デバイスの制御を 可能とする。 5. 2 mrubyビルド環境の構築 Fujitsu3 Kyushu Network Technologies CONFIDENTIAL 環境構築 ターゲット環境仕様 mruby ポーティングのターゲット環境(QSIP ボード )の仕様を以下に示す。 メイン MPU プロセッサ MK24FN1M0VLL12 ROM 1MB RAM 256KB サブサブサブ MPU プロセッサ MKL93Z32VFK4 ROM 32KB RAM 2KB デバイス 外部フラシュメモリ 32MB センサ 磁力、電圧検出、光、温湿度、静電容量、ジャイロ インターフェイス RS232C 、JTAG 4 環境構築 開発環境仕様 mruby ポーティング作業に使用した環境を以下に示す。 PCPCPC モデル Fujitsu FMVNSS8AE OS Windows 7 Professional (32bit) プロセッサ Intel® Core™ is-3340M CPU (2.7GHz) RAM 4GB ソフトウェア Cygwin 2.6.1-1 GNU Bison 2.4.1 Ruby 2.3.3 -p222 EWARM 7.80.4 5 環境構築 Windowsビルド環境構築 Windows 上に mruby ビルド環境を構築する ① C言語ビルド環境(Cygwin)のセットアップ ② Ruby のセットアップ ③ パーサージェネレータ(GNU Bison)のセットアップ ④ mrubyソースコードの入手・mrubyのビルド ⑤ 動作確認 6 Windows ビルド環境 ①ターミナル Cygwin ダウンロード編 公式サイトよりインストール •http ://cygwin.com/ クリックして ダウンロード 参考URL •http://musashi.osdn.jp/cygwin/cygwin.html 7 Windows ビルド環境 ①ターミナル Cygwin インストール編 任意のフォルダを 指定 末尾 .jp を選択 任意のフォルダを 指定 (次スライドに続く) 8 Windows ビルド環境 ①ターミナル Cygwin インストール編 “Category” の “Devel ” を Install にする “binutils” と “bison”、”gcc-core” を 最新バージョン にする 9 Windows ビルド環境 ②Ruby Ruby ダウンロード編 公式サイトよりダウンロード •https://rubyinstaller.org/ クリックして ダウンロード 参考URL •http://www.rubylife.jp/install/install/index1.html 10 Windows ビルド環境 ②Ruby Ruby インストール編 任意のフォルダを 指定 11 Windows ビルド環境 ③パーサー bison ダウンロード編 公式サイトよりダウンロード •http:// gnuwin32.sourceforge.net/packages/bison.htm クリックして ダウンロード 参考URL •http://ameblo.jp/oregano-blog/entry-10400001478.htm 12 Windows ビルド環境 ③パーサー bison インストール編 任意のフォルダを 指定 13 Windows ビルド環境 ④ビルド mruby ソースコード ダウンロード編 GitHub から mruby の最新ソースコードをダウンロード • https://github.com/mruby/mruby クリックして ダウンロード 取得リビジョン c48aef0b653ba83452c97b1d1017869de2a846b9 参考URL http://qiita.com/ko2a/items/b29acc616f67738465ea 14 Windows ビルド環境 ④ビルド mruby ソースコード ビルド編 ダウンロードした zip ファイル(mruby --master ) を 任意のディレクトリ に解凍する。 Cygwin を起動し、 解凍先のディレクトリ に移動する。 15 Windows ビルド環境 ④ビルド mruby ソースコード ビルド編 make コマンドを⼊⼒する ⇒ 下図の画面が表示されたらビルド成功。 16 Windows ビルド環境 ⑤動作確認 Hello, mruby world !! メイク編 mrubyソース(mrubymruby--mastermaster ) の binbinフォルダフォルダ に 「 Hello.rb 」 を作成する。 ソースコード "Hello.rb" puts “Hello, mruby world !!” 17 Windows ビルド環境 ⑤動作確認 Hello, mruby world !! 動作確認編 mrubymruby--master/binmaster/binディレクトリディレクトリ に移動して、 ././mrubymruby HHello.rbello.rb コマンドを⼊⼒する。 ⇒ Hello, mruby world !! と表示されたら成功。 18 QSIP向けのmrubyクロスビルド Fujitsu19 Kyushu Network Technologies CONFIDENTIAL 環境構築 mrubyクロスビルド QSIP 向けクロスビルド環境 IAR Embedded Workbench for ARM を使用して、 mrubyをQSIP向けにクロスビルドする。 ① IAR Embedded Workbench for ARM (EWARM) のセットアップ ② mruby のクロスビルド (libmruby.a の作成) 20 mrubyポーティング ①EWARMインストール IAR Embedded Workbench for ARM ダウンロード編 公式サイトより無償評価版(30日期間限定版)をダウンロード •https://www.iar.com/jp/ クリックして ダウンロード セットアップ手順については ここ を参照してください 21 mrubyポーティング ②ビルド クロスコンパイル libmruby.a 作成編 mrubyソース(mrubymruby--mastermaster ) 内の build_config.rb を編集し、 再度 make すると 「 QSIP 」フォルダ配下に libmruby.a が生成される MRuby::CrossBuild.new('QSIP') do |conf| toolchain :gcc conf.linker.flags << "-m32" conf.cc do |cc| cc.command='C:/Devz/ARM/LAUNCHPAD/bin/arm-none-eabi-gcc' cc.flags = [] cc.flags << '-mcpu=cortex-m4 -march=armv7e-m -mtune=cortex-m4' cc.flags << '-mthumb -mlittle-endian -mno-unaligned-access' cc.flags << '-mapcs-frame -mno-sched-prolog -mfpu=fpv4-sp-d16 -mfloat-abi=soft ' cc.flags << '-std=gnu99 ' cc.flags << ' -fno -strict -aliasing -fsigned -char' cc.flags << '-ffunction-sections -fdata-sections ' cc.flags << '-fno-schedule-insns2 ' cc.flags << '--param max-inline-insns-single=1000 ' cc.flags << '-nostartfiles -fno-common ' cc.flags << '-fno-hosted' cc.flags << '-gdwarf-2 -O0 -flto-partition=none -fipa-sra' cc.flags << %w(-DMRB_USE_FLOAT) cc.defines << %w(MRB_HEAP_PAGE_SIZE=8) cc.defines << %(MRB_IREP_ARRAY_INIT_SIZE=128u) cc.defines << %w(MRB_USE_IV_SEGLIST) cc.defines << %w(KHASH_DEFAULT_SIZE=8) cc.defines << %w(MRB_STR_BUF_MIN_SIZE=20) #cc.defines << %w(DISABLE_STDIO) #if you dont need cc.defines << %w(MRB_GC_STRESS) #no document cc.defines << %w(POOL_PAGE_SIZE=256) #effective only for use with mruby-eval end conf.archiver do |ar| ar.command = ‘C:/Devz/ARM/LAUNCHPAD/bin/arm-none-eabi-ar’ end conf.bins = [] conf.build_mrbtest_lib_only # conf.gem :core => "mruby-print" conf.gem :core => "mruby -math“ # conf.gem :core => "mruby-enum-ext“ # conf.gem '../mruby-direct‘ end 22 mrubyポーティング ②ビルド クロスコンパイル libmruby.a 作成編 mrubyソース(mrubymruby--mastermaster ) 内の build_config.rb を編集し、 再度 make すると 「 QSIP 」フォルダ配下に libmruby.a が生成される build_config.rb MRuby::Build.new do |conf| # end # load specific toolchain settings # mrbc settings # Gets set by the VS command prompts. # conf.mrbc do |mrbc| if ENV['VisualStudioVersion'] || ENV['VSINSTALLDIR'] # mrbc.compile_options = "-g -B%{funcname} -o-" # The -g toolchain :visualcpp option is required for line numbers else # end toolchain :gcc end # Linker settings # conf.linker do |linker| enable_debug # linker.command = ENV['LD'] || 'gcc' # linker.flags = [ENV['LDFLAGS'] || []] # Use mrbgems # linker.flags_before_libraries = [] # conf.gem 'examples/mrbgems/ruby_extension_example' # linker.libraries = %w() # conf.gem 'examples/mrbgems/c_extension_example' do |g| # linker.flags_after_libraries = [] # g.cc.flags << '-g' # append cflags in this gem # linker.library_paths = [] # end # linker.option_library = ' -l%s ' # conf.gem 'examples/mrbgems/c_and_ruby_extension_example' # linker.option_library_path = '-L%s' # conf.gem :github => 'masuidrive/mrbgems- # linker.link_options = "%{flags} - example', :checksum_hash => o %{outfile} %{objs} %{libs}" '76518e8aecd131d047378448ac8055fa29d974a9' # end # conf.gem :git => '[email protected]:masuidrive/mrbgems- example.git', :branch => 'master', :options => '-v' # Archiver settings # conf.archiver do | archiver | # include the default GEMs # archiver.command = ENV['AR'] || 'ar' conf.gembox 'default' # archiver.archive_options = 'rs %{outfile} %{objs}' # C compiler settings # end # conf.cc do |cc| # cc.command = ENV['CC'] || 'gcc' # Parser generator settings # cc.flags = [ENV['CFLAGS'] || %w()] # conf.yacc do |yacc| # cc.include_paths = ["#{root}/include"] # yacc.command = ENV['YACC'] || 'bison' # cc.defines = %w(DISABLE_GEMS) # yacc.compile_options = '-o %{outfile} %{infile}' # cc.option_include_path = '-I%s' # end # cc.option_define = '-D%s' # cc.compile_options = "%{flags} -MMD -o %{outfile} - # gperf settings c %{infile}" # conf.gperf do |gperf| 23 mrubyポーティング ②ビルド build_config.rb (続き ) # gperf.command = 'gperf' # gperf.compile_options = '-L ANSI-C -C -p -j1 -i 1 -g -o -t - MRuby::Build.new('test') do |conf| N mrb_reserved_word -k"1,3,$" %{infile} > %{outfile}' # Gets set by the VS command prompts. # end if ENV[' VisualStudioVersion '] || ENV['VSINSTALLDIR'] toolchain :visualcpp # file extensions else # conf.exts do |exts| toolchain :gcc # exts.object = '.o' end # exts.executable = '' # '.exe' if Windows # exts.library = '.a' enable_debug # end conf.enable_bintest conf.enable_test # file separetor # conf.file_separator = '/' conf.gembox 'default' end # bintest # conf.enable_bintest MRuby::Build.new('bench') do |conf| end # Gets set by the VS command prompts. if ENV['VisualStudioVersion'] || ENV['VSINSTALLDIR'] MRuby::Build.new('host-debug') do |conf| toolchain :visualcpp # load specific toolchain settings else toolchain :gcc # Gets set by the VS command prompts. conf.cc.flags << '-O3' if ENV['VisualStudioVersion'] || ENV['VSINSTALLDIR'] end toolchain :visualcpp else conf.gembox 'default' toolchain :gcc end end # Define cross build settings enable_debug # MRuby::CrossBuild.new('32bit') do |conf| # toolchain :gcc # include the default GEMs # conf.gembox 'default' # conf.cc.flags << "-m32" # conf.linker.flags << "-m32" # C compiler settings # conf.cc.defines = %w(MRB_ENABLE_DEBUG_HOOK) # conf.build_mrbtest_lib_only # # Generate mruby debugger command (require mruby-eval) # conf.gem 'examples/mrbgems/c_and_ruby_extension_example' conf.gem :core => "mruby-bin-debugger" # # conf.test_runner.command = 'env' # bintest # # conf.enable_bintest # end end 24 mrubyポーティング ②ビルド build_config.rb (続き ) ※ 赤字は追加コード #add QNET MRuby::CrossBuild.new('QSIP') do |conf| toolchain :gcc conf.linker.flags << "-m32" conf.cc do |cc| cc.command='C:/Devz/ARM/LAUNCHPAD/bin/arm-none-eabi-gcc' cc.flags = [] cc.flags << '-mcpu=cortex-m4 -march=armv7e-m -mtune=cortex- m4' cc.flags << '-mthumb -mlittle-endian -mno-unaligned-access' cc.flags << '-mapcs-frame -mno-sched-prolog -mfpu=fpv4-sp-d16 -mfloat-abi=soft ' cc.flags << '-std=gnu99 ' cc.flags << '-fno-strict-aliasing -fsigned-char' cc.flags << '-ffunction-sections -fdata-sections ' cc.flags << ' -fno -schedule -insns2 ' cc.flags << '--param max-inline-insns-single=1000 ' cc.flags << '-nostartfiles -fno-common ' cc.flags << '-fno-hosted' cc.flags << '-gdwarf-2 -O0 -flto-partition=none -fipa-sra' cc.flags << %w(-DMRB_USE_FLOAT) cc.defines << %w(MRB_HEAP_PAGE_SIZE=8) cc.defines << %(MRB_IREP_ARRAY_INIT_SIZE=128u) cc.defines << %w(MRB_USE_IV_SEGLIST) cc.defines
Recommended publications
  • TECHNICAL STANDARDS a Standards Validation Committee of Industry Representatives and Educators Reviewed and Updated These Standards on December 11, 2017
    SOFTWARE AND APP DESIGN 15.1200.40 TECHNICAL STANDARDS A Standards Validation Committee of industry representatives and educators reviewed and updated these standards on December 11, 2017. Completion of the program prepares students to meet the requirements of one or more industry certification: Cybersecurity Fundamentals Certificate, Oracle Certified Associate, Java SE 8 Programmer, Certified Internet Web (CIW) - JavaScript Specialist, CompTIA A+, CompTIA IT Fundamentals, CSX Cybersecurity Fundamentals Certificate, and Microsoft Technology Associate (MTA). The Arizona Career and Technical Education Quality Commission, the validating entity for the Arizona Skills Standards Assessment System, endorsed these standards on January 25, 2018. Note: Arizona’s Professional Skills are taught as an integral part of the Software and App Design program. The Technical Skills Assessment for Software and App Design is available SY2020-2021. Note: In this document i.e. explains or clarifies the content and e.g. provides examples of the content that must be taught. STANDARD 1.0 APPLY PROBLEM-SOLVING AND CRITICAL THINKING SKILLS 1.1 Establish objectives and outcomes for a task 1.2 Explain the process of decomposing a large programming problem into smaller, more manageable procedures 1.3 Explain “visualizing” as a problem-solving technique prior to writing code 1.4 Describe problem-solving and troubleshooting strategies applicable to software development STANDARD 2.0 RECOGNIZE SECURITY ISSUES 2.1 Identify common computer threats (e.g., viruses, phishing,
    [Show full text]
  • User Guide for HCR Estimator 2.0: Software to Calculate Cost and Revenue Thresholds for Harvesting Small-Diameter Ponderosa Pine
    United States Department of Agriculture User Guide for HCR Forest Service Estimator 2.0: Software Pacific Northwest Research Station to Calculate Cost and General Technical Report PNW-GTR-748 Revenue Thresholds April 2008 for Harvesting Small- Diameter Ponderosa Pine Dennis R. Becker, Debra Larson, Eini C. Lowell, and Robert B. Rummer The Forest Service of the U.S. Department of Agriculture is dedicated to the principle of multiple use management of the Nation’s forest resources for sustained yields of wood, water, forage, wildlife, and recreation. Through forestry research, cooperation with the States and private forest owners, and management of the National Forests and National Grasslands, it strives—as directed by Congress—to provide increasingly greater service to a growing Nation. The U.S. Department of Agriculture (USDA) prohibits discrimination in all its programs and activities on the basis of race, color, national origin, age, disability, and where applicable, sex, marital status, familial status, parental status, religion, sexual orientation, genetic information, political beliefs, reprisal, or because all or part of an individual’s income is derived from any public assistance program. (Not all prohibited bases apply to all programs.) Persons with disabilities who require alternative means for communication of program information (Braille, large print, audiotape, etc.) should contact USDA’s TARGET Center at (202) 720-2600 (voice and TDD). To file a complaint of discrimination, write USDA, Director, Office of Civil Rights, 1400 Independence Avenue, SW, Washington, DC 20250-9410 or call (800) 795-3272 (voice) or (202) 720-6382 (TDD). USDA is an equal opportunity provider and employer. Authors Dennis R.
    [Show full text]
  • Ola Bini Computational Metalinguist [email protected] 698E 2885 C1DE 74E3 2CD5 03AD 295C 7469 84AF 7F0C
    JRuby For The Win Ola Bini computational metalinguist [email protected] http://olabini.com/blog 698E 2885 C1DE 74E3 2CD5 03AD 295C 7469 84AF 7F0C onsdag 12 juni 13 Logistics and Demographics onsdag 12 juni 13 LAST MINUTE DEMO onsdag 12 juni 13 JRuby Implementation of the Ruby language Java 1.6+ 1.8.7 and 1.9.3 compatible (experimental 2.0 support) Open Source Created 2001 Embraces testing Current version: 1.7.4 Support from EngineYard, RedHat & ThoughtWorks onsdag 12 juni 13 Why JRuby? Threading Unicode Performance Memory Explicit extension API and OO internals Libraries and legacy systems Politics onsdag 12 juni 13 InvokeDynamic onsdag 12 juni 13 JRuby Differences Most compatible alternative implementation Native threads vs Green threads No C extensions (well, some) No continuations No fork ObjectSpace disabled by default onsdag 12 juni 13 Simple JRuby onsdag 12 juni 13 Java integration Java types == Ruby types Call methods, construct instances Static generation of classes camelCase or snake_case .getFoo(), setFoo(v) becomes .foo and .foo = v Interfaces can be implemented Classes can be inherited from Implicit closure conversion Extra added features to Rubyfy Java onsdag 12 juni 13 Ant+Rake onsdag 12 juni 13 Clojure STM onsdag 12 juni 13 Web onsdag 12 juni 13 Rails onsdag 12 juni 13 Sinatra onsdag 12 juni 13 Trinidad onsdag 12 juni 13 Swing Swing API == large and complex Ruby magic simplifies most of the tricky bits Java is a very verbose language Ruby makes Swing fun (more fun at least) No consistent cross-platform GUI library for Ruby
    [Show full text]
  • Rubinius Rubini Us Rubini.Us Rubini.Us Rubini.Us Rubinius History and Design Goals
    Rubinius Rubini us Rubini.us rubini.us http:// rubini.us Rubinius http://godfat.org/slide/2008-12-21-rubinius.pdf History and Design Goals Architecture and Object Model History and Design Goals Architecture and Object Model Evan Phoenix February of 2006 RubySpec MSpec Engine Yard C VM Shotgun C VM Shotgun C++ VM CxxTest LLVM History and Design Goals Architecture and Object Model Reliable, Rock Solid Code Reliable, Rock Solid Code Full Test Coverage 健康 Clean, Readable Code Clean, Readable Code Little Lines in Each File Clean, Readable Code Macro, Code Generator, Rake Task Clean, Readable Code CMake Clean, Readable Code CMake Clean, Readable Code C++ Object to Ruby Object 1 to 1 Mapping 清新 健康 清新 Modern Techniques Modern Techniques Pluggable Garbage Collectors Modern Techniques Pluggable Garbage Collectors • Stop-and-Copy Modern Techniques Pluggable Garbage Collectors • Stop-and-Copy • Mark-and-Sweep Modern Techniques Optimizers Modern Techniques Git, Rake, LLVM Squeak the Smalltalk-80 Implementation Squeak Slang Squeak • Alan Kay • Dan Ingalls • Adele Goldberg Smalltalk Xerox PARC Smalltalk Object-Oriented (differ from Simula and C++) Smalltalk GUI Smalltalk MVC History and Design Goals Architecture and Object Model Real Machine C++ Virtual Machine Real Machine kernel/bootstrap C++ Virtual Machine Real Machine kernel/platform kernel/bootstrap C++ Virtual Machine Real Machine kernel/common kernel/platform kernel/bootstrap C++ Virtual Machine Real Machine kernel/delta kernel/common kernel/platform kernel/bootstrap C++ Virtual Machine Real
    [Show full text]
  • Ruby on Rails
    Ruby.learn{ |stuff| } ● What is Ruby? ● What features make it interesting to me (and maybe you)? ● A quick, idiosyncratic tour of the Ruby ecosphere. Tuesday Software Lunch Talk: March 4, 2008 What is it? ● a dynamic, object-oriented, open source programming language... ● with a uniquely (but not too uniquely), expressive syntax ● dynamically or “duck” typed ● influenced by Perl, Smalltalk, Eiffel, Ada and Lisp ● has aspects of functional and imperative programming styles History ● created by Yukihiro “Matz” Matsumoto on Feb 24 1993, released to public in 1995 ● “Ruby” coined in comparison to “Perl” Philosophy (the “Ruby Way”) ● emphasize programmer needs over computer needs ● encourage good design, good APIs ● Principle of Least Surprise (POLS) – the language should behave in such a way as to minimize confusion for experienced users ● “Everything should be a simple as possible, but no simpler.” - Einstein ● orthogonality ● change at runtime is not to be feared Interesting Stuff... ● Is Not a Ruby tutorial – http://tryruby.hobix.com/ – Programming Ruby: The Pragmatic Programmer's Guide – our just google it – you want something totally different? ● http://poignantguide.net/ruby/ ● Is what I find interesting/different/well done about Ruby. Everything's an Object ● no exceptions Falsiness ● only false and nil are falsey. Not 0. Symbols ● labels ● lightweight strings with no behaviour ● often used as hash keys Blocks ● another name for a Ruby block is a “closure” ● clo-sure [kloh-zher] – noun. A function that is evaluated in an environment containing one or more bound variables. Procs ● anonymous subroutines or closures with a life of their own Adding Methods to Classes ● You can add methods to an object at runtime in several ways..
    [Show full text]
  • Conflict Resolution Via Containerless Filesystem Virtualization
    Dependency Heaven: Conflict Resolution via Containerless Filesystem Virtualization Anonymous Author(s) Abstract previous installation, effectively preventing concurrent ver- Resolving dependency versioning conflicts in applications sions of that library from coexisting. The same is true for is a long-standing problem in software development and packages whose executable names does not change across deployment. Containers have become a popular way to ad- releases; unless the user renames the existing executable dress this problem, allowing programs to be distributed in a files prior to the installation of a new version it is notpos- portable fashion and to run them under strict security con- sible to keep both installations around. The problem with straints. Due to the popularity of this approach, its use has that approach is that it breaks package managers, as the re- started to extend beyond its original aim, with users often named files will not be featured in the package manager’s creating containers bundling entire Linux distributions to database and, consequently, will not be tracked anymore. run mundane executables, incurring hidden performance Further, unless executables depending on the renamed files and maintenance costs. This paper presents an alternative are modified to reflect their new path, users need todefine approach to the problem of versioning resolution applied to which executable to activate at a given time, usually through locally-installed applications, through a virtualization tool tricky management of symbolic
    [Show full text]
  • Jruby: Enterprise
    JRuby Enterprise 2.0 James Crisp Josh Price ThoughtWorks Agenda • What are Ruby and JRuby? • Benefits and Drawbacks • Where to use? • Demos • Case studies Ruby • Created by Yukihiro Matsumoto in 1993 • Open Source • Vibrant community • Dynamically typed • Pure OO • Syntactically flexible for DSLs • Advanced meta programming Ruby Runtimes • MRI Matz’s Ruby Interpreter in C (Ruby 1.8.6) • YARV Yet another Ruby VM (Ruby 1.9) • IronRuby .NET, DLR (alpha) • Rubinius Alternative VM • xRuby Compiler in Java • JRuby on the JVM Java platform Today’s Java Platform JRuby • Java implementation of Ruby • Open Source • Full time developers from Sun and ThoughtWorks • Charles Nutter, Thomas Enebo, Ola Bini et al • Allows Ruby to call Java code and vice versa Timeline • Started around 2001 by Jan Arne Petersen • JRuby 1.0 released in June 2007 • JRuby 1.1 RC2 just released • 1.1 release out soon Why JRuby? • Ruby / Rails productivity & tools • Java libraries and interoperability • Run on any OS / JVM / App server • Leverage existing infrastructure & ops skills • Politics – it's just a WAR JRuby advantages • Native vs Green Threading • World class garbage collection • Unicode • Runs the same on all platforms • JIT & AOT compilation JRuby disadvantages • Large memory footprint • Longer startup times • No native C extensions • Not technically complete Ruby Demo A Simple Ruby Class class RubyDemo < Demo def say_hello 5.times { puts “Hi from Ruby!” } end def greet(guests) guests.collect { |g| “Welcome #{g.name}” } end end >> RubyDemo.new.greet(josh, james)
    [Show full text]
  • Safety of High Speed Magnetic Levitation Transportation Systems, Titled, Review of German Safety Requirements for the Transrapid System
    PB91129684 Safety of High Speed U.S. Department Magnetic Levitation of Transportation Federal Railroad Transportation Systems Administration Office of Research and Development Preliminary Safety Review of Washington, DC 20590 Transrapid Maglev System Robert M. Dorer William T. Hathaway REPRODUCED BY U.S. DEPARTMENT OF COMMERCE NATIONAL TECHNICAL INFORMATION SERVICE SPRINGFIELD, VA 22161 NOTICE This document is disseminated under the sponsorship of the Department of Transportation in the interest of information exchange. The United States Government assumes no liability for its contents or use thereof. NOTICE The United States Government does not endorse products or manufacturers. Trade or manufacturers' names appear herein solely because they are considered essential to the object of this report. Technical Repart Dacumentation Poge 1. Report No. , ,.._··-·----• ,1.,,.,.•••ion No. 3. Recipient' 1 C•tolo9 No. DOT/FRA/ORD-90/09 PB91-129684 •• Title ond Subtitl• 5. Ret1ort Cate Safety of High Speed Magnetic Levitation November 1990 Transportation Systems: Preliminary Safety 6. Performing Orgoni 1ation Code Review of the Transrapid Maglev System DTS-73 B. P•rfonnint OrgOftitatfon R•port No. 7. Author1 a) DOT-VNTSC-FRA-90-3 Robert M. Dorer and William T. Hathaway 9. fi••&'"'"~t Oll'i"l:'zat;ae_ N~of!ld Addrosa t t. 10. Wark Un;t No. (TRAIS) . p men o ranspor a 1on RR193/Rl019 Research and Special Programs Administration l I. Contract or Grant No. John A. Volpe National Transportation Systems Center Cambridge, MA 02142 13. Type of Re,ort encl Period Co•ered 12. Sponsoring Agency Nome and Addre11 Interim Report U.S. Department of Transportation Sept.
    [Show full text]
  • Bundle Exec Rake Db Schema Load
    Bundle Exec Rake Db Schema Load Is Tracey always implacable and linty when bobtail some conchoids very tout and mosaically? Sortable Durward outcrops some geum after genial Delbert depolymerize east. Transcontinental Marv usually domiciliated some cabbagetown or outstared distractively. The gem for instance, when it admins to grant administrative priviledges to wait for virtual machines Connect and load the db too long as more details and enterprise solutions. Migrations run bundle exec rake db schema load reference data lake. Migrations lets you the first, of all of rails to guarantee referential integrity and easily. Note that you should write schema version, bundle exec rake db schema load this db without the bundle exec to really appreciate your rspec, this address on betydb rails application for discovering, so any error. Cron job scheduler for. We will now and rake task name changed a database! Commands commonly used to comment: you require our application in order specified, bundle exec rake db schema load schama for. Which you include a rake shines is an issue in my usual plugin, bundle exec rake db schema load schama for? Save my case on ci dependencies and schema over, bundle exec rake db schema load this db before running the bundle exec to work in the branch to slack or when i think i have. What caused only needed, just ran into an initial step that is run before connecting and security, and inaccessible from all js on. Share with a rake would better way you can be the bundle exec to create_join_table, bundle exec rake db schema load fixtures where that is to read the original changes later on.
    [Show full text]
  • Ruby on Rails Django
    glossarytech.com Ruby A Redis -backed library for creating background jobs, placing those jobs Resque on multiple queues, and processing them later. Active A Ruby library for working with Relational SQL Databases, like MySQL Record and Postgres . It provides an Object Relational Mapping . A security scanner. Checks Ruby on Rails applications for security Brakeman vulnerabilities. Looks at the source code of an application. Ensures Ruby applications run the same code on every machine. Tracks Bundler and installs the exact gems and versions that are needed. Remote server automation and deployment tool written in Ruby . Capistrano C apistrano automates the process of making a new version of an application available on one or more web servers. Automation library that provides a means for controlling a browser. Capybara S imulates scenarios for user stories and automates web application testing for behavior-driven software development. A dynamic, functional language designed for building scalable and maintainable applications. Leverages the Erlang VM, known for the Crystal r unning low-latency, distributed and fault-tolerant systems, while also being successfully used in web development and the embedded software domain. Embedded Ruby. A templating language that enables to embed Ruby ERB c ode in an HTML document, similar to ASP, JSP and PHP and other server-side scripting languages. Fast, simple event-processing library for Ruby programs. The most EventMachi p opular library for concurrent computing in the Ruby programming ne language. A software library for the Ruby . Provides factory methods to create test FactoryBot fixtures for automated software testing. REST -like API micro-framework for Ruby .
    [Show full text]
  • Intellectual Property Exclusion List.Pages
    Intellectual Property Exclusion List Last Updated:Apr 9, 2020 Groups Projects Unofficial Projects: enterprise geera rails I have 3+ pages of exercism hoe-git rake unreleased software minitest isolate rdoc that I’m not going to rdoc milton rubinius list. I will send you a SeaRbSg minitest-rails ruby directory listing upon seattlerb nasa.rb rubyforge request. sparklemotion nokogiri rubygems warningfree orphans RubyTests chef(*) phuby sicp All of these lists inspec(*) psrb transmogrify monotonically increase with time. (*) previous employers racc Official Projects: 99 github-interview minitest-server rubygems-bug workshops Algometer githubscore minitest-speed rubygems-checkcert workshop_markov_tex AlgometerX graph minitest-sprint rubygems-cleanroom t_generator asteroids graphics minitest-trump rubygems-sandbox x-common autotest graphics minitest-unordered rubygems-sing xracket autotest-rails heckle minitest_bench rubyholic xruby bastard_tetris hoe minitest_tu_shim RubyInline xrust battleship-rust hoe-git newri RubyInlineFortran yaccpuke benchmark-ips-racket hoe-seattlerb noms ruby_parser yoda bfts homebrew-mailman oedipus_lex ruby_parser ZenGraph box_layout hotel ograph ruby_parser-legacy ZenHacks braincandy icanhasaudio ohmygems ruby_to_c ZenLibrary brew-cook image_science omnifocus Satori zenprofile change_class imap_processor omnifocus-bugzilla schemers ZenTest check-sexp-equal Interpreters omnifocus-github scripts ZenWeb cocor lambda omnifocus-redmine seattlerailsbridge zenweb-template cover lambda.old omnifocus-rt seattlerb zero2rails
    [Show full text]
  • Ansible Documentation Release 1.7
    Ansible Documentation Release 1.7 Ansible July 14, 2014 CONTENTS i ii CHAPTER ONE ABOUT ANSIBLE Welcome to the Ansible documentation! Ansible is an IT automation tool. It can configure systems, deploy software, and orchestrate more advanced IT tasks such as continuous deployments or zero downtime rolling updates. Ansible’s goals are foremost those of simplicity and maximum ease of use. It also has a strong focus on security and reliability, featuring a minimum of moving parts, usage of OpenSSH for transport (with an accelerated socket mode and pull modes as alternatives), and a language that is designed around auditability by humans – even those not familiar with the program. We believe simplicity is relevant to all sizes of environments and design for busy users of all types – whether this means developers, sysadmins, release engineers, IT managers, and everywhere in between. Ansible is appropriate for managing small setups with a handful of instances as well as enterprise environments with many thousands. Ansible manages machines in an agentless manner. There is never a question of how to upgrade remote daemons or the problem of not being able to manage systems because daemons are uninstalled. As OpenSSH is one of the most peer reviewed open source components, the security exposure of using the tool is greatly reduced. Ansible is decentralized – it relies on your existing OS credentials to control access to remote machines; if needed it can easily connect with Kerberos, LDAP, and other centralized authentication management systems. This documentation covers the current released version of Ansible (1.5.3) and also some development version features (1.6).
    [Show full text]