Actualización de mantenimiento del script, que internamente incluye cambios de cara a las futuras releases que tengo planificadas.
Después de varios meses sin actualizaciones, por fin he tenido tiempo para actualizar un poco el script. En este tiempo parece que el número de interesados en él ha subido, lo que conjuntado con la buena recepción que ha tenido entre los miembros de EducaPoker y PokerMambo me alegra bastante.
Para esta actualización, y mientras preparo las siguientes, los cambios han ido en la línea de mejorar los puntos fuertes del script:
- Más hotkeys para rebuy, pasamos de 5 (4+1) a 13 (10+3)
- Soporte del idioma ESPAÑOL, para evitar a los jugadores la descarga del cliente de poker en inglés
- Reorganización de las opciones de configuración, pasando de 3 a 4 pestañas
- Hotkey para acceder al Lobby
- Nueva asignación de las hotkeys por defecto.
La actualización supone algunos cambios sobre el fichero de configuración (.ini) que acompaña al script. Así os propongo borrar el antiguo .ini y reconfigurarlo de nuevo.
A raíz de una conversación que he tenido en un foro, se me ha ocurrido pillar un script que había en el foro de 2+2 y modificarlo un poco para que funcione en PokerMambo y, ya de paso he añadido alguna cosita más. A ver si alquien me ayuda a testearlo. Eso sí, para no llevarnos sustos, recomiendo probarlo primero con dinero ficticio.
Usaré pg_dump para transferir “en bruto” la información de una base de datos PostgreSQL de una computadora a otra, si bien podría utilizarse para migrar de una base de datos a otra más nueva o mantener una copia de seguridad del estado actual.
Exportando la base de datos a un fichero .tar
C:\Archivos de programa\PostgreSQL\8.4\bin>pg_dump.exe -U postgres -Ft "hm" > "C:\dump.tar"
Importando la backup a otra base de datos (ya creada)
C:\Archivos de programa\PostgreSQL\8.4\pg_restore -d "hm" "C:\dump.tar"

