Inhaltsverzeichnis
♦ interne Links
♦ externe Links
♦ Notizen
♦ Befehle
♦ php-Code-Schnipsel
♦ HTML-Sonderzeichen
♦ MYSQL-Datentypen
♦ PHP fopen args
interne Links
top
externe Links
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 |
| ‘ |
‘ |
|
einfaches Anführungzeichen |
left single quote |
| ’ |
’ |
|
einfaches Anführungzeichen |
right single quote |
| ‚ |
‚ |
|
einfaches unteres Anführungszeichen |
single low-9 quote |
| “ |
“ |
|
Anführungszeichen |
left double quote |
| ” |
” |
|
Anführungszeichen |
right double quote |
| „ |
„ |
|
Anführungszeichen unten |
double low-9 quote |
| † |
† |
|
|
dagger |
| ‡ |
‡ |
|
|
double dagger |
| ‰ |
‰ |
|
Promil |
per mill sign |
| ‹ |
‹ |
|
|
single left-pointing angle quote |
| › |
› |
|
|
single right-pointing angle quote |
| ♠ |
♠ |
|
Spielkarte Blatt |
black spade suit |
| ♣ |
♣ |
|
Spielkarten Kreuz |
black club suit |
| ♥ |
♥ |
|
Spielkarte Herz |
black heart suit |
| ♦ |
♦ |
|
Spielkarte Karo |
black diamond suit |
| ‾ |
‾ |
|
obere Linie |
overline = spacing overscore |
| ← |
← |
|
Pfeil links |
leftward arrow |
| → |
→ |
|
Pfeil rechts |
rightward arrow |
| ↑ |
↑ |
|
Pfeil aufwärts |
upward arrow |
| ↓ |
↓ |
|
Pfeil abwärts |
downward arrow |
| ™ |
™ |
|
Trademark Zeichen |
trademark sign |
| |
|
	 |
horizontaler Tabulator |
horizontal tab |
| |
|
|
line feed |
line feed |
| |
|
  |
