All streams
Search
Write a publication
Pull to refresh

Development

Show first
Period
Level of difficulty

Architecting Architecture: Makers and Takers

Reading time12 min
Views1.8K

The step has been made. Not sure where to, but for sure from the point of no return. Keep calm and keep walking. It is about time to look around and understand the smelly and slippery route before you. And what are those noisy creatures swarming around our fishy “innovative” design we called Mandelbrot blueprint? You don't get a buzzing noise like that, just buzzing and buzzing, without its meaning something.

Read more

Compilation of math functions into Linq.Expression

Reading time12 min
Views5.8K

Here I am going to cover my own approach to compilation of mathematical functions into Linq.Expression. What we are going to have implemented at the end:

1. Arithmetical operations, trigonometry, and other numerical functions

2. Boolean algebra (logic), less/greater and other operators

3. Arbitrary types as the function's input, output, and those intermediate

Hope it's going to be interesting!

Read more →

Finding Typos in the GTK 4 Project by PVS-Studio

Reading time16 min
Views710

0793_GTK_4_continue/image1.png


You may have already read a recent article about the first PVS-Studio run and filtration of warnings. We used the GTK 4 project as an example. It's about time we worked with the received report in more detail. Our regular readers may have already guessed that this article will be a description of errors found in the code.

Read more →

Making python's dream of multithreading come true

Reading time10 min
Views6.6K

Intro


So you are writing some CPU-intensive code in Python and really trying to find ways out of its single-threaded prison. You might be looking towards Numba's "nopython parallel" mode, you might be using forked processes with multiprocessing, you might be writing microservices with database-like coordinators, or even writing your own multithreaded programs in C/C++ just like creators of TensorFlow did.


In this article I'm describing a rationale for my pet project where I try to implement facilities for general purpose multitasking to be used in a form of simple python code, employing a database-like approach for interpreters communication, while keeping the GIL (Global Interpreter Lock) and trying to be as pythonic as possible.



It could also become handy in the light of upcoming multiple interpreters support in CPython.


As far as I know, nobody came that far in trying to provide Python program with native shareable storage. The last closest attempt was Python Object Sharing which is pretty much dead by now. I hope my project won't meet the same fate.

Read more →

Database using ScriptableObjects with save/load system

Reading time5 min
Views13K

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 →

11 Years Of Node.JS: Timeline & Significant Contributions

Reading time4 min
Views3.3K
image

Do you know Node.js has turned 11 on 27th May 2020? Can’t believe we have stepped into a new decade of this technology? Okay! Let me tell you the truth and story behind it with this article.

JavaScript has come a long way with its constant bombardment of open-source frameworks. We all have embraced its journey, and Node.js is one of its prevalent and predominant innovations that knocked this tech arena on May 27th, 2009. So, technically and mathematically, both Node.js is 11 years old now.
Read more →

Free CRM with PBX

Reading time3 min
Views2K
Why do you need a CRM system? Well, it’s at least more convenient than keeping your client database in Excel. Why do you need CRM with VoIP? If you have ever interacted offline, you know you cannot do it without telephony (orders, delivery, support etc.).

But what prevents 80% of companies from trying out a CRM tool? If prices is the matter, we are offering a free CRM system integrated with the phone system and free PBX.

To anticipate questions about installation difficulty, CRM setup and contact import doesn’t take more than 5 minutes.


Read more →

The Code of the Command & Conquer Game: Bugs from the 90's. Volume two

Reading time13 min
Views3.5K
image1.png

The American company Electronic Arts Inc (EA) has opened the source code of the games Command & Conquer: Tiberian Dawn and Command & Conquer: Red Alert publicly available. Several dozen errors were detected in the source code using the PVS-Studio analyzer, so, please, welcome the continuation of found defects review.
Read more →

Meet Hamstand: a smart mobile testing hub

Reading time5 min
Views1.4K
The ITMO Accelerator continues to empower entrepreneurs. We’ve already covered some of its most successful graduates — the Laeneco staethoscope and the GoROBO robotics club. Today we’ll be discussing Hamstand — a modular hub that simplifies the process of mobile app testing. Let’s talk about how it came to be, why it’s a welcome addition to many developers’ toolkits, and what awaits the project in the near future.

Read more →

The PVS-Studio analyzer: detecting potential compatibility issues with Java SE API

Reading time9 min
Views714

Рисунок 9

2019 was a very busy year in terms of conferences. Our team could leave for whole weeks on business trips. As you know, the conference is perfect time to share knowledge. In addition to giving talks and telling many interesting things at our booth, we also learned a lot from communicating with conference participants and speakers. So at the Joker 2019 conference in fall, a talk from Dalia Abo Sheasha «Migrating beyond Java 8» inspired us to implement a new diagnostic rule that allows us to detect incompatibilities in the Java SE API between different versions of Java. This is what we will talk about.
Read more →

Locks in PostgreSQL: 2. Row-level locks

Reading time14 min
Views14K
Last time, we discussed object-level locks and in particular relation-level locks. In this article, we will see how row-level locks are organized in PostgreSQL and how they are used together with object-level locks. We will also talk of wait queues and of those who jumps the queue.



