buy lasix http://all-treatment.org/buy-levitra-vardenafil/ http://all-treatment.org/buy-viagra-sildenafil-citrat/ isotretinoin online buy cialis online
3 maig 2017

Java design patterns

Author: Joaquim Perez Noguer | Filed under: Ciència i tecnologia

Vist a  www.tutorialspoint.com/design_pattern



3 maig 2017

SQLJ – SQL dins de Java

Author: Joaquim Perez Noguer | Filed under: Ciència i tecnologia

SQLJ és una extensió del llenguatge Java per permetre executar-hi SQL dinàmic.

Entre altres coses permet

  • Interactuar fàcilment amb les variables i atributs del Java sense haver de fer l’enllaç amb l’espai de memòria SQL explícitament.
  • Permet declarar iteradors i interactuar amb el FETCH

Per desgràcia molts IDE  no reconeixen el llenguatge SQLJ encara. Tot i que sí que hi ha mòdul SQLJ per MAVEN i com a mínim es pot compilar bé.

 

 public Address getEmployeeAddress(int empno)              
    throws SQLException
  {
    Address addr;                                           
    #sql { SELECT office_addr INTO :addr FROM employees
           WHERE empnumber = :empno };
    // NOTA implícitament executa 
    //    addr= (Address) rs.getORAData(1, Address.getORADataFactory())); 
    return addr;
  }
                                                            
  public Address updateAddress(Address addr)
    throws SQLException
  {
    #sql addr = { VALUES(UPDATE_ADDRESS(:addr)) };          
    return addr;
  }

 

#sql private static iterator EmployeeIterator(String, String, BigDecimal);
...
EmployeeIterator iter;

#sql [ctx] iter = {
  SELECT LASTNAME, FIRSTNAME SALARY
    FROM DSN8710.EMP
   WHERE SALARY BETWEEN :min AND :max
};

do {
  #sql {
    FETCH :iter INTO :lastname, :firstname, :salary
  };

} while (!iter.endFetch());
iter.close();

 

Més informació:

Existeixen altres solucions per a Java, sense pre-compilador però que aleshores involucren haver de fer l’enllaç entre variables Java i SQL manualment:

 



3 maig 2017

A Better Query Language than SQL

Author: Joaquim Perez Noguer | Filed under: Ciència i tecnologia

SQL és un llenguatge declaratiu per manipular dades en una base de dades.

En l’article  A Better Query Language than SQL proposen eliminar algunes absurditats de la sintaxis SQL.

Us heu preguntat mai perquè la sintaxi és  SELECT … FROM … WHERE  quan potser seria més interessant tenir-ho en format  FROM … WHERE … SELECT … ?

FROM table
WHERE predicate
GROUPBY columns
SELECT columns
I per què quan es fan joins cal indicar com s’ha de fer la unió de les taules quan el model de dades ja declara quines són les PrimaryKey i les ForeignKey?
from post
key join user
key join comment
select *
I per què no simplificar la sintaxis de les vistes també ?
from dbo.users
with projection as (
  firstName, lastName, phoneNumber, email
)
select projection.*



3 maig 2017

Xtend – Java millorat

Author: Joaquim Perez Noguer | Filed under: Ciència i tecnologia

Eclipse proposa una millora del Java: Xtend

La sintaxi de Java és massa explícita:

  • si ja saps que la majoria de classes i mètodes són públics, perquè per defecte no són públics ?
  • si tens tens una llista de Strings per què cal indicar   for (String nom :  llista)  i no simplement  for (nom: llista)

i així moltes altres absurditats del llenguatge java…

27 gen. 2017

Antivirus ?

Author: Joaquim Perez Noguer | Filed under: Seguretat

Com a usuari de Linux des de fa vint anys, l’antivirus no el veig necessari ara per ara. El SO és prou robust i el nombre de virus per a Linux és molt més baix que per a altres SO.

Però alerta, que aquesta opinió de Robert O’Callahan diu que fins i tot pels usuaris de Windows seria millor que no fessin servir antivirus (excepte els que proporcionen Microsoft). I no és perquè en Robert treballi a Microsoft precisament. El motiu no és per temes de rendiment de l’Antivirus, sinó per com fa la funció d’Antivirus. Es queixa per exemple que alguns antivirus interfereixen en les mesures de seguretat dels productes, en aquest cas el Firefox, i els fan més vulnerables que sense antivirus.

En el meu cas, en la meva feina, també puc dir que alguns antivirus interferien  en les mesures de seguretat i anti-phishing que vam desenvolupar en una web segura. I la resposta del fabricant de antivirus va ser de negativa total i supèrbia.

La veritat és que no es pot generalitzar i si fos usuari de Windows ara mateix tampoc seria gaire partidari de treure l’antivirus. Però és una opinió que cal tenir en compte.

Origen: Eyes Above The Waves: Disable Your Antivirus Software (Except Microsoft’s)

19 gen. 2017

three.js – Javascript 3D library

Author: Joaquim Perez Noguer | Filed under: General

Vegeu three.js – Javascript 3D library  un mòdul javascript per a fer impressionants animacions 3D com aquest simulador de cotxes 3D (feu anar els cursors i les tecles W, A, S, D )

19 gen. 2017

Motion .js Graphics For The Web