Me he propuesto llevar a la práctica algunas ideas de aplicaciones para iPhone, razón por la cual he comenzado a buscar tutoriales o guías sobre Objective-C y Cocoa. utilizaré este artículo para enlazar y comentar los que vaya encontrando.
En primer lugar echaré una ojeada a Objetive-C, el lenguaje que usa oficialmente Apple para las interfaces de escritorio. Objective-C es un superconjunto estricto de C que añade un modelo de objetos parecido al de Smalltalk. Por tanto, si se tiene una buena base de C y de programación orientada a objetos no debería ser difícil de comprender.
El primer artículo que enlazo, “Learn Objective C [Cocoa Dev Central]“, dará una sencilla y rápida visión del nuevo lenguaje desde la perspectiva de un programador en C. Si además se dispone de conocimientos de C++ la guía “From C++ to Objective-C” (PDF) explica muy bien las diferencias y equivalencias entre ambos lenguajes.
De hecho, en general, CocoaDevCentral es una excelente referencia para todo lo relacionado con el desarrollo de aplicaciones en Mac OS.
Por otro lado, la Universidad de Stanford publicó hace algún tiempo el material de su curso de desarrollo de aplicaciones para iPhone, incluyendo los vídeos de todas las ponencias. Los vídeos se encuentran disponibles para su visionado y descarga en Youtube e iTunes U, con la ventaja en el caso de la segunda de disponer de subtítulos (en Youtube es posible activar la transcripción de audio, pero no siempre los subtítulos generados concuerdan con el discurso).
Un instancia QMenu contiene siempre un objeto QAction, aunque no lo hayas creado tú. Por esta razón si queremos ocultar un QMenu vacío no nos sirve llamar al método setHidden(true) (o a setVisible(false)) como normalmente harías.
- QMenu *editMenu = new QMenu();
- ....
- editMenu->clear();
- editMenu->menuAction()->setVisible(false);
Una solución menos elegante, y no sé si arriesgada, es destruir la instancia QAction dummy llamando a editMenu->removeAction(editMenu->menuAction());
Esqueleto de una clase en C++ que implementa el patrón Singleton; ésto es, una clase de la que sólo puede existir una instancia. Puede ser útil si se quiere que haya exactamente un objeto de la clase.
- //------------ APPLICATION.H
- #ifndef APPLICATION_H
- #define APPLICATION_H
- class Application
- {
- public:
- Application();
- static Application *getInstance();
- private:
- static Application *_application;
- };
- #endif // APPLICATION_H
- //------------ APPLICATION.CPP
- #include "application.h"
- // Inicializacion de los atributos estaticos
- Application *Application::_application = 0;
- Application::Application()
- {
- if(_application == this) {
- _application = 0;
- }
- }
- Application *Application::getInstance()
- {
- if(!_application) {
- _application = new Application();
- }
- return _application;
- }
Hoy he decidido resubir el material que había publicado en mi anterior página web, ya desaparecida. Como ejemplo, esta presentación que hice junto a mi compañero Samuel y que utilizamos para hablar sobre la web 3.0.
Por motivo de un viaje que realizaremos en los próximos días decidí darle una oportunidad a un nuevo servicio de trabajo colaborativo llamado Google Wave. Todo iba más o menos bien hasta que surgió la necesidad de imprimir el planning que habíamos elaborado. Ni había una opción para imprimir (!) ni servía la opción Imprimir del navegador (!). Seguramente sea algo que añadan en breve, de hecho sospecho que lo harán de una forma bastante novedosa.
Así pues, después de intentar varias estrategias (capturando la pantalla, copiando y pegando el contenido a un procesador de textos, etc) encontré una forma, algo rebuscada de exportar el wave sin perder el formato ni los mapas ya incrustados. ¿Cómo? Utilizando un bot (he aquí la novedad).
Vayamos al lío:
Solución 1: Bot de exportación a PDF
- Añade la siguiente dirección a tus contactos
pdf-wave@appspot.com - Incorpóralo como invitado al wave a exportar (por si las moscas puedes darle permiso de Sólo lectura)
- Automáticamente el bot añadirá un comentario a tu wave que contendrá el enlace a un PDF temporal con el contenido de tu wave
Solución 2: Bot que proporciona un objeto “embebido” para usar en tu página web
- Añade la siguiente dirección a tus contactos
embeddy@appspot.com - Incorpóralo como invitado al wave (por si las moscas puedes darle permiso de Sólo lectura)
- Automáticamente el bot añade a tu wave un cuadro con el código que tienes que añadir a la página web
- Creamos un archivo
.htmlcon el código que obtuvimos en el paso 3 - Visualizamos el archivo
- (Opcional) Si nos sigue mostrando el wave dentro de un marco, podemos cargar el submarco en una nueva pestaña (investiga cómo hacerlo en tu navegador)
- (Opcional) Imprime el Wave con tu navegador o saca una captura de la página web con un programa especializado (por ejemplo FastStone Capture)
Solución 3: Usar Waveboard
Si estás dispuesto a pagar por un cliente de Google Wave siempre te queda Waveboard. Eso sí, de momento sólo está disponible para MacOSX.
NOTA IMPORTANTE: No me he molestado en comprobar la seguridad de estos métodos. Lo que haga el bot con el contenido de tu wave es para mí una caja negra. En cualquier caso, sólo podrá acceder a ese wave.
A veces resulta imposible juntar en un mismo directorio dos archivos distintos simplemente porque sus nombres coinciden. En otras ocasiones el nombre del archivo puede ser significativo, pudiendo ayudarnos a identificar su contenido u a aplicar cierto orden.
Cuando son sólo dos los archivos lo lógico es renombrar uno de ellos sobre la marcha, pero si la cantidad de cambios es algo mayor (>6) posiblemente sea más rentable automatizar el proceso. La mayoría de sistemas operativos de escritorio incluyen, de una forma más o menos potente, algún mecanismo que nos permitirá hacerlo.
En Windows, por ejemplo, seleccionando varios archivos y pulsando F2 (o haciendo clic derecho y seleccionando “Cambiar nombre”) podemos asignar el nombre base de una secuencia. El primer archivo tendrá el nombre base y los siguientes recibirán un número secuencial: “nombre (1)”, “nombre (2)”, etc.
En los sistemas tipo Unix (*BSD, GNU/Linux, Mac) el terminal puede ser una herramienta muy útil si se sabe manejar. La mayoría de estos sistemas trae multitud de comandos para trabajar con ficheros y que pueden combinarse en un script para este propósito. Si dispones de un Mac, Automator puede ser también un gran aliado.
Sin embargo, ninguna de estas soluciones me convence, bien por exceso de complejidad, o bien por falta de ella. Por suerte -o desgracia- este problema es bastante común y existen bastantes herramientas gratuitas para trabajar con nuestros archivos, como por ejemplo:
- ReName (Linux, terminal)
- Name Changer (OSX)
- Name Mangler (OSX)
- Siren Renamer (Windows)
- Bulk Rename Utility (Windows)
De todos éstas mi favorita es Siren: potente, ligera y es capaz de extraer los metadatos de los formatos de archivo más comunes. Name Mangler (anteriormente conocido como File list) es bastante popular en el mundillo Mac, aunque apenas soporta metadatos específicos.











