Archivo

Archivo para Marzo, 2010

¡¡Duros a 3 pesetas!! Pues no…

Jueves, 25 de Marzo de 2010 4 comentarios
Share Button

Pues eso siempre me ha dicho mi madre:

– “Mira hijo, que nadie da duros a 3 pesetas!!”.

¿Y qué razón tenía!  Me explico…

Por si no os habéis dado cuenta, la web ya no está en los servidores de 000webhost. ¿Porqué? Pues eso me gustaría saber a mi…

000Webhost ofrece dominios gratuítos. Yo mismo lo he recomendado alguna vez en aquí en mi web y en otros foros.

Resulta que el pasado Sábado TODO el contenido de mi web fue borrado/eliminado de los servidores de 000webhost. Ningun aviso, ninguna advertencia, ningun correo,…  NADA.  No sólo la web estaba innaccesible, sino que el acceso a los posibles datos estaba cancelado.

Los que visitáis asíduamente esta web, sabéis qué contenidos ofrezco, todos de creación propia, nada de enlaces a contenido ilegal, nada que imcumpla sus Términos del Servicio.

Me he dirijido a ellos y por varios medios he intentado que me dieran razones del porqué del cierre. Lo único que he obtenido (y lo he tenido que hacer desde una cuenta externa) es esto:

Mierda de explicación Respuesta a la consulta (link)

Viene a decir algo así como:

“Cierro tu web porque incuple los Términos del servicio”.
Cuando preguntas qué terminos del servicio has inclumplido te dicen:
“No te lo puedo decir por razones de seguridad”
Lo que para mi significa:
“Te lo borramos porque nos da la gana y no te damos ninguna explicación”

Se te queda cara de tonto y muy mala leche.

Estoy convencido de que mi web no incumplía ninguno de los términos. ¿Porqué cancelarla entonces?

Mi opinión es, que símplemente no soy un cliente rentable. Mientras estás como cliente gratuíto obtienes un buen servicio, supongo para que te plantees hacer un Upgrade. Una vez que se demuestra que no eres un cliente potencial que va a dejar dinero ya no sirves como cliente. No interesas.

Como ya he dicho, desde aquí mismo y desde otros foros he recomendado esta servicio gratuíto de hosting; En este momento retiro esa recomendación. Sólo espero que cuiden mejor a los clientes que pagan de lo que lo han hecho conmigo.

