• Monitoring your application with distributed tracing so you actually know what it's doing

    • Tutorial

    What is distributed tracing? Distributed tracing is a method used to profile and monitor applications, especially those built using a microservices architecture. Distributed tracing helps pinpoint where failures occur and what causes poor performance.

    Let’s have a look at a simple prototype. A user fetches information about a shipment from `logistic` service. logistic service does some computation and fetches the data from a database. logistic service doesn’t know the actual status of the shipment, so it has to fetch the updated status from another service `tracking`. `tracking` service also needs to fetch the data from a database and to do some computation.

    In the screenshot below, we see a whole life cycle of the request issued to `logistics` service:

    Read more
  • Algorithms in Go: Merge Intervals

    • Tutorial

    This is the third part of a series covering the implementation of algorithms in Go. In this article, we discuss the Merge Interval algorithm. Usually, when you start learning algorithms you have to deal with some problems like finding the least common denominator or finding the next Fibonacci number. While these are indeed important problems, it is not something that we solve every day. What I like about the Merge Interval algorithm is that we apply it in our everyday life, usually without even noticing that we are solving an algorithmic problem.

    Let's say that we need to organize a meeting for our team. We have three colleagues Jay, May, and Ray and their time schedule look as follows (a colored line represents an occupied timeslot):

    Read more
  • Revealed: 7 Top Web Development Companies & Trends for 2021

      image

      As we enter a new decade, the IT industry has also encountered many loopholes that we must work on. Seeing this, hundreds of motivated young minds have decided to become entrepreneurs. But is it so easy to succeed in a world where competition is already so high?

      Bluntly, the answer is NO. It is not easy to be successful, and the reason for these startups' failure is the lack of digital presence or inadequate technical support. Another major reason that has been seen is the wrong choice of the web development company.

      Hiring dedicated web developers may seem like an easy task at first, but it is not. It is one of the most challenging tasks. And to prevent you from falling into the pits of failure, I have created a list of the 7 best web development companies in India and abroad.
      Read more →
    • Architectural approaches to authorization in server applications: Activity-Based Access Control Framework

      • Translation

      This article is about security. I’ll focus on this in the context of web applications, but I’ll also touch on other types of applications. Before I describe approaches and frameworks, I want to tell you a story.


      Background


      Throughout my years working in the IT sphere, I’ve had the opportunity to work on projects in a variety of fields. Even though the process of authenticating requirements remained relatively consistent, methods of implementing the authorization mechanism tended to be quite different from project to project. Authorization had to be written practically from scratch for the specific goals of each project; we had to develop an architectural solution, then modify it with changing requirements, test it, etc. All this was considered a common process that developers could not avoid. Every time someone implemented a new architectural approach, we felt more and more that we should come up with a general approach that would cover the main authorization tasks and (most importantly) could be reused on other applications. This article takes a look at a generalized architectural approach to authorization based on an example of a developed framework.


      Approaches to Creating a Framework


      As usual, before developing something new, we need to decide what problems we’re trying to solve, how the framework will help us solve them, and whether or not there is already a solution to these issues. I’ll walk you through each step, starting with identifying issues and describing our desired solution.


      We’re focusing on two styles of coding: imperative and declarative. Imperative style is about how to get a result; declarative is about what you want to get as a result.

      Read more →
    • Coins Classification using Neural Networks

      • Tutorial

      See more at robotics.snowcron.comThis is the first article in a serie dedicated to coins classification.Having countless "dogs vs cats" or "find a pedestrian on the street" classifiers all over the Internet, coins classification doesn't look like a difficult task. At first. Unfortunately, it is degree of magnitude harder - a formidable challenge indeed. You can easily tell heads of tails? Great. Can you figure out if the number is 1 mm shifted to the left? See, from classifier's view it is still the same head... while it can make a difference between a common coin priced according to the number on it and a rare one, 1000 times more expensive.Of course, we can do what we usually do in image classification: provide 10,000 sample images... No, wait, we can not. Some types of coins are rare indeed - you need to sort through a BASKET (10 liters) of coins to find one. Easy arithmetics suggests that to get 10000 images of DIFFERENT coins you will need 10,000 baskets of coins to start with. Well, and unlimited time.So it is not that easy.Anyway, we are going to begin with getting large number of images and work from there. We will use Russian coins as an example, as Russia had money reform in 1994 and so the number of coins one can expect to find in the pocket is limited. Unlike USA with its 200 years of monetary history. And yes, we are ONLY going to focus on current coins: the ultimate goal of our work is to write a program for smartphone to classify coins you have received in a grocery store as a change.Which makes things even worse, as we can not count on good lighting and quality cameras anymore. But we'll still try.In addition to "only Russian coins, beginning from 1994", we are going to add an extra limitation: no special occasion coins. Those coins look distinctive, so anyone can figure that this coin is special. We focus on REGULAR coins. Which limits their number severely.Don't take me wrong: if we need to apply the same approach to a full list of coins... it will work. But I got 15 GB of images for that limited set, can you imagine how large the complete set will be?!To get images, I am going to scan one of the largest Russian coins site "meshok.ru".This site allows buyers and sellers to find each other; sellers can upload images... just what we need. Unfortunately, a business-oriented seller can easily upload his 1 rouble image to 1, 2, 5, 10 roubles topics, just to increase the exposure.

      So we can not count on the topic name, we have to determine what coin is on the photo ourselves.To scan the site, a simple scanner was written, based on the Python's Beautiful Soup library. In just few hours I got over 50,000 photos. Not a lot by Machine Learning standards, but definitely a start.After we got the images, we have to - unfortunately - revisit them by hand, looking for images we do not want in our training set, or for images that should be edited somehow. For example, someone could have uploaded a photo of his cat. We don't need a cat in our dataset.First, we delete all images, that can not be split to head/hail.

      Читать далее
    • How PVS-Studio Checked ELKI in January

        If you feel like the New Year just came, and you missed the first half of January, then all this time you've been busy looking for tricky bugs in the code you maintain. It also means that our article is what you need. PVS-Studio has checked the ELKI open source project to show you errors that may occur in the code, how cunningly they can hide there, and how you can deal with them.


        ELKI/image1.png

        Read more →
      • Ads
        AdBlock has stolen the banner, but banners are not teeth — they will be back

        More
      • Espressif IoT Development Framework: 71 Shots in the Foot

          0790_Espressif_IoT_Development_Framework/image1.png
          One of our readers recommended paying heed to the Espressif IoT Development Framework. He found an error in the project code and asked if the PVS-Studio static analyzer could find it. The analyzer can't detect this specific error so far, but it managed to spot many others. Based on this story and the errors found, we decided to write a classic article about checking an open source project. Enjoy exploring what IoT devices can do to shoot you in the foot.

          Read more →
        • Creating Node.JS web server application with Express, Typescript, Jest, Swagger, log4js and routing-controllers

          • Translation
          This is a step by step instruction for creating Node.JS web server application with typescript and express. Creating of new web application on Node.JS is is not making often, so the steps how to do it can be forgotten. So this article is a kind of reminder for me and other developers. Also I added in article links to video clips for more clarification. Here I show how to create application on Node.JS without using any frameworks for it. Just Node.JS and packages.
          Read more →
        • Doing «Data Science» even if you have never heard the words before

            There’s a lot of talk about machine learning nowadays. A big topic – but, for a lot of people, covered by this terrible layer of mystery. Like black magic – the chosen ones’ art, above the mere mortal for sure. One keeps hearing the words “numpy”, “pandas”, “scikit-learn” - and looking each up produces an equivalent of a three-tome work in documentation.

            I’d like to shatter some of this mystery today. Let’s do some machine learning, find some patterns in our data – perhaps even make some predictions. With good old Python only – no 2-gigabyte library, and no arcane knowledge needed beforehand.

            Interested? Come join us.

            Read more
          • Top 10 Best Voice Chat APIs for Mobile and Web Apps

              Voice calling plays a crucial role in personal and professional communication. Be it a friendly conversation among classmates or a business deal between companies – voice calling has been the most easy, convenient, and affordable way to communicate for decades. Thus, communication corporations and developers have brought in innovative ways to integrate their Application Programming Interfaces (APIs) and invent newer ways of voice communication.

              Read More
            • What is one of the most common mistakes beginner developers make

                It may seem that when you are a beginner, you'll do simple things only. No need to learn data structures and algorithms. No need to understand Big O notation, complexity and stuff like that. 

                This couldn't be further away from the truth!

                In 2008, when I just started learning to program, I spent a lot of time reading books on PHP and MySQL. Months later, when I felt confident, I took my first freelance project. It was a real estate website. A simple one. I used a custom-made ORM and everything worked just fine!

                When I released it, the search feature quickly became sluggish and made the website unusable. 

                I was wondering what the heck had happened. I figured out that database queries became very slow when there were over 200 real estate objects added to it. 

                This is it. What worked fine during testing did not work in real life.

                I was a self-taught developer. I did not know how to measure if my project scaled well. I didn't even know that I had to do it.

                I thought algorithms mattered only for launching a spaceship.

                If I had some basic understanding of algorithms, I would have known that the more the input, the longer it takes. 

                I am not saying I would have come up with a robust solution as a junior, but I would have looked for a solution because I knew there would be a problem. 

                Please, don't make the same mistake!

                Of course, data structures and algorithms are much more than that and they apply differently depending on what you work on.

                But a basic understanding of data structures and algorithms is a must for every software developer. 

                Read more
              • Ant Design Component Customization and Bundle Optimization

                  I'm Ivan Kopenkov, a senior front-end developer at Mail.ru Cloud Solutions. In this article, I will tell you about the approaches we have used for the UI library components customization. You will also learn how to significantly decrease bundle size, cutting off all the unnecessary modules Ant Design takes there.

                  In our case, we are making wrappers for original Ant Design components inside the project, changing their appearance, and developing their logic. At the same time, we import both customized and original components right from the ant-design module. That saves tree shaking functionality and makes complex library components use our wrappers instead of original nested elements.

                  If you are already or about to use Ant Design, this article will provide you with a better and more effective way to do so. Even if you have chosen another UI library, you might be able to implement these ideas.

                  Read more
                • CLIP from OpenAI: what is it and how you can try it out yourself

                    Neural networks (NN) and computer vision models in particular are known to perform well in specific tasks, but often fail to generalize to tasks they have not been trained on. A model that performs well on a food data may perform poorly on satellite images. 

                    A new model from OpenAI named CLIP claims to close this gap by a large margin. The paper Open AI wrote presenting CLIP demonstrates how the model may be used on a various classification datasets in a zero-shot manner. 

                    In this article, I will explain the key ideas of the model they proposed and show you the code to use it. 

                    Read more
                  • Modern Portable Voice Activity Detector Released

                      image


                      Currently, there are hardly any high quality / modern / free / public voice activity detectors except for WebRTC Voice Activity Detector (link). WebRTC though starts to show its age and it suffers from many false positives.


                      Also in some cases it is crucial to be able to anonymize large-scale spoken corpora (i.e. remove personal data). Typically personal data is considered to be private / sensitive if it contains (i) a name (ii) some private ID. Name recognition is a highly subjective matter and it depends on locale and business case, but Voice Activity and Number Detection are quite general tasks.


                      Key features:


                      • Modern, portable;
                      • Low memory footprint;
                      • Superior metrics to WebRTC;
                      • Trained on huge spoken corpora and noise / sound libraries;
                      • Slower than WebRTC, but fast enough for IOT / edge / mobile applications;
                      • Unlike WebRTC (which mostly tells silence from voice), our VAD can tell voice from noise / music / silence;
                      • PyTorch (JIT) and ONNX checkpoints;

                      Typical use cases:


                      • Spoken corpora anonymization;
                      • Can be used together with WebRTC;
                      • Voice activity detection for IOT / edge / mobile use cases;
                      • Data cleaning and preparation, number and voice detection in general;
                      • PyTorch and ONNX can be used with a wide variety of deployment options and backends in mind;
                      Read more →
                    • 10(+) years in the Labs

                        At the beginning of the year 2021, Qrator Labs is celebrating its 10 year anniversary. On January 19 our company marks the official passing of a formal 10 years longevity mark, entering its second decade of existence. 

                        Everything started a little bit earlier - when at the age of 10 Alex saw the Robotron K 1820 - in 2008, when Alexander Lyamin - the founder and CEO of Qrator Labs, approached the Moscow State University superiors, where he worked as a NOC engineer at the time, with an idea of a DDoS-attack mitigation research project. The MSU's network was one of the largest in the country and, as we know now, it was the best place to hatch a future technology.

                        That time MSU administration agreed, and Mr Lyamin took his own hardware to the university, simultaneously gathering a team. In two years, by summer 2010, the project turned out to be that successful. It courted the DDoS attack of a bandwidth exceeding the MSU's upstream bandwidth capability. And on June 22 MSU superiors gave Mr Lyamin a choice - to shut down or find money to incorporate.

                        Alexander Lyamin chose to incorporate with his own means, which effectively meant that the needed infrastructure must be built from scratch. The initial design should be distributed instead of concentrated within one network, which resources were not enough for this specific task. And by September 1, 2010, those first server sites were ready and running.

                        Flashback with us
                      • Flutter 1.22 Launched: Will it be a Gain or Pain for Businesses?

                          image

                          Flutter with extensive support from iOS 14 and Android 11 released its newest version 1.22 in October last year. The release is primarily meant to focus on the fact that Android 11 and iOS 14 works great with Flutter.

                          Businesses are still in a dilemma to choose the best cross-platform framework between Flutter and React Native. But with the release of Flutter 1.22, they have realized that Flutter must be the top pick for them as well as the developers because it supports the new mobile OS versions.

                          The new version comes packed with iOS 14, Android 11, new i18, and l10n support. While these were the OS supports, there is much more it has to offer which includes Google Maps, WebView Plugins, a new app size tool, etc.

                          While the race to choose the best framework will continue to exist, here we will see how the Flutter 1.22 launch will be a boon for the businesses out there?
                          Read more →
                        • Passcode Data Protection by Using FPGA and Verilog

                            There are many situations when you need to protect your data, and different tools can be used to do that. For example, a safe. We develop a passcode data protection mechanism by using an FPGA board and Quartus Prime software. It allows demonstrating the basic concepts of a combination lock such as entering data, setting and checking a passcode, and displaying data.

                            Read more