marzo 7, 2018

Buscar el número menor y mayor en un arreglo con Go

Introducción

Seguimos con los ejercicios clásicos. Hoy veremos cómo buscar el número más grande y el más pequeño que existe en un arreglo de datos. Será con un ciclo for y condiciones.

Buscar el número más grande

En este caso no importa la forma en la que iteremos sobre el arreglo. Por lo tanto, lo haré con un range. El proceso es simple, declaramos una variable de tipo entero, iniciada con el valor del primer elemento de la lista. Luego, vamos comparando y en cada iteración del arreglo preguntamos:

¿el número actual es mayor que el que está almacenado en la variable? en caso de que sí, entonces a la variable le asignamos ese número. En caso de que no, seguimos con el ciclo. Finalmente, imprimimos el mayor.

La salida del programa es la siguiente:

Buscar el número más pequeño

Ahora hagamos el proceso inverso, de la misma manera que antes, pero cambiando la comparación y el nombre de la variable.

Queda así (notar que he cambiado los valores del arreglo):

La salida es esta:

Bonus: buscar mayor y menor

Para terminar bien, vamos a buscar tanto al mayor y al menor en el arreglo. Se haría así:

La salida sería esta:

 Con esto terminamos por hoy.

Recorrer arreglos en Go

Introducción

Siempre vamos a necesitar recorrer arreglos o listas en Go. Al menos yo conozco 2 maneras de hacerlo y hoy vengo a explicarlas.

Recorrer un arreglo con una variable y un ciclo for

La forma más tradicional y antigua es declarar una variable en 0. Luego, hacer un ciclo for e ir incrementando esa variable de uno en uno hasta llegar a la longitud del arreglo.

Si queremos recorrer un arreglo o vector (por ejemplo, de números enteros) e imprimir sus valores el código de ejemplo sería el siguiente:

Eso lo recorre de arriba hacia abajo, para “optimizar” el ciclo y no llamar muchas veces a len. Al ejecutar, tenemos:

Pero si a queremos recorrerlo de abajo hacia arriba tenemos dos opciones… almacenar la longitud en una variable, o llamar a la función en cada iteración.

Almacenar longitud para recorrer de abajo hacia arriba

El código quedaría así:

Y su ejecución sería la siguiente:

Llamar a len en cada iteración

Ahora quedaría así:

Y su ejecución sería casi la misma que arriba,  así:

Recorrer un arreglo con range

Este es el método preferido y elegante. Si queremos recorrer un arreglo, utilizamos range. Así, podemos acceder al índice y al valor por separado.

Por ejemplo, para ver el índice y valor de un arreglo usamos esto:

La salida es la siguiente:

Si sólo queremos el índice…

Código de ejemplo:

Lo que da como resultado esto:

Y si sólo queremos el valor…

Código fuente de ejemplo:

Para terminar, esta es la salida:

Conclusión y notas

Sólo recorrimos arreglos de números, pero también podemos recorrer arreglos de cualquier tipo, sobre todo utilizando range.

Eliminar documentos duplicados en MongoDB

Introducción

Hablando de duplicidad, en alguna ocasión tuve que eliminar datos duplicados en MySQL y ya lo expliqué. Hoy explicaré cómo podemos eliminar duplicados en MongoDB, un gestor de base de datos que se compone de colecciones y que dentro de éstas aloja documentos.

Eliminar duplicados

Si sólo vienes por la solución, y no quieres ver el ejemplo, lo que tienes que ejecutar es esto:

Ahí “coleccion” es el nombre de tu colección. Y “laClave” es la clave que no quieres que se repita más de una vez.

Por cierto, haz un respaldo completo antes.

Quiero aclarar que la solución no es mía, yo sólo vengo a exponerla y a dar un ejemplo.

Ejemplo

Base de datos

Para este ejemplo utilizaré una base de datos de libros, en donde no puede repetirse el ISBN. Por favor nota que sólo es un base de datos de ejemplo, no esperes que los datos rean reales; se trata de ilustrar.

Insertaré esto:

Consultando

Consultaré los datos para ver si se han insertado:

Hora de eliminar los repetidos. Nota: en este caso es un ejemplo algo raro, pero puede que en alguna ocasión nos falle sólo una palabra y tengamos que eliminar los duplicados.

Eliminando duplicados

Para eliminarlos, utilizo esto:

Ejecuto la “consulta”:

Verificando eliminación

Y si vuelvo a consultar los datos existentes, veo esto:

¡Magia pura! ya no hay repetidos. Nos hemos quedado sólo con un dato. Esto funciona muy bien cuando tenemos documentos realmente repetidos, es decir, que todas sus claves sean idénticas; ya que de esta manera no importará cuál de ambos se elimine.

En este caso utilizamos al ISBN para eliminar, pero podemos utilizar cualquier clave.

Respaldar base de datos de MongoDB

Introducción

En toda base de datos siempre necesitaremos importar y exportar datos. Ya sea por prevención, seguridad o porque haremos un movimiento que puede hacer que la base de datos quede mal. El punto es que siempre lo necesitaremos.

Hoy veremos cómo hacer un respaldo completo de una base de datos en MongoDB utilizando tanto mongoexport y mongoimport como mongodump y mongorestore.

Diferencias entre mongoexport, mongoimport, mongodump y mongorestore