Leerzeichen |
space |
| ! |
|
! |
Ausrufungszeichen |
exclamation mark |
| " |
" |
" |
doppelte Anführungszeichen |
double quotation mark |
| # |
|
# |
|
|
| $ |
|
$ |
Dollarzeichen |
dollar sign |
| % |
|
% |
Prozentzeichen |
percent sign |
| & |
& |
& |
kaufmänisches Und-Zeichen |
ampersand |
| ' |
|
' |
Apostroph |
apostrophe |
| ( |
|
( |
Klammer auf |
left parenthesis |
| ) |
|
) |
Klammer zu |
right parenthesis |
| * |
|
* |
Stern (Asterisk) |
asterisk |
| + |
|
+ |
Plus-Zeichen |
plus sign |
| , |
|
, |
Komma |
comma |
| - |
|
- |
Bindestrich |
hyphen |
| . |
|
. |
Periodenzeichen |
period |
| ⁄ |
⁄ |
/ |
Slash |
slash |
| 0 |
|
0 |
Zahlen 0 bis |
digits 0- |
| 9 |
|
9 |
9 |
digit 9 |
| : |
|
: |
Doppelpunkt |
colon |
| ; |
|
; |
Strich-Punkt |
semicolon |
| < |
< |
< |
Kleiner als Zeichen |
less-than sign |
| = |
|
= |
Gleichzeichen |
equals sign |
| > |
> |
> |
Größer-als-Zeichen |
greater-than sign |
| ? |
|
? |
Fragezeichen |
question mark |
| @ |
|
@ |
Klammeraffee |
at sign |
| A bis |
|
A |
Großbuchstaben A bis |
uppercase letters A- |
| Z |
|
Z |
Z |
uppercase letters Z |
| [ |
|
[ |
eckige Klammer links |
left square bracket |
| \ |
|
\ |
Backslash |
backslash |
| ] |
|
] |
eckige Klammer rechts |
right square bracket |
| ^ |
|
^ |
Dach |
caret |
| _ |
|
_ |
unterstrichen |
horizontal bar (underscore) |
| ` |
|
` |
Accent grave |
grave accent |
| a bis |
|
a |
Kleinbuchstaben a bis |
lowercase letters a- |
| z |
|
z |
Kleinbuchstaben bis z |
lowercase letters -z |
| { |
|
{ |
geschweifte Klammer auf |
left curly brace |
| | |
|
| |
Vertikaler Strich |
vertical bar |
| } |
|
} |
geschweifte Klammer zu |
right curly brace |
| ~ |
|
~ |
Tilde |
tilde |
| – |
– |
– |
kurzer Bindestrich |
en dash |
| — |
— |
— |
Gedankenstrich |
em dash |
| ¡ |
¡ |
¡ |
umgekehrtes Ausrufungszeichen |
inverted exclamation |
| ¢ |
¢ |
¢ |
Cent |
cent sign |
| £ |
£ |
£ |
engl. Pfund |
pound sterling |
| ¤ |
¤ |
¤ |
generelles Währungszeichen |
general currency sign |
| ¥ |
¥ |
¥ |
Währung Yen |
yen sign |
| ¦ |
¦ oder &brkbar; |
¦ |
unterbrochene vertikale Linie |
broken vertical bar |
| § |
§ |
§ |
Paragraphenzeichen |
section sign |
| ¨ |
¨ oder ¨ |
¨ |
Umlaut-Zeichen |
umlaut |
| © |
© |
© |
Copyright |
copyright |
| ª |
ª |
ª |
|
feminine ordinal |
| « |
« |
« |
|
left angle quote |
| ¬ |
¬ |
¬ |
Zeichen für Nicht |
not sign |
| |
­ |
­ |
weiches Trennzeichen |
soft hyphen |
| ® |
® |
® |
eingetragenes Warenzeichen |
registered trademark |
| ¯ |
¯ oder &hibar; |
¯ |
|
macron accent |
| ° |
° |
° |
Grad-Zeichen |
degree sign |
| ± |
± |
± |
Plus-Minus Zeichen |
plus or minus |
| ² |
² |
² |
2 hochgestellt |
superscript two |
| ³ |
³ |
³ |
3 hochgestellt |
superscript three |
| ´ |
´ |
´ |
|
acute accent |
| µ |
µ |
µ |
Mycro-Zeichen |
micro sign |
| ¶ |
¶ |
¶ |
Paragrafen-Zeichen |
paragraph sign |
| · |
· |
· |
Punkt mittig |
middle dot |
| ¸ |
¸ |
¸ |
|
cedilla |
| ¹ |
¹ |
¹ |
hochgestellte eins |
superscript one |
| º |
º |
º |
|
masculine ordinal |
| » |
» |
» |
|
right angle quote |
| ¼ |
¼ |
¼ |
einviertel |
one-fourth |
| ½ |
½ |
½ |
einhalb |
one-half |
| ¾ |
¾ |
¾ |
dreiviertel |
three-fourths |
| ¿ |
¿ |
&#; |
Fragezeichen auf Kopf |
inverted question mark |
| Ä |
Ä |
Ä |
Umlaut Ä |
uppercase A, umlaut |
| Ö |
Ö |
Ö |
Umlaut Ö |
uppercase O, umlaut |
| × |
× |
&#; |
Multiplikationszeichen |
multiplication sign |
| Ø |
Ø |
Ø |
|
uppercase O, slash |
| Ü |
Ü |
Ü |
Umlaut Ü |
uppercase U, umlaut |
| ß |
ß |
ß |
sz |
lowercase sharps, German |
| ä |
ä |
ä |
Umlaut ä |
lowercase a, umlaut |
| ö |
ö |
ö |
Umlaut ö |
lowercase o, umlaut |
| ÷ |
÷ |
÷ |
Geteilt Zeichen |
division sign |
| ø |
ø |
ø |
Durchschnittzeichen klein |
lowercase o, slash |
| ü |
ü |
ü |
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