Why not setting up your own server log analysis?

I have been relying for 20 years on analog for reading my webserver logs. But maybe … this is a bit outdated, while some newer systems as awstats, google analytics or piwik are too overloaded for me. My more recent approach with plugins like statpress or slimstat considerably degraded my system performance. So why not setting up an own database as this can be done in 30 minutes?
First, get sqliteadmin.php as we need to build a small database “log.sqlite3″. Create a new table by pasting

CREATE TABLE 'visit' ('id' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 'page' TEXT, 'dt' DATETIME DEFAULT CURRENT_TIMESTAMP, 'ip' TEXT, 'name' TEXT);

in the SQL window of sqliteadmin.php and include the following code in the header of all your pages

class MyDB extends SQLite3 { function __construct() { $this->open("log.sqlite3"); } }
$db = new MyDB();
$logpage="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$logip = $_SERVER['REMOTE_ADDR'];
$logip = substr($logip, 0, strrpos($logip, ".")) . ".xxx";
isset($_SERVER['PHP_AUTH_USER'])? $logname = $_SERVER['PHP_AUTH_USER'] : $logname = $_SERVER['REMOTE_USER'];
$sql='INSERT INTO visit (page,ip,name) VALUES ("'.$logpage.'","'.$logip.'","'.$logname.'");';
$db->query($sql);
$db->close();

That’s all we need to record. Maybe you want also a statistics page? Here is it, showing all recorded traffic (and in brackets what is going on today).

<pre>Logfile Analysis
<?php
class MyDB extends SQLite3 { function __construct() { $this->open("log.sqlite3"); } }
$db = new MyDB();
$sql = "SELECT page, count(page) AS c FROM visit 
WHERE round(julianday('now') - julianday(dt)) >=0
GROUP BY page ORDER BY c DESC;";
$ret = $db->query($sql);
while($row = $ret->fetchArray(SQLITE3_ASSOC) ){
  $pagearray[ $row["page"] ] =  $row["c"];
}
$sql = "SELECT page, count(page) AS c FROM visit 
WHERE round(julianday('now') - julianday(dt)) =0
GROUP BY page ORDER BY c DESC;";
$ret = $db->query($sql);
while($row = $ret->fetchArray(SQLITE3_ASSOC) ){
  $pagetoday[ $row["page"] ] = $row["c"];
}
foreach ($pagearray as $key => $page) {
  echo  $page>5 ? "<div class=big>" . $page . "(". $pagetoday[$key] . ")" . "</div>" . $key . "<br>" : FALSE;
}
?>

Looks like we used only 32 lines of code, yea, yea.

Rstudio, knitr (Rmarkdown2) and bash

I couldn’t find any example online how to revise my R code getting the exif data from pictures

fn <- c("/usr/local/bin/exiftool /Users/wjst/Desktop/white.tif")
info <- system(fn,inter=TRUE,wait=TRUE)

when moving now to knitr. So here is what worked for me as a replacement including the parsing
of exiftool output.

```{r, engine='bash', echo=FALSE}
/usr/local/bin/exiftool /Users/wjst/Desktop/white.tif >/Users/wjst/Desktop/white.txt
```
```{r Exif, echo=FALSE}
fn <- '/Users/wjst/Desktop/white.txt'
info <- paste(readLines(fn))
info <- strsplit(info,"[:]{1}[ ]{1}")
info <- matrix(data=unlist(info), ncol = 2, byrow = TRUE)
info <- gsub("(^[[:space:]]+|[[:space:]]+$)", "", info)
```
*Exif*
`r kable(info)`

Was ist sicher und was nicht

Chip.de berichtet, wie die NSA Verschlüsselungen einstuft

Als “trivial” gilt etwa die Verfolgung eines Dokuments im Internet. “Gering” wird der Aufwand bezeichnet, Facebook-Chats auszulesen, “mäßig” anstrengen muss sich die NSA, um E-Mails eines russischen Mail-Providers abzufangen.

Das anonyme Netzwerk Tor, die Festplatten-Verschlüsselung TrueCrypt bis Version 7.1a, die Chat-Verschlüsselung Off-the Record (OTR), die E-Mail-Verschlüsselung PGP (etwa in der Implementierung Gpg4win) sowie das Protokoll ZRTP, mit dem sich Chats und Telefonate verschlüsseln lassen (zum Einsatz kommt es etwa in RedPhone und Signal), können von der NSA offenbar nicht geknackt werden.

Die Weihnachtsgeschichte in einem Satz

Der Profigolfer Marcel Siem im SZ Interview 27/28. Dezember, Nr. 297, S.38 (Sport) antwortet auf die Frage “Ist das Profileben mit zwei Kindern eigentlich schwieriger zu organisieren?”

Ich versuche meine beiden so oft wie möglich mitzunehmen. Manche Kollegen haben sich später Vorwürfe gemacht, das nicht getan zu haben. Als ich Anfang Dezember nach Südafrika flog, war Viktoria , die Vierjährige, schon bettfertig im Nachthemd. Als sie sah, dass ich abreise, saß sie plötzlich mit Winterstiefeln, Winterjacke und Pudelmütze in meinem Koffer und hat geheult. Das sind die Momente, die irgendwie schön sind, weil man Liebe spürt,. Aber die halt auch richtig wehtun.