• PVS-Studio 7.12 New Features for Finding Safety and Security Threats

      Security. What does this word mean to you? Nowadays, companies spare no effort to ensure that their product is secured from hacking and all sorts of information leaks. PVS-Studio decided to help its users and expand the functionality in this area. Therefore, one of the main innovations of the upcoming release will be the introduction of analyzer new features which will ensure code safety and security. This article aims to present these features.

      Read More
    • Have we ever been working by the Waterfall?

        We work using Agile: Scrum, or Kanban, or any other extended project management way. Agile appeared in 2001 as a result of a long discussion between really smart guys. They just formed best practices of management into the shape of short documents - the Agile Manifesto. But what did they want to replace by the Agile way? Most of you may say that they wanted the Waterfall to go to the past. But what would you think if I tell you that the “classical” Waterfall had been a really rare thing even for those days?

        Read more
      • A little life hack when you work with Azure Service Bus and ASP.NET Core

        • Tutorial

        Some of the features of your website require message queue integration. It is not a complex task for most developers. If you work with Azure infrastructure, you are able to choose Azure Service Bus as a queue engine. It sounds quite simple: just create Azure Resource, write some code and then be happy! But what would you say if the resources are limited? What will you do if there are several teammates in your team, and all of you have to debug queues at the same time? I try to give you a simple solution.

        Read more
      • Algorithms in Go

        • Tutorial

        Most solutions to algorithmic problems can be grouped into a rather small number of patterns. When we start to solve some problem, we need to think about how we would classify them. For example, can we apply fast and slow аlgorithmic pattern or do we need to use cyclic sortpattern? Some of the problems have several solutions based on different patterns. In this series, we discuss the most popular algorithmic patterns that cover more than 90% of the usual problems.

        It is different from High-School Algorithms 101 Course, as it is not intended to cover things like Karatsuba algorithm (fast multiplication algorithm) or prove different methods of sorting. Instead, Algorithmic Patterns focused on practical skills needed for the solution of common problems. For example, when we set up a Prometheus alert for high request latency we are dealing with Sliding Window Pattern. Or let say, we organize a team event and need to find an available time slot for every participant. At the first glance, it is not obvious that in this case, we are actually solving an algorithmic problem. Actually, during our day we usually solve a bunch of algorithmic problems without realizing that we dealing with algorithms.

        The knowledge about Algorithmic Patterns helps one to classify a problem and then apply the appropriate method.

        But probably most importantly learning algorithmic patterns boost general programming skills. It is especially helpful when you are debugging some production code, as it trains you to understand the execution flow.

        Patterns covered so far:

        Sliding Window I

        Sliding Window II

        Merge Intervals

        Dutch National Flag

        Matrix Spiral

        Iterative Postorder Traversal

        Bit Manipulation

        Stay tuned :)

        <Promo> If you interested to work as a backend engineer, there is an open position in my squad. Prior knowledge of Golang is not required. I am NOT an HR and DO NOT represent the company in any capacity. However, I can share my personal experience as a backend engineer working in the company. </Promo>

        Read more
      • Algorithms in Go: Iterative Postorder Traversal

        • Tutorial

        In this article, we discuss the postorder traversal of a binary tree. What does postorder traversal mean? It means that at first, we process the left subtree of the node, then the right subtree of the node, and only after that we process the node itself.

        Why would we need to do it in this order? This approach solves an entire class of algorithmic problems related to the binary trees. For example, to find the longest path between two nodes we need to traverse the tree in a postorder manner. In general, postorder traversal is needed when we cannot process the node without processing its children first. In this manner, for example, we can calculate the height of the tree. To know the height of a node, we need to calculate the height of its children and increment it by one.

        Let's start with a recursive approach. We need to process the left child, then the right child and finally we can process the node itself. For simplicity, let's just save the values into slice out.

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

      • Short-lived Music or MuseScore Code Analysis

          Having only programming background, it is impossible to develop software in some areas. Take the difficulties of medical software development as an example. The same is with music software, which will be discussed in this article. Here you need an advice of subject matter experts. However, it's more expensive for software development. That is why developers sometimes save on code quality. The example of the MuseScore project check, described in the article, will show the importance of code quality expertise. Hopefully, programming and musical humor will brighten up the technical text.

          Читать далее
        • What Is yield and How Does It Work in C#?

            C# capabilities keep expanding from year to year. New features enrich software development. However, their advantages may not always be so obvious. For example, the good old yield. To some developers, especially beginners, it's like magic - inexplicable, but intriguing. This article shows how yield works and what this peculiar word hides. Have fun reading!

            Read more
          • PVS-Studio, Blender: Series of Notes on Advantages of Regular Static Analysis of Code

              PVS-Studio and Blender

              In our articles, we regularly repeat an important idea: a static analyzer should be used regularly. This helps detect and cheaply fix many errors at the earliest stage. It looks nice in theory. As we know, actions still speak louder than words. Let's look at some recent bugs in new code of the Blender project.

              Read more →
            • PVS-Studio Clashes with Hardcoded Passwords

                PVS-Studio is a static analyzer that allows to find many problems hidden in the source code. Among them there are also errors related to application security. For example, the analyzer has recently learned to identify the presence of confidential data such as passwords in the code. The OWASP Top Ten list includes this potential vulnerability. It is much more dangerous than it may seem at first glance. What makes it so dangerous? How can a static analyzer save us from it? That's what you'll know about (and more) in this article!

                Read more
              • Startups going global: a guide to Startup Digest

                  Techstars Startup Digest was designed as a discovery tool for entrepreneurs looking for tech events in their area. It was founded in 2009 by Chris McCann who just moved to the Valley. He created an old-school newsletter, featuring promising events in the Bay Area. There was no website, all the events were hand-picked by Chris himself, and the newsletter had 22 subscribers. People liked the idea and that number quickly grew. In 2012 it was acquired by Startup Weekend. Three years later, Startup Weekend’s parent company UP Global was acquired by Techstars — and that’s how the project got its name.

                  Startup Digest can be a useful tool for startups and event coordinators. If you can successfully leverage it, your event, blog post and/or tech product can reach thousands of people at no cost.

                  Continue Reading
                • Intercepting Program Startup on Windows and Trying to Not Mess Things Up

                    Have you ever heard of Image File Execution Options (IFEO)? It is a registry key under HKEY_LOCAL_MACHINE that controls things like Global Flags and Mitigation Policies on a per-process basis. One of its features that drew my attention is a mechanism designed to help developers debug multi-process applications. Imagine a scenario where some program creates a child process that crashes immediately. In case you cannot launch this child manually (that can happen for various reasons), you might have a hard time troubleshooting this problem. With IFEO, however, you can instruct the system to launch your favorite debugger right when it's about to start this troublesome process. Then you can single-step through the code and figure what goes wrong. Sounds incredibly useful, right?

                    I don't know about you, but I immediately saw this feature as a mechanism for executing arbitrary code when someone creates a new process. Even more importantly, it happens synchronously, i.e., the target won't start unless we allow it. Internally, the system swaps the path to the image file with the debugger's location, passing the former as a parameter. Therefore, it becomes the debugger's responsibility to start the application and then attach itself to it.

                    So, are there any limitations on what we can do if we register ourselves as a debugger? Let's push this opportunity to the limits and see what we can achieve.

                    Read more
                  • HDB++ TANGO Archiving System

                    • Translation
                    • Tutorial

                    What is HDB++?

                    This is a TANGO archiving system, allows you to save data received from devices in the TANGO system.

                    Working with Linux will be described here (TangoBox 9.3 on base Ubuntu 18.04), this is a ready-made system where everything is configured.

                    What is the article about?

                    • System architecture.
                    • How to set up archiving.

                    It took me ~ 2 weeks to understand the architecture and write my own scripts for python for this case.

                    What is it for?

                    Allows you to store the history of the readings of your equipment.

                    • You don't need to think about how to store data in the database.
                    • You just need to specify which attributes to archive from which equipment.
                    Read more →
                  • Run MongoDB Atlas locally for testing

                      What happens to your MongoDB replica set when it comes to failures like network partitioning, restarting, reconfiguration of the existing topology, etc.? This question is especially important these days because of the popularity gained by the multi-cloud model where chances of these scenarios are quite realistic.

                      However, is there a solution, preferably a free one, for testing such cases that would obviate the need of writing manual scripts and poring over the official documentation? As software developers, we would be better off preparing our applications in advance to survive these failures.

                      Read more →