Is there life after COVID-19? Of course there is, even though it may be quite different, and it may be hard to get there. But there’s one thing in common in the "before" and "after" pictures: science and technology as the cornerstones of modern society, for better or worse.
https://ankaa-pmo.com/wp-content/uploads/2020/04/knowledge-graphs-power-scientific-research-and-business-use-cases-year-of-the-graph-newsletter-april-march-2020.jpg313500Service comm.https://ankaa-pmo.com/wp-content/uploads/2017/04/Logo-Ankaa-engineering.pngService comm.2020-04-25 00:45:262020-04-25 00:45:26Knowledge Graphs Power Scientific Research and Business Use Cases: Year of the Graph Newsletter, April/March 2020
https://ankaa-pmo.com/wp-content/uploads/2020/04/quickly-find-rust-program-bottlenecks-online-using-a-go-tool.jpg375600Service comm.https://ankaa-pmo.com/wp-content/uploads/2017/04/Logo-Ankaa-engineering.pngService comm.2020-04-24 03:57:382020-04-24 03:57:38Quickly Find Rust Program Bottlenecks Online Using a Go Tool
In our current time of crisis, it’s a sad fact that there are many taking advantage of distracted governments, businesses, and individuals. With the majority of workforces in the Western world currently working from home, often on insecure networks, and far removed from their typical IT support structure, an increase in cybersecurity threats has reared its head during the COVID-19 crisis.
I recently spoke with Quentin Rhoads-Herrera of CRITICALSTART to discuss trends they have recently witnessed, how the company is helping during the crisis, and cutting through some cybersecurity jargon. You can hear the full interview below.
https://ankaa-pmo.com/wp-content/uploads/2020/04/cybersecurity-during-a-pandemic-an-interview-with-critical-start.jpg330528Service comm.https://ankaa-pmo.com/wp-content/uploads/2017/04/Logo-Ankaa-engineering.pngService comm.2020-04-23 01:16:252020-04-23 01:16:25Cybersecurity During a Pandemic: An Interview With Critical Start
This article is for the Scala programmer who has at least used or heard about Futures before. You can also find this over at the Rock the JVM blog or on YouTube in video form or embedded below:
In this article, I’m going to address the problem of "deterministic" Futures in Scala. You probably know by now that Futures are inherently non-deterministic, in the sense that if you create a Future
Scala
xxxxxxxxxx
1
1
valmyFuture=Future {
2
// you have no future, you are DOOMED!
3
42
4
// JK.
5
}
You know the value inside will be evaluated on "some" thread, at "some" point in time, without your control.
The Scenario
Here, I will speak to the following scenario which comes up often in practice. Imagine you’re designing a function like this:
with the assumption that you’re issuing a request to some multi-threaded service which, is getting called all the time. Let’s also assume that the service looks like this:
Scala
xxxxxxxxxx
1
1
objectMyService {
2
defproduceThePreciousValue(theArg: Int): String="The meaning of your life is "+ (theArg/42)
// send the function to be evaluated on some thread, at the discretion of the scheduling logic
6
true
7
}
8
}
The service has two API methods:
A "production" function that is completely deterministic.
A submission function that has a pretty terrible API because the function argument will be evaluated on one of the service’s threads, and you can’t get the returned value back from another thread’s call stack.
Let’s assume this important service is also impossible to change, for various reasons (API breaks, etc). In other words, the "production" logic is completely fixed and deterministic. However, what’s not deterministic is when the service will actually end up calling the production function. In other words, you can’t implement your function as:
because spawning up the thread responsible for evaluating the production function is not up to you.
The Solution
Introducing Promises — a "controller" and "wrapper" over a Future. Here’s how it works. You create a Promise, get its Future and use it (consume it) with the assumption that it will be filled in later:
Scala
xxxxxxxxxx
1
1
// create an empty promise
2
valmyPromise=Promise[String]()
3
// extract its future
4
valmyFuture=myPromise.future
5
// do your thing with the future, assuming it will be filled with a value at some point
// return the future now, so it can be reused by whoever's consuming it
13
thePromise.future
14
}
We create a promise and then we return its future at the end for whoever wants to consume it. In the middle, we submit a function that will be evaluated at some point out of our control. At that moment, the service produces the value and fulfills the Promise, which will automatically fulfill the Future for the consumer.
This is how we can leverage the power of Promises to create "controllable" Futures, which we can fulfill at a moment of our choosing. The Promise class also has other methods, such as failure, trySuccess/ tryFailure and more.
The recent surge in Work-From-Home, triggered by the COVID-19 crisis, is here to stay and the first sign of it is that "WFH" has been added to the alphabet soup of jargons crowding the technology industry. WFH, however, has also created a fresh set of challenges for organizations to protect their intellectual assets from cyberattacks. It’s a no-brainer to say that our home networks are far more vulnerable than enterprise networks. Companies are leveraging this crisis to meet immediate needs as well as for building more lasting, longer-term access to a variety of resources in the cloud as well as in the enterprise data center.
As the world logs on to enterprise networks from home, the demand for more secure remote access for employees is at an all-time high. Organizations must prepare for possible cyberattacks on our home IT networks to exploit its vulnerabilities. They need to monitor IT use for signs of malicious behaviour, safeguard sensitive data and assure maximum compliance with privacy and regulatory requirements. Also, the extensive use of cloud services necessitated by the COVID-19 crisis, both on-premise and public, will compel enterprises to reassess this ecosystem and take additional steps to protect it.
https://ankaa-pmo.com/wp-content/uploads/2020/04/covid-19-creates-fresh-cyber-security-challenges-as-employees-work-from-home.jpg375600Service comm.https://ankaa-pmo.com/wp-content/uploads/2017/04/Logo-Ankaa-engineering.pngService comm.2020-04-20 23:07:052020-04-20 23:07:05COVID-19 Creates Fresh Cyber Security Challenges as Employees Work From Home
I had the opportunity to meet virtually with Dani Golan, CEO and Co-founder, and Derek Swanson, CTO of Kaminario as part of the 34th IT Press Tour.
Hybrid multi-cloud infrastructure continues to win the day for enterprises. This is driven by the exponential growth of data, limited budgets, digitalization of business, and changing demand for skills and roles. The globalization of business requires access to data everywhere with everything being connected and data being collected at millions of endpoints while remaining compliant with geographically-specific data privacy laws.
Vue.JS is a JavaScript library that has taken the world of frontend developers by storm. Even for one of the latest libraries on JavaScript, Vue stands a stiff competition for the existing leaders like React and Angular.
As for recent stats, here is a comparison between the popularity of these three JavaScript frameworks:
https://ankaa-pmo.com/wp-content/uploads/2020/04/leveraging-vue-js-for-a-headless-magento-store.jpg375600Service comm.https://ankaa-pmo.com/wp-content/uploads/2017/04/Logo-Ankaa-engineering.pngService comm.2020-04-18 03:37:572020-04-18 03:37:57Leveraging Vue.JS for a Headless Magento Store
Despite Java not providing a zip operation, you don’t need either 30 additional lines to implement it, nor a third party library. Simply compose a zipline through the existing Stream API.
Abstract
Java, from its 8th version onward, provides an easy way to query sequences of elements through its Stream Interface, which provides several operations out of the box. This set of operations is quite versatile but, as can be expected, it does not cover all the operations a programmer may require. One such operation is zip, as we can observe in one of the most visited posts about Java Streams in Stackoverfow: Zipping streams using JDK8 with lambda (java.util.stream.Streams.zip). Even 7 years later, we are now on Java 14 release and there is no zip operation for Streams yet.
https://ankaa-pmo.com/wp-content/uploads/2020/04/bridge-the-gap-of-zip-operation.jpg375600Service comm.https://ankaa-pmo.com/wp-content/uploads/2017/04/Logo-Ankaa-engineering.pngService comm.2020-04-17 23:50:332020-04-17 23:50:33Bridge the Gap of Zip Operation
Event sourcing, aka "the great myth". I’ve been thinking about writing a series of articles about this for a while, and now it’s time to put my hands back on the keyboard.
I thought that with this long period of confinement at least I could have had more time to write some nice articles, but it turns out the reality has been slightlydifferent so far.
Traditional DRaaS offerings typically require rigid data center infrastructure that is expensive and inefficient. Many DRaaS (Disaster Response-as-a-Solution) solutions offer an alternative to on-premises failover, but when they are based on the same on-premises DR (disaster response) technology, they cannot realize the full technical and business advantages of the cloud: multi-tenancy, scalability, agility, and cost-efficiency.
“Incorporating object storage into a backup service is relatively straightforward and, today, is commonly supported by most data protection vendors,” said Tom Critser, co-founder and CEO, JetStream Software. “But service providers haven’t previously had a CDP (continuous data protection) solution that continuously replicates data directly into an object store and uses the object store exclusively to maintain all recovery assets, including the recovery of system information, network configurations, and ongoing protection policies. That’s a very different kind of challenge that JetStream DR on Cloudian uniquely addressed.”
Paramètres des cookies et politique de confidentialité
Comment nous utilisons les cookies
Nous utilisons les cookies pour nous faire savoir quand vous visitez nos sites Web, comment vous interagissez avec nous, pour enrichir votre expérience utilisateur et pour personnaliser votre relation avec notre site Web.
Cliquez sur les différents titres de catégories pour en savoir plus. Vous pouvez également modifier certaines de vos préférences. Notez que le blocage de certains types de cookies peut avoir un impact sur votre expérience sur nos sites Web et les services que nous sommes en mesure d'offrir.
Cookies essentiels sur ce site
These cookies are strictly necessary to provide you with services available through our website and to use some of its features.
Because these cookies are strictly necessary to deliver the website, you cannot refuse them without impacting how our site functions. You can block or delete them by changing your browser settings and force blocking all cookies on this website.
Cookies Google Analytics
Ces cookies recueillent des renseignements qui sont utilisés sous forme agrégée pour nous aider à comprendre comment notre site Web est utilisé ou l'efficacité de nos campagnes de marketing, ou pour nous aider à personnaliser notre site Web et notre application pour vous afin d'améliorer votre expérience.
Si vous ne voulez pas que nous suivions votre visite sur notre site, vous pouvez désactiver le suivi dans votre navigateur ici :
Autres services
Nous utilisons également différents services externes comme Google Webfonts, Google Maps et les fournisseurs externes de vidéo. Comme ces fournisseurs peuvent collecter des données personnelles comme votre adresse IP, nous vous permettons de les bloquer ici. Veuillez noter que cela pourrait réduire considérablement la fonctionnalité et l'apparence de notre site. Les changements prendront effet une fois que vous aurez rechargé la page.
.
Paramètres de Google Webfont Settings :
Google Map :
Vimeo et Youtube :
Politique de confidentialité
Vous pouvez lire nos cookies et nos paramètres de confidentialité en détail sur la page suivante