Search
Write a publication
Pull to refresh

All streams

Show first
Rating limit
Level of difficulty

Could async/await magic create thread, or it is always: “There is no thread”?

Level of difficultyMedium
Reading time4 min
Views1.2K

When we are told “There is no thread” we can easily come to an opinion that it is impossible at ALL that asynchronous operation could create thread, but it would be wrong opinion. Simple code example proves the opposite.

Those who are easy to treat the sentence as the universal rule are easy to understand. They would like to simplify the subject and to cut amount of theory they should study and remember. Besides to many it is new level of knowledge to discover there is other layer of classes to manage async-operations behavior beside the Tasks and and SynchronizationContext is only one among them.

Read more

User-defined aggregation functions in Spark

Level of difficultyMedium
Reading time6 min
Views1K

Below, we will discuss user-defined aggregation functions (UDAF) using org.apache.spark.sql.expressions.Aggregator, which can be used for aggregating groups of elements in a DataSet into a single value in any user-defined way.

Let’s start by examining an example from the official documentation that implements a simple aggregation

Read more

Use-Case Evolution Guide

Level of difficultyMedium
Reading time13 min
Views1.2K

Modern product development demands more and more sophisticated designs. This in turn leads to the increased complexity of both demand and implementation. Business is flooding the architecture and development teams with the new and changed requirements. Development teams are struggling to understand what the business demand is and find the best product increment strategy. One of the widely adopted conversational methods is the Use-Cases. This guide is intended to shed light on the process of the requirements development and maturing.

Read more

RSS with types

Level of difficultyMedium
Reading time5 min
Views685

RSS 2.0 specification was published in 2009 and hasn't moved from that point. The popularity and website adoption of this standard are dropping. People stop using it as it can't compete with social networks owned by big companies, and publishers stop using it is not rewarding. Let's review, analyze, and suggest a possible alternative to RSS. We will go from a concept to a working prototype.

Read more

Giving and receiving feedback as a UX Designer: a short guide on how it should be done

Level of difficultyMedium
Reading time5 min
Views429

Getting feedback on the design of a digital product from the other members of the development team, stakeholders and clients is an essential part of a UX designer’s job. Ideally, it provides constructive criticism of the design, helps improve the product and perfect it as much as possible to present the best result of work to the users. But getting feedback doesn’t always happen smoothly – when communication is not established properly or the goals of the process are defined incorrectly, things can go the wrong way. In fact, both asking for feedback and giving it requires following some unwritten rules in order to make this experience useful and comfortable for all parties. In this article we’d like to discuss two things: how to ask for feedback correctly and what to consider if you’re the one who’s giving it.

Read more

Mastering ChatGPT

Level of difficultyMedium
Reading time7 min
Views2.3K

In today's rapidly advancing technological landscape, natural language processing and comprehension have become essential components of everyday life. Leading the charge in this arena is OpenAI's ChatGPT API, renowned for its exceptional ability to understand and interact with human language. Imagine elevating ChatGPT's functionality to new heights, enabling it to carry out specific tasks based on commands given in natural language. This article aims to shed light on the potential of incorporating function calling into the ChatGPT API, thereby enhancing its utility. I will illustrate through practical examples how such extensions can unlock a myriad of opportunities and applications.

Read more

AI-powered semantic search using pgvector and embeddings

Level of difficultyMedium
Reading time9 min
Views3.5K

In the age of information, the ability to accurately and quickly retrieve data relevant to a user's query is paramount. Traditional search methodologies, which rely on keyword matching, often fall short when it comes to understanding the context and nuances of user queries. Semantic search, which seeks to improve search accuracy by understanding the searcher's intent and the contextual meaning of terms, has emerged as a solution to these limitations. However, implementing semantic search can be complex, involving advanced algorithms and understanding of natural language processing (NLP).

Existing solutions such as Elasticsearch and Solr have been at the forefront of tackling these challenges, providing platforms that support more nuanced search capabilities. These tools use a combination of inverted indices and text analysis techniques to improve search outcomes. Yet, the advent of machine learning and vector search technologies opens up new avenues for enhancing semantic search, with solutions like OpenAI's Embeddings API and the pgvector extension for PostgreSQL leading the charge.

Read more

ALGEBRA OF MUSICAL TEXT

Level of difficultyMedium
Reading time5 min
Views382

Sergey Pshenichnikov, Tatiana Sotnikova

ALGEBRA OF MUSICAL TEXT

Sergey Pshenichnikov, Tatiana Sotnikova

Trio Sapiens

Musical text can be represented using matrix units, like the description of verbal texts and other symbolic sequences. In the future, mathematical recognition, and creation of musical sense with substantive justification for intermediate calculations (as opposed to AI) may become possible.

Sound has four properties: pitch, duration, volume, and timbre. Timbre is not considered yet. The dictionary of the algebra of musical texts is built on the basis of musical notation for the piano.

The duration here, for the sake of brevity of the first presentation, is considered as «absolute». «Relative» is not considered, although intervals are very well studied, and their features will be needed to categorize composers.

