buy lasix http://all-treatment.org/buy-levitra-vardenafil/ http://all-treatment.org/buy-viagra-sildenafil-citrat/ isotretinoin online buy cialis online
5 Gen 2019

javac

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

En principi per compilar un programa Java és tan fàcil com:

javac ProgramaJava.java

Però què passa quan es vol compilar un programa sencer, amb biblioteques, package, … ?

Suposem que tens els JAR en un directori lib/ i que el JAVA està en el src/ i que el resultat es vol en un directori classes/. En aquest cas l’instrucció javac hauria de ser la següent:

javac -cp lib/*:classes -sourcepath src -d classes src/ProgramaJava.java

5 Gen 2019

Netbeans 8.1 falla en Ubuntu

Author: Joaquim Perez Noguer | Filed under: Linux

Si heu provat d’utilitzar Netbeans en Linux utilitzant el repositori normal d’Ubuntu (2018), notareu que falla a l’arrencar.

Això és degut a dos problemes:

  • Netbeans 8.1 només arrenca si teniu Java 8. No va ni amb Java 7 ni amb Java 9 o superior.
  • Netbeans 8.1 no arrenca si la biblioteca libequinox-osgi-java és 3.9.1-1. Sembla ser que arrencar amb una versió anterior

Jo no ho he aconseguit fer-lo funcionar des del repositori.

Sembla ser que és millor baixar-se’l de netbeans.org: https://download.netbeans.org/netbeans/8.2/final/

Més informació:

18 Oct 2018

M’he comprat un nou portàtil i amb LINUX!

Author: Joaquim Perez Noguer | Filed under: Linux

Feia molt temps que em queixava que no hi havia opcions de comprar portàtils Linux.

I de fet és veritat que no n’hi ha moltes opcions i menys de portàtils moderns i menys amb “proximitat” i menys a un preu raonable.

Doncs bé finalment he trobat un portàtil que ha complert amb totes les meves necessitats:

http://www.vantpc.es/producto/ultramoove-s

 

9 Oct 2018

Finestres transparents en KD5

Author: Joaquim Perez Noguer | Filed under: Linux

21 Ago 2018

Gràfiques i diagrames amb JS

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

Aquesta és la llista de les biblioteques Javascript més potents del 2018 per a fer gràfiques i diagrames interactius. Vist a https://www.slant.co/topics/3890/~javascript-charting-libraries

26 Abr 2018

Hall of Shame del Java

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

Què retorna el següent fragment de codi?


for(;;) {
try {
return 1;
} finally {
break;
}
}
return -1;

Retorna 1 o -1 ? La resposta és -1!!!

I aquest tros de codi?


while (true) {
try {
return;
} finally {
continue;
}
}

No retorna mai, es queda sempre en bucle!!!

I aquest tros de codi?


try {
if (1 == 1) throw new Exception("1");
} catch Exception(e) {
throw(e);
} finally {
return 1;
}

No generarà excepció i retornarà 1!!!

Aquestes i moltes altres coses passa amb Java.

Més informació

19 Mar 2018

Mockito i JUnit

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

Molt bon tutorial del què es pot fer i com fer-ho amb Mockito. Quan cal utilitzar mock() i quan cal utilitzar spy(). Vegeu-lo http://www.vogella.com/tutorials/Mockito/article.html

També un altre tutorial per principiants a http://www.in28minutes.com/mockito-tutorial-for-beginners

Si es vol fer servir Mockito amb Spring: https://dzone.com/articles/spring-boot-unit-testing-and-mocking-with-mockito

I en concret si tens problemes amb mockejar una classe abstracta using-mockito-to-test-abstract-classes

 

 

13 Mar 2018

Private block chain

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

Vist al Blog de GFT, escrit per Esteban Chiner:

Ethereum es una de las  plataformas más populares para el desarrollo de smart contracts, como ya comentamos en el post anterior; pero, ¿sabes cómo conectarse a una red pública? ¿sabrías cómo crear nuestra propia cadena de bloques privada? En este post te lo explicamos.

Cadenas Públicas

De forma similar a Bitcoin, en el ecosistema de Ethereum, hay muchos editores visuales (o navegadores) que ayudan a recopilar y analizar estadísticas desde un acceso público.

Para conocer toda la información que se está realizando en Ethereum puedes consultar en Etherscan.io, donde podrás ver los bloques generados, las transacciones y contratos que incluyen, etc.

Normalmente, hay dos tipos de redes públicas Ethereum:

  • Mainnet: se utiliza para proyectos de producción y smart contracts, y normalmente se necesita invertir algo de dinero real (convertido a ether) para poder interactuar con él.
  • Testnet: se utiliza para hacer pruebas y puede haber más de uno, recreado generalmente de forma periódica.
Otra de las herramientas de las que disponemos es Ethernodes.org un navegador que muestra información en vivo de la red Ethereum y sus nodos. En la imagen se puede ver que la mainnet consta de unos 22.000 nodos, el 50% de los cuales está en EEUU o China.

Una forma de conectarse a Ethereum es a través de un wallet o thin node, como puede ser Ethereum Wallet. Este te permite conectar a una red pública, gestionar tus cuentas y tus contratos. Lo que no incluye es un navegador de aplicaciones distribuidas (dApps). Para eso haría falta una versión más completa, llamada Mist.

Cuando ejecutes por primera vez el software Etherum Wallet, intentará conectarse al Mainnet. A continuación, puedes cambiar a una testnet (Develop à Network) y comenzar a minar para obtener ether. Si ejecutas la red privada (“Solo network”), el software Wallet debe cambiar automáticamente a ella.

Lo ideal para hacer pruebas es trabajar con redes privadas (veremos luego cómo crear una) o con una de las testents públicas. Actualmente existen las siguientes:

  • Ropsten: soporta nodos Geth y Parity, y es la que mejor reproduce la blockchain principal.
  • Kovan: inmune a ataques de spam, pero solo soporta nodos Parity.
  • Rinkeby: también inmune a ataques de spam, pero solo soporta Geth.

Seleccionar una u otra dependerá de tus necesidades o infraestructura, pero la que está teniendo mejor acogida últimamente y que usamos internamente para pruebas es Rinkeby puesto que es soportada por el software habitual (Geth, Mist y MetaMask). Para conseguir Ether y poder trabajar en ella simplemente hay que seguir los pasos en este enlace.

Crea tu cadena privada

Una vez que hemos comprobado las cadenas públicas, es buen momento para crear tu primera cadena privada con el cliente (o nodo) con Geth.

La instalación es muy sencilla pero depende mucho del SO utilizado. Simplemente sigue las instrucciones de su web. En GFT lo hemos probado en Linux, Windows, Mac e incluso ¡en una Raspberry Pi! sin problemas.

Con el fin de crear tu nueva cadena privada, seguiremos los siguientes pasos:

  • Preparar el bloque Genesis (primer bloque de la cadena, sin predecesor) e inicializar tu blockchain
  • Arrancar la cadena privada y conectar la consola de administración
  • Crear cuentas y arrancar la minería para así validar las transacciones que lleguen a la red

Crear el bloque Genesis

  • Crear una carpeta vacía, donde guardaremos la configuración y se almacenarán los elementos internos de la cadena.
  • Entra en la carpeta nueva y crea un bloque Genesis (genesis.json). El siguiente es un ejemplo típico pero en este post hay muchas más información sobre la configuración.
{
    "config": {
        "chainId": 15,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
    "difficulty": "200000000",
    "gasLimit": "2100000",
    "alloc": { }
}

 

  • En el mismo directorio, ejecuta el siguiente comando para inicializar la cadena de bloques. Esto creará una subcarpeta donde se almacenará la configuración y bloques.
geth --datadir="mychaindata" init genesis.json
  • Arranca la red (actualmente de un solo nodo):
geth --datadir="mychaindata"

Con estos simples pasos ya tenemos una red privada corriendo pero le faltan dos cosas muy importantes: crear cuentas y activar la minería. Para activarlo arrancaremos la consola y haremos las tareas administrativas desde ahí.

Adjuntar una consola de administración al nodo

En una nueva terminal (para no parar el nodo en marcha), al ejecutar el siguiente comando debes ser capaz de obtener un control total sobre el nodo en ejecución. Consulta la Geth Management API para obtener más información sobre los comandos disponibles.

Si estamos en Windows simplemente ejecutando el “attach” será suficiente:

geth attach

Sin embargo, en sistemas basados en Linux hay que indicar el IPC donde conectar. Para eso hay que mirar la consola de la otra pantalla y verás un mensaje del tipo (“IPC endpoint opened:
<<IPC_file_location>>”). Con esa información ejecutaremos el siguiente comando:

geth attach ipc:<<IPC_file_location>>

Se abrirá una consola y podrás interactuar con el nodo, por ejemplo, ejecutando los siguientes comandos que listan las cuentas actuales (por ahora ninguna) y la información básica del nodo, respectivamente:

> personal.listAccounts

> admin.nodeInfo

Creación del usuario y activación del modo minería

En la misma consola creamos uno o varios usuarios con el siguiente comando, que nos pedirá una contraseña para la cuenta:

> personal.newAccount()

Una vez creadas las cuentas, las podemos ver con el comando “personal.listAccounts”.

Pero ahora lo que tenemos que hacer es desbloquearla para luego poder interactuar con ella y poder minar. El siguiente comando pedirá la contraseña para poder desbloquearla:

> personal.unlockAccount(“<<your account (e.g. 
0x5e97870f263700f46aa00d967821199b9bc5a120”)

Con esto lo único que queda es empezar a minar, con el siguiente comando:

> miner.start(<<num_treads>>)

Esto activará el modo de minería, que se encargará de validar las transacciones que lleguen a nuestra blockchain. Además, el ether acumulado por la minería irá a la cuenta que hemos activado.

Con esto ya tendríamos una blockchain privada básica funcionando. A partir de aquí se puede ampliar o mejorar en muchos aspectos, por ejemplo añadiendo más nodos, activando el RPC para interactuar con la red, “inspeccionar” las transacciones recibidas, gestionar las cuentas, reconfigurar la blockchain (ver bloque génesis), etc.

Bonus: arrancar todo en un solo comando

Los pasos anteriores se han seguido de una manera didáctica, pero se podría hacer lo mismo con un simple comando:

geth --datadir="mychaindata" --maxpeers 4 --nodiscover --mine --
minerthreads 1 --unlock 0 console

Que, siguiendo el orden de los comandos, arranca el nodo Geth a partir de la configuración inicial (en “mychaindata”), con un máximo de 4 peers (nodos en la red), sin descubrimiento de peers automático (se tienen que añadir manualmente), con el minado activado con un solo thread, desbloqueando la cuenta 0 (la primera que creamos) y abriendo la consola directamente.

Recuerda que al desbloquear la cuenta como parte del comando nos pedirá la contraseña de esa cuenta al arrancar.

Conclusiones

En este post hemos aprendido a navegar por las redes públicas (Mainnet o Testnet) utilizando los navegadores de bloques más comunes (por ejemplo, Etherscan.io) y cómo conectarse con Ethereum Wallet. También hemos aprendido a crear nuestra propia red privada usando Geth, generando el bloque de genesis, inicializando la cadena de bloques y ejecutando el nodo de minería.

12 Mar 2018

RxMarbles: Reactive programming

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

La programació reactiva és un paradigma de programació declarativa per  a quan hi ha una o més fonts d’esdeveniments asíncrons.

A RxMarbles podeu veure una descripció dels diversos operadors d’aquest paradigma.

Per exemple:

  • Map( x => x *10 )   retorna una seqüència igual a la d’entrada però multiplicant per 10
  • Reduce ( x,y => x+y )  retorna l’acumulat de la seqüencia d’entrada
  • Count( x => x>10 ) retorna el nombre d’elements d’entrada que siguin superiors a 10

26 Feb 2018

Readme Driven Development

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

Normalment els projectes informàtics es dissenyen > s’implementen > es proven > es documenten.

Però normalment la implementació sempre s’allarga, aleshores això treu temps a les proves i encara més temps a la documentació. I això porta a que les aplicacions estiguin:

  • Poc provades
  • Mal documentades.

Una solució això és utilitzar l’estratègia TDD  (Test Driven Development) on els projectes es dissenyen > es creen del joc de proves > s’implementa la solució > es proven > es documenten

Amb aquest paradigma com a mínim s’assegura que hi hagi proves ben fetes. Però sol passar que el projecte no està ben documentat.

RDD (Readme Driven Development) capgira totalment la cadena del projecte. El projecte es documenta, es creen els jocs de proves i finalment s’implementa i es prova. Però això que sembla tan poc intuïtiu té molta lògica.

La documentació no només serveix per explicar com fer servir l’aplicació, sinó que permet als usuaris (i aquí usuari vol dir tant l’usuari final, com el qui haurà de mantenir el codi de l`aplicació, com qui l’hagi d’estendre,…) fer-se una idea del que acabarà sent i si els pot fer servei o no.

A continuació cal formalitzar aquesta documentació i escriure un joc de proves, per veure realment si el que s’ha descrit és realista i realitzable.

I finalment quan s’està segur del què es vol fer i de com ha de quedar aleshores es fa la implementació i es prova.

Més informació