Un piccolo progetto PyGTK: ng – 1

rosettaE se… È da tanto che non faccio qualcosa di grafica e pensare che tanto tempo fa avevo fatto tutta una tiritera su GTK3+ e poi c’è the Freeman al quale l’ho quasi promesso.

Ecco l’amico the Freeman –ehi! ha visto la luce (nel senso di Linux) grazie (anche) a me!

Però venti e più anni di Poli + Windows lasciano il segno. Forse è inevitabile, e poi mica tutti devono smanettare allo stesso modo. E salta fuori che nel suo ultimo post (ma ne sta già preparando un altro mi dice WordPress): Universo Linux vs Pianeta Winapple: testdrive “virtuale”

passa in rassegna millemila distro e guardate come giudica Lubit:


ID Distro     ISO     R<1     HD     UI    US
Lubit         0,67    1       LIVE   1     5

Tutto passa per il tasto destro del mouse. Interfaccia minimale [...]

Il post dovreste leggerlo tutto, tutti, ma per chi è troppo indaffarato ecco il significato di due dei numerini:

UI – Usabilità Interfaccia: 1: interfaccia decisamente spartana con navigazione “a tendine”.
US – Usabilità Sistema Operativo: 5: risposta immediata, velocità nella apertura delle applicazioni, assenza lag in caso di più app aperte.

Chiaro? Alb the Freeman continua a sentire la mancanza di poter riempire il desktop di skifetse icone. Ne abbiamo già parlato, in diversi social-cosi, anche se sono solo ambasciatore mi sono fatto sgridare e richiamare all’ordine da Bit3Lux, Squittymouse et al. più volte.

Tutto ciò premesso provo a impostare una soluzione, di compromesso, chissà…

dock

Che ne direste di una toolbar come quella in figura, dove sia possibile inserire i programmi che usate abitualmente? un dock insomma. Minimale, fatto da me, ampiamente modificabile.

Per adesso c’è solo un abbozzo, ancora non fa niente di utile, tranne che chiudersi facendo click sull’ultimo tasto quello con la X.

#!/usr/bin/python3

from gi.repository import Gtk

button_names = [
    Gtk.STOCK_ABOUT,
    Gtk.STOCK_ADD,
    Gtk.STOCK_REMOVE,
    Gtk.STOCK_QUIT]

buttons = [Gtk.ToolButton.new_from_stock(name) for
			name in button_names
		  ]

def on_click_me_clicked(button):
	print(button.id)
	if button.id == 4:
		print('ciao')
		Gtk.main_quit()

toolbar = Gtk.Toolbar()
n = 0
for button in buttons:
    n += 1
    button.id = n
    toolbar.insert(button, -1)
    button.connect("clicked", on_click_me_clicked)

style_context = toolbar.get_style_context()
style_context.add_class(Gtk.STYLE_CLASS_INLINE_TOOLBAR)

window =  Gtk.Window(decorated = False)
window.add(toolbar)
window.move(2000, 24)
window.connect('delete-event', Gtk.main_quit)
window.show_all()

Gtk.main()

Le immagini, per adesso usa quelle nello stock ma non dovrebbe essere un problema, ecco una prova

#!/usr/bin/python3

from gi.repository import Gtk

img = Gtk.Image.new_from_file('./ath.png')

window =  Gtk.Window()
window.add(img)
window.connect('delete-event', Gtk.main_quit)
window.show_all()

Gtk.main()

imgL’evento da associare ai pulsanti non dovrebbe essere un problema: per aprire un programma basta (dovrebbe bastare) digitarne il nome proprio come si fa da terminale e per aprire un documento con il programma predefinito c’è il comando xdg-open (controllate con man per saperne di più). Questo per Linux, per Windows il comando corrispondente è –oops! prossimamente, devo accedere a una macchina con quella roba sopra :wink:
Mi dicono (Stack Overflow) dovrebbe essere start, da verificare.

Prossimamente assemblo il tutto, non subito, sono in ferie :grin:

Uh! immagini da Rosetta, il mio robot preferito (a pari merito con Cassini, Opportunity, i Voyager e altri ancora) e Max Planck Gesellschaft.

