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.
In this article, I'll talk about the components that make up applications for Android, and about the ideas behind this architecture.
How Android works, part 1
How Android works, Part 3
On this Wednesday, August 30, at the office of Oracle, meeting JUG with Oleg Shelaev, Developer Advocate in the company ZeroTurnaround, which makes JRebel and XRebel. The topic of the meeting is the tools for creating multi-threaded Java programs (from designing bikes and starting threads to handles, to ForkJoinPools, green threads and transactional memory).
Of course, we asked which Java 9 chips are considered the most useful in ZeroTurnaround. As a result, they got hold of the article that you are reading right now. The original article Oleg published in the blog RebelLabs , there are many more interesting.
Performing daily tasks of the system administrator is considered safe when working through the SSH session. This article will discuss modern tools for conducting MITM attacks on the SSH protocol and how to protect against them.