giovedì 3 ottobre 2019

Ben C1531 scavato vecchia talpa

In un cumulo di rifiuti in una ditta abbandonata ho adocchiato una sagoma familiare, Commodore Datasette 1531, in condizioni penose anche perche' e' stato esposto alle intemperie non si sa quanto tempo


All'interno era presente una cassetta ma e' stato difficile da estrarre perche' tutti i pulsanti sono bloccati per l'ossido compreso lo Eject









Frugando su Internet ho trovato che la cassetta e' relativa al nr. 3 del maggio 1986 della rivista C16/MSX

lunedì 30 settembre 2019

Scheda memoria da tornio industriale

Ho recuperato questa scheda accanto al tornio della foto successiva. Mostra un sigla ECS 7T212 (una ditta ECS che fa programmazione elettronica e' ancora rintracciabile su Internet ed e' stata fondata nel 1995 quindi si tratta di hardware "recente") e dovrebbe essere relativa al controllo numerico del tornio stesso




Da un esame degli integrati si dovrebbe trattare di una espansione di memoria da 192 Kb (in word da 8 bit): Di seguito gli integrati presenti...non citata e' presente anche una batteria tampone per la SRAM

TC55257BPL-10 : modulo da 32 Kb da word di 8 bit RAM static CMOS
SN74ALS573BN : Bus Driver, ALS Series, 1-Func, 8-Bit, True Output, TTL, PDIP20
74S74W
74S00N : NAND Gate, S Series, 4-Func, 2-Input, TTL, PDIP14
SN74S32N: OR GATE 4 ch 2 in DIP14
SN74S38N : NAND Gate, 4 Func 2 Inpout
SN74AL580AN
74S38N : NAND gate
SN75140P : bus receiver dual line
201RET2006l : passive delay line
35701301051 : rele'
d4349544

mercoledì 25 settembre 2019

Creazione tweet in automatico su Twitter con Python

Per creare una app per postare in automatico su twitter per prima cosa si deve avere un account developer 


Si crea quindi una app (si deve attendere che la app sia autorizzata dopo aver compilato un breve form....necessitano 24 ore per la risposta) e si copiano le chiavi consumer e access_token
per semplicita' si usera' lal libreria tweepy
-----------------------------------------------------------------------
import tweepy

consumer_key        = 'oNexxxxxxxxxxxxxxxxxxxxxx'
consumer_secret     = 'ti4xxxxxxxxxxxxxxxxxxxxxxxx'
access_token        = '4402008xxxxxxxxxxxxxxxxxxxxxxxx'
access_token_secret = '59nofxxxxxxxxxxxxxxxxxxxxxxxxxxx'

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

now = datetime.datetime.now()

testo = "Fir " + now.strftime("%d-%m-%Y %H:%M:%S") +"\n"

api.update_status(testo)

Scrittura post automatici su pagina Facebook

Per creare dei post automatici su una pagina di Facebook (non il proprio account personale ma una relativa al proprio utente) si installa prima l'SDK in Python di Facebook

A questo punto dal Graph Explorer si devono concedere i permessi di scrittura che devono essere almeno a manage_pages and publish_pages



Si crea quindi una app dal proprio account developer Facebook e per semplicita' si elimina "Richiedi la chiave segreta" per le connesssioni tra server


il codice Python a questo punto e' molto semplice

-------------------------------------------------------------------------------
import facebook # facebook-sdk

access_token = "xxxxxxxxxxxxxx" # da recuperare nel GraphExplorer
graph = facebook.GraphAPI(access_token)

facebook_id = "120763xxxxxx" # id della pagina, si trova nelle Informazioni
                             # o la parte numerica della URL
graph.put_object(facebook_id,"feed",message="messaggio")

giovedì 19 settembre 2019

Grep e nomi file

Di solito il comando grep ha come output il testo dove si verifica la stringa richiesta
Per avere solo il nome del file si puo' fare

grep -Ril "stringa" *


venerdì 13 settembre 2019

