Cracker para el Pinball 3D de Windows (Cadete del Espacio) – Cómo Modificar los Puntajes

Todo el mundo conoce el juego de Pinball que apareció con el Windows 95 Plus!… Todavía está en las versiones actuales de Windows…

Pinball_Cracker_Game

A pesar de que pueda parecer increíble, todavía hay unos cuántos fanáticos de este juego…

Hice este programa en 1999 (hace un tiempito 8-)) para poder modificar los puntajes máximos guardados y lograr así que esos fanáticos crean que les ganamos…

Pinball_Cracker_Game_High_Scores

(Es recomendable ser un poco más sutil que yo)

Seguir leyendo…

Convertir de Celsius a Fahrenheit Online

Debido a que estuve bastantes visitas en mi versión wxWidgets del conversor de Celsius a Fahrenheit, decidí preparar una versión online que permita realizar fácilmente la conversión.

Celsius:
Fahrenheit:



GNU GPL v3 Convert Celsius to Fahrenheit Online está liberado bajo la licencia GNU GPL v3

Acá está el código fuente completo:

<script type="text/javascript">
// *****************************************************************************
// Description: Convertir de Celsius a Fahrenheit Online by NeoEGM
// Author: Ezequiel Miravalles
// Last modification: 16/08/2009
// URL: http://www.neoegm.com/es/tech/online-tools/convert-celsius-to-fahrenheit-online/
// *****************************************************************************

/*******************************************************************************
	Copyright (C) 2009 Ezequiel Gastón Miravalles

	This program is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with this program.  If not, see <http://www.gnu.org/licenses/>.
*******************************************************************************/

function isNumber(x)
{ 
  return ( (typeof x === typeof 1) && (null !== x) && isFinite(x) );	//From http://snippets.dzone.com/posts/show/6937
}

function Round(number, digits)
{
	return Math.round(number * Math.pow(10,digits)) / Math.pow(10, digits);
}

function CelsiusToFahrenheit(celsius, fahrenheit)
{
	var num = celsius.value;
	
	if (num == "" || !isNumber(Number(num)))
		alert("Por favor ingresar un número");
	else
		fahrenheit.value=Round((9/5)*num+32, 2);
}

function FahrenheitToCelsius(fahrenheit, celsius)
{
	var num = fahrenheit.value;
	
	if (num == "" || !isNumber(Number(num)))
		alert("Por favor ingresar un número");
	else
		celsius.value=Round((5/9)*(num-32), 2);
}
</script>

<table>
<tr>
<td>Celsius:</td>
<td><input type="text" name="celsius_field" id="celsius_field" style="width:100px" /></td>
<td><input type="button" value="A Fahrenheit" onclick="CelsiusToFahrenheit($('celsius_field'), $('fahrenheit_field'))" /></td>
</tr>
<tr>
<td>Fahrenheit:</td>
<td><input type="text" name="fahrenheit_field" id="fahrenheit_field" style="width:100px" /></td>
<td><input type="button" value="A Celsius" onclick="FahrenheitToCelsius($('fahrenheit_field'), $('celsius_field'))" /></td>
</tr>
</table>

Cappuccino La Virginia – Día del Amigo

Estos son dos spots publicitarios muy graciosos de Argentina hechos por La Virginia para sus capucchinos en el día del amigo del 2008…

Mover el Recuadro de Eventos de Facebook hacia Arriba

Facebook tiene algunas funcionalidades muy interesantes… Una de ellas es la posibilidad de tener un recordatorio de los cumpleaños de tus amigos y de los eventos a los que te suscribiste…

Pero (siempre hay un pero 8-))… No están en un lugar muy cómodo…

Así que… Decidí hacer un script para moverlos a arriba de todo :)

FacebookEventsToTop

¿¿Cómo lo instalo??

¿Cómo Doblar Una Remera? (9 Técnicas)

Estos son algunos videos que encontré (algunos tienen ya un tiempo) que te enseñan cómo doblar una remera de diferentes (y, en algunos casos, interesantes) formas…

El primero de todos me lo pasaron hace ya un año…

A veces me sorprenden las cosas que se pueden encontrar en Internet…


Técnica 1

Este es el video original que comenzó con toda la serie de videos de doblado de remeras: “Cómo Doblar Una Remera en 2 Segundos”…

Ver los otros videos… Hay varias técnicas!

Qué pasa cuando se quita el disipador de una CPU?

Este es un video muy bueno que vi hace ya algún tiempo. Creo que me lo mandó Fepe. Es de Tom’s Hardware Guide.

