Author Archives: juhan

Dov’è? ovvero differenze con Windows

n2Ieri ho scoperto che un piccolo tool che avevo scritto nel 2006 e completamente dimenticato è ancora vivo e usato😀

w1
È una cosa semplicissima, rileva la lista dei dischi montati (quelli con una lettera seguita da due-punti) e restituisce quello che nella radice ha il file con il nome specificato. Siccome allora ero giovane l’avevo scritto in Delphi e dev’essere stata una cosa volante, l’ho completamente dimenticato. Fino a ieri.

Ora per cose normali con Linux c’è whereis:

w2

che potrebbe anche essere configurato per casi speciali:

w3

Cose che con Windows sono (o erano?) possibili qui sono giustamente vietate, per elementari ragioni di sicurezza:

w4

Per il resto non dovrebbero esserci problemi

w5

e il nome dell’utente corrente può essere rilevato con uno di questi due modi (o altri ancora, forse)

w6

Programmatically (or scrptically), disks.py:

import os

mdir = "/media/" + os.getenv("USER")
print("mdir =", mdir)
disks = os.listdir(mdir)
print("disks =", disks)

w7

:mrgreen:

Voglio diventare bravo come Joel

joelPrima di cominciare: questo è un post diversamente serioso, scritto mentre aspetto il boss che passa a prendermi per una intensa giornata in giro per Torino. Ma dipende da voi, dal vostro spirito (mood) del momento, che è poi quello che mi fa scrivere questa nota, dopo aver followato Joel su Twitter.

È decisamente facile, tutto in Python, tranquillo, sempre lineare logico e comprensibile. Vero che il codice (disponibile su Github) deve ancora essere ritoccato, piccole modifiche ma il grosso è fatto.

Joel d’ora in poi sarà uno dei miei modelli, forse anche il blog ne risentirà, in meglio.
Forse anch’io userò la REPL che usa lui, in genere io sono per la più semplice che c’è ma forse la specializzazione quando si supera (o si tende a raggiungere) un certo livello di post-niubbaggine è utile e remunerativa.

Insomma non voglio farla lunga, andate sul blog di Joel Grus, qui: Fizz Buzz in Tensorflow. Ah, non so se avete notato: quando merita i commenti arrivano, tanti😀

SICP – cap. 1 – Costruire astrazioni tramite procedure – esercizi – 22

CfQUlODXIAAB4FW

Continuo da qui con gli esercizi, qui.

Exercise 1.18: Using the results of exercises 1.16 and 1.17, devise a procedure that generates an iterative process for multiplying two integers in terms of adding, doubling, and halving and uses a logarithmic number of steps.

C’è anche una nota di cultura generale, quelli di SICP sono prof tosti (la stessa cosa la faceva a volte il mio relatore per la tesi): This algorithm, which is sometimes known as the “Russian peasant method” of multiplication, is ancient. Examples of its use are found in the Rhind Papyrus, one of the two oldest mathematical documents in existence, written about 1700 B.C. (and copied from an even older document) by an Egyptian scribe named A’h-mose.

Gli esercizi citati sono qui e qui.
Al solito ecco le soluzioni dei miei maestri:

  • Bill the Lizard, chiaro e didascalico;
  • Ken Dyck, un po’ frettoloso;
  • S-sol, di fretta anche lui;
  • Weiqun Zhang, anche lui, ma –al solito– cura il codice, definisce locali le procedure di servizio.

s35

Confessione: occorre fare le prove con carta e penna (sarebbe anche meglio carta, matita e gomma), alla fine viene “ah!”😉

:mrgreen:

Personalizzazioni, tools divertenti e ricordi

binaryUn post di quelli che vengono navigando il Web durante un viaggio lungo; devo avere anch’io il telefono che fa tutto, anche questo.
Comincio con una cosa che sul Pr1me (il mio primo ‘puter, un mini simile al PDP-11 ma completamente diverso) era semplicissimo, l’avevo attivato dopo un paio di settimane, tempo di arrivare lì leggendo il manuale.

