Introduction to reactive programming & ReactiveCocoaFlorent Pillet
Reactive programming models asynchronous data streams as signals that produce events over time. ReactiveCocoa is a framework that implements reactive programming in Objective-C. It uses signals to represent asynchronous data streams and operators to transform and combine signals. ReactiveCocoa code separates the logic to produce and consume data, making it more modular, reusable, testable and by reducing state and mutability. While the syntax is different, learning to think reactively can improve code quality and stability.
This document defines options and sets up a simulation to test carrier sense in NS-2. It defines wireless channel, radio propagation, and MAC layer options. It creates 4 nodes with an 802.11 MAC and positions two nodes to have a conversation and the other two nodes some distance away to have another conversation. It generates CBR traffic between the node pairs and runs the simulation for 10 seconds.
This document provides an overview of the NS-2 network simulator. It discusses how NS-2 allows testing of complex network scenarios in a controlled and cost-effective manner compared to physical experiments. It describes key NS-2 features like support for various protocols, traffic models, and error models. It also outlines the object-oriented structure of NS-2 with its C++ backend and OTcl frontend and provides examples of configuring simulations involving nodes, links, traffic generation and capturing network events.
En vieux bourlingueur du langage Swift, Grégoire Lhotellier viendra nous présenter les séquences et les collections du nouveau langage d’Apple. Il nous briefera sur l’essentiel de ce qu’il faut en savoir et ce qu’elles changent par rapport à leurs équivalent Objective-C.
Study of aloha protocol using ns2 network java proramMeenakshi Devi
This document summarizes a network simulation program written in NS2 that studies the Aloha protocol. The program creates 6 nodes connected in a network topology with duplex links of varying bandwidths and distances. It defines agents, applications and traffic to generate and receive packets. The simulation runs for 5 seconds of simulation time and traces are recorded to analyze the performance of the Aloha protocol under the different network conditions defined in the program.
1. The document describes an ns-2 tutorial exercise on simulating computer networks using the ns-2 simulator. It provides example scripts for basic network simulations.
2. The example scripts simulate simple network topologies with increasing complexity, including UDP and TCP traffic over droptail and queue configurations.
3. Later examples introduce more complex scenarios like dynamic routing protocols and simulating link failures to observe network behavior.
Infinum iOS Talks #1 - Swift under the hood: Method Dispatching by Vlaho PolutaInfinum
This document discusses method dispatching in Swift. It explains that method dispatch determines which method is invoked in response to a message. In C++ and Objective-C, methods can use static or dynamic dispatch. Static dispatch is determined at compile-time, while dynamic dispatch is determined at runtime. The document also shows how Swift can generate Objective-C classes and use the runtime, with Swift classes being Objective-C classes under the hood. It demonstrates through benchmarks that Swift code can be as fast or faster than equivalent Objective-C code.
Introduction to reactive programming & ReactiveCocoaFlorent Pillet
Reactive programming models asynchronous data streams as signals that produce events over time. ReactiveCocoa is a framework that implements reactive programming in Objective-C. It uses signals to represent asynchronous data streams and operators to transform and combine signals. ReactiveCocoa code separates the logic to produce and consume data, making it more modular, reusable, testable and by reducing state and mutability. While the syntax is different, learning to think reactively can improve code quality and stability.
This document defines options and sets up a simulation to test carrier sense in NS-2. It defines wireless channel, radio propagation, and MAC layer options. It creates 4 nodes with an 802.11 MAC and positions two nodes to have a conversation and the other two nodes some distance away to have another conversation. It generates CBR traffic between the node pairs and runs the simulation for 10 seconds.
This document provides an overview of the NS-2 network simulator. It discusses how NS-2 allows testing of complex network scenarios in a controlled and cost-effective manner compared to physical experiments. It describes key NS-2 features like support for various protocols, traffic models, and error models. It also outlines the object-oriented structure of NS-2 with its C++ backend and OTcl frontend and provides examples of configuring simulations involving nodes, links, traffic generation and capturing network events.
En vieux bourlingueur du langage Swift, Grégoire Lhotellier viendra nous présenter les séquences et les collections du nouveau langage d’Apple. Il nous briefera sur l’essentiel de ce qu’il faut en savoir et ce qu’elles changent par rapport à leurs équivalent Objective-C.
Study of aloha protocol using ns2 network java proramMeenakshi Devi
This document summarizes a network simulation program written in NS2 that studies the Aloha protocol. The program creates 6 nodes connected in a network topology with duplex links of varying bandwidths and distances. It defines agents, applications and traffic to generate and receive packets. The simulation runs for 5 seconds of simulation time and traces are recorded to analyze the performance of the Aloha protocol under the different network conditions defined in the program.
1. The document describes an ns-2 tutorial exercise on simulating computer networks using the ns-2 simulator. It provides example scripts for basic network simulations.
2. The example scripts simulate simple network topologies with increasing complexity, including UDP and TCP traffic over droptail and queue configurations.
3. Later examples introduce more complex scenarios like dynamic routing protocols and simulating link failures to observe network behavior.
Infinum iOS Talks #1 - Swift under the hood: Method Dispatching by Vlaho PolutaInfinum
This document discusses method dispatching in Swift. It explains that method dispatch determines which method is invoked in response to a message. In C++ and Objective-C, methods can use static or dynamic dispatch. Static dispatch is determined at compile-time, while dynamic dispatch is determined at runtime. The document also shows how Swift can generate Objective-C classes and use the runtime, with Swift classes being Objective-C classes under the hood. It demonstrates through benchmarks that Swift code can be as fast or faster than equivalent Objective-C code.
This document provides an overview and introduction to Distributed Ruby (DRb), which enables remote method invocation for Ruby. DRb allows peer-to-peer communication between client and server processes, works across multiple platforms and protocols, and can be used for parallelism, distributing work, and interprocess communication. Examples are provided demonstrating basic DRb usage including a server hosting a shared object and a client accessing it. Details are also given on connection types, security features, and related technologies like Rinda that build on DRb.
This document discusses binding variables between C++ and OTcl in NS2 simulations. It describes creating a C++ class with a variable and binding it to an OTcl variable using the bind() function in the C++ constructor. This allows modifying the variable from either domain. The document provides an example of binding a C++ variable "count_" to the OTcl variable "ocount_", creating an OTcl object, and verifying it can get and set the shared variable from OTcl or by changing it in C++.
Blocks allow passing code as a parameter or return value from functions. They capture the context in which they are defined. Grand Central Dispatch (GCD) simplifies concurrent programming using dispatch queues, which can execute blocks asynchronously or synchronously, and dispatch sources which attach blocks to system events. Dispatch groups and semaphores help coordinate work across dispatch queues.
E2MATRIX Provide industrial training for all those students who want to learn software languages and methodology. We have all types of training programs as per the requirements of students. Our 6 Months Industrial Training Program is especially for last semester students of MCA, B. Tech., BE, M.sc, B.sc. Diploma etc. Students will work on LIVE PROJECTS during their 6 months industrial training. So why just go to any institute for training if you have an opportunity to learn from IT experts.
This document provides an overview of basic packet forwarding in the NS2 network simulator. It discusses NSObjects, which inherit functionality for interfacing with OTcl and handling default actions. NSObjects have a new recv function for receiving packets. Packet forwarding involves an object sending a packet to another object by calling its recv function. Examples of specific NSObject subclasses like Connector and Queue are also presented, which inherit from NSObject and implement packet forwarding using recv.
Zero-Overhead Metaprogramming: Reflection and Metaobject Protocols Fast and w...Stefan Marr
Runtime metaprogramming enables many useful applications and is often a convenient solution to solve problems in a generic way, which makes it widely used in frameworks, middleware, and domain-specific languages. However, powerful metaobject protocols are rarely supported and even common concepts such as reflective method invocation or dynamic proxies are not optimized. Solutions proposed in literature either restrict the metaprogramming capabilities or require application or library developers to apply performance improving techniques.
For overhead-free runtime metaprogramming, we demonstrate that dispatch chains, a generalized form of polymorphic inline caches common to self-optimizing interpreters, are a simple optimization at the language-implementation level. Our evaluation with self-optimizing interpreters shows that unrestricted metaobject protocols can be realized for the first time without runtime overhead, and that this optimization is applicable for just-in-time compilation of interpreters based on meta-tracing as well as partial evaluation. In this context, we also demonstrate that optimizing common reflective operations can lead to significant performance improvements for existing applications.
This document provides an introduction and overview of Network Simulator 2 (NS2). It discusses the history and goals of NS2, the languages and protocols it supports, and how to work with and extend NS2. It describes how to create simple simulations using Tcl scripts, including defining nodes, links, traffic sources and sinks. It also provides an example of simulating wireless networks in NS2 using scripts to define node movement and the DSDV routing protocol.
Building High-Performance Language Implementations With Low EffortStefan Marr
This talk shows how languages can be implemented as self-optimizing interpreters, and how Truffle or RPython go about to just-in-time compile these interpreters to efficient native code.
Programming languages are never perfect, so people start building domain-specific languages to be able to solve their problems more easily. However, custom languages are often slow, or take enormous amounts of effort to be made fast by building custom compilers or virtual machines.
With the notion of self-optimizing interpreters, researchers proposed a way to implement languages easily and generate a JIT compiler from a simple interpreter. We explore the idea and experiment with it on top of RPython (of PyPy fame) with its meta-tracing JIT compiler, as well as Truffle, the JVM framework of Oracle Labs for self-optimizing interpreters.
In this talk, we show how a simple interpreter can reach the same order of magnitude of performance as the highly optimizing JVM for Java. We discuss the implementation on top of RPython as well as on top of Java with Truffle so that you can start right away, independent of whether you prefer the Python or JVM ecosystem.
While our own experiments focus on SOM, a little Smalltalk variant to keep things simple, other people have used this approach to improve peek performance of JRuby, or build languages such as JavaScript, R, and Python 3.
Despite being a slow interpreter, Python is a key component in high-performance computing (HPC). Python is easy to use. C++ is fast. Together they are a beautiful blend. A new tool, pybind11, makes this approach even more attractive to HPC code. It focuses on the niceties C++11 brings in. Beyond the syntactic sugar around the Python C API, it is interesting to see how pybind11 handles the vast difference between the two languages, and what matters to HPC.
This document discusses best practices for handling errors and callbacks in Node.js applications. It covers techniques like error delegation, exception handling, error-first callbacks, avoiding nested callbacks, and using control flow libraries. It also discusses deployment strategies like using screen, restarting crashed processes, and innovating with platforms like Joyent, Nodejitsu and Heroku.
Optimizing Communicating Event-Loop Languages with TruffleStefan Marr
Communicating Event-Loop Languages similar to E and AmbientTalk are recently gaining more traction as a subset of actor languages. With the rise of JavaScript, E’s notion of vats and non-blocking communication based on promises entered the mainstream. For implementations, the combination of dynamic typing, asynchronous message sending, and promise resolution pose new optimization challenges.
This paper discusses these challenges and presents initial experiments for a Newspeak implementation based on the Truffle framework. Our implementation is on average 1.65x slower than Java on a set of 14 benchmarks. Initial optimizations improve the performance of asynchronous messages and reduce the cost of encapsulation on microbenchmarks by about 2x. Parallel actor benchmarks further show that the system scales based on the workload characteristics. Thus, we conclude that Truffle is a promising platform also for communicating event-loop languages.
This document describes how NS2 creates "shadow objects" in C++ to correspond to objects created in OTcl. When an object is created in OTcl using new, NS2 executes OTcl constructor methods. It then calls a C++ function to create a matching shadow object in C++ by invoking the C++ constructor. This allows objects to be manipulated from both the OTcl and C++ sides in NS2 simulations.
This document contains lecture slides about memory management in C++. It discusses static variables, constructors and destructors, and use of new and delete operators. Static variables are shared among all class instances and changes to them affect all instances. Constructors initialize objects and destructors clean them up. new allocates memory on the heap while delete frees it and calls the destructor.
The document discusses iOS development with blocks and Grand Central Dispatch (GCD). It introduces blocks as a way to encapsulate code similar to functions but with additional features. It describes how to define, call and pass blocks. It then discusses how blocks can be used to replace callbacks, handle notifications, enable concurrent enumeration and sorting. The document concludes with an introduction to GCD, describing it as an open-source threading library that automatically optimizes threading using queues, timers and handlers.
This document discusses several Perl modules:
- Time::Crontab parses crontab date and time fields. Proclet supports cron-like jobs.
- Apache::LogFormat::Compiler had issues with daylight saving time changes but version 0.14 and higher fixed this.
- POSIX::strftime::Compiler was created to avoid issues with locales affecting strftime outputs.
- Modules like Time::TZOffset, HTTP::Entity::Parser, WWW::Form::UrlEncoded, and WWW::Form::UrlEncoded::XS were created with performance improvements over existing solutions. Benchmark results showed the XS implementations having significantly better performance.
The Low Level Virtual Machine (LLVM) is an open source compiler infrastructure that provides modular and reusable compiler and toolchain technologies. LLVM can compile C/C++ code and generate optimized machine code for multiple platforms. It works as an intermediate representation between source code and machine code by first compiling source code to LLVM's own intermediate language, then performing optimizations on that code before generating target machine code.
1. There are three main packet operations in NS2: packet creation, transmission, and destruction.
2. Packets can be destroyed directly using Packet::free(p) or by sending the packet to a dropping object.
3. In the example, packet P is received by object S. S can either directly destroy P using free(p), or send P to dropping object D by calling dpt->recv(ppt,h). The dropping object D would then directly destroy P.
The document discusses extending Node.js using C++. It covers wrapping C++ classes for use in JavaScript, including setters, getters, exceptions, and instantiating objects. Examples are provided for wrapping Book and Person classes to be accessible from JavaScript. Building the extension using waf or gyp build systems is also covered. The presenter's background and the agenda are outlined initially.
Kenneth Geisshirt gave a presentation on extending Node.js using C++. He covered why to write extensions in C++, demo C++ classes, building extensions, wrapping classes, methods, callbacks, exceptions, and more. The goal was to learn the basics of V8 internals, wrapping C++ classes, and writing an extension.
This document provides an overview and introduction to Distributed Ruby (DRb), which enables remote method invocation for Ruby. DRb allows peer-to-peer communication between client and server processes, works across multiple platforms and protocols, and can be used for parallelism, distributing work, and interprocess communication. Examples are provided demonstrating basic DRb usage including a server hosting a shared object and a client accessing it. Details are also given on connection types, security features, and related technologies like Rinda that build on DRb.
This document discusses binding variables between C++ and OTcl in NS2 simulations. It describes creating a C++ class with a variable and binding it to an OTcl variable using the bind() function in the C++ constructor. This allows modifying the variable from either domain. The document provides an example of binding a C++ variable "count_" to the OTcl variable "ocount_", creating an OTcl object, and verifying it can get and set the shared variable from OTcl or by changing it in C++.
Blocks allow passing code as a parameter or return value from functions. They capture the context in which they are defined. Grand Central Dispatch (GCD) simplifies concurrent programming using dispatch queues, which can execute blocks asynchronously or synchronously, and dispatch sources which attach blocks to system events. Dispatch groups and semaphores help coordinate work across dispatch queues.
E2MATRIX Provide industrial training for all those students who want to learn software languages and methodology. We have all types of training programs as per the requirements of students. Our 6 Months Industrial Training Program is especially for last semester students of MCA, B. Tech., BE, M.sc, B.sc. Diploma etc. Students will work on LIVE PROJECTS during their 6 months industrial training. So why just go to any institute for training if you have an opportunity to learn from IT experts.
This document provides an overview of basic packet forwarding in the NS2 network simulator. It discusses NSObjects, which inherit functionality for interfacing with OTcl and handling default actions. NSObjects have a new recv function for receiving packets. Packet forwarding involves an object sending a packet to another object by calling its recv function. Examples of specific NSObject subclasses like Connector and Queue are also presented, which inherit from NSObject and implement packet forwarding using recv.
Zero-Overhead Metaprogramming: Reflection and Metaobject Protocols Fast and w...Stefan Marr
Runtime metaprogramming enables many useful applications and is often a convenient solution to solve problems in a generic way, which makes it widely used in frameworks, middleware, and domain-specific languages. However, powerful metaobject protocols are rarely supported and even common concepts such as reflective method invocation or dynamic proxies are not optimized. Solutions proposed in literature either restrict the metaprogramming capabilities or require application or library developers to apply performance improving techniques.
For overhead-free runtime metaprogramming, we demonstrate that dispatch chains, a generalized form of polymorphic inline caches common to self-optimizing interpreters, are a simple optimization at the language-implementation level. Our evaluation with self-optimizing interpreters shows that unrestricted metaobject protocols can be realized for the first time without runtime overhead, and that this optimization is applicable for just-in-time compilation of interpreters based on meta-tracing as well as partial evaluation. In this context, we also demonstrate that optimizing common reflective operations can lead to significant performance improvements for existing applications.
This document provides an introduction and overview of Network Simulator 2 (NS2). It discusses the history and goals of NS2, the languages and protocols it supports, and how to work with and extend NS2. It describes how to create simple simulations using Tcl scripts, including defining nodes, links, traffic sources and sinks. It also provides an example of simulating wireless networks in NS2 using scripts to define node movement and the DSDV routing protocol.
Building High-Performance Language Implementations With Low EffortStefan Marr
This talk shows how languages can be implemented as self-optimizing interpreters, and how Truffle or RPython go about to just-in-time compile these interpreters to efficient native code.
Programming languages are never perfect, so people start building domain-specific languages to be able to solve their problems more easily. However, custom languages are often slow, or take enormous amounts of effort to be made fast by building custom compilers or virtual machines.
With the notion of self-optimizing interpreters, researchers proposed a way to implement languages easily and generate a JIT compiler from a simple interpreter. We explore the idea and experiment with it on top of RPython (of PyPy fame) with its meta-tracing JIT compiler, as well as Truffle, the JVM framework of Oracle Labs for self-optimizing interpreters.
In this talk, we show how a simple interpreter can reach the same order of magnitude of performance as the highly optimizing JVM for Java. We discuss the implementation on top of RPython as well as on top of Java with Truffle so that you can start right away, independent of whether you prefer the Python or JVM ecosystem.
While our own experiments focus on SOM, a little Smalltalk variant to keep things simple, other people have used this approach to improve peek performance of JRuby, or build languages such as JavaScript, R, and Python 3.
Despite being a slow interpreter, Python is a key component in high-performance computing (HPC). Python is easy to use. C++ is fast. Together they are a beautiful blend. A new tool, pybind11, makes this approach even more attractive to HPC code. It focuses on the niceties C++11 brings in. Beyond the syntactic sugar around the Python C API, it is interesting to see how pybind11 handles the vast difference between the two languages, and what matters to HPC.
This document discusses best practices for handling errors and callbacks in Node.js applications. It covers techniques like error delegation, exception handling, error-first callbacks, avoiding nested callbacks, and using control flow libraries. It also discusses deployment strategies like using screen, restarting crashed processes, and innovating with platforms like Joyent, Nodejitsu and Heroku.
Optimizing Communicating Event-Loop Languages with TruffleStefan Marr
Communicating Event-Loop Languages similar to E and AmbientTalk are recently gaining more traction as a subset of actor languages. With the rise of JavaScript, E’s notion of vats and non-blocking communication based on promises entered the mainstream. For implementations, the combination of dynamic typing, asynchronous message sending, and promise resolution pose new optimization challenges.
This paper discusses these challenges and presents initial experiments for a Newspeak implementation based on the Truffle framework. Our implementation is on average 1.65x slower than Java on a set of 14 benchmarks. Initial optimizations improve the performance of asynchronous messages and reduce the cost of encapsulation on microbenchmarks by about 2x. Parallel actor benchmarks further show that the system scales based on the workload characteristics. Thus, we conclude that Truffle is a promising platform also for communicating event-loop languages.
This document describes how NS2 creates "shadow objects" in C++ to correspond to objects created in OTcl. When an object is created in OTcl using new, NS2 executes OTcl constructor methods. It then calls a C++ function to create a matching shadow object in C++ by invoking the C++ constructor. This allows objects to be manipulated from both the OTcl and C++ sides in NS2 simulations.
This document contains lecture slides about memory management in C++. It discusses static variables, constructors and destructors, and use of new and delete operators. Static variables are shared among all class instances and changes to them affect all instances. Constructors initialize objects and destructors clean them up. new allocates memory on the heap while delete frees it and calls the destructor.
The document discusses iOS development with blocks and Grand Central Dispatch (GCD). It introduces blocks as a way to encapsulate code similar to functions but with additional features. It describes how to define, call and pass blocks. It then discusses how blocks can be used to replace callbacks, handle notifications, enable concurrent enumeration and sorting. The document concludes with an introduction to GCD, describing it as an open-source threading library that automatically optimizes threading using queues, timers and handlers.
This document discusses several Perl modules:
- Time::Crontab parses crontab date and time fields. Proclet supports cron-like jobs.
- Apache::LogFormat::Compiler had issues with daylight saving time changes but version 0.14 and higher fixed this.
- POSIX::strftime::Compiler was created to avoid issues with locales affecting strftime outputs.
- Modules like Time::TZOffset, HTTP::Entity::Parser, WWW::Form::UrlEncoded, and WWW::Form::UrlEncoded::XS were created with performance improvements over existing solutions. Benchmark results showed the XS implementations having significantly better performance.
The Low Level Virtual Machine (LLVM) is an open source compiler infrastructure that provides modular and reusable compiler and toolchain technologies. LLVM can compile C/C++ code and generate optimized machine code for multiple platforms. It works as an intermediate representation between source code and machine code by first compiling source code to LLVM's own intermediate language, then performing optimizations on that code before generating target machine code.
1. There are three main packet operations in NS2: packet creation, transmission, and destruction.
2. Packets can be destroyed directly using Packet::free(p) or by sending the packet to a dropping object.
3. In the example, packet P is received by object S. S can either directly destroy P using free(p), or send P to dropping object D by calling dpt->recv(ppt,h). The dropping object D would then directly destroy P.
The document discusses extending Node.js using C++. It covers wrapping C++ classes for use in JavaScript, including setters, getters, exceptions, and instantiating objects. Examples are provided for wrapping Book and Person classes to be accessible from JavaScript. Building the extension using waf or gyp build systems is also covered. The presenter's background and the agenda are outlined initially.
Kenneth Geisshirt gave a presentation on extending Node.js using C++. He covered why to write extensions in C++, demo C++ classes, building extensions, wrapping classes, methods, callbacks, exceptions, and more. The goal was to learn the basics of V8 internals, wrapping C++ classes, and writing an extension.
This document summarizes Muriel Salvan's presentation on Docker and cargo transport. It discusses how Docker can be used to containerize applications and services, create images from Dockerfiles, run containers from images, and deploy images to registries for sharing. Examples are given on building Ruby and Rails images, running a clustered Rails application in containers, and using a proxy container to load balance requests. Performance benefits of Docker are highlighted such as faster launch times and consistent memory usage across containers.
Ruby and Twitter at the Ruby drink-up of Sophia, January 2013rivierarb
The document summarizes Twitter's history with Ruby on Rails. It began using Rails to quickly prototype and launch the initial site. However, scaling issues emerged as Twitter grew rapidly. By 2009, performance problems led Twitter to abandon Rails for the backend and instead use technologies like Scala, Java, and Lucene. While Ruby was kept for the frontend, Twitter replaced even the Rails frontend in 2011. Scaling demands required moving away from Rails as the site expanded to hundreds of millions of users.
This surprise talk was given on 2014-06-03 at Riviera.rb.
The slides are really just up for reference: unless you're a sociopathic genius with an uncanny cultural fit, you're really not going to understand much without the speech.
My 2013-03-05 Riviera.rb quines talk slides. I'm afraid there's not much left without the speech and live demos.
Quines are programs (or, more generally, concepts) that reproduce themselves. During this talk we explored how they were possible, what they could look like, how to generate them and how to generalize them,
The raw material of my Sophia Antipolis Ruby Drinkup talk on esoteric languages.
This deck isn't really suitable for plain browsing with no commentary.
Distributed Ruby and Rails
This document discusses distributed Ruby programming and using message queues with Ruby on Rails applications. It introduces several distributed Ruby technologies including DRb for remote method invocation, Rinda for distributed tuple spaces, Starfish for map-reduce programming, and the MagLev VM. It also covers various message queue systems like Starling, RabbitMQ, ActiveMQ, and beanstalkd that can be used to build scalable and reliable distributed Ruby applications.
The document discusses various options for implementing distributed processing in Ruby on Rails applications. It describes libraries like DRb, BackgroundRB, Starfish, reliable-message, and AP4R that can be used to distribute tasks across multiple servers. As an example, it outlines how the Working With Rails site used AP4R to distribute the fetching and parsing of third-party RSS feeds across multiple machines to improve performance. It also discusses some challenges of distributed processing and when it makes sense to implement.
The document discusses BackgroundRB, a Ruby gem that allows running background jobs and scheduling periodic tasks. It provides an overview of concepts like workers, jobs, caching, and configuration. Examples are given of creating a worker that increments a counter periodically via Ajax, scheduling jobs to run in the future, and periodically running methods via configuration. Advanced uses like connecting workers to distributed systems are also mentioned.
TorqueBox: The beauty of Ruby with the power of JBoss. Presented at Devnexus...bobmcwhirter
- Bob McWhirter is the project lead of TorqueBox and a JBoss Fellow.
- TorqueBox allows Ruby web applications to run on the JBoss Application Server using JRuby.
- It provides tight integration with JBoss and allows Ruby applications to take advantage of features like messaging, jobs, and services that are traditionally Java-based.
adb (Android Debug Bridge) is a command line tool that allows users to communicate with an emulator or connected Android device. It has commands to install and debug apps, transfer files, and execute shell commands remotely. The adb client communicates with the adb daemon (adbd) running on the target device or emulator over a USB or TCP connection to forward commands and data between the development machine and target.
Object Trampoline: Why having not the object you want is what you need.Workhorse Computing
Overview of Trampoline Objects in Perl with examples for lazy construction, lazy module use, added sanity checks. This version includes corrections from the original presented at OSCON 2013 and comments.
This document summarizes callable and runnable objects in Ruby, including Proc objects, lambdas, and threads. Proc objects allow blocks of code to be treated as first-class objects and stored in variables. Lambdas are similar to Procs but behave slightly differently with respect to argument passing and return values. Threads allow concurrent execution of blocks of code and can be created and joined.
From Java to Parellel Clojure - Clojure South 2019Leonardo Borges
Java still ranks at the top of the TIOBE index. The JVM is a trusted platform which has stood the test of time and is used widely to develop complex, reliable and high performing systems. By choosing to target the JVM, Clojure can leverage all of its power while bringing new ways of writing reliable software into the mix. But why should a Java developer care?
In this talk we will examine the main differences between Java and Clojure, pointing out new patterns and tools and finally ending with a discussion of the concurrency and parallelism abstractions provided by Clojure.
By the end of this talk you will have developed an understanding of Clojure’s fundamental building blocks for writing concurrent applications.
The document outlines a lecture plan for object oriented programming. It covers topics like structures and classes, function overloading, constructors and destructors, operator overloading, inheritance, polymorphism, and file streams. It provides examples to explain concepts like structures, classes, access specifiers, friend functions, and operator overloading. The document also includes questions for students to practice these concepts.
Developing node-mdb: a Node.js - based clone of SimpleDBRob Tweed
The document discusses the development of node-mdb, an open source emulation of Amazon's SimpleDB NoSQL cloud database using Node.js and the GT.M database. It describes why the author chose to emulate SimpleDB, use GT.M as the database backend, and develop it using Node.js. It also provides details on how node-mdb implements the SimpleDB APIs by mapping the database schema and operations to GT.M globals and leveraging Node.js asynchronous programming patterns.
Drupal 8 has made significant improvements towards the ability to stage configuration. But what about content staging? Has it gotten easier in Drupal 8?
This session is targeted towards site builders where we will continue to explore the content staging solution that is being built for Drupal 8 and that was initially presented in Austin. It's a solution that brings vast improvements to sites owners that need to stage or replicate content across sites.
Further, site builders will learn how this solution also applies to broader and sometimes more exciting use cases - content sharing and filtered replication across networks of sites and applications.
The recorded video is available here: https://amsterdam2014.drupal.org/session/content-staging-drupal-8-continued
This document discusses using the mruby programming language as middleware code. Some key points:
- mruby allows embedding Ruby code into middleware applications like web servers. This provides a powerful programming environment for Rubyists to write middleware code.
- ngx_mruby is an example of using mruby with the nginx web server. It allows placing Ruby code handlers and variables in the nginx configuration file.
- Advantages of mruby include producing a single binary without separate Ruby files, and ability to embed Ruby runtime and code directly into middleware applications like web servers.
- The document demonstrates sample ngx_mruby code for content handlers, variables, and initialization/worker scripts. It
Slides from my talk "Node.js Patterns for Discerning Developers" given at Pittsburgh TechFest 2013. This talk detailed common design pattern for Node.js, as well as common anti-patterns to avoid.
The document provides an overview of Ruby on Rails and its key components. It discusses how Rails is made up of several gems including Rails, ActiveSupport, ActionPack, ActiveRecord, ActiveResource and ActionMailer. It summarizes the purpose and functionality of each gem. For example, it states that ActiveRecord connects classes to database tables for persistence, while ActionPack handles routing, controllers and views.
This document discusses how to write Ruby extensions using the Crystal programming language. Crystal compiles to efficient native code and has static typing like C, but with a Ruby-like syntax. The document explains how to define Crystal classes and methods, bind them to Ruby using C bindings, and compile the extension so it can be required from Ruby. Key points covered include declaring modules and functions in a C library, converting between Ruby and Crystal types, defining Ruby classes and methods from Crystal, and initializing the extension so it integrates with Ruby. The goal is to leverage Crystal's performance while still writing code in a Ruby-like way using the same interfaces as a C extension.
A short and fast journey through some of the profiling options available in the Ruby 2.x world, including a look at flamegraphs and new ways of tracking memory usage in the MRI.
- Oslo.versionedobjects is an object model used in Nova to version and serialize objects for remote procedure calls (RPCs). Each change is versioned to allow backwards-compatible evolution.
- Objects define fields and methods, with fields serialized independently of code. Versioning allows controlled schema changes without database changes.
- Objects can be remotely called via an indirection service, with copies sent and returned. This decouples services from databases, enabling independent upgrades.
Anchoring Trust: Rewriting DNS for the Semantic Network with Ruby and RailsEleanor McHugh
This document provides an overview of semantic networking and the Rindr DNS application server. It discusses how semantic networking goes beyond traditional DNS by embedding rich associations and being service-oriented. It also introduces Rindr as a Ruby DNS server that extends DNS with a relational data model and supports identity and access management. Rindr integrates with Rails using BackgroundRB to allow non-blocking network access from Rails.
Similar to DRb at the Ruby Drink-up of Sophia, December 2011 (20)
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on integration of Salesforce with Bonterra Impact Management.
Interested in deploying an integration with Salesforce for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Driving Business Innovation: Latest Generative AI Advancements & Success StorySafe Software
Are you ready to revolutionize how you handle data? Join us for a webinar where we’ll bring you up to speed with the latest advancements in Generative AI technology and discover how leveraging FME with tools from giants like Google Gemini, Amazon, and Microsoft OpenAI can supercharge your workflow efficiency.
During the hour, we’ll take you through:
Guest Speaker Segment with Hannah Barrington: Dive into the world of dynamic real estate marketing with Hannah, the Marketing Manager at Workspace Group. Hear firsthand how their team generates engaging descriptions for thousands of office units by integrating diverse data sources—from PDF floorplans to web pages—using FME transformers, like OpenAIVisionConnector and AnthropicVisionConnector. This use case will show you how GenAI can streamline content creation for marketing across the board.
Ollama Use Case: Learn how Scenario Specialist Dmitri Bagh has utilized Ollama within FME to input data, create custom models, and enhance security protocols. This segment will include demos to illustrate the full capabilities of FME in AI-driven processes.
Custom AI Models: Discover how to leverage FME to build personalized AI models using your data. Whether it’s populating a model with local data for added security or integrating public AI tools, find out how FME facilitates a versatile and secure approach to AI.
We’ll wrap up with a live Q&A session where you can engage with our experts on your specific use cases, and learn more about optimizing your data workflows with AI.
This webinar is ideal for professionals seeking to harness the power of AI within their data management systems while ensuring high levels of customization and security. Whether you're a novice or an expert, gain actionable insights and strategies to elevate your data processes. Join us to see how FME and AI can revolutionize how you work with data!
Generating privacy-protected synthetic data using Secludy and MilvusZilliz
During this demo, the founders of Secludy will demonstrate how their system utilizes Milvus to store and manipulate embeddings for generating privacy-protected synthetic data. Their approach not only maintains the confidentiality of the original data but also enhances the utility and scalability of LLMs under privacy constraints. Attendees, including machine learning engineers, data scientists, and data managers, will witness first-hand how Secludy's integration with Milvus empowers organizations to harness the power of LLMs securely and efficiently.
This presentation provides valuable insights into effective cost-saving techniques on AWS. Learn how to optimize your AWS resources by rightsizing, increasing elasticity, picking the right storage class, and choosing the best pricing model. Additionally, discover essential governance mechanisms to ensure continuous cost efficiency. Whether you are new to AWS or an experienced user, this presentation provides clear and practical tips to help you reduce your cloud costs and get the most out of your budget.
Main news related to the CCS TSI 2023 (2023/1695)Jakub Marek
An English 🇬🇧 translation of a presentation to the speech I gave about the main changes brought by CCS TSI 2023 at the biggest Czech conference on Communications and signalling systems on Railways, which was held in Clarion Hotel Olomouc from 7th to 9th November 2023 (konferenceszt.cz). Attended by around 500 participants and 200 on-line followers.
The original Czech 🇨🇿 version of the presentation can be found here: https://www.slideshare.net/slideshow/hlavni-novinky-souvisejici-s-ccs-tsi-2023-2023-1695/269688092 .
The videorecording (in Czech) from the presentation is available here: https://youtu.be/WzjJWm4IyPk?si=SImb06tuXGb30BEH .
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyScyllaDB
Freshworks creates AI-boosted business software that helps employees work more efficiently and effectively. Managing data across multiple RDBMS and NoSQL databases was already a challenge at their current scale. To prepare for 10X growth, they knew it was time to rethink their database strategy. Learn how they architected a solution that would simplify scaling while keeping costs under control.
Best 20 SEO Techniques To Improve Website Visibility In SERPPixlogix Infotech
Boost your website's visibility with proven SEO techniques! Our latest blog dives into essential strategies to enhance your online presence, increase traffic, and rank higher on search engines. From keyword optimization to quality content creation, learn how to make your site stand out in the crowded digital landscape. Discover actionable tips and expert insights to elevate your SEO game.
A Comprehensive Guide to DeFi Development Services in 2024Intelisync
DeFi represents a paradigm shift in the financial industry. Instead of relying on traditional, centralized institutions like banks, DeFi leverages blockchain technology to create a decentralized network of financial services. This means that financial transactions can occur directly between parties, without intermediaries, using smart contracts on platforms like Ethereum.
In 2024, we are witnessing an explosion of new DeFi projects and protocols, each pushing the boundaries of what’s possible in finance.
In summary, DeFi in 2024 is not just a trend; it’s a revolution that democratizes finance, enhances security and transparency, and fosters continuous innovation. As we proceed through this presentation, we'll explore the various components and services of DeFi in detail, shedding light on how they are transforming the financial landscape.
At Intelisync, we specialize in providing comprehensive DeFi development services tailored to meet the unique needs of our clients. From smart contract development to dApp creation and security audits, we ensure that your DeFi project is built with innovation, security, and scalability in mind. Trust Intelisync to guide you through the intricate landscape of decentralized finance and unlock the full potential of blockchain technology.
Ready to take your DeFi project to the next level? Partner with Intelisync for expert DeFi development services today!
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Tatiana Kojar
Skybuffer AI, built on the robust SAP Business Technology Platform (SAP BTP), is the latest and most advanced version of our AI development, reaffirming our commitment to delivering top-tier AI solutions. Skybuffer AI harnesses all the innovative capabilities of the SAP BTP in the AI domain, from Conversational AI to cutting-edge Generative AI and Retrieval-Augmented Generation (RAG). It also helps SAP customers safeguard their investments into SAP Conversational AI and ensure a seamless, one-click transition to SAP Business AI.
With Skybuffer AI, various AI models can be integrated into a single communication channel such as Microsoft Teams. This integration empowers business users with insights drawn from SAP backend systems, enterprise documents, and the expansive knowledge of Generative AI. And the best part of it is that it is all managed through our intuitive no-code Action Server interface, requiring no extensive coding knowledge and making the advanced AI accessible to more users.
Your One-Stop Shop for Python Success: Top 10 US Python Development Providersakankshawande
Simplify your search for a reliable Python development partner! This list presents the top 10 trusted US providers offering comprehensive Python development services, ensuring your project's success from conception to completion.
Programming Foundation Models with DSPy - Meetup SlidesZilliz
Prompting language models is hard, while programming language models is easy. In this talk, I will discuss the state-of-the-art framework DSPy for programming foundation models with its powerful optimizers and runtime constraint system.
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfChart Kalyan
A Mix Chart displays historical data of numbers in a graphical or tabular form. The Kalyan Rajdhani Mix Chart specifically shows the results of a sequence of numbers over different periods.
GraphRAG for Life Science to increase LLM accuracyTomaz Bratanic
GraphRAG for life science domain, where you retriever information from biomedical knowledge graphs using LLMs to increase the accuracy and performance of generated answers
Trusted Execution Environment for Decentralized Process MiningLucaBarbaro3
Presentation of the paper "Trusted Execution Environment for Decentralized Process Mining" given during the CAiSE 2024 Conference in Cyprus on June 7, 2024.
FREE A4 Cyber Security Awareness Posters-Social Engineering part 3Data Hops
Free A4 downloadable and printable Cyber Security, Social Engineering Safety and security Training Posters . Promote security awareness in the home or workplace. Lock them Out From training providers datahops.com
24. Complex example with a Proc # server require 'drb' MyURI = "druby://127.0.0.1:55555" class Container def initialize @t = [] end def push o @t.push o end def each(&block) @t.each(&block) end end s = Container.new DRb.start_service(MyURI, s,{:safe_level => 1}) # client require 'drb' MyURI = "druby://127.0.0.1:55555" class Box include DRbUndumped attr_accessor :v def initialize v @v = v end end # needed to share local objects with the server: DRb.start_service s = DRbObject.new(nil, MyURI) a = Box.new(1) b = Box.new(2) s.push a s.push b s.each{ |i| puts i.class i.v = (i.v * 2) } # Box # Box # => block is called in local # => its parameters are converted back to local objects puts a.v # 2 puts b.v # 4