vstup/skriptování.xml
author František Kučera <franta-hg@frantovo.cz>
Sat, 23 Jun 2012 20:40:18 +0200
changeset 98 532deb4b908e
parent 97 6181a00e0ffd
child 99 81056b24a948
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 #i.put("bash", "/bin/bash");
    50 	if (/podporovanýJazyk\.put\("(\w+)",\s*"(.*)"\);/) {
    51 		print "<tr><td><code>$1</code></td><td><code>$2</code></td></tr>\n";
    52 	}
    53 }
    54 				]]></m:skript>
    55 			</tbody>
    56 		</table>
    57 
    58 		<h2>Perl</h2>
    59 		<p>Jazyky použité nebo citované na této stránce:</p>
    60 		<pre><m:skript jazyk="perl"><![CDATA[
    61 use strict;
    62 
    63 open(XML, "<", $ENV{"XWG_STRANKA_SOUBOR"});
    64 my %skripty;
    65 
    66 while (<XML>) {
    67 	if (/m:skript\s+jazyk="(\w+)"/) {
    68 		$skripty{$1}++;
    69 	}
    70 }
    71 
    72 for(keys(%skripty)) {
    73 	print "$skripty{$_}×\t $_\n";
    74 }
    75 			]]></m:skript></pre>
    76 
    77 			<h2>BASH</h2>
    78 		<pre><m:skript jazyk="bash"><![CDATA[
    79 echo -n "Právě je: ";
    80 date;
    81 echo -n "Operační systém: ";
    82 uname -sir;
    83 echo -n "SHA-1 otisk zdrojáku této stránky: ";
    84 sha1sum < $XWG_STRANKA_SOUBOR;
    85 			]]></m:skript></pre>
    86 
    87 			<!--
    88 			<h2>PHP</h2>
    89 			<pre style="max-height: 200px;"><m:skript jazyk="php"><![CDATA[
    90 <?php
    91 phpinfo();
    92 ?>
    93 			]]></m:skript></pre>
    94 			-->
    95 
    96 			<h2>Proměnné prostředí</h2>
    97 			<p>
    98 				Ve skriptech máme dostupné následující proměnné prostředí:
    99 			</p>
   100 			
   101 			<table>
   102 				<thead>
   103 					<tr>
   104 						<td>Proměnná</td>
   105 						<td>Význam</td>
   106 					</tr>
   107 				</thead>
   108 				<tbody>
   109 					<m:skript jazyk="perl" výstup="xml"><![CDATA[
   110 use strict;
   111 
   112 open(JAVA, "<", $ENV{"XWG_SKRIPTOVANI_JAVA"}) or die $!;
   113 
   114 while (<JAVA>) {
   115 #i.put("bash", "/bin/bash");
   116 	if (/"(.*)=".*\/\/\s+env:(.*)/) {
   117 		print "<tr><td><code>$1</code></td><td>$2</td></tr>\n";
   118 	}
   119 }
   120 					]]></m:skript>
   121 				</tbody>
   122 			</table>
   123 			
   124 			<p>
   125 				Kód:
   126 			</p>
   127 			
   128 			<m:pre jazyk="xml"><![CDATA[<m:skript jazyk="bash">
   129 echo "URI:    $XWG_STRANKA_URI";
   130 echo "Soubor: $XWG_STRANKA_SOUBOR";
   131 echo "Nadpis: $XWG_STRANKA_NADPIS";
   132 echo "Perex:  $XWG_STRANKA_PEREX";
   133 </m:skript>]]></m:pre>
   134 			
   135 			<p>nám vypíše:</p>
   136 			
   137 			<pre><m:skript jazyk="bash"><![CDATA[
   138 echo "URI:    $XWG_STRANKA_URI" | sed s/\\/home\\/$USER/\\/home\\/xwg/g;
   139 echo "Soubor: $XWG_STRANKA_SOUBOR" | sed s/\\/home\\/$USER/\\/home\\/xwg/g;
   140 echo "Nadpis: $XWG_STRANKA_NADPIS";
   141 echo "Perex:  $XWG_STRANKA_PEREX";
   142 		]]></m:skript></pre>
   143 
   144 	</text>
   145 
   146 </stránka>
   147