The complexity of the musical text for the application of mathematics is explained by the desire to simplify the reading of musical notes by musicians and to minimize the use of lower and upper additional lines.

To apply text algebra to musical symbolic sequences there is no need to use a five-line staff. What is useful and familiar to musicians is «unbearably harmful» for the use of algebra. It seems advisable to use a one-line staff. In this case, the musical text becomes like the verbal text.

To solve the problem, you need to find a transformation of the canonical musical text into a «thread». And as always, for a new application of algebra, correct coordination of the subject area is necessary. In this case, each used musical notation and symbol of modern musical notation must be assigned its own serial number (natural number).

Instead of a sign, you can use the names of each note symbol - then it will be a verbal notation of musical texts written in one line «thread»).

Since the musical scale is completely represented by piano keys, the first section in height of the dictionary of musical texts consists of 88 numbered white and black keys (of which 52 are white). This eliminates the need for an octave division of the scale, octave transfer signs, keys, five alteration signs (key and random), diatonic and chromatic semitones.

All notes of the scale became fundamental in algebraic musical notation. There is an order of magnitude more of them of them than the main stages of Guido Aretinsky, but the alteration signs and names of octaves disappeared, the use of which made musical texts algebraically incompatible with verbal texts. Numbers from 1 to 88 in algebraic notation constitute a fragment of the pitch dictionary for the «thread» one-line staff.

Numbering (coordination) of notes is needed to become in the future indices of mathematical objects (matrix units), which will replace the signs of notes or their names. These matrix units are binary generalizations of integers (hyperbinary numbers). The operation of division with remainder is defined for them, as for integers. The operation will allow you to divide musical texts and their f

Read more

ALGEBRA OF SENSE

Level of difficultyMedium
Reading time12 min
Views243

Sergey Pshenichnikov

Sign sequences (for example, verbal and musical texts) can be turned into mathematical objects. Words and numbers have become one entity, a representation of a matrix unit, which is a matrix generalization of integers and a hypercomplex number. A matrix unit is a matrix in which one element is equal to unit, and the rest are zeros.

If the words of the text are represented by such matrices, then concatenation (combination while maintaining order) of words and texts becomes an operation of adding matrices.

You can perform transformations with texts using algebraic operations, for example, dividing one text by another with a remainder. Mathematically recognize the sense of text and calculate the context of words. In this case, algebra helps to interpret all the intermediate stages of calculations.

A person sees and hears only what he understands (J.W. Goethe). Understands what he attaches sense to as significant for him. Sense is subjective and depends on the interests, motivations, and feelings of different people.

L. S. Vygotsky distinguished between the concepts of «sense» and «meaning»: «if the «meaning» of a word is an objective reflection of a system of connections and relationships, then « sense» is the introduction of subjective aspects of meaning according to a given moment and situation».

According to G. Frege, «meaning» are properties, relationships of objects, «sense» is only part of these properties. In this case, both “meanings” and «sense» are called one «sign», for example a word. Two people can choose from a list of meanings for one word two non-overlapping fragments (two senses) to interpret it.

Read more

Implementing hypervisor-level behavioral analysis in Linux

Level of difficultyMedium
Reading time7 min
Views998

Hey there, Habr! My name is Alexey Kolesnikov. I am a Malware Detection Specialist at the Positive Technologies Expert Security Center (PT ESC). I recently spoke at the AVAR 2023 international conference in Dubai, where I covered new plugins developed by PT ESC for an open-source dynamic malware analysis system named DRAKVUF and demonstrated how they can be used to detect current Linux threats in sandbox for protection against targeted and mass attacks PT Sandbox.

Read on for a brief overview of popular malware monitoring tools for Linux, a description of how our plugins work in DRAKVUF, and a malware analysis that relies on these plugins.

Read more

How Closures Work and Why It Matters

Level of difficultyMedium
Reading time8 min
Views1.5K

They might sound complicated, but they are actually a fundamental part of the language. In this article, we’ll explore closures in a straightforward and practical way. Let’s clear up common misunderstandings. Walk through real-world examples. Nail those tricky interview questions about closures. By the end, you’ll see closures not as a hurdle, but as a valuable part of your JavaScript toolkit.

Continue Closure Journey

PostgreSQL 17: Part 3 or Commitfest 2023-11

Level of difficultyMedium
Reading time11 min
Views925


The November commitfest is ripe with new interesting features! Without further ado, let's proceed with the review.


If you missed our July and September commitfest reviews, you can check them out here: 2023-07, 2023-09.


ON LOGIN trigger
Event triggers for REINDEX
ALTER OPERATOR: commutator, negator, hashes, merges
pg_dump --filter=dump.txt
psql: displaying default privileges
pg_stat_statements: track statement entry timestamps and reset min/max statistics
pg_stat_checkpointer: checkpointer process statistics
pg_stats: statistics for range type columns
Planner: exclusion of unnecessary table self-joins
Planner: materialized CTE statistics
Planner: accessing a table with multiple clauses
Index range scan optimization
dblink, postgres_fdw: detailed wait events
Logical replication: migration of replication slots during publisher upgrade
Replication slot use log
Unicode: new information functions
New function: xmltext
AT LOCAL support
Infinite intervals
ALTER SYSTEM with unrecognized custom parameters
Building the server from source

