Ruby Language

Total Page:16

File Type:pdf, Size:1020Kb

Ruby Language Ruby Language #ruby 1 1: Ruby 2 2 2 Examples 2 IRBHello World 2 tk 2 2 3 Hello World 3 Hello World - ShebangUnix 4 4 4 4 2: C 5 Examples 5 5 C 5 C - RubyInLine 7 3: ERB 9 9 9 9 Examples 9 ERB 9 4: Hanami 11 11 Examples 11 Hanami 11 Hanami 11 12 5: instance_eval 14 14 14 Examples 14 14 14 6: IRB 16 16 16 Examples 17 17 RubyIRB 17 7: method_missing 18 18 18 Examples 18 18 18 19 19 8: OptionParser 20 20 Examples 20 20 20 21 9: rbenv 22 Examples 22 1.rbenvRuby 22 Ruby 23 10: Ruby 24 24 Examples 24 24 25 11: Ruby 27 Examples 27 ____ 27 __DIR__ 27 $ PROGRAM_NAME$ 0 27 $$ 27 12 27 ARGV$ * 27 STDIN 27 STDOUT 27 STDERR 28 $ 28 $ 28 $ 28 ENV 28 12: Ruby 29 Examples 29 29 30 31 32 13: Ruby 35 Examples 35 35 35 14: Ruby 37 Examples 37 gemset 37 RVMRuby 37 15: Ruby 38 38 Examples 38 38 40 16: Splat* 43 Examples 43 43 43 17: RubyJSON 44 Examples 44 RubyJSON 44 44 18: 45 45 Examples 45 45 45 46 47 48 19: 49 49 Examples 49 “with” 49 49 50 send 50 50 20: 52 Examples 52 52 52 53 53 54 54 21: 56 Examples 56 56 56 56 56 57 22: 58 58 58 Examples 58 58 58 58 59 23: Ruby 61 61 Examples 61 61 24: 64 64 64 64 Examples 64 64 25: 65 65 65 Examples 65 65 67 68 68 26: 71 Examples 71 71 27: 72 72 72 72 Examples 72 72 73 74 75 76 76 77 77 77 78 78 28: 79 79 79 Examples 79 79 Singleton 79 Singleton/ 80 Singleton 81 Singleton 81 Singleton 81 Singleton 81 Singleton 82 83 29: Ruby 85 85 85 Examples 85 85 ruby 85 85 86 86 30: Ruby 87 Examples 87 87 87 31: Ruby 88 88 Examples 88 88 32: Lambdas 89 89 89 Examples 89 PROC 89 Lambda 89 90 91 91 92 Proc 93 Currying 93 Currying 94 currying 94 33: 96 96 Examples 96 2D 96 3D 96 96 96 34: 98 98 Examples 98 98 98 99 99 99 100 100 101 102 102 102 102 103 103 103 35: 105 Examples 105 Linux - 105 Linux 105 Windows - 105 105 Linux - gem 106 Ruby macOS 107 36: / 108 Examples 108 Gemspec 108 109 109 37: 110 Examples 110 110 110 github / filesystemgem 110 gem 111 GemfileBundler 111 Bundler / inlinebundler v1.10 112 38: 114 114 114 Examples 114 114 114 114 114 39: 115 115 Examples 115 Ruby 115 if-else 115 40: / 116 Examples 116 116 116 117 118 118 119 41: 121 Examples 121 ifelsifelseend 121 TruthyFalsy 122 122 if / 122 123 123 breaknextredo 125 break 125 next 125 redo 125 Enumerable 126 126 126 127 127 returnnext 128 Or-Equals /|| = 128 129 129 42: Shell 131 131 131 Examples 131 Rubyshell 131 RubyshellClasic 133 43: 134 134 Examples 134 134 134 135 44: 136 136 136 Examples 136 136 136 137 137 137 138 138 138 45: 139 139 Examples 139 139 [] 139 139 140 Array :: new 140 141 142 142 142 142 142 143 143 splat* 144 145 146 146 / 146 147 #compactnil 148 148 149 46: I / O 150 150 Examples 150 150 150 char 151 STDIN 151 ARGV 151 47: 153 153 153 153 Examples 154 154 h11 154 154 h12 154 154 h13 154 splat 155 h14 155 mix 155 155 splat 156 157 158 158 159 48: 160 160 Examples 160 strftime 160 160 49: 161 161 161 Examples 161 161 161 161 50: 163 163 163 Examples 163 163 163 mixin 164 164 51: 166 Examples 166 166 = 166 166 167 168 168 168 - 168 169 52: 170 Examples 170 170 170 171 172 53: 174 174 174 Examples 174 174 54: 175 175 175 Examples 175 6 175 175 55: 176 176 176 176 Examples 177 177 178 178 56: 179 Examples 179 179 179 179 57: 180 180 180 Examples 180 DateTime 180 180 / 180 58: RSpec JSON API 182 Examples 182 SerializerController 182 59: 185 185 Examples 185 185 185 185 60: 186 Examples 186 186 186 187 187 61: 188 Examples 188 188 188 62: 189 Examples 189 189 63: 190 Examples 190 PryByebug 190 64: 191 Examples 191 191 1 191 2 191 192 192 192 193 193 65: 195 195 195 && vs. and ||or 195 Examples 195 195 === 197 198 66: 200 Examples 200 200 200 200 200 200 67: 202 202 Examples 202 202 203 203 203 204 68: 206 Examples 206 206 206 206 206 69: 208 208 Examples 208 208 209 splat 210 70: 212 212 Examples 212 212 212 - - 212 - #push 213 - #pop 213 - 213 214 214 71: 215 Examples 215 215 215 215 72: 218 218 218 Examples 218 218 218 218 gettersetter 219 220 220 221 222 222 222 223 223 224 225 226 You can share this PDF with anyone you feel could benefit from it, downloaded the latest version from: ruby-language It is an unofficial and free Ruby Language ebook created for educational purposes. All the content is extracted from Stack Overflow Documentation, which is written by many hardworking individuals at Stack Overflow. It is neither affiliated with Stack Overflow nor official Ruby Language. The content is released under Creative Commons BY-SA, and the list of contributors to each chapter are provided in the credits section at the end of this book. Images may be copyright of their respective owners unless otherwise specified. All trademarks and registered trademarks are the property of their respective company owners. Use the content presented in this book at your own risk; it is not guaranteed to be correct nor accurate, please send your feedback and corrections to [email protected] https://riptutorial.com/zh-TW/home 1 1: Ruby Ruby。Yukihiro MatsumotoMatz1995。 RubyPerl Smalltalk Eiffel AdaLisp 。。。 2.4 20161225 2.3 20151225 2.2 2.1 20131225 2.0 2013224 1.9 2007-12-25 1.8 2003-08-04 1.6.8 2002-12-24 Examples IRBHello World Interactive Ruby Shell IRBRubyRuby。 IRB $ irb puts "Hello World" Hello World print print "Hello World" tk TkRubyGUI。RubyGUI。 https://riptutorial.com/zh-TW/home 2 require "tk" TkRoot.new{ title "Hello World!" } Tk.mainloop require "tk" tk。 TkRoot.new{ title "Hello World!" } Hello World Tk.mainloop 。 Ruby。 hello.rb puts 'Hello World' Ruby $ ruby hello.rb Hello World 。 Ruby。 RubyRuby。 Hello World Rubyshell。RubyRuby ruby -e 'puts "Hello World"' https://riptutorial.com/zh-TW/home 3 Ruby。shellhere ruby <<END puts "Hello World" END Hello World - ShebangUnix shebang。hello_world.rb #!/usr/bin/env ruby puts 'Hello World!' 。Unix $ chmod u+x hello_world.rb Ruby。 $ ./hello_world.rb my_first_method.rb def hello_world puts "Hello world!" end hello_world() # or just 'hello_world' (without parenthesis) ruby my_first_method.rb Hello world! • defdef -ining- hello_world。 • puts "Hello world!" puts putsHello world! • endhello_world • hello_world Ruby https://riptutorial.com/zh-TW/ruby/topic/195/ruby https://riptutorial.com/zh-TW/home 4 2: C Examples C 1. C。 2. 。 extconf.rb require 'mkmf' create_makefile('hello_c') hello_c。require。 extconf.rbgemruby extconf.rbMakefile。Makefile.c。 hello.cruby extconf.rb && make #include <stdio.h> #include "ruby.h" VALUE world(VALUE self) { printf("Hello World!\n"); return Qnil; } // The initialization method for this module void Init_hello_c() { VALUE HelloC = rb_define_module("HelloC"); rb_define_singleton_method(HelloC, "world", world, 0); } Init_hello_cextconf.rbRuby。 rb_define_moduleHelloCRubyC。 rb_define_singleton_methodHelloCHelloC.worldrubyHelloC.world 。 makeC。 irb(main):001:0> require './hello_c' => true irb(main):002:0> HelloC.world Hello World! => nil C https://riptutorial.com/zh-TW/home 5 CRubyData_Wrap_StructData_Get_Struct。 Data_Wrap_StructRubyData_Wrap_StructC。VALUE。 Data_Get_StructVALUEC。 #include <stdio.h> #include <ruby.h> typedef struct example_struct { char *name; } example_struct; void example_struct_free(example_struct * self) { if (self->name != NULL) { free(self->name); } ruby_xfree(self); } static VALUE rb_example_struct_alloc(VALUE klass) { return Data_Wrap_Struct(klass, NULL, example_struct_free, ruby_xmalloc(sizeof(example_struct))); } static VALUE rb_example_struct_init(VALUE self, VALUE name) { example_struct* p; Check_Type(name, T_STRING); Data_Get_Struct(self, example_struct, p); p->name = (char *)malloc(RSTRING_LEN(name) + 1); memcpy(p->name, StringValuePtr(name), RSTRING_LEN(name) + 1); return self; } static VALUE rb_example_struct_name(VALUE self) { example_struct* p; Data_Get_Struct(self, example_struct, p); printf("%s\n", p->name); return Qnil; } void Init_example() { VALUE mExample = rb_define_module("Example"); VALUE cStruct = rb_define_class_under(mExample, "Struct", rb_cObject); rb_define_alloc_func(cStruct, rb_example_struct_alloc); rb_define_method(cStruct, "initialize", rb_example_struct_init, 1); rb_define_method(cStruct, "name", rb_example_struct_name, 0); } extconf.rb require 'mkmf' create_makefile('example') https://riptutorial.com/zh-TW/home 6 irb(main):001:0> require './example' => true irb(main):002:0> test_struct = Example::Struct.new("Test Struct") => #<Example::Struct:0x007fc741965068> irb(main):003:0> test_struct.name Test Struct => nil C - RubyInLine RubyInlineRuby。Moduleinline。RubyRuby。 CC ++RubyInline。.ruby_inline。 RubyC • RubyInlinerubyinline gem RubyInlineirb #!/usr/bin/ruby -w # copy.rb require 'rubygems' require 'inline' class Copier inline do |builder| builder.c <<END void copy_file(const char *source, const char *dest) { FILE *source_f = fopen(source, "r"); if (!source_f) { rb_raise(rb_eIOError, "Could not open source : '%s'", source); } FILE *dest_f = fopen(dest, "w+"); if (!dest_f) { rb_raise(rb_eIOError, "Could not open destination : '%s'", dest); } char buffer[1024]; int nread = fread(buffer, 1, 1024, source_f); while (nread > 0) { fwrite(buffer, 1, nread, dest_f); nread = fread(buffer, 1, 1024, source_f); } } END end end Ccopy_fileCopier https://riptutorial.com/zh-TW/home 7 open('source.txt', 'w') { |f| f << 'Some text.' } Copier.new.copy_file('source.txt', 'dest.txt') puts open('dest.txt') { |f| f.read } C https://riptutorial.com/zh-TW/ruby/topic/5009/c https://riptutorial.com/zh-TW/home 8 3: ERB ERBRubyRubyHTMLYAML。 ERBRubyERBRuby。 • <number = rand10> • <= number> • <comment text> • ERBERBRuby。 • .erb.js.erb .html.erb .css.erb。 Examples ERB IRB。 => require 'erb' => input = <<-HEREDOC <ul> <% (0..10).each do |i| %> <%# This is a comment %>
Recommended publications
  • Tsuru Documentation Release 1.6.2
    tsuru Documentation Release 1.6.2 tsuru Oct 04, 2018 Contents 1 Understanding 3 1.1 Overview.................................................3 1.2 Concepts.................................................4 1.3 Architecture...............................................5 2 Installing 7 2.1 tsuru Installer...............................................7 2.2 Installing tsuru components....................................... 12 3 Managing 21 3.1 Installing platforms............................................ 21 3.2 Creating a platform............................................ 22 3.3 Using Pools................................................ 23 3.4 Provisioners............................................... 25 3.5 Clusters.................................................. 26 3.6 Segregate Scheduler........................................... 27 3.7 Upgrading Docker............................................ 27 3.8 Managing Git repositories and SSH keys................................ 28 3.9 Managing users and permissions..................................... 28 3.10 Managing Application Logs....................................... 32 3.11 Debugging and Troubleshooting..................................... 33 3.12 Volumes................................................. 34 3.13 Event webhooks............................................. 35 4 Using 39 4.1 Installing tsuru client........................................... 39 4.2 Deploying................................................ 40 4.3 App-Deploy..............................................
    [Show full text]
  • Rmenu Raspberry PI 3B+ Rmenu 環境構築 Raspberry PI3B+ Rmenu
    RaspberryPi3-20190706 RaspberryPI3 Rmenu VPS Rmenu Raspberry PI 3B+ Rmenu 環境構築 Raspberry PI3B+ Rmenu development term 2019/07/06 1 目次 第1章 はじめに ................................................................................................................................... 4 第2章 構築作業、SD イメージ作成 ................................................................................................... 5 1. Raspbian Buster Lite を ダウンロード ......................................................................... 5 2. SD メモリカードフォーマッターを取得しインストール ................................................ 6 3. SD カードをフォーマットします ................................................................................... 8 4. img ファイルの書き込みプログラムのインストール...................................................... 9 5. img ファイルの書き込み ................................................................................................ 9 6. ssh ファイルの書き込み ............................................................................................... 10 7. SD カードを取り付け、電源を入れる .......................................................................... 11 第3章 最初のログイン ...................................................................................................................... 12 1. ルータが付与した IP アドレスへログイン ................................................................... 12 第4章 Linux raspberrypi 初期設定 ................................................................................................. 13 1. ログイン .....................................................................................................................
    [Show full text]
  • Building Blocks of a Scalable Web Crawler
    Building blocks of a scalable web crawler Marc Seeger Computer Science and Media Stuttgart Media University September 15, 2010 A Thesis Submitted in Fulfilment of the Requirements for a Degree of Master of Science in Computer Science and Media Primary thesis advisor: Prof. Walter Kriha Secondary thesis advisor: Dr. Dries Buytaert I I Abstract The purpose of this thesis was the investigation and implementation of a good architecture for collecting, analysing and managing website data on a scale of millions of domains. The final project is able to automatically collect data about websites and analyse the content management system they are using. To be able to do this efficiently, different possible storage back-ends were examined and a system was implemented that is able to gather and store data at a fast pace while still keeping it searchable. This thesis is a collection of the lessons learned while working on the project combined with the necessary knowledge that went into architectural decisions. It presents an overview of the different infrastructure possibilities and general approaches and as well as explaining the choices that have been made for the implemented system. II Acknowledgements I would like to thank Acquia and Dries Buytaert for allowing me to experience life in the USA while working on a great project. I would also like to thank Chris Brookins for showing me what agile project management is all about. Working at Acquia combined a great infrastructure and atmosphere with a pool of knowledgeable people. Both these things helped me immensely when trying to find and evaluate a matching architecture to this project.
    [Show full text]
  • Open Source Code Acknowledgements & Package List
    Open Source Code Acknowledgements & Package List Copyright © 2010 ‐ 2020 Spectra Logic Corporation. All rights reserved. This appendix contains the licenses and notices for open source software used in the product. If you have any questions or want to receive a copy of the free/open source software to which you are entitled under the applicable free/open source license(s) (such as the Common Development and Distribution License (CCDL)), contact Spectra Logic Technical Support. APACHE Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at: http://www.apache.org/licenses/LICENSE‐2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “A S IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. FREEBSD Copyright © 1992‐2020 The FreeBSD Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE FREEBSD PROJECT ``AS ISʹʹ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
    [Show full text]
  • Open Source Licenses 1. Apache-2.0 2. BSD-2-Clause 3
    Open source licenses 1. Apache-2.0 2. BSD-2-Clause 3. BSD-3-Clause 4. BSL-1.0 5. CCPL 6. ISC 7. JSON 8. MIT 9. Zlib Please note, this list may be modified at any time. ------------------------------------------------------------------------------------------------------------------------------------------ Apache License, Version 2.0 adal-node version 0.1.28, Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. adbkit-apkreader version 3.1.2, Copyright © 2013 CyberAgent, Inc., Copyright © 2016 The OpenSTF Project addressable version 2.7.0, Copyright © Bob Aman AWSAPIGateway version 2.6.35, Copyright 2017 - 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. gson version 2.3.1, Copyright 2008 Google Inc. libphonenumber version 7.0.5, Copyright 2014 The Chromium Authors. All rights reserved. dagger version 2.5, Copyright 2012 The Dagger Authors retrofit1-okhttp3-client version 1.0.2, Copyright 2016 Jake Wharton commons-io version 2.5, Copyright 2002-2021 The Apache Software Foundation okhttp version 3.2.0, Copyright 2019 Square, Inc. okio version 1.6.0, Copyright 2013 Square, Inc. retrofit version 1.9.0, Copyright 2013 Square, Inc. detect-libc version 1.0.3, Copyright 2017 Lovell Fuller ecdsa-sig-formatter versions 1.0.9 and 1.0.11, Copyright 2015 D2L Corporation ejs version 2.5.7, EJS Embedded JavaScript templates copyright 2112 [email protected]. FirebaseAuth version 5.0.1, FirebaseCore version 5.0.4, [email protected], FirebaseInstanceID version 3.1.1, [email protected], Copyright 2018 Google LLC rxjava-async-util version 0.21.0, Copyright 2012 Netflix, Inc. rxjava-debug version 1.0.1, Copyright (c) 2016-present, RxJava Contributors.
    [Show full text]
  • Getting Started with Appium
    E-BOOK Getting Started With Appium RUBY EDITION 2018.1 LEARN MORE AT SAUCELABS.COM BY JONATHAN LIPPS TABLE OF CONTENTS 3 Preface 20 Chapter 4: Writing Your First Test 4 Chapter 1: Introduction 25 Chapter 5: Introduction to Page Objects 4 The Appium Vision 30 Chapter 6: Android Joins the Party 5 The Appium Drivers 35 Chapter 7: Running Local Tests With Rake 6 The Appium Clients 36 Chapter 8: Running Tests in the Sauce Labs Cloud 7 Chapter 2: Getting Set Up 40 Annotating Tests on Sauce 7 Assumed Knowledge 41 Chapter 9: Automating Test Runs with a CI Server 7 iOS-specific System Setup 41 Setting Up Jenkins 7 Android-Specific System Setup 42 Creating an Android Build 8 Appium Setup 44 Creating an iOS Build 10 Ruby Client Setup 44 Running on Sauce 10 Project Setup 45 Jenkins for Production 11 Known Working Versions 46 Chapter 10: Heading Out on Your Own 12 Chapter 3: Exploring Your App 46 Resources 12 Using the Appium Ruby Console 47 Support 17 Using the Appium Desktop Inspector PREFACE This little e-book will help you get started with Appium using the Ruby programming language. It is a complete revision from the ground up of an earlier guide written by Dave Haeffner, who along with Matthew Edwards deserves a lot of thanks for all the work put into the first edition. Appium is an open source project that is always changing, and guides like this one will never be accurate forever. When possible I will indicate which versions of various software are being used, which might help in ensuring reproducibility of the code samples used here.
    [Show full text]
  • Bigfix Inventory Open Source Licenses and Notices
    ---------------------------------- BigFix Inventory 10.0 July 2021 ---------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- The HCL license agreement and any applicable information on the web download page for HCL products refers Licensee to this file for details concerning notices applicable to code included in the products listed above ("the Program"). Notwithstanding the terms and conditions of any other agreement Licensee may have with HCL or any of its related or affiliated entities (collectively "HCL"), the third party code identified below is subject to the terms and conditions of the HCL license agreement for the Program and not the license terms that may be contained in the notices below. The notices are provided for informational purposes. Please note: This Notices file may identify information that is not used by, or that was not shipped with, the Program as Licensee installed it. IMPORTANT: HCL does not represent or warrant that the information in this NOTICES file is accurate. Third party websites are independent of HCL and HCL does not represent or warrant that the information on any third party website referenced in this NOTICES file is accurate. HCL disclaims any and all liability for errors and omissions or for any damages accruing from the use of this NOTICES file or its contents, including without limitation URLs or references to any third party websites. -------------------------------------------------------------------------
    [Show full text]
  • Chef Client Policy
    Dear Participants, • Chef Mailing List Welcome to the course DevOps with Chef on FreeBSD. In • Git website this course, we’ll cover lot of theory and practical aspects. • Ruby Website We’ll focus on the core topics as mentioned in the agenda, Hardware/Software Requirement and we assume that you already know the prerequisites. If • 2 FreeBSD 11 systems/machines (Virtual or Physical), with not, then you might have to learn additional topics such Internet access and bash as the default shell with root as Git, Ruby and FreeBSD first. login over ssh or a normal user with sudo access. • A free account on Hosted Chef. The learning curve for Chef is a little steep at times. There, fore, just be patient and keep working on it, and you’ll eventually be done with the course. We’ll certainly help you throughout the course. But, be prepared to do a lot of self-study as well. Bear in mind that the best way to learn Chef is to just use it. Prerequisites • Knowledge of how to use version control system, pref, erably Git. • Basic Knowledge of FreeBSD OS Administration. • Basic knowledge of any scripting language, preferably Ruby. • Working knowledge of any text/code editor. Resources • FreeBSD • FreeBSD Documentation • Download FreeBSD • Chef Website • Chef Documentation • Chef IRC Channel TABLE OF CONTENTS Module 1: Introduction to Chef.................................................................................................................................................................3 Module 2: Resources.................................................................................................................................................................................7
    [Show full text]
  • The Ruby Way: Solutions and Techniques in Ruby Programming
    Praise for The Ruby Way, Third Edition “Sticking to its tried and tested formula of cutting right to the techniques the modern day Rubyist needs to know, the latest edition of The Ruby Way keeps its strong reputation going for the latest generation of the Ruby language.” Peter Cooper Editor of Ruby Weekly “The authors’ excellent work and meticulous attention to detail continues in this lat- est update; this book remains an outstanding reference for the beginning Ruby pro- grammer—as well as the seasoned developer who needs a quick refresh on Ruby. Highly recommended for anyone interested in Ruby programming.” Kelvin Meeks Enterprise Architect Praise for Previous Editions of The Ruby Way “Among other things, this book excels at explaining metaprogramming, one of the most interesting aspects of Ruby. Many of the early ideas for Rails were inspired by the first edition, especially what is now Chapter 11. It puts you on a rollercoaster ride between ‘How could I use this?’ and ‘This is so cool!’ Once you get on that roller- coaster, there’s no turning back.” David Heinemeier Hansson Creator of Ruby on Rails, Founder at Basecamp “The appearance of the second edition of this classic book is an exciting event for Rubyists—and for lovers of superb technical writing in general. Hal Fulton brings a lively erudition and an engaging, lucid style to bear on a thorough and meticulously exact exposition of Ruby. You palpably feel the presence of a teacher who knows a tremendous amount and really wants to help you know it too.” David Alan Black Author of The Well-Grounded Rubyist “This is an excellent resource for gaining insight into how and why Ruby works.
    [Show full text]
  • Abusing XSLT for Practical Attacks White Paper
    WHITE PAPER Abusing XSLT for Practical Attacks White Paper Fernando Arnaboldi IOActive Senior Security Consultant Abstract Over the years, XML has been a rich target for attackers due to flaws in its design as well as implementations. It is a tempting target because it is used by other programming languages to interconnect applications and is supported by web browsers. In this talk, I will demonstrate how to use XSLT to produce documents that are vulnerable to new exploits. XSLT can be leveraged to affect the integrity of arithmetic operations, lead to code logic failure, or cause random values to use the same initialization vector. Error disclosure has always provided valuable information, but thanks to XSLT, it is possible to partially read system files that could disclose service or system passwords. Finally, XSLT can be used to compromise end-user confidentiality by abusing the same-origin policy concept present in web browsers. This document includes proof-of-concept attacks demonstrating XSLT potential to affect production systems, along with recommendations for safe development. © 2015 IOActive, Inc. All Rights Reserved Contents Abstract ......................................................................................................................... 1 Introduction ................................................................................................................... 3 Processors ............................................................................................................................. 3 Gathering
    [Show full text]
  • Imperative Vs. Object- Oriented Paradigms
    11/11/14 CSCI-2325 Object-Oriented Paradigm: Ruby Mohammad T. Irfan Imperative vs. object- oriented paradigms 1 11/11/14 Imperative vs. object-oriented u Imperative u Procedural decomposition u Procedures are all powerful u Data is helpless, at the mercy of procedures u Object-oriented (OO) u Data-centric: data governs the decomposition u Classes – templates/patterns, abstracts away data u Objects – actual things/instantiations of classes u Advantages of OO paradigm u Collaboration u Debugging u Reuse Roadmap u Learn the basics of Ruby today u Investigate Ruby’s object-oriented design principles u Ruby on Rails for web programming 2 11/11/14 Ruby Installation u Several ways to install, as described here: https://www.ruby-lang.org/en/downloads/ u Mac/Linux: Use RVM (https://rvm.io/rvm/install) u Command line$ \curl -sSL https://get.rvm.io | bash -s stable –ruby u Then, follow the instruction given in terminal u To test, commands are: u ruby –v u rvm –v u If you get errors, run the following commands (assuming 2.1.4 is the latest version—look up rvm website for it) u brew update && brew upgrade u rvm reinstall 2.1.4 --disable-binary u Windows: Install Ruby 2.0.0 from RubyInstaller.org http://rubyinstaller.org/downloads/ u Recommended IDE u Aptana Studio 3 http://www.aptana.com/ Ruby resources u Learning u English translation of the creator’s user guide (by Mark Slagell) u http://www.rubyist.net/~slagell/ruby/index.html u Go to reference u Documentation: http://ruby-doc.org/core-2.0.0/ u http://www.tutorialspoint.com/ruby/ u Interactive tutorial using only your web-browser u http://tryruby.org 3 11/11/14 Origin u Designed by Yukihiro Matsumoto (Matz) in early 1990s u Inspired by Perl and Python u Less scripting than Perl u More object-oriented than Python u Happy experience! Quotes u Bruce Stewart (2001): Did you have a guiding philosophy when designing Ruby? u Matz: Yes, it's called the "principle of least surprise." I believe people want to express themselves when they program.
    [Show full text]
  • Pagealyzer Installation and Configuration Manual
    Pagealyzer Installation and Configuration Manual Andrés Sanoja, LIP6 / Université Pierre et Marie Curie Responsables WP : Matthieu CORD/UPMC Stéphane GANÇARSKI/UPMC This work was partially supported by the SCAPE Project. The SCAPE project is co-funded by the European Union under FP7 ICT-2009.4.1 (Grant Agreement number 270137). Enviroment Verification and Configuration The tools pageanalyzer.rb, change_detection.rb and capture.rb are written in Ruby 1.9.1. In the other hand for the change detection process others tools are used that are written in Java, therefore this should be taken into account in the enviroment verification process. The development enviroment was Linux Ubuntu 11.40, the package description is done following its repositories, but in theory should be compatible with debien repos. Ruby Installation We need to be carefull with this step because the software won't work on the 1.8.x versions of Ruby. sudo apt-get install ruby1.9.1-full After that we should check that both, ruby and rubygems, are been properly installed. $ ruby -v 1.9.2p290 (2011-07-09 revision 32533) [i686-linux] It is enough to match the version number. Any doubts there are several tutorials to do this [1]. Now we check the rubygems package manager: $ gem -v 1.3.7 Installing Dependencies After the language and the package manager are properly configured and installed, we may proceed to install the dependencies: sudo gem install --version '= 0.8.6' hpricot sudo apt-get install libxslt-dev libxml2-dev sudo gem install --version '= 1.5.5' nokogiri sudo gem install --version '= 2.0.3' sanitize sudo gem install --version '= 2.25.0' selenium-webdriver sudo apt-get install openjdk-6-jdk sudo apt-get install imagemagick Note1: Installing the selenium-webdriver can cause some warnings in text encoding that should be fine, in almost all the cases.
    [Show full text]