Category : General

Tips para programadores

Aprende un nuevo lenguaje

Es sabido que no debes enfocarte en una sola tecnología o lenguaje de programación.   Pero el sentido de este consejo no es sólo que escojas una tecnología que te permita ganar más dinero (que también es una buena idea), sino que además de eso te permita experimentar y hacer cosas diferentes. Por ejemplo, si siempre has estado enfocado a aplicaciones WEB, puedes comenzar a experimentar con el control de motores eléctricos o para obtener datos desde sensores o hardware que no hayas usado anteriormente, o probar también con aplicaciones para móviles, tendrás una perspectiva más amplia de lo que es el desarrollo de software.


Ten un  “Pet Project”

Todos tenemos ideas para una aplicación o desarrollo que nos gustaría programar.  Sin embargo pocas veces las materializamos.  Esto no sólo es malo porque pierdes la oportunidad de llevar a cabo una buena idea, sino que también es posible que nunca sepas si esa idea es mala o que en realidad no sea tan útil, o peor aún, que ya exista algo parecido porque no habías investigado demasiado y te enfoques mejor en otra cosa.  Adquiere el hábito de tener al menos un proyecto y ve agregando características poco a poco pero de forma constante.

Relaciónate con personas que hagan cosas diferentes

No sólo se trata de encontrar gente que use otras tecnologías, sino otras formas de hacer negocios y de ganar dinero.  Es posible que encuentres oportunidades donde otros no las han visto, tan sólo porque no ha llegado nadie para propornerlas.  No te enfoques sólo a entender los problemas de los clientes de la empresa donde trabajes.

Haz que tu trabajo se vea elegante

Son muchos los desarrolladores que descuidan el aspecto visual de su trabajo y sólo se preocupan porque funcione correctamente.  Sin embargo una apariencia visual o usabilidad deficientes, pueden hacer que el usuario tenga una impresión equivocada sobre como funcionan tus desarrollos y llegue a pensar que tiene errores aún cuando esto no sea verdad, recuerda que haces desarrollo para facilitarle la vida a personas que no siempre tienen un conocimiento técnico silimar al tuyo.

No inventes cosas que ya están bien hechas

Lenguajes como Java o C# no son los más ampliamente usados por su sintaxis o su facilidad de uso, sino por la inmensa variedad de librerías o herramientas que existen y que puedes usar libremente, con la seguridad de que van a funcionar correctamente. No gastes tu tiempo tratndo de hacer algo que ya existe si no lo vas a superar.

Comparte y acepta críticas a tu código

Es universal. Ocurre en todas las profesiones. A nadie le gusta que le digan como hacer cosas que uno supone hace bien.  Pero compartir ideas y tomar en cuenta las recomendaciones de otros es casi tan útil como Google para aprender cosas nuevas.  Además mejoras tu ambiente laboral.

Crea librerías de ejemplos o soluciones

No es que tengas que desarrollar librerías nuevas, se trata más bien de esos ejemplos, como conectarte a bases de datos, nombres de drivers, herramientas, comandos, funciones o técnicas de desarrollo que quizá aplicarás en tus proyectos más de una vez. En cualquier momento puedes usar el buscador y encontrar prácticamente todo lo que necesites, pero tener cosas ya probadas previamente por tí, es muy útil.

Descansa lejos de la computadora

Esto debes hacerlo por puro amor propio y no sólo es descansar, ejercítate.  Algunos problemas de espalda y ojos derivados de pasar horas sentados frente a la computadora pueden agravarse y son difíciles de tratar.  Cuida tu cuerpo.

 


Una de las mejores presentaciones de Machine Learning

El empleado de Google Jason Mayes, ingeniero creativo senior, ha publicado unas de las mejores presentaciones sobre Machine Learning. El trabajo es el resultado de dos años de experiencia, es gratuito y se puede descargar o visualizar en línea. Los únicos requisitos según su creador son los siguientes:

  • Dos horas de estudio y atención continuas.
  • Cerrar clientes de correo y aplicaciones de mensajería.
  • Buscar un lugar adecuado para su estudio, porque no por nada se trata del estudio de “deep learning”.
  • Leer más de una vez las letras en negritas.

El único inconveniente, está en inglés, pero es más o menos fácil de entender.
El enlace directo: https://docs.google.com/presentation/