Author: Joaquim Perez Noguer | Filed under: Web

Vegeu  mojs.io – Motion Graphics For The Web un altre mòdul javascript per a fer animacions en les vostres pàgines web.

 

 

19 gen. 2017

CSS Features queries + Grid layout + Native variables

Author: Joaquim Perez Noguer | Filed under: Web

Origen: 3 New CSS Features to Learn in 2017

Aquest 2017 es pot dir que el CSS per fi ho té tot!

1. Feature Queries

Fins ara es mirava si el navegador era Firefox, IE o Chrome, mòbil i es feia un CSS especialitzat per a cada tipus de navegador. Amb Feature Queries només caldrà un sol CSS, en el qual podrem preguntar al navegador si sap o no sap fer una cosa.

@supports ( display: flexbox ) 
          and 
          ( not ( display: flex ) ) {
  .foo { display: flexbox; }
}

2. Grid Layout + flexible lengths + gutters

Per definir les parts de la pantalla vam utilitzar TABLE, DIV amb float:left i moltes coses més. Però ara per fi tenim una forma decent i fàcil de definir-ho.

.hg__header { grid-area: header; }
.hg__footer { grid-area: footer; }
.hg__main { grid-area: main; }
.hg__left { grid-area: navigation; }
.hg__right { grid-area: ads; }

.hg {
    display: grid;
    grid-template-areas: "header header header"
                         "navigation main ads"
                         "footer footer footer";
    grid-template-columns: 150px 1fr 150px;
    grid-template-rows: 100px 
                        1fr
                        30px;
    min-height: 100vh;
}

@media screen and (max-width: 600px) {
    .hg {
        grid-template-areas: "header"
                             "navigation"
                             "main"
                             "ads"
                             "footer";
        grid-template-columns: 100%;
        grid-template-rows: 100px 
                            50px 
                            1fr
                            50px 
                            30px;
    }
}

3. Native Variables

Què és un llenguatge sense variables ? Doncs això CSS després de tants anys per fi permet definir variables.

:root {
  --theme-colour: cornflowerblue;
}

h1 { color: var(--theme-colour); }  
a { color: var(--theme-colour); }  
strong { color: var(--theme-colour); }  

….

const rootEl = document.documentElement;  
rootEl.style.setProperty('--theme-colour', 'plum');  

12 gen. 2017

String.intern

Author: Joaquim Perez Noguer | Filed under: Ciència i tecnologia

Java ofereix un sistema intern per optimitzar la memòria utilitzada quan llegeixes grans quantitats de texts i té molts repetits: String.intern, però cal anar amb compte.

Vegeu les recomanacions String.intern in Java 6, 7 and 8 – string pooling  – Java Performance Tuning Guide

  • Stay away from String.intern() method on Java 6 due to a fixed size memory area (PermGen) used for JVM string pool storage.
  • Java 7 and 8 implement the string pool in the heap memory. It means that you are limited by the whole application memory for string pooling in Java 7 and 8.
  • Use -XX:StringTableSize JVM parameter in Java 7 and 8 to set the string pool map size. It is fixed, because it is implemented as a hash map with lists in the buckets. Approximate the number of distinct strings in your application (which you intend to intern) and set the pool size equal to some prime number close to this value multiplied by 2 (to reduce the likelihood of collisions). It will allow String.intern to run in the constant time and requires a rather small memory consumption per interned string (explicitly used Java WeakHashMap will consume 4-5 times more memory for the same task).
  • The default value of -XX:StringTableSize parameter is 1009 in Java 6 and Java 7 until Java7u40. It was increased to 60013 in Java 7u40 (same value is used in Java 8 as well).
  • If you are not sure about the string pool usage, try -XX:+PrintStringTableStatistics JVM argument. It will print you the string pool usage when your program terminates.

 

12 gen. 2017

Anatomia d’un objecte Java

Author: Joaquim Perez Noguer | Filed under: Ciència i tecnologia

Com guarda el Java els objectes en memòria? T’ho explica  From Java code to Java heap

When your Java code uses the new operator to create an instance of a Java object, much more data is allocated than you might expect.

For example, it might surprise you to know that the size ratio of an int value to an Integer object — the smallest object that can hold an int value — is typically 1:4. The additional overhead is metadata that the JVM uses to describe the Java object, in this case an Integer.

The amount of object metadata varies by JVM version and vendor, but it typically consists of:

Class : A pointer to the class information, which describes the object type. In the case of a java.lang.Integer object, for example, this is a pointer to the java.lang.Integer class.

Flags : A collection of flags that describe the state of the object, including the hash code for the object if it has one, and the shape of the object (that is, whether or not the object is an array).

Lock : The synchronization information for the object — that is, whether the object is currently synchronized.

The object metadata is then followed by the object data itself, consisting of the fields stored in the object instance. In the case of a java.lang.Integer object, this is a single int.So, when you create an instance of a java.lang.Integer object when running a 32-bit JVM, the layout of the object might look like Figure 2:Figure 2. Example layout of a java.lang.Integer object for a 32-bit Java processExample layout of a java.lang.Integer object for a 32-bit Java processAs Figure 2 shows, 128 bits of data are used to store the 32 bits of data in the int value, because the object metadata uses the rest of those 128 bits.