Pull to refresh

Development

Show first
Period
Level of difficulty

Russian AI Cup 2020 — a new strategy game for developers

Reading time5 min
Views2.5K


This year, many processes transformed, with traditions and habits being modified. The rhythm of life has changed, and there's more uncertainty and strain. But IT person's soul wants diversity, and many developers have asked us if annual Russian AI Cup will be held this year. Is there going to be an announcement? What is the main theme of the upcoming championship? Should I take a vacation?

Though some changes are expected, it will be held in keeping with the best traditions. In the run-up, we will announce one of today's largest online AI programming championships — Russian AI Cup. We invite you to make history!

Common misconceptions about space-grade integrated circuits

Reading time27 min
Views22K

Space exploration was always fascinating, and recent developments have reignited the interest to the heights never seen since the last man stood on the Moon. People argue about Mars exploration and features of spaceships as their grandparents would’ve done if the internet existed fifty years ago. I’m an electronics engineer working in the aerospace industry, so I know a thing or two about the technical background of this stuff — and I see that these things aren’t common knowledge, and people often have significantly skewed ideas about the reasons behind many things and decisions. Namely, I’d love to speak of some misconceptions about radiation hardened integrated circuits and the means of protection from radiation-induced damage.

So, let's start our journey

Deploying Tarantool Cartridge applications with zero effort (Part 2)

Reading time11 min
Views1.5K


We have recently talked about how to deploy a Tarantool Cartridge application. However, an application's life doesn't end with deployment, so today we will update our application and figure out how to manage topology, sharding, and authorization, and change the role configuration.

Feeling interested? Please continue reading under the cut.
Read more →

Tips and tricks from my Telegram-channel @pythonetc, January 2020

Reading time3 min
Views1.5K


It is a new selection of tips and tricks about Python and programming from my Telegram-channel @pythonetc.

Previous publications.


The order of except blocks matter: if exceptions can be caught by more than one block, the higher block applies. The following code doesn’t work as intended:
Read more →

SQL Index Manager – a long story about SQL Server, grave digging and index maintenance

Reading time14 min
Views2.7K
Every now and then we create our own problems with our own hands… with our vision of the world… with our inaction… with our laziness… and with our fears. As a result, it seems to become very convenient to swim in the public flow of sewage patterns… because it is warm and fun, and the rest does not matter – we can smell round. But after a fail comes the realization of the simple truth – instead of generating an endless stream of causes, self-pity and self-justification, it is enough just to do what you consider the most important for yourself. This will be the starting point for your new reality.

For me, the written below is just such a starting point. The way is expected to be lingering…
Let's go?

How Moovit improved its app to help people with disabilities ride transit with confidence

Reading time4 min
Views884

Alexandr Epaneshnikov, a 19-year-old Russian student who is legally blind, recently decided he wanted to be more independent by commuting on his own and relying less on his mom for rides to school. It meant taking a streetcar to a subway to his high school in Moscow, a 30-minute trip that Epaneshnikov assuredly navigates with a cane and Moovit, an urban mobility app optimized for screen readers.


Read more →

Indexes in PostgreSQL — 10 (Bloom)

Reading time11 min
Views7.6K
In the previous articles we discussed PostgreSQL indexing engine and the interface of access methods, as well as hash indexes, B-trees, GiST, SP-GiST, GIN, RUM, and BRIN. But we still need to look at Bloom indexes.

Bloom


General concept


A classical Bloom filter is a data structure that enables us to quickly check membership of an element in a set. The filter is highly compact, but allows false positives: it can mistakenly consider an element to be a member of a set (false positive), but it is not permitted to consider an element of a set not to be a member (false negative).

The filter is an array of $m$ bits (also called a signature) that is initially filled with zeros. $k$ different hash functions are chosen that map any element of the set to $k$ bits of the signature. To add an element to the set, we need to set each of these bits in the signature to one. Consequently, if all the bits corresponding to an element are set to one, the element can be a member of the set, but if at least one bit equals zero, the element is not in the set for sure.

In the case of a DBMS, we actually have $N$ separate filters built for each index row. As a rule, several fields are included in the index, and it's values of these fields that compose the set of elements for each row.

