Jruby: Not Just Another Ruby Impl Charles Nutter Thomas Enebo
Total Page:16
File Type:pdf, Size:1020Kb
Load more
Recommended publications
-
Scala: a Functional, Object-Oriented Language COEN 171 Darren Atkinson What Is Scala? Scala Stands for Scalable Language It Was Created in 2004 by Martin Odersky
Scala: A Functional, Object-Oriented Language COEN 171 Darren Atkinson What is Scala? Scala stands for Scalable Language It was created in 2004 by Martin Odersky. It was designed to grow with the demands of its users. It was designed to overcome many criticisms of Java. It is compiled to Java bytecode and is interoperable with existing Java classes and libraries. It is more of a high-level language than Java, having higher- order containers and iteration constructs built-in. It encourages a functional programming style, much like ML and Scheme. It also has advanced object-oriented features, much like Java and C++. Using Scala Using Scala is much like using Python or ML, and is not as unwieldy as using Java. The Scala interpreter can be invoked directly from the command line: $ scala Welcome to Scala 2.11.8 scala> println("Hi!") The Scala interpreter can also be given a file on the command line to execute: $ scala foo.scala Scala Syntax Scala has a Java-like syntax with braces. The assignment operator is simply =. Strings are built-in and use + for concatenation. Indexing is done using ( ) rather than [ ]. The first index is index zero. Parameterized types use [ ] rather than < >. A semicolon is inferred at the end of a line. However, since it is functional, everything is an expression and there are no “statements”. Scala Types In Java, the primitive types are not objects and wrapper classes must be used. Integer for int, Boolean for bool, etc. In Scala, everything is an object including the more “primitive” types. The Scala types are Int, Boolean, String, etc. -
Puppet Dashboard 1.2 Manual
Puppet Dashboard Manual (Generated on July 01, 2013, from git revision 46784ac1656bd7b57fcfb51d0865ec7ff65533d9) Puppet Dashboard 1.2 Manual This is the manual for Puppet Dashboard 1.2. Overview Puppet Dashboard is a web interface for Puppet. It can view and analyze Puppet reports, assign Puppet classes and parameters to nodes, and view inventory data and backed-up file contents. Chapters Installing Dashboard Upgrading Dashboard Configuring Dashboard Maintaining Dashboard Using Dashboard Rake API Installing Puppet Dashboard This is a chapter of the Puppet Dashboard 1.2 manual. NAVIGATION Installing Dashboard Upgrading Dashboard Configuring Dashboard Maintaining Dashboard Using Dashboard Rake API Overview Puppet Dashboard is a Ruby on Rails web app that interfaces with Puppet. It will run on most modern Unix-like OSes (including Mac OS X and most Linux distributions), requires a certain amount of supporting infrastructure, and can be deployed and served in a variety of ways. Dashboardʼs web interface supports the following browsers: Chrome (current versions) Firefox 3.5 and higher Puppet Dashboard Manual • Puppet Dashboard 1.2 Manual 2/27 Safari 4 and higher Internet Explorer 8 and higher Installing, in Summary In outline, the steps to get Dashboard running are: Installing the external dependencies Installing the Dashboard code Configuring Dashboard Creating and configuring a MySQL database Testing that Dashboard is working Configuring Puppet Starting the delayed job worker processes Running Dashboard in a production-quality server After completing these tasks, Dashboardʼs main functionality will be on-line and working smoothly. You can then configure Dashboard further and enable optional features If you are trying to upgrade Puppet Dashboard instead of installing it from scratch, see the chapter of this manual on upgrading instead of reading further in this chapter. -
Interfacing Apache HTTP Server 2.4 with External Applications
Interfacing Apache HTTP Server 2.4 with External Applications Jeff Trawick Interfacing Apache HTTP Server 2.4 with External Applications Jeff Trawick November 6, 2012 Who am I? Interfacing Apache HTTP Server 2.4 with External Applications Met Unix (in the form of Xenix) in 1985 Jeff Trawick Joined IBM in 1990 to work on network software for mainframes Moved to a different organization in 2000 to work on Apache httpd Later spent about 4 years at Sun/Oracle Got tired of being tired of being an employee of too-huge corporation so formed my own too-small company Currently working part-time, coding on other projects, and taking classes Overview Interfacing Apache HTTP Server 2.4 with External Applications Jeff Trawick Huge problem space, so simplify Perspective: \General purpose" web servers, not minimal application containers which implement HTTP \Applications:" Code that runs dynamically on the server during request processing to process input and generate output Possible web server interactions Interfacing Apache HTTP Server 2.4 with External Applications Jeff Trawick Native code plugin modules (uhh, assuming server is native code) Non-native code + language interpreter inside server (Lua, Perl, etc.) Arbitrary processes on the other side of a standard wire protocol like HTTP (proxy), CGI, FastCGI, etc. (Java and \all of the above") or private protocol Some hybrid such as mod fcgid mod fcgid as example hybrid Interfacing Apache HTTP Server 2.4 with External Applications Jeff Trawick Supports applications which implement a standard wire protocol, no restriction on implementation mechanism Has extensive support for managing the application[+interpreter] processes so that the management of the application processes is well-integrated with the web server Contrast with mod proxy fcgi (pure FastCGI, no process management) or mod php (no processes/threads other than those of web server). -
Konzeption Und Implementierung Eines Gamification Services Mit Ruby
Konzeption und Implementierung eines Gamification Services mit Ruby Reinhard Buchinger MASTERARBEIT eingereicht am Fachhochschul-Masterstudiengang Interaktive Medien in Hagenberg im Dezember 2012 © Copyright 2012 Reinhard Buchinger Diese Arbeit wird unter den Bedingungen der Creative Commons Lizenz Namensnennung–NichtKommerziell–KeineBearbeitung Österreich (CC BY- NC-ND) veröffentlicht – siehe http://creativecommons.org/licenses/by-nc-nd/ 3.0/at/. ii Erklärung Ich erkläre eidesstattlich, dass ich die vorliegende Arbeit selbstständig und ohne fremde Hilfe verfasst, andere als die angegebenen Quellen nicht benutzt und die den benutzten Quellen entnommenen Stellen als solche gekennzeich- net habe. Die Arbeit wurde bisher in gleicher oder ähnlicher Form keiner anderen Prüfungsbehörde vorgelegt. Hagenberg, am 3. Dezember 2012 Reinhard Buchinger iii Inhaltsverzeichnis Erklärung iii Kurzfassung vii Abstract viii 1 Einleitung 1 1.1 Motivation und Zielsetzung . .1 1.2 Inhaltlicher Aufbau . .2 2 Grundlagen 3 2.1 Gamification . .3 2.1.1 Verfolgte Ziele . .3 2.1.2 Geläufige Spielemechanismen . .4 2.1.3 Frühere Formen . .4 2.2 Apache Cassandra . .6 2.2.1 Datenmodell im Vergleich zu RDBMS . .6 2.2.2 Vorteile im Clusterbetrieb . .7 2.3 Apache ZooKeeper . .7 2.4 RabbitMQ . .9 2.5 Memcached . 10 2.6 Ruby . 11 2.6.1 JRuby . 11 2.6.2 Gems . 12 2.7 Domänenspezifische Sprachen . 14 2.7.1 Vorteile . 14 2.7.2 Nachteile . 15 2.7.3 DSL in Ruby . 15 2.8 runtastic . 15 2.8.1 Produktpalette . 16 2.8.2 Infrastruktur . 16 3 Verwandte Systeme und Anforderungen 19 3.1 Verwandte Systeme . 19 iv Inhaltsverzeichnis v 3.1.1 Gamification Systeme . -
Enrico Rubboli
Enrico Rubboli Contact Information Mobile UK: +44 741 4734233 Mobile IT: +39 349 8083244 E-mail: [email protected] Website: http://rubbo.li Personal Citizenship: Italian Information Gender: Male Date of Birth: 1976 October 27th Profile I'm a Senior Software Engineer with experience in several fields of web development. Switched to Ruby few years ago I can now boast several successful projects delivered. I'm currently searching for a new interesting opportunity in the fintech field. • 6 years of experience in Ruby and Rails • 14 years of overall experience as Web Developer • 14 years of experience in UNIX/networking/security • worked for the last 7 years with english speaking companies Technical Skills OS: GNU Linux (debian/arch), FreeBSD, OSX Programming: Ruby, Java, PHP, Perl, Bash/Zsh, C, Go lang Web & frameworks: Ruby on Rails, Sinatra, Symfony (PHP), JBoss (Java) and Torquebox (Jruby) TDD: JUnit, Rspec, Cucumber, Test:Unit Agile: Scrum, Pair Programming, XP Admins: Managing availability, scalability and efficiency of distributed systems, docker Networking: Firewalls (iptables/ipfw), IPsec, SSL, HTTP etc. Professional Experience Bitfinex - iFinex INC, Feb 2016 - present Role: Senior Software Engineer { Working in a very small team. { Different architectures and languages, in particular GoLang - Ruby and NodeJS. { Built the development environment on docker Company info: http://bitfinex.com - Hong Kong Burnside Digital Inc, Nov 2013 - Feb 2016 Role: Senior Software Engineer { Building apps using ruby on rails, nodeJS, AngularJS and Faye. { Assisting the sales team during the estimation process. { Leader of the web team Company info: http://burnsidedigital.com - Portland, OR, USA 1 of 2 Digital Science, Oct 2012 - Nov 2013 Role: Senior Software Engineer { Member of the central team. -
Rubyperf.Pdf
Ruby Performance. Tips, Tricks & Hacks Who am I? • Ezra Zygmuntowicz (zig-mun-tuv-itch) • Rubyist for 4 years • Engine Yard Founder and Architect • Blog: http://brainspl.at Ruby is Slow Ruby is Slow?!? Well, yes and no. The Ruby Performance Dichotomy Framework Code VS Application Code Benchmarking: The only way to really know performance characteristics Profiling: Measure don’t guess. ruby-prof What is all this good for in real life? Merb Merb Like most useful code it started as a hack, Merb == Mongrel + Erb • No cgi.rb !! • Clean room implementation of ActionPack • Thread Safe with configurable Mutex Locks • Rails compatible REST routing • No Magic( well less anyway ;) • Did I mention no cgi.rb? • Fast! On average 2-4 times faster than rails Design Goals • Small core framework for the VC in MVC • ORM agnostic, use ActiveRecord, Sequel, DataMapper or roll your own db access. • Prefer simple code over magic code • Keep the stack traces short( I’m looking at you alias_method_chain) • Thread safe, reentrant code Merb Hello World No code is faster then no code • Simplicity and clarity trumps magic every time. • When in doubt leave it out. • Core framework to stay small and simple and easy to extend without gross hacks • Prefer plugins for non core functionality • Plugins can be gems Key Differences • No auto-render. The return value of your controller actions is what gets returned to client • Merb’s render method just returns a string, allowing for multiple renders and more flexibility • PartController’s allow for encapsualted applets without big performance cost Why not work on Rails instead of making a new framework? • Originally I was trying to optimize Rails and make it more thread safe. -
Snow Blocks Rescuers in West Coast Flood
. ^ * A r t n g m Daflj Net PrcM Rim The Weather War tka Week Dniled r o n e u l of U. S. WeMher Were— Deeeilibee U , 1»M ' Fair, cidder tonight, low ih>-SS; 14,151 fair, HMIe temperature ehaiige to Memhnr at the Audit morrow, high in Ma. Poi ee u of ClreoUtion Manehe»ter^-^A CUy o f ViUage Charm VOL. LXXXIV, NO. 74 (TWENTY-FOUR PAGES—TWO SECTIONS) MANCHESTER, CONN., MONDAY, DECEMBER 28, 1964 (Claaslfied Advertialng on Page tZ) PRICE SEVEN CENTS Events In State Snow Blocks Rescuers State Denies Bus Request In West Coast Flood For Enfield --------- \ HARTFORD (A P )— The SAN FRANCISCO (AP)-*'n"t take off from Stead Alr^ Oregon reported 18 deaths<^day halted helicopter flights fa Stale has denied a bus Force Base in Nevada because from '1“flood '' action." " " — the area. The prediction was for — A heavy snowfall block of the storm. line’s request to serve En- ed flood relief flights in The Red Cross listed 16.300 contin\ied snow today. The turn to cold dropped the families as suffering major loss "W e’ll have to airlift supplies n iield commuters who work Northern California today snow level to 1,000 feet eleva es to homes, businesses or or evacuate soon.” Sowle said. in East Hartford but ap and prolonged the isolation tion. farms in Oregon, California, He called those isolated In the proved a similar request ordeal of sTOnded refugees The Columbia dropped enough Idaho and Washington, mountainous, heavily wooded from a competitor. into an eighth day. -
A Post-Apocalyptic Sun.Misc.Unsafe World
A Post-Apocalyptic sun.misc.Unsafe World http://www.superbwallpapers.com/fantasy/post-apocalyptic-tower-bridge-london-26546/ Chris Engelbert Twitter: @noctarius2k Jatumba! 2014, 2015, 2016, … Disclaimer This talk is not going to be negative! Disclaimer But certain things are highly speculative and APIs or ideas might change by tomorrow! sun.misc.Scissors http://www.underwhelmedcomic.com/wp-content/uploads/2012/03/runningdude.jpg sun.misc.Unsafe - What you (don’t) know sun.misc.Unsafe - What you (don’t) know • Internal class (sun.misc Package) sun.misc.Unsafe - What you (don’t) know • Internal class (sun.misc Package) sun.misc.Unsafe - What you (don’t) know • Internal class (sun.misc Package) • Used inside the JVM / JRE sun.misc.Unsafe - What you (don’t) know • Internal class (sun.misc Package) • Used inside the JVM / JRE // Unsafe mechanics private static final sun.misc.Unsafe U; private static final long QBASE; private static final long QLOCK; private static final int ABASE; private static final int ASHIFT; static { try { U = sun.misc.Unsafe.getUnsafe(); Class<?> k = WorkQueue.class; Class<?> ak = ForkJoinTask[].class; example: QBASE = U.objectFieldOffset (k.getDeclaredField("base")); java.util.concurrent.ForkJoinPool QLOCK = U.objectFieldOffset (k.getDeclaredField("qlock")); ABASE = U.arrayBaseOffset(ak); int scale = U.arrayIndexScale(ak); if ((scale & (scale - 1)) != 0) throw new Error("data type scale not a power of two"); ASHIFT = 31 - Integer.numberOfLeadingZeros(scale); } catch (Exception e) { throw new Error(e); } } } sun.misc.Unsafe -
Questions for Mongrel
www.YoYoBrain.com - Accelerators for Memory and Learning Questions for Mongrel Category: Introduction - (16 questions) Mongrel is described in what way in the "A web application container for Ruby on Mongrel pdf available from O Reilly Rails" Mongrel is compared with what web servers production performance: Fast CGI or SCGI in the Rails world in terms of production performance and development Development: WEBrick simplicity/speed Creator of Mongrel Zed A Shawwww.zedshaw.com Mongrel is developed on what mixture of Ruby and C programming/scripting languages Documentation for Mongrel mongrel.rubyforge.org/docs/index.html The creators of Mongrel describe it how? a fast HTTP library and server for Ruby that is intended for hosting Ruby web applications of any kind using plain HTTP rather than FastCGI or SCGI. It is framework agnostic Three key technologies that are used for A custom HTTP 1.1 parser (based on RFC Mongrel's internals standard, written using Ragel in C and Java as a Rby extension) Simple server that uses the parser and URIClassifier to process requests, find the right handlers, then pass the results to the handler for processing Handlers are responsible for using HttpRequet and HttpResponse objects to "do their thing and then return results" Component of Mongrel responsible for Handlers dealing with HttpRequest and HttpResponse How does Mongrel support threading one thread per request, but it will start closing connections when it gets "overloaded"while Mongrel is processing HTTP requests and sending responses it uses Ruby's threading system What platforms that already work with Camping and Og+Nitro Mongrel are throught to be "thread-safe" Have not been heavily tested Is Ruby on Rails thread safe? no How does Mongrel handle Rails" " Ruby on Rails is not thread safe so there is a synchronized block around the calls to Dispatcher.dispatch. -
Ruby on Rails Matt Dees All Trademarks Used Herein Are the Sole Property of Their Respective Owners
Ruby on Rails Matt Dees All trademarks used herein are the sole property of their respective owners. Introduction How Ruby on Rails Works cPanel's interaction with Ruby on Rails Administrating Ruby on Rails Troubleshooting Ruby on Rails What is Ruby on Rails? A Web Application Framework aimed towards the rapid development and deployment of Dynamic Web 2.0 Applications Interpreted Programming Language Web Applications are done through either Rails or as a straight CGI application Every part of the Ruby on Rails system is dependent on ruby working correctly Gems Gems are Ruby modules Either compiled or interpreted Ruby code Gems can be full applications or libraries for Ruby programs Managed by the “gem” command Rails Rails is a framework for creating Ruby applications and provides several different pieces of functionality Rails exists for multiple programming languages Is a gem Consists of several gems used for handling different functions Different versions of this exist, each application requires a specific version Rails Continued Action Record – Rapid development library for building daemon independent database queries Action Pack – An implementation of Model View Controller for Ruby. Action Mailer – An Email Handler Webserver – Usually webrick, however we use mongrel Mongrel Mongrel is the Web Server used for serving Ruby on Rails applications One instance per Ruby application Other daemons exist, but mongrel has the best security and performance record Is a gem Runs applications on port 12001 and up on cPanel Uses a significant amount -
Characteristics of Dynamic JVM Languages
Characteristics of Dynamic JVM Languages Aibek Sarimbekov Andrej Podzimek Lubomir Bulej University of Lugano Charles University in Prague University of Lugano fi[email protected] [email protected]ff.cuni.cz fi[email protected] Yudi Zheng Nathan Ricci Walter Binder University of Lugano Tufts University University of Lugano fi[email protected] [email protected] fi[email protected] Abstract However, since the JVM was originally conceived for The Java Virtual Machine (JVM) has become an execution a statically-typed language, the performance of the JVM platform targeted by many programming languages. How- and its JIT compiler with dynamically-typed languages is ever, unlike with Java, a statically-typed language, the per- often lacking, lagging behind purpose-built language-specific formance of the JVM and its Just-In-Time (JIT) compiler JIT compilers. Making the JVM perform well with various with dynamically-typed languages lags behind purpose-built statically- and dynamically-typed languages clearly requires language-specific JIT compilers. In this paper, we aim to significant effort, not only in optimizing the JVM itself, but contribute to the understanding of the workloads imposed on also, more importantly, in optimizing the bytecode-emitting the JVM by dynamic languages. We use various metrics to language compiler, instead of just relying on the original JIT characterize the dynamic behavior of a variety of programs to gain performance [8]. This in turn requires that developers written in three dynamic languages (Clojure, Python, and of both the language compilers and the JVM understand the Ruby) executing on the JVM. We identify the differences characteristics of the JVM workloads produced by various with respect to Java, and briefly discuss their implications. -
Insert Here Your Thesis' Task
Insert here your thesis' task. Czech Technical University in Prague Faculty of Information Technology Department of Software Engineering Master's thesis New Ruby parser and AST for SmallRuby Bc. Jiˇr´ıFajman Supervisor: Ing. Marcel Hlopko 18th February 2016 Acknowledgements I would like to thank to my supervisor Ing. Marcel Hlopko for perfect coop- eration and valuable advices. I would also like to thank to my family for support. Declaration I hereby declare that the presented thesis is my own work and that I have cited all sources of information in accordance with the Guideline for adhering to ethical principles when elaborating an academic final thesis. I acknowledge that my thesis is subject to the rights and obligations stip- ulated by the Act No. 121/2000 Coll., the Copyright Act, as amended. In accordance with Article 46(6) of the Act, I hereby grant a nonexclusive au- thorization (license) to utilize this thesis, including any and all computer pro- grams incorporated therein or attached thereto and all corresponding docu- mentation (hereinafter collectively referred to as the \Work"), to any and all persons that wish to utilize the Work. Such persons are entitled to use the Work in any way (including for-profit purposes) that does not detract from its value. This authorization is not limited in terms of time, location and quan- tity. However, all persons that makes use of the above license shall be obliged to grant a license at least in the same scope as defined above with respect to each and every work that is created (wholly or in part) based on the Work, by modifying the Work, by combining the Work with another work, by including the Work in a collection of works or by adapting the Work (including trans- lation), and at the same time make available the source code of such work at least in a way and scope that are comparable to the way and scope in which the source code of the Work is made available.