Leer datos por teclado en Go | Versión 2

Introducción Ayer escribí cómo leer datos del usuario que son pedidos por consola. La versión que hice fue un poco larga para un proceso tan simple, así que aquí traigo una versión mejorada que me recuerda más a cuando leíamos variables en C con scanf. La ventaja de esto es que podemos leer muchas variables de varios tipos, con la conversión automática. Código de ejemplo Pondré el mismo ejemplo de ayer, en donde elegíamos nuestra botana (si así se le puede llamar) favorita. La diferencia es que ahora leeremos un número entero. Es importante notar que al leer con Scanln pasamos como argumento la dirección de la variable, no la variable en sí. ...

marzo 6, 2018 · 1 min · 195 palabras · Parzibyte

Sentencias de control en Go: If y Switch

Introducción Este tutorial pretende ser muy sencillo. Simplemente explica cómo funciona la sentencia if, else y switch. Veremos cómo a veces vamos a preferir switch, y cómo aquí no tenemos que utilizar break cuando lo utilizamos. If y else Comencemos con la sentencia if. A diferencia de otros lenguajes, la condición no va entre paréntesis. Y aunque el cuerpo ocupe una línea, debemos encerrarlo entre llaves. La forma más simple del if y else es esta: ...

marzo 6, 2018 · 6 min · 1125 palabras · Parzibyte

Suma de números en Go

Introducción Ya me gustó esto de hacer pequeños ejercicios con Go. Pero bueno, vamos a hacer otro en donde simplemente devolvemos la suma de 2 números que pedimos por pantalla. Muy simple pero nos da una pequeña introducción al lenguaje. Ejemplo de código package main import "fmt" func main() { var numero1, numero2 int // Declarar variables de tipo entero /* Pedir datos por teclado */ fmt.Print("Número 1: ") fmt.Scanln(&numero1) fmt.Print("Número 2: ") fmt.Scanln(&numero2) // Sumar suma := numero1 + numero2 // Imprimir resultado fmt.Printf("%d + %d = %d", numero1, numero2, suma) } Lo único que hacemos es declarar 2 variables al inicio. Luego, les asignamos un valor dependiendo de lo que el usuario elija. ...

marzo 6, 2018 · 1 min · 156 palabras · Parzibyte

Tablas de multiplicar en Go

Introducción Recordando mis primeros ejercicios de programación, en alguna ocasión tuve que imprimir las tablas de multiplicar de diferentes maneras. Una de ellas era pedir cuál tabla quería ver, y entonces se imprimía. Por ejemplo, si el usuario decía que quería la tabla del 5, entonces se imprimía 5 x 1 = 5…. hasta 5 x 10. En otro ejercicio, se pedía hasta cuál tabla se quería ver. Por ejemplo, si el usuario quería hasta la tabla del 3, entonces imprimíamos la tabla del 1, luego la del 2 y finalmente la del 3. ...

marzo 6, 2018 · 2 min · 417 palabras · Parzibyte

Ajustando fechas en Javascript

Introducción No sé si sólo a mí me pasa o si sólo yo ocupo las fechas en Javascript, pero siempre que intento compararlas, algunas salen mal debido al offset. Sé que no se debe confiar en las fechas del cliente, pues se pueden cambiar, pero en alguna ocasión debimos necesitar trabajar con estas y puede que nos haya dado resultados inesperados. Así que hoy mostraré cómo “ajustar el tiempo” de las fechas de Javascript utilizando getTimezoneOffset. ...

marzo 5, 2018 · 3 min · 492 palabras · Parzibyte

Compilar java y MySQL sin NetBeans ni otros IDE's

Introducción En este post explicaré cómo conectar Java y MySQL sin utilizar ningún IDE. Es decir, lo único que necesitamos es el compilador de Java (javac), el “ejecutador” de archivos de java (java), un editor de texto plano como Sublime Text, una consola y el conector que será un archivo.jar. Si quieres, puedes ver este post para ver cómo instalar java. Sólo explicaré la conexión, y escribiré otro post de un CRUD para complementar a éste; pero no podemos crearlo si no sabemos conectar. ...

marzo 1, 2018 · 5 min · 1047 palabras · Parzibyte

Eliminar referencias de objetos en Javascript

Introducción Este post será muy muy sencillo pero espero que a alguien más le sirva. Sucede que estoy trabajando con un proyecto utilizando VueJS, y por alguna razón tenía que “copiar” un objeto. Es decir, necesitaba crear una nueva copia de un objeto, sin mantener las referencias del original. Si no sabes a lo que me refiero, pásate por este post. Después de buscar, encontré algo de ES6 que permite hacer casi lo mismo. Extrañaba esta función, que en AngularJS se llama angular.copy. ...

febrero 27, 2018 · 1 min · 199 palabras · Parzibyte

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