By choosing the length of the signature $m$, we can find a trade-off between the index size and the probability of false positives. The application area for Bloom index is large, considerably «wide» tables to be queried using filters on each of the fields. This access method, like BRIN, can be regarded as an accelerator of sequential scan: all the matches found by the index must be rechecked with the table, but there is a chance to avoid considering most of the rows at all.
Read more →

Citymobil — a manual for improving availability amid business growth for startups. Part 4

Reading time7 min
Views1.1K


This is the next article of the series describing how we’re increasing our service availability in Citymobil (you can read the previous parts here: part 1, part 2, part 3). In further parts, I’ll talk about the accidents and outages in detail.

1. Bad release: database overload


Let me begin with a specific example of this type of outage. We deployed an optimization: added USE INDEX in an SQL query; during testing as well as in production, it sped up short queries, but the long ones — slowed down. The long queries slowdown was only noticed in production. As a result, a lot of long parallel queries caused the database to be down for an hour. We thoroughly studied the way USE INDEX worked; we described it in the Do’s and Dont’s file and warned the engineers against the incorrect usage. We also analyzed the query and realized that it retrieves mostly historical data and, therefore, can be run on a separate replica for historical requests. Even if this replica goes down due to an overload, the business will keep running.
Read more →

Indexes in PostgreSQL — 7 (GIN)

Reading time18 min
Views26K
We have already got acquainted with PostgreSQL indexing engine and the interface of access methods and discussed hash indexes, B-trees, as well as GiST and SP-GiST indexes. And this article will feature GIN index.

GIN


«Gin?.. Gin is, it seems, such an American liquor?..»
«I'm not a drink, oh, inquisitive boy!» again the old man flared up, again he realized himself and again took himself in hand. «I am not a drink, but a powerful and undaunted spirit, and there is no such magic in the world that I would not be able to do.»

— Lazar Lagin, «Old Khottabych».

Gin stands for Generalized Inverted Index and should be considered as a genie, not a drink.
README
Read more →

Interview with Rob Vugteveen — an old-school FORTRAN programmer

Reading time5 min
Views2.1K
I decided to make an interview with one of my American friends — Rob Vugteveen. He was working as a FORTRAN programmer back in 1980s, so it's quite a unique experience.


Rob Vugteveen, Carson City, Nevada, USA

K: Hi Rob. I've heard you were working as a Fortran programmer many years ago. Is that right? How the industry was looking back then?

R: Good morning, Kirill.

In the 1980s I made my living as a FORTRAN programmer in the mining industry, primarily in the processing of exploration data and presenting it graphically. We were using VAX minicomputers from Digital Equipment Corporation. This was a time when desktop PCs were growing in popularity, and procedural languages like FORTRAN were being challenged by object-oriented languages. Also, graphics display systems were shifting away from character-cell terminals to X-window-based displays.

FORTRAN (“FORmula TRANslation”) was built for computationally intensive programs, and it did not have its own graphic libraries to display information. There were companies that sold large FORTRAN subroutine libraries to provide that capability. These were not yet designed for the growing popularity of X-window technology.

When we were forced to move from expensive VAX computers to cheaper PCs, we had to write hybrid programs using FORTRAN for computations and C++ for display. It was a bit messy at first. I left that job for something completely different (building a mining museum) and haven’t really done any programming since.

FORTRAN is still used today in scientific research for computationally intensive work, but I’m sure it’s been adapted to work with graphical display systems through external subroutines written in object-oriented code.
Read more →

My and my girlfriend’s first video game. Development with Unity. Part 1

Reading time7 min
Views5.5K
If not to take into account releases for Android and a dozen of abandoned projects just before they were ready, then yes, it is our first game appropriate for more than one platform. How did it all start? Very simply. We worked on another project, let’s call it “project A”, and we’d been working on it for a long time when we decided to make a game during a couple of months and use it to train our marketing skills, and then immediately release our “project A” when we would be more experienced in the promotion of games. But the plan failed and “project A” was kept untouched for the whole year. But this story isn’t about “project A”, it’s about a logical game called «Cubicity: Slide puzzle».


Read more →

Indexes in PostgreSQL — 2

