This document discusses improving proto types when using them in collections for RPC applications. It recommends adding an empty message type for void parameters and repeatable types for data collections. Sample code shows defining request/response messages for getting a user by name including a repeated field for the user collection. The server code returns the collection while the client code iterates over it. Implementing an online shop sample is suggested along with using the template method pattern for server internal logic. The document recommends a design patterns book and thanks the reader.
In this talk we will discuss the use of gRPC to build a microservices-based application on Kubernetes. We’ll firstly focus on the basic concepts of gRPC: protocol buffers, code generation and HTTP 2.0. We’ll then discuss some more intermediate-level features, such as native Kubernetes load balancing, gRPC streaming, error propagation, HTTP tunneling and instrumentation. Finally we’ll touch on some of the newer, exciting developments in the space: middleware and context propagation for distributed tracing, gRPC Web for client-side rich web apps and gogoproto for blazing-fast generated code. This talk is based on my experience building a hosted, Prometheus-based monitoring service, which itself used gRPC for all intra-server communication and runs on Kubernetes. There’ll be live coding, real world examples and discussion of the benefits (and drawbacks) of gRPC.
Presented at GDG Devfest Ukraine 14th Oct 2017.
This presentation on building servers explains what is Netty, why choosing it and shows how with very little code you can build an asynchronous app server.
A short presentation about practical aspects of asynchronous data transfer with Netty
HTML version: http://vcherkassky.github.com/reveal.js/netty.html
Additional resources (from last slide):
* https://github.com/netty/netty
* http://seeallhearall.blogspot.co.uk/2012/05/netty-tutorial-part-1-introduction-to.html
Done with reveal.js: https://github.com/hakimel/reveal.js/
In this talk we will discuss the use of gRPC to build a microservices-based application on Kubernetes. We’ll firstly focus on the basic concepts of gRPC: protocol buffers, code generation and HTTP 2.0. We’ll then discuss some more intermediate-level features, such as native Kubernetes load balancing, gRPC streaming, error propagation, HTTP tunneling and instrumentation. Finally we’ll touch on some of the newer, exciting developments in the space: middleware and context propagation for distributed tracing, gRPC Web for client-side rich web apps and gogoproto for blazing-fast generated code. This talk is based on my experience building a hosted, Prometheus-based monitoring service, which itself used gRPC for all intra-server communication and runs on Kubernetes. There’ll be live coding, real world examples and discussion of the benefits (and drawbacks) of gRPC.
Presented at GDG Devfest Ukraine 14th Oct 2017.
This presentation on building servers explains what is Netty, why choosing it and shows how with very little code you can build an asynchronous app server.
A short presentation about practical aspects of asynchronous data transfer with Netty
HTML version: http://vcherkassky.github.com/reveal.js/netty.html
Additional resources (from last slide):
* https://github.com/netty/netty
* http://seeallhearall.blogspot.co.uk/2012/05/netty-tutorial-part-1-introduction-to.html
Done with reveal.js: https://github.com/hakimel/reveal.js/
Monitoring the Hashistack with PrometheusGrafana Labs
Prometheus has become the defacto monitoring system for cloud native applications, but for a while was eschewed by the Hashistack in favour of more traditional technologies. Thats all changing: Hashicorp's project are beginning to export metrics in the native Prometheus format, and many exporters exist to bridge the gap.
In this talk Tom will give a brief introduction to Prometheus, show you how to piece it all together, and give some recommendation on what to monitor and alert on.
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...Codemotion
Front-end development has an amazing assortment of libraries and tools, yet it can seem very complex and doest seem much fun. So we'll live code a ClojureScript application (with a bit of help from Git) and show how development doesn't have to be complex or slow. Through live evaluation, we can build a reactive, functional application. Why not take a look at a well designed language that uses modern functional & reactive concepts for building Front-End apps. You are going to have to trans-pile anyway, so why not use a language, libraries and tooling that is bursting with fun to use.
Networking and Go: An Engineer's Journey (Strangeloop 2019)Sneha Inguva
My foray into Go began a few years ago when I started working at DigitalOcean. While building an abstraction layer on top of Kubernetes and familiarizing myself with the language, I began to love it. Syntactically simple, with amazing concurrency primitives and a wonderful community, Go was an excellent choice for a cloud-hosting company with a variety of low-level, server-side microservices.
In the last year, however, I've joined the software-defined networking team and learned of another application of Go; networking services. The networking team at DigitalOcean uses Go for a variety of purposes - from DHCP servers to IP address management services..to even wrappers around virtual switch tooling. Intrigued, I decided to also investigate how Go could be used to build other services such as port scanners and load-balancers.
This session will highlight my networking journey via Go. I will discuss useful packages, key learnings, and even struggles faced while building a variety networking services within and outside of DigitalOcean. I will discuss both relevant packages within the standard library and open source packages used to implement key network protocols. As a result, listeners will gain an understanding of how to specifically leverage Go for their own networking needs.
OWIN has a concept of middleware. So does ASP.NET 5. Why? What is middleware? How does it help in typical web applications? In this talk we will dive into the code, write some middleware and show how middleware helps you handle cross-cutting concerns in an isolated and re-usable way. I'll compare and contrast the OWIN and ASP.NET 5 middleware concepts and talk about where each is appropriate.
Presented at Singapore Gophers Meetup - 20 Jan 2015
Working with the Go http package:
- Customising handlers
- Writing middleware
- Ecosystem
Source: https://github.com/jonog/customising-go-web
Slides: http://go-talks.appspot.com/github.com/jonog/customising-go-web/customising-go-web.slide
Developing high-performance network servers in LispVladimir Sedach
Overview of current high-performance Common Lisp web servers and implementation techniques, and description of a new hybrid approach to asynchronous I/O based on separate racing accept() and epoll() thread pools.
Rihards Olups - Encrypting Daemon Traffic With Zabbix 3.0Zabbix
Are you paranoid? Even if you are not, it might be a good idea to encrypt your email. Important documents. Communication. While monitoring data is not secret in many cases, transmitting it in plaintext over Internet does make some people nervous. And now, with Zabbix 3.0, there's a built-in way to encrypt communication between components, including Zabbix server, proxy, agent, get and sender. Yes, them all. In this short talk we'll learn about the available modes, supported libraries and how to configure it all to still make sense a few years later.
Zabbix Conference 2015
Monitoring the Hashistack with PrometheusGrafana Labs
Prometheus has become the defacto monitoring system for cloud native applications, but for a while was eschewed by the Hashistack in favour of more traditional technologies. Thats all changing: Hashicorp's project are beginning to export metrics in the native Prometheus format, and many exporters exist to bridge the gap.
In this talk Tom will give a brief introduction to Prometheus, show you how to piece it all together, and give some recommendation on what to monitor and alert on.
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...Codemotion
Front-end development has an amazing assortment of libraries and tools, yet it can seem very complex and doest seem much fun. So we'll live code a ClojureScript application (with a bit of help from Git) and show how development doesn't have to be complex or slow. Through live evaluation, we can build a reactive, functional application. Why not take a look at a well designed language that uses modern functional & reactive concepts for building Front-End apps. You are going to have to trans-pile anyway, so why not use a language, libraries and tooling that is bursting with fun to use.
Networking and Go: An Engineer's Journey (Strangeloop 2019)Sneha Inguva
My foray into Go began a few years ago when I started working at DigitalOcean. While building an abstraction layer on top of Kubernetes and familiarizing myself with the language, I began to love it. Syntactically simple, with amazing concurrency primitives and a wonderful community, Go was an excellent choice for a cloud-hosting company with a variety of low-level, server-side microservices.
In the last year, however, I've joined the software-defined networking team and learned of another application of Go; networking services. The networking team at DigitalOcean uses Go for a variety of purposes - from DHCP servers to IP address management services..to even wrappers around virtual switch tooling. Intrigued, I decided to also investigate how Go could be used to build other services such as port scanners and load-balancers.
This session will highlight my networking journey via Go. I will discuss useful packages, key learnings, and even struggles faced while building a variety networking services within and outside of DigitalOcean. I will discuss both relevant packages within the standard library and open source packages used to implement key network protocols. As a result, listeners will gain an understanding of how to specifically leverage Go for their own networking needs.
OWIN has a concept of middleware. So does ASP.NET 5. Why? What is middleware? How does it help in typical web applications? In this talk we will dive into the code, write some middleware and show how middleware helps you handle cross-cutting concerns in an isolated and re-usable way. I'll compare and contrast the OWIN and ASP.NET 5 middleware concepts and talk about where each is appropriate.
Presented at Singapore Gophers Meetup - 20 Jan 2015
Working with the Go http package:
- Customising handlers
- Writing middleware
- Ecosystem
Source: https://github.com/jonog/customising-go-web
Slides: http://go-talks.appspot.com/github.com/jonog/customising-go-web/customising-go-web.slide
Developing high-performance network servers in LispVladimir Sedach
Overview of current high-performance Common Lisp web servers and implementation techniques, and description of a new hybrid approach to asynchronous I/O based on separate racing accept() and epoll() thread pools.
Rihards Olups - Encrypting Daemon Traffic With Zabbix 3.0Zabbix
Are you paranoid? Even if you are not, it might be a good idea to encrypt your email. Important documents. Communication. While monitoring data is not secret in many cases, transmitting it in plaintext over Internet does make some people nervous. And now, with Zabbix 3.0, there's a built-in way to encrypt communication between components, including Zabbix server, proxy, agent, get and sender. Yes, them all. In this short talk we'll learn about the available modes, supported libraries and how to configure it all to still make sense a few years later.
Zabbix Conference 2015
API en Protobuf : 3 fois mieux que le JSON par Pascal CORPETLa Cuisine du Web
Votre API grossit, vous avez maintenant 5 niveaux d’imbrications de structures, 4 clients dans des langages différents et en plus votre Product Manager change d’idée d’un sprint à l’autre. En 15 minutes je vais vous expliquer en pratique pourquoi les protobuffers sont vos futurs meilleurs amis et comment les mettre en place dès demain.
DN 2017 | Big Data / Microservice Versioning | Thomas Pötter | Compris Techno...Dataconomy Media
Similar to the CAP trade-off (Consistency – Availability – Partition-Tolerance), this presentation demonstrates the C(A/P)S trade-off for protocol/data versioning which stands for the trade-off between the goals of Code amount (low), Availability/Performance and Storage (low) which can be achieved through lazy/eager migration or by creating multiple converters. This presentation then shows best practices for versioning and how the trade-off can be solved. A switchboard pattern is presented, which permits the use of different versions in parallel.
this the a web technology that is used in many web applications . xmlrpc is mainly used to transport request for input parameter and output parameters .
Assignment/ACSC_424_midterm_fall_2012.pdf
1
ACSC424 – Network Application Programming – Midterm exercise
Create a chat program that will be based on client server architecture.
The server will be responsible for connecting clients like the following diagram:
- Each client will be connected on the server after a short authentication protocol as follows:
o The server will be continuously listening to port 9000 for incoming connections
o When a client is connected the server will have to accept the connection using
the following protocol:
1. Server: OK
2. Client: USER: <user name>
3. Server: USER OK or else disconnect client
a. it depends on the user name if it is already in the users list of the server
b. if the user is already connected perhaps from another computer it
should be disconnected
4. Client: DATA
5. Server: OK DATA
a. When this procedure is finished the client will get connected to port
9001 which is going to be used for data communications
b. When a client is connected the server will send a message to all other
connected clients to port 9000 that e.g Client A is connected
- The server will reject every user that is trying to register using an illegal user name
(see step3)
- Server must be able to connect up to five clients
- Clients will send data (messages) to another client or to all connected clients and server will
forward it appropriately.
_ _X
Server
Client A
Client C
Client B
2
Students will have to create two programs
a) The server, will have the following interface:
b) The client, will have the following interface:
Bonus part:
Add a file exchange function between the clients.
All the above will be returned online
(Visual Studio C# , file and documents according to the assignment guidelines)
IP address of server
Text to be send to remote point
Send button, when pressed data from
send text box must be transmitted to
the server
Data coming from other clients
Send data
List of connected clients IP address of
remote point
192.168.1.10: connected (Client 1)
192.168.1.30: connected (Client 3)
192.168.1.10: disconnected (Client 5)
Connect
192.168.1.102: hello all (client 3: all)
192.168.1.30: this is user 5 (client 5)
User Name Client 1
Data coming from clients. Any data
coming from clients will be displayed
here and then will be forwarded to
either another client or all of them
o Client 1
o Client 2
o Client 3
o Client 4
o Client 5
All
Select message recipient, either one of
the clients or all of them
o Client 1
o Client 2
o Client 3
o Client 4
o Client 5
All
Send data
Select a client or all of them and send
a message from the server
Assignment/Help Assignment/ACSC_424_ass4_fall_2012.pdf
ACSC424 – Network Application Programming – Lab4 TCP/IP programming
Efthyvoulos Kyriacou
...
KubeCon EU 2016: Templatized Application Configuration on OpenShift and Kuber...KubeAcademy
Kubernetes gives developers a platform on which to run images and many configuration objects to control those images, but constructing a cohesive application made up of images and configuration objects is currently a challenge. Reconstructing or sharing that configuration can also be a challenge. This talk will cover the Template feature implemented in OpenShift to simplify the process of defining and repeatably deploying coordinated objects, discuss what is coming to Kubernetes with respect to this capability, and touch on several other existing projects that enable templatizing application definitions.
Sched Link: http://sched.co/6BVH
Visual Studio 2008 provides advanced development tools, debugging features, database functionality, and innovative features for quickly creating tomorrow’s cutting-edge applications across a variety of
platforms.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
I have heard many times that architecture is not important for the front-end. Also, many times I have seen how developers implement features on the front-end just following the standard rules for a framework and think that this is enough to successfully launch the project, and then the project fails. How to prevent this and what approach to choose? I have launched dozens of complex projects and during the talk we will analyze which approaches have worked for me and which have not.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
Let's dive deeper into the world of ODC! Ricardo Alves (OutSystems) will join us to tell all about the new Data Fabric. After that, Sezen de Bruijn (OutSystems) will get into the details on how to best design a sturdy architecture within ODC.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
2. Improve proto types for using them in
collections
- Add Empty message type for void input or output
parameters.
- Add some repeatable types for data collections.
- Improve Client and server to use those types
- Don’t forget to add “Google.Protobuf.Custom v3.0.0-beta”
reference to Client and Server
3. // The request message containing the user's name.
message stringRequest {
string str = 1;
}
// The response message containing User
message User {
int32 id = 1;
string name = 2;
string surname = 3;
}
// The response message containing the USERS
message UsersCollection {
repeated User users = 1;
}
message Empty {
}
4. Server side code sample
//private server field
Google.Protobuf.Collections.RepeatedField<User> users;
public Task<UsersCollection> GetUserByName(stringRequest request, ServerCallContext context)
{
var reply = new UsersCollection();
var enumerator = users.GetEnumerator();
do
{
if (enumerator.Current != null)
{
if (enumerator.Current.Name == request.Str)
{
reply.Users.Add(enumerator.Current);
}
}
} while (enumerator.MoveNext());
return Task.FromResult(reply);
}
5. Client side code sample
var users = client.GetUserByName(new stringRequest { Str = user }).Users;
var enumerator = users.GetEnumerator();
do
{
if (enumerator.Current != null)
{
//do smth with user element
}
}
while (enumerator.MoveNext());
7. Interfaces
Client:
- Order a good (returns order id, or 0)
- Cancel order (by order id)
- Get my orders
Server:
- Buy, Cancel handling
- Some internal logic