Qualcuno si è incuriosito leggendo i post sul linguaggio Forth?
Se volete provarlo sul vostro tablet (Android ovviamente) correte su Google Play e installate l’implementazione di GNU Forth per Android e …. buon divertimento!
Qualcuno si è incuriosito leggendo i post sul linguaggio Forth?
Se volete provarlo sul vostro tablet (Android ovviamente) correte su Google Play e installate l’implementazione di GNU Forth per Android e …. buon divertimento!
Analizziamo il codice del file di esempio:
Questa è la wrapper function che racchiude tutto il codice di definizione dei tasks:
module.exports = function(grunt) { ...... };
all’interno della wrapper function abbiamo tre sezioni: la sezione di configurazione dei task, i comandi di caricamento dei plugin e il comando di definizione del task di default, cioè quello che viene eseguito quando grunt è lanciato senza specificare opzioni.
Nella sezione di configurazione del progetto di questo esempio, che viene dichiarata passando un oggetto alla funzione grunt.initConfig(), abbiamo quattro distinti comandi:
// Project configuration. grunt.initConfig( { pkg: grunt.file.readJSON('package.json'), concat: { options: { separator: ';' }, dist: { src: ['src/app.js', 'src/app1.js'], dest: 'build/output.js' } }, uglify: { build: { src: 'build/output.js', dest: 'build/<%= pkg.name %>.min.js' } }, jshint: { all: ['Gruntfile.js', 'src/*.js'] } });
il primo comando pkg: grunt.file.readJSON(‘package.json’) carica nella variabile pkg il contenuto del file di configurazione package.json. In questo file, che deve esistere nella directory del progetto, sono definiti svariati parametri, in questo caso il parametro di interesse è il nome dell’applicazione che verrà utilizzato di seguito.
Seguono altri tre comandi che definiscono i rispettivi task che formano questo gruntfile: in questo esempio definiamo il task concat, che serve appunto a concatenare i vari files javascript che compongono l’applicazione, poi c’è il task uglify, che rimuove commenti e spazi dal codice per produrne una versione compatta, infine il task jshint che effettua la validazione del codice javascript.
La dichiarazione di questi tre task avviene con tre coppie chiave valore, in cui la chiave è il nome assegnato al task e il valore sono i parametri che lo specificano. In questo esempio utilizziamo dei task che vengono specificati nei plugin grunt-contrib-uglify, grunt-contrib-concat, grunt-contrib-jshint, da cui i nomi utilizzati.
Il task concat viene dichiarato con due parametri: options e dist.
Con il parametro options in questo esempio si specifica il separatore utilizzato durante il processo di concatenazione dei files
options: { separator: ';' }
Con il parametro dist vengono specificati i files da concatenare e il file da produrre
dist: { src: ['src/app.js', 'src/app1.js'], dest: 'build/output.js' }
Il task uglify viene dichiarato con un unico parametro: build
In questo parametro viene specificato il file da comprimere e il file compresso
uglify: { build: { src: 'build/output.js', dest: 'build/<%= pkg.name %>.min.js' } }
Infine per il task jshint con l’unico parametro all viene dichiarato l’elenco dei files
da verificare
jshint: { all: ['Gruntfile.js', 'src/*.js'] }
La sezione con i comandi di caricamento dei plugin specifica l’elenco di quelli utilizzati in questo Gruntfile:
grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-contrib-concat');
Infine nell’ultima sezione dichiariamo i task da eseguire quando grun viene lanciato senza parametri:
grunt.registerTask('default', ['jshint', 'concat', 'uglify']);
Per provare questo esempio dobbiamo ovviamente avere installato grunt.
Il prerequisito è che Node.js ( versione 0.8.0 o successive ) sia installato sulla vostra macchina.
Poi con questo comando installiamo la grunt command line:
npm install -g grunt-cli
Il comando deve essere eseguito con i permessi di amministratore sotto Windows oppure attraverso sudo sotto Linux o OS X.
Installare la command line di grunt non significa avere installato il task runner, questo viene installato localmente (nella directory del vostro progetto) con il comando npm install dopo avere creato i files package.json (nel quale vengono dichiarate le dipendenze, cioè cosa verrà installato da npm install) e ovviamente il file Gruntfile.js, di cui abbiamo visto un esempio.
Come si crea il file package.json? si può utilizzare il comando npm init oppure può essere scritto direttamente. Questo è il file package.json utilizzato per il nostro esempio.
{
"name": "my-project-name",
"version": "0.1.0",
"devDependencies": {
"grunt": "~0.4.2",
"grunt-contrib-jshint": "~0.6.3",
"grunt-contrib-nodeunit": "~0.2.0",
"grunt-contrib-uglify": "~0.2.2"
}
}
… segue nella prossima puntata …..
Questo weekend camminando in montagna vicino a Feltre ho notato delle strane costruzioni: sono dei semplicissimi pagliai realizzati con due pali su cui può scorrere una tettoia che protegge il fieno dalle intemperie.
Osservando questi pagliai ho pensato che sarebbe molto semplice trasformarli in piccoli impianti fotovoltaici: la tettoia potrebbe essere realizzata con 27 moduli da 240 Wp che, secondo i calcoli realizzati con il PVGIS, se inclinati a 40 gradi potrebbero produrre 8140 kWh.
Cosa si può fare con 8140 kWh? Questa energia è il consumo medio di una villetta bifamiliare, per un costo annuo di circa 1400 Euro (+ le tasse). Se risparmiamo questa cifra in 5 anni recuperiamo il costo dei pannelli e dell’inverter, e questo impianto può produrre energia per circa 20/25 anni.
UDOO ecco un’altra board che integra un completo sistema Unix/Android e un microcontrollore Arduino Compatible
Caratteristiche tecniche:
Si svolgerà a Porto De Galinhas in Brasile, l’edizione 2014 della conferenza degli sviluppatori Abril Pro Ruby
Tra gli speaker Jim Weirich, creatore di Rake, Nell Shamrell, project manager a Blue Box e Rafael França del Rails Core Team.
Cos’è Grunt? il personaggio di un videogame?
No, Grunt è per javascript ciò che Makefile è per il C, Ant per java, Rake per ruby
Qualcuno si sta già chiedendo a cosa serve un’altro task manager e in effetti me lo sono chiesto anch’io. La cosa innovativa di Grunt sono i plugin (oltre 2200) sviluppati dalla community che forniscono una soluzione alla maggior parte delle esigenze di chi sviluppa applicazioni in javascritp. Potete ammirarne l’elenco su questa pagina.
Quello che segue è un esempio di un semplicissimo Gruntfile che assolve a 3 compiti che chiunque sviluppa in javascript deve svolgere: verificare la correttezza del codice, concatenare i files javascript in un unico file, e infine comprimerlo:
module.exports = function(grunt) { // Project configuration. grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), concat: { options: { separator: ';' }, dist: { src: ['src/app.js', 'src/app1.js'], dest: 'build/output.js' } }, uglify: { build: { src: 'build/output.js', dest: 'build/<%= pkg.name %>.min.js' } }, jshint: { all: ['Gruntfile.js', 'src/*.js'] } }); // Load the plugin grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-contrib-concat'); // default task
grunt.registerTask('default', ['jshint', 'concat', 'uglify']);
};
… segue nella prossima puntata ….
E’ stata rilasciata la versione 0.10.25 di nodejs
Rilasciate le versioni 1.11 e 2.1 di jQuery
Chi di voi ha mai riconosciuto una porzione di codice apparsa in un film?
Vi ricordate in Terminator il sorgente in assembly 6502?
Su Source Code in TV and Films potete ammirare decine di apparizioni
come questa
E’ possibile acquistare sul sito di ACMESYSTEMS la nuova board Arietta G25, un completo sistema linux in soli 12,5 cmq (25×50 mm) al prezzo speciale di lancio di Euro 9.99 (attenzione, questo prezzo aumenterà ogni settimana fino a stabilizzarsi al prezzo finale di Euro 19.99
Questa scheda è dotata di 2 porte USB, può montare un SDCARD (fino a 32G), non dispone di uscita video nè di interfaccia ethernet ma è previsto un modulo opzionale WiFi basato sul chip RaLink RT5370N IEEE 802.11 b/g/n che costa solo 7 Euri.