Hello, I am Aleksandr Ivanov, CTO at Quadcode. We came to Habr to show the Fintech “kitchen”; we’ve been at it for 8 years, so we can already share our experience. In our blog we will talk about architectures, technologies, tools and life hacks.
A Step-by-Step Guide To Integrate Video Calling Features Within Apps Using WebRTC
WebRTC integrations have emerged as a game-changer in the Video Calling Technology over the years. The protocol has redefined the way real-time video communications take Developers can integrate WebRTCs commonly available as JavaScript APIs to add audio and video solutions to their apps. place. Developers can integrate WebRTCs commonly available as JavaScript APIs to add audio and video solutions to their apps. This tutorial will take you through the steps in developing a two-way video call between two devices.
WebRTC (Web Real-Time Communication) is a set of rules that can establish bidirectional and full-duplex communication between our two devices using JavaScript. It connects your devices and enables transfer of unlimited real-time audio and video across any operating system. However, the WebRTC agents created for both devices do not know any information about each other inorder to establish the media exchange. At this point, a third, mutually agreed-upon server is introduced. This server which connects the devices to transfer data with necessary information about the endpoints is known as the Signaling Server.
Before we start off with the steps, it is necessary to become familiar with the basics of the integration process.
Utilitarian blockchain. 1. Assets
In the modern world, the term " **blockchain** " is steadily associated with cryptocurrencies, NFTs, mining, trading and financial pyramids. However, even among programmers and IT people there is not always a clear understanding of what it is and what it is for.
This article attempts to look at this still relatively new element of the information and human space in practical and slightly philosophical aspects.
> **Disclaimer**: The article will use simple language to explain non-trivial concepts, so non-critical distortion of technical details is possible.
Queries in PostgreSQL. Index scan
Queries in PostgreSQL. Index scan
In previous articles we discussed query execution stages and statistics. Last time, I started on data access methods, namely Sequential scan. Today we will cover Index Scan.
Enhanced ActiveRecord preloading
In this guide, I'd like to share with you tips and tricks about ActiveRecord preloading and how you can enhance it to the next level.
How to mimic Agile correctly?
A similar article should have appeared earlier, about ten or fifthteen years ago, when Agile was just starting to be implemented in companies. How many mistakes, problems, conflicts could be avoided if managers immediately approached the issue correctly ...
But during this time, the experience of "implementing" Agile in different conditions, in different companies has accumulated, which should be generalized and widely disseminated.
Two Factor Authentication — More Security, Less Effort
Today we're talking multi-factor authentication, also known as two-factor authentication, and 2-step verification. It's got a few names but what is it?
Well, essentially it's proving your identity in more than one way. The principle being that if one of these authentication factors is defeated, that's not enough to give access to your data. So your data should be secure if someone steals your password for example. It's not enough to just log in twice. These different authentication factors have to work in a fundamentally different way. So you can't just use a second password or a password in a pin; because passwords and pins both rely on the same thing - your memory. So if they have to work in different ways, what different factors are available for us to use? Well, here are some of the common ones.
Idiomatic Event Loop in C++
Sometimes programming with mutexes gets too complicated and messy. Maybe you need to meet a new friend — the Event Loop pattern.
Information is changed by entropy
According to the no-cloning theorem it is impossible to create an independent and identical copy of an arbitrary unknown quantum state. We cannot delete any quantum information as well. All changes in time of the state vector in quantum mechanics are described by the action of unitary operators. Accordingly, there must be an operator performing a deleting operation. The operator must be a zero matrix in order to nullify quantum information totally in all cases. But a zero matrix is not a uninaty or hermitian matrix. Therefore there is no such unitary operator that can delete information.
This might be proven in another way. Let us imagine the double-slit thought experiment where interference exists when we do not know about the system and interference does not when we know about the system. Assume we have a storage where the data is stored and the experiment is being conducted with knowing about the system. Suppose we destroy the storage. What does the screen in the experiment show us? Quantum mechanics tells us that there must not be interference. Should it appear after the data is destroyed? Since the wave function has collapsed it cannot be restored. If there is a chance to delete the information in the experiment, it means that the wave function must go back to the initial state and show us interference, which is a contradiction.
Based on the foregoing, we will consider the quantum eraser experiment. In that experiment information is neither erased nor disappeared. It is being changed. That is the key point. We increase entropy. If there is a 50 per cent chance to get interference then the entropy = 1 (max value). The same with a spin. If we change spins of elementary particles, for example in the Stern–Gerlach experiment with different axes measurements, we do not delete the information about the states of particles, we increase the entropy. Changing does not equal deleting.
Lexical Analysis in 11l
The task of the lexical analyzer is to split the source code of the program into tokens.
So for example the code
print(1 + 2)
will be tokenized asprint
, (
, 1
, +
, 2
and )
GraphQL without N+1 is easy. N1Loader is a must
N1Loader is designed to provide a simple way for avoiding N+1 issues
of any kind. Gladly, it's super easy to integrate with your GraphQL
API. Without further delay, let's look at a simple but yet detailed
example.
Does GPS transmit different data into LNAV and CNAV messages?
Different navigation message protocols are used for different navigation signal type. This is true even for a single system like NAVSTAR GPS. For example, L1C/A signals have a LNAV protocol, while L2C and L5 signals utilize a CNAV protocol. The newest L1C signal will use CNAV-2.
The protocol defines a data distribution into frames, subframes, the subframes structure, transmission intervals, data resolution and so on.
A navigation receiver use the navigation message data flow for several purposes:
1. The data flow allows to resolve a code ambiguity and set the signal time.
2. Ephemeris and clock values are used for the satellite position calculation, pseudorange corrections and coordinates computation.
3. The received data flow and navigation message data can be used for navigation symbols prediction. As result, we can use the wipe-off technique, expand discriminators and significantly increase tracking sensitivity:
PHDays 11: bootkit infection, sanitizers for the Linux kernel, the new face of OSINT, and phishing on official websites
Positive Hack Days 11 will begin in a matter of weeks. This international forum on practical security will be held on May 18–19 in Moscow.
As per tradition, PHDays will have three big tracks dedicated to countering attacks (defensive), protection through attack (offensive), and the impact of cybersecurity on business. It is our pleasure to present the first talks.
How to Make Your Own C++ Game Engine
So you want to learn more about game engines and write one yourself? That's awesome! To help you on your journey, here are some recommendations of C++ libraries and dependencies that will help you hit the ground running.
Audio API Quick Start Guide: Playing and Recording Sound on Linux, Windows, FreeBSD and macOS
Hearing is one of the few basic senses that we humans have along with the other our abilities to see, smell, taste and touch. If we couldn't hear, the world as we know it would be less interesting and colorful to us. It would be a total silence - a scary thing, even to imagine. And speaking makes our life so much fun, because what else can be better than talking to our friends and family? Also, we're able to listen to our favorite music wherever we are, thanks to computers and headphones. With the help of tiny microphones integrated into our phones and laptops we are now able to talk to the people around the world from any place with an Internet connection. But computer hardware alone isn't enough - it is computer software that really defines the way how and when the hardware should operate. Operating Systems provide the means for that to the apps that want to use computer's audio capabilities. In real use-cases audio data usually goes the long way from one end to another, being transformed and (un)compressed on-the-fly, attenuated, filtered, and so on. But in the end it all comes down to just 2 basic processes: playing the sound or recording it.
Today we're going to discuss how to make use of the API that popular OS provide: this is an essential knowledge if you want to create an app yourself which works with audio I/O. But there's just one problem standing on our way: there is no single API that all OS support. In fact, there are completely different API, different approaches, slightly different logic. We could just use some library which solves all those problems for us, but in that case we won't understand what's really going on under the hood - what's the point? But humans are built the way that we sometimes want to dig a little bit deeper, to learn a little bit more than what just lies on the surface. That's why we're going to learn the API that OS provide by default: ALSA (Linux), PulseAudio (Linux), WASAPI (Windows), OSS (FreeBSD), CoreAudio (macOS).
Q1 2022 DDoS attacks and BGP incidents
The first quarter of the year 2022 has passed; now, it is time to look at the events of Q1 in terms of mitigated DDoS activity and recorded BGP incidents.
Easy Two Factor Authentication (2FA) with Microsoft Authenticator (2)
Some time ago we discussed how to easy and fast setup 2FA using Google Authenticator API. In this article we describe how to make this working using Microsoft Authenticator app!
The Significance of In-app Messaging Applications in your Digital Business
In-app messages are targeted notifications sent to customers/ users while they are active on the website or mobile application. They are a very effective way to engage customers as they are already within the application looking for specific information. In-app chat applications help connect better with the users and improve user retention as they are timely and targeted.
Android for electronics design engineers
There is a list of well-known electronics design tools for Android which can be found in every review for the last 10 years: “Electrodoc”, “Every Circuit”, “Droid Tesla”, “Electronics Toolbox”, “RF & Microwave Toolbox” and so on. Also, there is a lot of trash on the market that turns finding a good tool into a quest.
This short review is about an unknown but cool tool “Circuit Calculator” working on Android devices and intended for professional electronics designers.
Simple rest based kogito microservice with several embedded pmml models
In previous post I've described an example of kogito-based microservice on quarkus in native mode, containing one embedded pmml model with decision tree. While it can be successfully used for prototyping purposes, in the real life microservice might contain several prediction models. From the first view I've got an impression, that inclusion of several models should be a trivial extension of the prototype with one model. We were completely wrong in our assumption, that's the reason, why I've decided to write this post. Another reason, is absence of guides, in which 2 (or more models) are put inside DMN diagrams in kogito framework.