Miércoles 31 de octubre de 2018

Victor Orozco (Tuxtor)

Victor Orozco (Tuxtor)
The J*

Eclipse MicroProfile Metrics, practical use cases


At the end of 2000 decade, one of the main motivations for DevOps creation was the (relatively speaking) neglected interaction between development, QA and operations teams.

In this line, the "DevOps promise" could be summarized as the union between culture, practices and tools to improve software quality and, at the same time, to speed up software development teams in terms of time to market. Winning in many successful implementations colateral effects like scalability, stability, security and development speed.

In line with diverse opinions, to implement a successful DevOps culture IT teams need to implement practices like:

  • Continuos integration (CI)
  • Continuos delivery (CD)
  • MicroServices
  • Infrastructure as code
  • Communication and collaboration
  • Monitoring and metrics

In this world of buzzwords it's indeed difficult to identify the DevOps maturity state without losing the final goal: To create applications that generate value for the customer in short periods of time.

In this post, we will discuss about monitoring and metrics in the Java Enterprise World, specially how the new DevOps practices impact the architectural decision at the technology selection phase.

Metrics in Java monoliths

If traditional architectures are considered, monolithic applications hold common characteristics like:

  1. Execution over servlet containers and application servers, with the JVM being a long running process.
  2. Ideally, these containers are never rebooted, or reboots are allowed on planned maintenance Windows.
  3. An application could compromise the integrity of the entire monolith under several conditions like bad code, bad deployments and server issues.

Without considering any Java framework, the deployment structure will be similar to the figure. In here we observe that applications are distributed by using .war or .jar files, being collected in .ear files for management purposes. In these architectures applications are created as modules, and separated considering its business objectives.

Monolith deployment

If a need to scale appears, there are basically two options, 1- to scale server resources (vertical) and 2- to add more servers with an application copy to distribute clients using a load balancer. It is worth to notice that new nodes tend to be also long running processes, since any application server reboot implies a considerable amount of time that is directly proportional to the quantity of applications that have been deployed.

Hence, the decision to provision (or not) a new application server often is a combined decision between development and operations teams, and with this you have the following options to monitor the state of your applications and application server:

  1. Vendor or vendor-neutral telemetric APIs -e.g Jookla, Glassfish REST Metrics-
  2. JMX monitoring through specific tools and ports -e.g. VisualVM, Mission Control-
  3. "Shell wrangling" with tail, sed, cat, top and htop

It should be noticed also, in this kind of deployments it's necessary to obtain metrics from application and server, creating a complex scenario for status monitoring.

The rule of thumb for this scenarios is often to choose telemetric/own APIs to monitor application state and JMX/Logs for a deeper analysis of runtime situation, again presenting more questions:

  • Which telemetric API should I choose? Do I need a specific format?
  • Server's telemetry would be sufficient? How metrics will be processed?
  • How do I got access to JMX in my deployments if I'm a Containers/PaaS user?

Reactive applications

One of the (not so) recent approaches to improve users experience is to implement reactive systems with the defined principles of the Reactive Manifesto.

Reactive manifesto

In short, a reactive system is a system capable of:

  • Being directed/activated by messages often processed asynchronously
  • Presents resilience by failing partially, without compromising all the system
  • Is elastic to provision and halt modules and resources on demand, having a direct impact in resources billing
  • The final result is a responsive system for the user

Despite not being discussed so often, reactive architectures have a direct impact on metrics. With dynamic provisioning you won't have long running processes to attach and save metrics, and additionally the services are switching ip addresses depending on clients demand.

Metrics in Java Microservices architectures

Without considering any particular framework or library, the reactive architectural style puts as strong suggestion the usage of containers and/or Microservice, specially for resilience and elasticity:

Microservices deployment

In a traditional Microservices architecture we observe that services are basically short-lived "workers", which could have clones reacting to changes on clients demand. These environments are often orchestrated with tools like Docker Swarm or Kubernetes, hence each service is responsable of register themself to a service registry acting as a directory. Being the registry, the ideal source for any metric tool to read services location, pulling and saving the correspondent metrics.

Metrics with Java EE and Eclipse MicroProfile

Despite the early efforts on the EE space like an administrative API with metrics, the need of a formal standard for metrics became mandatory due Microservices popularization. Being Dropwizard Metrics one of the pioneers to cover the need of a telemetric toolkit with specific CDI extensions.

In this line, the MicroProfile project has included among its recent versions(1.4 and 2.0) support for Healthcheck and state Metrics. Many of the actual DropWizard users would notice that annotations are similar if not the same. In fact Microprofile annotations are based directly on DropWizard's API 3.2.3.

To differentiate between concepts, Healtheck API is in charge of answering a simple question "Is the service running and how well is it doing it?" and are targeted for orchestrations. On the other side Metrics present instant or periodical metrics on how services are reacting over consumers requests.

Latest version of MicroProfile (2.0) includes support for Metrics 1.1, including:

  • Counted
  • Gauge
  • Metered
  • Timed
  • Histogram

So, it is worth to give them a try with practical use cases.

Metrics with Payara and Eclipse MicroProfile

For the test we will use an application composed by two microservices, as described in the diagram:

Arquitectura tests

Our scenario includes two microservices, OmdbService focused on information retrieving from OMDB to obtain up to date movie information and MovieService aimed to obtain movie information from a relational database and mix it with OMDB plot. Projects code is available at GitHub.

To activate support for MicroProfile 2.0 two things are needed, 1- the right dependency on pom.xml and 2- to deploy/run our application over a MicroProfile compatible implementation, like Payara Micro.


MicroProfile uses a basic convention in regards of metrics, presenting three levels:

  1. Base: Mandatory Metrics for all MicroProfile implementations, located at /metrics/base
  2. Application: Custom metrics exposed by the developer, located at /metrics/application
  3. Vendor: Any MicroProfile implementation could implement its own variant, located at /metrics/vendor

Depending on requests header, metrics will be available in JSON or OpenMetrics format. The last one popularized by Prometheus, a Cloud Native Computing Foundation project.

Practical use cases

So far, we've established that:

  1. You could monitor your Java application by using telemetric APIs and JMX
  2. Reactive applications present new challenges, specially due microservices dynamic and short running nature
  3. JMX is sometimes difficult to implement on container/PaaS based deployments
  4. MicroProfile Metrics is a new proposal for Java(Jakarta) EE environments, working indistinctly for monoliths and microservices architectures

In this post we present a couple of cases discussed also at Oracle Code One:

Case 0: Telemetry from JVM

To give a quick look on MicroProfile metrics, it is enough to boot a MicroProfile compliant app server/microservice framework with any deployment. Since Payara Micro is compatible with Microprofile, metrics will be available from the beginning at http://localhost:8080/metrics/base.

Base metrics

You could switch the Accept request header in order to obtain JSON format, in curl for instance:

curl -H "Accept: application/json" http://localhost:8080/metrics/base

JSON metrics

By itself metrics are just an up to date snapshot about platform state. If you wanna compare these snapshots over time, metrics should be retrieved on constant periods of time . . . or you could integrate prometheus which already does it for you. In here I demonstrate some useful querys for JVM state, including heap state, cpu utilization and GC executions:


Heap metrics


CPU metrics


GC metrics

Case 1: Metrics for Microservices

In a regular and "full tolerant" request from one microservice to another your communication flow will go through the following decisions:

Metrics fallback patterns

  1. To use or not a cache to attend the request
  2. To cut the communication (circuit breaker) and execute a fallback method if a metric threshold has been reached
  3. To reject the request if a bulkhead has been exhausted and execute a fallback method instead
  4. To execute a fallback method if the execution reached a failed state

Many of the caveats on developing Microservices come from the fact that you are dealing with distributed computation, hence you should include new patterns that already depend on metrics. If metrics are being generated, with exposure you will gain data for improvements, diagnosis and issue management.

Case 1.1: Counted to retrieve failed hits

The first metric to implement will be Counted, a pretty simple one actually. Its main objective is to increment/decrement its value over time. In this use case the metric is counting how many times the service reached the fallBack alternative by injecting it directly on a JAX-RS service:

Counter failedQueries;
@Fallback(fallbackMethod = "findByIdFallBack")
public Response findById(@PathParam("id") 
final String imdbId) {

public Response findByIdFallBack(@PathParam("id") 
final String imdbId) {

After simulating a couple of failed queries over OMDB database (no internet :) ) the metric application:com_nabenik_omdb_rest_omdb_endpoint_failed_queries shows how many times my service has invoked the fallback method:

Counted metrics

Case 1.2: Gauge to create your own metric

Although you could depend on simple counters to describe the state of any given service. With gauge you could create your own metric . . . like a dummy metric to display 100 or 50 depending on odd/even random number:

@Gauge(unit = "ExternalDatabases", name = "movieDatabases", absolute = true)
public long getDatabases() {
	int number = (int)(Math.random() * 100);
	int criteria = number % 2;
	if(criteria == 0) {
		return 100;
	}else {
		return 50;

Again, you could search for the metric at prometheus, specifically application:movie_databases_ExternalDatabases

Gauge metrics

Case 1.3: Metered to analyze request totals

Are you charging your API per request? Don't worry you could measure the usage rate with @Metered.

@Metered(name = "moviesRetrieved",
	unit = MetricUnits.MINUTES,
	description = "Metrics to monitor movies",
	absolute = true)
public Response findExpandedById(@PathParam("id") final Long id) 

In this practical use case 500 +/- requests where simulated over a one minute period. As you could observe from the metric application:movies_retrieved_total the stress test from JMeter and Prometheus show the same information:

Stress metrics
Metered metrics

Case 1.4: Timed to analyze your response performance

If used properly, @Timed will give you information about requests performance over time units.

@Timed(name = "moviesDelay",
	description = "Metrics to monitor the time for movies retrieval",
	unit = MetricUnits.MINUTES,
	absolute = true)
public Response findExpandedById(@PathParam("id") final Long id)

By retrieving the metric application:movies_delay_rate_per_second its observable that requests take more time to complete at the end of the stress test (as expected with more traffic, less bandwidth and more time to answer):

Timed metrics

Case 1.5: Histogram to accumulate useful information

As described in Wikipedia, an Histogram is an accurate representation of the distribution of numerical data. Hence we could create our own distribution by manipulating directly the metrics API with any given data, like global attendees:

MetricRegistry registry;

public Response addAttendees(@PathParam("attendees") Long attendees) {
	Metadata metadata =
	new Metadata("matrix attendees",
	Histogram histogram = 
	return Response.ok().build();

And as any distribution, we could get the mins, max, average and values per quantile:

Histogram metrics

Viernes 26 de octubre de 2018

Javier Aroche

Javier Aroche
Javier Aroche

Gyo – A horror manga

Gyo – a horror manga by Junji Ito

How can a manga be so awesome and disgusting at the same time? That’s Junji Ito’s work. Gyo really impressed me with its drawings of horrible mech-zombie bodies expelling gases, thanks to a germ developed by the Japanese army. I can’t recommend it enough, although the story is a bit short.


The copy I bought off Barnes and Noble also included two short stories, one had ready many years ago (“The enigma of Amigara Fault”), which I liked a lot back then. It was a surprise to find it again in this copy.

I recommend checking out other works of Junji Ito. I just finished reading Black Paradox, a story about a group of strangers willing to commit suicide (together), but a lot of strange events happen before they succeed.


Lunes 22 de octubre de 2018

Javier Aroche

Javier Aroche
Javier Aroche

A game about staying in bed all day

#Selfcare is a quite different game, not about completing missions, killing monsters, or amassing loot. It’s about not getting out of bed.

Domingo 07 de octubre de 2018

Javier Aroche

Javier Aroche
Javier Aroche

Sword Art Online – Alicization (Season 3)

Heads up! The season 3 of Sword Art Online anime just started airing again 😀 (previous season aired back in 2014). SAO its one of my favorite series, and having had read the light novels a few years ago, I’m excited about this adaptation.

I think its been like 4 years since I read most of this season’s history arc, and just recently caught up to the #17 novel. The history is really long, I’m not sure how much of it is going to be covered in this season. We’ll see what makes it in.

You can watch it in Crunchyroll. Or Horrible Subs.

Miércoles 22 de agosto de 2018

Victor Orozco (Tuxtor)

Victor Orozco (Tuxtor)
The J*

Book Review: Best Developer Job Ever! by Bruno Souza

Best Developer Job Ever! cover

General information

  • Pages: 95
  • Published by: Amazon Digital Services LLC
  • Release date: july 2018

About the author

I should start this review with a personal comment about the author, Bruno as many Java developers know is one of the most influential leaders in the Java community, being in my case one of the people that adviced me to create a Duke's Choice Award winner project. Hence when he announced the release of his developers advisory book, It went directly to my reading list.

About the book

Different from some motivational books that I've read, this book is focused in just one topic with a practical approach:

How do I improve my professional carreer as software developer?

For a regular book reader it will be a very short book, it took me 3 hours to complete the book from start to end.

The book is divided in five main sections:

  1. Get clarity on your strengths
  2. Define your objectives
  3. (How to) Expand your network
  4. Promote yourself (in the right way)
  5. Get quality interviews

From reading just the section titles, readers could be tempted to guess that this book is focused on boosting any professional carreer, however each section and advice is tailored to IT following an evolutive approach:

  • Any advice starts with an argumentative step, presenting diverse paths to reach the same professional objective in IT and specially in software development
  • After argumentation and based in author's real world experience, some advices are presented to choose the best path and take advantage of it in a productive way
  • Finally, some tools, tips and techniques are presented and complemented with various success histories to validate the tips (whick I must say, I know them to be true)

Room for improvement

The main caveat for this book is that isn't available in other languages. I also noticed that despite presenting many usefull advices, it lacks of some diagrams to re-read the tips and act also as a developers carreer manual.

For the non-casual readers, the writting style could be interpreted as too informal or not so literary. As is, the book is written as an informal conversation between peers and it's a little bit repetitive while trying to emphasize some important points. It depends on readers background.

Who should read this book?

  • Any IT professional, specialy software developers
  • IT recruiters, it will give serious advices of how software development world works

To finish the review, I think that the following excerpt contains the spirit of the book

People can be givers or takers. The givers come in and bring things others can benefit from while the takers take more than they give and ultimately drag the network down by trying to benefit themselves. That’s why givers tend to grow more than takers or matchers.

Lunes 30 de julio de 2018

Victor Orozco (Tuxtor)

Victor Orozco (Tuxtor)
The J*

Notes on Java EE support for NetBeans 9

Today one of my favourite open source projects got a major release, now under Apache Foundation, welcome back NetBeans!.

In this line, I think that the most frequent question since beta release is:

What about Java EE/C++/PHP/JavaME . . .? You name it

Quick response:

First source code donation to Apache includes only base NetBeans platform modules plus Java SE support

Long response:

Please see Apache Foundation official statement.

Does it mean that I won't be able to develop my Java EE application on NetBeans 9

Short answer: No

Long answer: Currently Oracle already did a second donation, where most of NetBeans modules considered as external are included, as Apache statement suggests we could expect these modules on future NetBeans releases.

Is it possible to enable Java EE support in NetBeans 9?

Considering that NetBeans has been modular since . . . ever, we could expect support for old modules in the new NetBeans version. As a matter of fact, this is the official approach to enable Java EE support on NetBeans 9, by using kits.

Hence I've prepared a small tutorial to achieve this. This tutorial is focused on MacOS but steps should be exactly the same for Linux and Windows. To show some caveats, I've tested two app server over Java 8 and Java 10.

Downloading NetBeans 9.0

First, you should download NetBeans package from official Apache Mirrors, at this time distributions are only available as .zip files.

NetBeans 9 Download

After download, just uncompress the .zip file

unzip incubating-netbeans-java-9.0-bin.zip

You should find a netbeans executable at bin/ directory, for Unix:

cd netbeans

Whit this you would be able to run NetBeans 9. By default, NetBeans will run on the most up-to date JVM available at system.

NetBeans 9

Enabling Java EE support

To install Java EE support you should enable also NetBeans 8.2 update center repository.

First go to Tools > Plugins > Settings.

Second, add a new update repository:


NetBeans 8.2 update center

NetBeans 8.2 update center

Third, search for new plugins with the keyword "Kit", as the name suggests, these are plugins collections for specific purposes

NetBeans 8.2 update center

From experience I do recommend the following plugins:

  • HTML5 Kit
  • JSF
  • SOAP Web Services
  • EJB and EAR
  • RESTful Web Services
  • Java EE Base

Restart the IDE and you're ready to develop apps with Java EE :).

Test 1: Wildfly 13

To test NetBeans setup, I added a new application server and ran a recent Java EE 8 REST-CRUD application, from recent jEspañol presentation (in Spanish).

You have to select WildFly Application Server

WildFly 13

As WildFly release notes suggests if you wanna Java EE 8 support, you should choose standalone-ee8.xml as domain configuration.
WildFly 13

Domain configuration will be detected by NetBeans 9

WildFly 13

WildFly team has been working on Java 9 and 10 compatibility, hence application ran as expected delivering new records from in-memory database.

WildFly 13

Test 2: Glassfish 5 and Payara 5 on Java 10 (NetBeans) and Java 8 (App server platform)

To test vanilla experience, I tried to connect Payara and Glassfish 5 app server, as in the case of WildFly, configuration is pretty straight forward:

You have to select Payara Application Server
Payara 5

Domain 1 default configuration should be ok
Payara 5

Since Payara and Glassfish only support Java 8 (Java 11 support is on the roadmap) you have to create a new platform with Java 8. Go to Tools -> Java Platforms and click on Add Platform
Payara 5

Select a new Java SE Platform

Payara 5

Pick the home directory for Java 8

Payara 5

Finally, go to server properties and change Java Platform
Payara 5

At this time, it seem that NetBeans should be running on Java 8 too, otherwhise you won't be able to retrieve server's configuration and logs, there is a similar report on Eclipse Plugin.

Payara 5

Test 3: Glassfish 5 and Payara 5 on Java 8 (NetBeans) and Java 8 (App server platform)

Finally, I configured NetBeans to use JDK 8 as NetBeans JDK, for this, you sould edit etc/netbeans.conf file and point the netbeans_jdkhome variable to JDK 8, since I'm using jenv to manage JVM environments the right value is netbeans_jdkhome="/Users/tuxtor/.jenv/versions/1.8"

With this NetBeans 9 is able to run Payara 5 and Glassfish 5 as expected:

Payara 5

I'm Still not sure about TomEE, OpenLiberty, WebSphere and WebLogic, but it seems like it would be a matter of hacking a litle bit on JDK versions.

Long live to NetBeans and Jakarta EE!

Jueves 26 de abril de 2018

De como nintendo se puede recuperar y tomar ventaja el reciente hack…

Bueno regrese a hacer un post de nuevo despues de tanto tiempo, ya mas viejo, aun metalero, con menos tiempo para escribir, y pero ironicamente regresando a mis costumbres infantiles de hace decadas, como jugar nintendo…  Y ya que bloguear ya no es tan cool ni mainstream, aprovechare. Para los que no viven bajo una […]

Lunes 26 de junio de 2017

¿Realmente te conoce? –AdsBlock

Este post nace a través de este enlace Dataselfie, conociendo al Algoritmo de Facebook y su Machine Learning. en el que hablan de como funciona el proceso de la publicidad que te sale en facebook,  a través del tiempo ya has dibujado tu perfil en facebook sea por búsqueda o por likes todo lo que hagas dentro de esa red social te va a salir, luego que ya saben que es lo que te gusta te empiezan a mandar publicidad acorde a ella, nunca se habían realizado esa pregunta ¿Por que me sale esto?. si quieren conocer que facebook sabe mas que ustedes tranquilamente, pueden abrir  este enlace Preferencias Ads en Facebook

El cual con la sesión abierta de facebook, desglosan en Intereses, y veras todo tus gusto, lo que por alguna razón buscaste o le diste por omisión. Ahí te conocerás realmente que es lo que te gusta.

Ya que donaste los datos, que puedo hacer.

Lo mas sensato es darse de baja de una red social donde juegan con tu información. si quieres seguir usándolo lo mas lógico seria usar AdsBlock  que lo puedes instalar en firefox y chrome, no vas a ver mas publicidad pero igual en cualquier momento que abras un enlace vas a empezar a crear nuevamente tu perfil.

Hace años 10 años una persona que respeto me compartió este video sigue vigente creemos que los servicios que usamos son gratis realmente.










Domingo 25 de junio de 2017

Activar/desactivar registro de usuarios en WordPress

Registro WordPress

La solución es de forma inmediata, dentro del Escritorio (al que accedas administración del WordPress), le vas hacer click en  a Ajustes, Generales y activas o desactiva el checkbox de: Cualquiera puede registrarse. depende para lo que requieras.

Si lo que tienes  problema con usuarios que se registran y en realidad son robots o personas spammers, usa el plugin que mencione anteriormente  http://blog.julioh.com.ve/?p=476 en el cual se hace ocultar la url de wp-admin  otra forma es usando .httpass dentro de los directorios y bloqueando su acceso, o en su momentos podrías saber cual es tu ip para indicarle desde donde te conectas por ejemplo algo así.

order allow,deny
deny from
deny from
allow from all

Sábado 24 de junio de 2017

Seguridad en WordPress , Garantizar el acceso a wp-admin

WordPress por ser un CMS mas usado pues tienes vulnerabilidades y necesitamos blindarlo en seguridad y que mejor usando plugins para que no tengas una mala experiencia.

Esta es una de esas en la cual la ruta  ../wp-admin/ la remplazas para evitar acceso a ella.

En el caso el plugin WPS Hide Login no vas a eliminar /wp-login.php o /wp-admin , pero si lo va remplazar para no sea visible y colocaremos una url que solo sabremos nosotros.

Lo buscamos  WPS Hide Login en plugins  haz clic en Instalar y posteriormente en Activar.

En el plugin accede a Ajustes, Generales y establece la palabra de paso que sustituirá al clásico:

wp-admin por no-vasaentrar guardas los cambios y pruebas.

Configuración del plugin

Cuando intentas acceder a  http://tu-dominio.com/wp-admin
Te dará un 404 not found

De igual forma  también para  /wp-login.php no existen.


Prueba de acceso incorrecta

Si por el contrario pones la url de tu dominio con la palabra de paso establecida:


Te va a salir tu panel para acceder, que se busca con esto, evitar ataques de diccionario, evitar suscripciones y proteger tu CMS de la mejor manera.

si por casualidad no te acuerdas de la url, puedes borrar el plugin en la carpeta wp-content y vuelve a la ruta original


Miércoles 22 de marzo de 2017

Juan José Contreras

5 Novedades De Android Studio 2017

Anteriormente cuando querías compilar tu aplicación que desarrollaste en Android Studio, iniciabas un emulador que te ofrecía el mismo IDE, ibas a la cocina preparabas un licuado de frutas, regresabas a tu ordenador y aún seguía iniciando el emulador, te levantabas de nuevo porque olvidaste ponerle azúcar al licuado, regresabas y se encontraba en la misma pantalla como habías dejando el emulador. Esto y otras cosas más ya no suceden nunca más en la última versión que nos brindó Google con Android Studio 2.3.0. Te cuento 5 de sus mejores novedades.


Implementación Con La Nube

Hoy en día contamos con soluciones espectaculares para el backend como el asombroso Firebase que introdujo Google en 2014 y que ha tenido muy buena aceptación de parte de los desarrolladores.


Te puede interesar: ¿Qué es Firebase? Una Joya De Google

google-cloud-platform_from_netdna-cdnImagen de netdna-cdn

Android Studio sabe esto, por lo que ha decido incluir asistentes dentro del IDE para facilitar la implementación de librerías cómo Fabric, Volley, Google Cloud, Firebase entre otras. En el caso de Firebase solo nos colocamos en la pestaña de Tools (herramientas) y seleccionamos la opción de Firebase, listo ahora ya puedes implementar Firebase.


Emuladores Volando

Al inicio de este artículo te mencione un ejemplo del aburrimiento que provocaba los anteriores emuladores de Android Studio y esperar a que iniciaran sus operaciones. Para evitarnos ese asuntillo, descargabamos otros software como el buen Genymotion, ellos si que saben emular dispositivos móviles.

emuladores_volando_from_blogesImagen De blog.es

En fin, con la nueva actualización de Android Studio, los tiempos de espera para cargar un emulador son prácticamente nulos, es decir abres, inicias el emulador y en cuestión de uno o dos minutos ya tenemos nuestro emulador abierto (por supuesto, también dependerá de las características técnicas de tu ordenador).


Android Auto

Si te mantienes al tanto de lo último en el mundo Android, seguro que sabías sobre el soporte para crear apps en Android wear. Con esta versión de Android Studio de manera oficial podemos realizar apps móviles para Automóviles.

Me parece genial sobre todo porque, el mercado de los automóviles cada vez se vuelve más complejo y por esa razón, muchos fabricantes están optando por incorporar android en sus alucinantes automóviles. No he tenido la experiencia de subirme a un auto que tenga Android pero si los he visto y el concepto de tener conectado tu automóvil en tu vida personal como pasa con el celular, se me hace genial. Pero de un lado de seguridad, me pregunto ¿Que tan buena idea será? te recomiendo que te preguntes lo mismo.


Como Usar Android si tu automóvil tiene Andorid:


Si en caso tu automóvil no tiene Android, no te preocupes, también puedes utilizarlo:


Soporte Para Constraints

En la Google I/O 2016 se introdujo los Constraints Layout, una genial noticia que todos queríamos porque la verdad que ya se estaba haciendo tedioso tener que crear un xml normal, xlarge y un horizontal. Con las constraints se resuelve todo el tema de resoluciones y tamaños de pantalla.

constraints_android_studio_from_tutsplusImagen De TustPlus

Sobre todo en Android que es todo un mar de celulares con el robótico de Google.


Control De Versionado En Equipo

Android Studio fue potenciado por IntelliJ IDEA y por supuesto que ofrece lo mejor para el control de versionado con los servicios en la nube para el control de versionado como Git y Mercurial.

Entre los más populares para control de versionado en equipos masivos encontramos Github y BitBucket. Github probablemente es el más popular y te recomiendo que abras una cuenta del mismo, pues casi todo el mundo usa esta plataforma.

control_versionado_androidstudio_from_dartmoutheduControl de versionado De darthmouth.edu

Es decir que Android Studio te da lo mejor y los mejores estándares para el control de versionado y su documentación.


¿Que Mejoras Se Pueden Hacer?

En Google, principalmente el equipo de tecnologías Android están sacando sus mejores herramientas para construir el IDE más completo para crear apps en Android. Como desarrollador hay un tema que me preocupa…


Peso Y Requerimientos

Cada actualización de Android Studio trae consigo alrededor de unos 400 a 800 Mb. La última vez que fui a ver el peso de Android Studio fue como de 50 Gb con las SDK que he descargado con el tiempo.

Estas han sido las 5 nuevas funcionalidades más importantes que ha sacado Android Studio en los últimos meses. De repente habrán algunas que no hemos mencionado porque las hemos mencionado en un artículo anterior como las 5 Funcionalidades De Android Studio Que Debes Saber.
Espero te haya servido la información y estamos a días de la Google I/O 2017 para que nos revelen las buenas nuevas de las tecnologías Android.

Martes 21 de marzo de 2017

Juan José Contreras

5 Funcionalidades De Android Studio Que Necesitas Saber

Desde los inicios de Android hubo un IDE que sobresalió durante mucho tiempo, fue amado por la mayoría (Eclipse). Pero hoy en día contamos con la herramienta oficial de Google… Android Studio la herramienta de vanguardia para los desarrolladores de Android. Y te contaré 5 funcionalidades que seguramente no sabías de este espectacular IDE.

Compatibilidad con Android NDK (C++)

En el mundo del desarrollo móvil sabemos que no necesariamente por ser una aplicación nativa Android significa que haya sido escrito en código Java. Es el caso de Android NDK. Esta genial librería basta con implementarla desde el Android SDK y aplicar los cambios en tu proyecto.

android_ndk_from_androidcentralFoto de AndroidCentral


Bien, y eso ¿Para que me sirve?

Hay aplicaciones en Android en las cuales necesitarás utilizar demasiados recursos del dispositivo móvil y por ende, optimizar de la mejor manera posible los mismos. Esto es común en los juegos de video para móviles, por sus gráficos y motores de procesamiento necesitan utilizar gran parte del hardware que tiene el dispositivo móvil. Cosa que por sí solo, Java no nos puede ofrecer <<hasta cierto punto, por supuesto>>.

En resumen, puedes crear aplicaciones en Android con C++ o incluso hacer una mezcla de Java con C++.

Pruebas Unitarias Con JUnit

De las mejores prácticas que podemos realizar como desarrolladores, son las pruebas unitarias para comprobar que nuestro código funcionará cuando se encuentre en plan de producción.

Tal, como en otros frameworks y lenguajes, Android Studio nos ofrece las pruebas unitarias tanto para el código Java como para la experiencia de usuario en Android.

Si quieres saber ¿Cómo crear las pruebas unitarias en Android? puedes consultar en su documentación oficial.


Instant Run

Esta es de las funcionalidades introducidas recientemente. Para no esperar demasiado tiempos de carga cada vez que compilas nuestro código, Android Studio implementó esta nueva funcionalidad excelente para aplicar los cambios de código de una manera rápida.

Es decir que haces un cambio de 5 líneas de código, presionas el botón de instant run y de inmediato compilará el código y mostrará los cambios en el dispositivo móvil.

instant_run_from_netdna-cdnFoto de NetDNA-CDN

Claro, como todo en esta vida tiene sus ventajas y desventajas, desde mi experiencia en las últimas tres aplicaciones que he desarrollado (ElCaldo, NSEx iLifebelt y Semana Santa GT) te podría decir que hay momentos donde el instant run brilla por su ausencia, es decir que si compila los cambios pero aparece un mensaje tipo Toast para decir que debes reiniciar la actividad y entonces a la larga es como un tanto engorroso tener que reiniciar la actividad cada vez que utilizas instant run.


Editor De Código Inteligente

Ni siquiera has terminado de escribir el método y ya te esta autocompletando Android Studio, pero lo más curioso de todo esto es que a veces manejamos funciones, métodos, clases que incluso pueden llamarse igual en distintos paquetes, aún así Android Studio reconoce el contexto y me sugiere el más adecuado para la situación.

Es decir que es bastante inteligente el IDE para reconocer cuál será mi siguiente jugada dentro del código. También los que han visto las mejores del IDE, anteriormente cuando una línea de código te marcaba con error, te sugería cualquier ridícula solución para quitar la línea roja, pero ahora te ofrece soluciones con coherencia a resolver el error y no simplemente para quitar la fastidiosa línea roja debajo.

Traducciones A Distintos Idiomas

Android Studio es un abanderado para traducir las apps móviles a distintos idiomas, pues es sencillo, solamente se crea una carpeta con la terminación del idioma, luego creas un recurso tipo xml y agregas los strings con el id que contiene cada archivo de distinto idioma.

traductions_android_studio_from_stackoverflowFoto de StackOverflow

Te podría interesar: Descargar Android Studio


Estas son funcionalidades que caracterizan a nivel general a Android Studio, sin embargo han habido nuevas funcionalidades que en una próxima ocasión te compartiré para enterarnos de lo más actual del IDE por excelencia para desarrollar apps Android.

Viernes 17 de marzo de 2017

Juan José Contreras

Tutorial De Constraint Layout Android

Constraint Layout es la nueva tecnología de Android Studio para crear interfaces de usuario en distintos tamaños y resoluciones. Similar como pasa en xCode con los storyboards. Ahora bastará crear una vista e implementar los constraints para crear una interfaz de usuario de todos los tamaños de pantalla que existen en el mercado.

Empecemos Creando Nuestro Proyecto

Creamos un proyecto nuevo en Android Studio y le pondremos el nombre de TestingContraintLayout, puedes guardarlo donde quieras:


Ya sabes, escoges tu Api, Seleccionamos un EmptyActivity y dejamos que el resto lo haga el IDE por nosotros:


¿Cómo implementar Constraint Layout?

Para lograr esto iremos al SDK Manager y nos situaremos en la pestaña de SDK Tools:


Puedes ver: ¿Qué es y para que sirve Android SDK?


En el renglón de Support Repository, marcamos la casilla <<ConstraintLayout for Android>> y <<Solver for ConstraintLayout>>. Presiona en aplicar y acepta los términos para instalar las librerías. Por cierto, debes poner atención a que versión de librería estás descargando, así al momento de implementar la dependencia tenga coherencia con el SDK.

En mi caso tengo la versión 1.0.2 de Contraint Layout por lo cual implementaremos la siguiente dependencia dentro mi archivo app.gradle

compile ‘com.android.support.constraint:constraint-layout:1.0.1’

Luego presionas el boton de sincronizar y con eso ya tenemos implementado Constraint Layout en nuestro proyecto.


Convirtiendo nuestro Layout a Constraint

Convertir tu clásico Linear Layout o Relative Layout a un Constraint no es tan complicado, sin embargo yo recomiendo que Constraint Layout se implemente en nuevos proyecto.

En los proyectos que se encuentran desarrollados y muy bien optimizados, no es tan aconsejable implementar esta tecnología, por el simple motivo que tendrían que mover todas las vistas y rediseñar la app (llevaría mucho tiempo).

Ahora situémonos en res/layout/activity_main.xml y abrimos el archivo.


En <<Component Tree>> marcamos con clic derecho nuestro layout (sea Linear o Relative) y seleccionamos la opción Convert layout to ConstraintLayout.


Listo con eso hemos convertido nuestro layout a ConstraintLayout.

¿Cómo Agregar Una Constraint Android?

Los desarrolladores de Google quisieron implementar una nueva forma más intuitiva para interactuar con los constraints al estilo DRAG AND DROP, puedes crear tus constraints fácil y rápido.

Hay dos maneras de crear los contraint Layout, al igual que en muchos casos, puedes hacerlo de forma manual o de forma automatizada. En este tutorial te enseñare de manera manual, ya que para mí es más fiable que hacerlo de manera automática además que no es tan automático como lo vende Android Studio, tendremos que mover datos y hace que sea doble trabajo al final de cuentas.

Vamos a hacer que nuestro xml tenga los siguientes widgets y que se vean de esta manera:


Bueno ya sabés lo sencillo que es colocar los widgets de Android. Aquí viene la parte que todos queremos saber, cada widgets ahora tendrá una especie de chibolitas en cada uno de sus extremos.

Tan sencillo como presionar el círculo y jalar hacia donde quieres que tomen márgenes y listo. Lo sé es bastante simple y extraño, y con los demás widgets procedemos de igual manera.

Recuerda que los widgets deben tener coherencia con cada uno de los widgets y márgenes. Si deseas tener más ilustraciones de los constraint layout, te recomiendo que revises la documentación oficial de Contraint Layout en Android para que no te queden dudas al respecto.
Es cuestión de práctica, cuando domines la lógica de los constraint se te haré súper fácil desarrollar interfaces de usuario ¡increíbles! en Android Studio con Constraint Layout.

Domingo 08 de enero de 2017

David Moreno

David Moreno
dm's blog

Thanks Debian

I sent this email to debian-private a few days ago, on the 10th anniversary of my Debian account creation:

Date: Fri, 14 Aug 2015 19:37:20 +0200
From: David Moreno 
To: debian-private@lists.debian.org
Subject: Retiring from Debian
User-Agent: Mutt/1.5.23 (2014-03-12)

[-- PGP output follows (current time: Sun 23 Aug 2015 06:18:36 PM CEST) --]
gpg: Signature made Fri 14 Aug 2015 07:37:20 PM CEST using RSA key ID 4DADEC2F
gpg: Good signature from "David Moreno "
gpg:                 aka "David Moreno "
gpg:                 aka "David Moreno (1984-08-08) "
[-- End of PGP output --]

[-- The following data is signed --]


Ten years ago today (2005-08-14) my account was created:


Today, I don't feel like Debian represents me and neither do I represent the
project anymore.

I had tried over the last couple of years to retake my involvement but lack of
motivation and time always got on the way, so the right thing to do for me is
to officially retire and gtfo.

I certainly learned a bunch from dozens of Debian people over these many years,
and I'm nothing but grateful with all of them; I will for sure carry the project
close to my heart — as I carry it with the Debian swirl I still have tattooed
on my back ;)


I have three packages left that have not been updated in forever and you can
consider orphaned now: gcolor2, libperl6-say-perl and libxml-treepp-perl.

With all best wishes,
David Moreno.

[-- End of signed data --]

I received a couple of questions about my decision here. I basically don’t feel like Debian represents my interests and neither do I represent the project – this doesn’t mean I don’t believe in free software, to the contrary. I think some of the best software advancements we’ve made as society are thanks to it. I don’t necessarily believe on how the project has evolved itself, whether that has been the right way, to regain relevancy and dominance, and if it’s remained primarily a way to feed dogmatism versus pragmatism. This is the perfect example of a tragic consequence. I was very happy to learn that the current Debian Conference being held in Germany got the highest attendance ever, hopefully that can be utilized in a significant and useful way.

Regardless, my contributions to Debian were never noteworthy so it’s also not that big of a deal. I just need to close cycles myself and move forward, and the ten year anniversary looked like a significant mark for that.

Poke me in case you wanna discuss some more. I’ll always be happy to. Specially over beer :)


Lunes 29 de agosto de 2016

David Moreno

David Moreno
dm's blog

Webhook Setup with Facebook::Messenger::Bot

The documentation for the Facebook Messenger API points out how to setup your initial bot webhook. I just committed a quick patch that would make it very easy to setup a quick script to get it done using the unreleased and still in progress Perl’s Facebook::Messenger::Bot:

use Facebook::Messenger::Bot;

use constant VERIFY_TOKEN => 'imsosecret';

my $bot = Facebook::Messenger::Bot->new(); # no config specified!
$bot->expect_verify_token( VERIFY_TOKEN );

This should get you sorted. What endpoint would that be, though? Well that depends on how you’re giving Facebook access to your Plack’s .psgi application.

Domingo 21 de agosto de 2016

David Moreno

David Moreno
dm's blog

WIP: Perl bindings for Facebook Messenger

A couple of weeks ago I started looking into wrapping the Facebook Messenger API into Perl. Since all the calls are extremely simple using a REST API, I thought it could be easier and simpler even, to provide a small framework to hook bots using PSGI/Plack.

So I started putting some things together and with a very simple interface you could do a lot:

use strict;
use warnings;
use Facebook::Messenger::Bot;

my $bot = Facebook::Messenger::Bot->new({
    access_token   => '...',
    app_secret     => '...',
    verify_token   => '...'

$bot->register_hook_for('message', sub {
    my $bot = shift;
    my $message = shift;

    my $res = $bot->deliver({
        recipient => $message->sender,
        message => { text => "You said: " . $message->text() }


You can hook a script like that as a .psgi file and plug it in to whatever you want.

Once you have some more decent user flow and whatnot, you can build something like:

…using a simple script like this one.

The work is not finished and not yet CPAN-ready but I’m posting this in case someone wants to join me in this mini-project or have suggestions, the work in progress is here.


Lunes 09 de febrero de 2015

Mi top 10 de metal en 2014, The Black Fucking List

Luego de haber sido abducido por extraterrestres por todo un año, y de no escribir ni purisísima mierda en este blog (No tengo excusa, lo acepto, he sido un vago para escribir últimamente) aún conservo la flama del metal ardiendo, –y no creo que se apague mientras este vivo–, así que a continuación listo los […]

Domingo 03 de agosto de 2014

KVM y libvirt en Slackware

KVM (Kernel-based Virtual Machine) es una de las mejores soluciones para virtualización dentro del kernel de Linux, junto a libvirt, que no es mas que un conjunto de herramientas para administrar KVM, juntos son una poderosa combinación para poder trabajar en entornos de desarrollo o en producción.

KVM ya se encuentra habilitado en los kernels entregados por Slackware, por lo que solamente hay que corroborar que nuestra máquina tenga soporte para virtualización, como Intel-VT o AMD-V, aunque actualmente la mayoría de procesadores para PC de escritorio o laptops tienen éste soporte, pero podemos verificar las CPU flags de la siguiente manera:

Para procesadores AMD:

$ grep --color svm /proc/cpuinfo

Para procesadores Intel:

$ grep --color vmx /proc/cpuinfo

La salida de éstos comandos debe darnos información con las flags del CPU que tenemos disponibles, de lo contrario sabremos que no contamos con un procesador adecuado para virtualizar.

Instalación de un entorno libvirt

Para instalar libvirt en Slackware es necesario instalar previamente varias dependencias, lo que puede resultar tedioso si no tuviésemos a la mano el repositorio de SlackBuilds.org (SBo).

La instalación es simple, podemos descargar los slackbuilds o bien utilizar sbopkg, seguir las listas de dependencias e instalarlo, siempre recordando leer los README para evaluar la instalación de paquetes opcionales, en especial con el paquete netcat-openbsd que suele tener problemas con otros paquetes.

Es importante tomar en cuenta que el slackbuild de libvirt viene por defecto para usar el grupo users del sistema, pero yo recomiendo tener otro grupo específico para poder aislar a otros usuarios del uso y administración de libvirt y las máquinas virtuales. La mejor forma es crear un grupo y luego añadir a los usuarios que necesiten virtualizar a éste grupo:

# groupadd libvirt
# gpasswd -a nombre-usuario libvirt

El comando gpasswd agregará a el usuario que necesitemos al grupo libvirt, o bien podemos modificar el archivo /etc/group y agregarlo manualmente. Los usuarios deberán reiniciar su sesión para poder cargar los permisos.

Es recomendable instalar otras herramientas como virt-manager, que no es mas que un administrador gráfico para libvirt, pero necesita muchas otras dependencias de gnome.

Qemu se debe instalar para poder crear las máquinas virtuales o bien utilizar la alternativa de Xen, pero ésta ultima tiene la desventaja de que solamente se podrá instalar en sistemas de 64 bits. Es importante agregar qemu al mismo grupo de virtualización al momento de compilarlo (KVMGROUP=libvirt).

Algunas herramientas extras son openvswitch y usbredir, que pueden agregar muchas mas funcionalidades a la creación y uso de nuestras maquinas virtuales.

Cambiando la carpeta de almacenamiento de libvirt

Libvirt por defecto utilizará la carpeta /var/lib/libvirt/images como la carpeta para crear las imágenes de los discos de nuestras máquinas virtuales, pero algunas veces necesitamos que las imágenes las tengamos en una unidad aparte, o una partición con mucho mas espacio.

Lo primero es asegurarnos de crear la carpeta donde queremos almacenar las imágenes de los discos de las máquinas virtuales:

# mkdir /nueva/carpeta/para/imagenes

Los permisos de acceso son importantes a ésta carpeta, solamente root debe poder accederlas:

# chown root:root /nueva/carpeta/para/imagenes
# chmod 755 /nueva/carpeta/para/imagenes

Para cambiar el pool de almacenamiento principal de libvirt a otra localidad podemos hacer uso de la herramienta virsh:

# virsh pool-destroy default
# virsh pool-undefine default
# virsh pool-define-as --name default --type dir --target /nueva/carpeta/para/imagenes
# virsh pool-autostart default
# virsh pool-build default
# virsh pool-start default

Los comandos anteriores primero realizan una destrucción de la información del pool default, luego lo eliminan de las definiciones para las máquinas virtuales, para luego crear una nueva definición, con el mismo nombre “default”; luego coloca de nuevo el pool “default” para que se habilite automáticamente al iniciar el servicio de libvirt; el comando pool-build se encarga de crear la información de la nueva carpeta, colocando información de tamaño y permisos, importante para que el sistema pueda saber cuanto espacio tiene disponible para las máquinas virtuales; y por último se inicia el pool “default” para que pueda ser utilizado.

Ahora solo resta divertirse con la virtualización.

Lunes 02 de junio de 2014

Plasmoid Simple Monitor

He trabajado bastante con Qt, casi desde su versión 3, cuando aún KDE era bastante liviano que lo utilizaban en varias distribuciones que usaban LiveCD, por lo que cuando comenzó a aparecer QtQuick, me dispuse a entender cómo funcionaba, aunque al inicio no fue muy simple, puesto que era una aplicación que utilizaba C++ y luego se cargaban objetos con QML.

Al evolucionar la tecnología de QtQuick, se hizo mas fácil crear aplicaciones, ya no hubo necesidad de mezclar lenguajes, si no simplemente utilizar QML y quizá combinarlo con algo de Javascript; mucho de ésto se ve reflejado en el sistema de plasmoids para KDE 4, que ha madurado bastante.

Mientras buscaba una forma de reemplazar mi viejo monitor de sistema gkrellm, el cual por cierto no lo he llegado a sustituir por completo, busqué entre la lista de aplicaciones disponibles en KDE-look.org y no encontré algo que me llamara mucho la atención, claro, era de esperarse, es una tecnología nueva, pocos la saben utilizar y habremos pocos que sepamos realmente crear interfaces visualmente atractivas, por lo que pocos suben sus aplicaciones a este sitio.

Tenía otra alternativa, que me pareció factible, utilizar conky, el cual es otra aplicación bastante buena para monitorear el sistema y bastante personalizable, pero no se lleva muy bien con KDE. También estaba superkaramba, pero muchos de los elementos que usa suelen ser llamadas a aplicaciones de terminal que al final no era lo que yo necesitaba, aunado a que superkaramba debe estar funcionando para que sus plasmoids funcionasen.

Así que decidí crear mi propio plasmoid, el cual nombré plasma-simpleMonitor, aunque de plasma aún no tiene mucho, pero el objetivo es vincularlo completamente al sistema de temas de KDE.

Había dos opciones, crear uno escrito en C++, lo que me ayudaría a realizarlo de manera mas simple, puesto que manejo a un nivel aceptable el lenguaje, pero tendría el inconveniente de cualquier otra persona que deseara probar el plasmoid tuviese que compilarlo, instalarlo, etc. Y no cualquier persona está dispuesta ha realizar ésto. Así que la decisión estaba tomada, el plasmoid sería hecho con QML y Javascript, de ésta manera, se puede descargar de la página y probarlo, incluso integrarse fácilmente con el instalador de plasmoids de KDE.

Las características mas importantes que tenía en mente para comenzar su desarrollo eran:

  • Capacidad de verificar el trabajo de los núcleos (cores) de mi CPU
  • Verificar la temperatura; se vuelve importante cuando se pone a trabajar a la máquina
  • Verificar el estado de la memoria y la swap
  • Un lugar para mantener la hora y fecha del sistema, de una manera mas vistosa
  • Verificar el tiempo que se ha mantenido encendida la máquina (uptime)

La idea comenzó con un boceto hecho en Inkscape, obviamente no podía comenzar a programar sin saber qué era lo que quería obtener como resultado.

Diseño inicial para plasma-simpleMonitor

plasma-simpleMonitor, Diseño inicial

Así que luego procedí a trabajar, en un par de días tuve la primera versión, pero obviamente no era muy atractiva visualmente, a lo que me puse a trabajar un poco mas en cómo se debería ver y al final llegué a tener una versión decente, la cual fue colocada en sitio KDE-look.org.

Luego de unos cuantos días de estar colocada en el sitio de KDE-Look, comenzó a tener aprobaciones como desacuerdos, como debe  ser, pero al final la experiencia ha sido buena, he tenido la oportunidad de ver cómo va poco a poco llegando a ser la herramienta que quería que fuera, aunque aún le falta camino por recorrer.

El código fuente se encuentra en GitHub: https://github.com/dhabyx/plasma-simpleMonitor liberado bajo una licencia GPL v3

Miércoles 29 de enero de 2014

Cambio de etiquetas para pendrives desde línea de comandos

Al momento de comprar una pendrive (nueva memoria USB) siempre tenía el incoveniente de cambiarle la etiqueta, ésto no es tan fácil ya que Linux por defecto no usa sistemas de archivos FAT, por lo que no funciona un simple click derecho.

En cambio es mas fácil desde línea de comandos en un solo paso pero hay que configurar una aplicación:

Lo primero es tener instalado el paquete floppy, que en el caso de slackware viene por defecto en una instalación completa, y si por alguna razón no lo han instalado lo mejor será ir a la carpeta a/ del disco de instalación e instalar el paquete floppy.

Una vez instalado solo resta configurarlo adecuadamente, el archivo /etc/mtools.conf trae ya unos datos de ejemplo, lo que debemos agregar al final del archivo es una línea como la siguiente (editando como superusuario “root”):

drive p: file="/dev/sdb1"

donde “p” es el nombre de una unidad como en DOS, por ello va acompañado de “:” y puedes escoger el nombre de letra que desees; luego el argumento de file debe ser la dirección hacia el dispositivo que deseamos administrar con ésta herramienta, que para ejemplo he colocado /dev/sdb1, ya que actualmente los discos son numerados con la nomenclatura /dev/sdX#, siendo X una letra, comenzando por “a” según el disco físico y # el número de partición, por lo que hay que tener cuidado en conocer realmente que nomenclatura ha sido asignada a nuestra pendrive.

Una vez configurado el archivo, puede ser usado para cualquier otro dispositivo que sea reconocido con ésta nomenclatura.

Para finalizar debemos crear un archivo en nuestra carpeta de usuario (no root):

$ cd ~
$ echo "mtools_skip_check=1" >> .mtoolsrc

y ahora es tiempo de cambiar etiquetas a nuestras pendrives:

$ mlabel p:NombreUSB

donde “p:” es la unidad que configuramos previamiente y lo que sigue a continuación es el nombre de la pendrive, que no debe pasar de 11 caracteres.

Si deseamos ver los cambios solo debemos verificar con:

$ mlabel -s p:

Martes 31 de diciembre de 2013

Mi top 10 del Metal en 2013

Sí, despues de tanto tiempo vuelvo a escribir de Metal, y no es que le haya dado la espalda al género, solo fue que me volví haragán para escribir (quizas es la crisis de los 30, quien sabe) pero, aunque tengo pendiente aún la lista de mis favoritos de 2012 (que algun día la publicaré), […]

Sábado 31 de marzo de 2012

Paulo Alvarado

Paulo Alvarado

Quisque vehicula dictum

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis bibendum pulvinar lobortis. Vivamus volutpat risus eu diam laoreet eu sagittis augue condimentum. Nullam nec eros vitae leo viverra tincidunt. Mauris vitae aliquet elit. Suspendisse potenti. Praesent rhoncus metus sodales libero semper sit amet rutrum leo hendrerit. Pellentesque est lorem, commodo ac tristique et, condimentum quis arcu. Praesent in lacinia purus. Morbi quis lobortis dui. Quisque diam arcu, semper vel fringilla a, dignissim mollis nulla.

Vivamus et risus nisi, fermentum fermentum velit. Praesent consequat ante aliquet ipsum tincidunt sagittis. Suspendisse vitae sem neque. Praesent ut magna velit, non consectetur justo. Nullam placerat sem sed enim suscipit ac bibendum diam commodo. Aliquam vehicula sodales dui, ac rutrum turpis porttitor vitae. Proin lectus est, tempus eget aliquet quis, viverra et libero. Sed ligula nulla, sagittis quis tincidunt eget, hendrerit eget metus.

Nulla sed urna ac felis placerat pulvinar id sit amet neque. Nam porta fermentum luctus. Donec ante massa, ultrices ac hendrerit nec, vestibulum auctor lorem. Integer metus lectus, placerat quis rhoncus a, facilisis pharetra tellus. Sed ac eleifend nunc. In nisi mi, semper sed ultrices vel, iaculis sagittis nibh. Aliquam erat volutpat. In hac habitasse platea dictumst. Duis ut mi ante, vitae hendrerit enim. Pellentesque arcu dui, blandit ac rhoncus id, cursus ut leo. Sed consectetur, quam non semper pulvinar, lacus arcu posuere orci, ut congue ipsum dolor id lectus. Vivamus porttitor erat in tortor viverra dignissim ultrices justo facilisis.

Paulo Alvarado

Paulo Alvarado

Accumsan magna tincide

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis bibendum pulvinar lobortis. Vivamus volutpat risus eu diam laoreet eu sagittis augue condimentum. Nullam nec eros vitae leo viverra tincidunt. Mauris vitae aliquet elit. Suspendisse potenti. Praesent rhoncus metus sodales libero semper sit amet rutrum leo hendrerit. Pellentesque est lorem, commodo ac tristique et, condimentum quis arcu. Praesent in lacinia purus. Morbi quis lobortis dui. Quisque diam arcu, semper vel fringilla a, dignissim mollis nulla.

Vivamus et risus nisi, fermentum fermentum velit. Praesent consequat ante aliquet ipsum tincidunt sagittis. Suspendisse vitae sem neque. Praesent ut magna velit, non consectetur justo. Nullam placerat sem sed enim suscipit ac bibendum diam commodo. Aliquam vehicula sodales dui, ac rutrum turpis porttitor vitae. Proin lectus est, tempus eget aliquet quis, viverra et libero. Sed ligula nulla, sagittis quis tincidunt eget, hendrerit eget metus.

Nulla sed urna ac felis placerat pulvinar id sit amet neque. Nam porta fermentum luctus. Donec ante massa, ultrices ac hendrerit nec, vestibulum auctor lorem. Integer metus lectus, placerat quis rhoncus a, facilisis pharetra tellus. Sed ac eleifend nunc. In nisi mi, semper sed ultrices vel, iaculis sagittis nibh. Aliquam erat volutpat. In hac habitasse platea dictumst. Duis ut mi ante, vitae hendrerit enim. Pellentesque arcu dui, blandit ac rhoncus id, cursus ut leo. Sed consectetur, quam non semper pulvinar, lacus arcu posuere orci, ut congue ipsum dolor id lectus. Vivamus porttitor erat in tortor viverra dignissim ultrices justo facilisis.

Paulo Alvarado

Paulo Alvarado

Elucidate vehicula tempus

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis bibendum pulvinar lobortis. Vivamus volutpat risus eu diam laoreet eu sagittis augue condimentum. Nullam nec eros vitae leo viverra tincidunt. Mauris vitae aliquet elit. Suspendisse potenti. Praesent rhoncus metus sodales libero semper sit amet rutrum leo hendrerit. Pellentesque est lorem, commodo ac tristique et, condimentum quis arcu. Praesent in lacinia purus. Morbi quis lobortis dui. Quisque diam arcu, semper vel fringilla a, dignissim mollis nulla.

Vivamus et risus nisi, fermentum fermentum velit. Praesent consequat ante aliquet ipsum tincidunt sagittis. Suspendisse vitae sem neque. Praesent ut magna velit, non consectetur justo. Nullam placerat sem sed enim suscipit ac bibendum diam commodo. Aliquam vehicula sodales dui, ac rutrum turpis porttitor vitae. Proin lectus est, tempus eget aliquet quis, viverra et libero. Sed ligula nulla, sagittis quis tincidunt eget, hendrerit eget metus.

Nulla sed urna ac felis placerat pulvinar id sit amet neque. Nam porta fermentum luctus. Donec ante massa, ultrices ac hendrerit nec, vestibulum auctor lorem. Integer metus lectus, placerat quis rhoncus a, facilisis pharetra tellus. Sed ac eleifend nunc. In nisi mi, semper sed ultrices vel, iaculis sagittis nibh. Aliquam erat volutpat. In hac habitasse platea dictumst. Duis ut mi ante, vitae hendrerit enim. Pellentesque arcu dui, blandit ac rhoncus id, cursus ut leo. Sed consectetur, quam non semper pulvinar, lacus arcu posuere orci, ut congue ipsum dolor id lectus. Vivamus porttitor erat in tortor viverra dignissim ultrices justo facilisis.

Miércoles 21 de marzo de 2012

Byron Antonio Chamann

Byron Antonio Chamann

Lo mejor de Tours en Guatemala solo con Source Tour

Guatemala es reconocido como un país turístico. Lugares como Tikal, Antigua Guatemala y Semuc Champey han ayudado a crear esa fama. Ahora bien, el país cuenta con muchísimas otras opciones. Internet ha venido a ayudar a que cuando alguien desea salir a descansar investigue previamente que lugares turísticos se encuentran en cada departamento y visitar lugares menos sonados (Lo que no necesariamente significa que sean lugares menos atractivos).

El inconveniente con lo anterior es que muchas veces se encuentra información de un lugar turístico pero no detalles sobre como llegar, tarifas, horarios, etc. Esta necesidad es la que viene a resolver Source Tour.

Recientemente en Prensa Libre se comentaba de esta iniciativa como una Tienda en linea de Tours. Realmente es más que eso, es una plataforma en donde un guatemalteco o extranjero puede conocer muchísimas opciones turísticas que el país ofrece. Además de lo anterior el sitio da el valor agregado de hacer reservaciones de Tours por toda Guatemala y pagarlos directamente en línea.

Así es mucho más sencillo organizar un viaje porque los detalles quedan cubiertos con toda la información que la plataforma brinda. Aprovechar de esta forma la tecnología no solo ayuda al sector Turistico del País sino también a las personas que buscan nuevas actividades para disfrutar en familia o con los amigos.

Vale la pena visitar el proyecto >> Source Tour

Viernes 20 de enero de 2012

Byron Antonio Chamann

Byron Antonio Chamann

E-learning en Guatemala y las universidades a distancia

La educación a distancia es uno de los modelos pedagógicos más efectivos hoy en día. Se lleva a cabo gracias a las múltiples plataformas online, que funcionan por medio de las TICs (Tecnologías de la información y la comunicación); y ha representado una excelente oportunidad para el aprendizaje y la difusión del conocimiento en todas las esferas del saber humano.

Dada la necesidad de educación continua y permanente, actualmente algunas universidades cuentan con ofertas educativas e-learning, que permiten la comunicación y colaboración con compañeros “de clase” y docentes, sin limitaciones espacio-temporales; ya que no es necesario asistir a un aula permanente.

Entre sus múltiples ventajas están que los alumnos pueden elegir sus propios horarios; pueden ingresar a la plataforma online desde cualquier lugar donde tengan acceso a un dispositivo con conexión a Internet; aprendizaje colectivo sin límites geográficos; actualización constante de los contenidos; permite una mayor conciliación con la vida familiar y laboral, etc.

Una de las Universidades de Guatemala a distancia que se ha destacado por su educación e-learning, es Atlantic International University. Con estudiantes de más de 180 países, la AIU se adapta a la diversidad de sus alumnos, mediante programas de estudio personalizados. Ofrece más de 300 carreras en niveles de Bachelor (Licenciatura), Maestría y Doctorado, en diversas ramas del conocimiento, como lo son: artes, negocios, ciencias, tecnología, estudios sociales y humanos, etc.

Hoy en día, con el auge de la Web 2.0, la educación a distancia, representa una gran oportunidad para las personas que disponen de poco tiempo para dedicarse al enriquecimiento profesional. Permitiendo la conformación de modelos cooperativos, donde los estudiantes, son a la vez quienes pueden aportar y al mismo tiempo beneficiarios de dichos aportes.

La facilidad de acceso, la posibilidad de reducción del tiempo de aprendizaje, la compatibilidad de actividades, la posibilidad de actualización inmediata, la comodidad, entre otros beneficios, posiciona al e-learning como una forma de educación muy deseable hoy en día.

Lunes 09 de enero de 2012

Byron Antonio Chamann

Byron Antonio Chamann

Solución de outsourcing en Guatemala

El término Outsourcing se refiere a la cooperación en la que una empresa, encarga a otra, ciertos procesos de diversa índole dentro de la organización. Podría ser la fabricación o prestación de algún componente de sus productos o servicios, parte de su producción, o bien la totalidad de la misma.

Generalmente suele darse cuando una firma, identifica que algunos de sus procesos podrían darse más eficientemente, si subcontrata a una agencia especializada para desarrollar esas actividades; lo cual conlleva una mejoría en los niveles productivos, ya que la empresa, únicamente deberá enfocarse en la función central de su negocio. Este tipo de procesos suele ser altamente utilizado, puesto que las empresas especializadas en ciertos procesos productivos, pueden hacerlo mejor y a un costo menor del que manejaría cualquier organización, haciéndolo por sí misma.

Al momento de optar por Outsourcing, dentro de una compañía, hay ciertos aspectos a tener en cuenta, como los antecedentes, referencias y experiencia de la firma que se va a contratar. Para el outsourcing en Guatemala y Centroamérica, Grupo Misol, es una firma que reúne varias agencias especializadas en diversos procesos productivos, entre ellos, conserjería, puestos administrativos, mensajería, personal temporal en diversas áreas, impulsación de marcas, productos de limpieza,  mantenimiento de jardines, mantenimiento de elevadores y gradas eléctricas, montacargas, limpieza empresarial, impermeabilizantes, etc. Con más de 30 años de experiencia, brindando capital humano capacitado y confiable para llevar a cabo las actividades específicas, dentro del ámbito corporativo en que se desenvuelvan.

Hacer Outsourcing ha sido una columna de apoyo para muchas empresas, es más que subcontratación; más bien es hacer alianzas con firmas colaboradoras que harán más eficientes las tareas fundamentales de una organización.

Lunes 02 de agosto de 2010

Spotify en Gentoo [sin Wine]

Soptify WINHace un par de semanas se anuncio la primera version de Spotify para Linux, el detalle esta en que solo dieron un repositorio para Debian/Ubuntu y nada mas. Calvin Klein Underwear Baratos No se porque se les habra dado por sacar el programa para GNU/Linux sin dar codigo fuente (ok es privativo el dichoso Spotify pero porque encuadrar a ciertas distribuciones nada mas? ). Slip Calvin Klein Outlet A mi eso de emular programas con Wine no me gusta a menos que el cliente/jefe no de otra opcion.

The post Spotify en Gentoo [sin Wine] appeared first on SiRGt's Blog.

Domingo 01 de agosto de 2010

Oracle Reports sobre Ubuntu

Tan abandonado tengo este asunto (si la cantaleta de cada nuevo post) eso de (ahora si) apreciar el tiempo libre es jodido jaja, anyways. Adidas Ultra Boost France Me puse a revisar y a pensar como revivir este asunto y creo que la mejor manera es limpiar los drafts que facil llevaran guardados desde septiembre de 2009. Acheter Adidas Ultra Boost El mas interesante de todos (o que merecia la pena dedicarle 10 minutos a terminar de pulirlo) era este. El titulo creo que debio ser algo mas especifico como “Configuracion de Samba, Wine, Oracle forms 6 en Ubuntu 8.04 LTS” pero ni modo. El pijeo estuvo asi, como siempre los pseudo gerentes de sistemas se fijan en software libre “si y solo si” les representa un ahorro ya sea en plata o en metidas de huevo (en este caso creo que eran las dos jajaja). Adidas Ultra Boost Pas Cher El requerimiento fue “sencillo” queremos este morongazo de maquinas con Ubuntu (y en la letra pequeña decia “pero que jale el Oracle Forms”). Adidas Ultra Boost Uncaged France Luego de cranearla un cacho lo mas paja entre comillas o lo unico talvez que se podia hacer era montarlo con Wine y esta es mas o menos la vuelta que hay que dar para que el asunto jale.

  • Actualizar los repositorios y hacer un upgrade solo por si acaso algo anda fuera de fecha

[bash]sudo aptitude update && sudo aptitude upgrade[/bash]

  • instalar smbfs

[bash]sudo aptitude install smbfs[/bash]

  • montar la unidad (a mano)

[bash]sudo mount -t smbfs -o username=nombre_usuario,password=pass_usuario,ip= //server_remoto/unidad /punto_de/montaje[/bash]

  • para montar la unidad al inicio de la sesion de usuario agregar esta linea al archivo /etc/fstab

[bash]// /home/usuario/.wine/drive_c/punto_de_montaje smbfs username=nombre_usuario,password=pass_usuario 0 0[/bash]

  • instalar Wine

[bash]sudo aptitude install wine[/bash]

  • luego de terminar la instalacion ejecutar el comando wincfg y configurar el entorno de wine a Windows 98

  • descargar winetricks a /home/usuario/.wine/ (esto no recuerdo para que lo hice pero en cuanto regrese la memoria les actualizo el post)

[bash]wget -c http://www.kegel.com/wine/winetricks[/bash]

  • Instalar Oracle Forms 6i (solo tuve oportunidad de probar esta version, no se si funciona con alguna mas reciente)

[bash]wine /media/cdrom0/setup.exe (o donde tengan montado el cdrom y/o como se llame el instalador del Oracle Forms[/bash] Primero se instala el Oracle Forms Developer (si acaso no se lee bien la imagen, lo que se esta instalando es Forms Runtime y Oracle TCP/IP protocol adapter 8.0.6…. este ultimo se instala a mano porque al ser un ambiente wine la instalacion no detecta tarjetas de red y no lo pone (esto nos valio dos semanas entenderlo xD)) Luego se instala el Oracle Reports Developer

  • agregar / modificar las siguientes llaves en el registro en HKEY_LOCAL_MACHINE/SOFTWARE (notese que las diagonales son dobles)

[bash] FORMS60_PATH=C:\\path\\en_wine\\a_la_carpeta_bin_del_oracle_forms\\bin;c:\\path\\en_wine_a_la_carpeta_de_librerias_si_existiera\\comun\\libs UI_ICON=c:\\path_a_la_carpeta_de_iconos_si_hubiere sistema=L local=nombre_del_string_de_conexion [/bash]

  • La aplicacion se levanta con una linea como esta dependiendo del modulo, user y pass…

[bash]wine /home/usuario/.wine/drive_c/carpeta_oracle/BIN/ifrun60.EXE /media/punto_de_montaje/aplicacion/main.fmx user/pass@string_de_conexion[/bash] y Listo. El ultimo paso seria crear un Launcher dentro de ubuntu para cargar alguna aplicacion, esto se hace de la siguiente manera:

  • Crear un “launcher” en Ubuntu
  • se le pone el nombre de la aplicacion que se desea
  • en el campo “command” colocamos esta linea

[bash]wine /home/usuario/.wine/drive_c/carpeta_oracle/BIN/ifrun60.EXE /media/punto_de_montaje/aplicacion/main.fmx user/pass@string_de_conexion[/bash] y listo.

The post Oracle Reports sobre Ubuntu appeared first on SiRGt's Blog.

Miércoles 16 de septiembre de 2009

Problemas Tecnicos

Entre antes de ayer y ayer tuve problemas tecnicos con el VPS que aloja ahora este blog (si porfin migre de DreamHost a un VPS), el clavo era que el consumo del CPU se disparaba al 400%, esto significa que el servidor se quedaba trabado, la solucion a mi problema la encontre en los foros de Linode.

El problema era especificamente la configuracion del apache, el muy infame no soportaba el trafico entrante y se enloopaba tratando de soportarlo, conclusion server al suelo.

Esperamos no tener mas de estas sorpresas aunque son experiencia =D


The post Problemas Tecnicos appeared first on SiRGt's Blog.

Domingo 28 de septiembre de 2008

GNU/Linux + Modem Edge USB + Debian Sid

Hoy estuve configurando el modem Edge usb de mi primo, en nuestro sistema operativo favorito. con un #lsusb Bus 001 Device 002: ID 22b8:4902 Motorola PCS Triplet GSM Phone (AT) Luego de buscar, gracias a msamour , con un par de cambios para Guatemala. Primero un rápido #apt-get install wvdial Luego el archivo de configuración […]

Lunes 01 de septiembre de 2008

Heartbeat, mi configuración

Cuando estaba leyendo documentación, acerca de heartbeat lo que más me gustó, es el nombre de la técnica utilizada para nodeFencing, STONITH: “Shut the other node in the head”, que buen hack ;), a groso modo cuando un nodo del cluster es declarado muerto, este se asegura de que realmente lo esté, con un tiro […]

Miércoles 09 de abril de 2008

El hack en el Incompatible Timesharing System

Cada vez que leía o escuchaba a Stallman decir: “El Laboratorio de IA usaba un sistema operativo denominado ITS (Incompatible Timesharing System)” no comprendia el hack que decía tener el nombre del sistema “Incompatible Timesharing System”, hasta hace un par de días. Me encontraba en la biblioteca central de la universidad, con el libro del […]