Debugging of CPython processes with gdb
Slides for the PyconPL 2016 talk on how to use gdb for debugging of complex issues that might happen with CPython
Blog post version: http://podoliaka.org/2016/04/10/debugging-cpython-gdb/
The document discusses the history and features of PHP Development Tools (PDT). PDT 1.0 was initially contributed by IBM and Zend in 2007, providing PHP capabilities like code assist, debugging, and navigation views. PDT 2.0 utilizes the Dynamic Languages Toolkit to be lighter and faster, with improved memory management and new features like build path configuration, mark occurrences, and type hierarchy. The document provides an example of extending PDT by creating a plugin to warn of potential cross-site scripting vulnerabilities.
Explains working with GNU Gettext i18n framework in linux environments. Details in this slide are generic and could be used for learning purpose only. It does not include details about processes follow in C-DAC (GIST).
The essence of the VivaCore code analysis libraryPVS-Studio
The article tells developers about VivaCore library, preconditions of its creation, its possibilities, structure and scope of use. This article was written simultaneously with the development of VivaCore library and that's why some of the details of the final realization may differ from the features described here. But this won't prevent the developers from getting acquainted with the general work principles of the library, mechanisms of analysis and processing of C and C++ source code.
This document provides an overview of the file structure and organization of a basic Rails application. It shows the directories and key files for controllers, models, views, routes, migrations, images, stylesheets and more. The document also previews topics that will be covered in upcoming lessons, including methods, classes, views and routing.
Enforcing API Design Rules for High Quality Code GenerationTim Burks
[Co-presented with Mike Kistler, Architect for SDK Generation for the Watson Client Libraries]
The OpenAPI Specification is emerging as the leading standard for describing REST APIs. A key factor in the popularity of OpenAPI is the broad array of open source tools that it enables that create, manipulate, and publish documentation and code from OpenAPI descriptions. In this talk, we describe a configurable and extensible open source linter for OpenAPI that we are using to solve API code generation problems at IBM and Google. Our linter is based on Gnostic, an open source framework for working with API descriptions that was developed at Google and is available on GitHub.
OpenAPI itself is language-agnostic and is being used to generate code in a large set of popular programming languages. This generated code includes both server-side "stubs" and client libraries that are sometimes called software development kits (SDKs). IBM has begun to employ code generation for the Watson Developer Cloud SDKs and other companies are doing similar things, including Google, which generates client libraries from Google-specific API description formats. These teams have found that the quality of SDKs generated from API descriptions depends heavily on the quality of the descriptions. This goes far beyond mere syntactic compliance with a specification -- it involves proper API design, naming, and adherence to organization-wide design patterns. To address this, many companies have created API design guides. Some companies, such as Google and Microsoft, have published their API design guides externally, while others like IBM have kept theirs as internal documents. But to this point, verifying compliance with an API design guide has largely been a manual task. What is needed, we believe, is a configurable and extensible linter to check OpenAPI descriptions for conformance with rules derived from API design guides.
The document introduces LLVM and its intermediate representation (IR) for program analysis. It describes how LLVM IR uses static single assignment form and three-address code. It shows examples of common LLVM IR instructions like arithmetic operations, branches, function calls and definitions. It explains how to use the 'opt' command to run analysis passes and print outputs like call graphs. It provides guidance on writing custom analysis passes and installing LLVM to build and run them.
Debugging of CPython processes with gdb
Slides for the PyconPL 2016 talk on how to use gdb for debugging of complex issues that might happen with CPython
Blog post version: http://podoliaka.org/2016/04/10/debugging-cpython-gdb/
The document discusses the history and features of PHP Development Tools (PDT). PDT 1.0 was initially contributed by IBM and Zend in 2007, providing PHP capabilities like code assist, debugging, and navigation views. PDT 2.0 utilizes the Dynamic Languages Toolkit to be lighter and faster, with improved memory management and new features like build path configuration, mark occurrences, and type hierarchy. The document provides an example of extending PDT by creating a plugin to warn of potential cross-site scripting vulnerabilities.
Explains working with GNU Gettext i18n framework in linux environments. Details in this slide are generic and could be used for learning purpose only. It does not include details about processes follow in C-DAC (GIST).
The essence of the VivaCore code analysis libraryPVS-Studio
The article tells developers about VivaCore library, preconditions of its creation, its possibilities, structure and scope of use. This article was written simultaneously with the development of VivaCore library and that's why some of the details of the final realization may differ from the features described here. But this won't prevent the developers from getting acquainted with the general work principles of the library, mechanisms of analysis and processing of C and C++ source code.
This document provides an overview of the file structure and organization of a basic Rails application. It shows the directories and key files for controllers, models, views, routes, migrations, images, stylesheets and more. The document also previews topics that will be covered in upcoming lessons, including methods, classes, views and routing.
Enforcing API Design Rules for High Quality Code GenerationTim Burks
[Co-presented with Mike Kistler, Architect for SDK Generation for the Watson Client Libraries]
The OpenAPI Specification is emerging as the leading standard for describing REST APIs. A key factor in the popularity of OpenAPI is the broad array of open source tools that it enables that create, manipulate, and publish documentation and code from OpenAPI descriptions. In this talk, we describe a configurable and extensible open source linter for OpenAPI that we are using to solve API code generation problems at IBM and Google. Our linter is based on Gnostic, an open source framework for working with API descriptions that was developed at Google and is available on GitHub.
OpenAPI itself is language-agnostic and is being used to generate code in a large set of popular programming languages. This generated code includes both server-side "stubs" and client libraries that are sometimes called software development kits (SDKs). IBM has begun to employ code generation for the Watson Developer Cloud SDKs and other companies are doing similar things, including Google, which generates client libraries from Google-specific API description formats. These teams have found that the quality of SDKs generated from API descriptions depends heavily on the quality of the descriptions. This goes far beyond mere syntactic compliance with a specification -- it involves proper API design, naming, and adherence to organization-wide design patterns. To address this, many companies have created API design guides. Some companies, such as Google and Microsoft, have published their API design guides externally, while others like IBM have kept theirs as internal documents. But to this point, verifying compliance with an API design guide has largely been a manual task. What is needed, we believe, is a configurable and extensible linter to check OpenAPI descriptions for conformance with rules derived from API design guides.
The document introduces LLVM and its intermediate representation (IR) for program analysis. It describes how LLVM IR uses static single assignment form and three-address code. It shows examples of common LLVM IR instructions like arithmetic operations, branches, function calls and definitions. It explains how to use the 'opt' command to run analysis passes and print outputs like call graphs. It provides guidance on writing custom analysis passes and installing LLVM to build and run them.
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019corehard_by
C++ is known for things such as performance, expressiveness, the lack of a standard build system and package management, complexity and long compile times. The inability to iterate quickly is one of the biggest killers of productivity. This talk is aimed at anyone interested in improving the last of these points - it will provide insights into why compilation (and linking) take so long for C++ and will then provide an exhaustive list of techniques and tools to mitigate the problem, such as: - tooling and infrastructure - hardware, build systems, caching, distributed builds, diagnostics of bottlenecks, code hygiene - techniques - unity builds, precompiled headers, linking (static vs shared libraries) - source code modification - the PIMPL idiom, better template use, annotations - modules - what they are, when they are coming to C++ and what becomes obsolete because of them
The document discusses Microsoft .NET platform. It states that .NET is a software platform and framework that allows development of applications for web and Windows. The .NET framework provides a common language runtime (CLR) environment that executes all .NET programs. The CLR offers thread and memory management. Languages compile code into Microsoft intermediate language (MSIL) that runs on the CLR. The .NET framework also includes a base class library (BCL) of common functions that can be used by all .NET languages. It ensures different .NET languages can interact through a common type system.
Intermediate languages are used in compiler construction to simplify retargeting compilers to multiple machine architectures. In the implementation of \emph{domain-specific languages} (DSLs), compilers typically generate high-level source code, rather than low-level machine instructions. DSL compilers target a software platform, i.e. a programming language with a set of libraries, deployable on one or more operating systems. DSLs enable targeting \emph{multiple} software platforms if its abstractions are platform independent. While transformations from DSL to each targeted platform are often conceptually very similar, there is little reuse between transformations due to syntactic and API differences of the target platforms, making supporting multiple platforms expensive. In this paper, we discuss the design and implementation of PIL, a Platform Independent Language, an intermediate language providing a layer of abstraction between DSL and target platform code, abstracting from syntactic and API differences between platforms, thereby removing the need for platform-specific transformations. We discuss the use of PIL in an implemementation of WebDSL, a DSL for building web applications.
The document is a presentation about writing compilers using Python and LLVM. It provides an overview of compilers, including definitions of key terms like source code, intermediate representations, passes, optimizations, and code generation. It also describes the frontend and backend of compilers, and how LLVM can be used to build compiler backends with its libraries. Specifically, it discusses the Python bindings for LLVM called llvm-py that allow building compiler backends using Python.
LinkedIn - Disassembling Dalvik BytecodeAlain Leon
The document discusses disassembling Dalvik bytecode on Android. It begins by providing background on Android, Dalvik VM, APK files, DEX files, and JIT compilation. It then discusses ways to hack at different levels: using macros to automate games, intercepting REST traffic, analyzing APK/DEX files by decompiling them and modifying bytecode, analyzing and modifying shared object libraries, and disassembling machine code. The key steps outlined are decompiling DEX to Smali bytecode, applying changes, recompiling to an APK, installing on a device, and analyzing shared object libraries by disassembling to machine code.
This document provides notes on web programming unit 2 prepared by Bhavsingh Maloth. It discusses the history and objectives of JavaScript, defining it as a scripting language used to add interactivity to HTML pages. JavaScript can be divided into core, client-side, and server-side components. Core JavaScript is the basis of the language, while client-side JavaScript supports browser controls and user interactions. Server-side JavaScript makes the language useful on web servers. The document also provides examples of how to write text, insert scripts, and use variables in JavaScript.
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...corehard_by
Использование сторонних библиотек в языке C++ никогда не было простым - необходимо было правильно собрать их, имея дело с различными системами сборки, но с появлением пакетного менеджера conan.io процесс стал намного проще, так что теперь осталось только сделать пакеты для нужным библиотек, и в этом поможет команда bincrafter-ов.
The document provides an introduction to the Python programming language. It discusses the history and overview of Python, including that it is an interpreted, interactive, and object-oriented scripting language. It then covers Python features such as being easy to learn and read, having a broad standard library, and being portable. The document also demonstrates basic Python concepts like data types, variables, conditional statements, and functions.
This document provides an introduction to the Perl programming language. It begins with an overview of Perl, including what Perl is, its history and key features. It then discusses Perl syntax, variables types (scalars, arrays and hashes), and other important Perl concepts like variable scoping and context. The document also provides examples of basic Perl programs and commands.
The document discusses using gRPC and Protocol Buffers to build fast and reliable APIs, describing how gRPC uses Protocol Buffers to define service interfaces and handle serialization, and allows building clients and servers in various languages that can communicate over the network through language-independent services. It provides examples of using gRPC to define and call both unary and streaming RPC services from Swift clients and servers.
If you are building a commercial Force.com app with a team of developers, this session is for you. Join us to learn best practices for setting up your Force.com IDE, managing source code, creating automated builds, deploying to test environments, and more. Hear from a panel of seasoned ISVs who are employing key team development principles. This session is primarily for product managers, architects, and developers (isvpartners).
The document provides an overview of using Swift to connect to networked APIs. It defines what a networked API is and describes two common API styles: RPC and REST. It then discusses REST APIs in more detail, covering the Richardson Maturity Model, HATEOAS, and Fielding's requirements for REST. The document demonstrates making HTTP requests in Swift, including preparing URLs and requests, performing requests, and handling authorization. It also briefly discusses Protocol Buffers and building gRPC services in Swift.
Beginning with Composer - Dependency manager in php Yogesh Salvi
Tool for dependency management in PHP. Composer is a dependency manager for PHP which allows you to declare and install dependencies for PHP applications. It provides a composer.json file to define dependencies and versions, and a command line interface to install, update, and manage dependencies. Key features include automated installation of dependencies and their transitive dependencies, semantic versioning support, and tools to validate configurations and check for outdated packages.
RTSC provides a component model for developing reusable real-time software for embedded systems. It allows components to have both target code that runs on hardware and meta-code that runs on client platforms. The meta-code manages the component lifecycle including building, integration, and monitoring. This enables tooling opportunities and different implementations while providing standard interfaces. Components can be assembled into applications in a configurable way and deployed across different platforms.
Creating Great REST and gRPC API Experiences (in Swift)Tim Burks
Protocol Buffers are a language-neutral, platform-neutral mechanism for serializing structured data. They can be used to define interfaces for APIs and exchange data between systems. Protocol Buffers include a data definition language to define message types, a serialization format to encode structured data in a compact binary form, and code generation plugins to generate data access code in multiple languages. Protocol Buffers provide a flexible and efficient method for serializing structured data for storage or network transmission.
Single Sourcing Techniques for RAP and RCPRalf Sternberg
This document discusses techniques for sharing code between Rich Client Platform (RCP) and Rich Ajax Platform (RAP) applications. It explains that RCP and RAP share 80-98% of code and developers can reuse most of their RCP code in RAP applications. It recommends using two Eclipse workspaces, one for RCP and one for RAP, and importing RCP projects into the RAP workspace. It also provides tips for addressing differences between the platforms, such as using fragments and delegation to share code between host bundles and fragments.
C is mother language of all programming language.
It is a system programming language. It is a procedure-oriented programming language. It is also called mid-level programming language.
C evolved from a language called B, written by Ken Thompson at Bell Labs in 1970. Ken used B to write one of the first implementations of UNIX. B in turn was a descendant of the language BCPL (developed at Cambridge (UK) in 1967), with most of its instructions removed.
So many instructions were removed in going from BCPL to B, that Dennis Ritchie of Bell Labs put some back in (in 1972), and called the language C.
The famous book The C Programming Language was written by Kernighan and Ritchie in 1978, and was the definitive reference book on C for almost a decade.
The original C was still too limiting, and not standardized, and so in 1983, an ANSI committee was established to formalize the language definition.
It has taken until now (ten years later) for the ANSI ( American National Standard Institute) standard to become well accepted and almost universally supported by compilers.
This presentation is an overview of the API design and management solutions suitable for Cloud Native Environments. This main focus lies on synchronous API design and micro services.
Implementing OpenAPI and GraphQL services with gRPCTim Burks
Behind every API there's code. REST and GraphQL are powerful interface abstractions but are not so great for writing code (we’re still looking for the programming language where every command is a GET, POST, PUT, or DELETE). When programmers work, they are usually making function calls, and an RPC framework like gRPC allows those functions to be written in a mixture of languages and distributed among many servers. This means that gRPC can be a great way to implement REST and GraphQL APIs at scale. We’ll share open source projects from Google that can be used to implement OpenAPI and GraphQL services with gRPC and give you hands-on experience with both.
Presented at the 2019 API Specifications Conference.
https://asc2019.sched.com/event/T6u9/workshop-implementing-openapi-and-graphql-services-with-grpc-tim-burks-google
Part II: LLVM Intermediate RepresentationWei-Ren Chen
This document discusses the LLVM intermediate representation (IR) and the lowering process from LLVM IR to machine code. It covers:
1) The characteristics of LLVM IR including SSA form, infinite virtual registers, and phi nodes.
2) How the LLVM IRBuilder class is used to conveniently generate LLVM instructions.
3) The lowering flow from LLVM IR to selection DAGs to machine DAGs to machine instructions and finally machine code.
4) How assembler relaxation can optimize and correct instructions during assembly.
Rails3 is a lesson on the basic structure and components of a Ruby on Rails application. It introduces the model, view, controller pattern and shows the directory structure of a typical Rails project, including the app, config, db, and public folders. Key components like controllers, views, models, and the database are explained at a high level.
Rails3 is a lesson on the basic structure and components of a Ruby on Rails application. It introduces the model, view, controller framework and shows the typical directory structure of a Rails project including app, config, db, and public folders. Key components like controllers, views, models, and the database are explained at a high level.
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019corehard_by
C++ is known for things such as performance, expressiveness, the lack of a standard build system and package management, complexity and long compile times. The inability to iterate quickly is one of the biggest killers of productivity. This talk is aimed at anyone interested in improving the last of these points - it will provide insights into why compilation (and linking) take so long for C++ and will then provide an exhaustive list of techniques and tools to mitigate the problem, such as: - tooling and infrastructure - hardware, build systems, caching, distributed builds, diagnostics of bottlenecks, code hygiene - techniques - unity builds, precompiled headers, linking (static vs shared libraries) - source code modification - the PIMPL idiom, better template use, annotations - modules - what they are, when they are coming to C++ and what becomes obsolete because of them
The document discusses Microsoft .NET platform. It states that .NET is a software platform and framework that allows development of applications for web and Windows. The .NET framework provides a common language runtime (CLR) environment that executes all .NET programs. The CLR offers thread and memory management. Languages compile code into Microsoft intermediate language (MSIL) that runs on the CLR. The .NET framework also includes a base class library (BCL) of common functions that can be used by all .NET languages. It ensures different .NET languages can interact through a common type system.
Intermediate languages are used in compiler construction to simplify retargeting compilers to multiple machine architectures. In the implementation of \emph{domain-specific languages} (DSLs), compilers typically generate high-level source code, rather than low-level machine instructions. DSL compilers target a software platform, i.e. a programming language with a set of libraries, deployable on one or more operating systems. DSLs enable targeting \emph{multiple} software platforms if its abstractions are platform independent. While transformations from DSL to each targeted platform are often conceptually very similar, there is little reuse between transformations due to syntactic and API differences of the target platforms, making supporting multiple platforms expensive. In this paper, we discuss the design and implementation of PIL, a Platform Independent Language, an intermediate language providing a layer of abstraction between DSL and target platform code, abstracting from syntactic and API differences between platforms, thereby removing the need for platform-specific transformations. We discuss the use of PIL in an implemementation of WebDSL, a DSL for building web applications.
The document is a presentation about writing compilers using Python and LLVM. It provides an overview of compilers, including definitions of key terms like source code, intermediate representations, passes, optimizations, and code generation. It also describes the frontend and backend of compilers, and how LLVM can be used to build compiler backends with its libraries. Specifically, it discusses the Python bindings for LLVM called llvm-py that allow building compiler backends using Python.
LinkedIn - Disassembling Dalvik BytecodeAlain Leon
The document discusses disassembling Dalvik bytecode on Android. It begins by providing background on Android, Dalvik VM, APK files, DEX files, and JIT compilation. It then discusses ways to hack at different levels: using macros to automate games, intercepting REST traffic, analyzing APK/DEX files by decompiling them and modifying bytecode, analyzing and modifying shared object libraries, and disassembling machine code. The key steps outlined are decompiling DEX to Smali bytecode, applying changes, recompiling to an APK, installing on a device, and analyzing shared object libraries by disassembling to machine code.
This document provides notes on web programming unit 2 prepared by Bhavsingh Maloth. It discusses the history and objectives of JavaScript, defining it as a scripting language used to add interactivity to HTML pages. JavaScript can be divided into core, client-side, and server-side components. Core JavaScript is the basis of the language, while client-side JavaScript supports browser controls and user interactions. Server-side JavaScript makes the language useful on web servers. The document also provides examples of how to write text, insert scripts, and use variables in JavaScript.
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...corehard_by
Использование сторонних библиотек в языке C++ никогда не было простым - необходимо было правильно собрать их, имея дело с различными системами сборки, но с появлением пакетного менеджера conan.io процесс стал намного проще, так что теперь осталось только сделать пакеты для нужным библиотек, и в этом поможет команда bincrafter-ов.
The document provides an introduction to the Python programming language. It discusses the history and overview of Python, including that it is an interpreted, interactive, and object-oriented scripting language. It then covers Python features such as being easy to learn and read, having a broad standard library, and being portable. The document also demonstrates basic Python concepts like data types, variables, conditional statements, and functions.
This document provides an introduction to the Perl programming language. It begins with an overview of Perl, including what Perl is, its history and key features. It then discusses Perl syntax, variables types (scalars, arrays and hashes), and other important Perl concepts like variable scoping and context. The document also provides examples of basic Perl programs and commands.
The document discusses using gRPC and Protocol Buffers to build fast and reliable APIs, describing how gRPC uses Protocol Buffers to define service interfaces and handle serialization, and allows building clients and servers in various languages that can communicate over the network through language-independent services. It provides examples of using gRPC to define and call both unary and streaming RPC services from Swift clients and servers.
If you are building a commercial Force.com app with a team of developers, this session is for you. Join us to learn best practices for setting up your Force.com IDE, managing source code, creating automated builds, deploying to test environments, and more. Hear from a panel of seasoned ISVs who are employing key team development principles. This session is primarily for product managers, architects, and developers (isvpartners).
The document provides an overview of using Swift to connect to networked APIs. It defines what a networked API is and describes two common API styles: RPC and REST. It then discusses REST APIs in more detail, covering the Richardson Maturity Model, HATEOAS, and Fielding's requirements for REST. The document demonstrates making HTTP requests in Swift, including preparing URLs and requests, performing requests, and handling authorization. It also briefly discusses Protocol Buffers and building gRPC services in Swift.
Beginning with Composer - Dependency manager in php Yogesh Salvi
Tool for dependency management in PHP. Composer is a dependency manager for PHP which allows you to declare and install dependencies for PHP applications. It provides a composer.json file to define dependencies and versions, and a command line interface to install, update, and manage dependencies. Key features include automated installation of dependencies and their transitive dependencies, semantic versioning support, and tools to validate configurations and check for outdated packages.
RTSC provides a component model for developing reusable real-time software for embedded systems. It allows components to have both target code that runs on hardware and meta-code that runs on client platforms. The meta-code manages the component lifecycle including building, integration, and monitoring. This enables tooling opportunities and different implementations while providing standard interfaces. Components can be assembled into applications in a configurable way and deployed across different platforms.
Creating Great REST and gRPC API Experiences (in Swift)Tim Burks
Protocol Buffers are a language-neutral, platform-neutral mechanism for serializing structured data. They can be used to define interfaces for APIs and exchange data between systems. Protocol Buffers include a data definition language to define message types, a serialization format to encode structured data in a compact binary form, and code generation plugins to generate data access code in multiple languages. Protocol Buffers provide a flexible and efficient method for serializing structured data for storage or network transmission.
Single Sourcing Techniques for RAP and RCPRalf Sternberg
This document discusses techniques for sharing code between Rich Client Platform (RCP) and Rich Ajax Platform (RAP) applications. It explains that RCP and RAP share 80-98% of code and developers can reuse most of their RCP code in RAP applications. It recommends using two Eclipse workspaces, one for RCP and one for RAP, and importing RCP projects into the RAP workspace. It also provides tips for addressing differences between the platforms, such as using fragments and delegation to share code between host bundles and fragments.
C is mother language of all programming language.
It is a system programming language. It is a procedure-oriented programming language. It is also called mid-level programming language.
C evolved from a language called B, written by Ken Thompson at Bell Labs in 1970. Ken used B to write one of the first implementations of UNIX. B in turn was a descendant of the language BCPL (developed at Cambridge (UK) in 1967), with most of its instructions removed.
So many instructions were removed in going from BCPL to B, that Dennis Ritchie of Bell Labs put some back in (in 1972), and called the language C.
The famous book The C Programming Language was written by Kernighan and Ritchie in 1978, and was the definitive reference book on C for almost a decade.
The original C was still too limiting, and not standardized, and so in 1983, an ANSI committee was established to formalize the language definition.
It has taken until now (ten years later) for the ANSI ( American National Standard Institute) standard to become well accepted and almost universally supported by compilers.
This presentation is an overview of the API design and management solutions suitable for Cloud Native Environments. This main focus lies on synchronous API design and micro services.
Implementing OpenAPI and GraphQL services with gRPCTim Burks
Behind every API there's code. REST and GraphQL are powerful interface abstractions but are not so great for writing code (we’re still looking for the programming language where every command is a GET, POST, PUT, or DELETE). When programmers work, they are usually making function calls, and an RPC framework like gRPC allows those functions to be written in a mixture of languages and distributed among many servers. This means that gRPC can be a great way to implement REST and GraphQL APIs at scale. We’ll share open source projects from Google that can be used to implement OpenAPI and GraphQL services with gRPC and give you hands-on experience with both.
Presented at the 2019 API Specifications Conference.
https://asc2019.sched.com/event/T6u9/workshop-implementing-openapi-and-graphql-services-with-grpc-tim-burks-google
Part II: LLVM Intermediate RepresentationWei-Ren Chen
This document discusses the LLVM intermediate representation (IR) and the lowering process from LLVM IR to machine code. It covers:
1) The characteristics of LLVM IR including SSA form, infinite virtual registers, and phi nodes.
2) How the LLVM IRBuilder class is used to conveniently generate LLVM instructions.
3) The lowering flow from LLVM IR to selection DAGs to machine DAGs to machine instructions and finally machine code.
4) How assembler relaxation can optimize and correct instructions during assembly.
Rails3 is a lesson on the basic structure and components of a Ruby on Rails application. It introduces the model, view, controller pattern and shows the directory structure of a typical Rails project, including the app, config, db, and public folders. Key components like controllers, views, models, and the database are explained at a high level.
Rails3 is a lesson on the basic structure and components of a Ruby on Rails application. It introduces the model, view, controller framework and shows the typical directory structure of a Rails project including app, config, db, and public folders. Key components like controllers, views, models, and the database are explained at a high level.
The document discusses database tools and techniques used by Skype to optimize database performance. It describes:
1) Skype's use of stored procedures to access databases for security and optimization reasons.
2) Tools like pgBouncer and PL/Proxy that minimize connections and allow remote queries to optimize resource usage and enable high availability.
3) The SkyTools framework for batch jobs that handles common tasks to simplify application development.
4) The PgQ queue system for asynchronous processing that provides transactional, efficient message handling between producers and consumers.
Single Sourcing RAP and RCP - Desktop and web clients from a single code baseRalf Sternberg
This document discusses the Rich Ajax Platform (RAP), which allows developers to create a single code base for both desktop and web clients. It presents an outline on topics including RAP basics, single sourcing applications, styling, deployment, and stress testing. The document provides information on key aspects of RAP like its request lifecycle, packaging, differences from RCP, and tools for load testing RAP applications.
The document provides an overview and agenda for the libfabric software interface. It discusses the design guidelines, user requirements, software development strategies, architecture, providers, and getting started with libfabric. The key points are that libfabric provides portable low-level networking interfaces, has an object-oriented design, supports multiple fabric hardware through providers, and gives applications high-level and low-level interfaces to optimize performance.
This document discusses debugging CPython processes with gdb. It begins by stating the goals of making gdb a useful option for debugging and highlighting common issues. It then discusses why debugging is important for large open source projects like OpenStack. Several typical problems that gdb can help with are described, such as hung processes, stepping into native code, and interpreter crashes. Advantages of gdb over pdb are outlined. Prerequisites for using gdb to debug Python are covered, including ensuring gdb has Python support and obtaining CPython debugging symbols. Various gdb commands for debugging Python processes are demonstrated, such as attaching to a process, printing tracebacks and locals, and executing Python code in the debugged process. Finally, some common gotchas are highlighted around virtual environments
Learn all there is to know about Docker and containers from the bottom up. In this course, you'll learn what containers are and why they're great, as well as how to utilize Docker to create custom containers and images.
The document proposes a template called Template7 to help with common decisions in building software projects, such as data types, errors, architecture, and documentation. It describes Template7's overall and backend architectures, including layers like API, middleware, handlers, and components. The template also includes suggestions for patterns like singletons, custom data types, and errors to standardize code across projects.
Building Microservices with the 12 Factor App Pattern on AWS - AWS Online Tec...Amazon Web Services
Learning Objectives:
- Learn best practices for building containerized microservices
- Learn about the twelve-factor app pattern and how to implement it using containers on AWS
- Learn how to use AWS Fargate to build and run containerized microservices
The document outlines 5 elements for effective thinking - understanding deeply, making mistakes, raising questions, following the flow of ideas, and changing. It provides a high-level overview of strategies for improving one's thinking process through concepts like questioning assumptions, learning from errors, and allowing ideas to organically develop over time. The 5 elements are intended to serve as guidelines for developing more thoughtful and creative approaches to problem-solving.
Skype uses PostgreSQL for over 100 database servers and 200 databases to support its online services. It partitions data across multiple databases for scalability and uses tools like pgBouncer, PL/Proxy, SkyTools, PgQ, and Londiste to connect, load balance, and replicate data between databases. This complex database architecture has allowed Skype to grow significantly while remaining easy to manage.
The document provides an overview of ABAP programming and outlines 6 chapters that will be covered, including introduction to ABAP, list processing, open SQL, event-driven programming, modularization, and debugging. It also describes the basic structure of an ABAP program and shows examples of ABAP statements, data types, and system fields.
The document defines key concepts in client-side scripting including DOM, APIs, JavaScript, and Node Package Manager. It discusses the origins and evolution of JavaScript, how DOM allows manipulating web pages, and the differences between REST APIs and WebSockets. The last section introduces the author and includes contact information.
Lambda layers allow sharing code and data across functions by packaging dependencies in a ZIP file. Layers can contain common code, libraries, or other components and can be referenced by up to five functions at once. The Lambda runtime API allows selecting a custom runtime using an executable bootstrap file to interface between code and the Lambda environment. Several open source runtimes have been developed using this API.
The document discusses Apache James, an open source Java mail server project. It introduces the James mail server and its components, as well as related projects like Hupa, a webmail client built with GWT. It provides details on the architecture and status of Hupa, and outlines ways for developers to get involved and contribute to open source projects like Apache James.
CCT is a Web App developed for an IT Project Management exam. This Web App hasbeen developed using various tools including Python, MySQL, Flask, Anaconda, and VisualStudio Code. An app aimed at companies able to manage the transfers of a worker withinthe company, taking into account all the costs that he faces and allowing him to updatethem through this webApp. Finally, to make understanding easier, there was a graphicalinterface dedicated to understanding costs, transfers through plots.
CCT is a project for the IT Project and Management exam's. It's an help for the employee to plan and organize the transfer and receive a refound in a short term. The principal operations are : Add transfer, Share on Telegram, View Details, Import Costs in way to semplify the PM's work. For develop this web app, I use Anaconda, Flask, Visual Studio and MySql.
CCT is a web app developed to help the project manager to have an overview of the transfers made by his team. It is a web app developed entirely in Python, HTML, css. I also used Flask to connect to the server.
CCT allowed to: add new transfers, show charts related to the types of costs and value, produce a PDF document to download, automatically calculate the sum of the costs made and look for new users on Github to cover missing skills.
The document describes Collabograte, an integration platform for collaboration components. It aims to provide an open platform for integrating components like wikis, blogs, mailing lists, and chat while maximizing user freedom and flexibility. It uses Puppet for configuration management and integrates components like OpenLDAP, MediaWiki, WordPress, Postfix, Cyrus, and ejabberd. Collabograte provides virtual machine images and Puppet modules to configure the integrated stack on a Linux host.
The document discusses a community focused on innovation and problem solving. It talks about gathering problems from the community and having teams and mentors work together to develop solutions. One example problem mentioned is the length of time it takes to dictate a company's information at a gas station. The community aims to help bring ideas to fruition and provide resources like mentors, education and funding to support startups and keep people in the local area.
The document discusses the basics of using Git version control including making snapshots of files, creating backups at different points in time, optimizing backups by only storing file changes, using branches and merging/rebasing branches, sharing a Git repository remotely by cloning or adding remote connections, and pulling/pushing changes between local and remote repositories.
The document discusses the origins and design of the Ruby programming language. It notes that Ruby was created by Yukihiro Matsumoto as a scripting language that was more powerful than Perl and more object-oriented than Python. It describes key features of Ruby like being interpreted, dynamically typed, and having strong support for meta-programming.
This document discusses test-driven development (TDD). It provides examples of writing tests before code using a red-green-refactor process. First, a test is written and fails (red). Then code is implemented to pass the test (green). The code is then refactored while ensuring tests still pass. The document includes code examples of writing tests for a code review tool, implementing features to pass tests, and refactoring while tests remain passing.
The document provides information about using Ruby gems. It discusses installing rubygems with "sudo apt-get install rubygems", then installing specific gems like git with "gem install git". It provides an example of using the git gem to log commits between two versions. It also briefly mentions HAML, SASS, HPricot, RSpec, Cucumber, and OmniAuth gems.
The document provides information about Rails 3.0 including that it combines Merb and Rails 2.3. It discusses features like Bundler, Rack, HTML5, and Arel. It also covers REST, using resources, and responding to different formats. Views, layouts, partials, helpers, caching and expiration are described.
The document describes how to create relationships between models in a Model-View-Controller framework. It discusses creating one-to-one, one-to-many, and many-to-many relationships between models using associations like belongs_to, has_many, and has_and_belongs_to_many. It also covers fetching, validating, saving, and deleting data from the database through the model layer.
This document provides an overview of Ruby on Rails, including how to install Rails, create a first Rails application, the basic components of Rails applications, and how to configure, develop, and deploy Rails apps. It discusses Model-View-Controller architecture, databases and migrations, documentation, libraries, logging, and more. The goal is to introduce developers to the fundamentals of building web applications with Ruby on Rails.
This document introduces Ruby and object-oriented programming concepts using Ruby. It discusses creating classes like Brick and Worker, defining attributes and methods, inheritance with subclasses like YellowBrick and RedBrick, and contains examples of creating and manipulating objects. It also shows containing objects in a Box class, searching through objects in a box, and determining if a number is prime. The document provides resources for learning more about Ruby.
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024Neo4j
Neha Bajwa, Vice President of Product Marketing, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofsAlex Pruden
This paper presents Reef, a system for generating publicly verifiable succinct non-interactive zero-knowledge proofs that a committed document matches or does not match a regular expression. We describe applications such as proving the strength of passwords, the provenance of email despite redactions, the validity of oblivious DNS queries, and the existence of mutations in DNA. Reef supports the Perl Compatible Regular Expression syntax, including wildcards, alternation, ranges, capture groups, Kleene star, negations, and lookarounds. Reef introduces a new type of automata, Skipping Alternating Finite Automata (SAFA), that skips irrelevant parts of a document when producing proofs without undermining soundness, and instantiates SAFA with a lookup argument. Our experimental evaluation confirms that Reef can generate proofs for documents with 32M characters; the proofs are small and cheap to verify (under a second).
Paper: https://eprint.iacr.org/2023/1886
“An Outlook of the Ongoing and Future Relationship between Blockchain Technologies and Process-aware Information Systems.” Invited talk at the joint workshop on Blockchain for Information Systems (BC4IS) and Blockchain for Trusted Data Sharing (B4TDS), co-located with with the 36th International Conference on Advanced Information Systems Engineering (CAiSE), 3 June 2024, Limassol, Cyprus.
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!SOFTTECHHUB
As the digital landscape continually evolves, operating systems play a critical role in shaping user experiences and productivity. The launch of Nitrux Linux 3.5.0 marks a significant milestone, offering a robust alternative to traditional systems such as Windows 11. This article delves into the essence of Nitrux Linux 3.5.0, exploring its unique features, advantages, and how it stands as a compelling choice for both casual users and tech enthusiasts.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
Communications Mining Series - Zero to Hero - Session 1DianaGray10
This session provides introduction to UiPath Communication Mining, importance and platform overview. You will acquire a good understand of the phases in Communication Mining as we go over the platform with you. Topics covered:
• Communication Mining Overview
• Why is it important?
• How can it help today’s business and the benefits
• Phases in Communication Mining
• Demo on Platform overview
• Q/A
3. Agile Web Development
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
3
4. Installing Rails
Ubuntu
Easy way Suggested way
apt-get install rails apt-get install rubygems
gem install rails
apt-get install rake
OSX Windows
Built in, you just need Instant rails
to use!
4
6. First application
$ rails meetup.balabit
meetup.balabit/
app
config
db
doc
lib
log
public
script
test
tmp
vendor
5
7. First application
app
config
db
doc
lib
log
public
script
test
tmp
vendor
5
8. Heart and soul
Model Controller View
app
config
db
doc
lib
log
public
script
test
tmp
vendor
6
9. Heart and soul
Model Controller View
app
config
db
doc
lib
log
public
script
test
tmp
vendor
6
10. Heart and soul
Model Controller View
app
config
db
doc
lib
Safety net log
public
script
Functional and Functional Tests test
Unit Tests
Integration Tests and Testers tmp
vendor
6
11. Configuration
Database
Mysql, Postgresql, Sqlite, Oracle, Mssql, Sybase
app
Router config
Find the corresponding controller db
doc
http://localhost/:controller/:action/:id lib
Environment specific settings log
public
Production script
test
Development
tmp
Testing vendor
7
12. Database & migration
Sqlite3 database files app
config
Migration files (upgrade & downgrade) db
doc
rake db:migrate (VERSION=)
lib
log
public
script
test
tmp
vendor
8
13. Documentation
HTML and Rdoc based documentation
app
rake doc:app config
db
doc
lib
log
public
script
test
tmp
vendor
9
14. Lib & Vendor
Non-third party drivers (lib)
Third-party drivers (vendor)
app
config
script/plugin install [remote repository] db
doc
lib
log
public
script
test
tmp
vendor
10
15. Log files
server.log app
development.log config
db
production.log doc
lib
test.log
log
custom log files public
script
test
tmp
vendor
11
16. Public files
Images app
CSS files config
db
Javascript files doc
lib
Favicon
log
404, 500 error pages public
script
Other public files test
tmp
vendor
12
17. Script files
console (access in terminal to the application)
app
dbconsole (direct access to the database) config
generate (controller, model, plugin, migration file) db
doc
destroy lib
log
plugin (installing 3rd party plugins)
public
runner (cronjob like tool) script
test
server (start server application) tmp
performance (checking performance tests) vendor
13
18. Temporary files
Cache files app
Pid files config
db
File based sessions doc
Sockets lib
log
public
script
test
tmp
vendor
14