PDA

Visualizza la versione completa : Semplice programma web per creare file ICS (file di testo formattati secondo RFC 5545)


selidori
21-04-2017, 15:59
Buongiorno a tutti.
Devo creare una semplicissima applicazione che generi un file di testo formattato in una certa maniera. Si tratta del formato calendario importabile un po' dappertutto.
Per darvi l'idea è esattamente quanto fa questo:
http://apps.marudot.com/ical/
ma ancora più facile perchè si sceglie solo il giorno ed il tipo di orario, senza specificare i dettagli.

Si tratta di una banalità estrema ma tanto estrema che non so come realizzarla avendo POCHISSIME RISORSE di calcolo a disposizione.


Ovvero tale applicazione dovrebbe essere indipendente dalla piattaforma (girare su windows/linux/android) e non ho server a disposizione (se no in PHP dove me la cavo sarebbe stato un attimo).


Dunque l'idea è di farlo in JAVA o JAVASCRIPT o HTML5 o ditemi voi se c'e' qualcosa di più semplice (dovrei studiarlo da zero) che giri in un client già presente dappertutto (da qua l'idea del browser).
Il mio problema è che appunto non conosco sistemi lato client (ho un po' di dimestichezza con i BATCH di windows ma come detto qua deve essere indipendente).


Come detto l'applicazione è banale:
1- dovrebbe far scegliere fra una serie di dati
2- creare una stringa con questi dati formattati secondo lo standard iCalendar
3- far scaricare od eseguire per import il file dal proprio gestore di eventi/calendario


Volendo la parte 3 è una finezza: se non si riesce a generare un file esterno va bene anche l'output pulito su schermo, poi uno se lo seleziona e salva in un TXT a parte...


Dovendo partire da zero uno vale l'altro ma essendo lo scopo dello studio solo per quest'app, più semplice e veloce è, meglio è!.


Grazie

paolino_delta_t
22-04-2017, 17:53
Ti serve che abbia una GUI?

HTML5 ovviamente non puoi utilizzarlo perche' non e' un linguaggio turing completo, per cui non puo' fare calcoli, cicli, condizioni, ecc... E' Javascript quello che si usa quando si parla di "app in html5".

Essendo a digiuno di conoscenze su strumenti specifici, devi ovviamente rivolgerti a qualcosa che sia facile da imparare. Python potrebbe decisamente fare al caso tuo ( la versione 2 e la 3 presentano notevoli differenze e sono entrambe ancora utilizzatissime, la 3 e' orientata agli oggetti mentre la 2 e' maggiormente procedurale ).

Javascript pure e' semplice ma si appoggia gioco-forza al browser oppure a Node.js o ad Electron.

Java lascialo perdere, troppo complesso. C# idem. Sono ottimi strumenti, sono cross-platform, ma hanno una curva di apprendimento troppo ripida.

Javascript e Python sono linguaggi di scripting e necessitano di un interprete/motore runtime per l'esecuzione. Tuttavia esistono strumenti in grado di creare dei normali eseguibili, in tutto e per tutto identici agli .exe di windows o agli eseguibili di linux.

Il problema e' semmai la GUI, perche' Python necessita che ti studi un toolkit grafico tra quelli a disposizione ( Wx, QT ). In Javascript puoi invece fare uso di HTML5 per la GUI, facendo girare il tutto tramite Electron otterresti un'applicazione identica alle normali applicazioni desktop.

Per esempio queste due sono fatte con Electron

https://github.com/resin-io/etcher
https://github.com/oguzhaninan/Stacer


(https://github.com/oguzhaninan/Stacer)

selidori
22-04-2017, 19:02
Questi mi sembrano ottimi consigli ma se compilati (exe per windows o non so come per linux, senza considerare poi android) non sarebbero immediatamente eseguibili nei sistemi.
E poi (parlo almeno per quanto riguarda il mondo windows) la creazione di programmi *.exe crea una serie di complicazioni (distribuzione, salvataggio in locale, diritti di esecuzione, eventuali librerie, eccetera).

Quindi tralascerei l'idea di un qualcosa che va compilato per rendersi eseguibile (oltretutto in una sola piattaforma) ed ad esempio mi orienterei su python che consigli... ma python a sua volta non ha un interprete da installare sul client? (come infatti dici tu stesso) oppure sono eseguibili direttamente nel browser (magari con una chiamata HTML del tipo: <script language=python>)?
Altrimenti siamo punto a capo, mi sa.

In verità speravo proprio riuscissi a fare tutto in HTML5. Vero che non avrei tutte le funzioni e sopratutto non so se ha i diritti di scrivere nel filesystem, ma almeno un output di testo da copiare pensavo fosse facile da generare...

Grazie comunque dei molti spunti, ora studio bene tutti i consigli che dai e mi documento su chi possa fare al caso mio.

Dimenticavo.
Non mi serve che abbia una GUI, anche se l'utente in qualche modo alcune scelte le deve fare.
Ma essendo scelte limitate (ha solo 5 possibili opzioni) potrei fare semplicemente 5 script con già i dati dentro cablati che generano i 5 output oppure altri trucchi (passarli da riga di comando, o non so cos'altro applicabile in quel sistema... via web potrei raccogliere i dati con una pagina prima via FORM html, ad esempio).

paolino_delta_t
23-04-2017, 12:17
ma se compilati (exe per windows o non so come per linux, senza considerare poi android) non sarebbero immediatamente eseguibili nei sistemi.

?? Un eseguibile e' invece un oggetto direttamente eseguibile dal sistema operativo.



E poi (parlo almeno per quanto riguarda il mondo windows) la creazione di programmi *.exe crea una serie di complicazioni (distribuzione, salvataggio in locale, diritti di esecuzione, eventuali librerie, eccetera).

Dipende da com'e' stato realizzato. E' possibile creare un singolo eseguibile, contenente all'interno ( linkate staticamente ) tutte le librerie necessarie. La distribuzione consiste nel copiare sul computer destinazione quel singolo eseguibile. L'aggiornamento nel sostituirlo con la nuova versione. I diritti di esecuzione si applicazione ovviamente a qualsiasi entita' voglia manipolare altri oggetti del sistema operativo. Pure uno script PHP non puo' andare oltre quelli che sono i diritti che gli sono concessi.

Ma sia chiaro che il termine eseguibile, nel contesto di Python o Electron, e' molto diverso da quello dei programmi compilati in linguaggio macchina. Nel caso di Python, l'exe contiene una copia dell'interprete Python ( per evitare di doverlo installare manualmente ) e tutti i file .py che compongono il programma Python. Nel caso di Electron, hai una copia di Electron e tutti i file html/javascript/css. E' piu' un bundle che un eseguibile nel senso comune del termine.



Quindi tralascerei l'idea di un qualcosa che va compilato per rendersi eseguibile (oltretutto in una sola piattaforma) ed ad esempio mi orienterei su python che consigli... ma python a sua volta non ha un interprete da installare sul client?


Capisco la questione. Vuoi un qualcosa che sia automaticamente trasferibile tra piattaforme diverse. Se c'e' questa necessita' e' chiaro che non e' possibile fornire un eseguibile, ma bisogna fornire i sorgenti Python o Javascript ( o che altro ).

Il problema pero' e' che i sorgenti vanno interpretati ed eseguiti e ci vuole qualcuno che lo faccia. Questo qualcuno o te lo porti appresso in un eseguibile ( come scrivevo poco sopra ) o dev'essere gia' preinstallato ( o installato manualmente ). Non c'e' altro modo.

Il browser e' l'unico software che e' bene o male presente dappertutto. Pero' ci sono le incompatibilita' tra i vari modelli di browser, ovviamente vanno tenute in conto e complicano il programma. Poi ci sono i limiti dei browser, ad esempio non puoi creare/leggere/eliminare file sul disco.

Hai davvero un'assoluta necessita' di evitare gli eseguibili? Voglio dire, alla fin fine si tratterebbe di produrre un eseguibile per Windows, uno per Linux, uno per OS X, uno per Android e cosi' via per ogni piattaforma supportata. Python lo rende semplice. Electron ancora piu' semplice. I due programmi che ti ho linkato, per esempio, possono essere trasformati in eseguibile per le varie piattaforme semplicemente specificando la piattaforma target, senza dover modificare nemmeno una riga di codice.




(come infatti dici tu stesso) oppure sono eseguibili direttamente nel browser (magari con una chiamata HTML del tipo: <script language=python>)?


No, nessun browser contiene all'interno un interprete Python. Come ho detto, l'interprete o lo embeddi nell'exe, o lo installi manualmente o e' gia' preinstallato. Questo e' un limite invalicabile per qualsiasi tipo di tecnologia. I browser sono preinstallati praticamente ovunque, ma come dicevo hanno fortissime limitazioni.



In verità speravo proprio riuscissi a fare tutto in HTML5. Vero che non avrei tutte le funzioni e sopratutto non so se ha i diritti di scrivere nel filesystem, ma almeno un output di testo da copiare pensavo fosse facile da generare...

Quello che puoi fare sono: calcoli, manipolazione di numeri, stringhe, ecc... e la visualizzazione a schermo, la stampa, la creazione di piccoli file nella cache del browser ( sempre obbedendo alle imposizioni del browser ).

Nodejs fu creato proprio per bypassare queste limitazioni e rendere i programmi Javascript, veri e propri programmi.



Non mi serve che abbia una GUI, anche se l'utente in qualche modo alcune scelte le deve fare.


In questo caso Python sarebbe la migliore scelta.

Se la distribuzione di eseguibile non e' un problema, considera anche Google Go, un linguaggio che implementa svariate funzioni di alto livello ( per la concorrenza in particolare ), ha una standard library molto fornita e che offre funzioni per manipolare JSON, XML e altre cose simili e permette di creare eseguibili linkati staticamente, per cui il programma puo' essere facilmente racchiuso in un singolo eseguibile.

E ci sono svariate implementazioni gia' disponibili proprio del formato che cerchi https://golanglibs.com/top?q=ical

Loading