While programming we usually use the math operators. But if we are using a power of 2 as divider or multiplicand you can use bitwise operatos to speed up the operations.
Mostrando entradas con la etiqueta java. Mostrar todas las entradas
Mostrando entradas con la etiqueta java. Mostrar todas las entradas
lunes, 11 de julio de 2016
miércoles, 1 de julio de 2015
Más Patrón estrategia
Hace tiempo que no escribo pero hace poco hicimos entrevistas en mi trabajo para contratar a alguien. Le propusimos un algoritmo tan sencillo como recorrer números del 1 al 100 y si son múltiplos de 3 mostrar fizz, si lo son de 5 buzz, si lo son de ambos fizzbuzz y si no mostrar simplemente el número. Obviamente, si el número es 15 por ejemplo, solo se mostraría fizz buzz. Aquí algunos ejemplos de los algoritmos que vi:
Etiquetas:
clase anonima,
clase interna anonima,
clases,
codigo,
Eclipse,
funcional,
interface,
java,
lambda,
lenguajes,
morethansimplycode,
NetBeans,
patron,
patron estrategia,
pattern,
programacion,
programar,
strategy
lunes, 11 de mayo de 2015
Expresiones Regulares para Números (StackOverflow)
Hace unos días encontré esta respuesta en StackOverflow:
Me llamo muchísimo la atención así que he decidido añadirlo al blog para no perderle. Quiero hacer hincapié en el final, en el que habla sobre la claridad del código de los patrones y como indentarlo correctamente. Estos patrones son al estilo PERL, puede que no funcionen correctamente en JAVA, aunque no debería haber problema. Copio la respuesta a continuación:
jueves, 5 de febrero de 2015
Enums y el Patrón Estrategia
Hoy toca hablar de los enums en Java y de cómo usarlos junto con el Patrón Estrategia. En Java, los enums son mucho más potentes que en la mayoría de los lenguajes, en los que solo se guarda una palabra con un número.
Etiquetas:
Android,
clase anonima,
clase interna anonima,
clases,
codigo,
Enum,
estatico,
funcional,
interface,
java,
patron estrategia,
programa,
programacion,
programar,
strategy
domingo, 11 de enero de 2015
Interfaces funcionales, Clases anónimas y Lambdas
Todo el mundo sabe que existen las interfaces pero… ¿Sabemos cuándo usarlas? Aquí mostraré uno de sus usos: Las Interfaces funcionales. También aprovecharé para hacer una pequeña introducción a las Lambdas.
Etiquetas:
aprender,
clase anonima,
clase interna anonima,
clases,
codigo,
funcional,
interface,
java,
lambda,
lenguajes,
metodo,
morethansimplycode,
programa,
programacion,
programar
viernes, 9 de enero de 2015
Trabajando con Graphics
El funcionamiento de la clase Graphics, que es la encargada de pintar las cosas en pantalla, es muy sencillo, lo ilustraré pintando un cuadrado en una ventana. Usaré este método de Graphics: fillRect(int x, int y, int width, int height). Para usarlo, debemos obtener una instancia de Graphics, puesto que no podemos instanciarla directamente. Para hacer esto, colocaremos un JPanel dentro de un JFrame y un JButon. Al pulsar el botón ejecutaremos este método:
private void bPintarActionPerformed(java.awt.event.ActionEvent evt) { // Obtenemos el graphics del panel en el que dibujaremos Graphics g = panel.getGraphics(); // Decimos lo que dibujar y que color queremos g.setColor(Color.RED); g.fillRect(10, 10, 100, 100); // Lo pintamos en el panel panel.paintComponents(g); }
Y veremos que pinta correctamente un cuadrado rojo.
Etiquetas:
clases,
codigo,
graficos,
Graphics,
informatica,
java,
metodo,
morethansimplycode,
NetBeans,
programa,
programacion,
programar
jueves, 8 de enero de 2015
Construyendo tu programa IV: Persistencia I: Ficheros
Como es normal, un programa de gestión que cuando lo cierras no guarda datos no es muy útil, así que toca hablar de la persistencia. Empezaremos por la persistencia en ficheros. Para empezar hay que hablar del concepto de Stream. Un Stream es un flujo de datos entre dos aplicaciones, en este caso el sistema de archivos. Hay varios Objetos Stream en java que representan, hoy hablaré solo del ObjectStream, que guarda objetos. Hay otros que se encargan de tipos primitivos etc.. pero eso lo veré en otra entrada.
Etiquetas:
aprender,
blog,
codigo,
construye tu programa,
construyendo tu programa,
Empleados,
III,
informatica,
java,
morethansimplycode,
NetBeans,
programa,
programacion,
programar
viernes, 2 de enero de 2015
Métodos Estáticos
Todos hemos leído la palabra static y hemos pensado que por que la voy a usar, si sin ponerla funciona. O la hemos puesto en todos lados por simple comodidad para programar sin objetos. Recordemos que los métodos estáticos son métodos que pertenecen a la clase, y con su nombre se pueden ejecutar, mientras que los no estáticos pertenecen a un objeto instanciado de esa clase. Y dicho esto voy a dar una sencilla regla:
Si el método en el que estamos trabajando, no usa ningún campo de un objeto de la clase en la que está, debería ser static. Por ejemplo:
Si tuviéramos este método:
Hasta aquí este breve post. Comentad más casos si se os ocurren.
Si el método en el que estamos trabajando, no usa ningún campo de un objeto de la clase en la que está, debería ser static. Por ejemplo:
Si tuviéramos este método:
public class Utilidades { public int calcularCuadrado(int i){ return i*i; } }Y, si quisiéramos usarlo, tendríamos que hacer esto:
public class Pruebas { public static void main(String[] args) { // Podríamos hacer esto (si lo vamos a usar más de una vez) Utilidades util = new Utilidades(); System.out.println(util.calcularCuadrado(2)); // O esto (si solo lo usamos aquí): System.out.println(new Utilidades().calcularCuadrado(2)); } }Pero si lo declaramos como static, puesto que no usamos ningún campo del objeto:
public static int calcularCuadrado(int i){return i*i;} public static void main(String[] args) { // Ahora nos da igual usarlo una o más veces, que así podremos hacerlo System.out.println(Utilidades.calcularCuadrado(2)); }Puede haber más casos en los que se podría usar, de hecho, seguro que los hay, pero con esto tenemos de sobra para discernir rápidamente cuando un método debería ser estático y cuando no. Usar constantes no cuenta cómo usar campos de un objeto instanciado, asique seguiría siendo static en ese caso.
Hasta aquí este breve post. Comentad más casos si se os ocurren.
Etiquetas:
aprender,
blog,
clases,
codigo,
estatico,
informatica,
java,
metodo,
morethansimplycode,
NetBeans,
programa,
programacion,
programar,
static
domingo, 28 de diciembre de 2014
Construyendo tu programa III
Hechos los cambios oportunos en la Gestora para adaptarnos al patrón singleton, hoy toca crear la ventana e introducir y mostrar los datos. Lo primero es crear nuestro JFrame, que actuará de ventana principal y poner los controles, con nombre apropiados y siguiendo un estándar en ella. Recomiendo simplicidad y amplitud, sin sobrecarga, aunque en este caso, como no hay mucho que poner, y no es más que un ejemplo lo dejaré así:
Etiquetas:
aprender,
blog,
codigo,
construye tu programa,
construyendo tu programa,
Empleados,
III,
informatica,
java,
morethansimplycode,
NetBeans,
programa,
programacion,
programar
jueves, 18 de diciembre de 2014
Juegos y Páginas para mejorar II
Antes os hablaba de CodingBat una pequeña página para aprender, y hoy traigo un juego de Microsoft Code Hunt. Puedes jugarlo tanto en Java como en C#. Este juego además cuenta con una gran ayuda, cuando escribes la solución, te la puntúa en función de lo óptima que sea.
Etiquetas:
aprender,
blog,
C#,
Code Hunt,
codigo,
informatica,
java,
juegos,
jugar,
morethansimplycode,
paginas,
programacion,
programar,
Python
miércoles, 17 de diciembre de 2014
Patrón Singleton
El objetivo del patrón Singleton es asegurarse de que solo existe una única instancia de un objeto para todo el programa. Esto se consigue con tres cosas: un constructor privado, un campo de la clase estático para almacenar la única instancia y un método estático para obtenerla y, si no existe, crearla.
Etiquetas:
blog,
C#,
codigo,
construye tu programa,
construyendo tu programa,
informatica,
java,
lenguajes,
morethansimplycode,
patron,
programacion,
programar,
Python,
singleton
martes, 16 de diciembre de 2014
Juegos y Páginas para mejorar I
Os presento CodingBat, una página para aprender y agilizar la mente con diversos problemas de programación en Java y Python, muy útil para mejorar diferentes aspectos que nos ayudarán para programar.
Etiquetas:
aprender,
blog,
C#,
codigo,
CodingBat,
informatica,
java,
juegos,
jugar,
morethansimplycode,
paginas,
programacion,
programar,
Python
lunes, 15 de diciembre de 2014
Construyendo tu programa II
Por fin toca ya empezar a programar! Para seguir con esto voy a hacer una sencilla aplicación que de momento simplemente almacenará y mostrará datos sobre unos empleados. De esta frase tenemos que extraer los tres apartados que mencioné en el apartado anterior. Los datos en este caso será una clase empleado, las clases gestoras serán la GestoraEmpleados que será un ArrayList<Empleado> y una clase que se encargará de procesar la información que veremos en la tabla, un ModeloTabla y una Ventana para introducir y mostrar datos.
Etiquetas:
blog,
codigo,
construye tu programa,
construyendo tu programa,
Empleados,
Gestora,
informatica,
java,
modelo,
morethansimplycode,
paquetes,
patron,
programa,
programacion,
programar,
Python,
singleton,
tabla
domingo, 14 de diciembre de 2014
Empezando con lo importante: Construyendo tu programa I
No, no pienso empezar con ¡Hola Mundo!, si no con algo más importante: La Estructuración del Programa y sus clases.Cabe decir que va a ser un breve esquema que iré desarrollando en profundidad en sucesivas entradas. Para ello me voy a basar en los principios del patrón modelo-vista-controlador, del que hablaré más adelante, con el que separaré las tres partes importantes de un programa: los Datos, la Gestión de los Datos, y la Vista de los Datos. Para mi lo primero es identificar las partes del problema y ponerlo en uno de esos apartados.
Etiquetas:
blog,
clases,
codigo,
construye tu programa,
construyendo tu programa,
Gestora,
Hola Mundo,
informatica,
java,
JUnit,
modelo-vista-controlador,
morethansimplycode,
paquetes,
programacion,
programar
sábado, 13 de diciembre de 2014
Lenguajes
El lenguaje con el que empecé y aprendí es Java, no es mal lenguaje para novatos, es muy descriptivo y la orientación a objetos con él tiene soluciones muy elegantes. Después me tocó aprender C#, del que no me gusta como soluciona algunos problemas de la orientación a objetos. Una de las cosas con las que peor me llevo son las propiedades, me parecen poco descriptivas de lo que estás haciendo. Pero esto son preferencias de cada uno.
Ahora mismo estoy explorando los lenguajes Web de toda la vida, PHP, Javascript, HTML y CSS. También he trabajado con VisualBasic... que es un poco farragoso con tanta letra, pero bueno, al menos es muy descriptivo. A veces.
Obviamente el SQL no me es desconocido y encuentro particularmente útil el PL/SQL de Oracle, es una herramienta muy potente, aunque igual de farragoso que VB, y que garantiza la integridad de la base de datos independientemente de las aplicaciones que trabajen contra ellas.Lo que más me gusta de PL/SQL son los Trigger. De esta manera se consigue una gran independencia entre los módulos de cualquier programa que trabaje con base de datos de Oracle, pero de la modularidad hablaré en posteriores entradas.
Etiquetas:
blog,
C#,
codigo,
CSS,
CSS3,
HTML,
HTML5,
informatica,
java,
Javascript,
morethansimplycode,
PHP,
PL/SQL,
programacion,
programar,
SQL,
VB,
VisualBasic
viernes, 12 de diciembre de 2014
Mi entorno de trabajo
La segunda entrada tenía que ser esta: El entorno de trabajo. Son muchos los IDE's pero ahora mismo para Java y alguna cosa más uso NetBeans 8, es cierto que la gente suele preferir Eclipse, pero yo me siento más cómodo con NetBeans. Como complemento para compilar mis programas más (los más grandes no...) uso Ant, simple y rápido. Para trabajar con Android uso tanto Eclipse con el ADT como Android Studio, estoy en proceso para pasar a usar solo el Studio, pues está basado en IntelliJ que me gusta mucho más. Personalmente Eclipse me ha dado muchos errores especialmente con el ADT. Cuando toca programación web pues cualquier cosa, desde el Bloc de Notas hasta Sublime (recomendadísimo y portable 100%) pasando por varios, Dreamweaver, PHP Designer, PHP coder y mucho otros. Cuando toca C# suelo usar SharpDevelop o VisualStudio aunque no es un lenguaje que me llame mucho.
También son muchos los sitios que hablan sobre la Ergonomía del espacio de trabajo, pero yo lo resumiré: Espacio, Espacio y ¡Espacio! Tanto en la pantalla como en el escritorio. Yo uso dos pantallas, una de 23" 1920x1080 y otra en 4:3 creo que de 17" o algo así. Personalmente usar una pantalla en 4:3 en los laterales es más cómodo que una de 16:9. Tampoco podía faltar hablar de ratón y teclado, especialmente el ratón, yo recomiendo uno que se adapte bien a la mano, recuerda que somos informáticos y el síndrome del túnel carpiano nos ronda... yo uso el Logitech M500 y no lo cambiaba por nada. En cuanto al teclado cualquiera aceptable y que nos guste está bien. Lo siguiente que hace falta es ¡luz! o te dolerán los ojos y sufrirás acabando ese programa que te tiene atrapado.
Por si no lo habéis intuido normalmente trabajo sobre un Windows 7, por comodidad, aunque no me importa usar cualquier Linux, últimamente he probado OpenSUSE, Debian y LinuxMint. Y... KaliLinux, pero eso es otra historia :D.
Pero al margen de lo que use para programar, lo importante al final es el código escrito, así que no juzguéis a los programadores por usar las plataformas que usen, lo importante es estar cómodo.
Etiquetas:
Android,
Ant,
blog,
C#,
codigo,
Eclipse,
Ergonomia,
informatica,
java,
lenguajes,
Linux,
morethansimplycode,
NetBeans,
PHP,
programacion,
programar,
SharpDevelop,
Sublime,
Windows
jueves, 11 de diciembre de 2014
Inaugurando el Blog
No sé como empezar así que me presentaré un poquito. Soy un programador más, pero soy de los que piensan que programar es algo más que simplemente escribir código, de ahí el nombre del blog, pienso que programar es también buscar la solución más elegante al problema.
Y de eso tratará el blog, de como conseguir un buen código, robusto, simple y elegante, un código pragmático, útil para cuando toque añadirle funcionalidades o para usarlo en otro programa. Por ello, hablaré de los patrones y metodologías de programación, de como son y de como los veo. También exploraré soluciones a diferentes problemas con su explicación y poco código de ejemplo. Quiero que este blog sea para aprender no para copiar y pegar. Quizá abra un repositorio en GitHub o en GoogleCode, para que construyamos y mejoremos las soluciones a los problemas de los que vaya hablando. No solo hablaré de programación si no que habrá entradas sobre informática en general.
La idea de empezar este blog surgió por que yo suelo leer muchos, en especial el de chuidiang, al que le doy las gracias por lo que he aprendido gracias a él.
Y de eso tratará el blog, de como conseguir un buen código, robusto, simple y elegante, un código pragmático, útil para cuando toque añadirle funcionalidades o para usarlo en otro programa. Por ello, hablaré de los patrones y metodologías de programación, de como son y de como los veo. También exploraré soluciones a diferentes problemas con su explicación y poco código de ejemplo. Quiero que este blog sea para aprender no para copiar y pegar. Quizá abra un repositorio en GitHub o en GoogleCode, para que construyamos y mejoremos las soluciones a los problemas de los que vaya hablando. No solo hablaré de programación si no que habrá entradas sobre informática en general.
La idea de empezar este blog surgió por que yo suelo leer muchos, en especial el de chuidiang, al que le doy las gracias por lo que he aprendido gracias a él.
Suscribirse a:
Entradas (Atom)