La presentación de Google Duplex en la Google I/O

La gran novedad en uno de los eventos más importantes de Google, la 2018 I/O Developer Conference es Google Duplex, el asistente que hará las reservaciones por ti.

Durante la presentación, el asistente realiza dos reservaciones con establecimientos reales.  El asistente, la “persona no real” interactúa con una “persona real”, que parece no percatarse nunca que está conversando con una inteligencia artificial.




Una de las cosas más sorprendentes es la velocidad de respuesta y la entonación bastante natural del asistente.  Es un poco gracioso el momento en que el asistente usa la expresión “Mm hmm”, que no es que sea particularmente difícil de “decir”, sino que ha escogido el momento preciso y hace la conversación más familiar, cosa que no ocurre regularmente con otras IAs.

Otro aspecto interesante (en la reservación al restaurante), es que aunque parece haber una confusión entre el número de personas que asistirán y la fecha en que debe realizarse la reservación, el dialogo y el arreglo terminan más o menos bien, lo cual no es cualquier cosa para una IA.

Google ha dicho que la función se lanzará como un experimento en las próximas semanas.


Linus Torvals, la mente detrás de Linux

Linus Torvalds transformó la tecnología dos veces: primero con el núcleo de Linux, que es uno de los soportes fundamentales de Internet, y lo hizo nuevamente con Git, el sistema de administración de código fuente utilizado por desarrolladores de todo el mundo. En una rara entrevista con el Curador de TED, Chris Anderson, Torvalds discute con gran apertura los rasgos de personalidad que impulsaron su filosofía de trabajo, su ingeniería y su vida.

Puedes activar los subtítulos en español.

 

 



Netbeans – Accesos directos

En NetBeans existen algunos atajos que facilitan la escritura de codigo, aquí te mencionamos algunos.

Para dar formato o manipular código están las siguientes combinaciones:

Alt-Shift-F Da formato al código seleccionado o a todo el código si no hay selección.

Ctrl-Shift-Up/Down Copia lineas de código hacía arriba o hacia abajo.



Alt-Insert Genera código dependiendo de las posibilidades desplegando un menú de opciones.


Ctrl-Shift-I Agrega las sentencias de importación de clases que hagan falta.
Alt-Shift-I Arregla la importación de clases seleccionada.
Alt-Shift Left/Right/Up/Down Mueve la línea de código en la dirección de las teclas.
Ctrl-Shift-R Selecciona código de forma rectangular.

Ctrl-Shift-C Agrega dobles diagonales para comentarios de una sola línea.

Ctrl-E Borra la línea en la que está posicionada el cursor.

 

Prueba escribiendo de forma suscesiva los siguientes caracteres:

ifelse y a continuación la tecla Tab, NetBeans completará un bloque if con su else:

        if (true) {
            
        } else {
        }

trycatch y a continuación la tecla Tab, NetBeans completará un bloque try-catch:

        try {
            
        } catch (Exception e) {
        }

for y a continuación la tecla Tab obtienes un bloque de código para for listo para usarse:

        for (int i = 0; i < 10; i++) {
            
        }

Con el ciclo for hay más sopresas:

forst y a continuación Tab, crea el ciclo sobre un StringTokenizer:

        for (StringTokenizer stringTokenizer = new StringTokenizer(STRING); stringTokenizer.hasMoreTokens();) {
            String token = stringTokenizer.nextToken();
            
        }

forc y a continuación Tab, crea el ciclo sobre un Iterator:

        for (Iterator iterator = col.iterator(); iterator.hasNext();) {
            Object next = iterator.next();
            
        }

fore y a continuación Tab, crea el ciclo sobre un arreglo sin uso de índices:

        for (String arg : args) {
            
        }

fori y a continuación Tab, crea el ciclo sobre un arreglo con índice:

        for (int i = 0; i < arr.length; i++) {
            Object object = arr[i];
            
        }

forl y a continuación Tab, crea el ciclo sobre un objeto Array:

        for (int i = 0; i < lst.size(); i++) {
            Object get = lst.get(i);
            
        }

forv y a continuación Tab, crea el ciclo sobre un objeto Vector:

        for (int i = 0; i < vct.size(); i++) {
            Object elementAt = vct.elementAt(i);
            
        }