Sto parlando di questo post: Making your command line more helpful and fun!
Anche se vi consiglio di non farlo, non funziona come dovrebbe. Ma ci sono i codici ANSI/VT100 per i colori.
Il sito di Sandra (ehi! su ComputerWold, roba di quando ero giovane!) è pieno di notizie, consigli e curiosità. Qualcuno usabile. Visto che si ho passato quasi un ora adesso provo.

Per esempio figlet:

p0
e finalemte

p1
Viene da qui, dove ne trovate altri, lollosi😉
E che dire del countdown (anche questo è una variante di qualcosa di simile esistente su Pr1me, fatto dall’amico Giòrs, o era Ugo? o Dom? o chi?)
Una cosa che tutti i vecchi sanno: EZ conversions on Unix.

Il guaio è che sono troppo vecchio e so la risposta a What’s so special about 2147483648?

Era il fratello maggiore di un vero incubo, 32768:

p2
Ai miei tempi gli interi in Fortran IV (o 66) erano di 2 bytes, con un bit riservato per il segno e l’overflow era sempre in agguato. Il Pr1me (in realtà tutti) consentivano di usare gli interi di 4 bytes, cosa poi diventata di default con il Fortran 77. Comodo, allontanava (praticamente evitava) l’overflow. Ma dovevi fare attenzione ai Common quando modificavi codice esistente. Non ditemi che non sapete cos’è un common, dovete essere proprio giovani!😀

Questo post è un side-effect di cosa sta macchinando Flavio, the MfM, prossimamente vedrete😀

OK, torno alle cose serie –o seriose:mrgreen:

Roba da Museo

C’è questa iniziativa che davvero deve risolversi positivamente. Il MuPIn cerca una sede, e ri$orse, merita davvero. E diventerà una cosa di cui noi torinesi, piemontesi et al. potremo vantarci.
Sono stati loro che hanno organizzato un evento riuscitissimo, due giorni di appassionati con meraviglie tutte più giovani di me ma tutte ormai quasi introvabili. Ma se nasce il MuPIn lì si troveranno, à la eureka! (cit.)😀

2737
Io ci sono stato sabato, eccomi, a destra, con Marco Bruno.
Due cose: 1) sì mi è venuto uno sfogo, come si vede nella foto; e 2) sì ero appena arrivato, accaldato, stavo tentando di togliermi il giubbotto ma sapete come sono i fotografi…😳

E pensa te il prof Roberto Dadda

Elia Bellussi, Roberto Dadda, Andrea Poltronieri.

Elia Bellussi, Roberto Dadda, Andrea Poltronieri.

2759-0
HP9821A, OS: hpbasic, Memoria: 421 registri, c’era a Geotecnica al Poli quando ero studente, anni ’70.

cray
Scheda Cray C90-4 384 MB

2759-2
MacIntosh 512 autoassemblato, 512 KB. Lo chassis è di un hard disk HP, pesantissimo, l’immagine la prima barca di Giulia Bruno.

13
Commodore Amiga e

14
Atari di cui chissà dove ho messo gli appunti😳
Manca la foto del TI99/4A, di cui, prima o poi, vi racconterò…

2762
Adesso qualcosa di nuovo di pakka…

2764
sì, i robottini, con Arduino dentro

2765
e –forse– siamo in via di superamento delle discriminazioni di genere

2772
Tornando a noi il display del 9821, con un numero mysteryousassay

2778
La P101, anche qui numero già visto, chissà cosa mi rappresenta?

2786
l’hanno aperta!

2751
Ah! e questa?

2779
dai, difficile: anticipo ma poi il Marco ci racconterà (non si sa ancora dove, probabilmente al MuPIn): è l’amplificatore di lettura della linea magnetostrittiva😳 tutto chiaro, vero?

Un po’ di link, ma poi ci saranno altri post anche qui su questo blog.

