Technology [Inutilities] foolendar

Massi™

Typing Monkey
Io lo metto qui, non si sa mai.

Cos'è.
foolendar è un piccolo programmino che ho creato in un periodo di noia e d'incazzatura, dato che nessun altro programma che ho provato era in grado di fare esattamente quello che volevo io.
E' fondamentalmente un "Remember the Milk", unito ad un calendario e tutto quello che fa è stamparvi sullo stdout (il terminale, per esempio) gli impegni che avete per quel giorno.
Ogni impegno è scritto in un file database del calendario (situato in ${HOME}/.calendar_db.txt) nel quale potete anche inserire commenti, così da strutturarvelo come vi pare e piace.

Come funziona
Nel file db potete inserirci fondamentalmente tre tipi di impegni, più i commenti.
  • Impegni standard
    Sono nella forma data|impegno|priorità, ed è probabilmente l'impegno più classico che ci sia. Verrà stampato solo il giorno richiesto, e a seconda della priorità (vedi sotto) il testo può avere un diverso colore.
    La data è nel formato americano yyyymmdd, non so neanche io bene il perché l'ho fatto così, ma è veramente figo :look:
    Esempio:
    20091027|Picchiare Laitorn|USELESS
    Farà sì che il 27 Ottobre 2009, foolendar mi ricorderà che devo picchiare Laitorn.
  • Impegni quotidiani
    Ovvero impegni che avete ogni specifico giorno della settimana (a me torna comodo per l'orario delle lezioni). Il formato è ******xx|impegno|priorità, dove le due xx indicano il giorno della settimana (00 per domenica, 01 lunedì, ..., 06 sabato).
    Esempio:
    ******01|Picchiare Laitorn|MEDIUM
    Farà sì che ogni Lunedì foolendar mi ricorderà che devo picchiare Laitorn.
  • TODO
    Non sono realmente impegni, sono cose che prima o poi dovrete fare (Pagare le bollette, chiamare a casa, ..) e vi torna comodo che vi venga ricordato ogni volta da foolendar. Il formato è **TODO**|Impegno|Priorità
    Esempio:
    **TODO**|Picchiare Laitorn|HIGH
    Farà sì che ogni volta che chiedo a foolendar cos'ho da fare oggi, lui mi risponda che devo picchiare Laitorn, oltre a tutto il resto.

Livelli di priorità
USELESS, è il livello più basso. I duties di questo livello vengono stampati del colore standard del terminale e sono sempre gli ultimi della lista;
LOW, poco più importanti degli USELESS. Colore verde.
MEDIUM, colore giallo.
HIGH, rosso.

Non importa in che ordine mettiate i duties all'interno del file del database, nel momento in cui il file viene parsato vengono messi in una coda di priorità (scritta da me, quindi figa) in cui compaiono sempre prima gli HIGH, poi i MEDIUM, i LOW e gli USELESS. La coda è a espansione dinamica (malloc()) quindi non ci sono assolutamente limiti in tal senso (se non la vostra RAM, ma direi che siamo nell'ordine dell'infinito). L'unico limite (che verrà fixato a breve) è nei caratteri del duties, dal 1024esimo carattere in poi (che son comunque tanti) vien tutto troncato.
A conti fatti, 9 byte per la data, 1024 per il messaggio e al più 7 per la priorità = 1040 byte per duty, 1kB circa per ogni duty viene caricato in RAM e poi scaricato nel momento in cui viene stampato nello stdout. Direi che siamo ampiamente nell'ordine dell'infinito :P

Linea di comando
Ancora il programma è privo di GUI, ma presto ne avrà almeno due (una sviluppata in curses e una in GTK+). I modi di utilizzo sono:
Aggiunta di un duty
esempio: foolendar -a -y 2009 -m 10 -d 27 -w "Picchiare Laitorn" -p "USELESS", aggiunge al database il duty "Picchiare Laitorn", con priorità USELESS, l'anno 2009, mese 10 (Ottobre) giorno 27.
Stampa settimanale
esempio: foolendar -k, stampa tutto quello che avete da fare nella settimana, esclusi i TODOs.
Stampa della versione
esempio: foolendar -v, vi dice la versione di foolendar che state usando (attualmente c'è la 0.1.6)
Ricerca di un giorno
esempio: foolendar -s 20091028, vi dice cosa dovrete fare il giorno cercato (esclusi i TODOs)


Installarlo?
Cazzo, se siete arrivati fino a qua già mi sto eccitando *_*
Comunque, ci son due modi per installarlo, potete prendere una versione rilasciata (ovvero testata per un po' di giorni e funzionante al 100%) da qui, e al momento l'ultima versione rilasciata è la 0.1.5, oppure potete prendere la versione in via di sviluppo, aggiornata quasi quotidianamente ma non sempre funzionante (è esattamente la versione su cui lavoro io) tramite il VCS bazaar. Lo potete installare su ubuntu semplicemente con
Codice:
# apt-get install bzr

E poi prendere il codice con
Codice:
# bzr branch http://massitm.sohead.org/foolendar

Fatto questo (ovvero o avete preso le release o avete fatto bzr branch), andate nella cartella e fate i classici ./configure; make && sudo make install). L'unica dipendenza è la libreria readline >= 5.0 (apt-get install libreadline5-dev, su ubuntu).
Se avete voglia di testarlo mi fate quasi un favore :fag11:
Alla fine di tutto, copiate il file di calendario presente d'esempio, oppure scaricate il mio da qui e mettetelo in ${HOME}/.calendar_db.txt . Fatevi due risate, se volete *_*


Ripeto, non è niente di speciale, è un semplice calendario, ma io volevo qualcosa di comodo da mettere nel file .bashrc (e difatti ce l'ho) e che non facesse niente di più e di meno di quello che serve a me. E' un programma nato sulle mie esigenze, e probabilmente non lo userà mai nessuno, ma non si sa mai..[me=ZioPaperiniK]sogna di diventare ricco e formoso.[/me]
 

Massi™

Typing Monkey
Linux, ma credo anche BSD e MacOS, dal momento che ho utilizzato le librerie standard + la readline (che comunque è parte di bash, quindi dovrebbe averla anche MacOS).

Ora che ci penso, potrei testarla pure su FreeBSD dal momento che ce l'ho installata, poi lo farò. :fag11:
 

Massi™

Typing Monkey
screenshot4.png


Funziona anche su BSD, come volevasi dimostrare :zhat:
 
Alto