Inhaltsverzeichnis

♦ interne Links
♦ externe Links
♦ Notizen
♦ Befehle
♦ php-Code-Schnipsel
♦ HTML-Sonderzeichen
♦ MYSQL-Datentypen
♦ PHP fopen args


    tbd
top
top

Notizen

_2022a_display.php:
Wenn man alle Seiten im Stueck sehen will, rekursiv mit Tiefe 1 (cron 23:55):
wget -r -l 1 -O alles.html localhost/2022a/_2022a_display.php
(Auch die Stammseite alleine ist zu lange, um sie mit mail senden zu koennen!)

Mysql-Logs wachsen schnell: /var/lib/mysql/binlog.* ... periodisch loeschen!
top

Befehle

find / -type f -size +1m | xargs ls -lahS ... sucht grosze files
du -a / | sort -n -r | head -n 10 ... sucht grosze dirs
usermod -a -G group username ... user einer Gruppe hinzufuegen

mail -s "Betr." a@b.com < ./foo.txt
echo "Text" | mail -s "Betr." a@b.com
top

php-Code-Schnipsel

//=================================================================================================================
// lineare Regression:
//=================================================================================================================
function lin_reg( $y ) {
	$n = count($y);
	$x = array(); $x = range(0,$n-1); // x-array aufbauen

	// ymin auf Nulllinie ziehen
	$ymin = min($y);
	if($ymin < 0){ for($i=0; $i<$n; $i++){ $y[$i]+= abs($ymin); }}
	else         { for($i=0; $i<$n; $i++){ $y[$i]-=     $ymin;  }}
	// y normieren (Division durch Maximum): Maximum = immer 1
	// x Maximum = immer ($n-1); Faktor (n-1)/2 stellt Massstab konstant ein
	$ymax = max($y);
	for($i=0; $i<$n; $i++){
//	$x[$i] /= ($n-1)/2; // M 2:1
		$x[$i] /= $n-1;			// M 1:1
		if($ymax<>0){ $y[$i] /= $ymax; } else { $y[$i]=0; } // div 0 abfangen
	}
	
	$x_sum = array_sum($x);
	$y_sum = array_sum($y);

	$xx_sum = 0;
	$xy_sum = 0;
	for($i = 0; $i < $n; $i++) {
		$xy_sum += ( $x[$i]*$y[$i] );
		$xx_sum += ( $x[$i]*$x[$i] );
	}

	// y = kx +d
	$tmp = (( $n * $xx_sum ) - ( $x_sum * $x_sum )); // div 0 abfangen
	if($tmp<>0){ $k = (( $n * $xy_sum ) - ( $x_sum * $y_sum )) / $tmp; } else { $k = 0; }		
	if($n<>0)  { $d = ( $y_sum - ( $k * $x_sum )) / $n; } else { $d=0; }	
	$g = number_format(rad2deg(atan($k)),1,'.','');
	$k = number_format($k,2,'.','');
	$d = number_format($d,1,'.','');
	
	// Korrelationskoeffizient
	if($n > 0){ // div 0 abfangen
		$x_avg  = $x_sum / $n; // x average
		$y_avg  = $y_sum / $n; // y average
		$x_xavg = [];          // clr  x - xavg
		$y_yavg = [];          // clr  y - yavg
		$xdyd   = [];          // clr (x - xavg) * (y - yavg)
		$xdsqr  = [];          // clr sqr(x - xavg)  
		$ydsqr  = [];          // clr sqr(y - yavg)
		for($i = 0; $i < $n; $i++) {
			$x_xavg[$i] =      $x[$i] - $x_avg;      //  x - xavg
			$y_yavg[$i] =      $y[$i] - $y_avg;      //  y - yavg
			$xdyd[$i]   = $x_xavg[$i] * $y_yavg[$i]; // (x - xavg) * (y - yavg)
			$xdsqr[$i]  = $x_xavg[$i] * $x_xavg[$i]; // sqr(x - xavg)
			$ydsqr[$i]  = $y_yavg[$i] * $y_yavg[$i]; // sqr(y - yavg)
		}
		$xdyd_sum  = array_sum($xdyd);    // sum of products
		$xdsqr_sum = array_sum($xdsqr);   // sum of xdsqr
		$ydsqr_sum = array_sum($ydsqr);   // sum of ydsqr
		$prod = $xdsqr_sum * $ydsqr_sum;
		if($prod>0){ // neg Wurzel u. div 0 abfangen
			$sqrt = sqrt($prod);		
			$kk = number_format($xdyd_sum / $sqrt,2,'.','');
		} else { $kk = 0; }
	} else { $kk = 0; }

	return array(
		'k'   => $k,
		'deg' => $g,
		'd'   => $d,
		'kk'  => $kk
	);
} // func
//=================================================================================================================

