• Looking back at 3 months of the global traffic shapeshifting

      There would be no TL;DR in this article, sorry.

      Those have been three months that genuinely changed the world. An entire lifeline passed from February, 1, when the coronavirus pandemics just started to spread outside of China and European countries were about to react, to April, 30, when nations were locked down in quarantine measures almost all over the entire world. We want to take a look at the repercussions, cyclic nature of the reaction and, of course, provide DDoS attacks and BGP incidents overview on a timeframe of three months.

      In general, there seems to be an objective pattern in almost every country’s shift into the quarantine lockdown.
      Read more →
    • Cataract: it is waiting for you personally (if you live, of course)

      • Translation

      This is a model of an intraocular multifocal lens from Carl Zeiss. The real size of such a lens is 11 millimeters, the diameter of the optical zone is 6 mm.

      The cataract is, simplifying, age opacification and consolidation of a crystalline lens. According to the classical definition, we are talking about the turbidity of any type. First, something gets in the field of view, a general “fog” appears, you want to wipe dirty glasses, then you do not see the letters in the book, then you want to turn on the light brighter or, on the contrary, you hide from the bright light, and then wake up one fine morning and understand that you can not find slippers. And you see nothing at all — only the shadows. This process sometimes stretches for many years, but slippers are still lost. Mention of clouding that develops in the eyeball, there are still thousands of years before our era.

      The treatment procedure has historically been very peculiar — reclination of a cloudy lens. The doctor took the patient with a very dense lens — to that dense stage that the patient is already blind. During the excavations of the settlements of ancient Greece and Rome, the tools used by doctors to remove cataracts were found — sharp needles that pierced the eye and lens, destroying its supporting apparatus. The lens could come off and, by virtue of its gravity, could also fall down from hitting the back of the head with a heavy stick several times. Sometimes the patient died during the emergency eye care, sometimes he had a concussion, and sometimes the lens fell off the ligaments and flew deep into the eye. The patient began to see again — he had a huge lump and vision of about +10 +15 diopters.

      Now two news. The bad — people began to live to cataracts more often, and it is inevitable. Good — we have something better than sharp needles and a heavy stick.
      Read more →
    • PVS-Studio 7.07: Features Overview

        Picture 30

        The purpose of this article is to give a general overview of the features of the PVS-Studio static analyzer. The simplest and most informative way to do this is to show the tool in action. We'll be sharing examples demonstrating the analysis process using the Visual Studio plugin, the algorithm of running the analyzer under Linux, and analysis log import into SonarQube.
        Read more →
      • The QC House of Cards

          There’s Gold in Them Thar Hills

          Gold rushes can make people crazy. 1848 was enough of an indicator of that. When Sam Brannan announced to the world: ‘Gold! Gold! Gold from the American River!’, half the world’s population (or so it seemed to the tiny California population which lived there at the time) descended on the soon to be the newest state of the union.

          San Francisco, before a small hamlet with a few hundred pioneers living there, became a centre of vice, murder and debauchery overnight.


          Two hundred years before tulip mania hit Europe, and like in California with its argonauts or 49ers, it impoverished more than it made rich. In the early 2000s, too, the Dot.Com bubble created a speculative tendency in people when irrationality took over all reason.
          Read more →
        • From four to thirty two. Early years of computers and networks in Russia

            Part I: From four to eight

            I like to read the memoirs of people who observed the computers taking first steps in their countries. They always have something romantic about them. Usually, such memories are greatly influenced by the circumstances of that encounter with his first computer: it could be the workplace, or education establishment, it could be just an unexpected and random thing.

            Like many of my friends, I was lucky to see the end of that special romantic period, when computer makers were not trying to please the regular users. They were creating the devices with distinctive and unique features they thought were right for some of reasons. This approach is clear to see in both software and hardware. Such features were making the device to sell in millions or be a commercial failure.

            It all started differently for different people. Some of them were working with buzzing massive computers that could fill an entire room, the others had desktop-style home computers. There were people, who made their first computer themselves using specialist magazine publications. Different types of computers created the variety of specific traditions, interests and subcultures.
            Read more →
          • Locks in PostgreSQL: 1. Relation-level locks

            • Translation
            The previous two series of articles covered isolation and multiversion concurrency control and logging.

            In this series, we will discuss locks.

            This series will consist of four articles:

            1. Relation-level locks (this article).
            2. Row-level locks.
            3. Locks on other objects and predicate locks.
            4. Locks in RAM.

            The material of all the articles is based on training courses on administration that Pavel pluzanov and I are creating (mostly in Russian, although one course is available in English), but does not repeat them verbatim and is intended for careful reading and self-experimenting.

            Many thanks to Elena Indrupskaya for the translation of these articles into English.

            General information on locks

            PostgreSQL has a wide variety of techniques that serve to lock something (or are at least called so). Therefore, I will first explain in the most general terms why locks are needed at all, what kinds of them are available and how they differ from one another. Then we will figure out what of this variety is used in PostgreSQL and only after that we will start discussing different kinds of locks in detail.
            Read more →
          • AdBlock has stolen the banner, but banners are not teeth — they will be back

          • External Interrupts in the x86 system. Part 3. Interrupt routing setup in a chipset, with the example of coreboot

            • Tutorial

            We continue to investigate external device interrupt routing setup in the x86 system.

            In Part 1 (Interrupt controller evolution) we looked at the theory behind interrupt controllers and all the necessary terminology. In Part 2 (Linux kernel boot options) we looked at how in practice the OS chooses between different interrupt controllers. In this part we will investigate how the BIOS sets IRQ to the interrupt controllers routing in a chipset.

            None of the modern BIOS developer companies (AwardBIOS/AMIBIOS/Insyde) open their source code. But luсkily there is coreboot — a project aimed at replacing proprietary BIOS with free firmware code. In its source code we'll see what is needed to setup the interrupt routing in a chipset.

            Read more →
          • Annotations for Concurrency in Java. Our approach to coloring threads

              At Miro, we always try to improve the maintainability of our code by using common practices, including in matters of multithreading. This does not solve all the issues that arise because of the ever-increasing load, but it simplifies the support: it increases both the code readability and the speed of developing new features.

              Today (May 2020) we have about 100 servers in the production environment, 6,000 HTTP API requests per second and more than 50,000 WebSocket API commands, and daily releases. Miro has been developing since 2011; in the current implementation, user requests are handled in parallel by a cluster of different servers.

              Read more →
            • IT specialist's vision: what you personally need to know

              • Translation

              — Which is better: glasses, lenses or laser vision correction?
              It is best to see without any means of correction. If you are completely satisfied with the glasses — keep calm, no other correction is needed. Lenses — this method of correction requires adherence to clear rules of use, which is ultimately more costly and risky, but it is very popular because the main dangers do not appear immediately after the start of wearing, but years later.

              — I decided to stay on the glasses, but I am afraid that the car's pillow will open in my face and they will become contact lenses. What to do?
              In my surgical experience, modern airbags do not injure eyeglasses. Eyes and face are usually damaged by windshield fragments. If you are concerned about the safety of glasses, then think about the modern, with polycarbonate lenses, they are incredibly durable, the car drives on crash tests.

              — Is it true that all eye disease from the computer?
              No, it's not true. The main cause of problems with optics — myopia, hyperopia or astigmatism — is genetics. Adverse environmental conditions, especially during long-term work at close range, are important in childhood, when the development of the organism is not yet complete. And such diseases as cataract, glaucoma, retinal detachment and other diseases occur with the same frequency in those who work at the computer for hours and in those who do not know where the computer has a power button.
              Read more →
            • New lunar landers to be created with the help of additive manufacturing


                The USA's National Aeronautics and Space Administration (NASA) has chosen three private companies to participate in the development of landing modules for the new Artemis lunar program. Among them are two enterprises that widely use 3D printing technologies in the production of rocket engines — Jeff Bezos' Blue Origin and Elon Musk's SpaceX. NASA seems to approach the matter carefully and generously, financing the development of lunar manned vehicles in three competing directions at once.
                Read more →
              • UX Tips for Designing an Online Digital Product Store

                  The future of business is digital. E-commerce business is gaining popularity with more and more people getting comfortable buying things online. While there are many factors that define the success of an E-commerce business, a major factor is E-Commerce UX, which refers to the overall experience of a user while shopping through an E-commerce platform. For the user experience to be enjoyable, it has to be personalized, relevant, and seamless. Hence there is a need to understand the target audience- their age, culture, level of tech literacy, channels they use, and their trust to online shopping. E-commerce UX should be data-driven, customer-driven, and user-centered. It should be built on research and validation. The main factors that influence the success of an E-commerce business are the quality of the product or service offered, how it is presented to the customer and how approachable is the design of the electronic platform through which sales are being done.
                  Read More
                • External Interrupts in the x86 system. Part 2. Linux kernel boot options

                  • Tutorial

                  In the last part we discussed evolution of the interrupt delivery process from the devices in the x86 system (PIC → APIC → MSI), general theory, and all the necessary terminology.

                  In this practical part we will look at how to roll back to the use of obsolete methods of interrupt delivery in Linux, and in particular we will look at Linux kernel boot options:

                  • pci=nomsi
                  • noapic
                  • nolapic

                  Also we will look at the order in which the OS looks for interrupt routing tables (ACPI/MPtable/$PIR) and what the impact is from the following boot options:

                  • pci=noacpi
                  • acpi=noirq
                  • acpi=off

                  You've probably used some combination of these options when one of the devices in your system hasn't worked correctly because of an interrupt problem. We'll go through these options and find out what they do and how they change the kernel '/proc/interrupts' interface output.

                  Read more →
                • The Anatomy of LuaJIT Tables and What’s Special About Them

                    I don't know about you, but I really like to get inside all sorts of systems. In this article, I’m going to tell you about the internals of Lua tables and special considerations for their use. Lua is my primary professional programming language, and if one wants to write good code, one needs at least to peek behind the curtain. If you are curious, follow me.

                    Read more →
                  • Ruby on Rails' Big Place in Marketplace Development

                      How do you know that it’s time for you to launch your online marketplace? When do you see the necessity to provide the ultimate clear and fast “brand – consumer” communications? The point of an online marketplace is to grow customers loyalty by offering them an ever-expanding range of products.

                      A brand, whether online or not, must use its reputation and expertise to make its marketplace successful.

                      Let's take a look at the benefits of marketplaces and the reliability of Ruby on Rails as the strongest development tool.

                      Read more →
                    • «Augmentation» eyes: what do we build into it today, and what else will remain under it

                      • Translation

                      In surgery, the term «augmentation» is used for a specific type of intervention, for example, hardening (building) the skeleton of an organ. We will talk about the empowerment of biological vision at the expense of implants.

                      You can not just take out a piece of tissue from the eye, as during laser correction, but also insert something new there. For example, an implant that allows you to see at night. Or DVR. Or — what is being done now — just an internal contact lens made from a biocompatible polymer.

                      Therefore, when you read about new opportunities for contact lenses, remember — all this can be built into a person. Of the most promising technologies — transfer images from your eyes to a computer and vice versa. If you are lucky, in 10 years you will be able to search for a given word in a paper book, as you are now looking for on a web page.

                      But let's still go back to the real world and talk about phakic lisch, corrective vision for those who can not help the laser.
                      Read more →
                    • Diamond inheritance problem is not a problem, that's a tricky feature


                      Before discussing the topic I’d like to start with a general suggestion not to use multiple inheritance and especially diamond unless you are strongly forced to. You may use e.g. composition or aggregation instead.

                      Well, “Diamond inheritance problem” is some kind of steady expression which formed many years ago. You can easily find a lot of articles suggesting usage of “virtual public” to avoid the ambiguity and so on. For instance, https://en.wikipedia.org/wiki/Multiple_inheritance


                       That is not wrong as for the problem stated but anyway it is quite one-side statement.
                       Below you can find:

                      • difference in memory allocation and initialization order between public and public virtual inheritance (examples 1, 2),
                      • examples of practical usage of both public and public virtual inheritance (examples 3, 4).
                      Read more →
                    • Guide for entrepreneurs to launch an on-demand grocery delivery app amid the coronavirus pandemic

                        After the onset of the coronavirus pandemic, Instacart, a popular online grocery platform, hired 300,000 workers to meet the demands of the people. In addition, they are planning to hire 250,000 more. Such is the demand for online grocery platforms nowadays. People are in self-isolation with restricted outdoor movements. The fear of contracting the disease is so high that people are looking for alternative ways even to access essential services. As a result, smartphone applications are gaining increased attention from people all over the world.
                        Read more →
                      • Approach to calculating individual risk in COVID-19

                          In February 2020, when the disease came to Europe, it became apparent to me that our timid hopes that the epidemics would subside and be finally buried in the China's soil were ruined. It was already evident from the Chinese statistics that the virus is lethal enough to scare and mild enough to pass unnoticed in many cases and, thus, to guarantee its effective dissemination. The question was when it reaches each next country.

                          Another question was the individual risks, especially the risk of lethal outcome if one contracts the virus. The average figure of around 5% was circulated by late January and early February. It was known that males were more susceptible to fatal outcomes. By February, it was also evident that the virus doesn't lead to death only in the elderly — the middle age was significantly affected, as well.

                          Read more →