miércoles, mayo 26, 2010

Mismo producto con distintos precios: cada vez más difícil

http://www.elblogsalmon.com/economia-domestica/mismo-producto-con-distintos-precios-cada-vez-mas-dificil


Aunque lo parezca, no todo es crisis económica en El Blog Salmón. Y es que me he topado con una entrada muy interesante acerca de la dificultad de mantener precios distintos en el mismo producto en países diferentes. Es un efecto de la globalización, y este efecto irá en aumento.
Es bien conocido que un mismo producto, exactamente el mismo, puede tener precios diferentes en países distintos. El caso más conocido es el de los productos electrónicos. En los últimos años he leído muchas quejas en Internet sobre la conversión “1 euro = 1 dólar” cuando el cambio real era muy diferente, por ejemplo en teléfonos móviles o videoconsolas. A los consumidores no nos parece razonable que el mismo producto cueste un 30% más en España que en EEUU.
Esta diferencia puede tener alguna justificación, ya que hay aranceles, gastos de transporte, coberturas frente a fluctuaciones de divisas, etc. Pero cuando la diferencia de precios es dentro de la UE, con una ausencia de aduanas y una misma moneda en muchos casos, la justificación es aún más difícil. La explicación es algo más complicada, pero existe. No es que nos tengan manía las empresas extranjeras, es que somos un mercado pequeño (o más pequeño que otros países más baratos) y para mantener una estructura de administración, ventas, logística, etc. en un mercado más pequeño se necesitan márgenes más grandes. Quizá en Alemania con un pequeño aumento en la estructura se vende mucho más y eso permite rebajar los márgenes. En España, en muchas ocasiones no es posible, e incluso es necesario tener distribuidores locales que necesitan vivir también de su margen. Cuanto más pequeño es el mercado del país y más regulaciones hay, más necesaria es la presencia local y mayores los márgenes para mantener la estructura (y ganar dinero).
Así pues nos encontramos con el caso de Mr. Proper. ¿Qué tiene que ver Mr. Proper (ahora llamado Don Limpio) en todo esto? Muy sencillo. Mr. Proper se llamaba así en todos los países del mundo. La marca estaba bien establecida y funcionaba, pero los precios en cada país eran distintos. ¿Qué pasó? Muy sencillo, hubo gente que aprovechó esta diferencia de precios para comprar el producto en los países baratos y venderlo en los países caros, permitiendo una autocompetencia en la misma marca. ¿Qué hizo la empresa? En lugar de equilibrar los precios o contratar a las empresas que hacían esto (ya que eran más eficientes en costes que la propia organización matriz) decidió cambiar la marca en todos los países. Así es más difícil que una empresa decida comprar Monsieur Propre en Francia para venderlo en España (ya que el consumidor no lo asocia al mismo producto).
Solución ingeniosa pero que no evita la imparable globalización. Es fácil comprar en el extranjero y los mercados nacionales como tal ya no existen. Al consumidor, en principio, le da igual que un producto se lo vendan desde Madrid, París, Berlín o Bruselas. Lo que quiere es que dicho producto tenga el precio más barato. Y esto crea problemas en las organizaciones, debido a las estructuras locales que mantienen y que hay que pagar. Son estructuras antiguas y quizá debieran plantearse igualar los márgenes en todo el mundo asumiendo que los países baratos deben subir sus precios y los países caros bajarlos.

jueves, mayo 20, 2010

portable firebird

http://basaratali.blogspot.com/2010/05/setting-up-portable-firebird-full-with.html



Setting up a portable Firebird Full with VS 2010
Setting up a Portable Firebird

Downloaded the ziped version of Firebird:
Firebird-2.1.3.18185-0_Win32.zip
Extact to a folder
I prefer classic architecture running as an application (you do not need FB Guard also The path to file with or without a missing / in the beginning will not cause DB corruption).
Start the server with the bat file containing:
"./FIREBIRD/bin/fb_inet_server.exe" -a -p 3050
using this you can change the port to something else. The -p switch is optional. Even allocate the port dynamically from your application. Also you can use the -n switch to start it silently:
"./FIREBIRD/bin/fb_inet_server.exe" -a -n -p 3050
Stopping the portable classic server is easy. Just kill the process fb_inet_server. Of course this is assuming your application is done with everything (no pending transactions). There is no point in leaving the server running.
Changing the SYSDBA Password (default:masterkey) Actually it is masterke (since it is limited to 8 characters). But both work :)