$sql = "SELECT * FROM `_pnfma_23` WHERE 1 AND `SYM` = 'TSLA'";
$res = mysqli_query($conn,$sql);
$dat = mysqli_fetch_array($res); mysqli_free_result($res);

$z = $dat['rzeiger'];
// lineare Regression vom Kurs (Anz.Elem. = 'stg')
$i = $dat['stg']-1; $ii = $z; $y = [];
for($i;$i>=0;$i--){
	$y[$i] = $dat[$ii.'_KURS'];
	$ii--; if($ii < 0) { $ii = 59; }
}
$y = array(0,1,2,7,4,5,6,3);
var_dump($y);
$erg = lin_reg($y);
$dat[$z.'_stg'] = $erg['deg'];

echo "
k = ".$erg['k']."  (".$dat[$z.'_stg']."deg)  d = ".$erg['d']."  (kk= ".$erg['kk'].")
"; //================================================================================================================= //================================================================================================================= gehe durch alle Sätze: ---------------------- $conn = verbinde(); op_trend($conn); $res = mysqli_query($conn,"SELECT SYM FROM `_trend` WHERE 1"); while ($t = mysqli_fetch_array($res)) { echo $t['SYM']; ... } mysqli_free_result($res); //================================================================================================================= //================================================================================================================= fehlenden Satz anlegen: ----------------------- $res=mysqli_query($conn,"SELECT SYM FROM `_tick` WHERE 1 AND `SYM` = '".$t['SYM']."'"); $anz=@mysqli_num_rows($res); if($anz==0){ $res=mysqli_query($conn,"INSERT INTO `_tick` (`ID`,`SYM`) VALUES(NULL,'".$t['SYM']."')"); } //================================================================================================================= //================================================================================================================= Daten in Satz eintragen: ------------------------ $x1=$zae.'_TIM'; $x2=$zae.'_ACT'; $x3=$zae.'_VOL'; $x4=$zae.'_SIG'; $sql = "UPDATE `_tick` "; $sql.= "SET `aACT`=$agdalt, `aVOL`=$vgdalt, `zae`=$zae, `$x1`='$tim', `$x2`=$agdneu, `$x3`=$vgdneu, `$x4`=$sign "; $sql.= "WHERE `SYM`='".$set['SYM']."'"; $res = mysqli_query($conn,$sql); //================================================================================================================= //================================================================================================================= Select mit Doppelschritt, wenn * zu gross: ------------------------------------------ $tres=mysqli_query($conn,"SELECT SYM FROM `_trend` WHERE 1"); $tanz=@mysqli_num_rows($tres); if($tanz>0){ for($i=0;$i < $tanz;$i++) { $s=mysqli_fetch_array($tres); $sql="SELECT * FROM `_trend` WHERE 1 AND `SYM` = '".$s['SYM']."'"; $ttres=mysqli_query($conn,$sql); $t=mysqli_fetch_array($ttres); echo $t['zae']; } } //================================================================================================================= //================================================================================================================= suche in _trend im Block des aktuellen Zaehlers und gib sortiert aus: --------------------------------------------------------------------- include("./_includes.php"); $conn = verbinde(); op_trend($conn); $res = mysqli_query($conn,"SELECT SYM,zae FROM `_trend` WHERE 1"); while ($t = mysqli_fetch_array($res)) { $pro = $t['zae']."_PRO"; $dat = $t['zae']."_DATUM"; $sql = "SELECT SYM,".$pro.",".$dat." FROM `_trend` WHERE SYM='".$t['SYM']."'"; $tres = mysqli_query($conn,$sql); $tt = mysqli_fetch_array($tres); mysqli_free_result($tres); if($tt[$pro] > 0.2 and $tt[$dat] == '20190125') { $proerg[$tt['SYM']] = $tt[$pro]; } } // while mysqli_free_result($res); arsort($proerg); foreach($proerg as $key => $value){ echo $key." : ".$value."
"; } mysqli_close($conn); //=================================================================================================================
top

