When a good server goes to war…

Daemons run when a server goes to war
Night will fall and drown the sun
When a good server goes to war

Friendship dies and true users lies
Night will fall and the dark screen will rise
When a good server goes to war

Daemons run, but count($the_total) cost
The battle’s won, but the child procces is lost.

Perversión amorosa del original en Doctor Who.

Con diez cañones por banda…

En el anterior post puse meme sobre los punteros que imitaba una famosa grabación de Bruce Lee. Durante los cinco segundos que dedique a mirar en Google al respecto, encontré otra perla, y no desmerece a la anterior.

//BenKo – demasiada Cafeína

#include
using namespace pirates;

void pirate_song()
{

Ship.AddCannons(10);
Ship.AddCannons(10);
Wind.Blow(”stern”,”maximum”);
Ship.CutSea(false); Ship.Fly(true);
Ship.Type(”Velero bergantín”);
//…

}

De este tampoco puedo verificar su autoría, pero lo que si puedo deciros es que lo leí en Frikis&Geeks.

Be a pointer my friend

Mientras programo, escribo, estudio e intento adaptarme amorosamente a desarrollar en Unity3D, no puedo evitar acordarme de mis queridos punteros. Hace unos años me lo comentó un compañero de clase, dice que lo vio en una camiseta… Definitivamente creo que intentaré comprarme una xD.

Be a pointer my friend

Empty your memory,
with a free()…
like a pointer!

If you cast a pointer to a integer,
it becomes the integer,
if you cast a pointer to a struct,
it becomes to a struct.
The pointer can crash…
and can Overflow.

Be a pointer my friend

Parece que es algo viejo, no puedo atribuirle una fuente y está en un montón de páginas, incluso ha circulado por email, así que si alguien se aventura a buscar por la red…

En casa del programador, web de corchopán

Ocurre a menudo, uno acaba tan harto o cansado de sus labores habituales que acaba descuidando aquellas aficiones que tienen que ver vagamente con su trabajo. En el caso de las páginas web a cargo de informáticos, personales o no, es habitual.

Es divertido ver como esto ocurre Incluso en el entorno laboral. Titanes como Mercury Steam Entertainment (creadores del último Castlevania Lord of Shadows) o Novarama Technologies SL (creadores de la saga Invizimals bajo el auspicio de Sony) mantienen páginas con un aspecto absolutamente anacrónico, muy lejos de sus posibilidades y su talento real.

La web de Mercurysteam, bienvenidos a 1995

Sin dármelas de nada y aunque en grados de separación estoy a un par de rizos de Daniel Sánchez-Crespo, esta página personal poco o nada tiene que ver con arriba citadas. Solo un detalle nos acerca, esta página ha sido descuidada durante meses, casi años. Los menos desmemoriados, o puede que los más cercanos, tal vez recuerden mi paso por blogger o el anterior diseño oscuro de la web. Decidido a darle algo de vidilla y a retomar el espíritu con el que la comencé he cambiado el diseño de la página.

Los más avispados habrán notado las carencias respecto otras páginas de índole similar. En el presente diseño no existe ninguna barra lateral. La razón fue darme cuenta de que la tendencia de los administradores y diseñadores a poner publicidad o enlaces poco relevantes ha hecho que los usuarios los ignoren, cual bloque publicitario en televisión. Esto significa tener un bloque de al menos 200px2, puede que 300px2, de contenido interesante o no pero a todas luces muerto. A sabiendas de este detalle en VideoShock se optó por retirar prácticamente todo el contenido superfluo del lateral y dejar únicamente el acceso al contenido generado por los propios usuarios. Aquí podría haber hecho lo mismo, ¿realmente podría? no creo que sirviese de mucho.

Otro de los cambios en mi enfoque sobre esta web fue darme cuenta de una perugrollada, estoy manteniendo una página personal. Esto no es un portafolio virtual de mi trabajo y si lo fuese el contenido superfluo distraería. No estoy creando un portal y tampoco una comunidad así que tampoco tiene sentido intentar fomentar los comentarios, de hecho, en gran medida considero que esa batalla está perdida.

Alguien podrá pensar que es algo raro que ni siquiera haya implementado una pequeña sección de enlaces. Bueno, con perdón, no creé esta página para que me diese dinero ni tampoco para comerle el pito virtualmente hablando a nadie. Para bien o para mal el protagonista soy yo. Puede que en algún momento me enajene y ponga algún listado en el pie de página… o puede que no. ¿Preguntas, respuestas? Me lo imaginaba.

En cualquier caso bienvenidos a esta nueva etapa de mi aventura digital personal.

Minicrítica de Marvel vs Capcom 3

Versión compleja:

int main(){
euros ganancias= 0; ganancias= sacacuartos(MvsC);
return ganancias;
}

int sacacuartos(int MvsC_Parte){
int IndignacionPop=0; IndignacionPop= Publico() – (MvsC_Parte*100); DLCNum=0;
While (MvsC_Parte > 0 & DLCNum < IndignacionPop)
{ DLC++; }
return Vende(MvsC_Parte+1,DLC);
}

Versión sencilla:

MavelVsCapcom3=MavelVsCapcom2+1

WordPress corta las entradas por RSS si usamos nextpage (paginación) en una entrada