Parecchie delle foto qui sopa le trovate su Facebook, qui.
Sempre il MuPIn su FB, e il suo sito qui. E prossimamente avrà una sede😀
Archeologia Informatica.
ITIS Enrico Fermi, Bibbiena, interessantissimo, sono loro che hanno l’ELEA. Se recupero le foto le posto. Li trovate anche qua.
ITIS Pininfarina di Moncalieri; ho parlato con un giovane prof davvero smart, purtroppo non ho il nome. I ragazzi avevano un robot davvero smart (cioè mi sono incantato a vederlo girare finché hanno chiamato la neuro).
Della P101 ho già raccontato, cose personali, qui.

Continua, prossimamente, forse:mrgreen:

SICP – cap. 1 – Costruire astrazioni tramite procedure – esercizi – 21

ChyProseguo, un passo per volta, da qui oggi un nuovo esercizio, qui.

Exercise 1.17: The exponentiation algorithms in this section are based on performing exponentiation by means of repeated multiplication. In a similar way, one can perform integer multiplication by means of repeated addition. The following multiplication procedure (in which it is assumed that our language can only add, not multiply) is analogous to the expt procedure:

(define (* a b)
  (if (= b 0)
      0
      (+ a (* a (- b 1)))))

This algorithm takes a number of steps that is linear in b. Now suppose we include, together with addition, operations double, which doubles an integer, and halve, which divides an (even) integer by 2. Using these, design a multiplication procedure analogous to fast-expt that uses a logarithmic number of steps.

Introduco qui una nota personale, forse necessaria per chiarire il senso di questi post. Intanto –mi ripeto– il Lisp è poter fare finalmente quello che avrei voluto fare 40 anni orsono ma non c’era il tempo (e i mezzi). Venendo agli esercizi il bello è provare, pasticciare nella REPL e poi “metterli in bella”. Se hai fatto bene le cose, provando e riprovando, limando, aggiustando, … ottieni risultati che assomigliano a quelli dei nerds che linko. Loro sono forse più bravi, o più motivati, o –chissà😳
Per cui ecco:

Adesso verrebbe da chiedersi chi ha copiato chi, ma forse no, quando il problema è semplice la soluzione tende a essere “quella”😀

s34

Altra considerazione scema personale: dove lo trovate un altro linguaggio che vi permette di ridefinire quasi tutto?😳🙄

:mrgreen:

Olivetti P101

Ieri, sabato 21 maggio, ho avuto un’esperienza mistica di quelle che nemmeno Sua Pastosità il Prodigioso FSM (sempre sia condito, RAmen) riuscirebbe a indurre.
È successo poco dopo le 11, alla mostra A Bit Of [Hi]Story, che avevo annunciato qui e di cui riferirò dopo aver riordinato materiale e idee.

Ma subito l’incontro sconvolgente, questo:

23

click per ingrandire

Bella come nuova, ricordo perfettamente quando l’ho usata nel 1970, ero giovane e lei anche. A dire il vero eravamo in due studenti che preparavano un’elaborazione in cui si dovevano fare parecchi calcoli, precisi, non bastava il regolo calcolatore. Il padre del mio amico era rivenditore di questa meraviglia. Ricordo perfettamente il corso che ci ha fatto: non toccate questo, questo e quest’altro e tutta questa zona, se c’è qualche problema telefonatemi qui, il rotolo di carta dovrebbe bastarvi, …

Ieri c’era perfettamente funzionante. E con i programmi, eccone uno:

24

click per ingrandire

In realtà questa è la custodia della scheda; la scheda è una cosa inventata per la P101, un antenato del floppy.

A raccontare tutta la vera verità mi accorgo che l’esperienza mistica ha intaccato parecchio la razionalità: ho una foto, questa:

25
Ci sono un paio di link: mib.bibbiena.org,sito non ancora operativo e www.elea9003.it tutto da navigare.

Se non ho frainteso il mio interlocutore è stato Wladimir Zaniewski (toscano di Polonia), sul suo sito trovate tante cose, tra le quali la P101.

Adesso, conscio delle mie lacune di ieri, invio una mail, poi se del caso rettifico errori e imprecisioni.
Nel frattempo mi riprendo, forse😀

Aggiornamento
Waladimir ha risposto subito alla mail, riporto:

Sono contento dell’emozione che da questa macchina ricca di storia da raccontare.

