Hajusrakendused

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

Kõik nimed sünniaastate jarjekorras

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>