1.
Software developer
–
A software developer is a person concerned with facets of the software development process, including the research, design, programming, and testing of computer software. Other job titles which are used with similar meanings are programmer, software analyst. According to developer Eric Sink, the differences between system design, software development, and programming are more apparent, even more so that developers become systems architects, those who design the multi-leveled architecture or component interactions of a large software system. In a large company, there may be employees whose sole responsibility consists of one of the phases above. In smaller development environments, a few people or even an individual might handle the complete process. The word software was coined as a prank as early as 1953, before this time, computers were programmed either by customers, or the few commercial computer vendors of the time, such as UNIVAC and IBM. The first company founded to provide products and services was Computer Usage Company in 1955. The software industry expanded in the early 1960s, almost immediately after computers were first sold in mass-produced quantities, universities, government, and business customers created a demand for software. Many of these programs were written in-house by full-time staff programmers, some were distributed freely between users of a particular machine for no charge. Others were done on a basis, and other firms such as Computer Sciences Corporation started to grow. The computer/hardware makers started bundling operating systems, systems software and programming environments with their machines, new software was built for microcomputers, so other manufacturers including IBM, followed DECs example quickly, resulting in the IBM AS/400 amongst others. The industry expanded greatly with the rise of the computer in the mid-1970s. In the following years, it created a growing market for games, applications. DOS, Microsofts first operating system product, was the dominant operating system at the time, by 2014 the role of cloud developer had been defined, in this context, one definition of a developer in general was published, Developers make software for the world to use. The job of a developer is to crank out code -- fresh code for new products, code fixes for maintenance, code for business logic, bus factor Software Developer description from the US Department of Labor
2.
Software release life cycle
–
Usage of the alpha/beta test terminology originated at IBM. As long ago as the 1950s, IBM used similar terminology for their hardware development, a test was the verification of a new product before public announcement. B test was the verification before releasing the product to be manufactured, C test was the final test before general availability of the product. Martin Belsky, a manager on some of IBMs earlier software projects claimed to have invented the terminology, IBM dropped the alpha/beta terminology during the 1960s, but by then it had received fairly wide notice. The usage of beta test to refer to testing done by customers was not done in IBM, rather, IBM used the term field test. Pre-alpha refers to all activities performed during the project before formal testing. These activities can include requirements analysis, software design, software development, in typical open source development, there are several types of pre-alpha versions. Milestone versions include specific sets of functions and are released as soon as the functionality is complete, the alpha phase of the release life cycle is the first phase to begin software testing. In this phase, developers generally test the software using white-box techniques, additional validation is then performed using black-box or gray-box techniques, by another testing team. Moving to black-box testing inside the organization is known as alpha release, alpha software can be unstable and could cause crashes or data loss. Alpha software may not contain all of the features that are planned for the final version, in general, external availability of alpha software is uncommon in proprietary software, while open source software often has publicly available alpha versions. The alpha phase usually ends with a freeze, indicating that no more features will be added to the software. At this time, the software is said to be feature complete, Beta, named after the second letter of the Greek alphabet, is the software development phase following alpha. Software in the stage is also known as betaware. Beta phase generally begins when the software is complete but likely to contain a number of known or unknown bugs. Software in the phase will generally have many more bugs in it than completed software, as well as speed/performance issues. The focus of beta testing is reducing impacts to users, often incorporating usability testing, the process of delivering a beta version to the users is called beta release and this is typically the first time that the software is available outside of the organization that developed it. Beta version software is useful for demonstrations and previews within an organization
3.
Repository (version control)
–
In revision control systems, a repository is an on-disk data structure which stores metadata for a set of files and/or directory structure. Some of the metadata that a repository contains includes, among other things, a set of references to commit objects, called heads. The main purpose of a repository is to store a set of files and these differences in methodology have generally led to diverse uses of revision control by different groups, depending on their needs. Software repository Codebase Forge Comparison of source code hosting facilities
4.
Ruby (programming language)
–
Ruby is a dynamic, reflective, object-oriented, general-purpose programming language. It was designed and developed in the mid-1990s by Yukihiro Matz Matsumoto in Japan, according to its creator, Ruby was influenced by Perl, Smalltalk, Eiffel, Ada, and Lisp. It supports multiple programming paradigms, including functional, object-oriented, and it also has a dynamic type system and automatic memory management. Ruby was conceived on February 24,1993, I knew Perl, but I didnt like it really, because it had the smell of a toy language. The object-oriented language seemed very promising, but I didnt like it, because I didnt think it was a true object-oriented language — OO features appeared to be add-on to the language. As a language maniac and OO fan for 15 years, I really wanted a genuine object-oriented, I looked for but couldnt find one. The name Ruby originated during a chat session between Matsumoto and Keiju Ishitsuka on February 24,1993, before any code had been written for the language. Initially two names were proposed, Coral and Ruby, Matsumoto chose the latter in a later e-mail to Ishitsuka. Matsumoto later noted a factor in choosing the name Ruby – it was the birthstone of one of his colleagues, the first public release of Ruby 0.95 was announced on Japanese domestic newsgroups on December 21,1995. Subsequently, three versions of Ruby were released in two days. The release coincided with the launch of the Japanese-language ruby-list mailing list, in the same year, Matsumoto was hired by netlab. jp to work on Ruby as a full-time developer. In 1998, the Ruby Application Archive was launched by Matsumoto, in 1999, the first English language mailing list ruby-talk began, which signaled a growing interest in the language outside Japan. In this same year, Matsumoto and Keiju Ishitsuka wrote the first book on Ruby, The Object-oriented Scripting Language Ruby and it would be followed in the early 2000s by around 20 books on Ruby published in Japanese. By 2000, Ruby was more popular than Python in Japan, in September 2000, the first English language book Programming Ruby was printed, which was later freely released to the public, further widening the adoption of Ruby amongst English speakers. In early 2002, the English-language ruby-talk mailing list was receiving more messages than the Japanese-language ruby-list, Ruby 1.8 was initially released in August 2003, was stable for a long time, and was retired June 2013. Although deprecated, there is still based on it. Ruby 1.8 is only compatible with Ruby 1.9. Ruby 1.8 has been the subject of industry standards
5.
Operating system
–
An operating system is system software that manages computer hardware and software resources and provides common services for computer programs. All computer programs, excluding firmware, require a system to function. Operating systems are found on many devices that contain a computer – from cellular phones, the dominant desktop operating system is Microsoft Windows with a market share of around 83. 3%. MacOS by Apple Inc. is in place, and the varieties of Linux is in third position. Linux distributions are dominant in the server and supercomputing sectors, other specialized classes of operating systems, such as embedded and real-time systems, exist for many applications. A single-tasking system can run one program at a time. Multi-tasking may be characterized in preemptive and co-operative types, in preemptive multitasking, the operating system slices the CPU time and dedicates a slot to each of the programs. Unix-like operating systems, e. g. Solaris, Linux, cooperative multitasking is achieved by relying on each process to provide time to the other processes in a defined manner. 16-bit versions of Microsoft Windows used cooperative multi-tasking, 32-bit versions of both Windows NT and Win9x, used preemptive multi-tasking. Single-user operating systems have no facilities to distinguish users, but may allow multiple programs to run in tandem, a distributed operating system manages a group of distinct computers and makes them appear to be a single computer. The development of networked computers that could be linked and communicate with each other gave rise to distributed computing, distributed computations are carried out on more than one machine. When computers in a work in cooperation, they form a distributed system. The technique is used both in virtualization and cloud computing management, and is common in large server warehouses, embedded operating systems are designed to be used in embedded computer systems. They are designed to operate on small machines like PDAs with less autonomy and they are able to operate with a limited number of resources. They are very compact and extremely efficient by design, Windows CE and Minix 3 are some examples of embedded operating systems. A real-time operating system is a system that guarantees to process events or data by a specific moment in time. A real-time operating system may be single- or multi-tasking, but when multitasking, early computers were built to perform a series of single tasks, like a calculator. Basic operating system features were developed in the 1950s, such as resident monitor functions that could run different programs in succession to speed up processing
6.
Software license
–
A software license is a legal instrument governing the use or redistribution of software. Under United States copyright law all software is copyright protected, in code as also object code form. The only exception is software in the public domain, most distributed software can be categorized according to its license type. Two common categories for software under copyright law, and therefore with licenses which grant the licensee specific rights, are proprietary software and free, unlicensed software outside the copyright protection is either public domain software or software which is non-distributed, non-licensed and handled as internal business trade secret. Contrary to popular belief, distributed unlicensed software is copyright protected. Examples for this are unauthorized software leaks or software projects which are placed on public software repositories like GitHub without specified license. As voluntarily handing software into the domain is problematic in some international law domains, there are also licenses granting PD-like rights. Therefore, the owner of a copy of software is legally entitled to use that copy of software. Hence, if the end-user of software is the owner of the respective copy, as many proprietary licenses only enumerate the rights that the user already has under 17 U. S. C. §117, and yet proclaim to take away from the user. Proprietary software licenses often proclaim to give software publishers more control over the way their software is used by keeping ownership of each copy of software with the software publisher. The form of the relationship if it is a lease or a purchase, for example UMG v. Augusto or Vernor v. Autodesk. The ownership of goods, like software applications and video games, is challenged by licensed. The Swiss based company UsedSoft innovated the resale of business software and this feature of proprietary software licenses means that certain rights regarding the software are reserved by the software publisher. Therefore, it is typical of EULAs to include terms which define the uses of the software, the most significant effect of this form of licensing is that, if ownership of the software remains with the software publisher, then the end-user must accept the software license. In other words, without acceptance of the license, the end-user may not use the software at all, one example of such a proprietary software license is the license for Microsoft Windows. The most common licensing models are per single user or per user in the appropriate volume discount level, Licensing per concurrent/floating user also occurs, where all users in a network have access to the program, but only a specific number at the same time. Another license model is licensing per dongle which allows the owner of the dongle to use the program on any computer, Licensing per server, CPU or points, regardless the number of users, is common practice as well as site or company licenses
7.
C (programming language)
–
C was originally developed by Dennis Ritchie between 1969 and 1973 at Bell Labs, and used to re-implement the Unix operating system. C has been standardized by the American National Standards Institute since 1989, C is an imperative procedural language. Therefore, C was useful for applications that had formerly been coded in assembly language. Despite its low-level capabilities, the language was designed to encourage cross-platform programming, a standards-compliant and portably written C program can be compiled for a very wide variety of computer platforms and operating systems with few changes to its source code. The language has become available on a wide range of platforms. In C, all code is contained within subroutines, which are called functions. Function parameters are passed by value. Pass-by-reference is simulated in C by explicitly passing pointer values, C program source text is free-format, using the semicolon as a statement terminator and curly braces for grouping blocks of statements. The C language also exhibits the characteristics, There is a small, fixed number of keywords, including a full set of flow of control primitives, for, if/else, while, switch. User-defined names are not distinguished from keywords by any kind of sigil, There are a large number of arithmetical and logical operators, such as +, +=, ++, &, ~, etc. More than one assignment may be performed in a single statement, function return values can be ignored when not needed. Typing is static, but weakly enforced, all data has a type, C has no define keyword, instead, a statement beginning with the name of a type is taken as a declaration. There is no function keyword, instead, a function is indicated by the parentheses of an argument list, user-defined and compound types are possible. Heterogeneous aggregate data types allow related data elements to be accessed and assigned as a unit, array indexing is a secondary notation, defined in terms of pointer arithmetic. Unlike structs, arrays are not first-class objects, they cannot be assigned or compared using single built-in operators, There is no array keyword, in use or definition, instead, square brackets indicate arrays syntactically, for example month. Enumerated types are possible with the enum keyword and they are not tagged, and are freely interconvertible with integers. Strings are not a data type, but are conventionally implemented as null-terminated arrays of characters. Low-level access to memory is possible by converting machine addresses to typed pointers
8.
Apache Maven
–
Maven is a build automation tool used primarily for Java projects. The word maven means accumulator of knowledge in Yiddish, Maven addresses two aspects of building software, first, it describes how software is built, and second, it describes its dependencies. Contrary to preceding tools like Apache Ant, it uses conventions for the build procedure, an XML file describes the software project being built, its dependencies on other external modules and components, the build order, directories, and required plug-ins. It comes with pre-defined targets for performing certain well-defined tasks such as compilation of code, Maven dynamically downloads Java libraries and Maven plug-ins from one or more repositories such as the Maven 2 Central Repository, and stores them in a local cache. This local cache of downloaded artifacts can also be updated with artifacts created by local projects, public repositories can also be updated. Maven can also be used to build and manage projects written in C#, Ruby, Scala, the Maven project is hosted by the Apache Software Foundation, where it was formerly part of the Jakarta Project. Maven is built using an architecture that allows it to make use of any application controllable through standard input. Theoretically, this would allow anyone to write plugins to interface with build tools for any other language, in reality, support and use for languages other than Java has been minimal. Currently a plugin for the. NET framework exists and is maintained, alternative technologies like Gradle and sbt as build tools do not rely on XML, but keep the key concepts Maven introduced. With Apache Ivy, a dependency manager was developed as well that also supports Maven repositories. Maven projects are configured using a Project Object Model, which is stored in a pom. xml-file, heres a minimal example, This POM only defines a unique identifier for the project and its dependency on the JUnit framework. However, that is enough for building the project and running the unit tests associated with the project. Maven accomplishes this by embracing the idea of Convention over Configuration, in general, users should not have to write plugins themselves. Contrast this with Ant and make, in which one writes imperative procedures for doing the aforementioned tasks, a Project Object Model provides all the configuration for a single project. General configuration covers the name, its owner and its dependencies on other projects. One can also configure individual phases of the process, which are implemented as plugins. For example, one can configure the compiler-plugin to use Java version 1.5 for compilation, larger projects should be divided into several modules, or sub-projects, each with its own POM. One can then write a root POM through which one can compile all the modules with a single command, POMs can also inherit configuration from other POMs
9.
Apache Ant
–
Apache Ant is a software tool for automating software build processes, which originated from the Apache Tomcat project in early 2000. It was a replacement for the Unix make build tool, and was created due to a number of problems with the unix make and it is similar to Make but is implemented using the Java language, requires the Java platform, and is best suited to building Java projects. The most immediately noticeable difference between Ant and Make is that Ant uses XML to describe the process and its dependencies. By default the XML file is named build. xml, Ant is an Apache Software Foundation project. It is open-source software, and is released under the Apache License, Ant was conceived by James Duncan Davidson while preparing Suns reference JSP/Servlet engine, later Apache Tomcat, for release as open source. Ant was officially released as a product on July 19,2000. At one time, Ant was the tool used by most Java development projects. For example, most open source Java developers include build. xml files with their distribution, because Ant made it trivial to integrate JUnit tests with the build process, Ant made it easy for willing developers to adopt test-driven development, and even Extreme Programming. WOProject-Ant is just one of examples of a task extension written for Ant. These extensions are put to use by copying their jar files into ants lib directory, once this is done, these extension tasks can be invoked directly in the typical build. xml file. The WOProject extensions allow WebObjects developers to use ant in building their frameworks and applications, Antcontrib provides a collection of tasks such as conditional statements and operations on properties as well as other useful tasks. Ant-contrib. unkrig. de implements tasks and types for networking, Swing user interfaces, JSON processing, other task extensions exist for Perforce. Net, EJB, and filesystem manipulations, just to name a few. Below is listed a sample build. xml file for a simple Java Hello and it defines four targets - clean, clobber, compile and jar, each of which has an associated description. The jar target lists the target as a dependency. This tells Ant that before it can start the jar target it must first complete the compile target, within each target are the actions that Ant must take to build that target, these are performed using built-in tasks. For example, to build the compile target Ant must first create a directory called classes, therefore, the tasks used are mkdir and javac. These perform a task to the command-line utilities of the same name. Another task used in this example is named jar, This Ant task has the name as the common Java command-line utility, JAR
10.
GitHub
–
GitHub is a web-based Git or version control repository and Internet hosting service. It offers all of the version control and source code management functionality of Git as well as adding its own features. It provides access control and several features such as bug tracking, feature requests, task management. GitHub offers both plans for private and free repositories on the account which are commonly used to host open-source software projects. As of April 2016, GitHub reports having more than 14 million users and more than 85.5 million repositories, the trademark mascot of GitHub is Octocat, an anthropomorphized cat with cephalopod limbs. Development of the GitHub platform began on 1 October 2007, the site was launched in April 2008 by Tom Preston-Werner, Chris Wanstrath, and PJ Hyett after it had been made available for a few months prior as a beta release. Projects on GitHub can be accessed and manipulated using the standard Git command-line interface, GitHub also allows registered and non-registered users to browse public repositories on the site. Multiple desktop clients and Git plugins have also created by GitHub. The site provides social networking-like functions such as feeds, followers, wikis, a user must create an account in order to contribute content to the site, but public repositories can be browsed and downloaded by anyone. With a registered account, users are able to discuss, manage, create repositories, submit contributions to others repositories. The software that runs GitHub was written using Ruby on Rails and Erlang by GitHub, Inc. developers Chris Wanstrath, PJ Hyett, GitHub is mostly used for code. Emojis GitHub Pages, small websites can be hosted from public repositories on GitHub, nested task-lists within files Visualization of geospatial data 3D render files that can be previewed using a new integrated STL file viewer that displays the files on a 3D canvas. The viewer is powered by WebGL and Three. js, photoshops native PSD format can be previewed and compared to previous versions of the same file. GitHubs Terms of Service do not require public software projects hosted on GitHub to meet the Open Source Definition. For that reason, it is advisable for users and developers intending to use a piece of software found on GitHub to read the license in the repository to determine if it meets their needs. The Terms of Service state, By setting your repositories to be viewed publicly, you agree to allow others to view, GitHub also operates other services, a pastebin-style site called Gist that is for hosting code snippets, and a slide hosting service called Speaker Deck. Tom Preston-Werner presented the then-new Gist feature at a punk rock Ruby conference in 2008, Gist builds on the traditional simple concept of a pastebin by adding version control for code snippets, easy forking, and SSL encryption for private pastes. Because each gist has its own Git repository, multiple code snippets can be contained in a single paste, further, forked code can be pushed back to the original author in the form of a patch, so gists can become more like mini-projects
11.
Martin Fowler
–
His 1999 book Refactoring popularized the practice of code refactoring. In 2004 he introduced Presentation Model, an architectural pattern, Fowler was born and grew up in Walsall, England, where he went to Queen Marys Grammar School for his secondary education. He graduated at University College London in 1986, in 1994 he moved to the United States, where he lives near Boston, Massachusetts in the suburb of Melrose. Fowler started working with software in the early 1980s, out of university in 1986 he started working in software development for Coopers & Lybrand until 1991. In 2000 he joined ThoughtWorks, an integration and consulting company. Fowler has written eight books on the topic of software development and he is a member of the Agile Alliance and helped create the Manifesto for Agile Software Development in 2001, along with 16 fellow signatories. He maintains a bliki, a mix of blog and wiki and he popularized the term Dependency Injection as a form of Inversion of Control. UML Distilled, A Brief Guide to the Standard Object Modeling Language, Refactoring, Improving the Design of Existing Code, With Kent Beck, John Brant, William Opdyke, and Don Roberts. With David Rice, Matthew Foemmel, Edward Hieatt, Robert Mee, noSQL Distilled, A Brief Guide to the Emerging World of Polyglot Persistence. With Kent Beck, Shane Harvie, and Jay Fields, official website A Conversation with Martin Fowler
12.
Ruby MRI
–
Matzs Ruby Interpreter or Ruby MRI is the reference implementation of the Ruby programming language named after Ruby creator Yukihiro Matsumoto. Until the specification of the Ruby language in 2011, the MRI implementation was considered the de facto reference, the latest stable version is Ruby 2.4.0. Yukihiro Matsumoto started working on Ruby on February 24,1993, Ruby was named as a gemstone because of a joke within Matsumotos circle of friends alluding to the name of the Perl programming language. The 1.8 branch has maintained until June 2013. This version provides bug fixes, but also many Ruby feature enhancements, the RubySpec project has independently created a large test suite that captures 1.8. 6/1.8. 7/1.9 behavior as a reference conformance tool. Ruby MRI1.9.2 passed over 99% of RubySpec, MRI Ruby 2.2 crashed on one of the tests. As a result of the uptake by the MRI developers. Prior to release 1.9.3, the Ruby interpreter and libraries were distributed as dual-licensed free and open source software, under the GNU General Public License or the Ruby License. In release 1.9.3, Rubys License has been changed from a dual license with GPLv2 to a license with the 2-clause BSD license. Ruby MRI is available for the operating systems, This list may not be exhaustive. PowerPC64 performance Since version 2.2.1, Ruby MRI performance on PowerPC64 was improved, commonly noted limitations include, Backward compatibility Version 1.9 and 1.8 have slight semantic differences. The release of Ruby 2.0 sought to avoid such a conflict between different versions
13.
YARV
–
YARV is a bytecode interpreter that was developed for the Ruby programming language by Koichi Sasada. The goal of the project was to reduce the execution time of Ruby programs. Since YARV has become the official Ruby interpreter for Ruby 1.9, it is also named KRI, in the vein as the original Ruby MRI. Benchmarks by rubychan. de showed significant increases in performance, benchmarks by Antonio Cangiano showed an average four times speed improvement over the original interpreter. Both evaluations comprised a mix of mostly synthetic benchmarks, YARV was merged into the Ruby Subversion repository on January 1,2007. It was released as part of Ruby 1.9.0 on December 26,2007, parrot virtual machine Ruby Rubinius YARV home page Note, obsolete now that YARV is merged into Ruby YARV, Yet Another RubyVM. on Rails
14.
JRuby
–
JRuby is an implementation of the Ruby programming language atop the Java Virtual Machine, written largely in Java. It is free software released under a three-way EPL/GPL/LGPL license, JRuby is tightly integrated with Java to allow the embedding of the interpreter into any Java application with full two-way access between the Java and the Ruby code. JRubys lead developers are Charles Oliver Nutter and Thomas Enebo, with current and past contributors including Ola Bini. In September 2006, Sun Microsystems hired Enebo and Nutter to work on JRuby full-time, in June 2007, ThoughtWorks hired Ola Bini to work on Ruby and JRuby. In July 2009, the JRuby developers left Sun to continue JRuby development at Engine Yard, in May 2012, Nutter and Enebo left Engine Yard to work on JRuby at Red Hat. JRuby was originally created by Jan Arne Petersen, in 2001, at that time and for several years following, the code was a direct port of the Ruby 1.6 C code. With the release of Ruby 1.8.6, an effort began to update JRuby to 1.8.6 features, since 2001, several contributors have assisted the project, leading to the current core team of around six members. JRuby 1.1 added Just-in-time compilation and Ahead-of-time compilation modes to JRuby and was faster in most cases than the then-current Ruby 1.8.7 reference implementation. JRuby packages are available for most platforms, Fedora 9 was among the first to include it as a package at JRuby 1.1.1. In July 2009, the core JRuby developers at Sun Microsystems, Charles Oliver Nutter, Thomas Enebo and Nick Sieger, in May 2012, Nutter and Enebo left Engine Yard to work on JRuby at Red Hat. JRuby has supported compatibility with Ruby MRI versions 1.6 through 1.9.3, JRuby 1.0 supported Ruby 1.8.6, with JRuby 1.4.0 updating that compatibility to Ruby 1.8.7. JRuby 1.6.0 added simultaneous support for Ruby 1.9.2, JRuby 9.0.0.0 added support for Ruby 2.2. JRuby has been able to run the Ruby on Rails web framework since version 0.9, with the ability to execute RubyGems, since the hiring of the two lead developers by Sun, Rails compatibility and speed have improved greatly. JRuby version 1.0 successfully passed all of Railss own test cases. Since then, developers have begun to use JRuby for Rails applications in production environments, JSR292 proposes, adding a new invokedynamic instruction at the JVM level, allowing method invocation using dynamic type checking, dynamically changing classes and methods at runtime. The Sun Open source project Multi Language Virtual Machine aims to prototype this JSR, the first working prototype, developed as a patch on OpenJDK, was announced and made available on end of August 2008. The JRuby team has implemented dynamic invocation into their codebase, dynamic invocation initially shipped with the 1.1.5 release in a primitive form. Version 1.7.0 enabled it by default on Java 8 builds and this table presents only releases that present significant steps in JRuby history, aside from versions that mainly fixed bugs and improved performance
15.
Rubinius
–
Rubinius is an alternative Ruby implementation created by Evan Phoenix. Based loosely on the Smalltalk-80 Blue Book design, Rubinius seeks to provide a rich, Rubinius follows in the Lisp and Smalltalk traditions, by natively implementing as much of Ruby as possible in Ruby code. It also has a goal of being thread-safe in order to be able to embed more than one interpreter in a single application, from 2007 to 2013, Engine Yard funded one full-time engineer to work exclusively on Rubinius. Evan Phoenix is now CEO of Vektra, - Community-powered gem compatibility for Rubinius
16.
MagLev (software)
–
MagLev is an alternative implementation of the Ruby programming language built on the GemStone/S virtual machine from GemTalk Systems. Maglev runs inside an image like Smalltalk, offering transparent object persistence to Ruby objects, object persistence is based on ACID transactions that allow multiple running instances to see a shared object graph. Maglev uses a process-based concurrency model, mapping Ruby threads to Smalltalk Processes, maglev targets Ruby 1.8.7 and runs a significant number of RubySpec. It supports several C extensions including Nokogiri, JSON and bcrypt
17.
RubyMotion
–
RubyMotion is an implementation of the Ruby programming language that runs on iOS, OS X and Android. 3rd-party Objective-C libraries can be included in a RubyMotion project, either manually or by using a package manager such as CocoaPods, programs are statically compiled into machine code by use of Rake as its build and execution tool. RubyMotion projects can be developed with any text editor, the RubyMine IDE provides support for the RubyMotion toolchain, such as code-completion and visual debugging. As of version 2.0, RubyMotion now supports the development of applications for OS X in addition to iOS, Android support was added in version 3.0. Examples of applications built in RubyMotion include 37signalss Basecamp for iPhone, the Bandcamp iPhone app, mruby - another minimal Ruby implementation, targeted at mobile devices RubyMotion website HipByte website
18.
MacRuby
–
MacRuby was an implementation of the Ruby language that ran on the Objective-C runtime and CoreFoundation framework under development by Apple Inc. which was supposed to replace RubyCocoa. It targeted Ruby 1.9 and used the high performance LLVM compiler infrastructure starting with version 0.5 and it supports both ahead-of-time and just-in-time compilation. MacRuby supported Interface Builder and shipped with a library called HotCocoa to simplify Cocoa programming. MacRuby was also used as a scripting language for Objective-C applications. In May 2012, Laurent Sansonetti announced RubyMotion, a port of MacRuby for iOS, development on MacRuby effectively ended in late 2011, coinciding with the principal authors departure from Apple Inc. MacRuby was originally called ruby+objc and was developed by Laurent Sansonetti, in March 2008, the first publicly available version, MacRuby 0.1, was announced on the official RubyTalk forum. Version 0.2 was released in June 2008, and implemented Ruby strings, arrays, in September 2008, MacRuby 0.3 was released and included the HotCocoa library as well as several HotCocoa example programs. In October 2008, Apple created its first MacRuby page on its Developer Connection website, MacRuby 0.4 was released in March 2009, MacRuby 0.5,0.6,0.7 in January, May and October 2010 respectively. MacRuby 0.8, was released on December 13,2010,0.9 on February 25,20110.10 on March 23,2011,0.11 on October 17,2011,0.12 on June 11,2012
19.
IronRuby
–
IronRuby is an implementation of the Ruby programming language targeting Microsoft. NET framework. The project is inactive, with the last release of IronRuby being in March 2011. On April 30,2007, at MIX2007, Microsoft announced IronRuby and it was planned to be released to the public at OSCON2007. On July 23,2007, as promised, John Lam and he also announced a quick timeline for further integration of IronRuby into the open source community. On August 31,2007, John Lam and the DLR Design Team released the code in its stage on RubyForge. The source code has continued to be updated regularly by the core Microsoft team, the team also does not accept community contributions for the core Dynamic Language Runtime library, at least for now. On July 24,2008, the IronRuby team released the first binary alpha version, on November 19,2008, they released a second Alpha version. The team actively worked to support Rails on IronRuby, some Rails functional tests started to run, but a lot of work still needed to be done to be able to run Rails in a production environment. On May 21,2009, they released 0.5 version in conjunction with RailsConf 2009, with this version, IronRuby could run some Rails applications, but still not on a production environment. Version 0.9 was announced as OSCON2009, version 1.0 RC1 became available on 20 November 2009. Version 1.0 became available on 12 April 2010, in two different versions, The preferred one, which runs on top of. NET4.0, a version with more limited features, which ran on top of. NET2.0. In July 2010, Microsoft let go Jimmy Schementi, one of two remaining members of the IronRuby core team and stopped funding the project, the last published release of IronRuby was on 13 March 2011 as version 1.1.3. IronRuby may run as well on Mono as it does on Microsoft Common Language Runtime and it may not build on Mono depending on the build. The interoperability between IronRuby classes and regular. NET Framework classes is limited because many Ruby classes are not. NET classes. However, better support for languages in. NET4.0 may increase interoperability in the future. It can be used as an engine in the browser just like the JavaScript engine. IronRuby scripts are passed like simple client-side JavaScript-scripts in <script>-tags and it is then also possible to modify embedded XAML markup. The technology behind this is called Gestalt, IronRuby is integrating RubySpec, which is a project to write a complete, executable specification for the Ruby programming language
20.
Integrated development environment
–
An integrated development environment is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of a code editor, build automation tools. Most modern IDEs have intelligent code completion, some IDEs, such as NetBeans and Eclipse, contain a compiler, interpreter, or both, others, such as SharpDevelop and Lazarus, do not. The boundary between an integrated development environment and other parts of the software development environment is not well-defined. Sometimes a version control system, or various tools to simplify the construction of a Graphical User Interface, are integrated, many modern IDEs also have a class browser, an object browser, and a class hierarchy diagram, for use in object-oriented software development. Integrated development environments are designed to maximize programmer productivity by providing tight-knit components with similar user interfaces, IDEs present a single program in which all development is done. This program typically provides many features for authoring, modifying, compiling, deploying and debugging software and this contrasts with software development using unrelated tools, such as vi, GCC or make. One aim of the IDE is to reduce the necessary to piece together multiple development utilities. Reducing that setup time can increase productivity, in cases where learning to use the IDE is faster than manually integrating all of the individual tools. Tighter integration of all development tasks has the potential to improve overall productivity beyond just helping with setup tasks, for example, code can be continuously parsed while it is being edited, providing instant feedback when syntax errors are introduced. That can speed learning a new programming language and its associated libraries, some IDEs are dedicated to a specific programming language, allowing a feature set that most closely matches the programming paradigms of the language. However, there are many multiple-language IDEs, while most modern IDEs are graphical, text-based IDEs such as Turbo Pascal were in popular use before the widespread availability of windowing systems like Microsoft Windows and the X Window System. They commonly use function keys or hotkeys to execute frequently used commands or macros, IDEs initially became possible when developing via a console or terminal. Early systems could not support one, since programs were prepared using flowcharts, dartmouth BASIC was the first language to be created with an IDE. Its IDE was command-based, and therefore did not look much like the menu-driven, however it integrated editing, file management, compilation, debugging and execution in a manner consistent with a modern IDE. Maestro I is a product from Softlab Munich and was the worlds first integrated development environment for software, Maestro I was installed for 22,000 programmers worldwide. Until 1989,6,000 installations existed in the Federal Republic of Germany, Maestro was arguably the world leader in this field during the 1970s and 1980s. Today one of the last Maestro I can be found in the Museum of Information Technology at Arlington, one of the first IDEs with a plug-in concept was Softbench
21.
Komodo Edit
–
Komodo Edit is a free text editor for dynamic programming languages. It was introduced in January 2007 to complement ActiveStates commercial Komodo IDE, as of version 4.3, Komodo Edit is built atop the Open Komodo project. Many of Komodos features are derived from an embedded Python interpreter, Open Komodo uses the Mozilla and Scintilla code base to provide its features, including support for many popular languages, across all common operating systems. Both Komodo Edit and IDE support user customizing via plug-ins and macros, Komodo plug-ins are based on Mozilla Add-ons and extensions can be searched for, downloaded, configured, installed and updated from within the application. Available extensions include a functions list, pipe features, additional language support, the commercial version also adds code browsing, a database explorer, collaboration, support for many popular source code control systems, and more. Independent implementations of some of features, such as the database editor, git support
22.
NetBeans
–
NetBeans is a software development platform written in Java. The NetBeans Platform allows applications to be developed from a set of software components called modules. Applications based on the NetBeans Platform, including the NetBeans integrated development environment, the NetBeans IDE is primarily intended for development in Java, but also supports other languages, in particular PHP, C/C++ and HTML5. NetBeans is cross-platform and runs on Microsoft Windows, Mac OS X, Linux, Solaris, the NetBeans Team actively support the product and seek feature suggestions from the wider community. In 1997, Roman Staněk formed a company around the project, Sun open-sourced the NetBeans IDE in June of the following year. Since then, the NetBeans community has continued to grow, in 2010, Sun was acquired by Oracle Corporation. Under Oracle, NetBeans competed with JDeveloper, a freeware IDE that has historically been a product of the company, the move was endorsed by Java creator James Gosling. NetBeans 6 is available in official repositories of major Linux distributions, NetBeans IDE6.5, released in November 2008, extended the existing Java EE features. The NetBeans IDE Bundle for C/C++ supports C/C++ and FORTRAN development, NetBeans IDE6.8 is the first IDE to provide complete support of Java EE6 and the GlassFish Enterprise Server v3. NetBeans IDE7.0 was released in April 2011, on August 1,2011, the NetBeans Team released NetBeans IDE7.0.1, which has full support for the official release of the Java SE7 platform. NetBeans IDE7.3 was released in February 2013 which added support for HTML5, NetBeans IDE7.4 was released on October 15,2013. NetBeans IDE8.0 was released on March 18,2014, NetBeans IDE8.1 was released on November 4,2015. NetBeans IDE8.2 was released on October 3,2016, NetBeans has a roadmap document for release plans. The NetBeans Platform is a framework for simplifying the development of Java Swing desktop applications, the NetBeans IDE bundle for Java SE contains what is needed to start developing NetBeans plugins and NetBeans Platform based applications, no additional SDK is required. Any application can include the Update Center module to allow users of the application to download digitally signed upgrades, reinstalling an upgrade or a new release does not force users to download the entire application again. NetBeans IDE supports development of all Java application types out of the box, among other features are an Ant-based project system, Maven support, refactorings, version control. Modularity, All the functions of the IDE are provided by modules, each module provides a well-defined function, such as support for the Java language, editing, or support for the CVS versioning system, and SVN. NetBeans contains all the modules needed for Java development in a single download, modules also allow NetBeans to be extended
23.
RadRails
–
RadRails is a Rapid Application Development IDE for the Ruby on Rails framework. The goal of RadRails is to provide Ruby on Rails developers with everything they need to develop, manage, test, features include source control, code assist, refactoring, debugging, WEBrick servers, generator wizards, syntax highlighting, data tools, and much more. The RadRails IDE is built on the Eclipse RCP, and includes the RDT, the RadRails tools are also available as Eclipse +plug-ins. At EclipseCon 2006 RadRails won the Community Award for Best Open-Source Eclipse-based tool, syntax highlighting, auto completion, code assist, error reporting, outlining, etc. During that time, the three worked as co-ops from the Rochester Institute of Technology at IBM Rational in Raleigh. Development continued through 2006, including contributions from Andy Gianfagna. Ryan Lowe joined the team in mid-2006 to deploy and maintain an automated system for the project. In November 2006, Kyle Shank and Matt Kent began working on an idea for a startup company, by March 2007, Kyle and Matt were devoting most of their spare time to Persai and had little time left to maintain RadRails. Kyle met with Aptana founder Paul Colton at EclipseCon 2007, on March 8,2007 Aptana took over the project and renamed it to Aptana RadRails. Although RadRails is still an open project, most work is now done by an Aptana employee, Christopher Williams. On May 2008, the book Aptana RadRails, An IDE for Rails Development and this book covers all the features of the Community Edition 1.0
24.
JetBrains
–
JetBrains is a software development company whose tools are targeted towards software developers and project managers. As of 2015, the company has over 500 employees in its six offices, in Prague, Saint Petersburg, Moscow, Munich, Boston and Novosibirsk. The company offers a family of integrated development environments for the programming languages Java, Ruby, Python, PHP, SQL, Objective-C, C++. The company is currently developing IDEs for languages including C# and GO. In 2011 the company entered a new area by introducing Kotlin, infoWorld magazine awarded the firm Technology of the Year Award in 2015 and 2011. JetBrains, initially called IntelliJ, was founded in 2000 in Prague by three software developers, Sergey Dmitriev, Valentin Kipiatkov and Eugene Belyaev, the companys first product was IntelliJ Renamer, a tool for code refactoring in Java. In addition to aforementioned products, JetBrains are also the makers of tools for, AppCode is an IDE primarily targeting development for Apple platforms like macOS, iOS, watchOS and tvOS. It supports programming in C, C++, Objective-C and Swift, unlike most JetBrains that are cross-platform AppCode is only available for macOS. CLion is a cross-platform C and C++ IDE for Linux, OS X, the initial version supports GNU Compiler Collection and Clang compilers and GDB debugger, LLDB and Google Test. Forrester Research analyst Michael Facemire expressed doubts about the products potential, dataGrip is a cross-platform IDE that is aimed at DBAs and developers working with SQL databases. It has built-in drivers that support DB2, Derby, H2, HSQLDB, MySQL, Oracle, PostgreSQL, SQL Server, Sqlite, Hub is a free JetBrains Team Tools connector. It enables advanced integration between JetBrains team collaboration tools, YouTrack, Upsource, Teamcity, a user can log in once in Hub and stay authenticated in all JetBrains tools throughout. Hub also manages a database of users, groups, roles, permissions, projects. It provides a Dashboard to track issues, commits, build status and more data from YouTrack, TeamCity, IntelliJ IDEA was JetBrains first IDE. It is cross-platform and is aimed at Java, Java EE. An open-source version is available under the name IntelliJ IDEA Community Edition, IntelliJ IDEA Ultimate Edition can be made to include the feature set of PhpStorm, PyCharm and RubyMine via plugins. Kotlin is a programming language that runs on the Java Virtual Machine. The name comes from the Kotlin Island, near St. Petersburg, MPS is an open-source language workbench that focuses on Domain-specific Languages
25.
Capistrano (software)
–
Capistrano is an open source tool for running scripts on multiple servers, its main use is deploying web applications. It automates the process of making a new version of an available on one or more web servers. Capistrano is written in the Ruby language and is distributed using the RubyGems distribution channel and it is an outgrowth of the Ruby on Rails web application framework, but it is also used to deploy web applications written using other languages, for example, PHP. Capistrano is implemented primarily for use on the UNIX shell command line, a user may choose from many Capistrano recipes, e. g. to deploy current changes to the web application or roll back to the previous deployment state. Originally called SwitchTower, the name was changed to Capistrano in March 2006 due to a trademark conflict, the original author, Jamis Buck, announced on February 24,2009 that he is no longer the maintainer of the project. Capistrano is a utility and framework for executing commands in parallel on multiple remote machines and it uses a simple domain-specific language borrowed in part from the tool Rake. It also supports tunnelling connections via some gateway machine to allow operations to be performed behind VPNs, the deployment tasks are now opt-in and require clients to explicitly put load deploy in their recipes. This defines a single task, called xml_libs, and says that it should be executed only on the www. capify. org host, when executed, it will display all files and subdirectories in /usr/lib that include the text xml in their name. Deploying Rails Applications, A Step-by-Step Guide
26.
Chef (software)
–
Chef is both the name of a company and the name of a configuration management tool written in Ruby and Erlang. It uses a pure-Ruby, domain-specific language for writing system configuration recipes, Chef contains solutions for both small and large scale systems, with features and pricing for the respective ranges. The user writes recipes that describe how Chef manages server applications and utilities and these recipes describe a series of resources that should be in a particular state, packages that should be installed, services that should be running, or files that should be written. These various resources can be configured to specific versions of software to run, Chef makes sure each resource is properly configured and corrects any resources that are not in the desired state. Chef can run in client/server mode, or in a standalone configuration named chef-solo, in client/server mode, the Chef client sends various attributes about the node to the Chef server. The server uses Solr to index these attributes and provides an API for clients to query this information, Chef recipes can query these attributes and use the resulting data to help configure the node. Traditionally, Chef was used to manage Linux but later versions support Microsoft Windows as well and it is one of the four major configuration management systems on Linux, along with CFEngine, Bcfg2, and Puppet. More than a configuration management tool, Chef, along with Puppet, Ansible, Chef was created by Adam Jacob as a tool for his consulting company, whose business model was to build end-to-end server/deployment tools. Jacob showed Chef to Jesse Robbins, who saw its potential after running operations at Amazon and they founded a new company with Barry Steinglass, Nathen Haneysmith, and Joshua Timberman to turn Chef into a product. The project, was originally named marionette, but the word was too long and cumbersome to type, in February 2013, Opscode released version 11 of Chef. Changes in this included a complete rewrite of the core API server in Erlang. Chef is supported on multiple platforms according to a supported platforms matrix for client, major platform support for clients includes AIX, RHEL/CentOS, FreeBSD, OS X, Solaris, Microsoft Windows and Ubuntu. Additional client platforms include Arch Linux, Debian and Fedora, Chef Server is supported on RHEL/CentOS, Oracle Linux, and Ubuntu. Chef is used by Facebook, the HP Public Cloud and Prezi, comparison of open source configuration management software Official website Chef on GitHub
27.
Hackety Hack
–
Hackety Hack is an open source application that teaches individuals how to create software. It combines an IDE with an extensive Lessons system, the cross-platform desktop application also has integration with the website, where Hackers can share what theyve learned, ask questions, and submit feedback. Hackety Hack was originally created by _why in order to solve The Little Coders Predicament, that learning modern software development is complicated, why eventually developed The Bylaws of Hackety in the Hackety Manifesto which lay down the guidelines for the project. Why enlisted the help of a group of 25 parents and their children to get early feedback, the earliest iterations of Hackety Hack were based on an embedded Gecko browser, but this eventually transformed into the Shoes GUI toolkit. Why intended to release Hackety Hack 1.0 at the Art, in his talk, he showed off a build thats known as version 0. L, with promises of a 1.0 soon to follow. This never came to pass, as Why mysteriously disappeared in August 2009, because they were stored in git, the Ruby community was able to revive them. A small team kept working, releasing v0.9 on Christmas of 2009, Hackety Hack was chosen as a project for the Ruby Summer of Code in 2010. Fela Winkelmolen was the student chosen to work on the project, chris Redinger, Jeff Casimir, Sarah Mei, and Steve Klabnik are mentoring. The two largest similar projects are Scratch and Alice, there are two major differences, Both of these projects use a graphical programming language based on the concept of blocks, but Hackety Hack teaches Ruby. Both Scratch and Alice are university projects out of MIT and CMU, respectively, the difference of blocks vs. Ruby stems from a shared belief, most programming languages require a lot of effort and knowledge before one can build more than the simplest of programs. The solution that Hackety Hack pursues is by teaching with a more traditional programming language, but adding libraries that make it easy to do complicated tasks in one line. For example, in a traditional software library, making a background with a gradient would take five or six lines of code using a toolkit like QT. This is achieved by choosing simple defaults and dropping support for lesser-used options, the university affiliation that Scratch and Alice enjoy gives them more resources to bring to bear. Both projects have teams of people, the credibility of their institutions. Hackety Hack is a more nimble project, since the team is much smaller and its also truly an open-source project, whereas the Alice project, for example, only releases dumps of the project source every so often. Hackety Hacks development is entirely open
28.
Homebrew (package management software)
–
Homebrew is a free and open-source software package management system that simplifies the installation of software on Apples macOS operating system. Originally written by Max Howell, the manager has gained popularity in the Ruby on Rails community. Homebrew has been recommended for its ease of use as well as its integration into the command line, Homebrew has made extensive use of GitHub in order to expand the support of several packages through user contributions. In 2010, Homebrew was the repository on GitHub. In 2012, Homebrew had the largest number of new contributors on GitHub, in 2013, Homebrew had both the largest number of contributors and issues closed of any project on GitHub. Homebrew was written by Max Howell in 2009, in March 2013, Homebrew successfully completed a Kickstarter campaign to raise funds for servers to test and build formulae and managed to raise £14,859. On December 13,2013, the Homebrew repository migrated from Howells GitHub account to its own project account, in February 2015, due to downtime at SourceForge which resulted in binaries being unavailable, Homebrew moved their hosting to bintray. As of July 2016, Homebrew is maintained by a team of 12 developers, Homebrew is written in the Ruby programming language and targets the version of Ruby that comes installed with the macOS operating system. It is by default installed into /usr/local and consists of a git repository, binary packages called bottles provide pre-built formulae with default options. In 2016, Homebrew migrated the git repository to /usr/local/Homebrew and changed the ownership of the sub-directories instead, such as /usr/local/bin, /usr/local/include, Homebrew collects user behaviour data and reports it to Google Analytics. It is possible to opt out, list of software package management systems Official website Homebrew on GitHub The Changelog #223, Homebrew and Package Management with Mike McQuaid
29.
Pry (software)
–
Pry is an interactive shell for the Ruby programming language. It is notable for its Smalltalk-inspired ability to start a REPL within a running program and this lets programmers debug and modify the current state of a system. Pry exposes most of its introspective capabilities using a filesystem metaphor, for example, it has a cd command to start interacting with a particular object, and uses ls to list methods and variables. It is possible to start Pry at any point inside a running program, due to the reflective nature of Ruby, this lets the programmer inspect the program, change its current state, or correct the source code without restarting the process. A number of third party plugins are available for Pry, these add tighter integration with other Ruby projects, enhance the abilities of Pry itself, the main competitor to Pry is IRB, a standalone interactive shell that is packaged with releases of the Ruby programming language. There are a number of third-party plugins that add features to make IRB behave more like Pry. There are other projects to bring a better-than-IRB REPL to Ruby, such as ripl, but they are yet to see widespread adoption
30.
Puppet (software)
–
In computing, Puppet is an open-source software configuration management tool. It runs on many Unix-like systems as well as on Microsoft Windows, Puppet is produced by Puppet, founded by Luke Kanies in 2005. It is written in Ruby and released as software under the GNU General Public License until version 2.7.0. Puppet is designed to manage the configuration of Unix-like and Microsoft Windows systems declaratively, the user describes system resources and their state, either using Puppets declarative language or a Ruby DSL. This information is stored in files called Puppet manifests, any actions taken by Puppet are then reported. The resource abstraction layer enables administrators to describe the configuration in terms, such as users. Puppet is model-driven, requiring limited programming knowledge to use, Puppet comes in two flavors, Puppet Enterprise and Open Source Puppet. In addition to providing functionalities of Open Source Puppet, Puppet Enterprise also provides GUI, API, the client is known as agent and the server is known as master. It can also be used as a stand-alone application, Puppet Master is installed on one or more servers and the systems that need to be configured install Puppet Agent. Puppet Agents communicate with the server and fetch configuration instructions, the Agent then applies the configuration on the system and sends the status report to the server. Devices can run Puppet Agent as a daemon, that can be triggered periodically as a job or can be run manually whenever needed. Puppet architecture consists of, Configuration Language, In Puppet, items to be configured are termed as ‘resources’, since Puppet follows declarative language, it just needs to specify ‘what’ action needs to be performed on the resources. The action is implemented by declaring three things for every resource, its type, title and a list of attributes whose state needs to be configured, Puppet code is written into files called Manifests. These are stored on the server and contain instructions for each client. Format for writing manifest files is stated below, example, Resource Abstraction, Puppet provides resource abstraction by providing the ability to configure resources on different platforms without worrying about the platform dependencies. Facter is the piece of information which agents provide to the server describing what kind of operating system is being used, their IP, hostname, etc. Indirectly, it is a way of informing Puppet as to what needs to be followed for software configuration in its case. For any given type of resource, there are a number of providers, providers have packet management tools corresponding to different platforms/operating systems
31.
Redmine
–
Redmine is a free and open source, web-based project management and issue tracking tool. It allows users to manage projects and associated subprojects. It features per project wikis and forums, time tracking, and flexible and it includes a calendar and Gantt charts to aid visual representation of projects and their deadlines. Redmine integrates with various control systems and includes a repository browser. The design of Redmine is significantly influenced by Trac, a package with some similar features. Redmine is written using the Ruby on Rails framework and it is cross-platform and cross-database and supports 34 languages. Among the users of Redmine is Ruby, Redmine is the most popular open source project planning tool. Following concerns with the way the feedback and patches from the Redmine community were being handled a group of Redmine developers created a fork of the project in February 2011, the fork was initially named Bluemine, but changed to ChiliProject. After the leader of the fork moved on from ChiliProject in 2012 and development got stuck, another fork of ChiliProject called OpenProject is being actively worked on. Comparison of project management software Software configuration management Comparison of issue-tracking systems Lesyuk, Andriy
32.
RSpec
–
RSpec is a Domain Specific Language testing tool written in Ruby to test Ruby code. It is a development framework which is extensively used in the production applications. It contains its own mocking framework that is integrated into the framework based upon JMock. The simplicity in the RSpec syntax makes it one of the testing tools for Ruby applications. The RSpec tool can be used by installing the rspec gem which consists of 3 other gems namely rspec-core, rspec-expectation, RSpec was started as an experiment by Steven Baker in 2005 along with his team members Dave Astels, Aslak Hellesøy and David Chelimsky. David Chelimsky was responsible for developing the RSpec-Rails which facilitated the integration with Ruby on Rails, the initial release i. e. RSpec 1.0 came out in May 2007 which contained many prime features of RSpec which are being included in the latest releases also. However, due to technical issues such as testing speed. The third version of RSpec i. e. the RSpec 3 was released in July 2014 which had new features like verify doubles, composable matchers. The latest version of the RSpec currently available is RSpec 3.5, as mentioned above, RSpec provides a domain-specific language to describe the behavior of objects. The keywords used in RSpec are similar to the used in other languages and/or TDD frameworks. The syntax of RSpec provides the ease of readability and describes the behavior of the code thereby providing freedom to the programmer, every testing framework works in the following flow - given some context, when some event occurs, what outcome is expected. The methods like describe, context and it form the analogy, the describe method is used to describe a class, method or an example group. This is the block which actually contains the test code. This method takes a number of arguments and an optional block. However, normally one or two arguments are used to describe the behavior of the example group, the first argument represents the reference to the class or module whereas the second argument is optional whose datatype would be String. The example groups can be nested as well, an example of using the describe method is as follows, The context block is used to describe the context in which the class or method mentioned in the describe block is being used. This can be considered as an alias to the word describe in this scenario, generally, describe is used for things and context is used for contexts. It helps to venture out different outcomes in different scenarios, the example mentioned above can be described using the context method as follows, Using context makes it easier to scan a spec file and makes it clear what it relates to
33.
Ruby Version Manager
–
Ruby Version Manager, often abbreviated as RVM, is a unix-like software platform designed to manage multiple installations of Ruby on the same device. The entire ruby environment including the Ruby interpreter, installed RubyGems, the different versions can then be switched between to enable a developer to work on several projects with different version requirements. In addition to MRI, the standard Ruby interpreter, RVM functions as an installer for various implementations of Ruby. These include JRuby, mruby, MacRuby, IronRuby, Maglev, Rubinius, Ruby Enterprise Edition, Topaz, in addition, RVM supports the installation of patched versions of MRI. RVM provides features for organization of Ruby gems through gemsets, collections of gems separated by a namespace, gemsets can be associated with directories/projects through the use of the RVM-exclusive. rvmrc file. An alternative to using the. rvmrc file and its format is use of the. ruby-version and. ruby-gemset files, additionally, using. rvmrc requires trusting to prevent execution of unauthorized code, while. ruby-version does not
34.
Library (computing)
–
In computer science, a library is a collection of non-volatile resources used by computer programs, often to develop software. These may include data, documentation, help data, message templates, pre-written code. In IBMs OS/360 and its successors they are referred to as partitioned data sets, a library is also a collection of implementations of behavior, written in terms of a language, that has a well-defined interface by which the behavior is invoked. For instance, people who want to write a higher level program can use a library to make system calls instead of implementing those system calls over and over again, in addition, the behavior is provided for reuse by multiple independent programs. A program invokes the library-provided behavior via a mechanism of the language, for example, in a simple imperative language such as C, the behavior in a library is invoked by using Cs normal function-call. What distinguishes the call as being to a library, versus being to function in the same program, is the way that the code is organized in the system. This distinction can gain a hierarchical notion when a program grows large, in that case, there may be internal libraries that are reused by independent sub-portions of the large program. The value of a lies in the reuse of the behavior. When a program invokes a library, it gains the behavior implemented inside that library without having to implement that behavior itself, libraries encourage the sharing of code in a modular fashion, and ease the distribution of the code. The behavior implemented by a library can be connected to the program at different program lifecycle phases. If the code of the library is accessed during the build of the invoking program, an alternative is to build the executable of the invoking program and distribute that, independently of the library implementation. The library behavior is connected after the executable has been invoked to be executed, either as part of the process of starting the execution, in this case the library is called a dynamic library. A dynamic library can be loaded and linked when preparing a program for execution, alternatively, in the middle of execution, an application may explicitly request that a module be loaded. Most compiled languages have a library although programmers can also create their own custom libraries. Most modern software systems provide libraries that implement the majority of the system services, such libraries have commoditized the services which a modern application requires. As such, most code used by modern applications is provided in these system libraries, the earliest programming concepts analogous to libraries were intended to separate data definitions from the program implementation. JOVIAL brought the COMPOOL concept to popular attention in 1959, although it adopted the idea from the large-system SAGE software, COBOL also included primitive capabilities for a library system in 1959, but Jean Sammet described them as inadequate library facilities in retrospect. Another major contributor to the library concept came in the form of the subprogram innovation of FORTRAN