SpiderOak, la alternativa real a Dropbox. Código promocional

Han sido muchas las alternativas que he probado, y no es que no esté contento con Dropbox, de hecho me parece un gran sistema, es rápido, sencillo y multiplataforma. Pero el espacio disponible y el precio por mes en el servicio de pago merecen una revisión por parte de sus creadores, un poco excesivo en los tiempos que corren. SpiderOak es una clara alternativa a este archiconocido sistema de backup y sincronización.

Hablamos hace tiempo sobre Ubuntu One, pero después de un tiempo usándolo, no me resulta práctico, y encima la cantidad de espacio free es mucho menor. Con lo que hace unos días lo eliminé definitivamente de mi sistema.

La opción real que he encontrado ha sido SpiderOak, una aplicación multiplataforma, con bastante espacio gratuito (de 5GB a 50GB**, abajo os explico como conseguirlo), bástante rápido y versátil.

Leer más » 8 Comentarios

Manejar la papelera de reciclaje por línea de comandos. Instalar trash-cli

Los que me seguís, ya sabréis de mi debilidad por intentar hacer las cosas de forma remota, preferencia por SSH y sin ningún servidor X, en cuyo caso el uso del terminal se hace necesario. Hace unos días os contaba cómo controlar el estado de la batería desde un terminal. y hoy haremos lo propio para manejar la papelera de reciclaje (trash).

La localización de la papelera en la versión antigua de Gnome se encuentra en ~/.Trash, y en las versiones recientes en ~/.local/share/Trash. Ahí, podemos encontrar dos subdirectorios llamados files e info. El directorio files contiene los archivos eliminados, mientras que info tiene los metadatos de los archivos eliminados.

Igual os puede resultar un poco engorroso acceder a éstos y hacerlo desde ahí, es por ello que os presento una utilidad llamada trash-cli, en la que podemos manejar de forma sencilla la papelera de nuestro sistema desde la línea de comandos.

Para instalar trash-cli en Ubuntu

Leer más » 5 Comentarios

Curso ADO.NET con Mono y MySQL – Creación del proyecto

Nos dirigimos a MonoDevelop y creamos una solución nueva, en C#, para consola. Elegís el nombre, el que le he puesto para el ejemplo es: ejemplo_mono_ado. Os aparecerá en pantalla un fichero de nombre: Main.cs junto a un árbol a la izquierda con características de la solución. Una de ellas, las referencias es donde importaremos el ensamblado.

Antes de seguir sería conveniente que copiarais al directorio del proyecto el fichero “mysql.data.dll” que venía dentro del paquete comprimido del conector. Os dirigís a referencias y haciendo clic sobre el mismo título “Referencias”, elegís “Editar referencias…”. De las tres pestañas que aparecen en el diálogo elegís “Ensamblado .NET” y os dirigís al directorio del proyecto o donde tengáis guardado el fichero. Lo elegís y lo añadís.

Aspecto interfaz MonoDevelop

Leer más » 6 Comentarios

Karoshi en HTML y Javascript

Cada vez más los juegos se están pasando de Flash a la tecnología HTML y Javascript. Ya publiqué en su momento juegos como Biolab Disaster o un juego propio, como Milokoban.

El juego que presento hoy es Karoshi HTML5, donde el objetivo del juego es suicidarse en vez de sobrevivir. El juego está desarrollado con la herramienta Game Maker HTML5, si bien no es libre sí que permite desarrollar juegos con la tecnología HTML y Javascript.

Enlace: Karoshi HTML5.

Leer más » 2 Comentarios

Combina y comprime todos los ficheros CSS y JS para optimizar WordPress con WP Minify

Cada vez que accedemos a una web, independientemente del CMS que usemos (como si no usamos ninguno), el navegador empieza la descarga del sitio en HTML y todo lo que trae consigo (principalmente imágenes, hojas de estilo y ficheros de script del lado del cliente como JavaScript) mediante protocolo HTTP.

¿Qué problema tiene HTTP? Para cada petición de este tipo, abre y cierra la conexión. ¿Eso qué conlleva? Un aumento del tiempo de transferencia.

