miércoles, 7 de julio de 2010

GIMP no vendrá por defecto en Ubuntu 10.04 Lucid Lynx

Desde la Ubuntu Developer Summit, la convención que está teniendo lugar hasta el día 20 de noviembre en Dallas (EEUU), nos llega una noticia bastante impactante para los usuarios de Ubuntu: el software de tratamiento de imágenes GIMP no será incluído de serie en la siguiente versión 10.04 Lucid Lynx.

El debate se abrió en el marco de la elección de aplicaciones que deberían venir configuradas de serie con Lucid Lynx. Sobre GIMP se ha valorado que el programa es demasiado complejo para estar instalado por defecto en la distribución, ya que está destinado a usos de profesionales gráficos y no para los usuarios comunes. Además, se justifica también su salida por el elevado tamaño del software y porque las tareas habituales con imágenes que la mayoría de los usuarios necesitan pueden realizarse perfectamente con otras aplicaciones como F-Spot y su interfaz mucho más sencilla.

Nos encontramos con una situación compleja, por un lado GIMP es el referente en el mundo del software libre en cuanto a tratamiento de imágenes. Por otro lado, nunca ha sido una aplicación “sencilla” para todos los usuarios. Dada la profesionalidad del programa, no creo que dentro de los planes de desarrollo esté como meta el conseguir ser el programa más usado por el público general, sino más bien ofrecer una alternativa efectiva a suites comerciales y conseguir los mejores resultados para los usuarios avanzados y estudios profesionales.

En el otro lado de la balanza hay que sopesar el hecho de que Ubuntu, aunque creciente, tiene una cuota de mercado muy baja comparado con otros sistemas. En ese sentido puede resultar interesante disponer de una instalación básica con todo el potencial de GIMP, de cara a los nuevos usuarios.

Aunque sea una decisión complicada, tampoco es algo crítico: GIMP estará disponible en los repositorios oficiales, como siempre, por lo que los usuarios que lo deseen sólo tendrán que elegirlo en Centro de Software para instalarlo en el sistema.

En Ubuntu Life han lanzado una encuesta para ver qué opinan sus lectores sobre este tema. Actualmente, los resultados son más de 300 votos de usuarios que no quieren que salga de la instalación básica contra unos 150 que votan lo contrario al no haberlo usado prácticamente nunca.

FUENTE: http://www.genbeta.com

sábado, 10 de abril de 2010

Fuentes tipográficas en Linux y Windows

¿Alguna vez os ha pasado el crear un documento de texto formateado estupendamente y al ir a abrirlo en otro equipo, con otro sistema u otra aplicación o simplemente una versión distinta de los mismos, os encontráis con que el aspecto ha cambiado, a veces drásticamente? Las cosas ya no están en su sitio, el tipo de letra y el tamaño ha cambiado (y además a peor, siendo menos legible) y consecuentemente se ha llevado por delante la cuidadosa maquetación y el buen aspecto de vuestro documento….

El problema es el cambio de fuente (del tipo de letra). ¿Y porqué lo cambia?. Muy sencillo: las fuentes disponibles lo son generalmente a nivel de sistema, aunque el usuario puede haber instalado otras adicionales, eso sin contar con que varias aplicaciones instalan nuevas fuentes por su cuenta… Con lo cual las fuentes disponibles en cada equipo pueden ser muy distintas a las que tenga otro; seguramente el usuario tenga fuentes que ni conozca o usará una fuente para sus documentos que aunque él crea que es muy común (si llega a pensar siquiera en ello) resulta que no lo es tanto. Resultado: al abrir el documento en otro equipo, la fuente indicada en el documento no está disponible así que el programa que usemos la sustituye por otra que se supone que es parecida, con resultados que van desde lo regular hasta el desastre, pero vamos, que mejor no queda, no.

Dentro de un mismo sistema el problema se minimiza debido a que cada sistema incluye por defecto un conjunto de fuentes comunes, por lo que si usamos estas fuentes, no tendremos que preocuparnos por esto (a no ser que sean versiones distintas del sistema y una esté muy desfasada respecto a la otra). Pero claro, si cambiamos de sistema (entre GNU/Linux y Windows, por ejemplo, eso sin contar con el Mac, muy usado en diseño) la sorpresa está casi asegurada.

Resumiendo, a la hora de distribuir ampliamente un documento (p.e. colgándolo en Internet):