Quasi programmazione con il foglio di calcolo

xls

Non so se vale, una cosa messa lì, dimenticata e ritrovata per via che oggi qualcuno lo apre sullo smartphone Android –no, non so il link– e pare sia usatissimo. Mi è capitato, alcuni mesi orsono, di fornire una consulenza volante per le formule contenute in una tesina in via di compilazione da due studenti non propriamente scientifici. Tutto OK fino a quando non salta fuori che c’era da calcolare una radice quadrata. E lì mi sono stupito e mi son preso un appunto perché è successa una cosa che voi umani…

Invece di aprire la calcolatrice (sì, ambiente Windows, ovviamente) il baldo giovane apre una cartella sul desktop dentro alla quale lancia il file mate.xls. Il foglio di calcolo era molto più bello di quello che vi faccio vedere io ma faceva sostanzialmente la stessa cosa.

mate

Ecco, io non l’avrei mai immaginato! Sono vecchio!!! :mrgreen:

Basta cambiare il numero nella cella A1 e il gioco è fatto. Vero che la radice di 15 con un decimale viene letta come 3,8 e non 3,9 ma se parto con il discorso degli arrotondamenti capita che: 1) mi faccio odiare; 2) il solito originale; e 3) dai che non abbiamo tempo.

Tutto sommato non è una cattiva idea, a patto di usare una suite office che non sia quella onerosa di M$. E sul web ci sono fogli che fanno tutto quello che uno s’immagina, per esempio qui.
Ne ho provato qualcuno, a volte senza riuscire, in certi casi si ricorre a VBA e non so se con Gnumeric funziona. Ma basta googlare e si trova tutto (o quasi). Per esempio io ho la fissa della scomposizione in fattori. Trovato questo: Numeri Primi.xls.

Funziona, senza VBA, in realtà sarebbe interesante approfondire la formula impiegata. Ma ha il grosso limite che prende in considerazione solo i numeri elencati nella colonna Numeri Primi Verificati. Esempio:

2701

OK, ma se il numero è grande, ecco cosa succede:

e1

trova 8 come 2^3 ma poi si ferma al numeraccio:

e2

In effetti è difficile, il numero da esaminare viene da qui:

9657

Uh! con Linux è facile, c’è factor. E per chi si ostina a usare quei ‘puters con le finestre volanti (o adesso una sola e sghemba) ci sono altre possibilità, ecco la mia prediletta:

nl

Ma anche qui, verrei guardato male da praticamente tutti se predicassi certi programmi :oops:

Oppure, in alternativa, ecco cosa direbbe John. :wink:

Visto nel Web – 141

OK, sono in ferie; cioè da ieri qui sono tutti in ferie. Ma una cosa non va in ferie mai: visto nel Web.

oggi-klMG-U430201223567354pHF-1224x916@Corriere-Web-Sezioni-593x443
Nei prodotti Apple uno sniffer ed un dump in USA dei dati personali degli utenti (?)
::: Quinta’s

Boxpx is a fast way to share photo albums, built on Dropbox
::: Boxpx

Dealing With ‘Advertising Pollution’
::: Slashdot

IMG_0106

DemocracyOS
DemocracyOS is an online space for deliberation and voting on political proposals. The software aims to stimulate better arguments and come to better rulings.
personalmente ho parecchi dubbi
::: github

miniLock
File encryption software that does more with less
::: miniLock

Linux Needs Resource Management For Complex Workloads
::: Slashdot

nsajoke

How YouTube works
::: Programming.com

La XPocalypse di Windows XP ha inizio: ecco “Zombie Zero”, il primo virus
::: Dario Cavedon (iced)

“Wearable” Prototype
::: Twitter

male

How can we write better software? – Interview series, part 1
::: Mozilla Hacks

#DennisRitchie #Computing #Programming
::: Google+

Six Clicks: More Linux single-board computers
::: ZDNet

martine franck

martine franck

L’oscurantismo, la ricerca, i diritti umani. E la Commissione alla Camera per i principi dell’Internet Bill of Rights
::: Luca De Biase

I premi Turing: Edsger Dijkstra
::: Mr. Palomar

How Code Has Changed Since The Apollo 11 Moon Landing
Software has come a long way in 45 years
::: readwrite

