In this article I want to tell you about the experience of developing one unpretentious game for Android, which has repeatedly paid off at the development stage!
PrehistoryWe started developing the game in the 10th grade. Before that, we had no experience in developing and promoting mobile games. There were only basic knowledge of Java and a little experience of creating websites. And that's all!
Due to the fact that a relatively large (and very loud) part of IT lives in the next bubble of dotcoms (now startups), some representatives of this tribe, and especially all Evangelists and even HR, have the illusion of the following property.
A pier, any device, a framework or a way of operation sharply raises success of the enterprise. For example, "we all use the MacBook, and we already have a third round of investment." Or "we decided to open a travel agency, and hire only those programmers who do not get out of travel; we want all employees to share our values, and we already have a turnover of $ 100 million. " Or "as soon as we implemented React + Vue + Angular, our business went uphill, and we bought Google." And so on.
At first glance it seems absurd? - Yes, but we admit: Hype and hubbub are indisputable accompanying elements of the modern IT-world. Any phenomenon that is on the edge of public attention, and IT, of course, from such, can not absorb the characteristic features of the society of its time. In particular, the tendency to prevalence of form over content.
I wrote a library for finding paths on arbitrary graphs, and I would like to share it with you .
An example of use on a huge graph:
To play around with the demo, you can here
The library uses a little-known version of the A * search, which is called NBA * . This is a bidirectional search, with relaxed requirements for the heuristic function, and a very aggressive termination criterion. Despite its little-known algorithm, the algorithm has an excellent speed of convergence to the optimal solution.
The description of the various variants of A * has already been found on the hub several times. I really liked this is , so I will not repeat this article. Under the cut I will explain in more detail why the library works quickly and how the demo was done.
In this article, I'll talk about some of the ideas on which high-level parts of Android are built, about several of its predecessors and about the basic mechanisms of security.
I'm used to looking for problems in code or in the system, using logs or monitoring indicators, which are displayed on pretty control panels with a simple and intuitive interface. However, if for some reason the data does not arrive to the control panel, or the logs of some service are unavailable, debugging becomes more complicated. Now there are few such problems, they are rare, but they do happen. Therefore, in our time is very valuable knowledge of tools that help to understand what is wrong with a certain process on any computer.
Why the economic feasibility may lead to the collapse Bitcoin
The author of the article is Alexey Malanov, an expert of Kaspersky Lab's anti-virus technology development department
We will discuss what determines the profitability of mining bitkoy, what principles for adapting the speed of mining were laid in it initially, and why these principles can ultimately lead to the collapse of this crypto currency.
We assume that the reader has an idea of the basic mechanisms of Bitcoin operation, such as: blocking , mining , mining pools, reward for the block.
Warning. In this article, we explore the theoretical possibility of developing the described scenario, taking into account the algorithms put into Bitkoyn. We did not set ourselves the goal to analyze in detail the cost structure of the miners, electricity prices in various parts of the world, bank rates and the payback period of equipment.
Recently, the Avito PHP projects have moved to the version of PHP 7.1. On this occasion, we decided to recall how the transition to PHP 7.0 took place for us and our colleagues from OLX. It's a long time ago, but there are beautiful graphics that you want to show the world.
The first part of the story is based on the article PHP's not dead! PHP7 in practice , written by our colleague from OLX Łukasz Szymański (Lukasz Szymanski): the transition of OLX to PHP 7. In the second part - the Avito transition experience in PHP 7.0 and PHP 7.1: the process, the difficulties, the results with the graphs.
The speed of the game is the responsibility of all team members, regardless of the position. We, 3D programmers, have ample opportunities to control the performance of the video processor: we can optimize the shaders, sacrifice picture quality for speed, use more cunning rendering techniques ... However, there is an aspect that we can not fully control, and this is the graphics resources of the game.
We hope that artists will create resources that not only look good, but also will be effective in rendering. If the artists learn a little more about what is happening inside the video processor, this can have a big impact on the frame rate of the game. If you are an artist and want to understand why aspects such as draw calls, LODs and MIP textures are important for performance, then read this article. To take into account the impact that your graphics resources have on game performance, you need to know how the polygon meshes get from the 3D editor to the game screen. This means that you need to understand the operation of the video processor, the chip that controls the graphics card and is responsible for the 3D real-time rendering. Armed with this knowledge, we will look at the most frequent performance problems, understand why they are a problem, and explain how to deal with them.
Many people represent functional programming as something very complex and "science-intensive", and representatives of the OP-community - aesthetic philosophers living in an ivory tower.
Until recently, such a view of things really was not far from the truth: we say FP, we mean Haskel and the theory of categories. Recently, the situation has changed and the functional paradigm is gaining momentum in web development, not without the help of F #, Scala and React. Let's take a look at the "patterns" of functional programming that are useful for solving everyday problems from the point of view of the OOP paradigm.
OOP is widely spread in the development of applied software for more than a decade. We are all familiar with SOLID and GOF. What will be their functional equivalent? .. Functions! Functional programming is simply "different" and offers other solutions.