Programming languages
Reference:
Gibadullin R.F.
Thread-safe Control Calls in Enriched Client Applications
// Software systems and computational methods.
2022. № 4.
P. 1-19.
DOI: 10.7256/2454-0714.2022.4.39029 EDN: IAXOMA URL: https://en.nbpublish.com/library_read_article.php?id=39029
Abstract:
When the first version of the .NET Framework was released, there was a pattern in enriched client applications that focused on message processing loops, where an embedded queue was used to pass execution units from worker threads. A generalized ISynchronizeInvoke solution was then developed in which the source thread could queue a delegate to the destination thread and, as an optional option, wait for that delegate to complete. After asynchronous page support was introduced into the ASP.NET architecture, the ISynchronizeInvoke pattern did not work because asynchronous ASP.NET pages are not mapped to a single thread. This was the reason for creating an even more generalized solution – SynchronizationContext, which is the subject of the research. The article uses practical examples to show how to update UI elements from worker threads without breaking thread-safety of the user application. Solutions proposed in this aspect are: using Beginlnvoke or Invoke methods to put this delegate into the UI thread message queue; capturing the UI thread synchronization context via the Current property of the SynchronizationContext class; using the deprecated BackgroundWorker class, which provides an implicit capture of the UI thread synchronization context. The peculiarity of implementation of the SynchronizationContext abstract class in ASP.NET platform is not left unnoticed. Practical recommendations on the use of marshalling mechanism on the example of development of multiclient chat with a centralized server are formulated.
Keywords:
parallel programming, NET Framework, delegates, Universal Windows Platform, synchronization context, Windows Presentation Foundation, Windows Forms, multithreading, programming, design patterns
Knowledge Base, Intelligent Systems, Expert Systems, Decision Support Systems
Reference:
Kiryanov D.A.
A Scalable Aggregation System Designed to Process 50,000 RSS Feeds
// Software systems and computational methods.
2022. № 4.
P. 20-38.
DOI: 10.7256/2454-0714.2022.4.39124 EDN: FLDOVB URL: https://en.nbpublish.com/library_read_article.php?id=39124
Abstract:
The subject of the study is the architecture of the RSS feed aggregation system. The author considers in detail such aspects of the topic as choosing the right data aggregation strategy, an approach to scaling a distributed system, designing and implementing the main modules of the system, such as an aggregation strategy definition module, a content aggregation module, a data processing module, a search module. Particular attention in this study is given to a detailed description of the libraries and frameworks chosen for the implementation of the system under consideration, as well as databases. The main part of the system under consideration is implemented in the C# programming language (.Net Core) and is cross-platform. The study describes the interaction with the main data stores used in the development of the aggregation system, which are PostgreSQL and Elasticsearch. The main conclusion of the study is that before developing an aggregation system, it is necessary to analyze the publication activity of data sources, on the basis of which it is possible to form an acceptable strategy for updating the search index, saving a significant amount of resources. computing power. Content aggregation systems, such as the one considered in this study, should be distributed, built on the basis of event-driven and microservice architectures. This approach will make the system resistant to high loads and failures, as well as easily expandable. The author's special contribution to the study of the topic is a detailed description of the high-level architecture of the RSS aggregator, designed to process 50,000 channels.
Keywords:
content categorization, cross-platform, fault tolerance, scalability, competing consumers pattern, microservice architecture, RabbitMQ, Elasticsearch, RSS aggregation, expert system
Programming languages
Reference:
Barabash K.A., Mangusheva A.R., Obukhova M.Y., Grigoryan K.A.
Development of the LISP Interpreter
// Software systems and computational methods.
2022. № 4.
P. 39-53.
DOI: 10.7256/2454-0714.2022.4.39289 EDN: ZAAPXY URL: https://en.nbpublish.com/library_read_article.php?id=39289
Abstract:
The article highlights aspects of the development of the LISP interpreter. Despite the fact that LISP is not the most popular language these days (in the TIOBE index for November 2022, this language is in 30th place), the work done by the authors is relevant. Many popular ideas and software technologies today were first developed using LISP machines. The developed interpreter allows the programmer to avoid defining program elements (functions, classes, etc.) unnecessarily. Also, the development result allows you to run any LISP entity that returns a meaningful result. Modern LISP interpreters do not have the ability to overload functions, which is why users have to memorize a huge number of function names whose actions are of the same type. This greatly complicates the learning process, since you have to look for the names of primitive functions in the documentation. Because of this, most of the potential users drop out of training, returning to modern programming languages, without knowing the possibilities of the LISP language. The article reveals the creation of a LISP interpreter capable of competing with modern programming languages in terms of ease of interaction with objects. The article also suggests an approach that provides a garbage collection mechanism by counting references to objects.
Keywords:
lisp interpreter, interpreter development, garbage collector, C language, programming languages, lisp programming, object-oriented programming, lateral lisp, common lisp, functional programming
Programming languages
Reference:
Volushkova V.L., Volushkova A.Y.
A Single Specification Format as a Microservice API Artifact when Using API-First
// Software systems and computational methods.
2022. № 4.
P. 54-62.
DOI: 10.7256/2454-0714.2022.4.39235 EDN: MFEXNN URL: https://en.nbpublish.com/library_read_article.php?id=39235
Abstract:
The object of research is the interaction protocols (API - Application Programming Interface) of microservices. The microservices API is an important development object because each microservice can be a client for any other microservice and be created by a separate team. To build a unified system of interaction between microservices, the API-First methodology for synchronizing communication protocols for server applications was used. The aim of the work is to create a way to develop API microservices of server java applications using spring-boot, spring-web, openapi-generator, springdoc libraries. The method is based on the fact that the API is the most important part of the product and therefore is created at the initial design stage. An approach based on a single microservices API and TDD testing technique is proposed, which increases the efficiency of managing the development of server-side java applications. The microservices API is built using the specification as the API artifact. The developed technique allows: use the created API by another team, regardless of the development language; increase the productivity of development teams; to carry out a qualitative description of methods and models; reduce the amount of routine code by generating code from the specification; identify API design errors earlier than with the standard development approach (API after implementation) by applying TDD and working with the API before it is implemented.
Keywords:
Rest client, development cycle, Application server, microservices, TDD technique, testing, code-frist, API-First, API, spring
Educational software systems
Reference:
Koronkov S.O.
Methodology of automated study of the workload of a helicopter pilot
// Software systems and computational methods.
2022. № 4.
P. 63-74.
DOI: 10.7256/2454-0714.2022.4.36459 EDN: MIVFFZ URL: https://en.nbpublish.com/library_read_article.php?id=36459
Abstract:
The subject of the study is the contradiction between the need to conduct a study of the workload of helicopter pilots and the lack of methods regulated by regulatory and technical documents to ensure that such studies are carried out during the testing of new aircraft. The purpose of the study was to ensure the possibility of objectification of the pilot's workload during testing of modernized and created helicopter models, as well as in the process of flight simulator training. The author examines in detail such aspects of the topic as the development of a pilot workload research program; the completion of a helicopter by installing a set of technical means for studying attention reserves; determining the pilot's workload; determining the integral indicator of the pilot's workload and drawing up a conclusion based on the results of the workload study. The main conclusion of the conducted theoretical and experimental research is that the developed methodology for studying the workload of a helicopter pilot, based on determining the reserves of his attention when performing professional activities, provides an adequate definition of the workload when performing helicopter tests on semi-natural modeling complexes and during flight simulator training. The results of verification and research of the effectiveness of the developed solutions have shown that the objectification of the pilot's workload during helicopter testing provides an opportunity to substantiate industry recommendations on the refinement and improvement of the layout of helicopter cabins, to rationalize the points of the flight part of the test program and to intensify the process of professional training of flight personnel.
Keywords:
helicopter pilot, work load, attention reserves, solving an additional problem, flight training, aviation testing, pilot training, aviation ergonomics, flight psychology, aviation psychophysiology
Mathematical models and computer simulation experiment
Reference:
Kovalev S., Smirnova T., Filippov V., Andreeva A.
About Modeling Digital Twins of a Social Group
// Software systems and computational methods.
2022. № 4.
P. 75-83.
DOI: 10.7256/2454-0714.2022.4.39264 EDN: MPUQIE URL: https://en.nbpublish.com/library_read_article.php?id=39264
Abstract:
The object of the study is mathematical modeling methods. The subject of the study is the application of mathematical methods in modeling digital twins of a social group. The aim of the work is to model the digital counterparts of a social group. A digital double is a digital copy of a physical object or process, with the right approach, it helps to improve the main and auxiliary business processes. This concept is part of the fourth industrial revolution and is designed to help detect problems faster, find out what will happen to the original in different conditions and, as a result, produce better products. In this article, some applied aspects are considered, the main provisions of the mathematical theory of digital twins of social groups are presented. To solve the problem of creating a digital double of a social group (students) as one of the tools, the authors proposed to use the technologies of population algorithms. The novelty of the research consists in the application of the swarm part algorithm for modeling digital twins of a social group. The particle swarm method was chosen as a research tool. As the social group under study finds the optimal position in space, so the element of the digital twin of the particle swarm model based on them can search in space, in particular, the extremes of functions. Which, for example, is applicable to finding the minimum of the loss function in machine learning. A graphical simulation in the Java Script language was performed using the three library.js. Data processing was performed using the C# Job System, which provides parallelization of computing processes and is integrated into the Entity Component System. A program was implemented that simulates the activity of a student group as one of the constituent elements of a digital twin of a social group. Swarm algorithms are promising in the field of practical application. On their basis, it is possible not only to solve the problems of digital twins, but also to manage groups of robots, robotic systems and complexes.
Keywords:
library Job System, population algorithms, JavaScript language, boids model, swarm algorithms, mathematical model, social group, digital twin, search algorithm, model parallelization