Ejemplo de clase para gestionar informe birt

Lo pongo aquí a groso modo. Cuando tenga un ratito le doy mas formato y comento mas y mejor

 

ejecutar un informe desde línia de comanda

Dado que un .rptdesign es un elemento autónomo, que solo requiere para ejecutarlo y btener un informe, de la existencia de un runtime birt (este a su vez requiere un runtime java), podemos lanzar informes directamente desde linia de comanda. Por ejemplo, suponiendo que en c:\carpeta1\birt442 tenemos el runtime de versión 4.4.2, y queremos obtener un informe pdf a partir del diseño c:\carpeta1\prueba.rptdesign 
 

La manera en que birt analiza la comanda es muy fragil y caprichosa (por decirlo de alguna manera). Cosas a tener en cuenta son:
– no le gustan los guiones bajos en las rutas
– no le gusta que le cambien mucho el orden de los flags (por ejemplo, mejor que –file sea el ultimo)
– aunque funciona, muestra una traza de error grave quejandose de la inexistencia de una ruta (en el caso del ejemplo, de c:\carpeta1) 

Otras consideraciones:
Si prueba.rptdesign accede a bd, en la definición del datasource se habrá definido la cadena de conexión y el jar con los drivers.
Ambos se definen en duro con rutas absolutas. Aunque desde java se pueden cambiar dinámicamente, lanzando la comanda directamente no es posible, por tanto, ambas rutas han d’existir (en el caso de los drivers, aunque no existiese la ruta, si ponemos el jar en la misma carpeta que el .rptdesign, o bien en la carpeta c:\carpet1a\birt442\ReportEngine\lib\, será suficiente).
En el ejemplo hemos utilizado flags -p para un hipotético de parámetros. Naturalmente, si vuestro informe no los usa (creo que lo mas habitual es usarlos) o queréis que apliquen los valores por defecto, se pueden obviar.

Otro día vemos como ejecutar informes desde java.

utilizar presearch como buscador, obteniendo tokens por cada busqueda

Un cosa que hago desde que vi este video de Rodrigo el the Fun On The Ride (buen canal, no te lo pierdas) …
https://www.youtube.com/watch?v=mD-giLg9SsE
… es utilizar presearch en lugar de directamente el navegador chrome (o cualquier otro). 

Presearch establece una capa por encima de nuestros buscadores o páginas mas habituales, de tal manera que podemos teclear el texto a buscar y seleccionar (haciendo clic en un botón) el buscador en que queremos que utilice. 

Yo, por ejemplo, cada vez soy mas sensible al tema de la privacidad, así que muchas de las cosas que busco no las busco ya en Google (con Presearch puedo buscar en Google o en el que sea, no hay problema, pero te deja elegir cómodamente), sino que lo hago desde Presearch y selecciono DuckDuckGo.

