Tuesday, October 29, 2019

How To Import a GitHub Project into Eclipse IDE

How to import a GitHub project into an eclipse project, without polluting the git directory within your user home folder?

Open the command line terminal and move to eclipse workspace:

cd ~/eclipse-workspace

clone the GitHub project from command line:

git clone https://github.com/heroku/java-getting-started heroku-getting-started

You have cloned the GitHub project into the heroku-getting-started directory.

Friday, July 19, 2019

Introduction to SQL

The SQL language is a standard for relational databases:

  • since database systems share a standard language, migrating a database application to another relational database is a quick and cheap work
  • database application programs can access data stored in multiple relational DBMSs using the same database language

The practical SQL vs the relational algebra

  • the SQL language is a high level declarative language for the relational model
    • with a query in the SQL language, the user must only indicate how the result is to be and the DBMS decides how to execute the query
  • the relational algebra is a formal language for the relational model
    • with a query in the relational algebra, the user must specify a sequence of low-level operations. Relational algebra operations are not suitable for most DBMS users

The SQL name stands for Structured Query Language

  • the SQL language is a standard by the American National Standards Institute (ANSI) and the International Standards Organization (ISO)
  • on the wikipedia page about SQL, you can find out the history of the versions of the SQL standard

Wednesday, May 29, 2019

How to style link as buttons

CSS styles

.my-link{
    margin: 20px 0;
    text-align:center;
}
.my-link a {
    font-size:12px;
    padding: 8px 10px;
    background: #4eb0d7;
    color: #FFF;

    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    border: solid 1px #20538D;

    text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4);
    -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 1px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 1px rgba(0, 0, 0, 0.2);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 1px rgba(0, 0, 0, 0.2);
}
.my-link a:hover, .my-link a:focus {
    background: #377B96;
    border: solid 1px #2A4E77;
    text-decoration: none;
}
.my-link a:active {
    -webkit-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.6);
    -moz-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.6);
    box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.6);
    background: #2E5481;
    border: solid 1px #27586C;
}

HTML code

<div class="my-link">
  <a href="#"> CONTINUE TO LINK </a>
</div>

the result

Friday, December 21, 2018

Introduction To Database

Databases and Database Users

Many daily activities involve the use of applications that interact with a database, for example making a bank operation or an hotel reservations, borrowing a book, purchasing tickets or anything else online.

A database application manages information that is to be stored in a database:

  • traditional applications use databases to store textual or numeric data
  • social-media web sites use big data storage systems or NOSQL systems to store text data and non conventional data such as images and video data

Tuesday, October 23, 2018

Floating-point Arithmetic

Floating-point numbers

A mathematical notation offers a way to represent a number with a string of digits of any length and a radix point. If the position of the radix point is not specified, the string indicates a integer and the position of the radix point would be next the least significative digit.

A mathematical notation can represent numbers as the product of two factors: a number of significant digits in a given base and a scale factor, where the scale factor is the base and an exponent. To obtain the value of the number, multiply the significand by the base raised to the exponent, which is equivalent to shifting the radix point by a number of places equal to the value of the exponent.

In scientific notation, numbers are scaled by a power of ten, the radix point appears immediately after the first digit and the scaling factor is a power of ten.

Floating-point representation is similar to scientific notation. A floating-point number consists of:

  • a signed digit string of a fixed length in a given base (or radix), called the significand, coefficient or mantissa.
    • the length of the significand determines the precision to which numbers can be represented
    • the base can be two, ten or sixteen
  • a signed integer exponent (also called scale or characteristic), which modifies the magnitude of the number.

The number exactly represented has the following form:

  significand * baseexponent (significand ∈ Z, base ∈ Z and base ≥ 2, exponent ∈ Z)

Example:

 +3.1415 = +31415 × 10-4

Floating point computation allows to represent very small and very large real numbers with finite precision.
In computing, floating-point arithmetic is used to represent approximated real numbers.

The term floating point indicates the fact that the radix point (decimal point or binary point in computers) can be floated to left or right, that is, it can be placed anywhere in the significant digits of the number.

The IEEE standard for floating numbers in computers and programming languages

