Darbo aktualumas. Interneto technologijų spartus tobulėjimas ir dideli klientų poreikiai lėmė statinių internetinių svetainių pasikeitimą į interaktyvias ir daugiafunkcines aplikacijas. Didelės apimties interaktyvios aplikacijos reikalauja daug resursų atnaujinti dokumento modelio elementus ir juos perpiešti, tad siekiant užtikrinti greitesnį dokumento elementų atsinaujinimą, naudojamas virtualus dokumento JavaScript modelis. Sukurtas virtualus modelis yra lyginamas su esamu, randami skirtumai ir puslapis yra dinamiškai atnaujinamas. Taip programos kūrimo procesas yra palengvinamas, nes programuotojas gali susitelkti ties aplikacijos logika, karkasui, pasirūpinant aplikacijos dinamiškumu.
Darbo problema. Didelio virtualaus dokumento medžio lyginimas su esamu pasikeitusiu dokumento medžiu stipriai sulėtina aplikacijos veikimą, ypač tais atvejais, kuomet pasikeitus tik keliems elementams aplikacijoje yra tikrinami visi medžio elementai. Algoritmas, galintis sumažinti šį iteracijų skaičių svarbia dalimi, reikštų didžiulį visų Javascript karkasų, naudojančių suderinimo algoritmą, sistemų pagreitinimą. Sukurtas algoritmas galėtų praleisti pomedžius su garantuotu stabilumu, remiantis statine komponentų priklausomybių analize.
Darbo objektas. Sukurtas algoritmas galės greitai ir tiksliai nustatyti pasikeitusią aplikacijos elementų būseną. Algoritmo veikimo principas - naudojant darbo uždaviniuose pateiktas praktikas, pasiekti greičiausią įmanomą optimalų veikimą.
Darbo tikslas. Darbo tikslas yra sukurti karkaso suderinimo algoritmą, kuris pareikalautų kuo mažiau resursų, lyginant virtualų ir esamą dokumento medžius.
Darbo uždaviniai: • Naudojant Merkle medžius ar panašų maišos triuką sužinoti, kurios medžio dalys pasikeitė. • Naudoti bitų vėliavėles, kad būtų galima rasti medžio šaką, kurioje būtų lyginami pakeitimai. • Ištirti, kaip kūrimo laiko procesas galėtų sukurti komponentams būdingus suderinimo kelius, efektyviai kurdamas pasirinktinius skirtingų tipų komponentų diferencijavimo algoritmus. • Ištirti, kaip tam tikros derinimo proceso dalys galėtų panaudoti GPU skaičiavimo galimybes lygiagrečiam didelių komponentų medžių apdorojimui. • Aptarti sukurto algoritmo architekūrinį modelį. • Vizualizuoti veikimo modelį. • Sukurti javascritpt karkasą ir viskas reikalingas funkcijas, kurio pasinaudojant būtų įgyvendinamas šis algoritmas. • Aptarti skirtumus tarp sukurto algoritmo ir esamo populiariausio React algoritmo. • Pademonstruoti bei ištestuoti algoritmą. • Ištirti egzistuojančias kodo efektyvumo vertinimo metodikas ir pritaikyti jas šiame darbe. • Sukurti eksperimentus pasiūlyto algoritmo įvertinimui. • Dokumentuoti sukurto algoritmo funkcionalumą.
Relevance of the work. The rapid development of Internet technologies and high customer demands have led to the transformation of static websites into interactive and multifunctional applications. Large-scale interactive applications require a lot of resources to update and redraw document model elements, so in order to ensure faster document element updates, a virtual JavaScript document model is used. The created virtual model is compared with the existing one, differences are found and the page is dynamically updated. This simplifies the application development process, as the programmer can focus on the application logic and framework, taking care of the application’s dynamism.
Problem under study. Comparing a large virtual document tree with an existing modified document tree significantly slows down the application, especially in cases where all elements of the tree are checked in the application after only a few elements have changed. An algorithm that could significantly reduce this number of iterations would mean a huge speedup for all Javascript frameworks that use the matching algorithm. The developed algorithm could skip subtrees with guaranteed stability, based on static analysis of component dependencies.
Subject of work. The created algorithm will be able to quickly and accurately determine the changed state of application elements. The principle of operation of the algorithm is to achieve the fastest possible optimal operation using the practices presented in the work tasks.
Tasks: • Using Merkle trees or a similar hash trick, find out which parts of the tree have changed. • Use bit flags to find the branch of the tree where the changes are compared. • Explore how the build-time process could create component-specific alignment paths, effectively creating custom algorithms for different types of components differentiation. • Explore how certain parts of the alignment process could use GPU computing capabilities for parallel processing of large component trees. • Discuss the architectural model of the developed algorithm. • Visualize the operating model. • Create a JavaScript framework and all the necessary functions to implement this algorithm. • Discuss the differences between the developed algorithm and the current most popular React algorithm. • Demonstrate and test the algorithm. • Explore existing code efficiency evaluation methodologies and apply them to this work. • Create experiments to evaluate the proposed algorithm. • Document the functionality of the developed algorithm.
| Bakalauro kursinio darbo |
| Moderniosios interneto paslaugos (moderniųjų interneto paslaugų kūrimas ir jų tyrimai kontekstualizuotose aplinkose, pavyzdžiui, mobiliose, mikro servisuose) |
| Paslaugų integracija (moderniųjų informacinių sistemų, paslaugų ar kitų išorinių komponentų integracija pagal taikymo sritį, architektūrinių sprendinių kūrimas bei tyrimai, įskaitant įvairių taikomųjų sričių signalų apdorojimo uždavinius) |
| Naudotojui palankus projektavimas (žmogaus ir kompiuterio sąveikos vertinimas, sprendinių kūrimas siekiant didinti panaudojamumą ir prieinamumą, garso ir vaizdo technologijų taikymai moderniose sistemose) |