An overview of how to consume 3rd party C++ libraries with CMake.
Methods covered include: find_package, pkg-config and writing a custom CMake Find Module.
1. O documento apresenta informações sobre o livro "Automate the Boring Stuff with Python" de Al Sweigart, incluindo detalhes sobre direitos autorais, tradução para português e equipe responsável.
2. O livro ensina como automatizar tarefas tediosas usando a linguagem de programação Python.
3. Al Sweigart é o autor do livro original em inglês e desenvolvedor de software baseado em San Francisco.
This document discusses package management systems. It defines packages as bundles of software and metadata. It describes package management systems as tools to automate installing, upgrading, configuring, and removing software packages. It discusses key concepts like dependencies and how different Linux distributions use different packaging systems like .deb, .rpm, and tools like apt, aptitude, dpkg, and rpm to manage packages. It also mentions how automatic updates can be configured to keep packages up to date.
Cloud computing allows users to access computing resources and storage over the internet. It provides on-demand access to shared computing resources like software, data storage, and servers. Mobile devices use cloud services for storage, media consumption, document editing, and more. Emerging technologies like 4G and LTE will enable even more cloud-based mobile applications in the future.
Yum is a package management system that allows users to install, update, and remove software packages on Linux systems. It works by maintaining a local database of installed packages and their dependencies. The yum command can be used to install packages and automatically handle dependencies, update all or specific installed packages to newer versions, and remove packages. It provides a consistent interface for managing software packages across different Linux distributions.
Union FileSystem - A Building Blocks Of a ContainerKnoldus Inc.
Namespace, CGroup, and Union file-system are the basic building blocks of a container. Let’s have our focus on file-system. Why yet another file-system for the container? Is Conventional Linux file-systems like ext2, ext3, ext4, XFS, etc. not good enough to meet the purpose? In this blog post, I will try to answer these questions. Here we will be delving deeply into the Union File System and a few of its essential properties.
Thermopylae Sciences & Technology chose to customize MongoDB's spatial indexing capabilities to better support their needs for indexing multi-dimensional and geospatial data. They developed a custom R-tree spatial index that leverages existing MongoDB data structures and provides improved performance over MongoDB's existing geohash-based approach. Their custom index supports complex queries on multidimensional geometric shapes and scales to large geospatial datasets through potential sharding and distribution techniques. They have contributed their work back to the MongoDB open source project and collaborate with MongoDB to further integrate their contributions.
Linux Traffic Control allows administrators to control network traffic through mechanisms like shaping, scheduling, classifying, policing, dropping and marking. It uses components like queuing disciplines (qdiscs), classes, filters, and actions. The tc command can be used to configure these components by adding, changing or deleting traffic control settings on network interfaces.
1. O documento apresenta informações sobre o livro "Automate the Boring Stuff with Python" de Al Sweigart, incluindo detalhes sobre direitos autorais, tradução para português e equipe responsável.
2. O livro ensina como automatizar tarefas tediosas usando a linguagem de programação Python.
3. Al Sweigart é o autor do livro original em inglês e desenvolvedor de software baseado em San Francisco.
This document discusses package management systems. It defines packages as bundles of software and metadata. It describes package management systems as tools to automate installing, upgrading, configuring, and removing software packages. It discusses key concepts like dependencies and how different Linux distributions use different packaging systems like .deb, .rpm, and tools like apt, aptitude, dpkg, and rpm to manage packages. It also mentions how automatic updates can be configured to keep packages up to date.
Cloud computing allows users to access computing resources and storage over the internet. It provides on-demand access to shared computing resources like software, data storage, and servers. Mobile devices use cloud services for storage, media consumption, document editing, and more. Emerging technologies like 4G and LTE will enable even more cloud-based mobile applications in the future.
Yum is a package management system that allows users to install, update, and remove software packages on Linux systems. It works by maintaining a local database of installed packages and their dependencies. The yum command can be used to install packages and automatically handle dependencies, update all or specific installed packages to newer versions, and remove packages. It provides a consistent interface for managing software packages across different Linux distributions.
Union FileSystem - A Building Blocks Of a ContainerKnoldus Inc.
Namespace, CGroup, and Union file-system are the basic building blocks of a container. Let’s have our focus on file-system. Why yet another file-system for the container? Is Conventional Linux file-systems like ext2, ext3, ext4, XFS, etc. not good enough to meet the purpose? In this blog post, I will try to answer these questions. Here we will be delving deeply into the Union File System and a few of its essential properties.
Thermopylae Sciences & Technology chose to customize MongoDB's spatial indexing capabilities to better support their needs for indexing multi-dimensional and geospatial data. They developed a custom R-tree spatial index that leverages existing MongoDB data structures and provides improved performance over MongoDB's existing geohash-based approach. Their custom index supports complex queries on multidimensional geometric shapes and scales to large geospatial datasets through potential sharding and distribution techniques. They have contributed their work back to the MongoDB open source project and collaborate with MongoDB to further integrate their contributions.
Linux Traffic Control allows administrators to control network traffic through mechanisms like shaping, scheduling, classifying, policing, dropping and marking. It uses components like queuing disciplines (qdiscs), classes, filters, and actions. The tc command can be used to configure these components by adding, changing or deleting traffic control settings on network interfaces.
Softbox Raspberry pi education kit development environment setting
이글은 라즈베리 파이에 입문하여 처음 사용하려는 사용자를 위해 작성하였다.
보통 개발을 하든, 무엇인가 하려고 할때 환경을 구축하는것은 까다롭고 힘든 일이다. 그 과정이 단순하고, 쉬울 경우 작업 속도와 성과는 잘 나올 수 있다. 처음 라즈베리 파이를 구입하여 개발환경을 구축하기까지 약간은 번거롭고 힘이 든 과정을 알기 쉽게 설명하려 한다. 문의사항이나 잘 안되는 것은 언제든 답글에 남겨주기 바란다. This article was written for users who want to start using raspberry pi.
It is difficult and difficult to build an environment when you are usually developing or trying to do something. If the process is simple and easy, the speed and performance of the work can be good. I will try to explain the process of purchasing raspberry pie for the first time and building a development environment. If you have any questions or comments, please leave them in a reply.
Sharded Redis With Sentinel Vs Redis Cluster: What We Learned: Patrick KingRedis Labs
Redis was initially used for caching and locking at New Relic. As usage grew, manual sharding was required using application-level hashing to distribute keys across multiple Redis instances. This led to configuration and deployment challenges. New Relic then upgraded to Redis Cluster, which automatically shards and distributes keys. This removed the need for manual sharding code and provides an easier to manage clustered Redis deployment. Going forward, New Relic plans to deploy Redis Cluster using Kubernetes for automated operations and improve monitoring of the clustered Redis infrastructure.
The document discusses advanced configuration and usage of Docker registries. It describes what a registry is for storing Docker images and supporting various storage backends. It then covers configuring a registry to add features like a search index using SQLite, mirroring another registry, and adding a Redis cache. The document concludes by discussing extending the registry code for customization.
"Wire Encryption In HDFS: Protect Your Data From Others, Not Yourself"
ApacheCon 2019, Las Vegas.
SPEAKERS: Chen Liang, Konstantin Shvachko. LinkedIn
Wire data encryption is a key component of the Hadoop Distributed File System (HDFS). HDFS can enforce different levels of data protection, allowing users to specify one based on their own needs. However, such enforcement comes in as an all-or-nothing feature. Namely, wire encryption is enforced either for all accesses or none. Since encryption bears a considerable performance cost, the all-or-nothing condition forces users to choose between 'faster but unencrypted' or 'encrypted but slower' for all clients. In our use case at LinkedIn, we would like to selectively expose fast unencrypted access to fully managed internal clients, which can be trusted, while only expose encrypted access to clients outside of the trusted circle with higher security risks. That way we minimize performance overhead for trusted internal clients while still securing data from potential outside threats. We re-evaluate the RPC encryption mechanism in HDFS. Our design extends HDFS NameNode to run on multiple ports. Depending on the configuration, connecting to different NameNode ports would end up with different levels of encryption protection. This protection then gets enforced for both NameNode RPC and the subsequent data transfers to/from DataNode. System administrators then need to set up a simple firewall rule to allow access to the unencrypted port only for internal clients and expose the encrypted port to the outside clients. This approach comes with minimum operational and performance overhead. The feature has been introduced to Apache Hadoop under HDFS-13541.
2021 04-20 apache arrow and its impact on the database industry.pptxAndrew Lamb
The talk will motivate why Apache Arrow and related projects (e.g. DataFusion) is a good choice for implementing modern analytic database systems. It reviews the major components in most databases and explains where Apache Arrow fits in, and explains additional integration benefits from using Arrow.
O documento apresenta uma lista de exercícios sobre banco de dados, incluindo: 1) definição de SGBD e exemplos; 2) vantagens de banco de dados em relação a sistemas tradicionais; 3) problemas que dificultariam o uso de banco de dados; 4) perfis de pessoas envolvidas em projetos de banco de dados; 5) definição de modelo lógico de dados; 6) definição de esquema e instância de banco de dados.
Apresentação SIMPLIFICADA sobre Árvores B. Serviu de contextualização antes da nossa equipe lançar dois exercícios a serem desenvolvidos pela turma. Parte integrante de um dos trabalhos em matéria de estrutura de dados no Mestrado em Ciência da Computação (UFBA).
NOTA IMPORTANTE: O início da apresentação teve como base o livro "Projeto de Algoritmos" (Nivio Ziviani, 5 edição), mas o trecho sobre remoções teve como base o livro "Algoritmos" (Cormen et al.). Por isto, há uma mudança de abordagem sobre os parâmetros que definem o grau da árvore, no entanto, os algoritmos são os mesmos.
This document provides an introduction and overview of Linux commands and Perl basics. It discusses key Linux commands for system information, user management, files/directories, permissions, processes, networking and more. It also covers Perl data types, variables, input/output, strings, arithmetic, comparisons, functions and file handling. The document aims to teach Linux commands and Perl programming basics.
1) O documento apresenta um resumo sobre bancos de dados, incluindo definições, componentes, modelos e linguagens.
2) É apresentado o modelo entidade-relacionamento e seus componentes como entidades, atributos e relacionamentos.
3) São descritos os principais comandos da linguagem SQL como create table, insert, select, alter e delete.
This document provides an overview of iptables in Linux. Iptables is the user-space utility that allows configuration of Linux's built-in netfilter firewall. It can be used to filter packets, perform network address translation, and mangling packets. Iptables uses tables, chains, and rules to examine packets and determine whether to accept, drop, reject, or log them. Examples are provided of rules that drop or accept ICMP packets on the INPUT chain.
In this presentation, Amit explains querying with MongoDB in detail including Querying on Embedded Documents, Geospatial indexing and Querying etc.
The tutorial includes a recap of MongoDB, the wrapped queries, queries which are using modifiers, Upsert (saving/ updating queries), updating multiple documents at once, etc. Moreover, it gives a brief explanation about specifying which keys to return, the AND/OR queries, querying on embedded documents, cursors and Geospatial indexing. The tutorial begins with a section about MongoDB which includes steps to install and start MongoDB, to show and select Database, to drop collection and database, steps to insert a document and get up to 20 matching documents. Furthermore, it also includes steps to store and use Javascript functions on the server side.
The next section after the MongoDB section is about wrapped queries and queries using modifiers which includes the types of wrapped queries which are used like LikeQuery, SortQuery, LimitQuery, SkipQuery. It also includes the types of queries using modifiers like NotEqualModifier, Greater/Lesser modifier, Increment Modifier, Set Modifier, Unset Modifier, Push Modifier etc. Then comes the section about Upsert (Save or update). There are steps mentioned for saving or updating queries in this section.
At the same time, there are steps to update multiple documents altogether. The next section which is called “specifying which keys to return” talks about ways to specify the keys the user wants. After this section comes OR/AND query. It informs us about the general steps to do an OR query. Also, it includes the general steps to do an AND query. After this section comes another section called “querying on embedded document” which tells the user about ways of querying for an embedded document.
One of the important sections of this tutorial is about cursors, uses of a cursor and also methods to chain additional options onto a query before it is performed. Following is a section about indexing which talks about indexing as a term and how indexing helps in improving the query’s speed. At the end is a section which gives a brief explanation on geospatial indexing which is another type of query that became common with the emergence of mobile devices. Also, it includes the ways geospatial queries can be performed.
CRUSH is the powerful, highly configurable algorithm Red Hat Ceph Storage uses to determine how data is stored across the many servers in a cluster. A healthy Red Hat Ceph Storage deployment depends on a properly configured CRUSH map. In this session, we will review the Red Hat Ceph Storage architecture and explain the purpose of CRUSH. Using example CRUSH maps, we will show you what works and what does not, and explain why.
Presented at Red Hat Summit 2016-06-29.
Gives a brief introduction of the emerging containerization technology, the difference in traditional VMs and Conatiners and the most popular one- Docker
Introduction to users and groups in Linux. We will explore how to set user expiry information and force user password change after certain period of time. We will be also providing different permission to users and groups and restricting users and groups operations using sudoers file
This document discusses deploying IPv6 on OpenStack. It provides an overview of IPv6, including that IPv6 addresses the shortage of IPv4 addresses by providing a vastly larger 128-bit address space. It describes IPv6 address types and allocation methods. It also discusses IPv6 configuration modes in OpenStack, including stateless address autoconfiguration (SLAAC) and DHCPv6 stateless and stateful modes. Additionally, it covers deployment options for IPv6 on OpenStack like dual stack, NAT64/DNS64, and network tunnels. It provides details on IPv6 address and router advertisement configuration in OpenStack.
This document provides an overview of Docker containers and their benefits. It discusses how containers provide isolation and portability for applications compared to virtual machines. The document outlines the history and growth of container technologies like Docker. It then covers how to build, ship, and run containerized applications on platforms like Docker, OpenShift, and Kubernetes. Use cases discussed include application development, modernization, and cloud migrations.
Victor Hazin é um engenheiro de software e professor com mais de 10 anos de experiência. Ele possui graduação e mestrado em Ciências da Computação pela UFPE.
The document discusses functional programming in C# and how it can help control complexity. It defines functional programming as treating computations as mathematical functions without changing state. The document provides examples of copying photo files using both object-oriented and functional approaches in C#. The functional approach uses function composition and immutable data to avoid state changes and control flow, making the focus on specifying transformations rather than algorithms.
This document provides instructions for encapsulating dynamic libraries (dylibs) within a framework in Xcode and ensuring the framework and any applications using the framework can locate the embedded dylibs. Key steps include copying dylibs into the framework, using install_name_tool to change library search paths, adding run scripts to apply changes on build, and configuring framework and application build settings to locate embedded libraries.
Softbox Raspberry pi education kit development environment setting
이글은 라즈베리 파이에 입문하여 처음 사용하려는 사용자를 위해 작성하였다.
보통 개발을 하든, 무엇인가 하려고 할때 환경을 구축하는것은 까다롭고 힘든 일이다. 그 과정이 단순하고, 쉬울 경우 작업 속도와 성과는 잘 나올 수 있다. 처음 라즈베리 파이를 구입하여 개발환경을 구축하기까지 약간은 번거롭고 힘이 든 과정을 알기 쉽게 설명하려 한다. 문의사항이나 잘 안되는 것은 언제든 답글에 남겨주기 바란다. This article was written for users who want to start using raspberry pi.
It is difficult and difficult to build an environment when you are usually developing or trying to do something. If the process is simple and easy, the speed and performance of the work can be good. I will try to explain the process of purchasing raspberry pie for the first time and building a development environment. If you have any questions or comments, please leave them in a reply.
Sharded Redis With Sentinel Vs Redis Cluster: What We Learned: Patrick KingRedis Labs
Redis was initially used for caching and locking at New Relic. As usage grew, manual sharding was required using application-level hashing to distribute keys across multiple Redis instances. This led to configuration and deployment challenges. New Relic then upgraded to Redis Cluster, which automatically shards and distributes keys. This removed the need for manual sharding code and provides an easier to manage clustered Redis deployment. Going forward, New Relic plans to deploy Redis Cluster using Kubernetes for automated operations and improve monitoring of the clustered Redis infrastructure.
The document discusses advanced configuration and usage of Docker registries. It describes what a registry is for storing Docker images and supporting various storage backends. It then covers configuring a registry to add features like a search index using SQLite, mirroring another registry, and adding a Redis cache. The document concludes by discussing extending the registry code for customization.
"Wire Encryption In HDFS: Protect Your Data From Others, Not Yourself"
ApacheCon 2019, Las Vegas.
SPEAKERS: Chen Liang, Konstantin Shvachko. LinkedIn
Wire data encryption is a key component of the Hadoop Distributed File System (HDFS). HDFS can enforce different levels of data protection, allowing users to specify one based on their own needs. However, such enforcement comes in as an all-or-nothing feature. Namely, wire encryption is enforced either for all accesses or none. Since encryption bears a considerable performance cost, the all-or-nothing condition forces users to choose between 'faster but unencrypted' or 'encrypted but slower' for all clients. In our use case at LinkedIn, we would like to selectively expose fast unencrypted access to fully managed internal clients, which can be trusted, while only expose encrypted access to clients outside of the trusted circle with higher security risks. That way we minimize performance overhead for trusted internal clients while still securing data from potential outside threats. We re-evaluate the RPC encryption mechanism in HDFS. Our design extends HDFS NameNode to run on multiple ports. Depending on the configuration, connecting to different NameNode ports would end up with different levels of encryption protection. This protection then gets enforced for both NameNode RPC and the subsequent data transfers to/from DataNode. System administrators then need to set up a simple firewall rule to allow access to the unencrypted port only for internal clients and expose the encrypted port to the outside clients. This approach comes with minimum operational and performance overhead. The feature has been introduced to Apache Hadoop under HDFS-13541.
2021 04-20 apache arrow and its impact on the database industry.pptxAndrew Lamb
The talk will motivate why Apache Arrow and related projects (e.g. DataFusion) is a good choice for implementing modern analytic database systems. It reviews the major components in most databases and explains where Apache Arrow fits in, and explains additional integration benefits from using Arrow.
O documento apresenta uma lista de exercícios sobre banco de dados, incluindo: 1) definição de SGBD e exemplos; 2) vantagens de banco de dados em relação a sistemas tradicionais; 3) problemas que dificultariam o uso de banco de dados; 4) perfis de pessoas envolvidas em projetos de banco de dados; 5) definição de modelo lógico de dados; 6) definição de esquema e instância de banco de dados.
Apresentação SIMPLIFICADA sobre Árvores B. Serviu de contextualização antes da nossa equipe lançar dois exercícios a serem desenvolvidos pela turma. Parte integrante de um dos trabalhos em matéria de estrutura de dados no Mestrado em Ciência da Computação (UFBA).
NOTA IMPORTANTE: O início da apresentação teve como base o livro "Projeto de Algoritmos" (Nivio Ziviani, 5 edição), mas o trecho sobre remoções teve como base o livro "Algoritmos" (Cormen et al.). Por isto, há uma mudança de abordagem sobre os parâmetros que definem o grau da árvore, no entanto, os algoritmos são os mesmos.
This document provides an introduction and overview of Linux commands and Perl basics. It discusses key Linux commands for system information, user management, files/directories, permissions, processes, networking and more. It also covers Perl data types, variables, input/output, strings, arithmetic, comparisons, functions and file handling. The document aims to teach Linux commands and Perl programming basics.
1) O documento apresenta um resumo sobre bancos de dados, incluindo definições, componentes, modelos e linguagens.
2) É apresentado o modelo entidade-relacionamento e seus componentes como entidades, atributos e relacionamentos.
3) São descritos os principais comandos da linguagem SQL como create table, insert, select, alter e delete.
This document provides an overview of iptables in Linux. Iptables is the user-space utility that allows configuration of Linux's built-in netfilter firewall. It can be used to filter packets, perform network address translation, and mangling packets. Iptables uses tables, chains, and rules to examine packets and determine whether to accept, drop, reject, or log them. Examples are provided of rules that drop or accept ICMP packets on the INPUT chain.
In this presentation, Amit explains querying with MongoDB in detail including Querying on Embedded Documents, Geospatial indexing and Querying etc.
The tutorial includes a recap of MongoDB, the wrapped queries, queries which are using modifiers, Upsert (saving/ updating queries), updating multiple documents at once, etc. Moreover, it gives a brief explanation about specifying which keys to return, the AND/OR queries, querying on embedded documents, cursors and Geospatial indexing. The tutorial begins with a section about MongoDB which includes steps to install and start MongoDB, to show and select Database, to drop collection and database, steps to insert a document and get up to 20 matching documents. Furthermore, it also includes steps to store and use Javascript functions on the server side.
The next section after the MongoDB section is about wrapped queries and queries using modifiers which includes the types of wrapped queries which are used like LikeQuery, SortQuery, LimitQuery, SkipQuery. It also includes the types of queries using modifiers like NotEqualModifier, Greater/Lesser modifier, Increment Modifier, Set Modifier, Unset Modifier, Push Modifier etc. Then comes the section about Upsert (Save or update). There are steps mentioned for saving or updating queries in this section.
At the same time, there are steps to update multiple documents altogether. The next section which is called “specifying which keys to return” talks about ways to specify the keys the user wants. After this section comes OR/AND query. It informs us about the general steps to do an OR query. Also, it includes the general steps to do an AND query. After this section comes another section called “querying on embedded document” which tells the user about ways of querying for an embedded document.
One of the important sections of this tutorial is about cursors, uses of a cursor and also methods to chain additional options onto a query before it is performed. Following is a section about indexing which talks about indexing as a term and how indexing helps in improving the query’s speed. At the end is a section which gives a brief explanation on geospatial indexing which is another type of query that became common with the emergence of mobile devices. Also, it includes the ways geospatial queries can be performed.
CRUSH is the powerful, highly configurable algorithm Red Hat Ceph Storage uses to determine how data is stored across the many servers in a cluster. A healthy Red Hat Ceph Storage deployment depends on a properly configured CRUSH map. In this session, we will review the Red Hat Ceph Storage architecture and explain the purpose of CRUSH. Using example CRUSH maps, we will show you what works and what does not, and explain why.
Presented at Red Hat Summit 2016-06-29.
Gives a brief introduction of the emerging containerization technology, the difference in traditional VMs and Conatiners and the most popular one- Docker
Introduction to users and groups in Linux. We will explore how to set user expiry information and force user password change after certain period of time. We will be also providing different permission to users and groups and restricting users and groups operations using sudoers file
This document discusses deploying IPv6 on OpenStack. It provides an overview of IPv6, including that IPv6 addresses the shortage of IPv4 addresses by providing a vastly larger 128-bit address space. It describes IPv6 address types and allocation methods. It also discusses IPv6 configuration modes in OpenStack, including stateless address autoconfiguration (SLAAC) and DHCPv6 stateless and stateful modes. Additionally, it covers deployment options for IPv6 on OpenStack like dual stack, NAT64/DNS64, and network tunnels. It provides details on IPv6 address and router advertisement configuration in OpenStack.
This document provides an overview of Docker containers and their benefits. It discusses how containers provide isolation and portability for applications compared to virtual machines. The document outlines the history and growth of container technologies like Docker. It then covers how to build, ship, and run containerized applications on platforms like Docker, OpenShift, and Kubernetes. Use cases discussed include application development, modernization, and cloud migrations.
Victor Hazin é um engenheiro de software e professor com mais de 10 anos de experiência. Ele possui graduação e mestrado em Ciências da Computação pela UFPE.
The document discusses functional programming in C# and how it can help control complexity. It defines functional programming as treating computations as mathematical functions without changing state. The document provides examples of copying photo files using both object-oriented and functional approaches in C#. The functional approach uses function composition and immutable data to avoid state changes and control flow, making the focus on specifying transformations rather than algorithms.
This document provides instructions for encapsulating dynamic libraries (dylibs) within a framework in Xcode and ensuring the framework and any applications using the framework can locate the embedded dylibs. Key steps include copying dylibs into the framework, using install_name_tool to change library search paths, adding run scripts to apply changes on build, and configuring framework and application build settings to locate embedded libraries.
This document discusses using Java tools and APIs to add modularity, extensibility, and runtime metrics capabilities to a Java codebase. It describes using service provider interfaces (SPIs), annotation processors, and Java Management Extensions (JMX) to dynamically load extensions, generate metadata, and expose runtime metrics. Key points include how SPIs allow extensions to be automatically discovered, how annotation processors can generate metadata files at compile time, and how JMX can be used to monitor and manage a Java application at runtime.
The document outlines a presentation on becoming a "rockstar" with Drupal. It discusses Drupal's large open source community and code base. It covers best practices for code structure, naming conventions, deployment strategies like Features and Configuration Management. It also summarizes caching options like Memcache, Varnish and Boost as well as security practices and the flexibility provided by Drupal's hooks, API and thousands of contributed modules. The presentation concludes with an overview of the command line tool Drush and its uses in deployment, site management and more.
This document discusses various tools for programming in Linux, including:
1. The GNU C Compiler (gcc) which compiles C, C++, and Objective-C programs. It performs preprocessing, compilation, assembly, and linking.
2. Make and automake which simplify building projects with multiple source files by tracking dependencies and only rebuilding changed files. Makefiles define rules and variables to build targets.
3. Popular programming languages for Linux including Java, JavaScript, PHP, Python, and others.
4. Graphical development tools like IDEs, SDKs, and clients for developing KDE and GNOME applications. Eclipse, NetBeans, and Visual Studio Code are mentioned as IDE options.
Operating System Practice : Meeting 4 - operasi file dan struktur direktori-s...Syaiful Ahdan
This document discusses file operations and directory structure in Linux operating systems. It describes the hierarchical tree structure of the Linux file system with the root directory at the top. It also defines standard directories like /bin, /etc, and /home and explains directory descriptions. The document outlines file types, properties, naming conventions, and symbolic links. It provides examples of commands to view file contents and search files.
The document provides an overview of new features in JSR-203 (NIO.2), including updated buffers that support larger sizes, improved socket and file I/O APIs, a new filesystem API, asynchronous I/O, and multicast support. Key changes include BigBuffers for handling files over 2GB, refactored MappedByteBuffer methods, enhanced SocketChannel functionality, a new NetworkChannel interface, support for joining multicast groups, and a generalized filesystem API with metadata access and a watch service.
While CMake has become the de-facto standard buildsystem for C++, it's siblings CTest and CPack are less well known. This talk gives a lightspeed introduction into these three tools and then focuses on best practices on building, testing, and packaging.
The document discusses customizing HTML outputs from DITA using CSS stylesheets and parameters. It provides an overview of common HTML formats (XHTML, HTML Help, Eclipse Help, JavaHelp), how they can be customized through CSS, parameters, and XSL overrides. It also covers context sensitivity for HTML Help and Eclipse Help through plugins, and resources for further customization.
The document discusses several software development best practices including source control, coding standards, design patterns, documentation, testing, and deployment. It provides examples and explanations of common design patterns like factory, registry, adapter, decorator, and observer. Resources for further information on topics like Subversion, Git, coding standards, and design patterns are also referenced.
Make is a tool that automates the building of software by tracking dependencies between files and only rebuilding components that have changed. It reads build instructions from a makefile to determine what needs to be built. Make traverses the dependency tree of a project, rebuilds out of date or missing components, and handles dependencies between files and components. While powerful, makefiles can be difficult to write and debug, and Make has limitations for languages like Java that don't expose dependencies in source code. Alternatives like Apache Ant provide similar functionality through XML build files.
The document discusses Autoconf and Automake, which are tools used to automatically generate Makefiles and configure scripts from simple descriptions of a project's build requirements. Autoconf generates configure scripts that can build software on different systems by checking for features like libraries, headers, and functions. Automake generates Makefiles from simple descriptions of build targets and dependencies in Makefile.am files. Together, these tools help developers more easily build portable software projects across a variety of Unix systems.
This document discusses decoupled libraries and frameworks in PHP. It provides background on libraries, frameworks and components. Key principles of decoupled library packages are that they have no dependencies on other packages, encapsulate tests and assets, and are set up for dependency injection rather than static calls. Examples are given of how individual Aura library packages follow these principles, including the Router and Web packages. Limits to full decoupling are noted, as well as the direction of dependencies between packages.
This presentation shows how to use CMake to probe the platform (operating system/environment) and compiler to identify required or optional language/platform features. A complete example is shown for adapting a program to discovered features.
Pyfilesystem provides a unified Python API for accessing various storage systems and file services. It abstracts away differences between storage APIs so that code works across systems without changes. Drivers exist for many systems including WebDAV, SFTP, S3, and local filesystems. The goal is for code to be unaware of the underlying storage type being used.
This document provides an overview of CodeIgniter and the Model-View-Controller (MVC) framework. It discusses the key features supported by CodeIgniter including database classes, validation, security filtering, and more. It explains the basic MVC structure with models representing data, views representing presented information, and controllers serving as intermediaries. The document demonstrates how CodeIgniter handles URLs in a segment-based approach and describes the roles of controllers, views, models, helpers, libraries, and hooks within a CodeIgniter application. Code examples are provided to illustrate how each component works.
Vintage Computing Festival Midwest 18 2023-09-09 What's In A Terminal.pdfRichard Thomson
The document provides a history of electrified serial communication devices including telegraphs, teleprinters, teletypes, glass TTY terminals, and microprocessor terminals. It then examines the architecture and components of specific terminal models including the Beehive B100 discrete logic terminal, the DEC VT100 microprocessor-controlled terminal supporting ANSI sequences, and the HP 2648A modular graphics terminal with similarities to a personal computer. The document explores the evolution of terminals from electromechanical to discrete logic to microprocessor-controlled designs.
BEFLIX is an embedded domain-specific language for generating computer animated films. BEFLIX was created by Ken Knowlton in 1963 for the IBM 7090 mainframe computer with a Stromberg-Carlson SC2040 microfilm recorder for output. Ken Knowlton created BEFLIX while working at Bell Laboratories and used it to make a number of artistic, educational and engineering films.
The document discusses SIMD (Single Instruction Multiple Data), which exploits data parallelism to perform the same operation on multiple data points simultaneously using SIMD instructions. It provides a brief history of CPU SIMD extensions and their register sizes. It also covers data types, alignment requirements in C++, compiler intrinsics to access SIMD instructions, and options for programming with SIMD like using intrinsics directly or libraries like Boost.Simd. It proposes an exercise to modify a Mandelbrot set program to use AVX intrinsics to perform calculations on multiple data points in parallel.
Utah Code Camp, Spring 2016. http://utahcodecamp.com In this presentation I describe modern C++. Modern C++ assumes features introduced in the C++11/14 standard. An overview of the new features is presented and some idioms for mdoern C++ based on those features are presented.
Cross Platform Mobile Development with Visual Studio 2015 and C++Richard Thomson
Utah Code Camp, Spring 2016. http://utahcodecamp.com In this presentation, I give an overview of using Visual Studio 2015 for cross-platform development in C++.
This document provides an overview of creating a mashup application using Node.js. It defines a mashup as a web page that aggregates data from multiple sources. It then discusses Node.js and how its asynchronous, non-blocking model makes it well-suited for data-intensive real-time applications. The document outlines sources of internal and external data that could be included in a mashup and recommends modules like Request and Async to simplify accessing these data sources from Node.js. It also provides tips on building the server, gathering and rendering data, and evolving the application.
C++ provides backwards compatability with C, but you will have an easier time if you stay away from certain C-style programming habits. This presentation outlines traps and pitfalls from C style programming in C++ and recommends pure C++ alternatives that lead to fewer surprises, fewer errors and better code. This presentation hasn't been updated for C++11 and is based on C++03.
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j
Dr. Jesús Barrasa, Head of Solutions Architecture for EMEA, Neo4j
Découvrez les dernières innovations de Neo4j, et notamment les dernières intégrations cloud et les améliorations produits qui font de Neo4j un choix essentiel pour les développeurs qui créent des applications avec des données interconnectées et de l’IA générative.
What is Augmented Reality Image Trackingpavan998932
Augmented Reality (AR) Image Tracking is a technology that enables AR applications to recognize and track images in the real world, overlaying digital content onto them. This enhances the user's interaction with their environment by providing additional information and interactive elements directly tied to physical images.
Most important New features of Oracle 23c for DBAs and Developers. You can get more idea from my youtube channel video from https://youtu.be/XvL5WtaC20A
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemPeter Muessig
Learn about the latest innovations in and around OpenUI5/SAPUI5: UI5 Tooling, UI5 linter, UI5 Web Components, Web Components Integration, UI5 2.x, UI5 GenAI.
Recording:
https://www.youtube.com/live/MSdGLG2zLy8?si=INxBHTqkwHhxV5Ta&t=0
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Crescat
Crescat is industry-trusted event management software, built by event professionals for event professionals. Founded in 2017, we have three key products tailored for the live event industry.
Crescat Event for concert promoters and event agencies. Crescat Venue for music venues, conference centers, wedding venues, concert halls and more. And Crescat Festival for festivals, conferences and complex events.
With a wide range of popular features such as event scheduling, shift management, volunteer and crew coordination, artist booking and much more, Crescat is designed for customisation and ease-of-use.
Over 125,000 events have been planned in Crescat and with hundreds of customers of all shapes and sizes, from boutique event agencies through to international concert promoters, Crescat is rigged for success. What's more, we highly value feedback from our users and we are constantly improving our software with updates, new features and improvements.
If you plan events, run a venue or produce festivals and you're looking for ways to make your life easier, then we have a solution for you. Try our software for free or schedule a no-obligation demo with one of our product specialists today at crescat.io
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsPeter Muessig
The UI5 tooling is the development and build tooling of UI5. It is built in a modular and extensible way so that it can be easily extended by your needs. This session will showcase various tooling extensions which can boost your development experience by far so that you can really work offline, transpile your code in your project to use even newer versions of EcmaScript (than 2022 which is supported right now by the UI5 tooling), consume any npm package of your choice in your project, using different kind of proxies, and even stitching UI5 projects during development together to mimic your target environment.
WhatsApp offers simple, reliable, and private messaging and calling services for free worldwide. With end-to-end encryption, your personal messages and calls are secure, ensuring only you and the recipient can access them. Enjoy voice and video calls to stay connected with loved ones or colleagues. Express yourself using stickers, GIFs, or by sharing moments on Status. WhatsApp Business enables global customer outreach, facilitating sales growth and relationship building through showcasing products and services. Stay connected effortlessly with group chats for planning outings with friends or staying updated on family conversations.
SOCRadar's Aviation Industry Q1 Incident Report is out now!
The aviation industry has always been a prime target for cybercriminals due to its critical infrastructure and high stakes. In the first quarter of 2024, the sector faced an alarming surge in cybersecurity threats, revealing its vulnerabilities and the relentless sophistication of cyber attackers.
SOCRadar’s Aviation Industry, Quarterly Incident Report, provides an in-depth analysis of these threats, detected and examined through our extensive monitoring of hacker forums, Telegram channels, and dark web platforms.
Using Query Store in Azure PostgreSQL to Understand Query PerformanceGrant Fritchey
Microsoft has added an excellent new extension in PostgreSQL on their Azure Platform. This session, presented at Posette 2024, covers what Query Store is and the types of information you can get out of it.
Measures in SQL (SIGMOD 2024, Santiago, Chile)Julian Hyde
SQL has attained widespread adoption, but Business Intelligence tools still use their own higher level languages based upon a multidimensional paradigm. Composable calculations are what is missing from SQL, and we propose a new kind of column, called a measure, that attaches a calculation to a table. Like regular tables, tables with measures are composable and closed when used in queries.
SQL-with-measures has the power, conciseness and reusability of multidimensional languages but retains SQL semantics. Measure invocations can be expanded in place to simple, clear SQL.
To define the evaluation semantics for measures, we introduce context-sensitive expressions (a way to evaluate multidimensional expressions that is consistent with existing SQL semantics), a concept called evaluation context, and several operations for setting and modifying the evaluation context.
A talk at SIGMOD, June 9–15, 2024, Santiago, Chile
Authors: Julian Hyde (Google) and John Fremlin (Google)
https://doi.org/10.1145/3626246.3653374
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeAftab Hussain
Understanding variable roles in code has been found to be helpful by students
in learning programming -- could variable roles help deep neural models in
performing coding tasks? We do an exploratory study.
- These are slides of the talk given at InteNSE'23: The 1st International Workshop on Interpretability and Robustness in Neural Software Engineering, co-located with the 45th International Conference on Software Engineering, ICSE 2023, Melbourne Australia
Zoom is a comprehensive platform designed to connect individuals and teams efficiently. With its user-friendly interface and powerful features, Zoom has become a go-to solution for virtual communication and collaboration. It offers a range of tools, including virtual meetings, team chat, VoIP phone systems, online whiteboards, and AI companions, to streamline workflows and enhance productivity.
DDS Security Version 1.2 was adopted in 2024. This revision strengthens support for long runnings systems adding new cryptographic algorithms, certificate revocation, and hardness against DoS attacks.
DDS-Security 1.2 - What's New? Stronger security for long-running systems
Consuming Libraries with CMake
1. Richard Thomson
Senior Software Engineer, NVIDIA
@LegalizeAdulthd
http://LegalizeAdulthood.wordpress.com
legalize@xmission.com
2. Outline
Review of C++ Libraries
find_package
pkg-config
Custom Find Module
3. C++ Library Review
Source files include library headers
Executable linked against libraries
4. Library Header Complications
May include headers from other libraries
May require specific preprocessor
definitions
May have different names on different
platforms
May have different names based on build
configuration
5. Library Link Complications
May depend on other libraries
May require specific runtime constraints, e.g.
Windows C/C++ runtime library variants
May have different names on different platforms
May have different names based on build
configuration
Library location may depend on build configuration
6. CMake Requirements
Build Requirements
What is needed to build this target?
Usage Requirements
What is needed to use a target?
Requirement examples:
○ Compilation flags
○ Preprocessor definitions
○ Include directories
○ Link directories
○ Link dependencies
Requirements are propagated transitively by
CMake between targets
7. CMake Target Requirements
PRIVATE
Build requirements for the target
Imposes no usage requirement
INTERFACE
Usage requirements for the target
Imposes no build requirements
PUBLIC
Combination of PRIVATE and INTERFACE
Imposes build and usage requirements
8. CMake Properties
A property is a name/value pair
CMake properties:
Global properties
Project properties
Directory properties
Target properties
Source file properties
Build requirements are properties
Usage requirements are properties
9. CMake Modules
A module is just a text file containing CMake
commands
Typically a module defines functions and macros
Usually named XXX.cmake
include(XXX) loads the module XXX.cmake
CMake has a module search path used to locate
module files
10. Imported Targets
Imported targets supply usage
requirements
A find module may create imported targets
for the found library
Usage requirements are associated with the
imported target via target properties
Prefer imported targets for found libraries
12. Header Only Library
Implementation exists only as headers
Library dependencies are linked into the
executable
Executable and library must use compatible
compilation flags
Unused code may be detected by the linker
13. Header Only Library by Hand
cmake_minimum_required(VERSION 3.16)
project(hello VERSION 1.0 LANGUAGES CXX)
add_executable(hello hello.cpp)
target_compile_options(hello PRIVATE –Wall)
target_compile_definitions(hello PRIVATE HAVE_IOSTREAMS)
target_include_directories(hello PRIVATE greet/include)
14. Static Library
Binds object code into the executable
Library dependencies are linked into the
executable
Executable and library must use compatible
compilation flags
Unused code may be detected by the linker
15. Static Library by Hand
cmake_minimum_required(VERSION 3.16)
project(hello VERSION 1.0 LANGUAGES CXX)
add_executable(hello hello.cpp)
target_compile_options(hello PRIVATE –Wall)
target_compile_definitions(hello PRIVATE HAVE_IOSTREAMS)
target_include_directories(hello PRIVATE greet/include)
target_link_libraries(hello PRIVATE greet/lib/libgreet.a)
16. Dynamic Library
Binds references into the executable
Must be deployed with the executable
Library may be versioned
Executable and library must use compatible
compilation flags
17. Dynamic Library by Hand
cmake_minimum_required(VERSION 3.16)
project(hello VERSION 1.0 LANGUAGES CXX)
add_executable(hello hello.cpp)
target_compile_options(hello PRIVATE –Wall)
target_compile_definitions(hello PRIVATE HAVE_IOSTREAMS)
target_include_directories(hello PRIVATE greet/include)
target_link_libraries(hello
PRIVATE greet/lib/libgreet.so)
18. Plug-In Library
Dynamic library that is accessed at runtime
Executable does not directly bind to the
library
Executable queries plug-in for function entry
points
Executable and library must use compatible
compilation flags
19. Plug-In Library by Hand
cmake_minimum_required(VERSION 3.16)
project(hello VERSION 1.0 LANGUAGES CXX)
add_executable(hello hello.cpp)
target_compile_options(hello PRIVATE –Wall)
target_compile_definitions(hello PRIVATE HAVE_IOSTREAMS)
target_include_directories(hello PRIVATE greet/include)
20. Library by Hand Shortcomings
Consuming executable littered with library
implementation details
Compilation options are compiler specific
Location of headers is assumed
Location of library is assumed
Doesn’t select debug or release library
Name of library is assumed
21. find_package
find_package(<PackageName> [version]
[EXACT] [QUIET] [MODULE] [REQUIRED]
[[COMPONENTS] [components...]]
[OPTIONAL_COMPONENTS components...]
[NO_POLICY_SCOPE])
Finds and loads settings from an external
project
Sets <PackageName>_FOUND if found
Sucess results in variables and imported
targets describing the found package
Unifies header only, static and dynamic
libraries
22. Find Modules
find_package looks for a Find Module for
the requested package
The CMake module search path is used to
located the Find Module
A Find Module is named FindXXX.cmake
CMake ships with many find modules
24. pkg-config
pkg-config originated in Unix, but is
available for Unix, macOS and Windows
pkg-config describes usage requirements
for installed libraries
CMake’s FindPkgConfig module can create
imported targets for pkg-config libraries
25. pkg-config Example
cmake_minimum_required(VERSION 3.16)
project(hello VERSION 1.0 LANGUAGES CXX)
find_package(PkgConfig REQUIRED)
add_executable(hello hello.cpp)
pkg_check_modules(Greeting REQUIRED IMPORTED_TARGET
greet=1.0)
target_link_libraries(hello PRIVATE PkgConfig::Greeting)
26. Custom Find Module
Write your own find module when CMake
has no find module for the library
Determines usage requirements:
Compile options
Compile definitions
Include directories
Link options
Link directories
Library filename
Create imported target(s) for the library
27. Find Module Outline
1. Input data is described by find_package
2. Locate header files
3. Locate library files
4. Locate dependencies
5. Call find_package_handle_standard_args
to communicate results to find_package
6. If everything found:
1. Create imported target
2. Set target properties
29. find_file
find_file(<var>
name | NAMES name1 [name2...]
[HINTS path1 [path2...ENV var]]
[PATHS path1 [path2...ENV var]]
[PATH_SUFFIXES suffix1 [suffix2 ...]]
[DOC "cache documentation string"]
[NO_DEFAULT_PATH])
Locates a file according to name, location, suffix
Stores the result in <var>
Consult documentation for more options and
details on search behavior
30. find_program
find_program(<var>
name | NAMES name1 [name2...]
[HINTS path1 [path2...ENV var]]
[PATHS path1 [path2...ENV var]]
[PATH_SUFFIXES suffix1 [suffix2 ...]]
[DOC "cache documentation string"]
[NO_DEFAULT_PATH])
Similar to find_file
Locates an executable program
Handles platform specific conventions, e.g.
foo.exe on Windows
31. find_path
find_path(<var>
name | NAMES name1 [name2...]
[HINTS path1 [path2...ENV var]]
[PATHS path1 [path2...ENV var]]
[PATH_SUFFIXES suffix1 [suffix2 ...]]
[DOC "cache documentation string"]
[NO_DEFAULT_PATH])
Similar to find_file
Locates a directory containing a file
32. find_library
find_library(<var>
name | NAMES name1 [name2...]
[HINTS path1 [path2...ENV var]]
[PATHS path1 [path2...ENV var]]
[PATH_SUFFIXES suffix1 [suffix2 ...]]
[DOC "cache documentation string"]
[NO_DEFAULT_PATH])
Similar to find_file
Handles platform specific library forms, e.g.
libfoo.a, foo.dll, foo.lib
37. Prefer target_XXX commands over setting
the properties directly
set_target_properties will replace target
property settings with new values (it does
not append)
set_property(TARGET) can be used to
append values to properties
Setting Target Properties
38. Header only library
Look for catch.hpp
Create imported target Catch2::Catch
Example: Catch2 Unit Testing
Library