Como ya es costumbre los últimos años, preparo un breve resumen de lo más destacado del año para el blog. Aunque este año pretendo hacer algo un tanto diferente. Vamos a meter un poco de SQL 🙂
Un año programando y compartiendo
Este blog empezó siendo una auto-chuleta para dar clases particulares de programación, y así poder ayudar a mis alumnos planteando problemas y soluciones, así como una pequeña documentación de ciertas cosas que he encontrado interesantes.… Leer artículo completo
Cuando hablamos de argumentos o parámetros de un programa en C, debemos pensa en los parámetros tan raros que pasamos a la función main(). En este caso, podemos ver cómo con dos argumentos (argc, o el número de argumentos que tenemos y argv o el contenido de esos argumentos, somos capaces de gestionar la información que un usuario nos pasa justo cuando ejecuta nuestro programa.
Lo más sencillo que podemos hacer con los argumentos
Imaginemos este ejemplo, de un programa donde queremos copiar un archivo origen a un destino (como cp), primero comprobamos que el número de argumentos es suficiente y luego imprimimos en pantalla el valor de cada uno (es un ejemplo inofensivo, no vamos a copiar nada).… Leer artículo completo
Anteriormente vimos cómo crear un plugin para Magento y cómo crear un controlador para Magento. Ahora le toca el turno al modelo. Intentaré poner con todo detalle todo el proceso. Por eso, vamos a editar app/code/local/NuestraEmpresa/nuestroPlugin/etc/config.xml, en nuestro ejemplo app/code/local/Poesia/HolaMundo/etc/config.xml para indicar que vamos a crear modelos y las conexiones de base de datos que se deben utilizar para el acceso. He pegado el archivo entero, pero indico con un comentario las novedades:
<?xmlversion="1.0"encoding="UTF-8"?> <!-- Opcionalmente podemos poner un comentario contando qué hace nuestro módulo, nuestra web, información sobre la licencia, etc --> <config> <modules> <Poesia_HolaMundo><!-- namespace_modulo -->
<!-- Esta es la versión de nuestro módulo --> <version>0.0.1</version>
</Poesia_HolaMundo> </modules>
<frontend> <!-- Lo que necesitamos para utilizar los controladores --> <routers> <holaMundo> <use>standard</use> <args> <module>Poesia_HolaMundo</module> <frontName>hm</frontName> </args> </holaMundo> </routers> <!-- Lo que necesitamos para utilizar los controladores --> <!-- Lo que necesitamos para el layout y las plantillas --> <layout> <updates> <holamundo> <file>poesia.xml</file> </holamundo> </updates> </layout> <!-- Lo que necesitamos para el layout y las plantillas --> </frontend> <!-- Necesario para informar a Magento sobre nuestro modelo --> <global> <models> <holamundo> <class>Poesia_Holamundo_Model</class> <resourceModel>holamundo_resource</resourceModel> </holamundo> <holamundo_resource> <class>Poesia_HolaMundo_Model_Resource</class> <entities> <pventamod> <table>poesia_postvtable</table> </pventamod> </entities> </holamundo_resource> </models> <resources> <holamundo_setup> <setup> <module>Poesia_HolaMundo</module> </setup> <connection> <use>core_setup</use> </connection> </holamundo_setup> <holamundo_write> <connection> <use>core_write</use> </connection> </holamundo_write> <holamundo_read> <connection> <use>core_read</use> </connection> </holamundo_read> </resources>
</global> <!-- Necesario para informar a Magento sobre nuestro modelo --> </config>
Ahora creamos el modelo (le intento dar a todo nombres diferentes para que veamos qué es cada cosa).… Leer artículo completo
Es algo que me ha pasado estos días al exportar un archivo CSV de una base de datos (por ejemplo con este método). Era un CSV de unas 3000 filas y algunas de ellas tenían textos entre comillas en una de sus columnas.
El problema es que al abrirlo con LibreOffice Calc (tengo entendido que con WPS Office también pasaba), aquellas columnas que tenían textos entre comillas no salían bien y terminaban cortándose y dividiéndose.… Leer artículo completo
Foto: Eirik Stavelin (Flickr CC-by) A menudo, nuestros programas necesitan almacenar información (temporal o no) de forma ordenada, rápida y que no nos complique la vida. Luego también necesitamos poder acceder a ella con la misma facilidad. Para eso vale SQLite. Tendremos un pequeño motor de base de datos que con sólo un par de archivos (.h y .c) más un archivo de datos lo tendremos todo listo.
Una pequeña introducción
SQLite nos proporciona una forma muy sencilla de introducir y eliminar información (si estamos familiarizados con el lenguaje SQL) sin las complicaciones de tener un motor de base de datos corriendo (MySQL, MariaDB, PostreSQL, MSSQL…).… Leer artículo completo
Ahora quiero hacer cosas un poco más complejas (y alguna que otra sencilla, pero curiosa), en una nueva sección de códigos para copiar y pegar en vuestros terminales:
Servidores
Montar un servidor FTP rápido
Ésta es una solución para un apaño, para el caso en que necesitemos activar un servidor FTP para pasar un fichero a alguien, o para que nos pasen algún fichero… o por ejemplo por si queremos instalar un plugin en WordPress rápidamente y somos unos paranoicos de la seguridad (y por tanto no queremos dejar un servidor FTP corriendo siempre).… Leer artículo completo
Muchas veces cuando trabajamos con WordPress hacemos uso directamente de algún plugin, dentro de la infinidad de ellos que tenemos disponible, lo cual está muy bien pero a veces nos despegamos un poco de los orígenes. MySQL está hecho para usar MySQL (o MariaDB), hace consultas como todos los demás y ¡podemos aprovecharnos de ello! (e ir mucho más rápido).
Antes de nada, he supuesto que el prefijo de las tablas es el que viene por defecto: «wp_«, si no es así, cámbialo por el que tengas.… Leer artículo completo
Magento es un software hecho en PHP para gestión integral de e-commerce. [Link a wikipedia]. Existen una versión comercial y una versión open, llamada Community Edition, y es esta última con la que vamos a experimentar.
Hay miles de guías por Internet para instalar Magento. Esta no pretende ser la más completa, pero sí una chuleta rápida para mis futuras instalaciones y experimentos. Aunque me alegraré mucho si a alguien le resulta útil.… Leer artículo completo
Hace mucho tiempo que quería escribir sobre esto. Y aunque es recomendable no abusar de los bucles en MySQL, es más, a veces no son necesarios, y siempre hay que buscar una solución que no los use, a veces no la vamos a encontrar y será en esos casos cuando debamos utilizarlos.
Veamos un bucle muy sencillo, parecido a un for de los de toda la vida, en el que contamos del 1 al 9:
+———+ | counter | +———+ | 1 | +———+ 1 row in set (0.01 sec)
+———+ | counter | +———+ | 2 | +———+ 1 row in set (0.01 sec)
+———+ | counter | +———+ | 3 | +———+ 1 row in set (0.01 sec)
+———+ | counter | +———+ | 4 | +———+ 1 row in set (0.01 sec)
+———+ | counter | +———+ | 5 | +———+ 1 row in set (0.01 sec)+———+ | counter | +———+ | 6 | +———+ 1 row in set (0.01 sec)
+———+ | counter | +———+ | 7 | +———+ 1 row in set (0.01 sec)
+———+ | counter | +———+ | 8 | +———+ 1 row in set (0.01 sec)
+———+ | counter | +———+ | 9 | +———+ 1 row in set (0.01 sec)
Query OK, 0 rows affected (0.01 sec)
Vemos que el código que iteraremos está entre LOOP…END LOOP, lo que aparece justo antes (my_loop) es una etiqueta para nombrar ese bucle.… Leer artículo completo
Imaginémonos un programa que almacena periódicamente valores en una base de datos, dichos valores pueden ser temperatura, humedad, uso de CPU, voltaje, corriente, intensidad de luz, etc. En definitiva, parámetros que varían con el tiempo, con la característica de que, dos muestras seguidas pueden ser iguales, y no nos interesaría obtenerlas, pero tras una variación sí que nos interesaría volver a ver el mismo valor. Por ejemplo, en una tabla de uno de CPU vemos:
Id
Date
CPU Use
1
5-jun-2013 10:44:20
56%
2
5-jun-2013 10:45:50
57%
3
5-jun-2013 10:47:20
57%
4
5-jun-2013 10:48:50
57%
5
5-jun-2013 10:50:20
58%
6
5-jun-2013 10:51:50
58%
7
5-jun-2013 10:53:20
56%
8
5-jun-2013 10:54:50
55%
9
5-jun-2013 10:56:20
56%
10
5-jun-2013 10:57:50
56%
11
5-jun-2013 10:58:20
59%
12
5-jun-2013 11:00:50
59%
Cuando en realidad lo que nos interesaría ver es:
Id
Date
CPU Use
1
5-jun-2013 10:44:20
56%
2
5-jun-2013 10:45:50
57%
5
5-jun-2013 10:50:20
58%
7
5-jun-2013 10:53:20
56%
8
5-jun-2013 10:54:50
55%
9
5-jun-2013 10:56:20
56%
11
5-jun-2013 10:58:20
59%
Por tanto tenemos dos formas de abordar el tema:
Evitando introducir valores repetidos
Para ello, bastaría con introducir un trigger en la base de datos asociado a la introducción de los valores en dicha tabla.… Leer artículo completo
Si te ha gustado el sitio, te ha resultado útil o simplemente quieres colaborar con el sitio para que siga compartiendo contenidos, invítame a un café, una pizza, una ensalada, o lo que se te ocurra.Te lo agradeceré eternamente :)
¡Atención! Este sitio utiliza cookies propias y de terceros para mejorar la experiencia de usuario, Si continúa la navegación en el sitio, asumo que estás de acuerdo con esto, aunque siempre puedes desactivar las cookies en tu navegador. AceptarLeer más
Últimos comentarios