Adicionalmente, dado que Presearch está vinculado al token PRE (que está en el #314 de Coinbase), pues tienen la amabilidad de remunerarte por cada búsqueda que hagas con ellos. 

No es que la parte económica sea para tirar cohetes, pero es un regalo, y aunque no dieran nada, me resulta cómodo y entiendo que aporta un pequeño plus a las búsquedas que hago. Así que por mi parte lo aconsejo.

Os dejo mi link de referido por si animáis a usarlo:
https://www.presearch.org/signup?rid=231935

Si no queréis usar mi referido, la web es https://www.presearch.org

Solo se requiere registrarse; es fácil, y pronto podréis ver como se van acumulando las monedicas con cada búsqueda.

Tened en cuenta que, aunque en el futuro, desde la propia web podremos retirar los tokens, por el momento esa parte no la tienen desarrollada, así que por ahora solo podemos ir acumulando.

gestión del ciclo de vida de los artefactos

El control del ciclo de vida de un proyecto nuestro, básicamente lo podemos controlar vía los plugins que configuremos en nuestro pom.xml.

Algunos de los plugins que podemos usar en nuestro pom, nos pueden parecer a primera vista ambiguos, o no saber muy  bien cuando utilizar uno u otro. Aquí iré dejando algunas notas acerca de ellos, cuando piense que puedan ser de utilidad o clarificadoras.

maven-jar-plugin, maven-war-plugin: permite generar jars o jars. por si mismo, no incuye en el paquete resultante ninguna de las dependencias que hayamos definido en el pom.xml, ni aunque estas esten definidas como compile (la generación del paquete no tiene en cuenta que una dependencia sea compile o provided; en principio, ninguna será incorporada a no ser que se especifique específicamente, por ejemplo, usando maven-assembly-plugin).

maven-assembly-plugin: permite incluir dependencias definidas en el pom.xml al paquete real que generaremos con nuestro proyecto. Si se abusa de el y cada ejecutable peca de usar jar’s o otros recursos que otros paquetes también incorporan en su interior, corremos el riesgo de abusar del tamaño de los proyectos.

Ejemplo de utilización del plugin maven-assembly-plugin con la finalidad de que la compliación de nuestro proyecto incorpore dentro del jar resultante las diferentes dependencias que hayamos definido en el pom.xml del proyecto, de manera que el artefacto resultante sea del tipo “with-dependencies” (“con todo incorporado dentro”):

 

maven-shade-plugin: Ejemplo de utilización, con la finalidad de que la compilación de nuestro proyecto genere un jar ejecutable (otra opción sería mediante el manifest.mf directamente, pero eso ya no sería un planteamiento maven)(obsérvese el uso que se hace del transformer, para indicar que maven se deberá comportar como si en el manifest.mf constara la clase ad.am.proyectoX.Main como clase de “arranque” del proyecto)   :

 

resolución de dependencias

Ejemplo de definición de una dependencia en el pom.xml de un proyecto:


Si no indicamos atributo scope (como en el caso anterior), maven interpreta por defecto que el scope es compile,
por lo que adjunta los artefactos a nuestro proyecto en tiempo de compilación.

Un ejemplo de cuando podemos querer utilizar dependencias compile, puede ser una aplicación que queremos poder ejecutar autónomamente, que simplemente copiando/pegando el jar resultante de la compilación en cualquier máquina con java pueda funcionar.

Si no queremos que nuestro artefacto crezca embebiendo un exceso de otros artefactos, maven prevée el scope provided, que compilará sin incluir la dependencia en nuestro artefacto resultante, ya que supuestamente, en el sitio en que despleguemos el resultado de nuestra compilación, nuestro artefacto ya encontrará ese otro artefacto.

Un ejemplo de cuando podemos querer utilizar dependencias provided, puede ser una aplicación war 
que haga uso de unos drivers (jar) que ya tenemos desplegados en el servidor web en que correrá la aplicación.

Los servidores vienen típicamente con una serie de modules ya incorporados (eg: artefactos apache), que pueden ser utilizables desde una un proyecto nuestro que los referencie como provided. También realizar un despliegue típico de un proyecto nuestro, como ejb o jar en el servidor de aplicaciones y posteriormente desplegar otro proyecto nuestro que referencie con scope provided al primero.

 

 

introducción a maven

Aquel que utiliza maven lo hace principalmente con dos objetivos. O bien gestionar las dependencias (etiquetas dependencies) que tiene nuestro proyecto hacia otros proyectos/artefactos de software, o bien gestionar el ciclo de vida de nuestro proyecto/artefacto (etiquetas plugin y otras). Para ambos usos, maven se basará en el pom.xml que espera que se halle en la raiz del proyecto. 

Un desarrollador puede trabajar con Maven tanto desde dentro como desde fuera de eclipse.
La mayoría de los ide’s de eclipse que podemos descargar desde la web oficial ya vienen con Maven. No obstante, si queremos trabajar desde fuera de eclipse con Maven
(lo que a veces esta bien para poder hacer scriptar con comandos Maven,
o para poder trabajar escapando del caprichoso comportamiento ocasional de eclipse),
puede ser interesante instalar también Maven de manera independiente en nuestro sistema.

Cuando instalamos Maven, bien sea como una pieza de software autónoma, como formando parte de Eclipse o algún otro ide, Maven, por defecto, conocerá el repositorio remoto estandar http://mvnrepository.com, como el repositorio local que se corresponde a la carpeta .m2 que la instalación habrá creado en alguna ruta del tipo C:\Users\Pepito\.m2

Si queremos obtener artefactos que no están disponibles en el repositorio estándar Maven, deberemos configurar nuestro acceso a url’s que publiquen otros catálogos/repositorios de artefactos (han de ser repositorios que estén accesibles bien a través de internet, bien a través de nuestra red interna). Dicha configuración la podemos hacer en el pom.xml, aunque resulta mas práctico hacerla en el settings.xml (ubicado en la raiz de la carpeta .m2. es decir, en la raíz de repositorio que utilizamos para desarrollar, compilar, o generar nuestros artefactos, en local), que se trata de un fichero de configuración de Maven que controla el comportamiento mas general de este, y es común a todos los proyectos con los que estemos trabajando en nuestro workspace.

Maven, conforme vamos trabajando con nuestros proyectos y definiendo dependencias en los pom.xml de los mismos, va manteniendo una sincronía del repositorio .m2 local con el/los repositorios remotos, de manera que en el .m2 podamos tener catalogados los artefactos que usamos habitualmente y así no tener dependencia absoluta de los repositorios remotos y de cortes en las comunicaciones para poder compilar y generar artefactos.

 

 

introducción a birt

La industria en general, no es que esté culpando yo a los de Eclipse (o al menos no específicamente), cada vez nos pone más difícil lo de hacer listados. Nos engañan diciendo que las herramientas de reporting ahora son Business Intelligence, y entonces hay que comprar licencias de base de datos, o llorar cuando Crystal Reports se va con Sap y nos deja a todos huerfanitos.

Bueno. Algo habrá que utilizar. Sinceramente, me gusta antes Pentaho o otros productos antes que Birt, pero no vamos a discriminarlo. En próximos dìas le dedicaré algún articulillo para que esté contento. Mientras tanto…

Birt es un proyecto opensource que permite crear informes para clientes pesados y aplicaciones web java.
Tanto el componente diseñador como el runtime, requieren java, por lo que aconsejamos jdk o jre 1.7, o posterior.
.
El diseñador:
.

Para realizar los diseños de informes utilizaremos el componente diseñador. El diseñador puede instalarse como plugin del eclipse que estemos utilizando, o bien instalar un eclipse con el plugin preinstalado.

Nuestro consejo es optar por la opcion del ide con el plugin de diseño birt preinstalado y usarlo solo para eso.

Una vez superada la etapa de diseño, no hay problema por mover el .rptdesign al lugar desde donde queramos que nuestros proyectos lo tomen.
Por ejemplo, podemos descargar el ide eclipse all in one en http://download.eclipse.org/birt/downloads / all-in-one / download now

Lo que nos descarga un eclipse-reporting-neon-R-win32-x86_64.zip desenzipable y operativo directamente para comenzar a diseñar informes.

Para ejecutar informes desde el ide, no nos hace falta descargar nada mas, ya que el paquete aquí comentado incluye un runtime birt,
y el propio eclipse lo maneja. Eso si, si debemos conectar los .rptdesign con los que estamos trabajando a bd’s, necesitaremos indicar las cadenas de conexión correspondientes al momento de definir el datasource, y claro, si para establecer dicha conexión hace falta algun jar con drivers, en la definición del datasource también debemos definirle la ruta de dicho jar.
Lamentablemente, solo admite rutas absolutas, por lo que muchas veces la ruta que utilizemos en fase diseño no se corresponderá con la que queramos emplear en producción. Afortunadamente, desde java podremos modificar dinámicamente algunas de este tipo de carácterísticas del .rptdesign.
.
El runtime:
.

En cuanto a la ejecución de los informes, deberemos utilizar un runtime.

El ide all-in-one, ya trae un runtime incorporado, pero solo nos vale si lanzamos un informe desde el propio ide. Por ejemplo, podemos descargarlo de http://download.eclipse.org/birt/downloads/#runtime
Como mencionábamos mas arriba, para ejectuar los informes (.rptdesign) desde el propio ide del diseñador, no nos hace falta otro runtime
que el que ya viene con el ide. Para proyectos puestos en producción, si que lo necesitamos.

consumo de servicio web de coinmarketcap

ejemplo de consumo de un servicio web rest y de utilización básica de Google Gson.

A algunos de nosotros, con conocimientos de programación, nos puede servir de ayuda, hacernos programas muy sencillitos que nos controlen cosas de CoinMarketCap, de Binance, o otros sitios del estilo.

Por ejemplo, imaginemos que queréis utilizar la api que publica CoinMarketCap para obtener una lista de las criptomonedas que muestran en su página web para posteriormente trabajar con ellas con nuestros programas java, para saber cotizaciones, tickers, movimientos de capital, … Necesitaremos una url  (en este caso, api.coinmarketcap.com/v1/ticker/?limit=…) y algo de código…

 

y la clase ActivoCMC podría tener, por ejemplo, esta forma…

 

 

airdrops (los mas recientes están arriba)

Estos son los airdrops en los que voy participando, por si alguien más los quiere seguir.
Los nuevos están arriba. Conforme vais bajando en la lista es mas probable que estén caducados.

https://t.me/GastroAdvisorBot?start=599274628

http://telegram.me/knowchain_airdrop_bot?start=599274628

https://t.me/OpportyAirdropBot?start=599274628

http://t.me/VIDDO_BOT?start=599274628

https://t.me/InnovativeBioresearchBot?start=599274628

https://ttnz.me/Rf/Bc1750B

http://t.me/SinaToken_bot?start=SFUUTS7FGXF3AS9JJBNQ

https://swap.online/?kid=QG2FR

https://numoney.exchange/login/register?referral=HBU94sVRo6I

https://t.me/betlycoin_airdrop_bot?start=jamporiginal

https://dexischain.herokuapp.com/register?invite_code=accc338c-c9b1-4ae8-a3a6-2035932c2aab

https://docs.google.com/forms/d/e/1FAIpQLSezNzDJ-SsN2uc0hPyYfT7ab37e502qaPGR3a0Y2w32KaNNVw/viewform?entry.890140094=@botasrotas
Es facilito y de golem

https://www.satoexchange.com/register/?ref=yf698e2h
Este está chulo. Dan 1000 satx que dicen que valen o valdrán 150$
(no se en que se basan, pero de momento no tienen valor real).

Hay que crear la cuenta, confirmar el correo electrónico, entrar en la web, ir a “account menu / my account”, clicais el boton azul tweet, aceptáis un retwiteo que os proponen, y os enviaran por correo un codigo y un enlace a un canal de telegram. Os unís al canal y pegáis el código. En un minuto o así tendréis los 1000 satx en el balance de vuestra cuenta.

https://www.swiftdemand.com/?referred_by=jmillanpa
Este muchos lo conoceréis. Mas que un airdrop, es un faucet. Si te registras te permite reclamar 100 swiftdemand cada dia. 

https://t.me/Ncash_airdrop_bot?start=599274628
Fácil y rápido.
500 Ncash + 300 Ncash Per Referal

https://en.etu.link/?r=8obt
Mas fácil y rapido todavía. 888 etu

https://airdropalert.com/join/GCOX/f5099099-9ebb-3ed5-b5e1-3a412996d2e7

https://airdropalert.com/join/Qravit…d-96d88226a1f6

https://candycn.imperialstar.io/candy?code=3149e77c
entrar tu eth ETH wallet, entonces te dan un codigo que tienes que poner en su telegram.
no ganas mucho pero es sencillo

10 isc

http://telegram.me/Abele_Airdropbot/?start=alberto_alberto_alberto
de 5 a 7 abele que serían algo menos de 7$ y a distribuír en enero 2019

https://loopycoin.com/users/signup?locinvite=4c7c26d45a
1000 lopy coins

https://secure.lendo.io/public/r/dRDqk
50 ELT que ellos valoran a € 0.40 / ELT
Veréis que hay unos pasos en los que se pide un rango de crédito y una solicitud de tarjeta, pero no son vinculantes. No piden vuestro numero de billetera. Supuestamente, en el futuro se podrá informar en el panel de control de la web, permitiendo retirar los tokens.

https://airdrops.io/moolyacoin/#reft354
100 MOOLYA

https://goshencoin.com/dashboard/register?refId=jamporiginal
100 GCC

https://www.p2pep.com/aff?ref=cuenta.coreo.anonimo@gmail.com
130 PEP ~8$

https://t.me/BailsmanAirdropBot?start=599274628
115 BAILS (~4.025$)

https://t.me/AnythingAppGoldBot?start=5b2e807780a73
58 ANY ~8$


También iré dejando aquí sitios donde podéis encontrar mas airdrops.
Por ejemplo:
https://topicolist.com/airdrops

Como remunerar, o ser remunerado, mediante el navegador Brave

Seguramente conocéis el navegador Brave y/o habréis escuchado mayoritariamente buenas opiniones respecto a el. Una de las muchas cosas interesantes que tiene es que permite aplicar un sistema de remuneración (que se abonan en BAT coins) para premiar a los creadores de contenidos. Para el resto del artículo, cuando hablemos de creadores de contenido nos estaremos refiriendo, por ejemplo, a usuarios registrados en Youtube que en la cuenta propia se hayan configurado un canal, o a personas o instituciones que dispongan de una web.

Que debe hacer un usuario del navegador Brave para premiar a los creadores de contenido, en función de las visitas que el mismo realiza a diferentes canales y/o webs ?

Periódicamente (a fecha de hoy, es mensualmente), Brave está distribuyendo tokens BAT entre todos los usuarios de su navegador. Dichos tokens recibidos, se pueden consultar en “settings / payments” en el propio navegador. Veréis que menciona un presupuesto mensual, que es de unos 15 token, a la fecha en que escribo esto, unos 4,4 Usd. Dichos tokens, si no se gastan se pierden (al menos viene funcionando así, no se si se mantendrá eso en el futuro), pero veréis que en dicho apartado existe un interruptor que permite dejar activado o desactivado el sistema de pagos de Brave.
Si la persona que navega tiene el sistema de pagos activado, dependiendo de las páginas web y canales youtube que visita los 15 tokens de BAT se irán distribuyendo (una vez al mes) entre las visitas que realiza (el usuario también puede configurar si quiere dejar fuera de las retribuciones algún canal o web).

Que debe hacer un creador de contenido para que sus contenidos puedan ser remunerados en función de las visitas que reciben con Brave ?

1)
Brave payments dispone de la siguiente web, en la que se pueden registrar los creadores de contenidos:
https://publishers.basicattentiontoken.org La web es bastante intuitiva, y te permite especificar cuales son tus canales de youtube o páginas web, de manera que el sistema los pueda tener en cuenta. En el caso de que estés especificando una web, no basta con especificar el nombre de dominio (por ejemplo: infoandorra.com); en la web comentada, te permiten descargar un fichero llamado brave-payments-verification.txt, y tu deberas poner dicho fichero en la carpeta .well-known de tu servidor web. Por ejemplo, en mi caso quedó así: /public_html/.well-known/brave-payments-verification.txt Y una vez has puesto el fichero que te han proporcionado ellos en la carpeta .well-known de tu servidor, haces clic en el botón que tienen en su web para confirmarlo, y si lo has hecho bien (a veces hay que dejar pasar unos minutos) finalizara correctamente el registro de tu web en la web de Brave payments. Es en esta web también donde podréis ir viendo el saldo de tokens BAT. No obstante, por el momento, no son retirables, y aquí entra en juego otro elemento, la web uphold, que hará las veces de wallet fiat, a donde retiraremos nuestros bat cuando queramos convertirlos en dinero convencional.
2)
Los creadores de contenido deben también darse de alta en www.uphold.com, esa web hace las veces de intermediario entre los tokens BAT que se acumulen en  https://publishers.basicattentiontoken.org y el dinero fiat, y es donde podemos efectuar retiradas.
3)
Para complicarlo un poquito mas (ya sabemos que la seguridad siempre trae complicaciones), los de la web Uphold (ver paso anterior) requieren que para que los usuarios registrados puedan entrar en la web, además de identificarse, tienen que proporcionar un número. Dicho número lo debe proporcionar la app Authy (es un generador de números que funciona asociado al numero de teléfono de tu móvil, y se puede descargar en Google Play o simmilares). No es complicada de utilizar

y eso es todo!