Mis on hajusrakendus?
Töötab rohkem kui ühes arvutis.Работает больше чем на 1 пк
Osad suhtlevad omavahel võrgu kaudu. Части общаются между собой посредством сети. Может находиться и на одном пк
Lihtsam variant on klient ja server(kaks osa). Легкий вариант клиент и сервер
Näiteks: veebisait,mis on jaotatud front ja back end projektideks. Например сайт,который использует и фронт энд и бэк энд. (React,Svelte,Vue,Vanilla,KS,Node,PHP,Ruby,Java,C++)
Näide: front end: React/Vue/…/vanilla JS
Более сложный вариант:Mikroteenused arhitektuur,Архитектура микро услуг
Hajurakenduste Eelised
Tööjaotus.Распределение работы между командами
Skaleeritavus.Распределение ресурсовю-это задача выбора наилучшего c точки зрения некоторого критерия варианта использования ограниченных ресурсов.
Taaskasutus.Взаимодействие
SSR rohkem. CCH сложнее
Hajurakenduste MUUDUSED
Rohkem tööd
Keerulisem arhitektuur
XML
Под этим понимается текстовый формат файла
Написанные элементы кажутся на первый взгляд как простой html
Но XHTML составляется страница – одно из приложений языка XML
Если <br>в html записывается без закрывающего тэга,а в xhtml бесконечно много команд. Каждый пользователь создает команды сам
XML хранит иерархическую структуру данных
XML и XSLT Kuidas tootavad koos? Teha koodi näidis
XML
<?xml version="1.0" encoding="utf-8" ?>
<inimene synd="1926">
<nimi>Elizabeth II</nimi>
<synniaasta>1926</synniaasta>
<lapsed>
<inimene synd="1950">
<nimi>Anne, Princess Royal</nimi>
<synniaasta>1950</synniaasta>
</inimene>
<inimene synd="1948">
<nimi>Charles, Prince of Wales</nimi>
<synniaasta>1948</synniaasta>
<lapsed>
<inimene synd="1982">
<nimi>William</nimi>
<synniaasta>1982</synniaasta>
<lapsed>
<inimene synd="2013">
<nimi>George</nimi>
<synniaasta>2013</synniaasta>
</inimene>
</lapsed>
<lapsed>
<inimene synd="2018">
<nimi>Louis</nimi>
<synniaasta>2018</synniaasta>
</inimene>
</lapsed>
</inimene>
<inimene synd="1985">
<nimi>Harry</nimi>
<synniaasta>1985</synniaasta>
<lapsed>
<inimene>
<nimi>Archi</nimi>
<synniaasta>2021</synniaasta>
</inimene>
</lapsed>
</inimene>
</lapsed>
</inimene>
<inimene synd="1960">
<nimi>Andrew, Duke of York</nimi>
<synniaasta>1960</synniaasta>
</inimene>
<inimene synd="1964">
<nimi>Edward, Earl of Wessex</nimi>
<synniaasta>1964</synniaasta>
<lapsed>
<inimene synd="1964">
<nimi>Windsor</nimi>
<synniaasta>2003</synniaasta>
</inimene>
</lapsed>
</inimene>
</lapsed>
</inimene>
XSLT
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="xml" encoding="utf-8" indent="yes"/>
<xsl:template match="/">
Esimene inimene:
<xsl:value-of select="/inimesed/inimene[1]/eesnimi"/>
<br/>
Viimane inimene:
<xsl:value-of select="/inimesed/inimene[last()]/eesnimi"/>
<br/>
Esitäht:
<xsl:value-of select="substring(/inimesed/inimene[last()]/eesnimi,1,1)"/>
<br/>
Oma initsialid:
<xsl:value-of select="concat(
substring(/inimesed/inimene[1]/eesnimi,1,1),'. ',
substring(/inimesed/inimene[1]/perenimi,1,1),'.')"/>
<br/>
Oma ees ja perenimi pikkus on:
<xsl:value-of select="
string-length(/inimesed/inimene[1]/eesnimi)+
string-length(/inimesed/inimene[1]/perenimi)"/>
<br/>
Mitu inimest on xml failis?
<xsl:value-of select="count(/inimesed/inimene)"/>
<br/>
Mitu inimest on sündinud 2004 aastal?
<xsl:value-of select="count(/inimesed/inimene[synd=2004])"/>
<br/>
Kordused - näitame kõik perekonnanimed ja sünniaastad
<ul>
<xsl:for-each select="/inimesed/inimene">
<li>
<xsl:value-of select="concat(
perenimi, ', ', synd)"/>
</li>
</xsl:for-each>
</ul>
<br/>
1. Näidata kõik nimed mis algavad A tähega
<ul>
<xsl:for-each select="/inimesed/inimene[substring(eesnimi,1,1)='A']">
<xsl:value-of select="eesnimi"/>,
</xsl:for-each>
</ul>
2. Näita kõik viimased perenimi tähed
<ul>
<xsl:for-each select="/inimesed/inimene">
<xsl:value-of select="substring(perenimi,string-length(perenimi),1)"/>,
</xsl:for-each>
</ul>
<br/>
</xsl:template>
</xsl:stylesheet>
Näidata lastele tema vanema
XML ja PHP Kuidas naidata xml faili sisu PHP kaudu?Teha koodi naidis
XML
<?xml version="1.0" encoding="utf-8" ?>
<inimene synd="1926">
<nimi>Elizabeth II</nimi>
<synniaasta>1926</synniaasta>
<lapsed>
<inimene synd="1950">
<nimi> Anne,Princess Royal </nimi>
<synniaasta>1950</synniaasta>
</inimene>
<inimene synd="1948">
<nimi>Charles,Prince of Wales</nimi>
<synniaasta>1948</synniaasta>
<lapsed>
<inimene synd="1982">
<nimi>William</nimi>
<synniaasta>1982</synniaasta>
</inimene>
<inimene synd="1985">
<nimi>Harry</nimi>
<synniaasta>1985</synniaasta>
<br/>
<lapsed>
<inimene>
<nimi>Alex</nimi>
<synniaasta>2021</synniaasta>
</inimene>
</lapsed>
<lapsed>
<inimene>
<nimi>Sergey</nimi>
<synniaasta>2021</synniaasta>
</inimene>
</lapsed>
<lapsed>
<inimene>
<nimi>Maxim</nimi>
<synniaasta>2021</synniaasta>
</inimene>
</lapsed>
<lapsed>
<inimene>
<nimi>Andrei</nimi>
<synniaasta>2021</synniaasta>
</inimene>
</lapsed>
<lapsed>
<inimene>
<nimi>Artem</nimi>
<synniaasta>2021</synniaasta>
</inimene>
</lapsed>
</inimene>
</lapsed>
</inimene>
<inimene synd="1960">
<nimi>Andrew,Duke of York</nimi>
<synniaasta>1960</synniaasta>
</inimene>
<inimene synd="1964">
<nimi>Edward, Earl of Wessex</nimi>
<synniaasta>1964</synniaasta>
</inimene>
</lapsed>
</inimene>
PHP
<?php
$xml=simplexml_load_file("sugupuu.xml");
// valjastab massivist getChildrens
function getPeoples($xml){
$array=getChildrens($xml);
return $array;
}
// Выводит данные детей
function getChildrens($people){
$result=array($people);
$childs=$people->lapsed->inimene;
if(empty($childs))
return $result;
foreach ($childs as $child){
$array=getChildrens($child);
$result=array_merge($result, $array);
}
return $result;
}
function getParent($peoples,$people){
if($people==null) return null;
foreach($peoples as $parent) {
if(!hasChilds($parent)) continue;
foreach ($parent->lapsed->inimene as $child) {
if ($child->nimi == $people->nimi) {
return $parent;
}
}
}
return null;
}
function hasChilds($people){
return !empty($people ->lapsed ->inimene);
}
$peoples=getPeoples($xml);
?>
<!DOCTYPE html>
<html lang="et">
<head>
<meta charset ="UTF-8">
<title>Sugupuu Ulesanded</title>
</head>
<body>
<h1>Elizabeth</h1>
<?php
foreach($peoples as $people){
echo $people->attributes()->synd.'. ';
}
?>
<hr></hr>
<h2> Väljastatakse nimed, kel on vähemalt kaks last / Вывести все имена, у кого мин 2 ребенка /</h2>
<?php
foreach ($peoples as $people){
$lapsed = $people -> lapsed -> inimene;
if(empty($lapsed)) continue;
if(count($lapsed)>1){
echo $people->nimi. ' - '. count($lapsed). 'last<br>';
}
}
?>
<h2>3,4,5, ...</h2>
<table border="1">
<tr>
<th>Vanema vanem</th>
<th>Vanem</th>
<th>Laps</th>
<th>Sunniaasta</th>
<th>Vanus</th>
</tr>
<?php
foreach ($peoples as $people){
$parent=getParent($peoples, $people);
if(empty($parent)) continue;
$parentOfParent=getParent($peoples,$parent);
echo '<tr>';
if(empty($parentOfParent)){
echo '<td bgcolor="yellow">puudub</td>';
} else
echo '<td>' . $parentOfParent -> nimi.'</td>';
echo '<td>'. $parent ->nimi.'</td>';
echo '<td>'. $people ->nimi.'</td>';
echo '<td>'. $people->attributes()->synd.'</td>';
$yearNow=(int)date("Y");
$childrenYear=(int)$people->attributes()->synd;
echo '<td>'.($yearNow - $childrenYear).'</td>';
echo '</tr>';
}
?>
</table>
</body>
</html>