Referenz Sonderzeichen in HTML auszeichnen

folgende Sonderzeichen können entweder über den Namen oder über die Angabe der Nummer sauber in HTML-Code integriert werden. Man spricht bei den Sonderzeichen von maskierten Zeichen.

Aussehen Name Nummer Beschreibung englisch
&lsquo; einfaches Anführungzeichen left single quote
&rsquo; einfaches Anführungzeichen right single quote
&sbquo; einfaches unteres Anführungszeichen single low-9 quote
&ldquo; Anführungszeichen left double quote
&rdquo; Anführungszeichen right double quote
&bdquo; Anführungszeichen unten double low-9 quote
&dagger; dagger
&Dagger; double dagger
&permil; Promil per mill sign
&lsaquo; single left-pointing angle quote
&rsaquo; single right-pointing angle quote
&spades; Spielkarte Blatt black spade suit
&clubs; Spielkarten Kreuz black club suit
&hearts; Spielkarte Herz black heart suit
&diams; Spielkarte Karo black diamond suit
&oline; obere Linie overline = spacing overscore
&larr; Pfeil links leftward arrow
&rarr; Pfeil rechts rightward arrow
&uarr; Pfeil aufwärts upward arrow
&darr; Pfeil abwärts downward arrow
&trade; Trademark Zeichen trademark sign
&#09; horizontaler Tabulator horizontal tab
&#10; line feed line feed
&#32; Leerzeichen space
! &#33; Ausrufungszeichen exclamation mark
" &quot; &#34; doppelte Anführungszeichen double quotation mark
# &#35;
$ &#36; Dollarzeichen dollar sign
% &#37; Prozentzeichen percent sign
& &amp; &#38; kaufmänisches Und-Zeichen ampersand
' &#39; Apostroph apostrophe
( &#40; Klammer auf left parenthesis
) &#41; Klammer zu right parenthesis
* &#42; Stern (Asterisk) asterisk
+ &#43; Plus-Zeichen plus sign
, &#44; Komma comma
- &#45; Bindestrich hyphen
. &#46; Periodenzeichen period
&frasl; &#47; Slash slash
0 &#48; Zahlen 0 bis digits 0-
9 &#57; 9 digit 9
: &#58; Doppelpunkt colon
; &#59; Strich-Punkt semicolon
< &lt; &#60; Kleiner als Zeichen less-than sign
= &#61; Gleichzeichen equals sign
> &gt; &#62; Größer-als-Zeichen greater-than sign
? &#63; Fragezeichen question mark
@ &#64; Klammeraffee at sign
A bis &#65; Großbuchstaben A bis uppercase letters A-
Z &#90; Z uppercase letters Z
[ &#91; eckige Klammer links left square bracket
\ &#92; Backslash backslash
] &#93; eckige Klammer rechts right square bracket
^ &#94; Dach caret
_ &#95; unterstrichen horizontal bar (underscore)
` &#96; Accent grave grave accent
a bis &#97; Kleinbuchstaben a bis lowercase letters a-
z &#122; Kleinbuchstaben bis z lowercase letters -z
{ &#123; geschweifte Klammer auf left curly brace
| &#124; Vertikaler Strich vertical bar
} &#125; geschweifte Klammer zu right curly brace
~ &#126; Tilde tilde
&ndash; &#150; kurzer Bindestrich en dash
&mdash; &#151; Gedankenstrich em dash
¡ &iexcl; &#161; umgekehrtes Ausrufungszeichen inverted exclamation
¢ &cent; &#162; Cent cent sign
£ &pound; &#163; engl. Pfund pound sterling
¤ &curren; &#164; generelles Währungszeichen general currency sign
¥ &yen; &#165; Währung Yen yen sign
¦ &brvbar; oder &brkbar; &#166; unterbrochene vertikale Linie broken vertical bar
§ &sect; &#167; Paragraphenzeichen section sign
¨ &uml; oder &die; &#168; Umlaut-Zeichen umlaut
© &copy; &#169; Copyright copyright
ª &ordf; &#170; feminine ordinal
« &laquo; &#171; left angle quote
¬ &not; &#172; Zeichen für Nicht not sign
­ &shy; &#173; weiches Trennzeichen soft hyphen
® &reg; &#174; eingetragenes Warenzeichen registered trademark
¯ &macr; oder &hibar; &#175; macron accent
° &deg; &#176; Grad-Zeichen degree sign
± &plusmn; &#177; Plus-Minus Zeichen plus or minus
² &sup2; &#178; 2 hochgestellt superscript two
³ &sup3; &#179; 3 hochgestellt superscript three
´ &acute; &#180; acute accent
µ &micro; &#181; Mycro-Zeichen micro sign
&para; &#182; Paragrafen-Zeichen paragraph sign
· &middot; &#183; Punkt mittig middle dot
¸ &cedil; &#184; cedilla
¹ &sup1; &#185; hochgestellte eins superscript one
º &ordm; &#186; masculine ordinal
» &raquo; &#187; right angle quote
¼ &frac14; &#188; einviertel one-fourth
½ &frac12; &#189; einhalb one-half
¾ &frac34; &#190; dreiviertel three-fourths
¿ &iquest; &#; Fragezeichen auf Kopf inverted question mark
Ä &Auml; &#196; Umlaut Ä uppercase A, umlaut
Ö &Ouml; &#214; Umlaut Ö uppercase O, umlaut
× &times; &#; Multiplikationszeichen multiplication sign
Ø &Oslash; &#216; uppercase O, slash
Ü &Uuml; &#220; Umlaut Ü uppercase U, umlaut
ß &szlig; &#223; sz lowercase sharps, German
ä &auml; &#228; Umlaut ä lowercase a, umlaut
ö &ouml; &#246; Umlaut ö lowercase o, umlaut
÷ &divide; &#247; Geteilt Zeichen division sign
ø &oslash; &#248; Durchschnittzeichen klein lowercase o, slash
ü &uuml; &#252; Umlaut ü lowercase u, umlaut
top

MySQL-Datentypen

Datentyp Speicherplatz Optionen Beschreibung
TINYINT 1 Byte   [(M)] [U] [Z]   Ganzzahlen von 0 bis 255 oder von -128 bis 127.
SMALLINT 2 Bytes   [(M)] [U] [Z]   Ganzzahlen von 0 bis 65.535 oder von -32.768 bis 32.767.
MEDIUMINT 3 Bytes   [(M)] [U] [Z]   Ganzzahlen von 0 bis 16.777.215 oder von -8.388.608 bis 8.388.607.
INT 4 Bytes   [(M)] [U] [Z]   Ganzzahlen von 0 bis ~4,3 Mill. oder von -2.147.483.648 bis 2.147.483.647.
INTEGER 4 Bytes   [(M)] [U] [Z]   Alias für INT.
BIGINT 8 Bytes   [(M)] [U] [Z]   Ganzzahlen von 0 bis 2^64-1 oder von -(2^63) bis (2^63)-1.
FLOAT 4 Bytes   [(M,D)] [U] [Z]   Fließkommazahl mit Vorzeichen. Wertebereich von -(3,402823466×1038) bis -(1,175494351×10-38), 0 und 1,175494351×10-38 bis 3,402823466×1038.
DOUBLE 8 Bytes   [(M,D)] [U] [Z]   Fließkommazahl mit Vorzeichen. Wertebereich von -(1,79769×10308) bis -(2.22507×10-308), 0 und 2.22507×10-308 bis 1,79769×10308
REAL 8 Bytes   [(M,D)] [U] [Z]   Alias für DOUBLE.
DECIMAL M+x Bytes   [(M,D)] [U] [Z]   Fließkommazahl mit Vorzeichen. Speicherbedarf: x=1 wenn D=0, sonst x=2. Ab MySQL 5.1 binär gespeichert, zuvor als String.
NUMERIC M+x Bytes   [(M,D)] [U] [Z]   Alias für DECIMAL.
DATE 3 Bytes   -   Datum im Format 'YYYY-MM-DD'. Wertebereich von 01.01.1000 bis 31.12.9999.
DATETIME 8 Bytes   -   Datumsangabe im Format 'YYYY-MM-DD hh:mm:ss'. Wertebereich entspricht DATE.
TIMESTAMP 4 Bytes   -   Zeitstempel. Wertebereich: 1.1.1970 bis 19.01.2038. Das Format variiert in den MySQL-Versionen.
TIME 3 Bytes   -   Zeit zwischen -838:59:59 und 839:59:59. Ausgabe: hh:mm:ss.
YEAR 1 Byte   [(2|4)]   Jahr zwischen 1901 bis 2155 bei (4) und zwischen 1970 bis 2069 bei (2).
CHAR M Byte(s)   (M) [BINARY]   Zeichenkette fester Länge M. Wertebereich für M: 0 bis 255.
VARCHAR L+1 Bytes   (M) [BINARY]   Zeichenkette variabler Länge, Maximum ist M. Wertebereich für M: 0 bis 255.
BINARY M Bytes   (M)   Zum Speichern binärer Strings, unabhängig vom Zeichensatz. Wertebereich für M: 0 bis 255. Weiterer Typ: VARBINARY
BLOB L+2 Bytes   (M)   Binäres Objekt mit variablen Daten. Weitere Typen: TINYBLOB, MEDIUMBLOB und LONGBLOB. M ist ab Version 4.1 definierbar.
TEXT L+2 Bytes   (M)   Wie BLOB. Ignoriert beim Sortieren & Vergleichen Groß- und Kleinschreibung. Weitere Typen: TINYTEXT, MEDIUMTEXT, LONGTEXT. M ist ab Version 4.1 definierbar.
ENUM 1 oder 2 Bytes   ('val1', 'val2', ...)   Liste von Werten (val1, val2, ...). 65.535 eineindeutige Elemente sind maximal möglich.
SET x Bytes   ('val1', 'val2', ...)   String-Objekt mit verschiedenen Variablen. 64 sind maximal möglich. Speicherbedarf: x ist 1, 2, 3, 4 oder 8.

Legende

^ = Potenzzeichen
[ ] = Optionaler Parameter
BINARY = Attribut für die Sortierung
D = Anzahl der Kommastellen bei einer Dezimalzahl
L = Stringlänge (Berechnung Speicherbedarf)
M = Maximale Anzahl der gezeigten Stellen
Mill. = Milliarden
U = UNSIGNED (Zahl ohne Vorzeichen)
Z = Zerofill
top

PHP fopen args

Mode|Creates|Reads|Writes|Pointer Starts|Truncates File             |Notes                      |  Purpose
----+-------+-----+------+--------------+---------------------------+---------------------------+-----------------------------------------------------------------
r   |       |y    |      |beginning     |                           |fails if file doesn't exist|  basic read existing file
r+  |       |y    |y     |beginning     |                           |fails if file doesn't exist|  basic r/w existing file
w   |y      |     |y     |beginning+end |y                          |                           |  create, erase, write file
w+  |y      |y    |y     |beginning+end |y                          |                           |  create, erase, write file with read option
a   |y      |     |y     |end           |                           |                           |  write from end of file, create if needed
a+  |y      |y    |y     |end           |                           |                           |  write from end of file, create if needed, with read options
x   |y      |     |y     |beginning     |                           |fails if file exists       |  like w, but prevents over-writing an existing file
x+  |y      |y    |y     |beginning     |                           |fails if file exists       |  like w+, but prevents over writing an existing file
c   |y      |     |y     |beginning     |                           |                           |  open/create a file for writing without deleting current content
c+  |y      |y    |y     |beginning     |                           |                           |  open/create a file that is read, and then written back down
top