Him-JokeTemplate-2014.110

Most Valuable Programming Language in Future
non sono d’accordo, segnalo soltanto
::: I am Programmer

Chi vince piglia tutto: concentrazione, power law e net neutrality
::: Luca De Biase

Le alternative multi-core a Raspberry Pi
::: Marco’s Box

sibilia

Boldrini: al via Commissione per “Internet Bill of rights”. Prima riunione il 28 luglio a Montecitorio. L’elenco dei componenti
::: Camera dei deputati

L’iPhone è nudo: iOS è pieno di backdoor messe da Apple
::: tom’s ::: The Next Web

Da EFF una estensione per Firefox e Chrome contro il tracciamento
::: Quinta’s

curiosity__beyond_the_corner__by_alessandrodd-d6b0v2g

This Feisty Linux Company Has An Interesting Plan To Topple Android
::: Business Insider

IPFS: The Permanent Web, by Juan Benet
::: The Sourcegraph

Vittoria in Italia: il tribunale dichiara Wikipedia “un servizio basato sulla libertà degli utenti”
::: Wikimedia

Bjma6LdIUAAT91L

Washington vuole guardare in ogni server, anche in Italia
::: tom’s

UK Cabinet Office Adopts ODF As Exclusive Standard For Sharable Documents
::: Slashdot ::: Computerworld Italia

Why C++ is the perfect choice for modern app development
::: betanews

BtAU_MkCIAAHYF2

NOI siamo il modello di business
::: RudyBandiera

How recursion got into programming: a comedy of errors
::: A Programmers Place

Il Ministro della SIAE
::: manteblog

mon

Conquering the Command Line
Unix and Linux Commands for Developers
::: Conquering the Command Line

Microsoft’s CEO Says He Wants to Unify Windows
::: Slashdot

Dieci motivi per non usare Linux
::: Freestyle Pc

10421357_734223516634061_7533791503501125746_n

Indagine UE sull’equo compenso: aiuto di Stato per SIAE?
::: tom’s ::: noiseFromAmeriKa

Tolosa passa a LibreOffice e risparmia 1 milione di euro
::: Marco’s Box

Internet Explorer Vulnerabilities Increase 100%
::: Slashdot

10351972_10202744131309296_1925532028179516862_n

Python bumps off Java as top learning language
::: JavaWorld

Dependence
::: Bonkers World

Microsoft’s Open Interoperability Gamble Rolls New Dice
::: Forbes

10552528_10152612271419736_2625065629218649869_n

Fermo passa all’open source
::: Daniele Colò

InterState: A Language and Environment for Expressing Interface Behavior
::: Lambda the Ultimate

The Curse of the Excluded Middle
“Mostly functional” programming does not work
::: ACMQ

rain

South Korea gives up on Microsoft
::: TechEye

The NSA’s New Partner In Spying: Saudi Arabia’s Brutal State Police
::: Slashdot

History of Lossless Data Compression Algorithms
::: IEEE

10346208_813195085366313_7318431002670114265_n

What is memory safety?
::: The Programming Languages Enthusiast

Il codice è codice, la legge è software: la cultura digitale è un diritto
::: Luca De Biase

WhatsApp Usage by Country
::: Twitter

10524369_523373587791149_7938497741374775560_n

Logaritmi, anniversario & ricordi

Visto che la storiella di ieri è piaciuta quasi-quasi ne racconto un’altra. Completamente differente, ma in qualche modo –beh, giudicate voi.

logOggi su Twitter trovo questo link: Logarithms celebrate their 400th birthday, meraviglioso. Secondo me.
Intanto la prima cosa che mi è saltato in mente è com’è possibile che nessuno ci avesse pensato prima che ab * ac = a(b+c), ma OK, vero che prima non si faceva scienza e anche il nostro modo di scrivere i numeri (cioè quello degli arabi che l’avevano copiato dagli indiani) era abbastanza recente (vecchio di pochi secoli). OK, sono OT, al solito :oops:

Ma il post mi ha colpito per l’immagine iniziale, con il regolo calcolatore. E la parte iniziale della didascalia devo proprio riportarla:

Before modern-day calculators, slide rules were used to perform calculations.

Vero, proprio vero. E io che sono vecchio, non come i logaritmi ma per quando i calcolatori dei nostri giorni ancora non c’erano il regolo lo usavo. Lo insegnavano a scuola. E ci ho anche fatto un post: Prima della prima, di cui sono orgoglioso, è piaciuto anche a tipi tosti, diciamo nerd (se non si offendono della classificazione).

Ecco, adesso non so se vale fare un postino che non parla dei ‘puters e cita solo altri post, di altri e –orrore autoreferenzialisticistico– miei. Ma è una ricorrenza speciale, e poi sono in ritardo con GTK+ e altro ancora. E fa caldo, troppo :grin:

Se sono vicini si fanno i dispetti?

Magneto-marvel-comics-4206703-1280-880

Ieri mi è successo di nuovo: sono stato informato che corro gravi rischi, perdita di memoria in particolare, per le mie pessime abitudini. Adesso vi racconto.
Anche se ci sono modi migliori per avere sempre a portata di mano i file che servono spesso uso un drive USB, sì, una penna, o chiavetta o come si chiama. Perché a volte non c’è la connessione, altre non ti lasciano accedere alla tastiera e non mi va di distribuire le passwords (poi dovrei cambiarle, sono pigro e mi dimentico le cose), altre ancora sono con chi usa così.
Questo drive in questo periodo lo tengo nel taschino della camicia, con il telefono (quasi sempre spento, ho pessime abitudini) e il portafoglio. Insomma quel taschino sostituisce la borsa tutte le volte che non devo passare per serioso e compassato o non debba portare documenti cartacei voluminosi; praticamente sempre.
E speso salta fuori che mi venga detto che rischio di smagnetizzare il telefono o la penna. Sarà vero? Che dice il web, Google in particolare?

Insomma sembrerebbe di no, non ci sono rischi che i due si danneggino vicendevolmente. A parte i magneti grossi, ma quelli chi se li porta dietro?

Mi viene in mente una cosa di tanto tempo fa, quando ancora non c’era il web. Tra le altre cose uno dei miei compiti era inserire script (in OpenScript) in presentazioni Toolbook. Allora si usavano gli IOmega Zip Drive, 100MB quando in cofronto i floppy erano a 1.44MB. Una leggenda metropolitana diffusa tra i grafici (almeno tra quelli con cui ero in contatto) diceva che non potevi usare lo zip-drive per i file di Toolbook. Io allora ero giovane (non più tanto ma più di ora) e mi avventuravo in lunghe spiegazioni su bit e byte e dintorni. Senza ottenere altri risultati che essere classificato come lunatico inaffidabile. E mi trovavo costretto a usare i CD.

Magneto_Vol_2_1

Oggi è più o meno la stessa cosa; ma invece di discutere lo faccio di nascosto. Anche perché i jeans hanno anche loro le tasche, il taschino a destra, quello per gli spiccioli (pare che originariamente fosse per l’orologio da taschino, la cipolla) sembra fatto apposta per trasferire la chiavetta un attimo prima dell’ora X. Se me ne ricordo. E, importante, rimetterla lì e non nel taschino della camicia alla fine.

rc ovvero ci sono più cose in cielo e in terra…

get_bigUn postino che non so se vale. Ma ho una manciata di giustificazioni (o scuse) per auto-assolvermi:

  • un post già quasi pronto lo blocco perché riguarda cose non più supportate;
  • la solita filosofia Unix, ne ho parlato recentemente e è materia controversa (Massimo non ha tutti i torti, anzi!);
  • l’amico Luigi Bit3Lux posta spesso su questi argomenti, p.es. qui, qui e qui.

Tutto nasce da quest’immagine:

meaning of strange unix-linux command names.001

La trovate su G+, qui.

Fa parte di nixCraft: NixCraft is an online community of new and seasoned Linux / Unix sysadmins who want to make the most of sysadmin-hood.
Volendo c’è anche su Facebook, credo con le stesse cose (forse, non lo seguo).