Muestra qué le pasa a diferentes CPUs cuando se les quita el disipador.

Ver la secuela…

Ilusión Óptica – Silueta Que Gira

Esta es una imagen muy interesante que recibí hace mucho tiempo en un e-mail. Estuve buscando un poco, pero no pude encontrar al creador original.

Lo que tiene de especial esta animación es que, cuando la ves por primera vez, va a estar girando en el sentido de las agujas del reloj o en el opuesto, pero si seguís mirando, vas a verla rotando hacia el lado opuesto o hasta rebotando entre los lados (semi-círculos), tanto mirando para adelante como para atrás.

Es un buen ejercicio a practicar.

Office Document Property Resetter (Reseteador de propiedades de archivos de Office)

Este es un programa que hice hace dos años para solucionar un problema que tenía un amigo mío. Él tenía en su trabajo un grupo de archivos de Word y Excel creados en diferentes computadoras y quería limpiar sus propiedades para que no mostraran el Autor/Tïtulo/Tema/etc. que estaban configurados…

Office_Document_Property_Resetter_DOC_Prop_1

Este habría sido un problema simple de resolver si hubieran sido unos pocos archivos… Podrían haberse limpiado manualmente…

Office_Document_Property_Resetter_Word_Menu

Office_Document_Property_Resetter_Word_Prop_1

Pero había muchísimos!

Así que… Hice este programa :)

Office_Document_Property_Resetter_Main

Seguir leyendo…

Clase String simple para C++

Todo programador de C++ sabe que la librería standard tiene una clase string. Pero, mientras se está aprendiendo, es una buena idea saber cómo poder desarrollar tu propia clase string.

Esa es la razón por la que hice la clase String. No está pensada para proyectos profesionales (para ellos, deberías utilizar la string de la librería standard), sino como una ayuda para aprender C++.

class String
{
	char *m_pszString;	//Allocated buffer
	int m_nAllocated;	//Allocated length

public:
	//Construction and destruction
	String() { /* ... */ }
	~String() { /* ... */ }

	//Copy constructors
	String(const char *pszString) { /* ... */ }
	String(const String& rsString) { /* ... */ }

	//Operators (assignment)
	String& operator=(const char *pszString);
	String& operator=(const String& rsString) { /* ... */ }

	//Operators (concatenation)
	String& operator+=(const char *pszString);
	String& operator+=(String& rsString) { /* ... */ }
	String operator+(String rsString);

	//Operators (comparison)
	bool operator<(String sString) { /* ... */ }
	bool operator<=(String sString) { /* ... */ }

	bool operator>(String sString) { /* ... */ }
	bool operator>=(String sString) { /* ... */ }

	bool operator==(String sString) { /* ... */ }
	bool operator!=(String sString) { /* ... */ }

	//Operations
	void Clear();
	String Lower() { /* ... */ }
	String Upper() { /* ... */ }

	//Information
	int Length() { /* ... */ }

	//Cast operators
	operator const char*() { /* ... */ }

protected:	//Helper functions
	/* ... */
};

//Output e input
std::ostream& operator<<(std::ostream& oStream, String& rsString);
std::istream& operator>>(std::istream& iStream, String& rsString);

Seguir leyendo…

cppMemDbg – Librería fácil de usar de detección de fugas de memoria para C++

Esta librería es la secuela para C++ de cMemDbg.

Tal como cMemDbg, es una librería muy fácil de usar que sirve para ayudar a detectar y trazar fugas de memoria (memory leaks).

Su utilización es muy similar a la cMemDbg, pero con soporte para los operadores de C++ (new, new[], delete and delete[]).

Hay muchas soluciones para esto en la red, pero esta tiene la particularidad de ser realmente simple de implementar.

>new  003D26D8  36  [Main.cpp:127]
>new  003D2708  36  [Main.cpp:128]
>ERROR  Bad free type  free => delete  003D2708  36
(Main.cpp:128)
>free  003D2708  36  (Main.cpp:128)  [Main.cpp:129]
>free  003D2708  0    [Main.cpp:130]
>ERROR  Trying to free unallocated memory: 003D2708
[Main.cpp:130]
>delete[]  003D3EB0  7  (String.cpp:59)  [String.h:41]
[...]
>delete[]  003D24F0  4  (String.cpp:59)  [String.h:41]
>delete  003D2490  40  (Lista.h:120)  [Lista.h:112]
>INFO  PROBLEM: Memory leak found (36 bytes)
>INFO  Unfreed block  003D26D8  36    [Main.cpp:127]

Keep reading…