Para while, prueba con “whileit“, “whilen“, and “whilexp

Si no conocías estos atajos esperamos que te sean de utilidad.


Un diagrama casi completo de las Redes Neuronales

Existe una amplia variedad de tipos de redes neuronales y a veces es necesario un mapa para navegar entre muchas arquitecturas y enfoques emergentes.  Fjodor Van Veen del instituto Asimov compiló una maravillosa variedad de topologías de redes neuronales.

Mas info:www.asimovinstitute.org



Oracle moverá Java EE a la Fundación Eclipse

Oracle anuncia que junto con IBM y Red Hat, moverá Java EE a la Fundación Eclipse.  David Delabassee, evangelista de software de Oracle comenta en su blog:

“Nos hemos acercado a IBM y Red Hat, los otros mayores contribuyentes a la plataforma Java EE, para solicitar su apoyo a esta nueva dirección. Oracle, IBM y Red Hat están colaborando continuamente para refinar un enfoque en el que podamos colaborar colectivamente”

https://blogs.oracle.com/


Pruebas




Los 10 lenguajes de programación más populares en 2017

La revista IEEE Spectrum ha publicado un ranking de lenguajes de programación basándose en al menos 10 fuentes en línea (Google Search, Google Trends, Twitter, GitHub, Stack Overflow, Reddit, Hacker News, CareerBuilder, Dice, IEEE Xplore Digital Library).  La lista incluye 48 lenguajes y han usado una combinación de 12 métricas que fueron seleccionadas por su creador el periodista de datos Nick Diakopoulus.  La diferencia de este ranking con respecto a otros más populares, es que han generado una gráfica interactiva con la cual es posible personalizar como se ponderan esas métricas.  Más información de su método en el siguiente enlace:

http://spectrum.ieee.org/ns/IEEE_TPL_2017/methods.htm



De acuerdo a trabajos más solicitados dominan los lenguajes Java, C, Python,C++ y JavaScript, en ese orden.

Los lenguajes con mayor tendencia son casi los mismos pero ahora es Python el que se encuentra dominando.

 

Es posible crear filtros por plataforma (Web, Mobile, Enterprise, Embedded). Les dejamos el vínculo al artículo original para que prueben ustedes mismos.

http://spectrum.ieee.org/


Algunas de las librerías más usadas en Java

Estas son algunas de las librerías o bibliotecas más populares por su descarga en GitHub o por su uso en una amplia variedad de proyectos. Puede que se te haya ocurrido crear tus propias herramientas para resolver muchos de los problemas que vas encontrando cuando desarrollas tus propios proyectos, sin embargo, siempre vale la pena dar un vistazo en la Web antes de comenzar a programar algo que quizá ya ha sido desarrollado, basado en estándares y ampliamente probado y ahorrarte así tiempo valioso. Te mencionamos sólo algunos proyectos:



JUnit

Permite realizar pruebas de código de forma controlada, ya sea generales o parciales. Es muy recomendada. Algunas IDEs como Netbeans o Eclipse vienen preparadas para realizar pruebas de forma integrada.

http://junit.org/junit4/

mockito-all, mockito-core

Mockito es una librería Java para la creación de Mock Objects ampliamente usados en pruebas unitarias de Test Driven Development y basado en EasyMock.

https://github.com/mockito/mockito

guava

Es un conjunto de librerías desarrolladas por Google, dividido en tres grupos:

  • Utilidades básicas para reducir labores menores para implementar métodos y comportamientos comunes.
  • Una extensión a Java collections framework (JCF) anteriormente llamada Google Collections Library.
  • Utilidades que proporcionan características convenientes y productivas tales como programación funcional, almacenamiento en caché, objetos de rango y hashing.

https://github.com/google/guava

Las Commons de Apache Software Foundation

commons-io

Es parte de un conjunto de proyectos desarrollado por Apache Software Foundation.  Está divido en varias categorías:

  • Utility classes – con métodos estáticos que realizan tareas comunes.
  • Input – Implementaciones bastante útiles de Stream y Reader.
  • Output – Implementaciones de Output Stream y Writer.
  • Filters – Diversas implementaciones de filtros de archivos.
  • Comparators – Diversas implementaciones de java.util.Comparator para archivos.
  • File Monitor – Componente para monitoreo de eventos de archivos de sistema.