Ocatve e MNIST

Volevo visualizzare i dati contenuti nei file di test del database MNIST spesso usati come esempi delle rete neurali (vedi esempi di TensorFlow)



il formato file e' IDX  descritto in fondo alla pagina sopra linkata

----------------------------------------------------------------------------------------
clear all;
filename = "C:/Users/l.innocenti/Downloads/train-images.idx3-ubyte";
immagini_id = fopen(filename,"r");
immagini = fread(immagini_id,Inf,"uint8");
numero_immagini = immagini(7,1)*256+immagini(8,1);
righe = immagini(9,1)*16777216+immagini(10,1)*65536+immagini(11,1)*256+immagini(12,1)*1
colonne = immagini(13,1)*16777216+immagini(14,1)*65536+immagini(15,1)*256+immagini(16,1)*1
indice_immagine = 1016;
im1 = immagini(17+(indice_immagine*784):17+((indice_immagine+1)*784)-1);
im1_s = reshape(im1,28,28);

imshow(fliplr(rot90(im1_s,-1)),[]); # mostra a scala di grigi


f2 = "C:/Users/l.innocenti/Downloads/train-labels.idx1-ubyte";
f2_id = fopen(f2,"r");
f2 = fread(f2_id,Inf,"uint8");
valore = f2(indice_immagine+9);

venerdì 30 agosto 2019

Stringhe in C

Mi sono rimesso a studiare un po' di C

--------------------------------------------
#include <stdio.h>
#include <stdlib.h>

#include <string.h>


//calcola la lunghezza di una stringa 
// con un ciclo for ed i puntatori
int strlen_for(char *s)
{
    int n;
    for(n=0; *s!='\0'; s++)
        n++;
    return n+1;
}

//calcola la lunghezza di una stringa 
// con un ciclo while ed i puntatori
//il trucco di fine ciclo e' che 
// il terminatore di una stringa in C 
// e' 0 che corrisponde anche alla condizione
// False 

void print_for(char *s)
{
    for (; *s; s++)
        printf("%c",*s);

    printf("\n");
}

// stampa una stringa
void print_while(char *s)
{
    while(*s){
        printf("%c",*s);
        s++;
        }
    printf("\n");
}

//crea una nuova stringa di una lunghezza non predefinita
char *new_string(int lunghezza)
{
    char *transi = malloc(lunghezza + 1);
    memset(transi, 'a', lunghezza);
    transi[lunghezza] = 0;
    return transi;
}

// concatena due stringhe
char *concatena(char *uno, char*due)
{
    //printf("%i\n",sizeof(uno));


    char *transi = malloc(sizeof(uno)+sizeof(due) + 1);
    int contatore = 0;
     for (; *uno; uno++)
     {
        transi[contatore] = *uno;
        contatore++;
     }
     for (; *due; due++)
     {
        transi[contatore] = *due;
        contatore++;
     }
    transi[contatore] = 0;

    return transi;
}


// taglia una stringa
char *taglia(char *stringa,int caratteri)
{
    stringa[caratteri] = 0;
    return stringa;

}

int main()
{
    char *a = "chiara";
    char b[5] = "luca";
    print_for(a);
    print_while(a);
    int lung = strlen_for(b);
    printf("%i\n",lung);

    char *nuova_stringa = new_string(10);
    print_for(nuova_stringa);

    char *nome = "Luca";
    char *cognome = "Innocenti";
    char *unione = concatena(nome,cognome);
    print_for(unione);

    char *tagliato = taglia(unione,5);
    print_for(tagliato);
    printf("%i\n",sizeof(tagliato)+1);

    //array di puntatori
    char *elementi[] = {"Luca", "Innocenti", "Firenze"};

    print_for(elementi[0]);
    print_for(elementi[2]);



    return 0;
}


Physics informed neural network Fukuzono

Visto che puro ML non funziona per le serie tempo di cui mi sto occupando ed le regressioni basate su formule analitiche mostrano dei limiti...