giovedì 18 maggio 2017
mercoledì 3 maggio 2017
Charlie Duke Apollo XVI a Peccioli
Sentirsi raccontare la Luna da chi ci ha camminato sopra e' una sensazione difficilmente spiegabile
Audio della conferenza (scarsa qualita' audio!!! ma meglio che niente)
Gli annulli filatelici della giornata
Audio della conferenza (scarsa qualita' audio!!! ma meglio che niente)
Gli annulli filatelici della giornata
lunedì 24 aprile 2017
Coincidenze?? Ufo e Goldrake
Mandelbrot su ZX Spectrum
La cosa bella dei mini computer degli anni 80 e' che, utilizzando quasi tutti BASIC, era semplice trasportare il codice da una macchina all'altra con minime modifiche
Circa 4 anni fa avevo usato l'emulatore C64 per calcolare Mandelbrot..adesso e' il turno dell'emulatore ZX
Attenzione: i tempi di calcolo sono drammaticamente lunghi (dopo tre ore non era ancora stata generata la meta'..ho lasciato il tutto correre durante la notte). Inoltre nonostante il grafico sia venuto bene ho fatto confusione nei limiti ed e' stato generato un errore di Integer out of range
Circa 4 anni fa avevo usato l'emulatore C64 per calcolare Mandelbrot..adesso e' il turno dell'emulatore ZX
Attenzione: i tempi di calcolo sono drammaticamente lunghi (dopo tre ore non era ancora stata generata la meta'..ho lasciato il tutto correre durante la notte). Inoltre nonostante il grafico sia venuto bene ho fatto confusione nei limiti ed e' stato generato un errore di Integer out of range
venerdì 21 aprile 2017
Spectrum ZX128 con emulatore Speecy
https://fms.komkon.org/Speccy/
Shift Sinistro + freccia cursore per scendere e selezionare 48 BASIC. Enter per selezionare
A questo punto si entra nella schermata del Basic...che non dice assolutamente niente
Dal menu Hardware si imposta Input Device come CapsShift+Cursor e si scrive il numero di riga
per esempio 10 ed il cursore si attende un comando lampeggiando una K..si preme quindi la combinazione CapsShift+P (che corrisponde sull'emulatore a Shift Sinistro+P) e viene mostrato il comando PRINT con il cursore passato ad L lampeggiante perche' si aspetta il parametro del comando PRINT
CTRL+P per scrivere gli apici e poi si scrive la stringa desiderata ed invio. Dal buffer in fondo allo schermo la riga di comando viene spostata nel listato
Per mandare in esecuzione a questo punto Shift sinistro + R per RUN ed enter per confermare
per correggere qualche errore si osserva che nel listato una riga e' caratterizzata da un segno di maggiore accanto al numero di riga; con le frecce alto e basso si vede che il segno di maggiore di sposta di riga. Una volta individuata la giusta riga si preme EDIT Shift Sinistro + 1 e la riga entra nel buffer di editing in basso
Al contrario del C64 su Spectrum non esiste differenza tra modalita' testo e modalita' grafica. Si possono inserire le primitive grafiche su uno schermo di dimensioni 255x 175
La cosa curiosa e' il motivo per il quale sul C64 si poteva scrivere per esteso i comandi mentre in ZX i comandi erano scritti mediante una combinazione di tasti: ZX in pratica demandava all'utente la tokenizzazione dei comandi, ovvero il primo passo che dal listato conduce all'esecuzione di un programma
Al contrario del C64 su Spectrum non esiste differenza tra modalita' testo e modalita' grafica. Si possono inserire le primitive grafiche su uno schermo di dimensioni 255x 175
La cosa curiosa e' il motivo per il quale sul C64 si poteva scrivere per esteso i comandi mentre in ZX i comandi erano scritti mediante una combinazione di tasti: ZX in pratica demandava all'utente la tokenizzazione dei comandi, ovvero il primo passo che dal listato conduce all'esecuzione di un programma
giovedì 20 aprile 2017
giovedì 13 aprile 2017
ISS 2017
mercoledì 12 aprile 2017
Android Wear 2.0
Finalmente e' arrivato l'aggiornamento di Android Wear 2 sul mio LG R...e' quindi tempo di provare le nuove applicazioni per Android Wear che non hanno piu' bisogno dell'app companion sul telefono
Ho quindi preso un vecchio progetto (Aptic Metronome) di Wear 1 per adattarlo ad Wear 2
E' sufficiente in Android Studio crea un progetto per solo Android Wear con un targetSDKVersion pari a 25 (anche la minSDKVersion deve corrispondere a 25 per il solo Android Wear)
Per istruire il Play Store che l'apk non ha un app companion in AndroidManifest.xml e' necessario indicare
Fatto cio' il progetto e' compatibile per l'upload su PlayStore. La preparazione su PlayStore e' identica a quella di Wear 1 con la conseguente revisione da parte di Google
Ho quindi preso un vecchio progetto (Aptic Metronome) di Wear 1 per adattarlo ad Wear 2
E' sufficiente in Android Studio crea un progetto per solo Android Wear con un targetSDKVersion pari a 25 (anche la minSDKVersion deve corrispondere a 25 per il solo Android Wear)
Per istruire il Play Store che l'apk non ha un app companion in AndroidManifest.xml e' necessario indicare
<meta-data android:name="com.google.android.wearable.standalone"
android:value="true" /> Fatto cio' il progetto e' compatibile per l'upload su PlayStore. La preparazione su PlayStore e' identica a quella di Wear 1 con la conseguente revisione da parte di Google
martedì 11 aprile 2017
mercoledì 5 aprile 2017
Richieste HTTP su Android
Questo riepilogo non è disponibile.
Fai clic qui per visualizzare il post.
Esperimenti di micropalentologia
Aggiornamento:
utilizzando una foto da microscopio elettronico (dotata di scala di riferimento)
sono riuscito ad avere una stima degli ingrandimenti che il microscopio USB fornisce con la lente aggiuntiva. Pur la difficolta' di conversione tra pixel e dpi della stampante sembra che il sistema fornisca un ingrandimento massimo stimato attorno ai 100x
------------------------------------------------------------
In previsione di una lezione ad una classe di seconda elementare sulla geologia, volevo fare vedere che il mondo dei fossili non inizia e finisce con i dinosauri ma che si sono anche animali molto piccoli ed interessanti come i foraminiferi
Per rendere la lezione interattiva avevo quindi la necessita' di trovare un microscopio con oculare USB per poi collegarlo ad un proiettore..non volevo spendere molto per un oggetto che mi sarebbe servito forse solo per 10 minuti e cosi' su Amazon ho trovato questo oggetto, microscopio USB dichiarato con ingrandimento da 50x a 800x
Era abbastanza chiaro che gli ingrandimenti dichiarati erano fasulli ma il costo di 13 euro (in offerta) mi ha convinto a provare. Inoltre c'e' da dire che la ghiera girevoli di fatto funziona come un fuoco e non come uno zoom..il massimo ingrandimento si ottiene quando la parte trasparente in plastica appoggia sul piano del campione. Le dimensioni delle immagini sono di 640x426 pixels quindi inferiori alla VGA.
Per le sezioni sottili i risultati non sono male...basta mettere il microscopio in verticale ed appoggiare il vetrino ed i risultati sono indicati nelle immagini sottostanti
selezionando invece i foraminiferi dai preparati (e quindi tridimensionali) i risultati sono peggiori ed e' difficile vedere la morfologia
ho provato a migliorare le cose. Ho preso una lente da filatelia ed la ho frapposta tra il campione ed il microscopio...quindi il campione appoggiato su un piano, la lente da filatelia sopra ed appooggiata sulla lente il microscopio. In questo modo si deve spengere i led del microscopio perche' rifletttono sulla lente e ho messo una sorgente di luce trasversale
A questo punto le cose sono decisamente migliorate
Non si tratta di uno strumento professionale ma considerando che e' costato meno di 15 euro non e' poi cosi' male
utilizzando una foto da microscopio elettronico (dotata di scala di riferimento)
![]() |
| Catapsydrax dissimilis |
------------------------------------------------------------
In previsione di una lezione ad una classe di seconda elementare sulla geologia, volevo fare vedere che il mondo dei fossili non inizia e finisce con i dinosauri ma che si sono anche animali molto piccoli ed interessanti come i foraminiferi
Per rendere la lezione interattiva avevo quindi la necessita' di trovare un microscopio con oculare USB per poi collegarlo ad un proiettore..non volevo spendere molto per un oggetto che mi sarebbe servito forse solo per 10 minuti e cosi' su Amazon ho trovato questo oggetto, microscopio USB dichiarato con ingrandimento da 50x a 800x
Era abbastanza chiaro che gli ingrandimenti dichiarati erano fasulli ma il costo di 13 euro (in offerta) mi ha convinto a provare. Inoltre c'e' da dire che la ghiera girevoli di fatto funziona come un fuoco e non come uno zoom..il massimo ingrandimento si ottiene quando la parte trasparente in plastica appoggia sul piano del campione. Le dimensioni delle immagini sono di 640x426 pixels quindi inferiori alla VGA.
Per le sezioni sottili i risultati non sono male...basta mettere il microscopio in verticale ed appoggiare il vetrino ed i risultati sono indicati nelle immagini sottostanti
selezionando invece i foraminiferi dai preparati (e quindi tridimensionali) i risultati sono peggiori ed e' difficile vedere la morfologia
ho provato a migliorare le cose. Ho preso una lente da filatelia ed la ho frapposta tra il campione ed il microscopio...quindi il campione appoggiato su un piano, la lente da filatelia sopra ed appooggiata sulla lente il microscopio. In questo modo si deve spengere i led del microscopio perche' rifletttono sulla lente e ho messo una sorgente di luce trasversale
A questo punto le cose sono decisamente migliorate
Non si tratta di uno strumento professionale ma considerando che e' costato meno di 15 euro non e' poi cosi' male
lunedì 27 marzo 2017
Lighttpd e Pydio su Intel Edison
Questo e' un tentativo di usare Intel Edison per creare un cloud file server.
Avevo iniziato con Apache, PHP e OwnCloud ma quest'ultimo e' particolarmente esigente in termini di estensioni di PHP e non avevo voglia di ricompilare tutto da zero. Per questo motivo sono passato a Pydio e Lighttpd per motivi di leggerezza
Installare i pacchetti per Pydio in Yocto e' piuttosto banale perche' basta digitare i seguenti comandi
opkg install lighttpd
opkg install lighttpd-module-rewrite
opkg install lighttpd-module-fastcgi
opkg install php
la home del web server si trovera' in /www/pages/ mentre il file di configurazione e' /etc/lighttpd.conf
A questo punto si nota che se si crea un file .php e lo si interroga via web, il server risponde sempre errore 403 (Forbidden). Questo perche' Lighttpd non e' stato istruito su come interpretare i file .PHP. Si vede quindi editare il file di configurazione (in giallo le modifiche)
-----------------------
# lighttpd configuration file
#
# use it as a base for lighttpd 1.0.0 and above
#
# $Id: lighttpd.conf,v 1.7 2004/11/03 22:26:05 weigon Exp $
############ Options you really have to take care of ####################
## modules to load
# at least mod_access and mod_accesslog should be loaded
# all other module should only be loaded if really neccesary
# - saves some time
# - saves memory
server.modules = (
# "mod_rewrite",
# "mod_redirect",
# "mod_alias",
"mod_access",
# "mod_cml",
# "mod_trigger_b4_dl",
# "mod_auth",
# "mod_status",
# "mod_setenv",
"mod_fastcgi",
# "mod_proxy",
# "mod_simple_vhost",
# "mod_evhost",
# "mod_userdir",
# "mod_cgi",
# "mod_compress",
# "mod_ssi",
# "mod_usertrack",
# "mod_expire",
# "mod_secdownload",
# "mod_rrdtool",
# "mod_webdav",
"mod_accesslog" )
## a static document-root, for virtual-hosting take look at the
## server.virtual-* options
server.document-root = "/www/pages/"
## where to send error-messages to
server.errorlog = "/www/logs/lighttpd.error.log"
# files to check for if .../ is requested
index-file.names = ( "index.php", "index.html",
"index.htm", "default.htm" )
## set the event-handler (read the performance section in the manual)
# server.event-handler = "freebsd-kqueue" # needed on OS X
# mimetype mapping
mimetype.assign = (
".pdf" => "application/pdf",
".sig" => "application/pgp-signature",
".spl" => "application/futuresplash",
".class" => "application/octet-stream",
".ps" => "application/postscript",
".torrent" => "application/x-bittorrent",
".dvi" => "application/x-dvi",
".gz" => "application/x-gzip",
".pac" => "application/x-ns-proxy-autoconfig",
".swf" => "application/x-shockwave-flash",
".tar.gz" => "application/x-tgz",
".tgz" => "application/x-tgz",
".tar" => "application/x-tar",
".zip" => "application/zip",
".mp3" => "audio/mpeg",
".m3u" => "audio/x-mpegurl",
".wma" => "audio/x-ms-wma",
".wax" => "audio/x-ms-wax",
".ogg" => "application/ogg",
".wav" => "audio/x-wav",
".gif" => "image/gif",
".jpg" => "image/jpeg",
".jpeg" => "image/jpeg",
".png" => "image/png",
".xbm" => "image/x-xbitmap",
".xpm" => "image/x-xpixmap",
".xwd" => "image/x-xwindowdump",
".css" => "text/css",
".html" => "text/html",
".htm" => "text/html",
".js" => "text/javascript",
".asc" => "text/plain",
".c" => "text/plain",
".cpp" => "text/plain",
".log" => "text/plain",
".conf" => "text/plain",
".text" => "text/plain",
".txt" => "text/plain",
".dtd" => "text/xml",
".xml" => "text/xml",
".mpeg" => "video/mpeg",
".mpg" => "video/mpeg",
".mov" => "video/quicktime",
".qt" => "video/quicktime",
".avi" => "video/x-msvideo",
".asf" => "video/x-ms-asf",
".asx" => "video/x-ms-asf",
".wmv" => "video/x-ms-wmv",
".bz2" => "application/x-bzip",
".tbz" => "application/x-bzip-compressed-tar",
".tar.bz2" => "application/x-bzip-compressed-tar"
)
# Use the "Content-Type" extended attribute to obtain mime type if possible
#mimetype.use-xattr = "enable"
## send a different Server: header
## be nice and keep it at lighttpd
# server.tag = "lighttpd"
#### accesslog module
accesslog.filename = "/www/logs/access.log"
debug.log-request-handling = "enable"
## deny access the file-extensions
#
# ~ is for backupfiles from vi, emacs, joe, ...
# .inc is often used for code includes which should in general not be part
# of the document-root
url.access-deny = ( "~", ".inc" )
$HTTP["url"] =~ "\.pdf$" {
server.range-requests = "disable"
}
##
# which extensions should not be handle via static-file transfer
#
# .php, .pl, .fcgi are most often handled by mod_fastcgi or mod_cgi
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
######### Options that are good to be but not neccesary to be changed #######
## bind to port (default: 80)
#server.port = 81
## bind to localhost (default: all interfaces)
#server.bind = "grisu.home.kneschke.de"
## error-handler for status 404
#server.error-handler-404 = "/error-handler.html"
#server.error-handler-404 = "/error-handler.php"
## to help the rc.scripts
#server.pid-file = "/var/run/lighttpd.pid"
###### virtual hosts
##
## If you want name-based virtual hosting add the next three settings and load
## mod_simple_vhost
##
## document-root =
## virtual-server-root + virtual-server-default-host + virtual-server-docroot
## or
## virtual-server-root + http-host + virtual-server-docroot
##
#simple-vhost.server-root = "/home/weigon/wwwroot/servers/"
#simple-vhost.default-host = "grisu.home.kneschke.de"
#simple-vhost.document-root = "/pages/"
##
## Format: <errorfile-prefix><status-code>.html
## -> ..../status-404.html for 'File not found'
#server.errorfile-prefix = "/home/weigon/projects/lighttpd/doc/status-"
## virtual directory listings
#dir-listing.activate = "enable"
## enable debugging
#debug.log-request-header = "enable"
#debug.log-response-header = "enable"
#debug.log-request-handling = "enable"
#debug.log-file-not-found = "enable"
### only root can use these options
#
# chroot() to directory (default: no chroot() )
#server.chroot = "/"
## change uid to <uid> (default: don't care)
#server.username = "wwwrun"
## change uid to <uid> (default: don't care)
#server.groupname = "wwwrun"
#### compress module
#compress.cache-dir = "/tmp/lighttpd/cache/compress/"
#compress.filetype = ("text/plain", "text/html")
#### proxy module
## read proxy.txt for more info
#proxy.server = ( ".php" =>
# ( "localhost" =>
# (
# "host" => "192.168.0.101",
# "port" => 80
# )
# )
# )
#### fastcgi module
## read fastcgi.txt for more info
## for PHP don't forget to set cgi.fix_pathinfo = 1 in the php.ini
fastcgi.server = ( ".php" =>
( "localhost" =>
(
"socket" => "/tmp/php-fastcgi.socket",
"bin-path" => "/usr/bin/php-cgi"
)
)
)
#### CGI module
#cgi.assign = ( ".pl" => "/usr/bin/perl",
# ".cgi" => "/usr/bin/perl" )
#
#### SSL engine
#ssl.engine = "enable"
#ssl.pemfile = "server.pem"
#### status module
#status.status-url = "/server-status"
#status.config-url = "/server-config"
#### auth module
## read authentication.txt for more info
#auth.backend = "plain"
#auth.backend.plain.userfile = "lighttpd.user"
#auth.backend.plain.groupfile = "lighttpd.group"
#auth.backend.ldap.hostname = "localhost"
#auth.backend.ldap.base-dn = "dc=my-domain,dc=com"
#auth.backend.ldap.filter = "(uid=$)"
#auth.require = ( "/server-status" =>
# (
# "method" => "digest",
# "realm" => "download archiv",
# "require" => "user=jan"
# ),
# "/server-config" =>
# (
# "method" => "digest",
# "realm" => "download archiv",
# "require" => "valid-user"
# )
# )
#### url handling modules (rewrite, redirect, access)
#url.rewrite = ( "^/$" => "/server-status" )
#url.redirect = ( "^/wishlist/(.+)" => "http://www.123.org/$1" )
#### both rewrite/redirect support back reference to regex conditional using %n
#$HTTP["host"] =~ "^www\.(.*)" {
# url.redirect = ( "^/(.*)" => "http://%1/$1" )
#}
#
# define a pattern for the host url finding
# %% => % sign
# %0 => domain name + tld
# %1 => tld
# %2 => domain name without tld
# %3 => subdomain 1 name
# %4 => subdomain 2 name
#
#evhost.path-pattern = "/home/storage/dev/www/%3/htdocs/"
#### expire module
#expire.url = ( "/buggy/" => "access 2 hours", "/asdhas/" => "access plus 1 seconds 2 minutes")
#### ssi
#ssi.extension = ( ".shtml" )
#### rrdtool
#rrdtool.binary = "/usr/bin/rrdtool"
#rrdtool.db-name = "/var/www/lighttpd.rrd"
#### setenv
#setenv.add-request-header = ( "TRAV_ENV" => "mysql://user@host/db" )
#setenv.add-response-header = ( "X-Secret-Message" => "42" )
## for mod_trigger_b4_dl
# trigger-before-download.gdbm-filename = "/home/weigon/testbase/trigger.db"
# trigger-before-download.memcache-hosts = ( "127.0.0.1:11211" )
# trigger-before-download.trigger-url = "^/trigger/"
# trigger-before-download.download-url = "^/download/"
# trigger-before-download.deny-url = "http://127.0.0.1/index.html"
# trigger-before-download.trigger-timeout = 10
## for mod_cml
## don't forget to add index.cml to server.indexfiles
# cml.extension = ".cml"
# cml.memcache-hosts = ( "127.0.0.1:11211" )
#### variable usage:
## variable name without "." is auto prefixed by "var." and becomes "var.bar"
#bar = 1
#var.mystring = "foo"
## integer add
#bar += 1
## string concat, with integer cast as string, result: "www.foo1.com"
#server.name = "www." + mystring + var.bar + ".com"
## array merge
#index-file.names = (foo + ".php") + index-file.names
#index-file.names += (foo + ".php")
#### include
#include /etc/lighttpd/lighttpd-inc.conf
## same as above if you run: "lighttpd -f /etc/lighttpd/lighttpd.conf"
#include "lighttpd-inc.conf"
#### include_shell
#include_shell "echo var.a=1"
## the above is same as:
#var.a=1
# include other config file fragments from lighttpd.d subdir
include_shell "find /etc/lighttpd.d -maxdepth 1 -name '*.conf' -exec cat {} \;"
----------------
A questo punto e' tutto pronto per Pydio.
Alla fine la macchina funziona ma non e' molto veloce ed inoltre non sono ancora configurate le API di Pydio per cui non e' possibile utilizzare i client desktop per sincronizzare i file
Avevo iniziato con Apache, PHP e OwnCloud ma quest'ultimo e' particolarmente esigente in termini di estensioni di PHP e non avevo voglia di ricompilare tutto da zero. Per questo motivo sono passato a Pydio e Lighttpd per motivi di leggerezza
Installare i pacchetti per Pydio in Yocto e' piuttosto banale perche' basta digitare i seguenti comandi
opkg install lighttpd
opkg install lighttpd-module-rewrite
opkg install lighttpd-module-fastcgi
opkg install php
la home del web server si trovera' in /www/pages/ mentre il file di configurazione e' /etc/lighttpd.conf
A questo punto si nota che se si crea un file .php e lo si interroga via web, il server risponde sempre errore 403 (Forbidden). Questo perche' Lighttpd non e' stato istruito su come interpretare i file .PHP. Si vede quindi editare il file di configurazione (in giallo le modifiche)
-----------------------
# lighttpd configuration file
#
# use it as a base for lighttpd 1.0.0 and above
#
# $Id: lighttpd.conf,v 1.7 2004/11/03 22:26:05 weigon Exp $
############ Options you really have to take care of ####################
## modules to load
# at least mod_access and mod_accesslog should be loaded
# all other module should only be loaded if really neccesary
# - saves some time
# - saves memory
server.modules = (
# "mod_rewrite",
# "mod_redirect",
# "mod_alias",
"mod_access",
# "mod_cml",
# "mod_trigger_b4_dl",
# "mod_auth",
# "mod_status",
# "mod_setenv",
"mod_fastcgi",
# "mod_proxy",
# "mod_simple_vhost",
# "mod_evhost",
# "mod_userdir",
# "mod_cgi",
# "mod_compress",
# "mod_ssi",
# "mod_usertrack",
# "mod_expire",
# "mod_secdownload",
# "mod_rrdtool",
# "mod_webdav",
"mod_accesslog" )
## a static document-root, for virtual-hosting take look at the
## server.virtual-* options
server.document-root = "/www/pages/"
## where to send error-messages to
server.errorlog = "/www/logs/lighttpd.error.log"
# files to check for if .../ is requested
index-file.names = ( "index.php", "index.html",
"index.htm", "default.htm" )
## set the event-handler (read the performance section in the manual)
# server.event-handler = "freebsd-kqueue" # needed on OS X
# mimetype mapping
mimetype.assign = (
".pdf" => "application/pdf",
".sig" => "application/pgp-signature",
".spl" => "application/futuresplash",
".class" => "application/octet-stream",
".ps" => "application/postscript",
".torrent" => "application/x-bittorrent",
".dvi" => "application/x-dvi",
".gz" => "application/x-gzip",
".pac" => "application/x-ns-proxy-autoconfig",
".swf" => "application/x-shockwave-flash",
".tar.gz" => "application/x-tgz",
".tgz" => "application/x-tgz",
".tar" => "application/x-tar",
".zip" => "application/zip",
".mp3" => "audio/mpeg",
".m3u" => "audio/x-mpegurl",
".wma" => "audio/x-ms-wma",
".wax" => "audio/x-ms-wax",
".ogg" => "application/ogg",
".wav" => "audio/x-wav",
".gif" => "image/gif",
".jpg" => "image/jpeg",
".jpeg" => "image/jpeg",
".png" => "image/png",
".xbm" => "image/x-xbitmap",
".xpm" => "image/x-xpixmap",
".xwd" => "image/x-xwindowdump",
".css" => "text/css",
".html" => "text/html",
".htm" => "text/html",
".js" => "text/javascript",
".asc" => "text/plain",
".c" => "text/plain",
".cpp" => "text/plain",
".log" => "text/plain",
".conf" => "text/plain",
".text" => "text/plain",
".txt" => "text/plain",
".dtd" => "text/xml",
".xml" => "text/xml",
".mpeg" => "video/mpeg",
".mpg" => "video/mpeg",
".mov" => "video/quicktime",
".qt" => "video/quicktime",
".avi" => "video/x-msvideo",
".asf" => "video/x-ms-asf",
".asx" => "video/x-ms-asf",
".wmv" => "video/x-ms-wmv",
".bz2" => "application/x-bzip",
".tbz" => "application/x-bzip-compressed-tar",
".tar.bz2" => "application/x-bzip-compressed-tar"
)
# Use the "Content-Type" extended attribute to obtain mime type if possible
#mimetype.use-xattr = "enable"
## send a different Server: header
## be nice and keep it at lighttpd
# server.tag = "lighttpd"
#### accesslog module
accesslog.filename = "/www/logs/access.log"
debug.log-request-handling = "enable"
## deny access the file-extensions
#
# ~ is for backupfiles from vi, emacs, joe, ...
# .inc is often used for code includes which should in general not be part
# of the document-root
url.access-deny = ( "~", ".inc" )
$HTTP["url"] =~ "\.pdf$" {
server.range-requests = "disable"
}
##
# which extensions should not be handle via static-file transfer
#
# .php, .pl, .fcgi are most often handled by mod_fastcgi or mod_cgi
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
######### Options that are good to be but not neccesary to be changed #######
## bind to port (default: 80)
#server.port = 81
## bind to localhost (default: all interfaces)
#server.bind = "grisu.home.kneschke.de"
## error-handler for status 404
#server.error-handler-404 = "/error-handler.html"
#server.error-handler-404 = "/error-handler.php"
## to help the rc.scripts
#server.pid-file = "/var/run/lighttpd.pid"
###### virtual hosts
##
## If you want name-based virtual hosting add the next three settings and load
## mod_simple_vhost
##
## document-root =
## virtual-server-root + virtual-server-default-host + virtual-server-docroot
## or
## virtual-server-root + http-host + virtual-server-docroot
##
#simple-vhost.server-root = "/home/weigon/wwwroot/servers/"
#simple-vhost.default-host = "grisu.home.kneschke.de"
#simple-vhost.document-root = "/pages/"
##
## Format: <errorfile-prefix><status-code>.html
## -> ..../status-404.html for 'File not found'
#server.errorfile-prefix = "/home/weigon/projects/lighttpd/doc/status-"
## virtual directory listings
#dir-listing.activate = "enable"
## enable debugging
#debug.log-request-header = "enable"
#debug.log-response-header = "enable"
#debug.log-request-handling = "enable"
#debug.log-file-not-found = "enable"
### only root can use these options
#
# chroot() to directory (default: no chroot() )
#server.chroot = "/"
## change uid to <uid> (default: don't care)
#server.username = "wwwrun"
## change uid to <uid> (default: don't care)
#server.groupname = "wwwrun"
#### compress module
#compress.cache-dir = "/tmp/lighttpd/cache/compress/"
#compress.filetype = ("text/plain", "text/html")
#### proxy module
## read proxy.txt for more info
#proxy.server = ( ".php" =>
# ( "localhost" =>
# (
# "host" => "192.168.0.101",
# "port" => 80
# )
# )
# )
#### fastcgi module
## read fastcgi.txt for more info
## for PHP don't forget to set cgi.fix_pathinfo = 1 in the php.ini
fastcgi.server = ( ".php" =>
( "localhost" =>
(
"socket" => "/tmp/php-fastcgi.socket",
"bin-path" => "/usr/bin/php-cgi"
)
)
)
#### CGI module
#cgi.assign = ( ".pl" => "/usr/bin/perl",
# ".cgi" => "/usr/bin/perl" )
#
#### SSL engine
#ssl.engine = "enable"
#ssl.pemfile = "server.pem"
#### status module
#status.status-url = "/server-status"
#status.config-url = "/server-config"
#### auth module
## read authentication.txt for more info
#auth.backend = "plain"
#auth.backend.plain.userfile = "lighttpd.user"
#auth.backend.plain.groupfile = "lighttpd.group"
#auth.backend.ldap.hostname = "localhost"
#auth.backend.ldap.base-dn = "dc=my-domain,dc=com"
#auth.backend.ldap.filter = "(uid=$)"
#auth.require = ( "/server-status" =>
# (
# "method" => "digest",
# "realm" => "download archiv",
# "require" => "user=jan"
# ),
# "/server-config" =>
# (
# "method" => "digest",
# "realm" => "download archiv",
# "require" => "valid-user"
# )
# )
#### url handling modules (rewrite, redirect, access)
#url.rewrite = ( "^/$" => "/server-status" )
#url.redirect = ( "^/wishlist/(.+)" => "http://www.123.org/$1" )
#### both rewrite/redirect support back reference to regex conditional using %n
#$HTTP["host"] =~ "^www\.(.*)" {
# url.redirect = ( "^/(.*)" => "http://%1/$1" )
#}
#
# define a pattern for the host url finding
# %% => % sign
# %0 => domain name + tld
# %1 => tld
# %2 => domain name without tld
# %3 => subdomain 1 name
# %4 => subdomain 2 name
#
#evhost.path-pattern = "/home/storage/dev/www/%3/htdocs/"
#### expire module
#expire.url = ( "/buggy/" => "access 2 hours", "/asdhas/" => "access plus 1 seconds 2 minutes")
#### ssi
#ssi.extension = ( ".shtml" )
#### rrdtool
#rrdtool.binary = "/usr/bin/rrdtool"
#rrdtool.db-name = "/var/www/lighttpd.rrd"
#### setenv
#setenv.add-request-header = ( "TRAV_ENV" => "mysql://user@host/db" )
#setenv.add-response-header = ( "X-Secret-Message" => "42" )
## for mod_trigger_b4_dl
# trigger-before-download.gdbm-filename = "/home/weigon/testbase/trigger.db"
# trigger-before-download.memcache-hosts = ( "127.0.0.1:11211" )
# trigger-before-download.trigger-url = "^/trigger/"
# trigger-before-download.download-url = "^/download/"
# trigger-before-download.deny-url = "http://127.0.0.1/index.html"
# trigger-before-download.trigger-timeout = 10
## for mod_cml
## don't forget to add index.cml to server.indexfiles
# cml.extension = ".cml"
# cml.memcache-hosts = ( "127.0.0.1:11211" )
#### variable usage:
## variable name without "." is auto prefixed by "var." and becomes "var.bar"
#bar = 1
#var.mystring = "foo"
## integer add
#bar += 1
## string concat, with integer cast as string, result: "www.foo1.com"
#server.name = "www." + mystring + var.bar + ".com"
## array merge
#index-file.names = (foo + ".php") + index-file.names
#index-file.names += (foo + ".php")
#### include
#include /etc/lighttpd/lighttpd-inc.conf
## same as above if you run: "lighttpd -f /etc/lighttpd/lighttpd.conf"
#include "lighttpd-inc.conf"
#### include_shell
#include_shell "echo var.a=1"
## the above is same as:
#var.a=1
# include other config file fragments from lighttpd.d subdir
include_shell "find /etc/lighttpd.d -maxdepth 1 -name '*.conf' -exec cat {} \;"
----------------
A questo punto e' tutto pronto per Pydio.
Alla fine la macchina funziona ma non e' molto veloce ed inoltre non sono ancora configurate le API di Pydio per cui non e' possibile utilizzare i client desktop per sincronizzare i file
domenica 26 marzo 2017
venerdì 24 marzo 2017
mercoledì 22 marzo 2017
Retrocomputing estremo su Olivetti Programma 101
Retrocompunting "estremo" nel senso che piu' indietro di cosi' nel tempo si deve tirare fuori il regolo calcolatore.....
La prima volta che ho sentito parlare della Programma 101 e' stato leggendo un libro sulle missioni lunari Apollo in cui si parlava di un calcolatore prodotto da Olivetti in grado di calcolare le traiettorie e le orbite..un calcolatore delle dimensioni di una macchina da scrivere nell'epoca dei calcolatori grandi come stanze.
In molti siti viene definito come il primo personal computer ma forse la definizione piu' giusta e' la prima calcolatrice programmabile che si puo' tenere sul tavolo. Qualcuno ha definito che la programmazione e' simile all'assembler ed in effetti tutto si basa sulla manipolazione di registri
Ho provato a scrivere un paio di programmi ovvero il calcolo del teorema di Pitagora e la successione di Fibonacci utilizzando l'emulatore Unicas
Prima di avviare il programma viene mostrato il listato del programma
Teorema di Pitagora
Una volta avviato il programma si devono inserire i due argomenti e cosi' si ottiene il risultato.
Nel video sono stati calcolate due terne pitagoriche 3,4,5 e 5,12,13
Serie di Fibonacci
Il programma gira fino a quando la macchina va in overflow (intorno al 97° numero della successivo di Fibonacci)
PS: ops...nel test di Fibonacci ho lasciato il selettore delle posizioni decimali a 2 limitando quindi il numero di risultati calcolabili
La prima volta che ho sentito parlare della Programma 101 e' stato leggendo un libro sulle missioni lunari Apollo in cui si parlava di un calcolatore prodotto da Olivetti in grado di calcolare le traiettorie e le orbite..un calcolatore delle dimensioni di una macchina da scrivere nell'epoca dei calcolatori grandi come stanze.
In molti siti viene definito come il primo personal computer ma forse la definizione piu' giusta e' la prima calcolatrice programmabile che si puo' tenere sul tavolo. Qualcuno ha definito che la programmazione e' simile all'assembler ed in effetti tutto si basa sulla manipolazione di registri
Ho provato a scrivere un paio di programmi ovvero il calcolo del teorema di Pitagora e la successione di Fibonacci utilizzando l'emulatore Unicas
Prima di avviare il programma viene mostrato il listato del programma
Teorema di Pitagora
Una volta avviato il programma si devono inserire i due argomenti e cosi' si ottiene il risultato.
Nel video sono stati calcolate due terne pitagoriche 3,4,5 e 5,12,13
Serie di Fibonacci
Il programma gira fino a quando la macchina va in overflow (intorno al 97° numero della successivo di Fibonacci)
PS: ops...nel test di Fibonacci ho lasciato il selettore delle posizioni decimali a 2 limitando quindi il numero di risultati calcolabili
lunedì 20 marzo 2017
SSD su MacBook A1278
Mi sono stufato di aspettare il boot del mio Mac ed ho fatto la migrazione verso un disco SSD (passando da un disco rotante da 1 Tera ad un SSD da 250 Gb)
Si inizia con la parte hardware
Il disco e' fissato da due barrette di plastica. Basta smontare 2 viti della barrette piu' lontana dal bordo per rimuovere il disco (attenzione al flat cable che e' nascosto sotto il disco)
Prima di montare il nuovo disco si devono prendere le 4 viti dal bordo. Non sono riuscito a capire quale e' il tipo della testa della vite ma con una torx di piccolo diametro si puo' togliere
Il disco sostituto e' un Samsung 850 EVO....non un entry level...non un top di gamma
Si rimonta tutto e la parte hardaware e' finita.
In precedenza allo smontaggio e' bene crearsi un chiavetta USB di boot con il sistema operativo come indicato dalle indicazioni riportate a questo link
In estrema sintesi si scarica l'installer da Apple Store e poi si lancia il comando (per Sierra)
sudo /Applications/Install\ macOS\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume --applicationpath /Applications/Install\ macOS\ Sierra.app
Al termine della copia si riavvia il computer con il tasto Shift premuto e si seleziona la chiavetta USB come dispositivo di boot
Al primo riavvio e' necessario avviare il trim da consolle
sudo trimforce enable
Adesso, essndo partiti da un disco di un Tera ed avendo un disco da 250 Gb, e' possibile ripristinare il tutto da Time Machine. Si puo' comunque connettere il disco Time Machine, montarlo come una normale unita' esterna e selezionare Latest per copuare i file
In definitiva una operazione abbastanza indolore risolta nel giro di un pomeriggio
Si inizia con la parte hardware
Il disco e' fissato da due barrette di plastica. Basta smontare 2 viti della barrette piu' lontana dal bordo per rimuovere il disco (attenzione al flat cable che e' nascosto sotto il disco)
Prima di montare il nuovo disco si devono prendere le 4 viti dal bordo. Non sono riuscito a capire quale e' il tipo della testa della vite ma con una torx di piccolo diametro si puo' togliere
Il disco sostituto e' un Samsung 850 EVO....non un entry level...non un top di gamma
Si rimonta tutto e la parte hardaware e' finita.
In precedenza allo smontaggio e' bene crearsi un chiavetta USB di boot con il sistema operativo come indicato dalle indicazioni riportate a questo link
In estrema sintesi si scarica l'installer da Apple Store e poi si lancia il comando (per Sierra)
sudo /Applications/Install\ macOS\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume --applicationpath /Applications/Install\ macOS\ Sierra.app
Al termine della copia si riavvia il computer con il tasto Shift premuto e si seleziona la chiavetta USB come dispositivo di boot
Al primo riavvio e' necessario avviare il trim da consolle
sudo trimforce enable
Adesso, essndo partiti da un disco di un Tera ed avendo un disco da 250 Gb, e' possibile ripristinare il tutto da Time Machine. Si puo' comunque connettere il disco Time Machine, montarlo come una normale unita' esterna e selezionare Latest per copuare i file
In definitiva una operazione abbastanza indolore risolta nel giro di un pomeriggio
Riparazione Technics SL-BD21
Avendo un po' di tempo, ho ritirato fuori il vecchio progetto di convertire in digitale qualche LP in vinile che e' disponibile in altro formato.
Per questo motivo ho collegato la mia vecchia piastra giradischi Techinics SL-BD21(vecchia nel senso che e' stata comprata nel 1985.....) scoprendo che la trasmissione a nastro era oramai distrutta
La cinghia di trasmissione e' soltanto un elastico e, non pensando di ritrovarla nuova, ho provato a tagliare a misura un comune elastico. Esperimento fallito. Con gli elastici e' impossibile e' quasi impossibile ottenere la giusta tensione e quindi il disco suona od al di sotto di 33 rpm oppure procede a strappi. Oramai quasi rassegnato a comprare una nuova piastra ho trovato su Amazon il ricambio della cinghia
Sostituire la cinghia e' lavoro di 5 minuti e senza attrezzi. Basta prendere la piastra ruotante, sollevarla e ribaltarla. A questo punto si mette la cinghia sulla circonferenza intera
Si rimette il tutto a posto e si fa coincidere la finestrella con il pignoncino della trazione. Poi con molta cautela si tira la cinghia e la si fa scorrere sull'esterno del pignone.
Per questo motivo ho collegato la mia vecchia piastra giradischi Techinics SL-BD21(vecchia nel senso che e' stata comprata nel 1985.....) scoprendo che la trasmissione a nastro era oramai distrutta
La cinghia di trasmissione e' soltanto un elastico e, non pensando di ritrovarla nuova, ho provato a tagliare a misura un comune elastico. Esperimento fallito. Con gli elastici e' impossibile e' quasi impossibile ottenere la giusta tensione e quindi il disco suona od al di sotto di 33 rpm oppure procede a strappi. Oramai quasi rassegnato a comprare una nuova piastra ho trovato su Amazon il ricambio della cinghia
![]() |
| In verde l'elastico di prova, in nero la cinghia di trasmissione di fabbrica |
Sostituire la cinghia e' lavoro di 5 minuti e senza attrezzi. Basta prendere la piastra ruotante, sollevarla e ribaltarla. A questo punto si mette la cinghia sulla circonferenza intera
giovedì 16 marzo 2017
mercoledì 15 marzo 2017
Video per lezione di geologia a bambini di scuola elementare
Alla scuola non e' permesso l'utilizzo dell'acido cloridrico. Per questo motivo ho fatto questo video
Iscriviti a:
Post (Atom)
LLama3 Anita
A seguito di questo post ho provato a vedere ho provato a vedere cosa accadeva ad utilizzare un modello specifico per la lingua italiana in...
-
Aggiornamento questo e' la risposta degli sviluppatori First of all, almost all operating systems on both mobile and laptop/desktop n...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...















































