Pull to refresh

Development

Show first
Period
Level of difficulty

Big O Notation

Reading time6 min
Views9.2K

Asymptotic notations are used to represent the complexity or running time of an algorithm. It is a technique of defining the upper and lower limits of the run-time performance of an algorithm.  We can analyze the runtime performance of an algorithm with the help of asymptotic notations. Asymptotic notations are also used to describe the approximate running time of an algorithm.

Types of Asymptotic Notations

Following are the different types of asymptotic notations:

Читать далее

Telegram bot provides time-based currency

Reading time2 min
Views7.9K

Many of us spend time in specialized telegram groups. The power over communication here belongs to random people with their own shortcomings. Conflict and abuse occurs regularly. Is there another way to keep order so that scam spam doesn't flourish and no one has total control over group members?

In my case, these thoughts led to the development and testing of a system that can be connected to your Telegram today.

How it works?

Customer feedback: The ultimate guide

Reading time19 min
Views2.6K

Introduction

It was 1989 when 2 editors of Inc. magazine, George Gendron and Bo Burlingham made the nervous drive to Palo Alto, California. Not long beforehand they’d decided on who to name as Inc.’s Entrepreneur of the Decade, and finally, they would get a chance to interview him.

As they entered the offices of NeXT, their interviewee approached them. In his trademark jeans and turtleneck sweater, Steve Jobs led them up the stairs to his office and the interview commenced.

Securing an interview with Steve Jobs was rare, even in 1989. And, wanting to make the most of their time, the editors got straight to the point with their very first question:

“Where do great products come from?”

After a slight pause, and a shuffle in his chair, Jobs replied:

“I think really great products come from melding two points of view; the technology point of view and the customer point of view. You need both. You can't just ask customers what they want and then try to give that to them. By the time you get it built, they'll want something new.”

Silence overshadowed the room. Three decades later, and this powerful answer Jobs gave is something that still isn’t often internalized in companies. 

Collecting user feedback is incredibly important. As you’ll see examples of later in this article, launching surveys, asking onboarding questions, and conducting customer interviews are all vital tools for improving your product. 

But the true lesson that Steve Jobs gave all this time ago was that user feedback isn’t as simple as asking what users want, or what they think about your product, and making those changes. You have to dive much deeper.

Read article

Gyrators

Reading time13 min
Views3.9K


Gyrators are impedance converters usually used to simulate inductance in circuits. Though they are rarely used in discrete electronics, they are interesting circuits looking like pole dancers in pictures. There are studies on gyrators, but still something is missing, so it is interesting to do another one.
Read more →

Architecting Architecture: Makers and Takers

Reading time12 min
Views1.7K

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
Views683

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.5K

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.1K
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.3K
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
Views708

Рисунок 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.2K
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 →