Over the years, different floating-point representations have been used in computers. In 1985, IEEE 754, the Standard for Floating-Point Arithmetic, was established by the Institute of Electrical and Electronics Engineers (IEEE). The IEEE 754 standand is for binary floating point numbers representation.

The three IEEE standard number formats widely used in computers hardware and languages are:

  • single precision: the float type in C language. It is a binary format that occupies 32 bits (4 bytes), the significand has a precision of 24 bits, which implies about 7.2 decimal digits.
  • double precision: the double type in C language . It is a binary format that occupies 64 bits (8 bytes), the significand has a precision of 53 bits, which is equal to about 15.9 decimal digits.
  • double extended: also called exdended precision format. It is binary format that occupies 80 bits, the significand has a precision of 64 bits, which corresponds to about 19 decimal digits. If the processor handles 80 bits foating point, the "long double" C type can be used.

Wednesday, September 19, 2018

Basi di Dati: La Normalizzazione delle Relazioni

Il procedimento di normalizzazione serve per eliminare gli errori di progettazione da uno schema. La normalizzazione trasforma uno schema relazionale non normalizzato in uno normalizzato, senza alterare il contenuto informativo dello schema di partenza. Normalizzare uno schema significa eliminare le ridondanze che possono portare alle incongruenze anche dette anomalie.

Le anomalie che si possono presentare sono:

  • anomalie in inserimento
  • anomalie in aggiornamento
  • anomalie in cancellazione

Immaginate di inserire dei dati a mano in una tabella di excel. Supponiamo che la tabella excel contiene dati di un prodotto, con i campi: codice prodotto, descrizione, prezzo. Se nella tabella si aggiungono informazioni relative ad altre entita', ad esempio le informazioni del venditore (codiceFornitore, Nome, Indirizzo) il database va incontro ad anomalie. Infatti, se devo inserire un nuovo prodotto, sono costretto a ripetere le informazioni del venditore: ho anomalie di inserimento. Se modifico un indirizzo di un fornitore, lo devo modificare in tutte le righe dei prodotti che sono associati a quel fornitore: ho anomalie di aggiornamento. Se cancello un prodotto che e' legato ad un fornitore, perdo anche l'informazione del fornitore: ho anomalie in cancellazione.

Applicando il processo di normalizzazione ad uno schema, si ottengono relazioni che possono trovarsi a diversi livelli di bontà, detti forme normali. Avere un database che soddisfa le prima, la seconda e la terza forma normale, significa che lo schema relazionale e' progettato bene e da' una garanzia di qualita'.

Tuesday, September 11, 2018

Basi di Dati: L'algebra Relazionale

Le basi di dati contengono informazioni sulle quali le applicazioni eseguono delle operazioni di interrogazione e aggiornamento dei dati. Per questo motivo assumono importanza i linguaggi che definiscono le funzioni di interrogazione e di selezione dei dati. L'algebra relazionale e' un linguaggio procedurale che, pur non essendo diverso dalle quello implementato dalle basi di dati, permette di esprimere operazioni complesse sui dati come una sequenza passi piu' semplici.

L'algebra relazionale e' costituita da un insieme di operatori. Gli operatori sono definiti su relazioni e restituiscono ancora relazioni. E' possibile combinare piu' operatori per costruire interrogazioni complesse.

Gli operatori si suddividono in:

  • operatori insiemistici tradizionali: unione, intersezione, differenza.
  • operatori specifici: selezione, proiezione, join.

Due relazioni R e S sono compatibili se: 1) hanno lo stesso numero di attributi, cioe’ lo stesso grado, 2) gli attributi nella stessa posizione sono dello stesso tipo.

Friday, August 24, 2018

Basi di Dati: Il Modello Relazionale

Il Modello Relazionale

Il modello relazionale, proposto dal matematico americano Codd, si basa sul concetto di relazione matematica. Il modello relazionale e' un modello teorico, alla base c'e' una teoria con una sua algebra e con i suoi operatori.

Definizione di Relazione

Una relazione definita su una sequenza di domini D1, D2,...,Dn e' un sottoinsieme finito del prodotto cartesiano D1 x D2 x ... x Dn.
Si ricorda che per definizione il prodotto cartesiano di due insieme A e B e' l'insieme costituito da tutte le coppie formate da un elemento dell'insieme A e da un elemento dell'insieme B.

  • il numero n degli insiemi componenti del prodotto cartesiano e' il grado del prodotto cartesiano e della relazione
  • il numero di elementi della relazione e' la cardinalita' della relazione
  • ad ogni dominio si associa un attributo

