New Year's traditions are sacred. Olivier, champagne, tangerines, Christmas tree and summing up for the year. In 2017, we published 212 posts (and another 90 in our blog on Hiktimes), received more than 6,000 comments, and the number of views — more than 3.5 million! So we have collected for you the 30 best posts for this year, if you suddenly missed something, or if you want to reread something. And at the end there will be a bonus - some of our best posts from Hiktaims.
Recently, there have been quite a few articles in which the fresh garbage collector in Go is not the most successful way. Some of the articles were written by the developers of the language itself, and their statements hinted at a radical breakthrough in garbage collection technology. But they look like an unreliable marketing bulshit. And since they are replayed over and over again on the Web, the time has come to understand them in detail.
Git has strict backward-compatibility obligations: many advanced features are hidden behind a variety of options, and are not used as default behavior. Fortunately, Git also supports aliases, so you can create your own commands that do all the magic of Git. The article contains a selection of useful (or at least amusing) aliases.
This article is not an exhaustive hardcore iron guide. This is just an introduction, a reminder, a set of basic principles for writing effective code for the CPU. Here “ it is shown that low-level thinking is still useful today, ” even if we are talking about processors that can be added. The article discusses caching, vector programming, reading and understanding assembly code, as well as writing code that is convenient for the compiler.
This article contains all the necessary information about what microservices are, advantages and disadvantages, how to develop microservice architecture applications and what are their features.
What if you are developing a project in Visual Studio on Windows and want to try Tarantool? It is assumed that even with the transition to microservice architecture, most microservices will be written in C #. And Tarantool ... It is worth visiting the official website - and you immediately understand: it is even problematic to install Tarantool on Windows, since it is not ported to this operating system. The article describes how to overcome these difficulties and use Tarantool in their .NET projects.
As you understand, here it is told about writing one of the fastest hash tables. At least among all that the author found and analyzed.
This is a collection of thoughts and wishes to change Go. Rust is taken as a reference.
Design patterns are a way to solve recurring problems. More precisely, this is a guide to solving specific problems. These are not classes, packages or libraries that you can insert into your application and expect magic. The article contains examples in PHP 7, but don't be confused by the fact that the principles incorporated in the templates are unchanged. In addition, support for other languages ​​is being introduced.
This article discusses the results of several benchmarks, starting with PHP 5 and up to the experimental JIT branch (currently in development). At the time of this writing, it was not known whether there would be another major version before PHP 8, for example PHP 7.2. But it is logical to assume that the capabilities of the experimental branch will at least be included in PHP 8.
In childhood we comprehend the wisdom of life through the game. This is the most important element of personal development, social skills, obtaining knowledge about the world. Games are a good “container” for conveying and consolidating any knowledge. A vivid example is games in which you need to write code. Surely all you heard about them, and some even played. Their primary task is to entertain people who already have programming skills, but they can also be used for training. These games will help refresh your knowledge of a particular language, distract and take up a simpler algorithmic task.
In all textbooks it is written that one of the main problems of dynamic memory allocation is its unpredictability. As they say, I would have known a pack - would have lived in Sochi If the oracle had previously told the entire plan for which memory would be allocated and freed, then it would have been possible to make an optimal strategy that minimizes heap fragmentation, peak memory consumption, etc. From here, there was a fuss with manual allocators. The author has implemented the malloc()
and free()
logging tools and talks about using deep learning to predict work with the heap.
Mathematical models and algorithms today are responsible for making important decisions affecting our daily lives, moreover, they themselves control our world. Mathematics is at the heart of civilization. It is even more interesting to learn that since the very birth of this cornerstone it contains errors. Sometimes the mistakes of mathematics remain invisible for millennia; Sometimes they arise spontaneously and quickly spread, penetrating into our code. A typo in the equation leads to a catastrophe, but the equation itself can be potentially dangerous. We perceive mistakes as something alien, but what if our life is built around them?
This is an article about how the Mail.Ru project of the Mail.Ru project developed a highly loaded WebSocket server on Go.
Many emerging artists are eager to draw characters for games. But often, the enthusiasm quickly dies away, because character creation is a responsible business that cannot be dealt with in isolation from the work of the whole team. Therefore, we have written a guide for you on how to create game characters, using the example of Allods Online.
Load averages are industry-critical metrics. Many companies spend millions of dollars automatically scaling cloud instances based on this and several other metrics. But on Linux, it is shrouded in mystery. Tracking the average load on Linux is a task that works in an uninterrupted sleep state (uninterruptible sleep state). Why? In this article, the author tries to unravel this mystery, and create a reference for the average load values ​​for all who try to interpret them.
Competitions for IT specialists are now in vogue: Kaggle with its tasks in Data Science, a solid party of Olympiad programming, platforms for artificial intelligence that are gaining popularity, all sorts of hackathons for mobile developers, Olympiads for admins, and capture the flag for security guards. It would seem that it is easy for a specialist in any sphere to find a suitable movement for himself, to participate, pump and win something.
In this regard, only web developers are left out. We at Mail.Ru Group decided to correct this unfortunate misunderstanding and now we are happy to present you HighLoadCup - a competitive platform at the junction of backend-development and administration of web-services.
This post is a list of fun and tricky JavaScript examples. This is a great language. It has a simple syntax, a large ecosystem and, more importantly, a huge community. At the same time, we all know that JavaScript is a pretty funny language that has tricky things. Some of them quickly turn our daily work into hell, and some make them laugh. In this post we will look at some of them.
One of the main problems when writing large (relatively) Python programs is minimizing memory consumption. However, it is easy to manage memory here - if you care at all. Python memory is allocated transparently, objects are managed using a reference count system, and memory is released when the counter drops to zero. In theory, everything is fine. But in practice, you need to know a few things about memory management in Python in order for your programs to use it effectively. First thing, you need to understand it well: the size of the main objects in Python. And the second thing: how is the control "under the hood" of the language.
The article tells about the interesting things that happened in the world of machine learning for the last year (mainly in Deep Learning). A lot has happened, so we stopped at the most spectacular and / or significant achievements. Technical aspects of improving network architectures are not given in the article. Expand your horizons!
If you are not doing your AI right now, then others will do it for you instead of you. Nothing more prevents you from creating a system based on machine learning. There is an open set of tools that facilitate this work. Add to this the availability of large computational power, and you will understand that for complete happiness, only one ingredient is missing - data. A huge amount of data is publicly available, but it is not easy to understand which of the open datasets should pay attention to, which of them are suitable for testing ideas, and which can be useful as a means of testing potential products or their properties before you accumulate your own proprietary data. We understood this question and collected data on datasets that meet the criteria of openness, relevance, speed of work and proximity to real tasks.
We honestly warn you: take this text with a certain degree of skepticism. I’ve just recently started to get familiar with PHP internals, but I would like to tell you about what’s going on behind the scenes in bug # 75237 .
For several years in a row we have been holding the Russian AI Cup - such a competition for all those who are not indifferent to programming in general, to building AI, just writing bots for games or automating whatever. Naturally, this year will not be an exception. So, Mail.Ru Group in collaboration with Saratov State University officially announce the launch date of the Russian AI Cup 2017 and are happy to offer this year’s challenge. Hard fights, macbooks for first places and minus a month and a half from the life of a developer - everything is in place, everything as you like.
The git rebase command is used by many in everyday tasks. Those who are familiar with this procedure know how powerful this tool is and what a temptation it is to constantly use it. But the fact is that rebase entails a number of difficulties that are not obvious at first glance.
The purpose of the article is to tell about the context in which tools in JavaScript evolved up to 2017. We will start from the very beginning and will make the site, as dinosaurs would have done - without any tools, in pure HTML and JavaScript. Gradually, we will introduce different tools, alternately considering the problems they solve. Thanks to the historical context, you can adapt to and understand the ever-changing landscape of JavaScript.
Tarantool is not just a database. Tarantool is an app server with a database onboard, so it takes very little resources to implement some things that people spend a lot of time on with Tarantool. A lot of people in the IT world are doing the same thing. The article describes the author’s experience in solving these problems.
Everyone knows about standard user authentication in an application. This is an old-school registration procedure — the user enters a mail address, a password, etc., —and then, upon entering, we compare mail and / or password with the stored data. If matches, give access. But times have changed, and today there are many other authentication methods. If you want to remain a sought-after programmer / developer in this changing, like a kaleidoscope, world of software development, then you should know about all these new methods.
In this post you will find a grand journey into the world of fonts from ancient times to the present day. If you want to understand how fonts affect our emotions and finally learn how to distinguish humanistic grotesque from ribbon antiqua - welcome under cat. And yes, there are a lot of pictures.
The article describes the search and debugging of one very tricky bug in the Go runtime environment.
The year 2018 is approaching, and techies - in particular, web developers - must reject many of the old techniques and beliefs in the development of secure PHP applications. This is especially true for anyone who does not believe that such applications are possible at all. This guide is an addition to the PHP: The Right Way e-book with a strong emphasis on security, and not general PHP programming issues (such as code style).
Recently, the OpenDataScience and Mail.Ru Group conducted an open machine learning course. In the last announcement a lot has been said about the course. In this article we will share the course materials, as well as announce a new launch.
And at the end of the post - our best posts on Giktaymes for 2017:
Happy New Year!
Source: https://habr.com/ru/post/345790/
All Articles