Cargar nuestras propias clases con Composer

Introducción Al principio, no queremos utilizar Composer porque creemos que es muy complicado de utilizar. Hoy explicaré 2 cosas: cómo cargar nuestras clases y por qué es bueno utilizar Composer ¿Por qué es bueno? Composer es un gestor de dependencias como lo es NPM. Ambos trabajan igual: leen un fichero, instalan y actualizan las dependencias. Fácil y sencillo. Por otro lado, Composer se encarga de cargar todas las clases necesarias. ...

febrero 26, 2018 · 3 min · 575 palabras · Parzibyte

Mi implementación del juego de la serpiente en Javascript

Snake game en JS En mi infancia me gustaba jugar al juego de Snake en un nokia. No pensé que algún día en el futuro podría hacer una “copia” del mismo. Claro que no es una réplica exacta y faltan muchas cosas, pero al menos funciona. Así que igual y a otra persona le sirve. Está escrito en javascript puro, utiliza imágenes para los sprites; por lo que puedes personalizarlos. Se adapta a la pantalla completa y se juega con las flechas del teclado. ...

febrero 26, 2018 · 1 min · 164 palabras · Parzibyte

Más ejercicios resueltos de MySQL: Combinando funciones

Introducción Esta es la tercera parte de unos posts que vengo escribiendo sobre ejercicios propuestos de MySQL. Ahora veremos cómo combinar algunas funciones que vimos en los otros tutoriales. Son pocos, pero al principio son difíciles. Ejercicios con solución Tabla Recordemos que vamos a estar utilizando esta tabla para todos los ejercicios: /* Si no tienes una base de datos, copia las siguientes dos líneas que no están comentadas */ CREATE DATABASE IF NOT EXISTS pruebas; USE pruebas; /* Si ya tienes una base de datos, sólo copia lo siguiente */ CREATE TABLE tblUsuarios ( idx INT PRIMARY KEY AUTO_INCREMENT, usuario VARCHAR(20), nombre VARCHAR(20), sexo VARCHAR(1), nivel TINYINT, email VARCHAR(50), telefono VARCHAR(20), marca VARCHAR(20), compañia VARCHAR(20), saldo FLOAT, activo BOOLEAN ); INSERT INTO tblUsuarios VALUES ('1','BRE2271','BRENDA','M','2','brenda@live.com','655-330-5736','SAMSUNG','IUSACELL','100','1'), ('2','OSC4677','OSCAR','H','3','oscar@gmail.com','655-143-4181','LG','TELCEL','0','1'), ('3','JOS7086','JOSE RAÚL','H','3','francisco@gmail.com','655-143-3922','NOKIA','MOVISTAR','150','1'), ('4','LUI6115','LUIS FRANCISCO','H','0','enrique@outlook.com','655-137-1279','SAMSUNG','TELCEL','50','1'), ('5','LUI7072','LUIS','H','1','luis@hotmail.com','655-100-8260','NOKIA','IUSACELL','50','0'), ('6','DAN2832','DANIEL ALDAIR','H','0','daniel@outlook.com','655-145-2586','SONY','UNEFON','100','1'), ('7','JAQ5351','JAQUELINE','M','0','jaqueline@outlook.com','655-330-5514','BLACKBERRY','AXEL','0','1'), ('8','ROM6520','ROMAN','H','2','roman@gmail.com','655-330-3263','LG','IUSACELL','50','1'), ('9','BLA9739','BLAS','H','0','blas@hotmail.com','655-330-3871','LG','UNEFON','100','1'), ('10','JES4752','JESSICA','M','1','jessica@hotmail.com','655-143-6861','SAMSUNG','TELCEL','500','1'), ('11','DIA6570','DIANA LAURA','M','1','diana@live.com','655-143-3952','SONY','UNEFON','100','0'), ('12','RIC8283','RICARDO','H','2','ricardo@hotmail.com','655-145-6049','MOTOROLA','IUSACELL','150','1'), ('13','VAL6882','VALENTINA','M','0','valentina@live.com','655-137-4253','BLACKBERRY','AT&T','50','0'), ('14','BRE8106','BRENDA','M','3','brenda2@gmail.com','655-100-1351','MOTOROLA','NEXTEL','150','1'), ('15','LUC4982','LUCIA','M','3','lucia@gmail.com','655-145-4992','BLACKBERRY','IUSACELL','0','1'), ('16','JUA2337','JUAN JOSÉ','H','0','juan@outlook.com','655-100-6517','SAMSUNG','AXEL','0','0'), ('17','ELP2984','ELPIDIO','H','1','elpidio@outlook.com','655-145-9938','MOTOROLA','MOVISTAR','500','1'), ('18','JES9640','JESSICA','M','3','jessica2@live.com','655-330-5143','SONY','IUSACELL','200','1'), ('19','LET4015','LETICIA','M','2','leticia@yahoo.com','655-143-4019','BLACKBERRY','UNEFON','100','1'), ('20','LUI1076','LUIS','H','3','luis2@live.com','655-100-5085','SONY','UNEFON','150','1'), ('21','HUG5441','HUGO','H','2','hugo@live.com','655-137-3935','MOTOROLA','AT&T','500','1'); Nota: no es la misma tabla que antes, ya que a ésta la hemos modificado de tal manera que a algunos usuarios se les asignó un segundo nombre, mismo que será de utilidad para los ejercicios. ...

