Sling instances tend to live in herds. Synchronizing content among them is quite easy, as the whole repository is available via the REST API. However, sending control messages ("create a user", "give me a list of modified pages") may be tricky. There is a better way than implementing dozens of servlets or event listeners: it is a message queue. During the presentation we will show how to integrate ActiveMQ with Sling and how to use it to exchange messages between instances. We will also present some real-world use cases.
Apache Sling - Distributed Eventing, Discovery, and Jobs (adaptTo 2013)Carsten Ziegeler
The document summarizes a presentation on distributed eventing and jobs using Apache Sling and OSGi technologies. It discusses how OSGi event publishing works, Apache Sling discovery and job handling capabilities, and how events can be used to trigger and distribute jobs across multiple instances in a clustered environment. Key points include how Sling identifies instances, clusters, and topologies, manages job queues and consumers, and distributes jobs based on enabled topics and instance availability.
Vivek Sachdeva gave a presentation on integrating Elasticsearch with Adobe Experience Manager (AEM). He discussed approaches to indexing AEM content in Elasticsearch, including push and pull indexing using a replication agent. He demonstrated features like faceting, free text search, geo faceting, and advanced aggregations. The code for integrating AEM with Elasticsearch is available on GitHub.
This document discusses the architecture of CPLDs and FPGAs. CPLDs consist of PAL-like blocks, I/O blocks, and a programmable interconnect structure. FPGAs consist of an array of configurable logic blocks, I/O blocks, and programmable row and column interconnect channels. The document compares CPLDs and FPGAs, noting that FPGAs have a more complex architecture and unpredictable delays while CPLDs are less complex, cheaper, and have more predictable delays. The conclusion restates that the document discussed the architecture of CPLDs and FPGAs and listed their comparisons.
Modern semiconductor manufacturing employs a three-tiered approach to control contamination: 1) Clean factories and clean rooms minimize airborne and liquid particles. 2) Wafer cleaning with processes like RCA remove surface contaminants. 3) Gettering pushes impurities from active device areas to non-critical regions like the wafer backside or bulk to improve yields.
This document describes the process for manufacturing printed circuit boards (PCBs) at Genus PCB. The key steps include:
1) Shearing and drilling copper clad laminate as per the design.
2) Plating through holes and depositing copper in desired areas using photo imaging and plating.
3) Stripping, etching, and stripping again to remove unwanted copper.
4) Applying solder mask and hot air leveling solder.
5) Testing and final quality control before separation and packaging of individual PCBs. Quality issues like shorts, breaks, or misalignment can occur if dust or films are not properly removed between steps.
Hidden Camera 3 APIs in Android 4.4 (KitKat)Balwinder Kaur
The document provides an overview of the new Camera 3 framework introduced in Android 4.3 and 4.4. It aims to expand the camera subsystem to support computational photography use cases like HDR, panoramic stitching, and multi-shot processing. The new framework models the camera as a pipeline that applications can control through fine-grained APIs to process image data and metadata in real-time. It allows applications to directly access image buffers and control camera settings per frame through a request-result model.
Design & Check Cyclic Redundancy Code using VERILOG HDLijsrd.com
the CRC or cyclic redundancy check is a widely used technique for error checking in many protocols used in data transmission. The aim of this project is to design the CRC RTL generator or a tool that calculates the CRC equations for the given CRC polynomials and generates the Verilog RTL code .This block deals with the calculation of equations for standard polynomials like CRC-4, CRC-8, CRC-16, CRC-32 and CRC-48, CRC-64 and also user defined proprietary polynomial. To use PERL as the platform it also aims at having a simpler user interface. To generate the RTLs for any data width and for any standard polynomial or user defined polynomial, this design aims to be complete generic. The RTLs generated by this tool are verified by System Verilog constrained random testing to make it more robust and reliable.
Apache Sling - Distributed Eventing, Discovery, and Jobs (adaptTo 2013)Carsten Ziegeler
The document summarizes a presentation on distributed eventing and jobs using Apache Sling and OSGi technologies. It discusses how OSGi event publishing works, Apache Sling discovery and job handling capabilities, and how events can be used to trigger and distribute jobs across multiple instances in a clustered environment. Key points include how Sling identifies instances, clusters, and topologies, manages job queues and consumers, and distributes jobs based on enabled topics and instance availability.
Vivek Sachdeva gave a presentation on integrating Elasticsearch with Adobe Experience Manager (AEM). He discussed approaches to indexing AEM content in Elasticsearch, including push and pull indexing using a replication agent. He demonstrated features like faceting, free text search, geo faceting, and advanced aggregations. The code for integrating AEM with Elasticsearch is available on GitHub.
This document discusses the architecture of CPLDs and FPGAs. CPLDs consist of PAL-like blocks, I/O blocks, and a programmable interconnect structure. FPGAs consist of an array of configurable logic blocks, I/O blocks, and programmable row and column interconnect channels. The document compares CPLDs and FPGAs, noting that FPGAs have a more complex architecture and unpredictable delays while CPLDs are less complex, cheaper, and have more predictable delays. The conclusion restates that the document discussed the architecture of CPLDs and FPGAs and listed their comparisons.
Modern semiconductor manufacturing employs a three-tiered approach to control contamination: 1) Clean factories and clean rooms minimize airborne and liquid particles. 2) Wafer cleaning with processes like RCA remove surface contaminants. 3) Gettering pushes impurities from active device areas to non-critical regions like the wafer backside or bulk to improve yields.
This document describes the process for manufacturing printed circuit boards (PCBs) at Genus PCB. The key steps include:
1) Shearing and drilling copper clad laminate as per the design.
2) Plating through holes and depositing copper in desired areas using photo imaging and plating.
3) Stripping, etching, and stripping again to remove unwanted copper.
4) Applying solder mask and hot air leveling solder.
5) Testing and final quality control before separation and packaging of individual PCBs. Quality issues like shorts, breaks, or misalignment can occur if dust or films are not properly removed between steps.
Hidden Camera 3 APIs in Android 4.4 (KitKat)Balwinder Kaur
The document provides an overview of the new Camera 3 framework introduced in Android 4.3 and 4.4. It aims to expand the camera subsystem to support computational photography use cases like HDR, panoramic stitching, and multi-shot processing. The new framework models the camera as a pipeline that applications can control through fine-grained APIs to process image data and metadata in real-time. It allows applications to directly access image buffers and control camera settings per frame through a request-result model.
Design & Check Cyclic Redundancy Code using VERILOG HDLijsrd.com
the CRC or cyclic redundancy check is a widely used technique for error checking in many protocols used in data transmission. The aim of this project is to design the CRC RTL generator or a tool that calculates the CRC equations for the given CRC polynomials and generates the Verilog RTL code .This block deals with the calculation of equations for standard polynomials like CRC-4, CRC-8, CRC-16, CRC-32 and CRC-48, CRC-64 and also user defined proprietary polynomial. To use PERL as the platform it also aims at having a simpler user interface. To generate the RTLs for any data width and for any standard polynomial or user defined polynomial, this design aims to be complete generic. The RTLs generated by this tool are verified by System Verilog constrained random testing to make it more robust and reliable.
Heap Dump Analysis - AEM: Real World IssuesKanika Gera
This document discusses analyzing Java heap dumps to diagnose out of memory errors. It begins with an overview of Java heap concepts like how memory is allocated and garbage collection. Next, it defines what a heap dump is and how to generate one. It then explains how to analyze heap dumps using tools like MAT to identify the largest objects consuming memory, visualize object reference graphs and dominator trees, and investigate threads. The goal is to find memory leaks and reduce memory usage to prevent out of memory errors from occurring.
This document discusses software design principles and patterns, including:
1) Generic programming allows code to work with different data types through interfaces and abstract base classes. Reflection allows examining and manipulating objects at runtime.
2) The document discusses separation of concerns, loose coupling, and high cohesion as important design principles. It gives an example of dividing an application by feature and concern.
3) The document uses a duck simulation example to illustrate issues that can arise from rigid class hierarchies and inheritance. It proposes using the strategy pattern by defining behavior interfaces and swapping concrete strategy classes to vary behavior while keeping classes loosely coupled and extensible.
OpenCV를 활용하는 영상처리 어플리케이션 개발자들은 항상 GPU 자원을 활용하고 싶을 것이다. 하지만 이기종 컴퓨팅 환경에서 CPU 이외의 다른 하드웨어 자원을 활용하는 것은 개발 환경 및 백그라운드 지식 등의 많은 어려움이 따른다.
GPGPU 활용에 가장 상용화로 성공한 대중적인 솔루션으로는 nVidia 사의 CUDA 기술이 있지만, 그 외에도 GPGPU 자원을 쉽게 활용할 수 있는 오픈 플랫폼이 있는데 이것이 OpenCL 표준이다.
최근 하드웨어와 소프트웨어 진영에서 모두 OpenCL의 지원 및 발전이 두드러지며 점점 더 확산되는 추세이다.
OpenCV 진영에서도, 3.0이 정식 릴리즈 면서 본격적으로 OpenCL을 활용하기가 한층 쉬워졌다.
The document describes the classic bus cycle and data organization in a WISHBONE system. It discusses read, write, and read-modify-write cycles. It also explains big-endian and little-endian data ordering and provides examples of transferring a 64-bit value using different port sizes under each ordering scheme.
This document summarizes a presentation given by Lucas van Grinsven of ASML about keeping innovation moving. It discusses:
1) ASML is a cornerstone of the chip industry and its strategy is to be a technology leader in lithographic systems, enabling customers to increase chip functionality while reducing cost and power consumption.
2) Sustainability is a key driver of the chip industry as Moore's Law allows chips to double in power every 1.5-2 years while reducing price, leading to growth in applications like smartphones. ASML enables this through lithography equipment.
3) ASML is taking steps to reduce the energy usage and carbon emissions of its business, focusing on reducing emissions per transistor,
Rama Tri Nanda - NFC Hacking Hacking NFC Reverse Power Supply Padlock.pdfidsecconf
Near Field Communication (NFC) saat ini adalah teknologi yang umumnya di gunakan untuk media pembayaran serta akses kontrol untuk keamanan ruangan dan gedung. Tidak terbatas untuk hal itu saja, teknologi NFC juga kerap di implementasikan untuk perangkat IoT. Beberapa perangkat menggunakan NFC tag untuk menyimpan informasi guna sinkronisasi dengan perangkat smartphone. Penggunaan teknologi NFC awalnya dianggap aman karna mengharuskan alat baca dengan tag berada dalam poisisi yang sangat dekat. Sehingga dianggap sulit untuk melakukan penyadapan informasinya. Seiring waktu banyak penilitian mengungkapkan bahwa komunikasi ISO 1443-3 ini bisa di intip dan di terjemahkan ke dalam bentuk perintah serta respon aslinya. Proxmark3 adalah salah satu alat yang dikembangkan untuk keperluan tersebut. Namun ada kondisi dimana perangkat proxmark tidak dapat di fungsikan maksimal lantaran berkurangnya sensititifitas pembaca dan tag ketika ada objek berada diantara keduanya. Di paper ini saya ingin menyajikan hasil penelitian saya tentang penggunaan Dynamic Instrumentation Frida untuk memantau penggunaan modul java nfc dalam platform Android dan menggunakannya untuk melakukan lockpicking pada gembok pintar berbasis NFC.
The document provides an overview of Verilog, including:
1) Why HDLs like Verilog are needed for designing large, complex hardware systems.
2) Basic Verilog syntax such as modules, ports, parameters, nets, registers, operators, assignments.
3) How to model hardware features in Verilog like combinational logic, sequential logic, timing, case statements.
Slides for a college course at City College San Francisco. Based on "The Shellcoder's Handbook: Discovering and Exploiting Security Holes ", by Chris Anley, John Heasman, Felix Lindner, Gerardo Richarte; ASIN: B004P5O38Q.
Instructor: Sam Bowne
Class website: https://samsclass.info/127/127_S18.shtml
Threads 03: Ciclo de vida, aplicações e boas práticasHelder da Rocha
Este documento discute threads concorrentes e paralelismo em Java. Ele aborda tópicos como o ciclo de vida de threads, variáveis atômicas, travas, coleções, sincronizadores, executores e futures. O documento também discute padrões e anti-padrões para aplicações concorrentes em Java.
Jdon Framework is a lightweight framework that helps build clean and fluent architecture systems using domain-driven design principles. It introduces reactive and event-driven patterns into the domain layer. Jdon uses an asynchronous and non-blocking approach to allow for higher throughput applications compared to traditional request-response frameworks like Spring. Key aspects of Jdon include domain events that enable loose coupling between components, and a single-writer model that guarantees single operations on in-memory state.
Writing NodeJS applications is an easy task for JavaScript developers. However, getting what is happening under the hood in NodeJS may be intimidating, but understanding it is vital for web developers.
Indeed, when you try to learn NodeJS, most tutorials are about the NodeJS ecosystem like Express, Socket.IO, PassportJS. It is really rare to see some tutorials about the NodeJS runtime itself.
By this meetup, I want to spot the light on some advanced NodeJS topics so as to help developers answering questions an experienced NodeJS developer is expected to answer. Understanding these topics is essential to make you a much more desirable developer. I want to explore several topics including the famous event-loop along with NodeJS Module Patterns and how dependencies actually work in NodeJS.
I hope that this meetup would help you to be more comfortable understanding advanced code written in NodeJS.
Czym się różnie JMS od AMQP? Co to jest queue? Co to jest topic? Jak zlecać zadania w przyszłości używając kolejek? Jak się do tego podpiąć z Javy? Na te i inne pytania postaram się odpowiedzieć na mojej prezentacji.
Grizzly is an open source NIO framework that provides high performance APIs for TCP, UDP, and SSL communications. It aims to simplify programming with Java NIO by hiding complexity. Grizzly 2.0 is a complete redesign with a clearer core API and improved performance. It introduces unified buffer/memory management and thread pool APIs. Grizzly includes modules for HTTP, Comet, and servlets that can be used to build web servers and applications. The Grizzly community is active with around 25,000 downloads per month and discussions on mailing lists.
This document provides an overview of CDI (Contexts and Dependency Injection) and some portable CDI extensions, including Apache DeltaSpike. It discusses key CDI concepts like dependency injection, interceptors, events, and scopes. It introduces Apache OpenWebBeans as a fast and stable CDI container implementation. It then demonstrates how DeltaSpike extends CDI with additional features like transaction management, qualifiers, specialized configuration, and alternatives. The document encourages involvement to help shape the future of Apache DeltaSpike.
This document summarizes techniques for optimizing Angular application performance, including ahead of time compilation, lazy loading, change detection strategies, avoiding memory leaks, and server side rendering. It provides code examples and compares boot times between different configurations. The techniques can improve first meaningful paint time by up to 86% compared to the default configuration.
This document provides an overview of microservices and how to develop them using Spring. It discusses the challenges of distributed systems and how Spring Boot and Spring Cloud Netflix address areas like configuration, service registration, load balancing, fault tolerance, and monitoring. Examples are provided for building microservices with Spring Boot, integrating configuration with Spring Cloud Config, registering services with Eureka, load balancing with Ribbon and Feign, handling faults with Hystrix, and monitoring with Hystrix Dashboard. Reactive programming with RxJava is also introduced as an approach for concurrent API integration.
Get Certified as a Sumo Power User!
Video: Video: https://www.sumologic.com/online-training/#Start
Designed for users, this series deep-dives into every aspect of analyzing your data. Run as a "how-to" webinar, this session walks viewers through data searching, filtering, parsing, and advanced analytics. This series concludes with "how to"details to create dashboards and alerts to monitor your data and get Sumo Logic to work for you.
GPars (Groovy Parallel Systems) is an open-source concurrency and parallelism library for Java and Groovy that gives you a number of high-level abstractions for writing concurrent and parallel code in Groovy (map/reduce, fork/join, asynchronous closures, actors, agents, dataflow concurrency and other concepts), which can make your Java and Groovy code concurrent and/or parallel with little effort.
OSGi Cloud Ecosystems (OSGi Users Forum Germany)David Bosschaert
This document discusses OSGi Cloud Ecosystems, which provide a highly dynamic OSGi environment where cloud nodes/VMs, bundles, and services can dynamically come and go. In an OSGi Cloud Ecosystem, multiple OSGi frameworks run in separate VMs/cloud nodes and are bound together via an ecosystem-wide discovery mechanism. A provisioner orchestrates the ecosystem by remotely deploying bundles to frameworks based on application topology and runtime conditions. This allows building composite cloud applications where each entity runs on a different node and can scale dynamically.
Heap Dump Analysis - AEM: Real World IssuesKanika Gera
This document discusses analyzing Java heap dumps to diagnose out of memory errors. It begins with an overview of Java heap concepts like how memory is allocated and garbage collection. Next, it defines what a heap dump is and how to generate one. It then explains how to analyze heap dumps using tools like MAT to identify the largest objects consuming memory, visualize object reference graphs and dominator trees, and investigate threads. The goal is to find memory leaks and reduce memory usage to prevent out of memory errors from occurring.
This document discusses software design principles and patterns, including:
1) Generic programming allows code to work with different data types through interfaces and abstract base classes. Reflection allows examining and manipulating objects at runtime.
2) The document discusses separation of concerns, loose coupling, and high cohesion as important design principles. It gives an example of dividing an application by feature and concern.
3) The document uses a duck simulation example to illustrate issues that can arise from rigid class hierarchies and inheritance. It proposes using the strategy pattern by defining behavior interfaces and swapping concrete strategy classes to vary behavior while keeping classes loosely coupled and extensible.
OpenCV를 활용하는 영상처리 어플리케이션 개발자들은 항상 GPU 자원을 활용하고 싶을 것이다. 하지만 이기종 컴퓨팅 환경에서 CPU 이외의 다른 하드웨어 자원을 활용하는 것은 개발 환경 및 백그라운드 지식 등의 많은 어려움이 따른다.
GPGPU 활용에 가장 상용화로 성공한 대중적인 솔루션으로는 nVidia 사의 CUDA 기술이 있지만, 그 외에도 GPGPU 자원을 쉽게 활용할 수 있는 오픈 플랫폼이 있는데 이것이 OpenCL 표준이다.
최근 하드웨어와 소프트웨어 진영에서 모두 OpenCL의 지원 및 발전이 두드러지며 점점 더 확산되는 추세이다.
OpenCV 진영에서도, 3.0이 정식 릴리즈 면서 본격적으로 OpenCL을 활용하기가 한층 쉬워졌다.
The document describes the classic bus cycle and data organization in a WISHBONE system. It discusses read, write, and read-modify-write cycles. It also explains big-endian and little-endian data ordering and provides examples of transferring a 64-bit value using different port sizes under each ordering scheme.
This document summarizes a presentation given by Lucas van Grinsven of ASML about keeping innovation moving. It discusses:
1) ASML is a cornerstone of the chip industry and its strategy is to be a technology leader in lithographic systems, enabling customers to increase chip functionality while reducing cost and power consumption.
2) Sustainability is a key driver of the chip industry as Moore's Law allows chips to double in power every 1.5-2 years while reducing price, leading to growth in applications like smartphones. ASML enables this through lithography equipment.
3) ASML is taking steps to reduce the energy usage and carbon emissions of its business, focusing on reducing emissions per transistor,
Rama Tri Nanda - NFC Hacking Hacking NFC Reverse Power Supply Padlock.pdfidsecconf
Near Field Communication (NFC) saat ini adalah teknologi yang umumnya di gunakan untuk media pembayaran serta akses kontrol untuk keamanan ruangan dan gedung. Tidak terbatas untuk hal itu saja, teknologi NFC juga kerap di implementasikan untuk perangkat IoT. Beberapa perangkat menggunakan NFC tag untuk menyimpan informasi guna sinkronisasi dengan perangkat smartphone. Penggunaan teknologi NFC awalnya dianggap aman karna mengharuskan alat baca dengan tag berada dalam poisisi yang sangat dekat. Sehingga dianggap sulit untuk melakukan penyadapan informasinya. Seiring waktu banyak penilitian mengungkapkan bahwa komunikasi ISO 1443-3 ini bisa di intip dan di terjemahkan ke dalam bentuk perintah serta respon aslinya. Proxmark3 adalah salah satu alat yang dikembangkan untuk keperluan tersebut. Namun ada kondisi dimana perangkat proxmark tidak dapat di fungsikan maksimal lantaran berkurangnya sensititifitas pembaca dan tag ketika ada objek berada diantara keduanya. Di paper ini saya ingin menyajikan hasil penelitian saya tentang penggunaan Dynamic Instrumentation Frida untuk memantau penggunaan modul java nfc dalam platform Android dan menggunakannya untuk melakukan lockpicking pada gembok pintar berbasis NFC.
The document provides an overview of Verilog, including:
1) Why HDLs like Verilog are needed for designing large, complex hardware systems.
2) Basic Verilog syntax such as modules, ports, parameters, nets, registers, operators, assignments.
3) How to model hardware features in Verilog like combinational logic, sequential logic, timing, case statements.
Slides for a college course at City College San Francisco. Based on "The Shellcoder's Handbook: Discovering and Exploiting Security Holes ", by Chris Anley, John Heasman, Felix Lindner, Gerardo Richarte; ASIN: B004P5O38Q.
Instructor: Sam Bowne
Class website: https://samsclass.info/127/127_S18.shtml
Threads 03: Ciclo de vida, aplicações e boas práticasHelder da Rocha
Este documento discute threads concorrentes e paralelismo em Java. Ele aborda tópicos como o ciclo de vida de threads, variáveis atômicas, travas, coleções, sincronizadores, executores e futures. O documento também discute padrões e anti-padrões para aplicações concorrentes em Java.
Jdon Framework is a lightweight framework that helps build clean and fluent architecture systems using domain-driven design principles. It introduces reactive and event-driven patterns into the domain layer. Jdon uses an asynchronous and non-blocking approach to allow for higher throughput applications compared to traditional request-response frameworks like Spring. Key aspects of Jdon include domain events that enable loose coupling between components, and a single-writer model that guarantees single operations on in-memory state.
Writing NodeJS applications is an easy task for JavaScript developers. However, getting what is happening under the hood in NodeJS may be intimidating, but understanding it is vital for web developers.
Indeed, when you try to learn NodeJS, most tutorials are about the NodeJS ecosystem like Express, Socket.IO, PassportJS. It is really rare to see some tutorials about the NodeJS runtime itself.
By this meetup, I want to spot the light on some advanced NodeJS topics so as to help developers answering questions an experienced NodeJS developer is expected to answer. Understanding these topics is essential to make you a much more desirable developer. I want to explore several topics including the famous event-loop along with NodeJS Module Patterns and how dependencies actually work in NodeJS.
I hope that this meetup would help you to be more comfortable understanding advanced code written in NodeJS.
Czym się różnie JMS od AMQP? Co to jest queue? Co to jest topic? Jak zlecać zadania w przyszłości używając kolejek? Jak się do tego podpiąć z Javy? Na te i inne pytania postaram się odpowiedzieć na mojej prezentacji.
Grizzly is an open source NIO framework that provides high performance APIs for TCP, UDP, and SSL communications. It aims to simplify programming with Java NIO by hiding complexity. Grizzly 2.0 is a complete redesign with a clearer core API and improved performance. It introduces unified buffer/memory management and thread pool APIs. Grizzly includes modules for HTTP, Comet, and servlets that can be used to build web servers and applications. The Grizzly community is active with around 25,000 downloads per month and discussions on mailing lists.
This document provides an overview of CDI (Contexts and Dependency Injection) and some portable CDI extensions, including Apache DeltaSpike. It discusses key CDI concepts like dependency injection, interceptors, events, and scopes. It introduces Apache OpenWebBeans as a fast and stable CDI container implementation. It then demonstrates how DeltaSpike extends CDI with additional features like transaction management, qualifiers, specialized configuration, and alternatives. The document encourages involvement to help shape the future of Apache DeltaSpike.
This document summarizes techniques for optimizing Angular application performance, including ahead of time compilation, lazy loading, change detection strategies, avoiding memory leaks, and server side rendering. It provides code examples and compares boot times between different configurations. The techniques can improve first meaningful paint time by up to 86% compared to the default configuration.
This document provides an overview of microservices and how to develop them using Spring. It discusses the challenges of distributed systems and how Spring Boot and Spring Cloud Netflix address areas like configuration, service registration, load balancing, fault tolerance, and monitoring. Examples are provided for building microservices with Spring Boot, integrating configuration with Spring Cloud Config, registering services with Eureka, load balancing with Ribbon and Feign, handling faults with Hystrix, and monitoring with Hystrix Dashboard. Reactive programming with RxJava is also introduced as an approach for concurrent API integration.
Get Certified as a Sumo Power User!
Video: Video: https://www.sumologic.com/online-training/#Start
Designed for users, this series deep-dives into every aspect of analyzing your data. Run as a "how-to" webinar, this session walks viewers through data searching, filtering, parsing, and advanced analytics. This series concludes with "how to"details to create dashboards and alerts to monitor your data and get Sumo Logic to work for you.
GPars (Groovy Parallel Systems) is an open-source concurrency and parallelism library for Java and Groovy that gives you a number of high-level abstractions for writing concurrent and parallel code in Groovy (map/reduce, fork/join, asynchronous closures, actors, agents, dataflow concurrency and other concepts), which can make your Java and Groovy code concurrent and/or parallel with little effort.
OSGi Cloud Ecosystems (OSGi Users Forum Germany)David Bosschaert
This document discusses OSGi Cloud Ecosystems, which provide a highly dynamic OSGi environment where cloud nodes/VMs, bundles, and services can dynamically come and go. In an OSGi Cloud Ecosystem, multiple OSGi frameworks run in separate VMs/cloud nodes and are bound together via an ecosystem-wide discovery mechanism. A provisioner orchestrates the ecosystem by remotely deploying bundles to frameworks based on application topology and runtime conditions. This allows building composite cloud applications where each entity runs on a different node and can scale dynamically.
This document discusses approaches to managing architecture for Java and Spring applications. It covers topics like granularity of modules, layers and slices; using packages and code analysis tools to enforce architecture; a plain Java approach using packages and visibility; and the Hera plugin system for localizing change and enabling flexibility. Hera is a small plugin registry that allows selecting plugins based on criteria and callbacks to extend functionality in a modular way.
Android rest client applications-services approach @Droidcon Bucharest 2012Droidcon Eastern Europe
This document discusses approaches for building Android REST client applications. It describes using a services approach where an activity sends a request to a service, which then performs the request in a worker thread. The service notifies listeners of the response. It recommends using loaders to handle configuration changes, where a custom loader binds to the service, performs the request, and returns the response to the activity. The service processes requests asynchronously using AsyncTask and delivers responses via a pipeline that analyzes and converts the data.
Wojciech Sznapka presents key principles for achieving wise architecture with Symfony2:
1. Follow SOLID principles - each component should have a single responsibility and dependencies should be injected through interfaces.
2. Prioritize maintainability - thoroughly test code and implement logging.
3. Design for scalability - avoid dependencies on local storage, scale the database, and optimize for horizontal scaling.
Wise architecture is achieved by following best practices, leveraging existing bundles, and ensuring the application can be easily maintained and scaled over time.
node.js 실무 - node js in practice by Jesang YoonJesang Yoon
Sharing 4 years of experience about node.js - A google chrome V8 engine javascript based web server technology. This slide covers about wide range of knowledge about node.js learned from 4 years of production, experiment, test & failures
4년 동안 node.js 서버 프로그래밍을 경험한 내용을 간략하게 정리해 보았습니다. node.js 를 접하시는 분들에게 도움이 되었으면 합니다.
The new and smart way to build microservices - Eclipse MicroProfileEmily Jiang
Emily Jiang presents on MicroProfile, a community-driven set of lightweight Java APIs for building microservices. MicroProfile aims to provide APIs for common concerns like configuration, fault tolerance, health checking, and more to help build cloud-native Java microservices. It has wide vendor support and specifications are developed through an open community process. MicroProfile services can be deployed to modern platforms like Kubernetes and service meshes like Istio to enable scalable and resilient microservice architectures in the cloud.
Lagom is a new open source framework for architecting microservices. Lagom helps you build microservices as systems — Reactive systems, to be precise — so that your microservices are elastic, resilient and scalable from within.
Node.js is an event-driven, asynchronous JavaScript runtime that allows JavaScript to be used for server-side scripting. It uses an event loop model that maps events to callbacks to handle concurrent connections without blocking. This allows Node.js applications to scale to many users. Modules in Node.js follow the CommonJS standard and can export functions and objects to be used by other modules. The event emitter pattern is commonly used to handle asynchronous events. Node.js is well-suited for real-time applications with intensive I/O operations but may not be the best choice for CPU-intensive or enterprise applications.
This document summarizes the OSGi DevCon 2009 conference. The key themes discussed were: increased ubiquity and adoption of OSGi, the use of OSGi for enterprise applications and services, distributed OSGi capabilities, tooling updates, and modernizing OSGi APIs. Distributed OSGi allows services to be published and accessed remotely in a transparent manner between JVMs. The Enterprise Profile and tools like Blueprint provide integration with Java EE. There was also discussion of JSR 294 to add module support to Java and the relationship with OSGi and Jigsaw.
OSGi Overview provides information on OSGi, its benefits, and how it works. Key points include:
- OSGi allows developing modular Java programs through bundles that declare dependencies. Each bundle dynamically loads classes.
- In Liferay, bundles become portlets, services, or extensions. The blade CLI helps create these.
- Portlets can be implemented as MVC portlets or use configuration and portlet provider templates.
- Services can be created with Service Builder or wrapped. OSGi services can also be registered.
- Liferay modules can be extended through fragments to customize JSPs, properties, add filters or events.
Similar to Inter-Sling communication with message queue (20)
This document describes the development of a radio ad blocker that uses digital signal processing to detect and mute broadcast commercials in real-time. It discusses analyzing the audio stream to find matching segments, reframes the problem to compare short sound samples, prototypes approaches using octave like cross-correlation on waveforms and FFTs, and describes a Java implementation that analyzes a sliding window to identify matching jingles marking ad breaks.
Deep-dive into cloud-native AEM deployments based on KubernetesTomasz Rękawek
AEM instance is traditionally see as a "pet" - an application that requires manual work for the deployment and the constant oversee in the runtime. Transforming instances into "cattle" and moving them into cloud brings a number of challenges around persistence, replication, scaling, monitoring, upgrades and maintenance. However, cloud computing services like Azure and container orchestration systems like Kubernetes allows to solve these problems in the new, creative ways, while the resulting cloud setup offers scalability not possible before.
This session will provide an overview on the Kubernetes setup we internally use in Adobe, the issues we've run into and the ways we're dealing with them.
Zero downtime deployments for the Sling-based apps using DockerTomasz Rękawek
In this session we'll show how the Composite Node Store, a new Oak feature, can be used together with Docker to perform blue-green deployments. This kind of setup allows to dynamically change a part of the repository (containing the application code), while leaving the content part untouched. The presentation and the demo will be based on the AEM, but the concepts and tools are generally applicable to all Sling-based applications. The building blocks we'll present can be used to develop other mechanisms for zero-downtime deployments.
CRX2Oak - all the secrets of repository migrationTomasz Rękawek
CRX2Oak is an official migration tool that allows to migrate data between different repository types. The most common use-case is upgrading an old, CQ 5.x repository to the AEM 6.x format. This session will cover the basic CRX2Oak usage, describe it's more advanced options and also share some real-world cases of large-scale (hundreds of GBs) data migration cases.
1. SlingQuery provides a fluent API for querying resources in AEM that is inspired by jQuery and allows walking the resource tree and selecting resources with ease.
2. Some benefits of SlingQuery include that it is efficient for querying denormalized content, easy to use, and supports advanced selectors. However, traditional while loops and iterators can become complex.
3. SlingQuery implements laziness, so queries are not executed until their results are needed, unlike direct JCR queries which retrieve all results immediately.
The document discusses various metrics for measuring code quality, including methods and classes being clean and readable, unit test coverage, and cyclomatic complexity. Low code quality can lead to problems with adding features, collaboration, and bugs. Static analysis tools like Sonar can automatically check for code quality issues. Principles like loose coupling, high cohesion, and the single responsibility principle are important for quality. Technical debt metrics quantify the cost of low-quality code.
This document describes Sling Dynamic Include (SDI), a Sling feature that allows for the declarative caching of partially personalized pages. SDI uses an include tag that is replaced at request time with the output of a dynamic component, enabling most of the page to be cached while still including fresh personalized content. It provides advantages over AJAX by being transparent to browsers and search engines and avoids issues like slow performance and lack of SEO friendliness.
Apache Sling provides RESTful access to content stored in an Apache Jackrabbit content repository. Sling uses a resource-centric approach where everything is represented as a resource that can be rendered in different formats. Resources map directly to nodes in the Jackrabbit content tree. Sling supports scripting languages like JSP and uses selectors, extensions and resource types to determine how each resource should be rendered. It allows composing page resources from multiple child resources.
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.
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.
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
Maruthi Prithivirajan, Head of ASEAN & IN Solution Architecture, Neo4j
Get an inside look at the latest Neo4j innovations that enable relationship-driven intelligence at scale. Learn more about the newest cloud integrations and product enhancements that make Neo4j an essential choice for developers building apps with interconnected data and generative AI.
How to Get CNIC Information System with Paksim Ga.pptxdanishmna97
Pakdata Cf is a groundbreaking system designed to streamline and facilitate access to CNIC information. This innovative platform leverages advanced technology to provide users with efficient and secure access to their CNIC details.
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIVladimir Iglovikov, Ph.D.
Presented by Vladimir Iglovikov:
- https://www.linkedin.com/in/iglovikov/
- https://x.com/viglovikov
- https://www.instagram.com/ternaus/
This presentation delves into the journey of Albumentations.ai, a highly successful open-source library for data augmentation.
Created out of a necessity for superior performance in Kaggle competitions, Albumentations has grown to become a widely used tool among data scientists and machine learning practitioners.
This case study covers various aspects, including:
People: The contributors and community that have supported Albumentations.
Metrics: The success indicators such as downloads, daily active users, GitHub stars, and financial contributions.
Challenges: The hurdles in monetizing open-source projects and measuring user engagement.
Development Practices: Best practices for creating, maintaining, and scaling open-source libraries, including code hygiene, CI/CD, and fast iteration.
Community Building: Strategies for making adoption easy, iterating quickly, and fostering a vibrant, engaged community.
Marketing: Both online and offline marketing tactics, focusing on real, impactful interactions and collaborations.
Mental Health: Maintaining balance and not feeling pressured by user demands.
Key insights include the importance of automation, making the adoption process seamless, and leveraging offline interactions for marketing. The presentation also emphasizes the need for continuous small improvements and building a friendly, inclusive community that contributes to the project's growth.
Vladimir Iglovikov brings his extensive experience as a Kaggle Grandmaster, ex-Staff ML Engineer at Lyft, sharing valuable lessons and practical advice for anyone looking to enhance the adoption of their open-source projects.
Explore more about Albumentations and join the community at:
GitHub: https://github.com/albumentations-team/albumentations
Website: https://albumentations.ai/
LinkedIn: https://www.linkedin.com/company/100504475
Twitter: https://x.com/albumentations
UiPath Test Automation using UiPath Test Suite series, part 5DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 5. In this session, we will cover CI/CD with devops.
Topics covered:
CI/CD with in UiPath
End-to-end overview of CI/CD pipeline with Azure devops
Speaker:
Lyndsey Byblow, Test Suite Sales Engineer @ UiPath, Inc.
20 Comprehensive Checklist of Designing and Developing a WebsitePixlogix Infotech
Dive into the world of Website Designing and Developing with Pixlogix! Looking to create a stunning online presence? Look no further! Our comprehensive checklist covers everything you need to know to craft a website that stands out. From user-friendly design to seamless functionality, we've got you covered. Don't miss out on this invaluable resource! Check out our checklist now at Pixlogix and start your journey towards a captivating online presence today.
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.
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Speck&Tech
ABSTRACT: A prima vista, un mattoncino Lego e la backdoor XZ potrebbero avere in comune il fatto di essere entrambi blocchi di costruzione, o dipendenze di progetti creativi e software. La realtà è che un mattoncino Lego e il caso della backdoor XZ hanno molto di più di tutto ciò in comune.
Partecipate alla presentazione per immergervi in una storia di interoperabilità, standard e formati aperti, per poi discutere del ruolo importante che i contributori hanno in una comunità open source sostenibile.
BIO: Sostenitrice del software libero e dei formati standard e aperti. È stata un membro attivo dei progetti Fedora e openSUSE e ha co-fondato l'Associazione LibreItalia dove è stata coinvolta in diversi eventi, migrazioni e formazione relativi a LibreOffice. In precedenza ha lavorato a migrazioni e corsi di formazione su LibreOffice per diverse amministrazioni pubbliche e privati. Da gennaio 2020 lavora in SUSE come Software Release Engineer per Uyuni e SUSE Manager e quando non segue la sua passione per i computer e per Geeko coltiva la sua curiosità per l'astronomia (da cui deriva il suo nickname deneb_alpha).
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.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
4. Shared session
• We have n publishes and the dispatcher
with stickySession enabled
• We use the servlet session
• In case one publish stops responding, the
user will be redirected to the other publish
• We want the session to be transferred too
adaptTo() 2013
4
6. Shared session
• If a publish notices that the instance id in
the cookie is different from its own, it’ll
copy shared session values to the
HttpSession
• The Administrator can configure names of
the shared session properties (as a list of
regular expressions)
adaptTo() 2013
6
7. Shared session – demo
• Local infrastructure description:
• One author + two publishes
• All available under local.cq
domain
• We can switch between publishes using ?publish2
query string
• http://local.cq/bin/cognifide/session.txt
• http://local.cq/bin/cognifide/session.txt/add
• http://local.cq/bin/cognifide/session.txt?
publish2
adaptTo() 2013
7
9. Rough start: dependencies
• I tried to use the activemq-‐core
package.
This is what I saw in the /system/console:
adaptTo() 2013
9
10. Providing necessary dependencies
• Some dependencies are taken from other OSGi
bundles – we don’t worry about them
• Some have to be embedded
<Embed-‐Dependency>activemq-‐core,geronimo-‐j2ee-‐
management_1.1_spec,ejb-‐api,jaxrpc-‐api</Embed-‐Dependency>
• Some can be ignored
• Check the original pom.xml
for optional
dependencies
<Import-‐Package>
!javax.jmdns.*,!org.apache.activeio.*,!
org.apache.activemq.jaas.*,!org.apache.camel.*,!
org.apache.commons.net.*,…,*
</Import-‐Package>
adaptTo() 2013
10
11. Result: sling-‐jms-‐activemq
• We’ve created an OSGi bundle with all
necessary dependencies embedded
• Optional dependencies are ignored and
marked not-to-import
• Bundle provides ActiveMQ to any Sling
instance
adaptTo() 2013
11
13. Creating JMS connection with ActiveMQ
adaptTo() 2013
13
import
javax.jms.Connection;
import
org.apache.activemq.ActiveMQConnectionFactory;
ActiveMQConnectionFactory
factory;
factory
=
new
ActiveMQConnectionFactory();
Connection
connection
=
factory.createConnection();
• In order to create JMS connection we need
to import some ActiveMQ classes:
• So all JMS-related code will be also dependent
on the ActiveMQ
• What if we want to change JMS
implementation?
14. JMS connection provider
• We use OSGi to separate JMS implementation
from it’s interface
• JmsConnectionProvider – custom OSGi
service providing javax.jms.Connection
• Bundle sling-‐jms-‐api
contains service
interface
• Implementation: sling-‐jms-‐impl-‐activemq
• Using sling-‐jms-‐api
and the connection
provider makes us independent from the JMS
implementation
adaptTo() 2013
14
17. Sling Discovery API
• New Sling API
• Each instance can expose a list of key-value
properties to other instances
• Example usage: metadata for workflow
offloading in CQ
• Properties are not meant to be messaging
tool, they shouldn’t change too often
• Instances are grouped into clusters, each
cluster has elected leader
adaptTo() 2013
17
19. Discovery OSGi services
• DiscoveryService provides TopologyView
• Custom instance properties can be added
with PropertyProvider implementations
• Changes in topology can be observed with
TopologyEventListener
adaptTo() 2013
19
20. JMS discovery implementation
• There is a default HTTP-based
implementation
• requires providing all instance URLs on each
instance
• But JMS is a natural choice for the
transport layer here
• sling-‐jms-‐discovery
– a new, JMS-based
discovery implementation that doesn’t
require any configuration
adaptTo() 2013
20
21. Discovery election
• If some instance notices there is no leader for
some cluster, it sends message: WHO_IS_LEADER
• If no one responds in 10 seconds, it sends the
second message: ELECTION
• Every instance in a given cluster has to
respond with their Sling instance id in the VOTE
message
• After 5 seconds instance with the smallest id
is chosen and it sends the I_AM_LEADER
message
adaptTo() 2013
21
25. Sling Message Listener
Why don’t we
@SlingMessageConsumer(
destinationType
=
DestinationType.TOPIC,
subject
=
"my
topic")
public
class
MyComponent
implements
MessageListener
{
public
void
onMessage(Message
msg)
{
//
…
adaptTo() 2013
25
• @SlingMessageConsumer annotation is transformed into @Service,
@Component
and @Properties by our sling-‐jms-‐scr
plugin
• MessageListener services are collected by our
MessageConsumerRegistry OSGi component
• Registry component creates JMS consumers and forward messages to
appropriate listeners
26. Sling Message Listener – filtering
In the message listener configuration you can
add the filter property to filter out incoming
messages. Use the LDAP format:
@SlingMessageConsumer(
destinationType
=
DestinationType.TOPIC,
subject
=
"my
topic"
filter
=
"(requestType=VOTE)")
adaptTo() 2013
26
28. Reverse replication request
• In CQ, the Author gathers content from publish
instances every 30 seconds (configurable in the
ReverseReplicator service)
• Why can’t publish send user-generated content to
the Author (push instead of pull)?
• Security issues – publishes are often in DMZ
• But publish can inform the Author there is
something new to pull
adaptTo() 2013
28
29. Reverse replication request
• OutboxEventHandler watches the outbox node
and sends information every time there is
some new content to pull
• ReplicationAgentInvoker receives this
information and invokes the reverse
replication process
• It’s a good idea to disable the out-of-the-box
ReverseReplicator service, so we don’t have
two reverse replications at the same moment
adaptTo() 2013
29
31. adaptTo() 2013
31
Reverse replication request implementation details
Targeting messages with the Sling run mode
32. Send messages only to the Author
• The outbox event handler should send
messages only to the Author
• We can filter it manually…
• …or use @SlingMessageConsumer
for the
consumer and add
MessageConsumerProperties.DESTINATION_RUN_MODE
to
the message properties
• Messages will be filtered automatically
adaptTo() 2013
32
34. Extra tools created during JMS research
• Embedded ActiveMQ broker configurable
within the OSGi component
• Out-of-the-band JCR binaries transfer
• You can send a message with metadata and
some JCR path and the binary itself will be
sent via HTTP
• Utilities to deal with serialization problems
when sending ObjectMessage
adaptTo() 2013
34
35. Bundles overview
• sling-‐jms-‐activemq
• ActiveMQ + dependencies
• sling-‐jms-‐api
• JMS Connection Provider
• Sling Message Consumer
• Blob & Object message utils
• sling-‐jms-‐impl-‐activemq
• Implementation of the API tools
• sling-‐jms-‐scr
• Annotation processor for Sling Message Consumer
• sling-‐jms-‐sandbox
• Example usage of the API tools
• Open-sourced use cases
• sling-‐jms-‐discovery
• cq-‐jms-‐replication
• sling-‐jms-‐session
adaptTo() 2013
35
36. Try it yourself!
• https://github.com/Cognifide/PoC-Sling-JMS
• All bundles
• Some documentation
• Temporary repo, will be transferred, so clone it
while you can ;)
adaptTo() 2013
36