Allora, tornando all’immagine, quasi tutto OK. Ricordo che quando mi approcciai a Unix tee mi risultò inizialmente ostico perché il COMO (command output) sul Prime era molto meglio (no, solo diverso ma l’abitudine…) e poi non avevo capito il perché del nome, cosa per cui l’immagine su in alto.

Perl se ricordo bene era allora nuovissimo, non si capiva nemmeno dove volesse andare a parare; sarebbe diventato di moda anni dopo alla nascita del Web.

Invece rc. OOPS non lo conosco! Controllo sul manuale cartaceo di SisV di Apollo, manca. Panico? No, c’è la Wiki.
Toh! Plan 9. È la shell di 9P. E c’è anche per Linux anche se non so se serve; per adesso no.

Invece Plan 9, qualche mese fa un giovane nerd me ne parlava entusiasta, peccato che in quel momento non ho pensato di sfruttare l’occasione. Persa, chissà se riesco a rintracciarlo.

OK, nostalgia-mode off :wink:

Visto nel Web – 140

Troppa afa; ma the show must go on, ecco cosa ho visto nel Web.

Bs0SY87CUAAnj6S
Robots Are Invading the News Business, and It’s Great for Journalists
::: NYMag

Gmail users have an extra email address
vero ma ti arriva con l’indirizzo usuale
::: The Ubuntu Incident

Making embedded Linux computer
::: Henrik’s

vet

Interactive scientific computing; of pythonic parts and goldilocks languages
meraviglioso! disclaimer: io sono skyzoide, appartengo ad entrambe le categorie, la seconda mi affascina ma bazzico la prima :mrgreen:
::: Lambda the Ultimate

19% of EU population aged 16–74 has never used a computer
::: Twitter ::: eurostat

Google chiede un dibattito pubblico sul diritto all’oblio
::: il Sole 24 Ore

wan ta cheng

L’apprentissage du « code informatique » sera proposé à l’école primaire dès septembre
::: Le Monde

NSA Says Snowden Emails Exempt From Public Disclosure
::: Slashdot

MATE, il fork di Gnome 2 che mi piace!
::: my life according to me v2.0

Snooperman

Linux, Canonical canta vittoria a Monaco
::: Punto Informatico

New product launch! Introducing Raspberry Pi Model B+
::: Raspberry Pi

Il Comune “licenzia” Microsoft Office
Nei 900 computer di palazzo un sistema open source. «Risparmiamo 360 mila euro»
::: Messaggero Veneto

lispview

Microsoft says super-cheap Windows devices are on the way
::: Engadget

An FBI Counterterrorism Agent Tracked Me Down Because I Took a Picture of This
::: ACLU

PDFy
Your PDF hosted permanently, ad-free
::: PDFy

servizio

How a Supercomputer Beat the Scrap Heap and Lived On To Retire In Africa
::: Slashdot

Linux Day 2014
::: Linux Day 2013

You Can’t Sit on the Sidelines and Become a Philosopher
parla proprio di me; kwasy :grin:
::: Programming in the 21st Century

10530739_10204259667992099_5299146748652962821_n

Installare linux su Android
::: Solo un altro inutile blog

Luca ha dieci anni e non dorme
::: manteblog

Mozilla Advances JPEG Encoding with mozjpeg 2.0
::: https://blog.mozilla.org

unannodopo

OpenSSL fork LibreSSL is declared “unsafe for Linux”
::: LWN

Pseudonyms Now Allowed On Google+
::: Slashdot

Is the Software Renaissance Ending?
::: Slashdot

scia

Beautiful and free fonts for all languages
::: Google

Fcc, Google, Facebook, Netflix, eBay, e la net neutrality
::: Luca De Biase ::: Slashdot

Un inatteso competitor per i paesi che sperano di attrarre capitali alla filiera delle startup
::: Luca De Biase

seppiatura

seppiatura

French Blogger Fined For Negative Restaurant Review
::: Slashdot

A list of search results omitted, erased, or censored due to the “Right to be forgotten”
::: Hidden From Google

Rand Paul and Silicon Valley’s Shifting Political Climate
::: Slashdot

Bsoq2YfIUAAF3h9

Firefox: catturare porzioni (e non solo) delle pagine web visitate
::: Gioxx