Proporciona SIEMPRE una versión en PDF de tu documento.

Si además necesitas que el documento sea editable:

  • Usa siempre que sea posible el formato ODT y una tipografía común en Windows (nos guste o no, el sistema más extendido hoy por hoy). Si tu sistema es GNU/Linux, acuérdate de instalar el paquete con dichas fuentes.
  • En el caso de que tu “público” sea mayoritariamente de usuarios de GNU/Linux (p.e. porque trates un tema específico de ese sistema), pues usa una de las fuentes comunes de GNU/Linux. Si deseas tener también en cuenta a los usuarios de Windows, usa DejaVu, por ejemplo.

Fuente: stoneheads.wordpress.com

miércoles, 10 de febrero de 2010

Especificadores de formato de fprintf()

Introdución

Si conoces C, estas funciones te van a parecer bastante similares, pero hay algunas pocas diferencias.

El printf() lo usamos para poder formatear valores y datos de la manera que nosotros queramos.

printf() y sprintf()

Estas dos funciones son iguales, la diferencia es que printf envía su resultado a un objeto de archivo, mientras que sprintf regresa una cadena del resultado del printf.

La función printf esta puesto para imprimir el resultado en STDOUT, si quieres especificar otro objeto lo debes de hacer de la siguiente manera:

printf([OBJETO] FORMATO, VALORES);

Esto imprimirá el resultado al objeto OBJETO.

En cambio sprintf lo usaríamos de la siguiente manera:

my $variable = sprintf(FORMATO, VALORES);


El Formato

El FORMATO es una cadena que tendrá ciertas "expresiones" que describirán como deberá perl ordenar y desplegar los valores que pongas en VALORES. Cada una de estas "expresiones" empieza con un símbolo de %.

Una cadena de FORMATO típica se podría ver de la siguiente manera:

Mi número es: %d

Aquí el %d es una expresión que significa "un número", por lo que perl lo remplazaría por algún número decimal. Por ejemplo podrías decir lo siguiente:

printf("Mi número es: %d", $decimal)

Así que el %d en esta función es remplazado por el valor de la variable $decimal. Puedes poner tantas "expresiones" como quieras en FORMATO, con el mismo número de VALORES. Por ejemplo:

printf("%d %s %f", $decimal, $cadena, $flotante);

"Expresiones" en el FORMATO


Aquí esta el listado de "expresiones" que podemos usar en nuestra cadena de FORMATO.

%% Imprime un signo de %.
%c imprime un carácter con el código ASCII dado (con 66 imprime B, por ejemplo).
%s una cadena
%d un decimal
%u un decimal negativo o positivo sin signo
%o un integral en octal
%x un integral en hexadecimal
%e un número con punto flotante en notación científica
%f un número con punto flotante en notación decimal
%g puede ser %e ó %f, lo que decida printf que es lo mejor
%X lo mismo que %x pero con mayúsculas
%E como %e pero con 'E' mayúscula
%G lo mismo que %E cuando se usa notación científica
%p un "pointer"; imprime la locación en memoria de una variable en hexadecimal
%n imprime la cantidad de caracteres desplegados hasta el momento

Otras "expresiones" que existen por compatibilidad:

%i lo mismo que %d
%D lo mismo que %ld (decimal largo)
%U lo mismo que %lu (decimal largo sin signo)
%O lo mismo que %lo (octal largo)
%F lo mismo que %f

Especificadores de FORMATO

Cada uno de los especificadores que vienen abajo son opcionales y deben de usarse en el orden que aparecen aquí. Si esto se te hace muy confuso te recomiendo que pases a la siguiente sección, pues esto es simplemente para referencia.

% - El signo de porcentaje. requerido (lógicamente)

0 o más de los siguiente especificadores:

'#' (símbolo de gato): Especifica que el valor debe de ser convertido a una "forma alterna". Esto no tiene ningún efecto en 'c', 'd', 'i', 'n', 'p', 's', y la expresión 'u'. Para la expresión 'o' (octal), esto pone un '0' al principio. Para 'x' y 'X' (hexadecimal), 0x ó 0X es puesto al principio. Para 'e', 'E', 'f', 'g' y 'G', el valor es puesto siempre con un punto decimal (.) al principio, inclusive cuando no hay nombres. Para 'g' y 'G', los ceros al final no son removidos.