https://commons.apache.org/proper/commons-io/

commons-lang, commons-lang3

Apache Commons Lang provee de un conjunto extra de métodos para la manipulación del core estándar de clases de Java, tales como:

  • Métodos para de cadenas.
  • Operaciones numéricas.
  • Concurrencia.
  • Creación y serialización de propiedades de sistema.
  • Ayudas para java.util.Date, utilidades para el manejo y uso de hashCode, toString, y equals.

Lang3 es la versión actualizada y ampliada de esta librería.

https://commons.apache.org/proper/commons-lang/

commons-codec

El software Apache Commons Codec proporciona implementaciones de codificadores y decodificadores comunes como Base64, Hex, Phonetic y URLs.

https://commons.apache.org/proper/commons-codec/

commons-logging

Una biblioteca que utiliza la API commons-logging y se puede utilizar con cualquier implementación de registro en tiempo de ejecución.

https://commons.apache.org/proper/commons-logging/

 

log4j

Log4j es una biblioteca open source desarrollada en Java por la Apache Software Foundation que permite a los desarrolladores de software escribir mensajes de registro, cuyo propósito es dejar constancia de una determinada transacción en tiempo de ejecución

https://logging.apache.org/log4j/2.x/

Logback Project

Este proyecto es un intento de sustituir a log4j, escrito por el mismo creador. Dividido en tres módulos:

  • logback-core.
  • logback-classic
  • logback-access.

https://logback.qos.ch/

slf4-api, slf4j-log4j12

Simple Logging Facade for Java (SLF4J). Te permite generar registros de la ejecución de tu código Java, ofrece métodos de registro que aceptan marcadores. SLF4J fue creado como una alternativa más confiable al Jakarta Commons Logging framework.

https://www.slf4j.org/



spring-context

Spring-contex es un contenedor de Inversión de Control (IoC), te permite instanciar, configurar y ensamblar beans leyendo metadatos de configuración de archivos XML, anotaciones Java y/o código Java en archivos de configuración.

https://projects.spring.io/spring-framework/

httpclient

HttpClient busca llenar el vacío del paquete java.net aumentando la funcionalidad y flexibilidad al acceder a recursos via HTTP, de forma eficiente, actualizada y rica en características para implementarse del lado cliente con los estándares y recomendaciones de HTTP más recientes.

https://hc.apache.org/httpcomponents-client-ga/

joda-time

Es básicamente un reemplazo de mayor calidad para las clases de fecha y hora que originalmente fueron creadas para Java. Muy recomendable.

http://www.joda.org/joda-time/

testng

Es un framework de pruebas inspirado en JUnit y NUnit, pero introduce algunas nuevas funcionalidades que lo hacen más potente y fácil de usar.

http://testng.org/doc/index.html

JDOM

Es una popular biblioteca de analizador de DOM que se utiliza ampliamente en muchas aplicaciones java para analizar XML.

http://www.jdom.org/

Xerces

Otro analizador de XML bastante popular.

http://xerces.apache.org/xerces-j/

Gson

Una estupenda librería para parseo de JSON creada por Google.

https://github.com/google/gson

JFreeChart

Es la biblioteca gráfica ampliamente utilizada para crear una gran variedad de gráficos de buena apariencia. Permite a los usuarios generar gráficos circulares de barras, diagrama de series de tiempos, diagrama de Gantt, histogramas, gráficos X-Y y varios gráficos específicos.

http://www.jfree.org/jfreechart/

JasperReports

Una completa biblioteca de funciones ricas para crear documentos PDF y gráficos. También disponible con soporte empresarial.

http://community.jaspersoft.com/

Commons Math

Aborda los problemas más comunes de matemáticas y estadísticas que no están disponibles en el lenguaje de programación Java.

http://commons.apache.org/proper/commons-math/

 

Estos son sólo algunos proyectos, desde luego hay muchos más que estamos omitiendo, estaremos actualizando esta entrada continuamente.

via:

http://www.javaworld.com/article/2924315/open-source-tools/javas-top-20-the-most-used-java-libraries-on-github.html

http://www.fromdev.com/2014/10/most-widely-used-java-libraries.html