• Organizing Content on Our Blog with Tags

      As you know, we regularly post new content on programming and various interesting events from our company's life on our blog. The range of topics is expanding, and the number of articles is growing, so at some point, we started to attach tags to our posts so that you could quickly find content on topics you're interested in. Just click the appropriate tag and – presto! – a sorted list of related articles appears.

      Read more
    • Upsetting Opinions about Static Analyzers

        Static analysis tools have advanced far over the time they've been around. They no longer resemble the "linters" that were in active use 20 years ago. But some programmers still view them as extremely primitive tools. And that's very sad. It hurts to see the static analysis methodology in general and our PVS-Studio analyzer in particular treated that way.

        Read more →
      • Fatal Fight: How we've got 5 million organic installs?

          Fatal Fight Android game

          The story of Fatal Fight started in 2015. The time when going global and having 5 million downloads on Google Play Store seemed to be a dream of every game developer.

          In this article, I will talk about the way we converted the dream into our actual reality. To make it super understandable, find a guide below where I will cover all the stages of development of Fatal Fight and even more.


          Research


          The idea of Fatal Fight hasn't just come from nowhere. Before understanding what game to develop, we needed to research what are the current gaps in the mobile games market. And, to come to this point, we took several steps.

          First, we analyzed what are the most searchable mobile games in the Google Play Store. It turned out, the top 3 mobile games that users were looking for were the following:

          • Puzzle Games
          • Car Games
          • Fighting Games

          Here we narrowed down our research. We were playing most downloaded games from each category to figure out if those games meet users’ needs while trying to answer what kind of challenges they have with those games.

          As a result, Puzzle and Car Games had a wide range of mobile games with pretty nice UI/UX design and other characteristics. However, during the testing of the fighting games, the picture was quite different.

          We were surprised by the fact that we could not find any proper games with satisfactory features. And I believe, not only we but also the dozens of users who were craving for favorable experience while playing a fighting game.

          While asking ourselves the question “Why?” we found out that the main reason was the gameplay. The interaction between users and the games was complex. It was not comfortable to manage punching, kicking, jumping and other possible moves separately or even all at once on a smartphone.
          Read more →
        • Brainless Platform for a Robotic Vacuum Cleaner

            More on robotics.snowcron.com

            First of all, this is just an exercise, useful as is, but the result is going to be far from an industrial level robots. Why doing it then?

            For the same reasons we do all exercise: to get an experience. After all, when we write a character recognition «MNIST classifier» neural network, we know that the problem is solved long time ago. But we need to become familiar with tools and approaches. Same here.

            Now, why is it called «brainless»?
            Read more →
          • Database using ScriptableObjects with save/load system

            • Translation

            Introduction


            Each game has data that game-designers work with. In RPG there is a database of items, in match-3 — the cost in the crystals of tools from the store, in action — hit points, for which medical kit heals.


            There are many ways to store such data — someone stores it in tables, in XML or JSON files that edit with their own tools. Unity provides its own way — Scriptable Objects (SO), which I like because you don't have to write your own editor to visualize them, it's easy to make links to the game's assets and to each other, and with Addressables this data can be easily and conveniently stored off-game and updated separately.


            In this article I would like to talk about my SODatabase library, with which you can conveniently create, edit and use in the game (edit and serialize) scriptable objects.

            Read more →
          • Big Data Tools Update 11 Is Out

              EAP 11 of the Big Data Tools plugin for IntelliJ IDEA Ultimate, PyCharm, and DataGrip is available starting today. You can install it from the JetBrains Plugin Repository or inside your IDE.


              Big Data Tools is a new JetBrains plugin that allows you to connect to Hadoop and Spark clusters and monitor nodes, applications, and jobs. It also brings support for editing and running Zeppelin notebooks inside IntelliJ IDEA and DataGrip, so you can create, edit, and run Zeppelin notebooks without ever having to leave your favorite IDE. The plugin offers smart navigation, code completion, inspections, quick-fixes, and refactoring inside notebooks.


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

              More
              Ads
            • Agreements as Code: how to refactor IaC and save your sanity?


                Before we start, I'd like to get on the same page with you. So, could you please answer? How much time will it take to:


                • Create a new environment for testing?
                • Update java & OS in the docker image?
                • Grant access to servers?

                There is the spoiler from the TechLeadConf. Unfortunately, it's in Russian


                It will take longer than you expect. I will explain why.

                Read more →
              • Compensation for Error Caused by Limited Gain-Bandwidth of Operational Amplifiers in Low-pass Filters

                • Tutorial
                Amateur vs Pro

                An operational amplifier has the internal compensation circuit for stability which limits its working bandwidth. Frequency response of the compensated Op Amp has slope of −6 dB/octave or −20 dB/decade. Unity gain frequency defines the bandwidth where the Op Amp is able to amplify a signal. If we multiply the gain and frequency at any point, the result is the same, allowing us to use this parameter to select the appropriate Op Amp. It is called Gain-Bandwidth Product, GBW or GBP. The limited open-loop gain introduces a closed-loop gain and phase error.

                But we want to optimize our circuits, right?
                Read more →
              • How Is Flutter Helping Businesses In Getting Feature-Packed App At Affordable Prices

                • Tutorial
                image

                With 2.7 million apps available in Google Play Store and 1.84 Million apps in Apple’s app store, it is clear that mobile app development has become an urgent need of the hour for businesses of all domains.

                Did you know!



                According to developer stats, it is predicted that there will be 7 billion million users by 2021 all across the globe.

                image

                Read more →
              • ZTools for Apache Zeppelin



                  Zeppelin is a web-based notebook for data engineers that enables data-driven, interactive data analytics with Spark, Scala, and more.


                  The project recently reached version 0.9.0-preview2 and is being actively developed, but there are still many things to be implemented.


                  One such thing is an API for getting comprehensive information about what's going on inside the notebook. There is already an API that completely solves the problems of high-level notebook management, but it doesn’t help if you want to do anything more complex.

                  Read more →
                • Mysql 8.x Group Replication (Master-Slave) with Docker Compose

                    This post is handling the following situation - how to setup up simple Mysql services with group replication being dockerized. In our case, we’ll take the latest Mysql (version 8.x.x)

                    FYI: all mentioned code (worked and tested manually) located here.

                    I will skip not interested steps like ‘what is Mysql, Docker and why we choose them, etc’. We want to set up possibly trouble proof DB. That’s our plan.

                    Read more →
                  • Using Flex (Fast Lexical Analyzer Generator)

                      Lexical analysis is the first stage of a compilation process. It's used for getting a token sequence from source code. It gets an input character sequence and finds out what the token is in the start position, whether it's a language keyword, an identifier, a constant (also called a literal), or, maybe, some error. A lexical analyzer (also known as tokenizer) sends a stream of tokens further, into a parser, which builds an AST (abstract syntax tree).

                      It's possible to write a lexer from scratch, but much more convenient to use any lexer generator. If we define some parsing rules, corresponding to an input language syntax, we get a complete lexical analyzer (tokenizer), which can extract tokens from an input program text and pass them to a parser.

                      One of such generators is Flex. In this article, we'll examine how it works in general, and observe some nontrivial nuances of developing a lexer with Flex.
                      Read more →
                    • Checking WildFly, a JavaEE Application Server

                        image1.png

                        WildFly (formerly known as JBoss Application Server) is an open-source JavaEE application server developed and first released by JBoss in February, 2008. The primary goal of the project is to provide a set of tools usually required for enterprise Java applications. And since the server is used for developing enterprise applications, it is especially important to minimize the number of bugs and potential vulnerabilities in its code. Today, WildFly is being developed by the large company Red Hat, and they keep the code quality at a pretty high level. That said, our analyzer was still able to find a number of programming mistakes in the project.
                        Read more →
                      • JavaCC 21 Parser Generator

                        JavaCC 21 is a continuation of work on the venerable JavaCC parser generator, originally developed at Sun Microsystems in the 1990’s and released under a liberal open source license in 2003. It is currently the most advanced version of JavaCC. It has many feature enhancements (with more to come soon) and also generates much more modern, readable Java code. Also, certain key bugs have finally been fixed. (N.B. The “21” in JavaCC 21 is not a version number. It is simply part of the project name and means that this is a JavaCC for the 21st century!)

                        Read more →
                      • Aspect-Oriented Programming (AOP) by source-level weaving

                          image

                          Aspect-oriented programming is a very appealing concept for simplifying your codebase, creating clean code, improving modularity, structure of code and minimizing copy-paste errors.

                          Today, in most cases, weaving aspect's advices is implemented at the bytecode level, i.e. after compilation, a certain tool «weave» an additional byte code with the support of the required logic.

                          Our approach (as well as the approach of some other tools) is modifying the source code to implement aspect logic. With introduction of the .NET Compiler Platform (aka Roslyn), it is quite easy to achieve this goal, and the result gives certain advantages over the modification of the byte code itself.
                          Read more →
                        • Flutter: The Best Cross-Platform Framework For App Development with Top Flutter Companies

                            image

                            The obsession of being an entrepreneur is increasing these days, and with the rapidly evolving market, it has become daunting for all-level enterprises and businesses to have both websites and mobile applications to survive in this cut-throat competitive market. The days are left far behind when the businesses with only high revenue used to have space in Google’s Playstore and Apple’s App Store.

                            Research shows that there are 2.8 million apps available in the Google play store, and around 2.2 million apps exist in the Apple app store. This clearly reflects that mobile app development has become an urgent need for the business of all domains either they are of large or small size.
                            Read more →
                          • Top 10 eCommerce Platforms to Boost Business Productivity in 2021

                              An eCommerce platform empowers startups, SMEs, and large enterprises to manage multiple online business processes such as website, marketing, sales, and operations.

                              The top eCommerce platforms handle online business tasks efficiently, and this finally helps enterprises in expanding their productivity.

                              Read more