Per quanto riguarda imprecisioni tecniche non ve ne sono, l’ unico appunto è su di me, sono toscano di Arezzo, il cognome deriva da un nonno polacco che ha combatto in Italia contro i tedeschi.. ma questa è un altra storia.

Poi dovreste fare come me, RSSare il suo blog: Archivio Zaniewski, Collezione privata di Retrocomputing e Retrogaming.

:mrgreen:

Visto nel Web – 236

In ritardo (ieri sera saltava continuamente la luce), incompleto (distratto da altro, poi vi racconto), stanco (per quanto detto sopra) ecco una nuova puntata (breve, lo so) di quanto ho visto nel Web.

bagnasco
Il mio editoriale su Facebook su La Repubblica
#:social media
::: demartin

Oracle V. Google Being Decided By Clueless Judge and Jury
#:copyright
::: Slashdot

EFF Confronts World Copyright Committee
#:copyright
::: Slashdot

We need more Firefoxes
#:free open source software #:Web, Internet
::: kOoLiNuS

“grep was a private command of mine for quite a while before i made it public.” -Ken Thompson
#:storia
::: Medium

Cf7eHZ1W4AEeZJA

ecco #nsedorme manco al lunedì…che chi ben comincia la settimana è a metà dell’opera ihihi😉
#:free open source software
::: EPietrafesa

Linux Kernel 4.6 Officially Released
#:sistemi operativi
::: Slashdot

What Makes Wikipedia’s Volunteer Editors Volunteer?
#:Web, Internet
::: Scientific American

[vim] I’m back to (neo)vim
ognuno potrebbe raccontare la sua storia; tutte simili e tutte differenti😉
#:tools, componenti software
::: The Ubuntu Incident

Linux Kernel 4.6 Officially Released
#:sistemi operativi
::: Slashdot

banana

This book is going to be incredible
#:programming, codice, snippet
::: Symbo1ics

Somebody opened a time capsule from 1995
#:linguaggi di programmazione
::: Symbo1ics

One year of Rust
#:linguaggi di programmazione
::: The Rust Programming Language

Amazon To Sell Its Own Private-Label Groceries
#:ditte
::: Slashdot

Raspberry Pi Zero Gains Camera Support, Keeps $5 Price
#:hardware
::: Slashdot

13241328_709555389184270_846609107988108152_n

Lettera aperta a Bolzano
#:free open source software
::: LibreItalia

Trump walls or Zuckerberg bubbles
#:social media
::: h0d3r

Theoretical Breakthrough Made In Random Number Generation
#:innovazioni, futuro
::: Slashdot

Iraq Shuts Down Internet In Entire Country To Prevent Exam Cheating
#:Web, Internet #:sicurezza, spionaggio
::: Slashdot

Il Lock In visto da mia mamma
#:free open source software
::: Tech Economy

13226751_1030025077075251_7589641227810874585_n

Spagna, processo beffa contro la ‘cupola di Anonymous’
#:umorismo
::: Valigia Blu

Russia Provides Glimpse Of A Future Where Powerful Facial Recognition Technology Has Abolished Public Anonymity
#:sicurezza, spionaggio
::: techdirt

IBM’s optical storage is 50 times faster than flash
#:innovazioni, futuro
::: Engadget

Bridges Mark Zuckerberg Destroyed
#:social media
::: Medium

The FBI has quietly been hacking Americans for 20 years
#:sicurezza, spionaggio
::: evankirstel

jody muse

Some C++ resources
#:linguaggi di programmazione
::: John D. Cook

Google’s Tensor Processing Unit Could Advance Moore’s Law 7 Years Into The Future
#:innovazioni, futuro #:hardware
::: Slashdot

Updated Skimer Malware Infects ATMs Worldwide
#:sicurezza, spionaggio
::: Slashdot

Python Data Science Tutorials
#:algoritmi, codice #:manuali, how to
::: ujjwalkarn

Developer of anonymous Tor software dodges FBI, leaves US
#:sicurezza, spionaggio
::: CNN

Ci_jF-IXAAAQrnP

Programming the ENIAC: an example of why computer history is hard
#:storia
::: Computer History Museum

