martes, 18 de septiembre de 2007

Subst++

Una funcionalidad de Windows (y DOS!) poco conocida es el comando subst, que permite asignarle una letra de unidad a un path. De ese modo, por ejemplo, subst X: "C:\Documents and Settings\user\Mis Documentos\Visual Studio 2005\Projects\" permite acceder a lso proyectos de Visual Studio como si estuvieran en el directorio raíz de una unidad con la letra X. Esto lo vi por primera vez en el sitio de Poco, un framework de red para C++.

Hablando ahora de algo completamente diferente, una imagen interesante de la Segunda Guerra: cuando retiran la bandera del portaaviones japonés Zuikaku (uno de los que había participado en el ataque a Pearl Harbor), antes de que se hunda. Para el momento en que se sacó esa foto, ya era bastante notable la inclinación de la cubierta debido al ingreso de agua (escora para los que conocen terminología náutica :-). Quince minutos después, la mitad de los tripulantes (más de ochocientos) murió cuando, finalmente, el portaaviones se dio vuelta y hundió.

Siguiendo con temas náuticos, este el motor diesel más grande del mundo, con 108,920 hp de potencia. Tiene una eficiencia de más del 50% en su régimen óptimo, ampliamente mayor que la eficiencia de los motores de automóvil que suele estar alrededor de 20%. Esta diferencia está dada fundamentalmente por la operación en un régimen menos variable, y las menores pérdidas de calor debido a la escala del motor.

domingo, 16 de septiembre de 2007

"Dar vuelta" una esfera

Acabo de ver un video muy interesante sobre como dar vuelta una esfera, o sea intercambiar su cara interior con la exterior.

Puede verse en:

http://video.google.com/videoplay?docid=-6626464599825291409

domingo, 9 de septiembre de 2007

Wikipedia en inglés: 2000000 de artículos

Hoy la versión en idioma inglés de Wikipedia superó los dos millones de artículos. A pesar de que ciertamente puede discutirse la calidad de algunos de los artículos, el hecho de que una enciclopedia basada en contribuciones de los usuarios funcione tan bien como lo hace es verdaderamente digno de destacarse.

Me enteré hace unos meses que existe una página destinada al mantenimiento de la infraestructura técnica de Wikipedia que, como podría suponerse, es bastante grande. Además es especialmente interesante por la apertura respecto al funcionamiento, que nos permite ver cosas que no podemos conocer respecto a Google, por ejemplo.

En curiosidades: ¿se imaginan un edificio sin ventanas? ¿O qué a principios del siglo XX Bayer vendía heroína para calmar la tos en chicos?

jueves, 6 de septiembre de 2007

Comentarios sobre una noticia

Estaba viendo esta noticia de Yahoo, proveniente de Infobae que supuestamente hablaba sobre "Diez misterios que la ciencia todavía no pudo develar". Debo admitir que, si bien no esperaba ver algo así como las de John Baez, no estaba preparado para ver la lista de estupideces que aparecían... O sea, ¿hay gente que cree en "Pie Grande" y en los fantasmas?

En fin, supongo que viendo la clase de cosas que se publican incluso en revistas de divulgación científica no debería extrañarme mucho. O sea, si los editores de una revista dedicada a divulgar el conocimiento científico no conocen la conservación de la cantidad de movimiento, que se puede esperar...

Es deprimente.

martes, 4 de septiembre de 2007

Promoción de enteros en C++

Un problema particularmente molesto me ocurrió ayer mientras programaba el sistema de evaluación de individuos de la tesis. Había escrito el siguiente fragmento de código:


for (int i = 0; i < reqs.size() - 1; i++)
std::cout << reqs[i].first.toString() << " - ";


cuya idea es, básicamente, imprimir todos los elementos de
reqs a excepción del último, para que no quede un guión colgando al final.

Al ejecutar el código, funcionaba bien en general; pero al probarlo con un vector vacío, fallaba con un error indicando acceso a una posición inexistente. Después de un tiempo de meditación (excesivamente largo!), pude darme cuenta de lo que originaba el problema. reqs.size() devuelve un tamaño del tipo size_t, que por lo general es un typedef de unsigned int. Al restarle uno, de acuerdo a las reglas de promoción, se le resta como si fuera una resta de unsigned ints, por lo que la resta actuaba en forma modular y terminaba tratando de acceder a la posición 232 - 1 (la que obviamente no existía en el vector).

En otro contexto completamente diferente, una tesis interesante de un graduado de la CMU en la que calcula, en base a un diseño concreto, el costo que tomaría absorber el dióxido de carbono de la atmósfera. Yo consideraba que era algo que debía ser completamente infactible, pero parece ser que podría hacerse por un costo de U$S 200 por tonelada de CO2. Obviamente es más costoso que secuestrarlo en una central térmica, pero podría ser una solución para la captura de fuentes distribuidas, como es el caso del transporte automotor en general.