Ogni attributo e' definito su un dominio, cioe' un insieme di valori ammissibili. Ad esempio, la relazione Libri ha attributo ISDN definto sul dominio dei caratteri alfanumerici di 11 cifre, titolo e' definito sull'insieme delle stringhe di caratteri, lo stesso vale per autore e casa editrice, l'attributo prezzo e' definito sull'insieme dei numeri reali, l'attributo anno sui numeri interi positivi.

Lo schema di una relazione si indica:

 NomeRelazione(Attributo1,...,Attributon)

Friday, July 6, 2018

Basi di Dati: Il modello concettuale

1 DATABASE

Cosa e' un sistema informativo?
  • Durante qualunque attivita' e' necessario avere a disposizione una quantita' di informazioni, per cui le organizzazioni si dotano di un sistema informativo per gestire le informazioni.

Cosa sono i dati?

  • Le informazioni vengono codificate e scambiate. Quando le informazioni vengono codificate, nei sistemi informativi, non si parla piu' di informazione, ma si parla di dati; a differenza delle informazioni, i dati devono essere interpretati per fornire delle informazioni.

Cosa sono le basi di dati?

  • Le basi di dati sono una collezione di dati, raccolti allo scopo di rappresentare le informazioni usate in un sistema informativo. In altre parole, un database e' un insieme di archivi integrati che descrivono una specifica realta' di interesse.

Esempi:

  • quando facciamo una operazione allo sportello dell'ufficio postale, l'operatore in inserisce dei dati dal terminale che sono registrati in un database, il database dei versamenti.
  • quando andiamo in banca e facciamo delle operazioni, l'operatore inserisce dei dati, parte una transazione e i dati immessi popolano un database.
  • voi vi sieti iscritti a questo corso, i vostri dati sono stati registrati in un database.
  • tutti i dati che descrivono una realta' costituiscono un database.

Friday, June 15, 2018

Java SE 8 Date and Time API

Time is a scalar quantity, so it would only need a number to express a time value.
Since you want to relate time to calendars, which are made for humans, things get more complicated.

Java date and time classes' history:

  • the java.util.Date class was introduced in Java 1.0
  • the java.util.Calendar class was introduced in Java 1.1
  • third-party date and time libraries, such as Joda-Time, were used by developer to overcome Java standard API's issues
  • the java.time API was introduced in Java 1.8 to fix the flaws in the previous versions of the platforms

1 The Time Line

The unit of time is the second, which is derived from the Earth's rotation around its axis.

Universal Time

  • Earth rotation is not uniform: in 1967, a more precise definition of second was derived from the property of atoms of caesium-133 and atomic clocks were introduced to keep the official time.
  • Since rotation rate of Earth varies with climate events, official time keepers synchronize absolute time with solar mean time
    • official time keepers add or remove a second to keep the Universal Time close to the mean solar time
  • In UTC, a day has 24 * 60 * 60 = 86400 seconds.
    • the number of seconds in a minute is usually 60, but with an occasional leap second it may be 61.

Universal Time and Computer Systems

  • Computer system keeps 86400 seconds per day and do not respect leap seconds.
  • when a leap second is officially introduced, computer systems slow down or speed up before the leap second.

Java Date and Time API specification for the time scale:

  • A day has 86,400 seconds
  • Time scale matches the official time at noon each day

The Time Line in Java and the Instant class

  • the Instant class represents a point in the time line
  • The static method Instant.now() returns the current instant
  • time is measured on time scale with origin set at midnigth of January 1, 1970 at Greenwich meridian
  • from that origin, time is measured in 86,400 seconds per day
  • Instant.MIN and Instant.MAX are one billion behind and ahead the origin

The Duration class represents the amount of time between two instants

  • the static method Duration.between gives the difference between two instants

Example:

 Instant start = Instant.now();
 callMethod();
 Instant stop = Instant.now();
 Duration timeElapsed = Duration.between(start, stop);
 long millis = timeElapsed.toMillis();