Mongoexport funciona para exportar. Para importar datos que respaldamos con esta herramienta, utilizamos mongoimport.

Mongodump funciona para exportar, y su contrario es mongorestore.

La diferencia es que mongodump conserva los datos de una forma más “fiel”, es decir, si tenemos datos que no son simples cadenas o números, éste método tratará de que queden intactos al exportarlos e importarlos.

Otra diferencia es que el primero exporta a JSON y el segundo a BSON. Si me preguntan a mí, prefiero JSON, pues guardo datos normales.

Importando y exportando con JSON

Sintaxis

Exportar

La sintaxis es la siguiente:

mongoexport --db tuBaseDeDatos --collection laColeccion --out C:\la\ruta\de\salida\del\archivo.json

Importar

Y para importar, usamos esto:

mongoimport --db tuBaseDeDatos --collection laColeccion --file C:\la\ruta\del\archivo.json

Ejemplo

Base de datos

Para ejemplificar esto, usaré una base de datos de una tienda, que tendrá una colección llamada productos. Habrá 3 registros en dicha colección, los cuales se ven así:

Exportando con mongoexport

Ahora voy a exportarlos:

Nota: no puse la ruta completa, sólo puse el nombre del archivo, por lo que el programa tomará la ruta actual como la ruta en donde debe quedar el archivo. En este caso es la raíz del disco D.

Si visito la ruta en donde lo exporté, veré que se creó un archivo que se puede abrir con un editor de texto plano:

Ahora eliminaré todos los datos de la base de datos. Al consultarlos, queda esto:

Así que la tabla ha quedado vacía.

Importando con mongoimport

Como ya hemos vaciado la tabla, vamos a probar la importación. Voy a importar el archivo:

Y ahora, si veo los registros que tengo, veré esto:

Y así podemos importar y exportar. Veamos ahora las otras 2 herramientas.

Importando y exportando con BSON

Para mostrar la diferencia, ahora vamos a exportar una base de datos completa.

Sintaxis

Exportar

Para exportar, hacemos lo siguiente:

mongodump --db tuBaseDeDatos --out C:\la\ruta\de\salida\de\la\carpeta

 

Importar

Y para importar, esto:

mongorestore C:\la\ruta\de\la\carpeta

En este caso no especificamos base de datos ni colección, pues la base de datos será creada automáticamente.

Ejemplo

Base de datos

Utilizaremos la misma base de datos de productos

Exportar con mongodump

Para exportar es:

Esto hizo que una carpeta fuera creada:

Importar con mongorestore

Ahora para importar únicamente paso el nombre de la carpeta como argumento:

Conclusión y notas

Si tenemos control de acceso, podemos pasar nuestro usuario y contraseña con –username y –password respectivamente. Por cierto, la contraseña debe ir entre comillas.

También tenemos las opciones –host y –port. Y puede que haya otras, pero espero haber mencionado aquí las más importantes.

Por otro lado, podemos exportar colecciones únicas, base de datos, todas las bases de datos, y muchas combinaciones que no podría explicar en un post.

Aquí dejo una lista de enlaces que pueden ser de ayuda:

Ejecutar código PHP en línea sin necesidad de registrarse

Introducción

A veces no tenemos tiempo de probar en nuestro servidor algún fragmento de código, o tal vez no tenemos PHP instalado. En este caso nos vemos en la necesidad de ejecutar código PHP online gratis y sin muchos líos.

Es por ello que hoy vengo a compartir una página que permite simular y ejecutar código PHP, así como código MySQL.

PhpFiddle

La página de la que hablo es phpfiddle.org. La interfaz luce así:

La parte que más me gusta es la que dice Code Space. Se ve así:

  1. El código fuente. Aquí podemos escribir todo el código, es nuestro editor.
  2. Ejecutar. Con esto ejecutamos el código que previamente hemos escrito.
  3. Autoformatear. Esta herramienta es muy útil al menos para mí, pues acomoda e indenta el código para que se vea bonito.
  4. Edición. Es como el menú Editar que conocemos. Permite pegar, copiar, deshacer, etcétera.
  5. Analizar nuestro código.
  6. Exportar. Podemos descargar el código que hemos escrito.
  7. Cargar. Si tenemos un archivo php en nuestra computadora, podemos subirlo para probarlo aquí.
  8. El mismo que el 6, permite descargar el código
  9. Configuraciones. Ajustes del editor, mostrar líneas, autocompletar, etcétera.
  10. Ayuda de PHP. Esta es una poderosa herramienta, nos da ayuda traída directamente del sitio oficial de PHP. Es decir, no necesitamos salir del editor por si olvidamos la firma de una función o cosas de esas que suelen pasar.

Obviamente esto es una explicación a grandes rasgos. La mejor manera de explorar todas las características es entrar por ti mismo.

Conclusión

Sólo di una pequeña introducción a esta gran herramienta online. Pero incluso tiene soporte para trabajar con MySQL, hacer peticiones AJAX y un montón de cosas que no podría explicar aquí. También permite iniciar sesión para (creo) guardar nuestros archivos.

Es una maravilla total para los desarrolladores de PHP que por alguna u otra razón no tenemos un entorno local, o simplemente queremos hacer pruebas rápidamente sin tener que crear archivos y probar en nuestro ordenador.