No hace demasiado tiempo tuvimos que añadir la posibilidad de cortar en varias páginas las entradas de VideoShock, Ramón está acostumbrado a las kilométricas entradas recopilatorias de su propio blog y lo cierto es que no están nada mal, así que raudo corrí a dejar el tag (etiqueta) que lo permite más a la vista. Esta función viene integrada de serie en WordPress pero por razones de espacio fue relegada a un segundo plano, incluso perdió el botón hace ya algún tiempo.

Como soy bastante vago para según que cosas (en general en todas las que me dejan y no me pagan) hace tiempo que instalé el plugin AddThisTag que permite añadir fácilmente cualquier tipo de etiqueta o cualquier texto/código que necesitemos como un botón del editor de texto en WordPress.

Feliz y tranquilo me fui de casa convencido de que las entradas programadas se verían correctamente, y así fue hasta que para mi horror comprobé que en el Feed RSS (la suscripción) el artículo aparecía cortado por la primera página… Afortunadamente, cuando se escribió el artículo aun no se había añadido al tema la función que permite mostrar los enlaces o los números para navegar por una misma entrada, así que había quedado como legado un enlace indicando la existencia de una segunda página.

Al llegar a casa busqué información al respecto, siempre cabe la posibilidad de que algún plugin (programa de extensión) del propio WordPress estuviese fastidiando el Feed, incluso alguno de los propios o los modificados. Para mi sorpresa resultó ser un bug (fallo) conocido de WordPress, tal como pude leer en este hilo del trac de WordPress (Sistema de catalogación y seguimiento de errores). Aparentemente el fallo ocurre desde la versión de WordPress 2.8.4, en caso de estar activo el feed completo e incluirse la etiqueta <!–nextpage–> en el contenido para dividir la entrada en páginas se corta el feed desde ese punto.

La prioridad está marcada como normal, sin embargo, la existencia de un parche que arregla el problema y cierta controversia sobre el método para resolverlo han retrasado su corrección. Aparentemente algunos opinan que se debería incluir un enlace al texto completo, por el contrario otros creen que ha mostrar el texto completo, para lo cual la función get_the_content necesita obviar los cortes para páginas.

Mientras todo se arregla podéis implementar alguna de las soluciones modificando los archivos del propio WordPress, el problema es que en cada actualización tendréis que volver a repetirlo. Una solución más cómoda es el plugin que han añadido al final del trac. El código es el siguiente:

<?php
/*
Plugin Name: Full Text Feeds
Plugin URI: http://simonwheatley.co.uk/wordpress/full-text-feeds
Description: Fixes a bug in WP's feeds whereby they are only served with the first page.
Version: 1.1
Author: Simon Wheatley
Author URI: http://simonwheatley.co.uk/
*/

function ftf_full_text_for_feeds( $content ) {
	if ( ! is_feed() )
		return $content;
	global $post;
	$content = $post->post_content;
	return $content;
}

add_filter( 'the_content', 'ftf_full_text_for_feeds', -100 );

?>

Únicamente es necesario copiar el texto en un archivo, guardarlo bajo la extensión .php y subirlo al directorio /wp-content/plugins/ dentro de la carpeta de WordPress, al menos hasta que lo solucionen de forma oficial.

Network with Letters

Hace poco, John Knottenbelt uno de los directores de mi querida Introversion, responsable de los ports a Linux y Mac de sus juegos, realizó un interesante artículo en el que exponía los problemas y soluciones que encontraron al diseñar su arquitectura de cliente-servidor y el ciclo de juego de Multiwinia.

Siempre es interesante observar las vicisitudes y soluciones que puede encontrar un desarrollador en su trabajo. Resumiéndolo mucho, los principales problemas eran el coste de ancho de banda, y el tiempo de proceso de datos.

El envío de datos procesados en la máquina cliente al servidor podía ser demasiado costoso, de modo que en vez de procesar eventos en el cliente y enviar los datos al servidor para que sean distribuidos, los datos de entrada/eventos fueron enviados directamente al servidor, que procesaba los eventos para enviarlos a todos los clientes.

MainGameLoop()
{
while(!GameOver()) {
ProcessInput(); /*Recoge los datos de entrada y los envía al Servidor
ProcessEvents(); /*Procesa los datos que recibe del servidor
Render(); /*Muestra los cambios en el entorno
}
}

Imagino que para aquellos familiarizados con la programación cliente-servidor no debe ser algo nuevo, pero, más allá de las clases de la universidad no había visto nada similar, y menos aun orientado al desarrollo de juegos.

Otro punto interesante son los inconvenientes, que los tiene. Este sistema necesita recuperar todos los eventos desde el inicio del juego, para poder recrear un mapa y sus unidades, por ejemplo, cuando un nuevo jugador entra.

Es interesante, así que posiblemente le acabé echando un ojo a un libro sobre RTS, tanto diseño como programación, que ha caído en mis manos hace poco.

En cierto modo me recuerda a las viejas partidas de ajedrez por e-mail/carta. Aunque se aproxima de un modo más exacto a una partida de rol tradicional, donde el narrador(servidor), recoge las interacciones de los jugadores (clientes), para servir los cambios del entorno y la resolución de situaciones, que son enviadas de vuelta a los jugadores para que vuelvan a decidir. Curioso. Las ideas más simples son las más potentes 😉