vstup/skriptování.xml
author František Kučera <franta-hg@frantovo.cz>
Sat, 23 Jun 2012 21:10:21 +0200
changeset 101 024ee27ce4fa
parent 100 c35c97d14d53
child 102 ca045963fced
permissions -rw-r--r--
drobnosti
     1 <stránka
     2 	xmlns="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana"
     3 	xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro">
     4 	<nadpis>Skriptování</nadpis>
     5 	<perex>Na stránku můžeme vložit výstup skriptů.</perex>
     6 	<pořadí>50</pořadí>
     7 
     8 	<text xmlns="http://www.w3.org/1999/xhtml">
     9 	
    10 		<p>
    11 			Na stránkách můžeme používat skripty.
    12 			Spouští se při generování a jejich standardní výstup se vloží do stránky.
    13 			Třeba doprostřed textu ostavce nebo do jiného elementu.
    14 		</p>
    15 		<p>
    16 			Příklad:
    17 			<em>
    18 				Tyto stránky byly vygenerované v systému
    19 				<span title="tento text pochází ze skriptu"><m:skript jazyk="bash">uname -o</m:skript></span>.
    20 			</em>
    21 		</p>
    22 
    23 		<p>
    24 			Díky skriptování můžeme stránky obohatit o prakticky libovolný obsah.
    25 			Tato funkce ale může být nebezpečná – pokud byste spustili generátor na stránkách,
    26 			které psal někdo nedůvěryhodný a vložil do nich škodlivý kód.
    27 			Proto je skriptování ve výchozím stavu vypnuté – je potřeba ho povolit v souboru <code>web.conf</code>.
    28 		</p>
    29 
    30 		<h2>Podporované jazyky</h2>
    31 		<p>
    32 			V současnosti jsou podporované tyto jazyky:
    33 		</p>
    34 		
    35 		<table>
    36 			<thead>
    37 				<tr>
    38 					<td>Jazyk</td>
    39 					<td>Interpret</td>
    40 				</tr>
    41 			</thead>
    42 			<tbody>
    43 				<m:skript jazyk="perl"  výstup="xml"><![CDATA[
    44 use strict;
    45 
    46 open(JAVA, "<", $ENV{"XWG_SKRIPTOVANI_JAVA"}) or die $!;
    47 
    48 while (<JAVA>) {
    49 	if (/podporovanýJazyk\.put\("(\w+)",\s*"(.*)"\);/) {
    50 		print "<tr><td><code>$1</code></td><td><code>$2</code></td></tr>\n";
    51 	}
    52 }
    53 				]]></m:skript>
    54 			</tbody>
    55 		</table>
    56 
    57 		<h2>Perl</h2>
    58 		<p>Jazyky použité nebo citované na této stránce:</p>
    59 		<!--
    60 			Lepšího výsledku bychom samozřejmě dosáhli pomocí XPath dotazu,
    61 			ale toto je příklad na Perl :-)
    62 		-->
    63 		<pre><m:skript jazyk="perl"><![CDATA[
    64 use strict;
    65 
    66 open(XML, "<", $ENV{"XWG_STRANKA_SOUBOR"});
    67 my %skripty;
    68 
    69 while (<XML>) {
    70 	if (/m:skript\s+jazyk="(\w+)"/) {
    71 		$skripty{$1}++;
    72 	}
    73 }
    74 
    75 for(keys(%skripty)) {
    76 	print "$skripty{$_}×\t $_\n";
    77 }
    78 			]]></m:skript></pre>
    79 
    80 			<h2>BASH</h2>
    81 		<pre><m:skript jazyk="bash"><![CDATA[
    82 echo -n "Právě je: ";
    83 date;
    84 echo -n "Operační systém: ";
    85 uname -sir;
    86 echo -n "SHA-1 otisk zdrojáku této stránky: ";
    87 sha1sum "$XWG_STRANKA_SOUBOR" | cut -f 1 -d " ";
    88 			]]></m:skript></pre>
    89 
    90 			<!--
    91 			<h2>PHP</h2>
    92 			<pre style="max-height: 200px;"><m:skript jazyk="php"><![CDATA[
    93 <?php
    94 phpinfo();
    95 ?>
    96 			]]></m:skript></pre>
    97 			-->
    98 
    99 			<h2>Proměnné prostředí</h2>
   100 			<p>
   101 				Ve skriptech máme dostupné následující proměnné prostředí:
   102 			</p>
   103 			
   104 			<table>
   105 				<thead>
   106 					<tr>
   107 						<td>Proměnná</td>
   108 						<td>Význam</td>
   109 					</tr>
   110 				</thead>
   111 				<tbody>
   112 					<m:skript jazyk="perl" výstup="xml"><![CDATA[
   113 use strict;
   114 
   115 open(JAVA, "<", $ENV{"XWG_SKRIPTOVANI_JAVA"}) or die $!;
   116 
   117 while (<JAVA>) {
   118 #i.put("bash", "/bin/bash");
   119 	if (/"(.*)=".*\/\/\s+env:(.*)/) {
   120 		print "<tr><td><code>$1</code></td><td>$2</td></tr>\n";
   121 	}
   122 }
   123 					]]></m:skript>
   124 				</tbody>
   125 			</table>
   126 			
   127 			<p>
   128 				Kód:
   129 			</p>
   130 			
   131 			<m:pre jazyk="xml"><![CDATA[<m:skript jazyk="bash">
   132 echo "URI:    $XWG_STRANKA_URI";
   133 echo "Soubor: $XWG_STRANKA_SOUBOR";
   134 echo "Nadpis: $XWG_STRANKA_NADPIS";
   135 echo "Perex:  $XWG_STRANKA_PEREX";
   136 </m:skript>]]></m:pre>
   137 			
   138 			<p>nám vypíše:</p>
   139 			
   140 			<pre><m:skript jazyk="bash"><![CDATA[
   141 echo "URI:    $XWG_STRANKA_URI" | sed s/\\/home\\/$USER/\\/home\\/xwg/g;
   142 echo "Soubor: $XWG_STRANKA_SOUBOR" | sed s/\\/home\\/$USER/\\/home\\/xwg/g;
   143 echo "Nadpis: $XWG_STRANKA_NADPIS";
   144 echo "Perex:  $XWG_STRANKA_PEREX";
   145 		]]></m:skript></pre>
   146 
   147 	</text>
   148 
   149 </stránka>
   150