Como se puede observar, el problema en parte es abordable ya que aunque no podemos (por ahora) reunir todas las imágenes en una sola transmisión, sí que es cierto que podemos hacer que si tenemos 4 ficheros de hojas de estilo CSS y 10 ficheros JavaScript que cargar; podemos limitarnos a enviar un sólo fichero de cada tipo al navegador. El resultado no cambia y aceleramos el proceso.

Si usamos WordPress, podemos instalar WP Minify para que automatice este proceso por nosotros y nos olvidemos, junto con otra mejora, comprime ambos ficheros resultantes lo que lleva a una mejora mayor aún de la ya comentada.

Podéis ver el efecto de usarlo en las capturas siguientes:

WP Minify antes y después

Leer más » 2 Comentarios

Fin

Leer más » 7 Comentarios

Paso por valor y paso por referencia con PHP

Si el otro día hablábamos de la facilidad de usar índices negativos en arrays a través PHP, hoy traemos otra receta para cocinar el paso por valor y el paso por referencia, algo que en algunos lenguajes, como C, es de vital importancia, y que en el caso de PHP nos puede servir de gran ayuda.

Para ilustrar claramente la diferencia entre paso por valor y paso por referencia en una función en PHP, vamos a usar un pequeño script. Prestemos especial atención a las llamadas sumarPorValor() y sumarPorReferencia(), que de entrada vemos como la definición de ambas es similar.

<?php

// Declaramos las funciones

function sumarPorValor($suma, $a, $b) {
  $suma = $a + $b
}

Leer más » 2 Comentarios

Lo mejor de mi RSS del 17 al 23 de octubre

Leer más » 1 Comentario

Indices negativos en un vector con PHP

En la mayoría de los lenguajes de programación de alto y bajo nivel, acceder a un elemento de un vector a través de un índice menor que cero implica acceder a una dirección de memoria que no hemos reservado, y en consecuencia almacenar en un lugar dónde no protegemos el contenido desde el mismo programa.

Para poder usar un índice negativo en el lenguaje C tendremos que declarar otro puntero auxiliar que acceda al espacio de memoria reservado por el anterior para que los menores que cero en ese rango sean equivalentes a sus análogos positivos. El código que ejemplifica este caso:

int a[10] = { /* lo inicializamos a lo que queramos */ };
int *b;
int i;
b = a + 10; /* aquí entra en juego el puntero auxiliar */
for (i = -10; i < 0; i++) {
int x = b[i];
}

Sencillo de entender, pero en PHP la cosa se simplifica con poder usarlo como si de un elemento ubicado en la zona positiva se tratase

Leer más » 3 Comentarios

Curso ADO.NET con Mono y MySQL – Preparación e instalación

Pasado más de un mes desde la entrada que anunciaba este curso, volvemos a la carga, veamos.

Antes de nada, de forma básica, vamos a revisar qué necesitamos, cómo obtenerlo y en caso necesario, cómo configurarlo. En este momento ,creo conveniente señalar que utilizaremos MonoDevelop,el entorno de desarrollo integrado para Mono más popular, en lugar de utilizar directamente el compilador, mcs; para centrarnos directamente en el desarrollo con ADO y dejar de lado los detalles que no son necesarios.

Logo MonoDevelop

Mono y MonoDevelop

En función de la distribución que utilicéis, las circunstancias particulares cambiaran, pero básicamente os comento dos alternativas que probablemente os sirvan prácticamente a todos. La primera es dirigiros a vuestro gestor de paquetes y buscar los paquetes correspondientes. Como monodevelop, que será más o menos así el nombre del paquete, depende de Mono, si elegís éste se os seleccionaran los demás paquetes necesarios para desarrollar y ejecutar programas con Mono. Es decir, básicamente instalando MonoDevelop a través del paquete homónimo, tendréis todo preparado. Además, es más que probable que tengáis instalado Mono en vuestro equipo por defecto. Por ejemplo, el entorno de escritorio Gnome utiliza esta tecnología ampliamente.

Leer más » 8 Comentarios