Dangerous practice of digital mass surveillance must be subject to independent checks and balances – Pillay
::: UN Human Rights

Ciao @Winditalia , hai appena perso un cliente
::: Il nuovo mondo di Galatea

simili

Why We Use OCaml
::: Esper

Sony Forgets To Pay For Domain, Hilarity Ensues
LOL :wink:
::: Slashdot

Microsoft CEO To Slash 18,000 Jobs, 12,500 From Nokia To Go
::: Slashdot ::: Business Insider

Silvio Berlusconi

Nimrod by Example
::: Nimrod by Example

SimpleStartpage
Little startpage for web browsers by Matteo Pani
io la uso da sempre come home-page di Firefox; l’ho chiamata iMattux
::: github

Parrot Security OS 1.0 – recensione
::: HackerNetwork

10561583_580078255427033_8561982680237711134_n

Installazione di Linux in dual-boot con secure-boot ( UEFI )
::: AVi LUG

Creare una chiavetta USB avviabile multi-sistema
::: AVi LUG

Michael Carroll to Congress: “Copyrights have to expire.”
::: Creative Commons

Simon Barry

Simon Barry

Python for Android Tutorial #1 – Using the accelerometer
::: Byte::Debugger();

Australian bill will put journos in prison for 10 years for reporting leaks
::: Boing Boing

Jolla will sell its Sailfish OS smartphone in India within the next month, exclusively via Snapdeal
::: The Next Web

Roberto Pinotti

Roberto Pinotti

Heinz Zemanek Passes At 94
RIP. La verifica che 5073548261 è primo oggi è immediata, p.es. newlisp -e '(factor 5073548261)' o, più semplicemente, factor 5073548261
::: Slashdot

Snowden contro Dropbox: “È ostile alla privacy, usate piuttosto SpiderOak”
::: Downloadblog

#WhyIBlog Intervista a Alessio Biancalana
::: AC – Il weblog di Andrea Contino

zombieapproach

Multi-Lingual Blogs?
questione molto interessante
::: pwnd

Ecco l’ufficio di Linus Torvalds
::: Marco’s Box

Al via commissione per Internet Bill of Rights
::: Luca De Biase

wan-ta-cheng

Programming is not math, huh?
::: Jeremy Kun

A vaulted space
::: manteblog

JavaScript Notes
::: Connor Johnson

1157647_10152098315129748_1433571845_n

Epifani sulla commissione su internet Bill Of Rights
::: Twitter

Future Programming Language For Android Development
::: Android Development Journal

Bs4iWjZIAAAOCbi

the small tools manifesto for bioinformatics
ehi! in sintonia con il mio post recente :grin:
::: github

The US embassy in Germany right now
::: Twitter

Martin Zehetmayer

Martin Zehetmayer

Backup solo se… adesso con Python – 2

Continuo da qui.

n3

click

E finisco per adesso. Nel senso che la versione da terminale è a posto, funziona (pare). Quando tornerà il mio giovane aiutante –anzi committente– G. attualmente in vacanza con i nonni e senza PC vedrò se lo soddisfa. Restano anche da fare: 1) la verifica su Windows (in settimana, probabilmente); e 2) montare un’interfaccia grafica (prossimamente, forse).

tag

Copia in una directory scelta i file elencati nel file di configurazione tag-orig che si trova nella stessa directory del programma. Una copia di questo file di configurazione lo trovate nel post sopraindicato.

Può essere lanciato in due modi, come dallo screenshot qui sotto.

#!/usr/bin/python3

import sys, os.path, shutil

def getorig():
    progname = sys.argv[0]
    progdir = os.path.dirname(progname)
    fbk = os.path.join(progdir, "tag-orig")
    inpf = open(fbk, "r")
    txt = inpf.readlines()
    inpf.close()
    ele = []
    for st in txt:
        sst = st.strip()
        if len(sst) > 0:
            sst = os.path.expanduser(sst)
            fn = os.path.abspath(
                os.path.join(progdir, sst))
            ele.append(fn)
    return ele

def getbkdir():
    if len(sys.argv) > 1:
        dest = os.path.abspath(sys.argv[1])
        if not os.path.isdir(dest):
            dest = ''
    else:
        dest = os.getcwd()

    return dest    