Read more →

Import chat history to Telegram (приглашение)

Level of difficultyMedium
Reading time3 min
Views5.9K
image

I'm seeking anyone who is skilled enough to develop a simple Python script using TDLib, Telegram API, and JSON manipulation to make it possible to perform simple tasks listed below:

1. Import Telegram chat JSON backup back to Telegram similar to what these scripts are doing github.com/alexlyzhov/telegram-import
github.com/Suberbia/UltimateChatRestorer
github.com/mygrexit/UltimateChatRestorerForGroupchats
but for any chat (not only to «saved messages») including group chats (not only 1 to 1 chats) and improve the code to make it work faster, more reliable, write log file, allow continuing from the stop point in case of errors and keep all the original chat data including formatting and everything that telegram can handle.
Some kinda combine all the script in one universal, flexible, high quality tool.
The most important aspect of the whole task is that the imported messages have to keep not only the formatting, but its original date and time when they were actually sent. Like it is done in the original telegram tool for importing history from some other apps — telegram.org/blog/move-history

2. Make it very simple to use. Perfect solution will be: Download, put the script next to JSON backup and run it in the interactive mode or with some specific options. Let the script ask for all the credentials and briefly explain where to get them. If possible, keep all the job on one device with no need of transferring the WA format zip file to the phone for importing. If not possible, make it an android app which will get the JSON, process it and feed the result to the Telegram app for import.

This is the basic I'm going to pay for.
Read more →

WebSocket Reconnection in Flutter

Level of difficultyMedium
Reading time5 min
Views1.5K

Continuous socket connection can be crucial to ensure correct app behavior. Whether it’s delivering real-time chat updates, stock prices, or in-app indicators, a reliable connection is vital.

One of the irritating problems with sockets is a sudden loss of connection. If the true cause is not visibly evident, i.e., unstable internet connection, then the disruption cause is often well hidden. To tackle this issue we can implement an automatic socket reconnection strategy. Let’s see what options we have in the industry-standard socket library for Dart — web_socket_channel.

Read more

Trade bot python setup (using Binance API), Vol 1

Level of difficultyMedium
Reading time5 min
Views16K

Trading robots are conquering the Wall Street! Learn how to create your first automated python trading bot.

We present a fully functioning trading bot pipeline on python using the Binance API. Starting with the general introduction, we provided a comprehensive overview of main API calls and their implementation on python. After this we show a fully functioning python code presenting a basic trading bot with core features using static channel breakout strategy.

Read more

Memory consumption of .NET applications on Linux

Level of difficultyMedium
Reading time12 min
Views7.8K

In this article, I will cover the memory consumption of .NET applications on Linux. Firstly, we will try to understand the idea of virtual memory. Then, we will examine the memory statistics that Linux provides, such as RSS (Resident Set Size), VmData, RES (Resident Memory Size), and SWAP. Following that, we will delve into specifics related to the .NET.

Read more

Managing AWS Auto Scaling Group Instance Refresh: The Harmony of Terraform and Ansible

Level of difficultyMedium
Reading time6 min
Views1K

In the DevOps realm, where automation is crucial, the management of resources and updating processes in the cloud is vitally important. Many modern projects, particularly in AWS cloud environments, leverage Auto Scaling Groups (ASG). This mechanism aims to achieve three key objectives: balancing loads, increasing service reliability, and optimizing operational costs for efficiency and effectiveness.

Imagine working at a company where you deploy applications on Amazon's resources. To streamline this process and manage configurations more effectively, you use pre-built AMI images. These are crafted with tools like HashiCorp Packer, ensuring your applications launch swiftly and reliably. For the actual infrastructure deployment, you turn to Terraform. It's widely recognized as the standard in many major companies for managing cloud resources and using the IaC (Infrastructure as Code) approach.

As an IT engineer, you sometimes need to update instance versions to a newer AMI image, either for the latest security patches or to introduce new functionalities. The challenge lies in updating an active ASG without causing downtime. It's crucial to ensure the new AMI performs as reliably as the existing one, balancing the need for updates with system stability and uptime.

ASG's instance refresh is a crucial feature that allows for updating instances within a group while minimizing downtime, thereby maintaining high availability. However, ensuring the success of such updates, especially in large, complex systems, can be a challenge. Terraform resources, such as aws_autoscaling_group, can initiate this process but don't provide progress tracking. This limitation becomes apparent when other infrastructure components, such as certificate renewals or DNS updates, depend on the state and version of the instances. Monitoring the update process is essential to maintain an accurate infrastructure state after Terraform's execution.

To overcome this challenge, Ansible can be utilized...

Read more

How to send messages over sockets and create your own messanging protocols in C++

Level of difficultyMedium
Reading time28 min
Views9.9K

Network programming in C++ can be challenging. But even a greater challenge is to find educational content that will arm you with the knowledge on how to apply your networking skills in real applications.

In this article you can learn the basics of socket communication and many ways how you can design your internal messaging protocols.

Read more