febrero 24, 2018 · 5 min · 937 palabras · Parzibyte

Introducción a pouchdb: app de agenda

Introducción PouchDB es una base de datos que se sincroniza. Permite trabajar offline y online, con una sincronización de la cual no tenemos que encargarnos nosotros. Esto viene perfecto para desarrollar sistemas que trabajan tanto con y sin internet. Es importante notar que si no queremos la sincronización, no pasa nada. Por lo que no estamos obligados a sincronizar ningún sólo dato. Además, la base de datos se sincroniza entre todos los dispositivos. Esto es algo muy genial, aunque claro, tampoco es tan poderosa como MySQL, MS SQL Server, etcétera. ...

febrero 22, 2018 · 12 min · 2351 palabras · Parzibyte

Java: cuestionario de preguntas y respuestas con incisos por consola

Introducción Ayer mi ayuda fue solicitada para resolver un ejercicio de Java que más o menos decía así: Realizar un programa en Java en donde se pueda simular un examen de múltiples respuestas, en donde el usuario elija la respuesta y se indique si ésta fue correcta o no. Todo se tiene que hacer por consola, incluyendo la entrada de datos. Solución al ejercicio Así que me puse a pensar y al final, según yo, la mejor solución (aunque no me gustó tanto) era crear dos clases. Una de preguntas y otra de respuestas. ...

febrero 20, 2018 · 5 min · 895 palabras · Parzibyte

MySQL y PHP con PDO: CRUD (create, read, update, delete)

Introducción Aunque ya hay millones de tutoriales sobre esto, me decidí a hacer el mío pero en una forma muy muy simple. Antes de comenzar, debes tener un conocimiento básico en MySQL. Si no tienes instalado esto, pásate por este post para instalar XAMPP. Cabe mencionar que aquí no veremos buenas prácticas de bases de datos, relaciones, etcétera. Nos dedicaremos a usar las tablas que aparecen, sin fijarnos en la normalización, o cosas de ese estilo. ...

febrero 13, 2018 · 13 min · 2603 palabras · Parzibyte

Ejemplo de Java Remote Method Invocation | RMI

Introducción Ya vimos en un ejercicio anterior cómo conectar un socket cliente y uno servidor para mandar mensajes. Enviar mensajes no tiene gran utilidad, ¿no sería mejor poder llamar a algunas funciones en el servidor? esto es justamente lo que hace RMI en Java. Declaramos el servidor, el cliente, y la interfaz que servirá como “pegamento” entre estos dos y que se encargará del paso de parámetros. Después, desde el cliente llamamos a las funciones declaradas anteriormente. ...

febrero 12, 2018 · 5 min · 936 palabras · Parzibyte

Ejercicios resueltos con MySQL: Funciones de cadena, UPDATE y DELETE

Introducción He publicado hace algunos días algunos ejercicios de consultas en MySQL; puedes verlo aquí. En aquel entonces sólo fueron consultas simples, en este caso veremos cómo editar/actualizar y eliminar, así como el procedimiento para vaciar una tabla. También trabajaremos con algunas funciones de cadena. Estructura y datos de la tabla Para trabajar y realizar nuestros ejercicios utilizaremos la tabla y los datos que ya he dejado en el post anterior, pero la vuelvo a poner a continuación: ...

febrero 12, 2018 · 12 min · 2429 palabras · Parzibyte

PostgreSQL: Separar una cadena con expresión regular y poner los resultados en filas

Introducción Este es otro ejercicio de codewars que estuve a punto de resolver correctamente, aunque al final utilicé unos métodos no recomendados para el ejercicio, pero funcionaron. El problema era el siguiente: Dada una cadena aleatoria, partirla en diferentes filas cada que se encontrara cualquier vocal. Por ejemplo, veamos esta cadena: ah7ki3eumgpa72mdpwe8od Si la partimos o hacemos un split en cada vocal, sin incluir las vocales, tendríamos un resultado así: ...

febrero 10, 2018 · 2 min · 334 palabras · Parzibyte

Ejemplo de Sockets en Java: chat básico entre cliente y servidor

Introducción Escribo esto para que no olvide cómo implementar un socket servidor y uno cliente en Java. Ambos pueden ser conectados en la misma máquina, o conectados a través de una red. También pueden usar distintos puertos y, como lo dije, distintas IP’s. Por defecto, el servidor escucha en el puerto 5050 de localhost, aunque dicho puerto puede cambiarse. Y el cliente, se conecta por defecto a localhost en el puerto 5050, pero este puede conectarse no sólo a localhost, sino a cualquier IP. Una vez hecha la conexión, se puede “chatear” de ambos lados. Cabe mencionar que esto corre en la terminal, sin interfaz gráfica ni nada de esas cosas que sólo complican al código. Hice el código lo más limpio y corto posible. Dicho esto, aquí dejo el código. ...

febrero 9, 2018 · 5 min · 994 palabras · Parzibyte