Digital Data
#:umorismo
::: xkcd

How the Chinese Government Fabricates Social Media Posts for Strategic Distraction, not Engaged Argument
#:sicurezza, spionaggio
::: Gary King

The promise of static typing
#:linguaggi di programmazione
::: IG Labs

sudo lsof +D /var/lib/apt/lists # Show what files or filehandles are open in the specified directory
#:sistemi operativi
::: climagic

Declaring Code Is Not Code, Says Larry Page
#:linguaggi di programmazione
::: Slashdot

13230216_1205499979495079_7329899409193953840_n

The FCC is getting tons of net neutrality complaints
#:Web, Internet
::: Engadget

Moving Away from Python 2
#:linguaggi di programmazione
::: Aaron Meurer

An intro to Regression Analysis with Decision Trees
#:programming, codice, snippet
::: the Glowing Python

I write documentation first and code second. [Joey Hess]
#:programming, codice, snippet
::: dottorblaster

Linux Advocate Suggests Using More Closed-Source Software
#:programming, codice, snippet #:sistemi operativi
::: Slashdot

tumblr_o6u4dqScEG1rpco88o1_500

A Bit Of [Hi]Story – sabato e domenica a Torino

MRFChissà se tra i miei 12 lettori (il signor WordPress dice che sono anche di più) c’è qualcuno dalle parti di Torino?
Perché se sì una cosa che interessa, guarda qui: A Bit Of [Hi]Story.
Un posto in periferia, zona industriale (Fiat, ancora o ex-?) ma ci si arriva anche con il pullman. Io si sarò sabato alle 11, ci conto, nèh!😀

mupin2
Chissà se trovo qualcuno dei miei, anzi adesso spargo la voce, come qui😀

SICP – cap. 1 – Costruire astrazioni tramite procedure – esercizi – 20

3000

Continuo da qui, oggi esercizi, qui.

Exercise 1.16: Design a procedure that evolves an iterative exponentiation process that uses successive squaring and uses a logarithmic number of steps, as does fast-expt. (Hint: Using the observation that (bn/2)2 = (b2)n/2, keep, along with the exponent n and the base b, an additional state variable a, and define the state transformation in such a way that the product a bn is unchanged from state to state. At the beginning of the process a is taken to be 1, and the answer is given by the value of a at the end of the process. In general, the technique of defining an invariant quantity that remains unchanged from state to state is a powerful way to think about the design of iterative algorithms.)

Uh!😳 non so voi ma che ne dite di sbirciare i nostri maestri?

Forse l’esercizio è troppo semplice (per i nerds), ecco la versione di Bill:

s31

e quella di Weiqun:

s32

Una piccola modifica per rendere perfetta quella di Weiqun (la mia preferita, tiene locali le procedure ausiliarie):

s33

OK😀 sì, sono stato un pasticcione; inizialmente avevo dato per scontata square (come fa Weiqun), c’era nella sessione, quella definita da Bill e quindi girava; ma da dove viene il risultato reale? attenzione alle condizioni iniziali😳

Pausa😀

Aggiornamento: c’è uno script in JavaScript che Maurizio ha postato nei commenti. Purtroppo non viene visualizzato correttamente per cui lo metto qui.

/*
Calcolo espnenziale con la formula:
    b^n = (b^2)^(n/2)
*/
// versione ricorsiva
function exp1(b, n) {
    if (n < 1)
        return 1;
    if (n % 2)  // se dispari
        return b * exp(b, n - 1);
    return exp(b * b, n / 2);
}

// versione iterativa
function exp(b, n) {
    var a = 1;
    while (n > 0) {
        if (n % 2) {    // se n è dispari
            a *= b;
            n--;
        } else {
            b *= b;
            n /= 2; 
        }
    }
    return a;
}

function printExp(a, b) {
    document.write(
        "exp(" + a + ", " + b + ") = (iterativa): " + exp(a, b) 
        + " (ricorsiva: " + exp1(a, b) + ")<br>");
}


printExp(2, 10);
printExp(7, 7);
printExp(17, 17);

:mrgreen:

Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.

Segui assieme ad altri 93 follower