• Sberbank Online iOS testing

    • Tutorial
    Theory of testing is usually differs from practice. Today we want to talk about our practical experience in testing application's code which is used by millions of iOS users and about the difficult path that our team finished in order to achieve stable code.

    Let’s imagine: the developers successfully convinced themselves and the business of the need to cover the code with tests. Over time, in the project were created more than a dozen thousand unit- and more than a thousand UI-tests. Such a large test base araised several problems, and we successfully found the solution for them.
    Read more →
  • The Project «Fabula»: How to find the desired video-fragment or person in a pile of video files?

      If a person is far over 20, then he has already accumulated a huge film library of his life, as well as videos from friends, relatives, and from his place of work… It is no longer possible to find someone or something specific there. Recently, I was preparing a video compilation for my daughter's anniversary – I spent a week. The media is all the more overloaded with video archives. And every day, millions of terabytes of video content appear in the world. And this is in the era of BIG DATA.

      Read more →
    • Under the Hood of PVS-Studio for Java: How We Develop Diagnostics

        To keep it interesting, this time I'd like to tell about our approach to developing and polishing diagnostic rules for PVS-Studio Java. You will learn how we keep existing warnings consistent across releases and why the new ones aren't too weird. I'll also share a bit of inside information on what plans we, the Java team, have for the future, and show you a few interesting (and a few plain) bugs we found using the diagnostics from the upcoming release.
        Read more →
      • Static Analysis: baseline VS diff

        • Translation
        If you use static analyzers, you will have, sooner or later, to address the task of making their integration into existing projects easier, where fixing all warnings on legacy code is unfeasible.

        The purpose of this article is not to help with integration but rather to elaborate on the technicalities of the process: the exact implementations of warning suppression mechanisms and pros and cons of each approach.


        Read more →
      • Spring transaction management. Isolation and propagation


          In my opinion transaction management is a really important topic for each backend developer. In general, people don’t pay attention to it while using Spring framework.

          But I think, it is important to know how to use transactions properly. Because sometimes can happen that there was an exception thrown inside your method, but transaction was not rolled back and it is not clear why? Or some other “strange” cases.

          Read more →
        • Lossless ElasticSearch data migration

          • Translation

          Academic data warehouse design recommends keeping everything in a normalized form, with links between. Then the roll forward of changes in relational math will provide a reliable repository with transaction support. Atomicity, Consistency, Isolation, Durability — that's all. In other words, the storage is explicitly built to safely update the data. But it is not optimal for searching, especially with a broad gesture on the tables and fields. We need indices, a lot of indices! Volumes expand, recording slows down. SQL LIKE can not be indexed, and JOIN GROUP BY sends us to meditate in the query planner.

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

        • Boot Ubuntu via http/ftp server with pxe(diskless boot)

          • Tutorial


          PXE is a great solution for booting a diskless computer (or a computer without an OS installed). This method is often used for terminal stations and OS mass installation.

          Stock ubuntu (16.04) in pxe-mode can mount rootfs only from NFS. But this is not a great idea: any difficulties with the network/NFS server and the user gets problems.

          In my opinion, it's best to use other protocols, such as http/ftp. Once booting, you will have an independent system

          Read more →
        • EVVIS-QR1 USB Programmable TOTP hardware token

            imageToday, we are presenting a new type of TOTP hardware tokens — USB Programmable token that displays the OTP value as a QR code and also can send the current OTP value over USB as a part of its HID emulation feature.

            What is EVVIS-QR1?

            EVVIS-QR1 is a hardware device developed primarily for Electronic visit verification (EVV) information systems (hence the name). It is a standards-based TOTP hardware token that can also be programmed over USB. The OTP generated is shown on the display both as regular digits as well as a QR image. Both features (OTP shown as QR code and HID keyboard emulation) are intended to make it possible to minimize typos when entering the OTP.
            Read more →
          • How to Build a Video Conference App: Top 10 Popular Video Conferencing API's/SDK for Enterprise Business

              As the world rearranges into virtualized societal norms, the most convenient and simplified interaction for businesses or socially has come from video-based apps. Extensive use of these conferencing apps is trending Post COVID-19 pandemic. Statista.com has tracked the high number of video conference app downloads from AppStore and GoogleStore for the following:
              Video conferencing App / Country Hangouts Meet Houseparty Ms Teams Zoom
              USA 30 8 11 4
              France 23 30 16 2
              Germany 15 26 11 17
              Spain 64 2360 15 27
              Italy 140 423 30 55

              The convenience of these apps is defined by their rich-features: video calling, ability to share screens, and interact in real-time.
              Read more →
            • The Testcontainers’ MongoDB Module and Spring Data MongoDB Reactive in Action

              1. Introduction

              How can I easily test my MongoDB multi-document transaction code without setting up MongoDB on my device? One might argue that they have to set it up first because in order to carry out such a transaction it needs a session which requires a replica set. Thankfully, there is no need to create a 3-node replica set and we can run these transactions only against a single database instance.

              Read more →
            • C2x: the future C standard


                I strain to make the far-off echo yield
                A cue to the events that may come in my day.
                (‘Doctor Zhivago’, Boris Pasternak)

                I’ll be honest: I don’t write in pure C that often anymore and I haven’t been following the language’s development for a long time. However, two unexpected things happened recently: С won back the title of the most popular programming language according to TIOBE, and the first truly interesting book in years on this language was published. So, I decided to spend a few evenings studying material on C2x, the future version of C.

                Here I will share with you what I consider to be its most interesting new features.

                Read more →
              • Modern COBOL: Microservice Tutorial

                • Tutorial

                You will learn and implement a microservice in COBOL without Mainframe. You will structure the project, manage dependencies, implement automatic tests and build virtualized execution environment. Finally, you will publish the microservice on GitHub under Continuous Integration workflow.

                Read more →
              • PVS-Studio: analyzing pull requests in Azure DevOps using self-hosted agents

                  Static code analysis is most effective when changing a project, as errors are always more difficult to fix in the future than at an early stage. We continue expanding the options for using PVS-Studio in continuous development systems. This time, we'll show you how to configure pull request analysis using self-hosted agents in Microsoft Azure DevOps, using the example of the Minetest game.
                  Read more →
                • Top 10 Kotlin App Development Companies 2020-21


                    Kotlin is a JVM compatible & Java interoperable language that is the most-encouraged language by Google for developing Android apps & production-grade systems. According to Snyk, over the last few years, Kotlin has gained a huge user and developer base for robust, and secure app development.

                    The user-base has been shifted from 2.4% to 5.4%, that is a growth of 130% in the user population. This population growth and increment in its usage has made it the second most popular JVM language, that is quite surprising.

                    The reason for Kotlin application development is its 100% interoperability with Java. Around 7.78% of the world developers use Kotlin as their primary coding language. According to insights.dice- Kotlin is used 96% for new projects and 36% for migrating applications from Java to Kotlin. You can use it directly with Java code to make it more efficient, and it works concurrently or without any issue.


                    Many benchmark android applications of startups to moonshots have been built using Kotlin. Various startups and brands like EverNote, Twitter, Netflix, Slack, American Express, Airbnb, Adobe, and many others from different industry verticals opted for Kotlin app development.
                    Read more →
                  • IntelliJ IDEA: Structural Search and Replace

                    • Translation
                    • Tutorial

                    Modern IDEs are very powerful tools that can help developers in all kinds of situations. Unfortunately, much of this power is often lost because many functions remain unknown to developers, hiding in the shadows.

                    Simple example of the one of the such functions

                    Did you know that when you press F2 in IntelliJ IDEA, the cursor will jump to the nearest error in the file? And in the absence of an error – to the nearest warning? It seems that this is a secret only a few people know about.

                    Structural search and replace is one such pair of features. They can be extremely useful in situations where a whole variety of other functions can’t quite get the job done.

                    In this post, I will present some of these situations and go beyond artificial cases by demonstrating examples of real code from two projects:

                    1. 3D-engine for game development, jMonkeyEngine, which is an example of a big, interesting project.
                    2. My own pet project, plantuml-native-image, where I experiment with compiling PlantUML into native executable code using GraalVM Native Image.

                    In fact, it is this second project that encouraged me to write this post but I’m getting ahead of myself. First things first...

                    Read more →
                  • Small things that pollute your code

                      I'm not going to discuss global things like design patterns and so on, as there's enough literature on that topic. Instead, I'd like to attract your attention to some small things that still affect lucidity and maintainability of a code.

                      Polluting code with 'test-only' methods or access modifiers

                      First of all, if you give access to something that shouldn't be used in production code, it gets used sooner or later. Just because it exist. The argument that it's an internal stuff doesn't work as it absolutely shouldn't be matter, writing you a library or isolated project! Treat people who will add anything to your internal codebase the same way as if they use your existing code as a different library.

                      Thus, if for some reason in test, you need to call something that should not be called on prod — use reflection or whatever else but do not expose it in production code! And there's no reason to afraid of reflection for test proposes, at the end, you using Mockito, shouldn't it be bad in that case as well?
                      Read more →
                    • Hire PHP Developers: Cost & Procedure


                        PHP has surely become the most ubiquitous language for the world today. Being around for a while, PHP is ruling the market, with expectations to dominate for years to come. Therefore, irrespective of the size of a business, PHP remains the first choice to get a sturdy and customizable website created.

                        However, It is important to understand that PHP is an art (Scripting language), you need to hire an artist (developer) to yield the best from it.

                        Choosing the best from the pool of more than 5 million PHP developers is a tedious task. Even more when you’re a noob into this industry. Apart from language skills, there are multiple other factors, such as budget, skills, experience that influence the decision to hire a particular remote PHP team.
                        Read more →