Tutti gli articoli di TFC

RoR 4.1.0 beta 1 released!

ror

E’ Natale e il regalo di quest’anno è l’anteprima di Ruby On Rails 4.1

Spring Application Preloader

Spring velocizza lo sviluppo mantenendo l’applicazione in esecuzione in background,  evitando di riavviarla ogni volta che dovete eseguire un task di rake, una migrazione oppure un test.

config/secrets.yml

Questo files, che di default memorizza il parametro secret_key_base dell’applicazione, può essere utilizzato anche per memorizzare le chiavi di accesso per altre API externe.

Per esempio possiamo mantenere l’access key dei web services amazon

development:
  secret_key_base: 3b7cd727ee24e8444053437c36cc66c3
    aws_access_key: 09876543212345678
ed accedervi quando necessario nell’applicazione
aws_acc_key = Rails.application.secrets.aws_access_key

Action Pack Variants

I request variant  sono una specializzazione dei request format
che consentono di effettuare render differenziati in base al dispositivo da cui avviene la richiesta:

respond_to do |format|
    format.js      { ...... }
    format.desktop    { ....... }
    format.phone  { ....... }
    format.tablet   { ....... }
end

il variant deve essere impostato in una before_action

request.variant = :tablet if request.user_agent =~ /iPad/

Action Mailer Previews

Visitando uno speciale url è possibile visualizzare in anteprima l’aspetto delle email prodotto dall’Action Mailer.

Active Record Enums

Ora è possibile associare dei nomi ai valori numerici di un campo intero di una tabella.
Class Invoice < ActiveRecord::Base
        enum status: [ :suspended, :active, :payed ]
end

if status.payed? ......
………….. prosegue nel prossimo articolo …………..

IoT: hardware

L’Internet delle Cose presuppone l’esistenza di dispositivi che possano collegare ad Internet le Cose: piccoli (nel senso delle dimensioni) sistemi a microprocessore dotati di interfaccie di I/O per acquisire informazioni dal mondo esterno e per comandare attuatori in grado di interagire con lo stesso. Questi sistemi a microprocessore (ovviamente) devono essere collegati alla rete.

Possiamo suddividere questi dispositivi in due grandi famiglie: quelli basati su tecnologia xxduino e quelli basati su linux (o android).

xduino

Il capostipite di questa famiglia è ovviamente la creatura di Massimo Banzi, alla quale si sono ispirati altri prodotti (Seeduino, Freeduino, Olimexino-328, Rainbowduino solo per citarne alcuni) ed altri progetti che, condividendo alcune scelte tecniche di Arduino (un IDE di utilizzo immediato, le dimensioni della board ed i connettori) hanno alzato il tiro creando schede basate su microcontrollori molto più potenti ( Maple STM32 della Leaflabs, Chipkit PIC32 della Microchip) che hanno ispirato  Olimexino-STM32 e Pinguino-PIC32 della Olimex.

linux (o android)

Altri produttori invece sono partiti con piattaforme hardware in grado di supportare una distribuzione Linux su schede poco più grandi di una carta di credito, tra le più famose:

  • Raspberry PI
  • Olinuxino
  • BeagleBone
  • Cubieboard
  • FoxBoard

… e non è finita!

Dal momento che l’appetito viene mangiando, qualcuno ha pensato bene di unire i due mondi, sono nati quindi dei progetti che integrano sulla stessa board su sistema Arduino ed un sistema Linux

  • ArduinoYun
  • pcDuino

ArduinoYunFront_2_450px

 

Inoltre gli stessi creatori di Arduino hanno messo in cantiere la versione TRE, basata su un potente microcontrollore ARM, anche Intel si è buttata nella mischia con la sua board GALILEO, ed anche un altro big del silicio (Renesas) è uscita con una potente scheda Arduino compatible : Sakura!

sakura-board

 

 

 

ALGEBRA LINEARE per tutti

algebralineare4all

Questo libro del Prof. Lorenzo Robbiano, pubblicato da Springer,  affronta con un linguaggio chiaro e semplice ma soprattutto in modo divertente, un argomento che, pur essendo basilare fra gli strumenti della matematica, ha una sua complessità intrinseca: l’Algebra Lineare.

Anche se il libro si rivolge (come dice il titolo) a tutti, la lettura richiede attenzione, per fortuna la parte teorica è affiancata da numero esempi “pratici” e addirittura viene consigliato l’utilizzo di uno strumento free (il sistema di calcolo simbolico CoCoA sviluppato da un gruppo di ricercatori del Dipartimento di Matematica  dell’Università di Genova) per svolgere le esercitazioni contenute nel libro.

 

Functional Programming

From Wikipedia, the free encyclopedia:

In computer science, functional programming is a programming paradigm, a style of building the structure and elements of computer programs, that treats computation as the evaluation of mathematical functions and avoids state and mutable data. Functional programming emphasizes functions that produce results that depend only on their inputs and not on the program state – i.e. pure mathematical functions. It is a declarative programming paradigm, which means programming is done with expressions. In functional code, the output value of a function depends only on the arguments that are input to the function, so calling a function f twice with the same value for an argument x will produce the same result f(x) both times. Eliminating side effects, i.e. changes in state that do not depend on the function inputs, can make it much easier to understand and predict the behavior of a program, which is one of the key motivations for the development of functional programming.

Functional programming has its roots in lambda calculus, a formal system developed in the 1930s to investigate computability, the Entscheidungsproblem, function definition, function application, and recursion. Many functional programming languages can be viewed as elaborations on the lambda calculus, where computation is treated as the evaluation of mathematical functions and avoids state and mutable data. In the other well known declarative programming paradigm, logic programming, relations are at the base of respective languages.[1]

In contrast, imperative programming changes state with commands in the source language, the most simple example is the assignment. Functions do exist, not in the mathematical sense, but the sense of subroutine. They can have side effects that may change the value of program state. Functions without return value therefore make sense. Because of this, they lack referential transparency, i.e. the same language expression can result in different values at different times depending on the state of the executing program.[1]

Functional programming languages, especially purely functional ones such as Hope and Rex, have largely been emphasized in academia rather than in commercial software development. However, prominent functional programming languages such as Common Lisp, Scheme,[2][3][4][5] Clojure, Racket,[6] Erlang,[7][8][9] OCaml,[10][11] Haskell,[12][13] Scala[14] and F#[15][16] have been used in industrial and commercial applications by a wide variety of organizations. Functional programming is also supported in some domain-specific programming languages like R (statistics),[17][18] Mathematica (symbolic and numeric math),[19] J, K and Q from Kx Systems (financial analysis), XQuery/XSLT (XML),[20][21] and Opal.[22] Widespread domain-specific declarative languages like SQL and Lex/Yacc use some elements of functional programming, especially in eschewing mutable values.[23]

Programming in a functional style can also be accomplished in languages that aren’t specifically designed for functional programming. For example, the imperative Perl programming language has been the subject of a book describing how to apply functional programming concepts.[24] C# 3.0 and Java 8 added constructs to facilitate the functional style.

Clever Algorithms: Nature-Inspired Programming Recipes

CleverAlgorithms_3D_400

Questa opera di Jason Brownlee è una miniera d’oro: vi sono contenuti decine di algoritmi, suddivisi tra:

Per ognuno dei quali sono descritti: nome, tassonomia, ispirazione, metafora, stragegia, procedura, euristiche e ovviamente una implementazione (in Ruby, what else?)

Clever Algorithms