printf("%x", 10); # imprime 'a', mientras:
printf("%#x", 10); # imprime '0xa'

'0' (cero): Para quitar el padding de un número. El número es convertido a un número con la cantidad 0 necesarios a la derecha.

printf("%03d", 7); # imprime '007'
printf("%03d", 153); # imprime '153'

'-' (menos): Especifica que el valor será ajustado a la derecha, mientras que normalmente es hacia la izquierda.

printf("%5s", 'foo'); # imprime ' foo'
printf("%-5s", 'foo'); # imprime 'foo '

' ' (un espacio): Especifica que un espacio debe de dejarse antes de un número positivo.

printf("% d", 7); # imprime ' 7'
printf("% d", -7); # imprime '-7'

'+' (signo de más): Especifica que este valor siempre debe de ponerse antes del valor.

printf("%+d", 7); # imprime '+7'

. (un punto) El punto de precisión seguido de un número especifica la cantidad de números que se deben de imprimir para 'd', 'i', 'o', 'u', 'x', y expresiones 'X'. Para expresiones 'e', 'E', y 'F', es el número de dígitos que se deben de mostrar después del número decimal. Para 'g' y 'G' el número máximo de caracteres significativos. Para la expresión de cadena 's', es el máximo número de caracteres que se deben de desplegar.

printf("%.3d", 7); # imprime '007'
printf("%.2f", 3.66666); # imprime '3.66'
printf("%.3s", 'foobar'); # imprime 'foo'


Poniendo espacios

Si quieres alinear varias líneas de datos para un reporte, puedes especificar un ancho de campo en el cual los VALORES serán alineados a la derecha con los espacios necesarios.

Por ejemplo:

printf("%6s", 'foo'); # prints ' foo'

Aquí pone 3 espacios al principio para llenar el espacio de 6 caracteres que se específico.

Si quieres alinear todo a la izquierda todo lo que tienes que hacer es poner un signo de "-" antes del ancho. Por ejemplo:

printf("%-6s", 'foo'); # prints 'foo '

Modificadores de preescisión

El modificador de preescisión le dice a printf() cuantos caracteres se deben de desplegar después del punto decimal. Si hay más números de los que especificaste después del punto, el número es redondeado, si hay menos, se usan 0 para llenar el espacio:

printf("%.2f", 9.333333); # imprime '9.34'
printf("%.2f", 9); # imprime '9.00'

Para valores decimales, el modificador de preescisión tiene el mismo efecto con los '0' que se describió antes:

printf("%.3f", 7); # imprime 007

Para valores de cadena, tiene el efecto de especificar un tamaño de campo máximo, donde se imprimirán los primeros n número de caracteres de la cadena:

printf("%.3s", 'foobar'); # imprime 'foo'
printf("%.10s", 'foobar'); # imprime 'foobar'
printf("%5.5s %5.5s", 'foobar', 'baz'); # imprime 'fooba baz'

Redondeando número con sprintf()

¿Necesitas redondear un número decimal? o ¿redondear un número hasta un lugar del decimal? con sprintf() tienes la habilidad de hacer eso:

# da un valor de '3' a $foo
$foo = sprintf("%d", 3.14);

# da un valor de '7.3531' a $bar
$bar = sprintf("%.4f", 7.35309);

En la primera variable con %d convertimos el número decimal a un integral.

En la segunda variable con %.4f convierte un valor a un número con punto flotante con preescisión de 4 lugares decimales, redondeando el número como sea necesario.

Octal y Hexadecimal

Puedes convertir tus valores decimales a valores hexadecimales y octales usando el printf() y sprintf(). Usando las expresiones o de octal, x de hexadecimal y X de hexadecimal en mayúsculas:

printf("%x", 15); # imprime 'f'
printf("%X", 15); # imprime 'F'
printf("%o", 15); # imprime '17'


Ahora, como vimos en la sección de los especificadores de FORMATO, usando el símbolo de gato (#), perl convierte el valor a una "forma alternativa". Para %x y %X, pondrá al inicio el '0x' y '0X' respectivamente. Para %o una '0' al principio es agregado.

printf("%#x", 15); # imprime '0xf'
printf("%#o", 15); # imprime '017'
printf("%#4x", 15); # imprime ' 0xf'


FUENTE: Perl en espanol