Hubiera bastado con un simple correo, un simple aviso, para retirar cualquier contenido ilegal de la web (si es que lo hubiera habido -que no es así-), un simple correo avisando del cierre, como mínimo para poder realizar copias de seguridad. NADA.
He perdido algunas horas en poder restaurar el contenido de la web. No sólo están los artículos (de los que tenía copia) sino que aparte hay muchos ejemplos, ficheros, imágenes,… que he tenido que buscar en varios lugares, sin poder llegar a restaurarlas todas.  ;-(

Por supuesto cualquier comentario será bienvenido.

Un saludo y lo dicho: “Nadie da duros a 3 pesetas… si ya lo decía mi madre”.

AÑADO: Los que seguíais la web vía Feed o la teníais en los marcadores, tal vez deberías actualizar los links.

http://www.000webhost.com/includes/tos.php
Share Button

Aplicación multiidioma con GNU Gettext

Viernes, 5 de Marzo de 2010 26 comentarios
Share Button

He probado algunos sistema de traducción para programas Delphi, entre ellos multiidioma2he de destacar los componentes de TsiLang Component Suite , que me parecen muy buenos y completos.

Estos días necesitaba un paquete gratuíto y revisando páginas y foros he llegado a GNU Gettext for Delphi and C++ Builder. Me parece un paquete muy sencillo de utilizar y por lo que he probado hasta ahora, cómodo y eficaz.

En esta entrada voy a explicar desde cero los pasos que he seguido para conseguir una aplicación multiidioma.

PREPARATIVOS

(1) GNU Gettext

Descargar desde la página “GNU Gettext for Delphi and C++ Builder” el programa de instalación. También se puede encontrar la última versión en SourceForge.

Una vez descargado el ficchero e instalado tendremos lo necesario para generar nuestros ficheros de traducción e integrarlos en el programa.

NOTA: Hay una versión especial compatible con Delphi 2009 que podemos descargar desde aquí, si estamos utilizando esta versión de Delphi..

Si se ha instalado correctamente, nos pedirá reiniciar el sistema.
Una vez instalado, si desde el explorador de Windows pulsamos Click derecho con el ratón sobre una carpeta, nos debería aparecer una nueva opción “Extract Translations to Template“.
generar_traducciones

(2) Poedit for Windows

Necesitaremos una herramienta para poder traducir (ya seamos nosotros o una tercera persona) los ficheros de traducción a los diferentes idiomas. Esto está pensado para que esa posible tercera persona (que puede no tener Dephi instalado)  pueda traducir un fichero sólo con esta herramienta (y el fichero .po como veremos después).

Descargamos el programa desde la página (http://www.poedit.net/) y lo nstalaremos.

Una vez realizados estos dos pasos previos, crearemos un pequeño proyecto de ejemplo donde realizar las pruebas.

Para ello, desde Delphi comenzamos una nueva aplicación y en el formulario generaremos algo similar a esto:

TRADUCCIÓN

(a) Preparar el  proyecto.

Una vez tenemos nuestra aplicación funcionando debemos preparnos para comentar lo necesario para traducción.
(1) Lo primero es añadir la unit gnugettext.pas a nuestro proyecto. Las units que usesn traducciones deberán tenerla en el uses.

NOTA: Si habéis realizado la instalación estandard debería estar en:
“c:\Archivos de programa\dxgettext\gnugettext.pas”

(2) Añadir al OnCreate de nuestros formularios el siguiente código:

0
1
// Traducir el formulario
TranslateComponent(Self);

(3) Preparar la estructura de directorios para organizar las traducciones. Dentro del directorio de la aplicación crearemos una carpeta llamada locale y dentro de ella un árbol de directorios similar al que se ve en la imagen.

directorios1

En este ejemplos, yo voy a utilizar 4 idiomas (es, en, fr, ca); Contando que el original va a ser el Español(es) debemos crear la estructura para los otros 3 (inglés, francés y catalán). Nos quedará un arbol de directorios como este:

directorios2

(b) Generar fichero de traducciones (.po)

(1) Para generar el fichero de traducciones del proyecto se debe extraer todas las cadena “traducibles” y almacenarlas en un fichero; Para ello basta con que, desde el explorador de Windows, pulsemos Click derecho sobre la carpeta del proyecto y seleccionemos la opción “Extract Translations to template”.
Esto generará un fichero default.po en el directorio de la aplicación.

generar_traducciones

(2) Copiaremos este fichero dentro de los directorios LC_MESSAGES; Tantas copias como directorios tengamos. Después de eso tendremos varios ficheros .po; Uno en el directorio de la aplicación y uno dentro de cada carpeta de traducción:

appdir/appTest.exe
appdir/default.po
appdir/locale/en/LC_MESSAGES/default.po (Traducciones al inglés)
appdir/locale/fr/LC_MESSAGES/default.po (Traducciones al francés)
appdir/locale/ca/LC_MESSAGES/default.po (Traducciones al catalán)

(c) Traducir los ficheros.

En este punto ya se pueden abrir cada uno de los ficheros .po y traducirlo utilizando poedit. Una vez abierto el fichero con poedit, veremos una pantalla como esta:


Una vez finalizada la traducción de palabras y cerrado el programa veremos que en cada directorio aparecen 2 ficheros; El  default.po (original) y el de traducción llamado default.mo.
Repetimos esto con todos los ficheros de traducción.

(d) Cómo utilizar las traducciones en nuestro programa

Una vez los ficheros de traducción estén generados, para utilizarlos desde la aplicación añadirenmos el siguiente código a los botones de activación de los idiomas.

botones_idiomas

0
1
2
3
4
5
6
7
// para el catalán
UseLanguage('ca');
RetranslateComponent(Self);
 
// para el inglés
UseLanguage('en');
RetranslateComponent(Self);
...

Si ejecutamos la aplicación veremos que al pulsar los botones cambia es aspecto del formulario.

Para finalizar, aun nos queda un detalle, que es, que la cadena que aparece al pulsar el botón “Hola Mundo!”  no aparece traducida.

Para ello utilizaremos la función de traducción  _().
La llamada que actualmente está así:

0
MessageDlg('Hola', mtInformation, [mbOK], 0);

Pasará a colocarse así:

0
MessageDlg(_('Hola'), mtInformation, [mbOK], 0);

PASOS FINALES

Con eso nuestro programa debería quedar traducido completamente. Si movemos el EXE y la carpeta locale a cualquier otro sitio veremos que el programa funciona correctamente. Si sólo movemos el EXE, el efecto es que no aparace nada traducido.

Queda un último detalle, que es integrar las traducciones en el EXE, para que todo quede en el ejecutable y no debamos preocuparnos del directorio locale.

integrar_traducciones

Basta con pulsar click derecho sobre el EXE de nuestra aplicación desde el explorador de Windows, Seleccionar la opción “Embeb Translations” y seleccionar los ficheros de traducción que queremos integrar.

integrar_traducciones2

Con esto debería ser todo.

UPDATE: (20/04/2011)

Pues haciendo pruebas he llegado a obtener el mismo proble que comenta Sil en sus comentarios (en mi caso utilizando Delphi XE). Se trata de que al intentar añadir las traducciones al exe se obtiene un error con la referencia: “6637DB2E-62E1-4A60-AC19-C23867046A89”.

Revisando por Internet, parece que se solventa sustituyendo unas constantes que hay en gnugettext.pas.

(1) Buscar esta sección en la unit gnugettext.pas:

0
1
2
3
4
5
6
7
  // DetectionSignature: used solely to detect gnugettext usage by assemble
  DetectionSignature: array[0..35] of AnsiChar='2E23E563-31FA-4C24-B7B3-90BE720C6B1A';
  // Embedded Header Begin Signature (without dynamic prefix written by assemble)
  BeginHeaderSignature: array[0..35] of AnsiChar='BD7F1BE4-9FCF-4E3A-ABA7-3443D11AB362';
  // Embedded Header End Signature (without dynamic prefix written by assemble)
  EndHeaderSignature: array[0..35] of AnsiChar='1C58841C-D8A0-4457-BF54-D8315D4CF49D';
  // Assemble Prefix (do not put before the Header Signatures!)
  SignaturePrefix: array[0..2] of AnsiChar='DXG'; // written from assemble

(2) Y sustituirlas por estas:

0
1
2
3
4
5
6
7
  // DetectionSignature: used solely to detect gnugettext usage by assemble
  DetectionSignature: array[0..35] of AnsiChar='6637DB2E-62E1-4A60-AC19-C23867046A89';
  // Embedded Header Begin Signature (without dynamic prefix written by assemble)
  BeginHeaderSignature: array[0..35] of AnsiChar='';
  // Embedded Header End Signature (without dynamic prefix written by assemble)
  EndHeaderSignature: array[0..35] of AnsiChar='';
  // Assemble Prefix (do not put before the Header Signatures!)
  SignaturePrefix: array[0..16] of AnsiChar='#0#0#0#0#0#0#0#0';//'DXG'; // written from assemble

Con este ambio ha desaparecido el error y se integran perfectamente las traducciones.

Espero que haya sido útil.

Espero comentarios, sugerencias, errores,… y demás.

Share Button

CÓMO MONTAR UN NEGOCIO Y GANAR PASTA DESDE CERO

Martes, 2 de Marzo de 2010 3 comentarios
Share Button

Otros posibles títulos que he barajado para esta reflexión han sido:

  • “Cómo convertir lo gratuito en negocio y forrarte con ello”
  • “Cómo ganar una pasta con el trabajo de otros”
  • “Cómo ser un buitre profesional”
  • “¡A tomar pol culo!” (este era para desfogarme…)
  • “Así es como se hace negocio en España”

Antes de empezar, he de decir que no soy ningún fan de Google, tienen sus cosas buenas y sus cosas malas (como todos), pero hay que reconocerles que durante los últimos años han trabajado duro. Han innovado y han apostado por un modelo de negocio muy particular (diferente al de otras empresas) y por lo que se ve no les está iendo mal.cc

Desde el punto de vista del usuario “de a pie” Google ofrece una serie de servicios “gratuitos” entre ellos su buscador (al igual que otras empresas); Me centro en este, porque seguramente es el más utilizado. Y cuando hablo de gratuito me refiero a nivel estrictamente “monetario”. Si yo quiero buscar la página de “Coca-Cola”, la del “Museo del Prado” o la de “Delphi Prism” puedo hacerlo usando Google, Yahoo, Bing,… y me sale gratis(1).

(1) He aquí donde empieza todo. Google a día de hoy gana mucho dinero, esto lo sabe todo el mundo, y a los usuarios estos servicios no nos cuestan dinero (hablo del buscador, pero podemos generalizar esto con muchos otros servicios y con otras empresas similares).

A alguien se le ha ocurrido que esto no puede ser, unos no pagan y otros ganan mucho. Nooooooorrrr.

¡¡Estos son los buitres y ahí está el negocio!!

No puede ser que unos estén obteniendo cosas GRATIS y otros se estén FORRANDO, hay que conseguir sacar “tajada”.

Pasos a seguir a partir de este momento:

(ACTO-1)
________________________________________

Como resulta que Google ha montado un buen negocio y ganan mucha pasta, los buitres-chupópteros(2) están buscando la forma de conseguir dinero fácil beneficiándose, no de su trajabo, sino del que han realizado otros.

(2): Los buitres-chupópteros-carroñeros son esas compañías que aquí, dan un servicio pésimo, cobran mucho por sus ADSL, dan un nivel inferior al de otros países europeos y tienen unas compañías de móvil donde lo único que les preocupa es adquirir clientes de cualquier forma (publicidad engañosa, dudosos contratos por teléfono, horrorosos servicios de atención al cliente,…). Sí, esas, las compañías de teléfonía.

Estos “elementos” (según ha dicho el “presi” de Telefónica) lo que quieren hacer es cobrar a los buscadores por utilizar sus líneas ?¿?¿?¿:

Telefónica abre fuego contra los buscadores

Eso, eso, que los de Google vayan “currando” y nosotros a ver si, sin “pegar ni chapa” pillamos algo (¿no os recuerda al modelo de negocio de las SGAE?).

(ACTO-2)
________________________________________

Al ministro de Industria (un tal Sebastián), que debe salir del mismo sitio que la ministra de cultura (la “Sinde”), si esa que va dando coba a los de las SGAE, no se le ha ocurrido otra cosa que decir que es viable:

Sebastián afirma que es “una opción posible” que las operadoras cobren a Google

(ACTO-3)
________________________________________

¡Ya está! ¡Se abrió la veda!

Visto lo visto (y si el ministro “Sebas” lo dice), pues los demás “buitres” allá que han ido de cabeza (y los que se apuntarán…).

Vodafone se abona a la propuesta de cobrar a Google por usar la red

(ACTO-4)
________________________________________

El ministro “Sebas”, “erre que erre”, a lo suyo; Yo creo que como ha visto que su propuesta ha tenido éxito (sobre todo entre los “buitres”) pues se ha “envalentonao” e insiste:

El ministro Sebastián defiende cobrar una tasa a los buscadores

(ACTO-FINAL)
________________________________________

Por último, como no, en una reunión de “buitres” no podían faltar ellos. Los innombrables. Yo creo que ya pronto cobrarán por su modelo de negocio (que debería estar patentado aquí en España -con la venia y aprobación de la “Sinde”-):

  • El de cobrar por no hacer nada.
  • El de cobrar por todo.
  • El de “cobrar por si…”    Por si copias, por si bajas, por si compartes…
  • El de cobrar por ver, oír y escuchar.

Lo lógico es que Telefónica cobre de Google y nos pague a nosotros

¡Pues ya estamos todos!

.
.
.

¡¡Así es como se monta un negocio en España!!

No se dónde acabará todo eso; Yo creo que como Google “LOS VA A MANDAR A TOMAR POL CULO A TODOS” “les va a decir que no”, lo que más me temo de esto, es que lo mismo nos dicen (con “Sebas” y la “Sinde” a la cabeza):

-Bueno, pues vamos a cobrarles a los usuarios, que al final son los que usan Google, que es quien usa nuestras redes de telefonía, que nosotros “somos quienes lo hacemos todo”… (3)

(3) Palabras del director de telefónica (César Alierta)

“Las redes las ponemos nosotros, el peering lo hacemos nosotros, los sistemas los hacemos nosotros, el customer care lo hacemos nosotros, el servicio post-venta lo hacemos nosotros, el servicio de instalación lo hacemos nosotros… lo hacemos todo. Quiero decir, ellos tienen algoritmos y contenidos…”

Pobrecitos, mira que son malos esos “aprovechados” de Google…

¡¡Así es como se monta un negocio en España!!
AÑADIDO(02/03/2010): Os coloco el link del video con la conferencia. Los comentarios no tienen desperdicio.

Telefónica quiere cobrar a los buscadores


Share Button
Categories: Humor, Offtopic Tags: , , ,