Row-level locks


Organization


Let's recall a few weighty conclusions of the previous article.

  • A lock must be available somewhere in the shared memory of the server.
  • The higher granularity of locks, the lower the contention among concurrent processes.
  • On the other hand, the higher the granularity, the more of the memory is occupied by locks.

There is no doubt that we want a change of one row not block other rows of the same table. But we cannot afford to have its own lock for each row either.

There are different approaches to solving this problem. Some database management systems apply escalation of locks: if the number of row-level locks gets too high, they are replaced with one, more general lock (for example: a page-level or an entire table-level).

As we will see later, PostgreSQL also applies this technique, but only for predicate locks. The situation with row-level locks is different.
Read more →

Future of PHP: Bright or Dull?

Reading time4 min
Views3.7K
image

PHP is a popular scripting language founded in 1995 designed to perform several functions. Do you think the essence of PHP has faded away since the newer programming languages and frameworks have come into the market?

If you think so, then let me tell you that your perception is totally wrong! In fact, in the contemporary market of custom software development, it has become the most popular language in server-side programming.

image
Read more →

Building a Food Delivery App

Reading time7 min
Views1.8K
This is the year that everything changed. Companies, and people around the world have been impacted by COVID19 and the way we live, and work has been altered. Organizations have had to react quickly to these changes and many businesses have had to make drastic changes simply to stay afloat.

However, while many businesses were negatively impacted, some areas of the economy have benefited from these changes. One of the areas that has possibly benefited the most is the online delivery industry. This is primarily due to the changes that the governments around the world are mandating of their citizens.


Read more →

Diamond inheritance problem is not a problem, that's a tricky feature

Reading time7 min
Views4.4K

General


Before discussing the topic I’d like to start with a general suggestion not to use multiple inheritance and especially diamond unless you are strongly forced to. You may use e.g. composition or aggregation instead.


Well, “Diamond inheritance problem” is some kind of steady expression which formed many years ago. You can easily find a lot of articles suggesting usage of “virtual public” to avoid the ambiguity and so on. For instance, https://en.wikipedia.org/wiki/Multiple_inheritance


image


 That is not wrong as for the problem stated but anyway it is quite one-side statement.
 Below you can find:


  • difference in memory allocation and initialization order between public and public virtual inheritance (examples 1, 2),
  • examples of practical usage of both public and public virtual inheritance (examples 3, 4).
Read more →

Juggling work and study at ITMO University: CS edition

Reading time3 min
Views1.3K
We talked to the graduates of the Speech Information Systems MA program at ITMO about the ways our university helped jumpstart their careers. [More stories from our startups]:


Read more →

Legacy Languages still Pretty Hard to Beat

Reading time3 min
Views2K
image

Evolution and development have always been the integral parts of every sector you come across. Same is the case with programming languages. Numerous up gradations and invention of entirely new languages have divided the world of programming into legacy and modern. But no matter what, legacy programming still makes the foundation of many software, web applications and AI based techniques.
Read more →

Developing and deploying Python for secured environments with Kushal Das

Reading time7 min
Views1.6K
Here is the translated Russian version of this interview.

The company of speakers at Moscow Python Conf++ 2020 is great, and it's not a good luck but thorough Program Committee's work. But who cares about achievements, it's much more interesting what the speaker thinks about our own questions. Conferences suits good to find it out, get insider information or advice from an experienced developer. But I got an advantage of being in Program Committee so I already asked our speaker Kushal Das some questions.

A unique feature of Kushal's speeches is that he often unveils «secret» ways to break Python code and then shows how to write code so that the NSA can't hack it. At our conference Kushal will tell you how to safely develop and deploy Python code. Of course I asked him about security.

Read more →

buildroot — my own experience with multi-platform distro creation

Reading time5 min
Views6.2K

Introduction


In my previous article (Monitor linux) I wrote, what is this distro and how it works. Now i will write how to do it. It's may be interesting for everyone, who want to study buildroot.


Target goals


The result we get from article is the following:


  • Firmware (non-volatile image with restorable config)
  • Easy management via web-interface
  • Cross-platform (qemu x86_64, arm-based SBC like rasberry 4, beagle bone black and asus tinker board)
  • Support without extra effort
Read more →

Are my open-source libraries vulnerable? (2 min reading to make your life more secure)

Reading time2 min
Views2.6K

The explosion of open source and issues related to it


The amount of open source or other third party code used in a software project is estimated as 60-90% of a codebase. Components, such as libraries, frameworks, and other software modules, almost always run with full privileges. If a vulnerable component is exploited, such an attack can facilitate serious data loss or server takeover. Applications using components with known vulnerabilities may undermine application defences and enable a range of possible attacks and impacts.



Conclusion: even if you perform constant security code reviews, you still might be vulnerable because of third-party components.

Some have tried to do this manually, but the sheer amount of work and data is growing and is time consuming, difficult, and error prone to manage. It would require several full time employees and skilled security analysts to constantly monitor all sources to stay on top.
Read more →