The 7 Deadly Sins of Packet Processing - Venky Venkatesan and Bruce Richardsonharryvanhaaren
The document summarizes seven deadly sins of packet processing that can negatively impact performance:
1) Unpredictable branches that confuse the branch predictor. Code should guide the compiler on likely/unlikely cases.
2) Incorrect prefetching that pulls in unnecessary data or data needed by other cores, adding overhead. Hardware prefetchers often help but can also share cache lines inadvertently.
3) Per-packet operations like memory I/O and atomics that have overhead magnified at the per-packet level.
Redis provides several tools to achieve atomicity of operations. Single commands are atomic by default. Pipelining ensures commands are executed in order but is not fully atomic. Transactions using MULTI and EXEC are fully atomic but don't allow command chaining. Lua scripting allows complex multi-step operations to be run atomically and allows command results to be passed between operations.
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트Ji-Woong Choi
Docker를 활용하여 Gitlab CI/CD 설치 구성 및 샘플 테스트를 위한 가이드 문서이며, Docker 및 Gitlab에 대한 개요 및 사용법에 대해서는 다루지 않습니다. Docker image를 이용 Gitlab 및 Gitlab CI/CD 설치 및 구성 후 Sample Spring boot web application을 이용하여 소스 변경에 따른 commit이 발생 했을 때 Gitlab CI/CD 기능을 통해 application 테스트, 빌드, 배포까지의 일련의 과정이 자동으로 진행되는지를 테스트 하는 내용입니다.
MySQL High Availability and Disaster Recovery with Continuent, a VMware companyContinuent
Users seeking high availability, disaster recovery and zero downtime maintenance operation for business-critical MySQL applications face confusing choices. Is multi-master or master/slave clustering better? What about synchronous versus asynchronous replication? Using a plain vanilla, stock MySQL or a modified version of it? Which of these choices are right for data-driven businesses that depend on fast, reliable data access?
This no-BS webinar cuts through the FUD to explore the real trade-offs between the different clustering and replication methods, thens show you how Continuent's asynchronous master/slave clusters support these important capabilities for business-critical applications:
- High application write rates Master/slave clustering with Continuent
- Mixed workloads consisting of large and small transactions
- Data across multiple geographically distributed locations
- Failures and more importantly recovery from them
- Zero downtime maintenance and software upgrades
- Use of off-the-shelf MySQL/MariaDB to avoid application changes and allow clusters to improve as MySQL itself does.
We illustrate key points with demonstrations and case studies from deployed systems.
JasperReports Library is an open source reporting engine, written entirely in Java. JasperReports Library is able to use data coming from any kind of data source and produce documents that can viewed, printed, or exported in a variety of document formats, including HTML, PDF, Excel, OpenOffice and Word.
The 7 Deadly Sins of Packet Processing - Venky Venkatesan and Bruce Richardsonharryvanhaaren
The document summarizes seven deadly sins of packet processing that can negatively impact performance:
1) Unpredictable branches that confuse the branch predictor. Code should guide the compiler on likely/unlikely cases.
2) Incorrect prefetching that pulls in unnecessary data or data needed by other cores, adding overhead. Hardware prefetchers often help but can also share cache lines inadvertently.
3) Per-packet operations like memory I/O and atomics that have overhead magnified at the per-packet level.
Redis provides several tools to achieve atomicity of operations. Single commands are atomic by default. Pipelining ensures commands are executed in order but is not fully atomic. Transactions using MULTI and EXEC are fully atomic but don't allow command chaining. Lua scripting allows complex multi-step operations to be run atomically and allows command results to be passed between operations.
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트Ji-Woong Choi
Docker를 활용하여 Gitlab CI/CD 설치 구성 및 샘플 테스트를 위한 가이드 문서이며, Docker 및 Gitlab에 대한 개요 및 사용법에 대해서는 다루지 않습니다. Docker image를 이용 Gitlab 및 Gitlab CI/CD 설치 및 구성 후 Sample Spring boot web application을 이용하여 소스 변경에 따른 commit이 발생 했을 때 Gitlab CI/CD 기능을 통해 application 테스트, 빌드, 배포까지의 일련의 과정이 자동으로 진행되는지를 테스트 하는 내용입니다.
MySQL High Availability and Disaster Recovery with Continuent, a VMware companyContinuent
Users seeking high availability, disaster recovery and zero downtime maintenance operation for business-critical MySQL applications face confusing choices. Is multi-master or master/slave clustering better? What about synchronous versus asynchronous replication? Using a plain vanilla, stock MySQL or a modified version of it? Which of these choices are right for data-driven businesses that depend on fast, reliable data access?
This no-BS webinar cuts through the FUD to explore the real trade-offs between the different clustering and replication methods, thens show you how Continuent's asynchronous master/slave clusters support these important capabilities for business-critical applications:
- High application write rates Master/slave clustering with Continuent
- Mixed workloads consisting of large and small transactions
- Data across multiple geographically distributed locations
- Failures and more importantly recovery from them
- Zero downtime maintenance and software upgrades
- Use of off-the-shelf MySQL/MariaDB to avoid application changes and allow clusters to improve as MySQL itself does.
We illustrate key points with demonstrations and case studies from deployed systems.
JasperReports Library is an open source reporting engine, written entirely in Java. JasperReports Library is able to use data coming from any kind of data source and produce documents that can viewed, printed, or exported in a variety of document formats, including HTML, PDF, Excel, OpenOffice and Word.
This document summarizes Frédéric Descamps' journey to add a user to the router_rest_accounts table to authenticate with the MySQL Router REST API. After several failed attempts using generated or external passwords, he learns directly from the MySQL Router development team that the REST API supports using the default MySQL 8.0 authentication string or the modular_crypt_format for password hashes, allowing simple password insertion.
This document summarizes a master's thesis that presents a solution for scanning sequences of HTTP requests in the open source penetration testing tool ZAP (Zed Attack Proxy). The thesis documents the analysis, design, and implementation phases of adding multi-step scanning functionality to ZAP. It also explains how different test scenarios were used to verify the functionality. The proposed solution serves as a proof-of-concept that could later be integrated into the publicly available version of ZAP.
2021년 11월 18일(목)
- 14:00 ~ 15:00 MySQL Operator for Kubernetes
: Kubernetes 환경에서 MySQL에 대한 더 쉬운 운영
- 15:00 ~ 15:15 MySQL HA and Auto-Failover
: MySQL replication과 오픈소스 MHA를 통한 고가용성 확보
XPDDS17: Introduction to Intel SGX and SGX Virtualization - Kai Huang, IntelThe Linux Foundation
In era of cloud computing, security is becoming more and more critical for customers. In existing HW/SW architecture hypervisor does not protect tenants against the cloud provider and thus the supplied operating system and hardware. Intel Software Guard Extension (SGX) provides a mechanism that addresses this scenario. It aims at protecting user-level software from attacks from other processes, the operating system, and even physical attackers. Intel SGX makes such protection possible through the use of enclave, which is a protected area in userspace application where the code/data cannot be accessed directly by any software from outside. This presentation intends to give you an introduction of Intel SGX technology, including what it is, how it works, and the existing SW stack to enable SGX for customers, followed by introduction of our work to support SGX virtualization in Xen hypervisor, including the high-level design, current status and future plan.
Spring Boot on Amazon Web Services with Spring Cloud AWSVMware Tanzu
SpringOne 2021
Session Title: Spring Boot on Amazon Web Services with Spring Cloud AWS
Speakers: Maciej Walkowiak, Software Consultant at Independent; Matej Nedic, Software engineer at Ingemark
This presentation is for people who want to understand how PostgreSQL shares information among processes using shared memory. Topics covered include the internal data page format, usage of the shared buffers, locking methods, and various other shared memory data structures.
Spring MVC is a model-view-controller framework that aims to simplify web application development for Java developers. It provides abstraction from more complex Java EE APIs and services through dependency injection and aspect-oriented programming. Spring MVC integrates well with other Spring modules and supports various view technologies like JSP, Tiles, and FreeMarker. It also supports RESTful services and integration with JavaScript frameworks.
This document discusses preparations for new GIS features in MySQL 8.0. It provides an overview of GIS basics like geometries and spatial reference systems. In MySQL 8.0, the world will be able to be flat or ellipsoidal, and operations on geometries in geographic spatial reference systems will use geographic calculations. The document recommends using the correct spatial reference system IDs now, longitude-latitude axis ordering, and following development of MySQL 8.0 GIS features.
In this Java Spring Training session, you will learn Spring – Inversion of Control, Dependency Injection and Bean definitions. Topics covered in this session are:
For more information, visit this link:
Spring Framework
• Core Container
• Data Access/Integration
• Web Layer
• Spring Setup
• Key features
• Spring Bean
• Dependency Injection
• Relation between DI and IoC
• Spring IoC Containers
• Spring DI
https://www.mindsmapped.com/courses/software-development/spring-fundamentals-learn-spring-framework-and-spring-boot/
This document provides information on using Spring Boot Actuator to add production-ready features like health monitoring, metrics collection, and auditing to Spring Boot applications. It describes built-in endpoints like /health and /metrics that provide health checks and application metrics. It also shows how to add custom health indicators, record custom metrics, and export metrics to external systems.
Ksplice - Keep your Database systems up to date with no downtime Luis Marques
This document provides an overview of Oracle's Ksplice technology, which allows for installing Linux kernel security updates and patches without requiring a reboot. Ksplice was originally created by researchers at MIT and later acquired by Oracle. It allows critical systems like databases to remain online while installing kernel updates. The document discusses how Ksplice works, demonstrates its use, and compares it to alternative live patching technologies.
Dependent things dependency management for apple sw - slideshareCavelle Benjamin
This document summarizes options for dependency management in iOS development projects. It discusses Cocoapods, Carthage, and Swift Package Manager, outlining the basic steps to set up each and comparing their key features. Cocoapods is the most full-featured but written in Ruby. Carthage is simpler but requires more manual setup. Swift Package Manager is built into Swift but still maturing. The document provides an overview to help developers choose the right approach for their needs and project requirements.
Rust Embedded Development on ESP32 and basics of Async with EmbassyJuraj Michálek
Rust CZ/SK Meetup in Brno 8th Feb 2023. Espressif Systems Rust Teams discuss options of Rust std and no_std for ESP32. Discussion contains also new examples of Async using Embassy, plus introduction of Wokwi local simulator for VS Code.
This document summarizes Frédéric Descamps' journey to add a user to the router_rest_accounts table to authenticate with the MySQL Router REST API. After several failed attempts using generated or external passwords, he learns directly from the MySQL Router development team that the REST API supports using the default MySQL 8.0 authentication string or the modular_crypt_format for password hashes, allowing simple password insertion.
This document summarizes a master's thesis that presents a solution for scanning sequences of HTTP requests in the open source penetration testing tool ZAP (Zed Attack Proxy). The thesis documents the analysis, design, and implementation phases of adding multi-step scanning functionality to ZAP. It also explains how different test scenarios were used to verify the functionality. The proposed solution serves as a proof-of-concept that could later be integrated into the publicly available version of ZAP.
2021년 11월 18일(목)
- 14:00 ~ 15:00 MySQL Operator for Kubernetes
: Kubernetes 환경에서 MySQL에 대한 더 쉬운 운영
- 15:00 ~ 15:15 MySQL HA and Auto-Failover
: MySQL replication과 오픈소스 MHA를 통한 고가용성 확보
XPDDS17: Introduction to Intel SGX and SGX Virtualization - Kai Huang, IntelThe Linux Foundation
In era of cloud computing, security is becoming more and more critical for customers. In existing HW/SW architecture hypervisor does not protect tenants against the cloud provider and thus the supplied operating system and hardware. Intel Software Guard Extension (SGX) provides a mechanism that addresses this scenario. It aims at protecting user-level software from attacks from other processes, the operating system, and even physical attackers. Intel SGX makes such protection possible through the use of enclave, which is a protected area in userspace application where the code/data cannot be accessed directly by any software from outside. This presentation intends to give you an introduction of Intel SGX technology, including what it is, how it works, and the existing SW stack to enable SGX for customers, followed by introduction of our work to support SGX virtualization in Xen hypervisor, including the high-level design, current status and future plan.
Spring Boot on Amazon Web Services with Spring Cloud AWSVMware Tanzu
SpringOne 2021
Session Title: Spring Boot on Amazon Web Services with Spring Cloud AWS
Speakers: Maciej Walkowiak, Software Consultant at Independent; Matej Nedic, Software engineer at Ingemark
This presentation is for people who want to understand how PostgreSQL shares information among processes using shared memory. Topics covered include the internal data page format, usage of the shared buffers, locking methods, and various other shared memory data structures.
Spring MVC is a model-view-controller framework that aims to simplify web application development for Java developers. It provides abstraction from more complex Java EE APIs and services through dependency injection and aspect-oriented programming. Spring MVC integrates well with other Spring modules and supports various view technologies like JSP, Tiles, and FreeMarker. It also supports RESTful services and integration with JavaScript frameworks.
This document discusses preparations for new GIS features in MySQL 8.0. It provides an overview of GIS basics like geometries and spatial reference systems. In MySQL 8.0, the world will be able to be flat or ellipsoidal, and operations on geometries in geographic spatial reference systems will use geographic calculations. The document recommends using the correct spatial reference system IDs now, longitude-latitude axis ordering, and following development of MySQL 8.0 GIS features.
In this Java Spring Training session, you will learn Spring – Inversion of Control, Dependency Injection and Bean definitions. Topics covered in this session are:
For more information, visit this link:
Spring Framework
• Core Container
• Data Access/Integration
• Web Layer
• Spring Setup
• Key features
• Spring Bean
• Dependency Injection
• Relation between DI and IoC
• Spring IoC Containers
• Spring DI
https://www.mindsmapped.com/courses/software-development/spring-fundamentals-learn-spring-framework-and-spring-boot/
This document provides information on using Spring Boot Actuator to add production-ready features like health monitoring, metrics collection, and auditing to Spring Boot applications. It describes built-in endpoints like /health and /metrics that provide health checks and application metrics. It also shows how to add custom health indicators, record custom metrics, and export metrics to external systems.
Ksplice - Keep your Database systems up to date with no downtime Luis Marques
This document provides an overview of Oracle's Ksplice technology, which allows for installing Linux kernel security updates and patches without requiring a reboot. Ksplice was originally created by researchers at MIT and later acquired by Oracle. It allows critical systems like databases to remain online while installing kernel updates. The document discusses how Ksplice works, demonstrates its use, and compares it to alternative live patching technologies.
Dependent things dependency management for apple sw - slideshareCavelle Benjamin
This document summarizes options for dependency management in iOS development projects. It discusses Cocoapods, Carthage, and Swift Package Manager, outlining the basic steps to set up each and comparing their key features. Cocoapods is the most full-featured but written in Ruby. Carthage is simpler but requires more manual setup. Swift Package Manager is built into Swift but still maturing. The document provides an overview to help developers choose the right approach for their needs and project requirements.
Rust Embedded Development on ESP32 and basics of Async with EmbassyJuraj Michálek
Rust CZ/SK Meetup in Brno 8th Feb 2023. Espressif Systems Rust Teams discuss options of Rust std and no_std for ESP32. Discussion contains also new examples of Async using Embassy, plus introduction of Wokwi local simulator for VS Code.
This document provides an overview of Node.js, including what it is, how it works, and why it is useful. Node.js is a runtime environment that allows JavaScript to be used for high-performance, low-latency applications. It uses an event-driven, non-blocking I/O model that makes it efficient even under heavy loads. Node.js is commonly used for backend development, APIs, microservices, and real-time applications due to its fast performance. It also has a large ecosystem of packages and tools that can be used for building applications and development workflows.
Devoxx France: Développement JAVA avec un IDE dans le Cloud: Yes we can !Florent BENOIT
Développer dans le cloud en Java ? Yes we can !
Grace à Eclipse Che et Codenvy vous pouvez facilement compiler, executer ou développer votre projet Java. L'environnement d'execution utilise Docker
The document discusses the future of server-side JavaScript. It provides reasons for using JavaScript on the server, including that it is the lingua franca of the web, allows for code reuse between server and client, and supports asynchronous programming well. It also discusses JavaScript engines, CommonJS modules and packages, environments like Node.js and RingoJS, and trends like wider adoption and cloud-based IDEs.
Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808Cisco DevNet
This session is an introduction to Golang - the Go programming language - for IT Professionals. We'll explain how to setup a GO development environment, create a simple HTTP/2 Web API, and embed our code into a Docker container. We'll also go through the reasons why the language is so popular to create network applications by showing how the language is expressive, concise, clean, and efficient. Join this session if you've started writing Python scripts that consume Web APIs, and you now want to go to the next stage by creating your own APIs to expose or store Enterprise Data.
DEVNET-1808
https://www.ciscolive.com/us/learn/sessions/session-catalog/?search=DEVNET-1808
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)Fabien Potencier
This document provides an overview of the symfony framework presented by Fabien Potencier and Stefan Koopmanschap. It introduces symfony as an open-source PHP web framework built for professional websites and complex needs. It then demonstrates how to initialize a new symfony project, create modules and actions, implement templates and layouts, and integrate a database using Propel as the ORM.
Building a Spring Boot Application - Ask the Audience!🎤 Hanno Embregts 🎸
This document provides an overview of building applications with Spring Boot. It discusses key features such as creating stand-alone Spring applications without separate web servers, automatic Spring configuration, and getting started quickly with one Java file and a build script. Pros include faster deployments and no need for web.xml files. Cons can include custom configuration challenges and incompatibility with some legacy Spring projects. The document also demonstrates sample code and references Spring Initializr for project setups.
Getting started with open mobile development on the Openmoko platformJean-Michel Bouffard
Tutorial presentation about embedded development on the Openmoko platform. Presented at the fosslc.org event "Free/Open Source Mobile Development: An Introduction" in Waterloo, Canada
This document discusses how Docker can be used to improve the Java development environment. It outlines problems with traditional development environments like long setup times and differences between local and production environments. Docker Toolbox allows running Docker on Windows and Macs. Examples show setting up multiple apps with different stacks using Docker Compose. Use cases demonstrated include debugging, continuous deployment from IDEs, integration testing, and reproducing production issues. Best practices recommend using Docker Machine and volumes. The overall message is that Docker can make the development environment more consistent with production.
Road to sbt 1.0: Paved with server (2015 Amsterdam)Eugene Yokota
The document provides a history of build tools and a roadmap for sbt 1.0. It discusses modularizing sbt into components to improve stability and introduce an sbt server for centralized build execution. The sbt server design allows clients to connect as events, handle input, and run background jobs. Existing plugins can try the sbt server APIs without breaking functionality. The roadmap includes improving interaction, meta-projects, and killing bad states to complete the sbt server.
Example Simple NodeJS Application for Docker demo
- https://gist.github.com/abtris/6aca9b2668b8b5af0208
Video
- https://www.youtube.com/watch?v=p6olO6NChno&feature=youtu.be
Plugins have evolved in the past year, and the new plugin architecture will be incorporated in all products in 2009. This session dives into the detail of the new plugins system, guides developers on the best techniques and approaches and explores how the architecture will evolve further.
Atlassian Speaker: Don Brown
Key Takeaways:
* In-depth look at plugins 2
* How-tos and code samples
Cloud Workstations provides preconfigured, customizable, and secure managed development environments on Google Cloud. Cloud Workstations is accessible through a browser-based IDE, from multiple local code editors (such as IntelliJ IDEA Ultimate or VS Code), or through SSH. Instead of manually setting up development environments, you can create a workstation configuration specifying your environment in a reproducible way
Настройка окружения для кросскомпиляции проектов на основе docker'acorehard_by
Как быстро и легко настраивать/обновлять окружения для кросскомпиляции проектов под различные платформы(на основе docker), как быстро переключаться между ними, как используя эти кирпичики организовать CI и тестирование(на основе GitLab и Docker).
Introducing the new high-performance Javascript and Typescript compiler which is written in Rust and the demonstrations at Tiki Co., Ltd. (tiki.vn)
Internal sharing session at Tiki Co., Ltd. on September 8 2022 by Thien Ly
_________________
On September 8, I held a presentation about a Javascript and Typescript compiler for my team at TIKI. It is the SWC - the new high-performance compiler written in Rust with customizable plugin API. This could make some massive enhancements to the DX(development experience) for your team in Node and Browser Products.
Read more about the SWC document here: https://swc.rs
#javascript #share #development #dx #typescript #compiler #slide #rust
Cross-architecture building allows creating packages for multiple architectures without emulation. It requires a cross-compiler toolchain and build environments for each target architecture. The presentation provides an overview of the current state of cross-building in openSUSE Factory and ALP, including examples of setting up a cross-build using git, pbuild, and OBS. It also discusses how to set up cross-building for a new device by initializing a git repository, adding package sources and a build configuration. Some challenges mentioned are limited supported architectures and inconsistent naming definitions across build tools.
(phpconftw2012) PHP as a Middleware in Embedded Systemssosorry
This document discusses using PHP as middleware in embedded systems. It begins by describing challenges in embedded systems like hardware limitations and difficulties with deployment and updates. It then proposes using PHP and various PHP extensions to address these challenges by acting as software glue between applications and hardware. The document outlines various tasks like porting libraries to the embedded platform, developing and debugging PHP applications for embedded systems, and performance tuning. It provides examples of using PHP for tasks like interfacing with REST APIs, handling different data formats, encryption, and data storage. Overall it argues that PHP can serve as an effective middleware solution in embedded systems development.
Similar to WebSocket on client & server using websocket-sharp & ASP.NET Core (20)
The document discusses loading embedded SVG files using the "full name" method. It suggests using the complete file path and name to load SVG resources that are embedded within a website or application, rather than just referencing the file by its name. This fully qualifies the resource and ensures it is loaded correctly regardless of the current directory structure.
Xamarin Form using ASP.NET Core SignalR clientChen Yu Pao
A little introduction of ASP.NET Core SignalR and How to connect it using official .Net Standard 2.0 C# client library in Xamarin.Forms project for Front-end Developer.
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesQuickdice ERP
Explore the seamless transition to e-invoicing with this comprehensive guide tailored for Saudi Arabian businesses. Navigate the process effortlessly with step-by-step instructions designed to streamline implementation and enhance efficiency.
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
How Can Hiring A Mobile App Development Company Help Your Business Grow?ToXSL Technologies
ToXSL Technologies is an award-winning Mobile App Development Company in Dubai that helps businesses reshape their digital possibilities with custom app services. As a top app development company in Dubai, we offer highly engaging iOS & Android app solutions. https://rb.gy/necdnt
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...XfilesPro
Wondering how X-Sign gained popularity in a quick time span? This eSign functionality of XfilesPro DocuPrime has many advancements to offer for Salesforce users. Explore them now!
Microservice Teams - How the cloud changes the way we workSven Peters
A lot of technical challenges and complexity come with building a cloud-native and distributed architecture. The way we develop backend software has fundamentally changed in the last ten years. Managing a microservices architecture demands a lot of us to ensure observability and operational resiliency. But did you also change the way you run your development teams?
Sven will talk about Atlassian’s journey from a monolith to a multi-tenanted architecture and how it affected the way the engineering teams work. You will learn how we shifted to service ownership, moved to more autonomous teams (and its challenges), and established platform and enablement teams.
8 Best Automated Android App Testing Tool and Framework in 2024.pdfkalichargn70th171
Regarding mobile operating systems, two major players dominate our thoughts: Android and iPhone. With Android leading the market, software development companies are focused on delivering apps compatible with this OS. Ensuring an app's functionality across various Android devices, OS versions, and hardware specifications is critical, making Android app testing essential.
SMS API Integration in Saudi Arabia| Best SMS API ServiceYara Milbes
Discover the benefits and implementation of SMS API integration in the UAE and Middle East. This comprehensive guide covers the importance of SMS messaging APIs, the advantages of bulk SMS APIs, and real-world case studies. Learn how CEQUENS, a leader in communication solutions, can help your business enhance customer engagement and streamline operations with innovative CPaaS, reliable SMS APIs, and omnichannel solutions, including WhatsApp Business. Perfect for businesses seeking to optimize their communication strategies in the digital age.
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
Mobile app Development Services | Drona InfotechDrona Infotech
Drona Infotech is one of the Best Mobile App Development Company In Noida Maintenance and ongoing support. mobile app development Services can help you maintain and support your app after it has been launched. This includes fixing bugs, adding new features, and keeping your app up-to-date with the latest
Visit Us For :
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.
2. WebSocket
■ Duplex bi-directional Api for web
server client
■ RFC 6455
https://tools.ietf.org/html/rfc6455
■ W3C standard:
https://www.w3.org/TR/websockets
/
■ Transport protocol intro:
https://www.youtube.com/watch?v=
9FqjRN4VYUU
■ Js Client & protocol packet format
intro: https://hpbn.co/websocket/
3. WebSocket
Connect State Transition
1. Connection Upgrade
(Protocol Switch)
2. Data In/Out arbitrarily
(Ping Pong to detect online)
3. Close connection handshake
Transfer “Frame” format
5. Experiment with source!!
(tracing/logging or make it
debuggable)■ Client :
websocket-sharp
https://sta.github.io/websocket-
sharp/
■ Server :
ASP.NET Core v2.1.1 Websocket
https://docs.microsoft.com/en-
us/aspnet/core/fundamentals/webso
ckets?view=aspnetcore-2.1
6. websocket-sharp
■ Run on .NET Framework 3.5 and above, Mono, Unity3D
■ A single DLL provide websocket client/server functionality, comply with RFC 6455
■ HTTPS encrypt/decrypt algorithm is via Framework functionality
■ MIT license
7. websocket-sharp
■ Client usage is very simple:
https://github.com/sta/websocket-
sharp#websocket-client
■ Has event hook let client handler websocket event
easily: http://bit.ly/2ztELl9
■ Mimic Js Websocket API:
https://developer.mozilla.org/en-
US/docs/Web/API/WebSocket
8. ■ Entry Point: the “WebSocket” class: http://bit.ly/2L76Xf2
■ WebSocket Connect() Implementation:
– Connect() API : http://bit.ly/2KVjLsf
doHandshake() : http://bit.ly/2J9ySJn
setClientStream() : http://bit.ly/2zsdLCN
createHandshakeRequest() : http://bit.ly/2KKAkHO
sendHttpRequest() : http://bit.ly/2JeiYgX
checkHandshakeResponse() : http://bit.ly/2zsim7O
=> Create “NetworkStream (http://bit.ly/2L3q5xE)” for afterward R/W operation
■ WebSocket Send() Implementation:
– Send() API : http://bit.ly/2LaYY0I
send(Opcode opcode, Stream stream, bool compressed) : http://bit.ly/2N31aYq
send(Fin fin, Opcode opcode, byte[] data, bool compressed) : http://bit.ly/2KPszQQ
sendBytes(byte[] bytes) : http://bit.ly/2zoQCkx
=> Wrap input into a lot of “WebSocketFrame (http://bit.ly/2N5zfHh)” then write to stream
9. ■ WebSocket OnMessage event Implementation:
– EventHandler<MessageEventArgs> OnMessage :
■ There’re two place emit the event:
– messagec(MessageEventArgs e) : http://bit.ly/2L7etGO
■ This is binding to Action<> _message field, which is invoked On:
– open() : http://bit.ly/2uaCGpl
■ Being called at Connect() API : http://bit.ly/2L65rgE
– message() : http://bit.ly/2KMUt00
– startReceiving() : http://bit.ly/2NEcATw
– open() : http://bit.ly/2zssHAE
=> Get data from internal _messageEventQueue.Dequeue() then invoke the event.
10. ASP.NET Core Websocket Server
■ The whole implementation across many “Nuget Packges (https://www.nuget.org/packages)”:
– Microsoft.AspNetCore.Websockets
– Microsoft.AspNetCore.Http.Abstractions
– Microsoft.AspNetCore.Http
– Microsoft.AspNetCore.Http.Extensions
– Microsoft.AspNetCore.Http.Features
– Microsoft.AspNetCore.Server.Kestrel
– Microsoft.AspNetCore.Server.Kestrel.Core
– System.Net.WebSockets.WebSocketProtocol
– System.Net.WebSockets
■ It’s impossible to get through whole source code simply by human 👀!!!
■ We have to “experiment it” with debuggable source code or being able to logging detail
information.
11. Build ASP.Net Core Framework
Package
(make it debuggable)■ Build debuggable ASP.NET Core nuget packages?
1. Clone the official build repo: Universe https://github.com/aspnet/Universe
2. Build it…...since ASP.NET Core module’s source has almost unified folder
structure convention:
■ src: The real source code
■ test: Testing code
■ sample: sample project or test to verify production source
■ build: build configuration files
■ Write a example project to use those debuggable packages then run it, dive into….
12.
13. Build ASP.Net Core Framework Package
■ To build individual packages:
1. In Windows machine, Install chocolatey, git for windows, Visual Studio 2017
and ASP.NET workload, node.js (for npm):
https://github.com/aspnet/Universe/wiki/Setting-a-machine-up-to-run-Universe
2. Clone Universe repo with correct tag ( -b 2.1.1), be sure to use --recursive to
get associated git submodule repo in modules folder.
3. Run build.cmd (build.sh) on top folder to let ASP.NET Core Buildtools setup
correct config files on first time, even if not all module can successful build.
4. Make sure the residue build process are all killed.
5. Switch to the module folder you want to build, delete anything in
artifactsbuild subfolder, then use:
build.cmd /p:CompileOnly=true /p:SkipTests=true
To build those Nuget packages of the module, Resulting files will reside in
module folder's artifactsbuild folder, and by default, they are debuggable.
14. Build ASP.Net Core Framework
Package
(make it debuggable)■ Use “find –iname“ or “dir /s” to find Nuget packages real source location in
Universe repo:
■ Exception:
Microsoft.AspNetCore.Server.Kestrel
Microsoft.AspNetCore.Server.Kestrel.Core
is in modulesKestrelHttpServer folder
■ But the
System.Net.WebSockets.WebSocketProtocol
System.Net.WebSockets
packages are .NET Core runtime’s built-in libraries, that belongs to the
“CoreFx (https://github.com/dotnet/corefx)” repo, not in ASP.NET Core
15. Time Savior: SourceLink support in
VisualStudio
(https://github.com/dotnet/sourcelink )
■ Visual Studio 2017 v15.7 and above support
SourceLink ( https://docs.microsoft.com/en-
us/visualstudio/releasenotes/vs2017-
relnotes#debug) ,
■ Begin from ASP.NET Core 2.0 it support
SourceLink too:
https://github.com/dotnet/core/issues/897,
but some packages may not ready:
https://github.com/dotnet/buildtools/issues/
1896
■ Most of time it just works 👍
16. ■ Caveat:
– Can not use “GoToDefinition(F12)” if it hasn’t been using debugger dive into it.
– If source code already disappear on GitHub, it cannot work.
– Some too deep function(s) may not work (may be bug?!)
17. Example experiment project
■ Example source repo:
http://bit.ly/2KO3B4n
■ It use .NET Core SCD deployment
(http://bit.ly/2maxCgj)to let
ASP.NET core runtime use
debuggable Nuget packages we
created.
■ Runs only on Win10-x64
machine.
18.
19. Some interesting digging result: (1)
■ WebSocket connection setup is implmented in “DefaultWebSocketManager”, its
AccetpWebSocketAsync() is forwarding Websocket upgrade connection work to
WebSocketMiddleware: http://bit.ly/2ukREs1
■ WebSocket SHA-1 encrypt key is hard-coded: http://bit.ly/2N2oTYT
20. Some interesting digging result: (2)
■ The real “Connection Upgrade” phase is done in
Microsoft.AspNetCore.Server.Kestrel
nuget package’s code, which is Web Server itself:
http://bit.ly/2umVGjz
■ And the WebSocket(http://bit.ly/2KO5uhK) instance is created from websocket
middleware using “HttpResponseStream” as source, the real class is
“ManagedWebSocket”, an internal un-documented Class:
21. Some interesting digging result: (3)
■ The Actual ReadAsync() & WriteAsync() implementation entry point is extension
methods: http://bit.ly/2uo2ZaL
■ Write data to websocket’s final operations is call HttpUpgradeStream’s
WriteAsync(), which is also located in Web Server itself (the
Microsoft.AspNetCore.Server.Kestrel.Core Nuget package) :
http://bit.ly/2uaKk33
■ Closing websocket implementation is done by ManagedWebSocket class itself:
http://bit.ly/2mbw9pW
24. Conclusion
■ ASP.NET Core use many Abstract class and Interface in its API, and the real
implementation is DefaultOOXX most of the time.
Ex:
WebSocketManager DefaultWebSocketManager
HttpContext DefaultHttpContext
■ ASP.NET Core’s Middleware is binding via “Microsoft.AspNetCore.Http.Features”
Nuget’s code.