FIREBIRD\bin>gsec -user sysdba -password masterkey
GSEC>modify sysdba -pw yourpass
GSEC>quit
yourpass will be the new password

Connect to the database (connection String):

syntax
IPAddress_or_ServerName/Port:Drive:\CompletePathToYourDatabasefile.fdb
e.g
150.236.161.183/3051:D:\database.fdb

for softwares (e.g. FB development studio) that do not give you the option of port separately you need to specify the server as "IP/port". They use fbclient.dll
For setting up Visual Studio 2010 with ADO.NET Entity Framework Designer just follow the procedure in the below post:

http://basaratali.blogspot.com/2010/02/setting-up-firebird-development-with-vs.html

viernes, mayo 07, 2010

linux aplicaciones portables

http://qtoctave.wordpress.com/2010/05/06/creacion-de-binarios-para-linux-transporte-de-bibliotecas/#more-391


Creación de binarios para Linux: Transporte de bibliotecas
Por acisif
La técnica que se ha diseñado para realizar los binarios para Linux de QtOctave, la he bautizado como transporte de bibliotecas. La idea consiste en “en paquetar” el programa junto a las bibliotecas de las que depende. Así se consigue que funcione casi en cualquier distribución de Linux, sin necesidad de realizar un paquete específico para cada distribución.
Desde el punto de vista del usuario, las plicaciones son ficheros comprimidos, que descarga, descomprime y ejecuta. Cuando quiere desinstalarlos, sólo tiene que moverlos a la papelera. Ya está :)
Se podría aplicar sin muchos problemas a otros proyectos de software libre.
Como ejemplo se pueden descargar los binarios de QtOctave-0.9.1, Octave-3.2.4 y Gnuplot-4.4. que he realizado usando esta técnica. Veréis que son muy intuitivos de manejar:
http://forja.rediris.es/frs/download.php/1840/QtOctave-0.9.2_Linux-x86.tar.bz2
¿En qué se basa esta técnica?
Los programas en Linux, a no ser que estén compilados estáticamente, dependen de una serie de bibliotecas (librerías). Las bibliotecas de las que depende un programa se pueden ver usndo el comenda ldd. Por ejemplo, para saber las dependencias del comando ls:
ldd ls
linux-gate.so.1 => (0xffffe000)
librt.so.1 => /lib/i686/librt.so.1 (0xb7752000)
libcap.so.2 => /lib/libcap.so.2 (0xb774c000)
libacl.so.1 => /lib/libacl.so.1 (0xb7743000)
libc.so.6 => /lib/i686/libc.so.6 (0xb75e2000)
libpthread.so.0 => /lib/i686/libpthread.so.0 (0xb75c7000)
/lib/ld-linux.so.2 (0xb7769000)
libattr.so.1 => /lib/libattr.so.1 (0xb75c1000)
Se puede ver las bibliotecas de las que depende y dónde están localizadas.
En la salida del comando anterior hay que prestar atención la entrada que pone /lib/ld-linux.so.2, ¿por qué es diferente del resto? ld-linux.so.2 es el programa que se encarga de buscar ls bibliotecas de las que depenen las aplicaciones. Por lo tanto, podemos usar este programa para que busque las biliotecas en el lugar que nosotros deseemos que s busque y no entre las biliotecas del sistema. Así por ejemplo:
ld-linux.so.2 –library-path /tmp/libs/ qtoctave-0.9.1
Ejecutaría qtoctave usado las bibiotecas que hay localiadas en /tmp/libs/ y no las bibliotecas instaladas en el sistema.
Se podría entonces empaquetar un programa con sus bibliotecas y usar ld-linux.so.2 para cargarlas.
Por lo tanto, sólo hay que:
Para empaquetar un programa usando esta técnica hay que seguir los siguientes pasos (los voy a particularizar para el caso de QtOctave):
Se compila e instala el programa que se desee empaquetar en un directorio por ejemplo en /opt (configure –prefix=/opt). Es mejor usar el directorio /tmp (conigure –prefix=/tmp), ya veremos la causa.
Usando ldd, se buscan las dependencias de cada uno de los ejecutables de la aplicación y se copian junto a los ejecutables. También hay que copiar ld-linux.so.2.
Se le cambia el nombre a cada ejecutable, por ejemplo de qtoctave a qtoctave-0.9.1.
Para cada ejecutable original se escribe un script (debe tener permisos de ejecución) que lo ejecute usando ld-linux.so.2. En el ejemplo de qtoctave, el ejecutabe se llamaría qtoctave y va a contener lo siguente:
#!/bin/bash
/tmp/libs/ld-linux.so.2 –library-path /tmp/libs/ /tmp/qtoctave-0.9.1/bin/qtoctave-0.9.1 “$@”
Evidentemente hay sustituir /tmp/libs/ por la ruta donde se hayan copiado las bibliotecas. /tmp/qtoctave-0.9.1/bin/qtoctave-0.9.1 se debe cambiar por la ruta al ejecutable.
Se comprime todo. Por ejemplo, se puede generar un qtoctave-0.9.1.tar.gz.
Si e escribe un instalador, aquí ya se podría terminar y distribuir la aplicación, pero los siguientes pasos hacen que todo sea más simple ara el usuario.
Se escribe un script que será el que lance la aplicación. Para QtOctave he escrito el siguiente script llamado qtoctave.sh:
#!/bin/bash
echo “Starting QtOctave”
cd `dirname “$0″`
ln -s `pwd`/`basename “$0″` /tmp/qtoctave-0.9.1.tar.gz
cd /tmp
tail -c 21923071 qtoctave-0.9.1.tar.gz | tar -xz
rm -f qtoctave-0.9.1.tar.gz
export PATH=$PATH:/tmp/gnuplot-4.4.0/bin:/tmp/octave-3.2.4/bin:/tmp/qtoctave-0.9.1/bin
/tmp/qtoctave-0.9.1/bin/qtoctave
rm -Rf /tmp/gnuplot-4.4.0 /tmp/octave-3.2.4 /tmp/qtoctave-0.9.1 /tmp/libs
exit
En la línea que contiene tail -c 21923071, el número es el tamaño en bytes del fichero comprimido generado en el punto anterior. El script lo que hace es descomprimir y ejecutar qtoctave. Al terminar la ejecución vueve a borrar los ficheros descompridos.
Se junta el sccript anterior con el fichero comprimido usando cat:
cat qtoctave.sh qtoctave-0.9.1.tar.gz > QtOctave.sh
Al fichero resultante, QtOctave.sh, se le dan permisos de ejecución.
Ya está.
Antes se ha comentado que es más práctico usar /tmp para instalar la aplicación. Todos los usuarios de Linux tienen permisos para usar /tmp, por lo que el usuario no va a necesitar ser administrador para copiar allí las aplicaciones. La parte mala es que tmp se suele borrar cada reinicio del ordenador, pero tal como se ha orientado el lanzador, esto no es un problema.
No es oro todo lo que reluce.
La técnica permite que el binario generado funcione casi en cualquier distribución de Linux, sin necesidad de realizar un paquete específico para cada distribución.
El problema radica en que los programas necesitan dependencias que no son fáciles de encontrar. En el caso de QtOctave, se necesita añadir la biblioteca libXi.so, ya que, aunque ldd no la muestre como dependencia, algunas distribuciones la necesitan.
También hay otra serie de problemas más simples, pero también molestos, como los tipos de letra que usa la aplicación, que pueden no estar instados y reemplazados por otros más desagradables.
El núcleo del sistema, el kernel, también influye, pues de unas versiones a otras pueden cambiar algunas cosas que la aplicación necesite.
P.L. Lucas