Reading time5 min
Views8.1K

Interface


In the first article, we've mentioned that an access method must provide information about itself. Let's look into the structure of the access method interface.

Properties


All properties of access methods are stored in the «pg_am» table («am» stands for access method). We can also get a list of available methods from this same table:

postgres=# select amname from pg_am;
 amname
--------
 btree
 hash
 gist
 gin
 spgist
 brin
(6 rows)

Although sequential scan can rightfully be referred to access methods, it is not on this list for historical reasons.

In PostgreSQL versions 9.5 and lower, each property was represented with a separate field of the «pg_am» table. Starting with version 9.6, properties are queried with special functions and are separated into several layers:

  • Access method properties — «pg_indexam_has_property»
  • Properties of a specific index — «pg_index_has_property»
  • Properties of individual columns of the index — «pg_index_column_has_property»

The access method layer and index layer are separated with an eye towards the future: as of now, all indexes based on one access method will always have the same properties.
Read more →

Open Source developer's life in GIFs

Reading time2 min
Views4.2K
Sberbank is the largest bank in Russia and Eastern Europe. Our team in Sbertech teaches Sberbank efficient work with Free & Open Source Software. You can read more about this on Habr (what we exactly do, yet in Russian).

One of the main challenges is to open the mind of managers and engineers for using FOSS (Free & Open Source Software) properly. Because we have a lot of them, we have tried to use GIFs for answer the most common questions.

image

Read more →

Why pentesting is important to your Business?

Reading time3 min
Views1.2K
image

In today’s world, it is almost impossible to imagine a business without some type of connection to the Internet — a website, email, employee training, CRM (Customer-relationship management), CMS (Content management system), etc. It simplifies and speeds up the ordering process, search for new clients, records search and keeping, and such.
Read more →

SAP: What do you need to start learning SAPUI5?

Reading time3 min
Views5.4K

image


Introduction


At the start of September 2018, some cool guys also joined our team, they are fresh from University and they are really hungry to learn how to design and develop amazing web apps with SAPUI5.


That’s why I’ve started to collects internally on the web some links in order to create “The perfect journey to become a SAPUI5 Ninja Developer”.


I’ve also started to write down some exercise (from easy to hard) in order to test what they’ve learned but I will share those in a second blog post as soon I’ve finished them.


Presentation


Hi everyone,
I'm Emanuele Ricci, a full-stack developer based in Lucca (a beautiful little city in Tuscany, Italy).


Since the last three years, I work full-time for Techedge Group, a big worldwide consultant company that is a partner with SAP. I usually work in projects related with SAPUI5, SCP, HANA and in my free time, I love to create content around the technology I use at work and in my personal projects outside SAP. Lately, I'm a little bit experimenting with Android after the release of SAP Fiori SDK for Android/iOS.

Read more →

Configure the development environment for learning HTML, CSS, PHP in Windows

Reading time8 min
Views3.7K

Configure the development environment for learning HTML, CSS, PHP in Windows.


(article is published on linkedin.com (Alexander Panov) )


web - developer PHPStorm and Vagrant


Beginning programmers always ask the question, where to start learning about creating websites? Search on the Internet gives a lot of various information, but unfortunately only more confuses novice developers. Having more than 5 years of teaching experience, I have seen many times how students, making breaks in computer games and deciding to become web developers, tried to customize development environments. They began to sort out the programs for layout. They grabbed Sublime Text, Notepad ++, Visual Studio Code, NetBeans or PHPStorm. We tried to install on our local computer WAMP (stands for Windows, Apache, MySQL and PHP) platforms, such as Denver, Xampp, Open Server and many others. But since there is no systematic knowledge in the head of a novice developer, there is no experience of customization, it was rare for some of them to set up a convenient development environment, and whoever got it, understood that it became more difficult to play, since many additional programs, smoothness in the game.


This article was born because of explaining for many years to each student how to do everything correctly and conveniently.


Once again I want to say that we will set up a working environment in the Windows system to study the creation of sites in HTML, CSS and their links to PHP. We will call this computer working, so that beginning web developers get used to the idea that their computer is their source of income.


Begin

Читать дальше →