ORIG = getorig()
BKDIR = getbkdir()

if len(BKDIR) == 0:
    print('***', BKDIR, 'non esiste')
    sys.exit(1)

for fn in ORIG:
    print(fn)
    if os.path.isfile(fn):
        sz = os.path.getsize(fn)
        dest = os.path.join(BKDIR, os.path.basename(fn))
        if sz > 7:
            print("\tcopio", fn, "in", dest)
            shutil.copyfile(fn, dest)

tag
agpa
è quello raccontato qui.
OK, forse serve un piccolissimo manuale:

tag [dest]

se dest è una directory (di solito su un drive USB) copia i file elencati nel file di configurazione tag-orig presente nella stessa directory dello script in dest, se non presente la directory di destinazine è quella corrente (quella di $PWD).

r-tag

Copia i file precedentemente salvati con tag nelle loro posizioni originai. Non sovrascrive i file vecchi ma li rinomina aggiungendo a ognuno il suffisso “-old“.

#!/usr/bin/python3

import sys, os.path, shutil

def getorig():
    progname = sys.argv[0]
    progdir = os.path.dirname(progname)
    fbk = os.path.join(progdir, "tag-orig")
    inpf = open(fbk, "r")
    txt = inpf.readlines()
    inpf.close()
    ele = []
    for st in txt:
        sst = st.strip()
        if len(sst) > 0:
            sst = os.path.expanduser(sst)
            fn = os.path.abspath(
                os.path.join(progdir, sst))
            ele.append(fn)
    return ele

def getbkdir():
    if len(sys.argv) > 1:
        bkdir = os.path.abspath(sys.argv[1])
        if not os.path.isdir(bkdir):
            bkdir = ''
    else:
        bkdir = os.getcwd()

    return bkdir    

ORIG = getorig()
BKDIR = getbkdir()

if len(BKDIR) == 0:
    print('***', BKDIR, 'non esiste')
    sys.exit(1)

for fn in ORIG:
    print(fn)
    bkfile = os.path.join(BKDIR, os.path.basename(fn))
    if os.path.isfile(fn):
         shutil.copyfile(fn, fn + '-old')
    if os.path.isfile(bkfile):
        print("\tcopio", bkfile, "in", fn)
        shutil.copyfile(bkfile, fn)

Non metto l’immagine dello screenshot, è molto simile alla precedente e ugualmente incomprensibile.

Manuale minimo:

r-tag [bkdir]

copia i file di back-up presenti nella directory corrente o quella specificata con il parametro bkdir nelle loro posizioni originali, come definite dal file tag-orig. I file vecchi vengono rinominati aggiungendo il suffisso "-old".

a-tag

Accoda ai file indicati nel file di configurazione tag-orig le aggiunte con lo steso nome ma con il prefisso “a-“.

#!/usr/bin/python3

import sys, os.path, shutil

def getorig():
    progname = sys.argv[0]
    progdir = os.path.dirname(progname)
    fbk = os.path.join(progdir, "tag-orig")
    inpf = open(fbk, "r")
    txt = inpf.readlines()
    inpf.close()
    ele = []
    for st in txt:
        sst = st.strip()
        if len(sst) > 0:
            sst = os.path.expanduser(sst)
            fn = os.path.abspath(
                os.path.join(progdir, sst))
            ele.append(fn)
    return ele

def getbkdir():
    if len(sys.argv) > 1:
        bkdir = os.path.abspath(sys.argv[1])
        if not os.path.isdir(bkdir):
            bkdir = ''
    else:
        bkdir = os.getcwd()

    return bkdir    

ORIG = getorig()
BKDIR = getbkdir()

if len(BKDIR) == 0:
    print('***', BKDIR, 'non esiste')
    sys.exit(1)

for fn in ORIG:
    print(fn)
    aggfile = os.path.join(BKDIR, 'a-' + os.path.basename(fn))
    if os.path.isfile(aggfile):
        print("\taggiungo", aggfile, "a", fn)
        f = open(aggfile, 'r')
        agg = f.read()
        f.close()
        f = open(fn, 'a')
        f.write(agg)
        f.close()

Manuale:

a-tag [aggdir]

accoda ai file inidcati nel file di configurazione tag-orig i file con lo stesso nome ma con prefisso "a-" presenti nella directory aggdir; se aggdir non è specificata viene assunta quella corrente.

Non so voi ma nello scrivere questo post mi si sono sviluppati i brufoli :mrgreen:

Martedì 22 approfittando della disponibilità dell’amico Alberto ho fatto qualche prova con Windows, tutto OK :grin:

La filosofia di Unix

Un post filosofico o lubitoso o nostalgico. O semplicemente –beh giudicate voi.
Ieri su G+ qualcuno condivide quest’immagine

The UNIX Philosophy.001
Pare che venda da qui.

Bella, mi ci ritrovo pienamente. Tanto che appena possibile mi metto a cercare, la Wiki (come faremmo senza! (auto-cit.)), Dr.Dobb’s e altro ancora, nel Web c’è parecchio sull’argomento. Tanto che mi son detto prima o poi, forse, chissà…
E, la conbinassione! oggi Luigi Bit3Lux ti fa un post proprio in quella direzione: Underscore [Brevi Esercizi].
E allora non ho più scuse: la filosofia Unix, quella dell’immagine, vale ancora? Vale ancora scrivere script da eseguire sulla riga di comando, usando i tool forniti dal sistema operativo, proprio come si faceva una volta? E gli esempi forniti da Luigi sono eleganti. E usa anche AWK, quello che a me dicevano che era troppo ostico; e qui forse il mio capo di allora aveva ragione, scelgo la versione Bash, o quella con tr, o …
Però, oltre a finire tag ho in programma una serie di post con finestre, pulsanti e quant’altro, sono incoerente, forse :shock:

Luigi è il papà di Lubit, distro velocissima che invoglia all’uso del terminale, come si usava una volta (non solo nèh, non manca niente per quelli che arrivano da Windoze). E riguardo Lubit mi ricordo sempre la sgridata di Squittymouse quando ho riportato che non si potevano mettere cartelle, documenti, icone e altro ancora sul desktop. Ovviamente ha ragione Squitty.

Appena posso devo indagare su Mike Gancarz, chissà…
Poi c’è anche un tot di nostalgia, tanto che mi viene da mttere questo video :lol:

Tutto Falcon – lunga chiacchierata con Giancarlo Niccolai

logoCome farei se non ci fosse Twitter?  Panico! davvero. OK, lo stesso vale per la Wiki e Stack Overflow e parecchi blog (anche nuovi, anzi in fondo ve ne linko uno appena scoperto; poi c’è sempre quello nuovissimo di Alberto :wink: ).
Ma sono gia OT prima ancora di cominciare –ricomincio.

tweetAllora, c’è questo tweet dove Giancarlo Niccolai il papà di Falcon ci dice proprio tutto sul suo linguaggio. Ne abbiamo già parlao qui sul blog, sia io che –sopratutto– Robitex. Perché tra le N-alla-N cose che mi piacerebbe fare c’è Falcon, anzi ha una priorità decisamente alta. Chissà…
E perdono a Giancarlo quello che ha detto del Lisp, cioè che secondo lui è facile per il ‘puter meno per gli umani; opinione parecchio diffusa. Anzi, adesso che ci penso, non del tutto campata in aria, anzi… :roll:

OK, buona visione, video lungo ma davvero notevole, qui.

Inoltre Giancarlo ha un blog tutto suo che si chiama Giancalo Niccolai, bello ma non troppo aggiornato, lì trovate che i tweet in giapponese hanno un perché. C’è poi, ovviamente il The Falcon Programming Language, per chi vuole saperne di più (e quello che non RSSisco per non sentirmi ancora di più in colpa).


Adesso qualcosa di completamente differente (cit.): come i più attenti frequentatori del blog sapranno sono anche evangelista aggiunto a tempo parziale di Lubit e allora volevo segnalarvi un nuovo blog: InformaticaBlog’s PC di Agostino Liuni. Il post che me l’ha fatto scoprire è Lubit Linux: Come installare, bello, didascalico, un post di quelli che piacciono a me.

Iscriviti

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

Unisciti agli altri 71 follower