Cambiar TAGS de un fichero por información
Esto que voy a contar de forma breve tiene relación con el escrito titulado "¿tres capas?"1 en el cual expongo una forma de realizar interfaces de usuario de forma sencilla mediante la utilización de html y cgi.
En un momento dado relato que el cgi escrito en C/C++ deberá pasear el documento html que se quiere presentar al usuario y que se cambiarán ciertos TAGS presentes en dicha página por datos que decide la capa de negocio o parte inteligente de la aplicación.
Esto, en general, se hace parseando el documento de la forma en que se describió en el ártículo anterior, pero hay una forma mucho más rápida y sencilla la cual paso a describir ahora.
Sencillamente en el documento que será presentado se añade un %s en cada punto donde se quiera añadir algo de forma dinámica. Para que quede claro, se escribe el documento html a mano o como queramos y donde nos interese añadir algo se introduce un %s.
Supongo que cualquiera que sepa algo de C/C++ ya ve por donde me estoy encaminando. Efectivamente, cuando se va a presentar el documento y ya lo hemos leido del disco duro y lo tenemos en forma de string, sin parsear ni hacer nada complicado se puede sustituir el %s por lo que queramos con un sencillo "sprintf()" y lo mejor es que podemos poner tantos %s como queramos.
Os recomiendo man sprintf, pero en general se utiliza mucho y seguro que lo conocéis. En cualquier caso y por encima, el sprintf es exactamente igual que un printf() pero en vez de utilizar la salida estándar, lo que hace es copiar el string en la memoria que se haya reservado a tal efecto, sustitiyendo, en este caso, todos los %s por lo que se ponga a partir del tercer parámetro.
Ejemplo clarificador:
sprintf(ptr_memoria,"HOLA %s ADIOS","PEPE");
Como resultado, tendríamos un string llamado ptr_memoria con la información "HOLA PEPE ADIOS"
Si queremos sustituir un valor numérico podríamos poner %d y un número directamente. Sigo recomendando un man sprintf a quien no lo conozca adecuadamente.
Bueno, lo contado es algo muy sencillo y desde luego es muy probable que este método lo utilice mucha gente, pero puede ser que no a todo el mundo se le ocurra que poner un %s directamente en los documentos nos facilite el trabajo tanto.
Voy a poner una clase de C++ que hace exactamente esto, por si alguien quiere utilizarla o le da una idea. No está muy comentada, pero es bastante autoexplicativa.
Las funciones open_file, read_file, close_file son una encapsulación de funciones de C para el manejo de ficheros y realizán exactamente lo que su nombre indica.
La función CambiarTag puede cambiar hasta 6 %s que se pasan en un array de strings, con eso me vale a mi de sobra y el que quiera más parámetros o que se realice de forma iterativa que lo piense un poco.
Recordar que hay que liberar la memoria que se devuelve en esta función en donde se llame.
#include "GeneradorHtml.h"
#include "../comunes/file_control.h"
#include <string.h>
#include <stdio.h>
#define MAX_ELEMENTOS 6
GeneradorHtml::GeneradorHtml(char *lruta)
{
char *ptr_ayuda;
open_file(lruta,"r");
read_file(&ptr_ayuda);
texto_html = new char[strlen(ptr_ayuda)] ;
strcpy(texto_html,ptr_ayuda);
close_file();
}
GeneradorHtml::~GeneradorHtml()
{
delete texto_html;
}
//Hay que liberar en donde se utilice la memoria que se devuelve.
char* GeneradorHtml::CambiarTag(char lnuevo_elemento[][100])
{
int llen_elementos = 0;
int llen_html = strlen(texto_html);
int llen_total = 0;
char *lnuevo_html = 0;
int i;//iterador
for(i = 0; i<MAX_ELEMENTOS; i++)
{
if(lnuevo_elemento[i] == 0)
break;
llen_elementos = llen_elementos + strlen(lnuevo_elemento[i]);
}
//espacio necesario para albergar todo el texto html cambiando las partes necesarias.
llen_total = llen_elementos + llen_html;
lnuevo_html = new char[llen_total+100];
switch(i)
{
case 0:
strcpy(lnuevo_html,texto_html);
break;
case 1:
sprintf(lnuevo_html,texto_html,lnuevo_elemento[0]);
//sprintf(lnuevo_html,texto_html,"HOLA");
break;
case 2:
sprintf(lnuevo_html,texto_html,lnuevo_elemento[0],lnuevo_elemento[1]);
break;
case 3:
sprintf(lnuevo_html,texto_html,lnuevo_elemento[0],lnuevo_elemento[1],lnuevo_elemento[2]);
break;
case 4:
sprintf(lnuevo_html,texto_html,lnuevo_elemento[0],lnuevo_elemento[1],lnuevo_elemento[2],lnuevo_elemento[3]);
break;
case 5:
sprintf(lnuevo_html,texto_html,lnuevo_elemento[0],lnuevo_elemento[1],lnuevo_elemento[2],lnuevo_elemento[3],lnuevo_elemento[4]);
break;
case MAX_ELEMENTOS:
sprintf(lnuevo_html,texto_html,lnuevo_elemento[0],lnuevo_elemento[1],lnuevo_elemento[2],lnuevo_elemento[3],lnuevo_elemento[4],lnuevo_e
break;
}
return lnuevo_html;
}
Analogías entre gestión de software y de música
Desde hace poco tengo a mi disposición una iPod. No es que esté orgulloso, máxime cuando por el momento me resulta muy poco asequible cambiarle el firmware por uno libre.
Aunque no todo está perdido: afortunadamente mi iPod nunca conocerá iTunes :).
En cualquier caso, dejando a un lado el dispositivo de moda, el haber dedicado algo de tiempo a organizar la música, conocer qué son los Podcast, etc. me ha hecho pensar sobre un concepto sencillo que nunca he aprovechado demasiado: las playlist.
Aunque suene trivial, los dispositivos de almacenamiento que usaba hasta la fecha (fundamentalmente cds o mp3 de pequeña capacidad) permitían no esforzarme mucho en cómo organizar los archivos: un directorio por autor, otro por disco y poco más. Fue cuando perdí la organización presente en mis cds cuando me di cuenta de que en realidad, las playlist no son más que lo que se denominan tags en sistemas de control de versiones como CVS o Subversion.
En el ámbito de desarrollo de software (que es dónde mayor acogida tienen estos sistemas, a pesar de que es provechoso para cualquier documento que vaya evolucionando) se utilizan tags y branches para referenciar colectivamente un conjunto de archivos (en el primer caso) y poder bifurcar el progreso de los mismos (en el segundo). Es decir, a partir de un nombre común, se puede obtener la foto de los archivos en el instante en el que se creó el tag.
Las playlist, por otro lado, pueden llevar asociadas connotaciones semánticas muy diversas en función de la intención del usuario o de quien las cree, pero en el fondo son lo mismo: una etiqueta única que permite obtener un conjunto concreto de ficheros.
Si algunos habéis descubierto ya el placer de usar Amarok, seguramente conozcáis ya sus playlists dinámicas, definidas en función de lo que más te guste o más frecuentemente escuches. Este tipo de playlists son análogas a los branches, con una salvedad: los archivos de mp3 son fijos, con lo cual el concepto de branch se ve reducido a la evolución temporal de archivos cuyos únicos cambios son ser añadidos o borrados del branch.
Y para terminar las analogías, el calvario de actualizar los tags Id3 (que por otro lado se ve aliviado con EasyTag) no se da tanto en el software, ya que los metadatos asociados a cada archivo son escasos.
Aun así, algo parecido se da cuando uno se enfrenta a conflictos derivados de los ^M y atributos como el "eol-style" (en Subversion). Una diferencia fundamental es que, en el caso de los archivos ogg o mp3, el nombre del fichero es un metadato más (con EasyTag se puede generar a partir de los demás), mientras que en los sistemas de gestión de versiones lo habitual es que se use como clave primaria (tal como lo hace el sistema de archivos).
Lo bueno de los Id3 es que definen un conjunto de atributos fijo. Lo malo es que los valores por lo general estarán desnormalizados.
Uno puede normalizar su colección, con esfuerzo, pero es dudoso que si la comparara con la de otra persona el criterio coincidiera sin problemas, y el encoding no hace sino empeorarlo.
Ojalá se llegara a un punto en el que, aparte de modificar el continente, fuéramos capaces de actualizar el contenido con la misma facilidad, tal como se hace en el software libre.
Obstáculos: DRM y creatividad musical. Y es que ya se puede vivir sin software propietario, pero el porcentaje de música libre es irrisorio.
¿Tres capas?
Lo primero que quiero decir es que la idea de escribir este texto surgió de un conversación con un desarrollador de entornos web que programa en C# (sharp). También diré que las ideas que trataré de exponer no son propias, a parte de que deben estar en muchos libros, a mi me lo explico un buen amigo.
El caso es que dicho desarrollador me enseñaba con orgullo las cosas que hacía, lo bonitas que le quedaban y la magnífica herramienta de desarrollo de que disponía.
Bien Yo, que no soy desarrollador de páginas web y que me dedico a los entornos empotrados probablemente sea el menos indicado para hablar de este tema, pero para esto está la web, para decir lo que quieras y en este caso sin ser un experto, tampoco creo que vaya a decir algo sin sentido.
Dicho programador me enseñaba como loco lo fácil que era crear una aplicación y lo mucho que le ayudaba la herramienta, y la verdad es que tenía razón, una vez que aprendes a manejar la herramienta, cosa que no parecia inmediata realmete parecia todo muy fácil.
Cuando me enseñaba el código que se generaba me di cuenta que se mezclaba la capa de presentación con la capa de negocio, vamos para entendernos bien, el html y la algoritmia de todo tipo se mezclaba.
Traté de hacerle entender que hacer las cosas así no erá una buena dinámica, pero en seguida me di cuenta de que recibía frases prepotentes del tipo, tu dedicaté a tu mi..da de C que yo he estudiado para esto y sobre todo, me dedico a esto. Lo cual me lleva a pensar que no le enseñaron bien, o que no es un buen profesional o que yo mejor me dedique a mi mi..da de C.
Después de una dura lucha al final lo único que pareció hacerle pensar un poco es que si habóa que cambiar la forma de la página desde el punto de vista de presentación de la interfaz, se podría hacer si todo estuviera bien separado sin compilar código y sin que el desarrollador estuviera presente. Por ejemplo lo podría cambiar un diseñador gráfico sin ayuda de ningún tipo. Pero fué sólo un espejismo,pensar debió pensar pero al final decidió que no le interesaba lo que le contaba.
Yo creo que podría haber mostrado más interes, la gente cree que lo sabe todo y es mejor ser más humilde y tratar de aprender de las buenas ideas, no porque sean mias, es que además están en los libros.
En resumen, no le convencí y yo me sigo dedicando a mi m...a de C.
Bueno voy a contar como hago últimamente las aplicaciones que necesitan una interfaz de usuario. Simplemente es algo que me sirve a mi, y no tiene porque gustarle a nadie más, pero me parece útil y sobre todo extremadamente sencillo ya que en general la parte de la interfaz gráfica suele ser tediosa y complicada, sobre todo en lo que se refiere al manejo de eventos.
Lo que hago es hacerlo todo en un entorno web. Me da igual si se va a ejecutar en local, me simplifica muchísimo el trabajo y dependiendo del nivel que se tenga en entornos web puede quedar aplicaciones muy vistosas. Dejo claro que NO es mi caso. Es decir creo las interfaces necesarias con html y algo de javascrip si es imprescindible. La parte inteligente en C o C++.
Esté método tiene ciertas ventajas, que creo son importantísimas, y supongo que también tiene desventajas, quizás una de ellas es que puedan ser un poco más lentas, y que se necesita un servidor http.
Por supuesto si quieres hacer un juego con gráficos o cosas así este no es el método adecuado, pero sí para realizar las típicas aplicaciones con formularios para rellenar.
Las ventajas claras son:
- Tu aplicación de un plumazo se convieten en distribuidas. Cualquier persona puede acceder a ellas desde donde quiera, en forma local, red privada, o incluso internet.
- Es ideal para aplicacione donde varias personas tengan que utilizar la misma aplicacion. Pones en un servidor tu aplicación y todo el mundo la ejecuta desde donde quiera y a la vez.
- Yo diría que casi cualquiera sabe algo de html, y si no se puede utilizar un editor de html de los de arratrar y soltar. Un libro de javascrips para alguna cosa un poco más complicada y listo.
- Si lo haces bien tienes separada totalmente la capa presentación, la lógica y la capa de persistencia o administración de datos.
Mi forma de trabajar es, creo la página html a mano o con un editor. Donde quiero colocar información que se consigue con la parte lógica del programa pongo un tag del tipo info1, info2 ... de tal forma que antes de servir la página se parsea y se cambia los tags por la información deseada.
Es decir, aunque la página html tiene entidad propia, no la sirvo directamente desde el servidor, la sirve la capa de negocio que lee del disco el fichero con la información html y la presenta. Antes de presentarla la parsea por si tiene que cambiar algo.
Es decir, la única interación entre las capas o nexo de unión son esos pequeños tags que se sustituyen en el momento de presentar la página. Una vez creado el sistema se puede cambiar el aspecto de la página si recompilar nada.
La lógica de negocio la realizo en C o C++, por lo que estoy creando un CGI. Este tipo de aplicaciones ya no se utilizan mucho porque tienen ciertas desventajas con respecto a, por ejemplo, un servlet o una JSP. De entrada son más peligrosas con los recursos, OJO, ya que si no programas bien puedes tirar un servidor, pero como son mis aplicaciones y me fío de mi mismo, lo hago así, por comodidad ya que son los lenguajes que manejo a diario.
Otro inconveniente es la forma en que el servidor replica la aplicación en memoria cuando hay varios usuarios utilizándola a la vez, siendo menos eficiente en el caso de los CGI ya que lanzan tantas aplicaciones como usuarios la utilicen, tal cosa se solventa de forma más ligera, mediante hilos en otro tipo de aplicaciones como las servlets. Pero vuelvo a lo mismo, en general sólo yo utilizo las aplicaciones y en cualquier caso los PC actuales pueden soportar muchas aplicaciones en memoria sin problemas.
En resumen, un poco de html, un poco de mi...a de C básico y un apache y montas un buen chiringo.
Por cierto, como siempre digo, ¿Alguien sabe en qué está escrito el kernel de linux? SÍ, EN ESA MI..DA DE C.
Comment by chous on 2006-12-21 11:43:29
Lo que has escrito es casi un WTF1 :).
Lamentablemente los desarrolladores web están sobrevalorados. Son profesionales cuya competencia fundamental es conocer los menús del Eclipse o del Visual Studio .Net, sin cuestionarse el código que generan (en el caso de que sean conscientes). Y lo digo teniendo en cuenta que me dedico a hacer aplicaciones web :).
El caso es que es a donde se tiende: tanto la guerra de IDEs (en Java Eclipse vs IntelliJ vs NetBeans), como lenguajes de programación (a partir de Java 5 ya la fase de generación está incrustada en el propio código), tal como pasó con los editores WYSIWYG HTML, siguen empeñados en hacer al hombre más tonto (menos capaz de entender situaciones y por tanto de resolver problemas), y a la máquina más lista.
Respecto a la parte técnica de tu exposición, en mi opinión lo más cercano a una separación exhaustiva y rigurosa entre la capa de presentación y las demás es lo que propone StringTemplate. Ni JSP, ni JSF. Pero claro, es menos user-friendly y por tanto no tiene éxito.
Al final uno se ve obligado a tomar una decisión: ser mejor haciendo lo que hace o que lo que uno hace le dé menos trabajo.
- 1. http://www.thedailywtf.com What The Fuck
El victimismo ilustrado
Como todo el mundo sabe, recientemente falleció Pinochet. Es difícil no haber recibido la noticia, dado que ha dado lugar a numerosas impresiones por parte de casi cualquier profesional de la comunicación.
Yo por ejemplo vi a Pablo Motos haciendo chistes congratulándose del hecho, a Jesús Vázquez comentando la noticia con júbilo, y da la impresión de que se entiende por correcto el mostrar desprecio por ese personaje y alegría por su fallecimiento.
La verdad es que mostrar alegría por la muerte de alguien me produce, cuando menos, rechazo. Me produjeron rechazo las imágenes de palestinos (o vete a saber quiénes eran en realidad aquellas personas) difundidas por todos los medios celebrando el éxito del 11-S, igual que las muestras de júbilo por la pena de muerte para Sadam Hussein, e igual que las del caso con el que he comenzado.
También me llama la atención que uno pueda hacer juicios de valor y establecer una opinión sobre Pinochet cuando no ha sido juzgado.
Creo que el no haber sido juzgado es más importante que su muerte, porque el no existir un veredicto ni una investigación que permita arrojar objetividad al historial del acusado, impide que uno tenga la autoridad moral para emitir juicios objetivos (los únicos válidos afortunadamente). Dicho de otro modo, al no ser juzgado, Pinochet sigue siendo presuntamente inocente.
Y eso, a pesar de que al final con seguridad se hubiera demostrado sus horribles crímenes, es bueno.
Todo esto, claro está, es algo que suena mal. Suena bien despreciar a cualquiera que se pueda hacer pasar o sea sospechoso de pertenecer a cualquiera de estos grupos (por poner algunos de moda)
- Terrorista
- Dictador
- Maltratador
Así todo es más sencillo. Pero aún lo podemos simplificar más. Podemos sentirnos ofendidos, heridos o al menos molestos con cualquiera que no comulgue con esa forma de actuar ni con esos pre-juicios. Y es que vivimos en una época de uniformidad, de subjetividad, y de consagración de las víctimas como interlocutores.
Ahora ser víctima tiene muchas ventajas: te permite autoproclamarte portavoz político y/o moral para influenciar procesos de paz (más bien, curiosamente, para tratar de boicotearlos), te permite favorecer que se presuponga la culpabilidad del acusado de maltrato, te permite cometer injusticias impunemente. Y lo mejor es que puedes arrojar como contraargumento tu sufrimiento y supuestamente defenestrar las opiniones de personas que no se rinden ante ese ardid.
De aquellos que tienen la desfachatez de pensar que el perder a un hijo precisamente te impide una visión objetiva sobre las vías de solución del conflicto y entendimiento con sus autores; que las muertes de mujeres no se deben a características inherentes al gen Y al cual hay que combatir ante el más mínimo indicio, aunque se prive con ello a ciudadanos de derechos fundamentales como la presunción de inocencia. Sí, ya sé que ayer hubo otra muerte y llevamos ya X este año.
No hay que darle vueltas a las cosas. Reflexionar es secundario, lo fundamental es lo que te dice el corazón.
A ver quién tuvo narices para estar en desacuerdo con Pilar Manjón en su día (no ahora, que para eso está la Cope), con todo lo que estaba sufriendo. Yo no dudo que sufriera, con lo que no estaba de acuerdo era con lo que decía. Su dolor no era el objeto de debate, sino un recuerdo vivo de la tragedia.
Como apunte final en contra de este auge del victivismo como arma moral, en mi opinion debería establecerse un criterio o una clasificación en niveles, para evitar malentendidos. Para mi, por ejemplo, una víctima del terrorismo es alguien que murió en un atentado, o que resultó herido y las secuelas le causan una minusvalía.
Los padres, hijos, nietos, demás familiares o amigos son personas que se vieron afectadas indirectamente por el hecho, pero no son víctimas. No estoy en desacuerdo con que se les denomine como víctimas, pero no pertenecen al mismo grupo. Hay una diferencia cualitativa. De difundirse el criterio seguramente les dolería, pero supongo que estarán acostumbradas, ya que hacen de eso su bandera.
Supongo que después de decir esto debería sentirme mal, porque está claro que lo digo movido por una especie de odio irracional a gente de bien que bastante tiene con vivir día a día con el recuerdo de su tragedia, de cómo arruinó sus vidas. Todo el esfuerzo es para camuflar bajo un manto de reflexión que soy algo despreciable y que acabaré siendo un maltratador.
Las cosas facilitas, por favor, y que me hagan caso que para algo tiene que servir la putada que me ha pasado.
Democracia, Alternancia, Rotondas y Semáforos
Se me ha ocurrido una analogía entre determinadas prácticas políticas y formas de regular el tráfico.
La democracia, tal como comúmente se concibe, favorece el criterio más respaldado por la mayoría. Eso da lugar, como es sabido, a lo que se denomina como dictadura de la mayoría. Este hecho es algo característico y me da la impresión de que se considera valioso.
Por otra parte, en ocasiones la democracia se pone en práctica de forma que el poder se va alternando de una forma más o menos periódica entre (por lo general) dos partidos, los cuales "representan" (dicen representar) la voluntad y el criterio de amplios porcentajes de la población.
Dejando a un lado si de hecho se representa a nadie, y si dichos representantes actúan realmente como portavoces de los que dicen representar, se podría hacer un paralelismo, y pensar en la alternancia como un semáforo, que regula a quién se le permite pasar durante un período de tiempo en detrimento del resto. Ese sistema es bastante fácil de entender, dado que no es muy sofisticado: se reparte el derecho de uso en franjas temporales.
Hay que tener en cuenta, por otro lado, que los sistemas que regulan el acceso a un recurso limitado se pueden analizar usando una rama matemática denominada teoría de colas. Aprovecho para dejar caer que no está de más la aplicación del conocimiento científico a las disciplinas sociales, en la medida que se pueda, y no ceder ante la subjetividad generalizada bajo el argumento de que no hueco para la objetividad en las ciencias humanas.
Imaginémonos por otro lado lo que sucede en una rotonda. A priori, es un modelo "liberal", en el sentido de carecer de elemento regulador: el que llega antes y puede, gana. Comparado con el semáforo, funciona bastante bien. Es más eficiente, ya que garantiza que el recurso sólo está desocupado si no hay usuarios que lo demanden. Un semáforo hace esperar incluso si no hay nadie haciendo uso de la vía.
En términos democráticos, la mejora conseguida por un sistema basado en rotondas en lugar de semáforos encaja bastante con la idea de una democracia más "pura" (más representativa que parlamentaria), en la cual no hay que esperar 4 años (o los que acordados) para que tus ideas se vean reflejadas en el criterio de la clase dirigente.
Sin embargo, la rotonda, y por ende la analogía democrática, tiene un punto débil: margina a las minorías. Si la mayoría de vehículos que accede a una rotonda va en la misma dirección, el resto de las rutas que se vean entorpecidas lo tienen crudo. Es fácil ver ejemplos cada día: la rotonda no garantiza un acceso en un tiempo finito al recurso a nadie. La corriente dominante favorece el uso de la rotonda a quienes van en esa dirección. Llega un momento de saturación en el que sólo pueden acceder a la rotonda quienes vayan en una dirección que no entorpezca dicha corriente.
La pregunta es: ¿Las minorías importan?
Mis reflexiones teológicas
Encontré una frase de C.S. Lewis que me hizo reflexionar sobre la existencia de Dios: «En "Hamlet" se rompe una rama y Ofelia cae al río y se ahoga. ¿Ocurre el suceso porque se rompe la rama o porque Shakespeare quiere que Ofelia muera en esa escena? Puedes elegir la respuesta que m¡s te guste, pero la alternativa no es real desde el momento en que Shakespeare es el autor de la obra entera».
Poniendo en contexto la cita, C.S. Lewis trata sobre el dilema: ¿Quién tiene la responsabilidad de un suceso acaecido? Las leyes de la naturaleza o Dios. En la cita Dios es Shakespeare, y es que claro, si Shakespeare es el creador de la obra tiene poco sentido analizar quién es el responsable de la muerte de Ofelia, lógicamente Shakespeare lo quera así.
Me llama la atención como un ateo se convierte al cristianismo tras años de conversaciones con Tolkien, y dedica parte de su tiempo a escribir sobre el tema. Pero claro, si yo hubiera tenido la suerte de conocer a Tolkien puede que ahora también fuera creyente.
En fin, centrándome en lo que realmente quiero comentar aquí-. Partamos de la negación de las premisas normalmente asociadas a Dios (entendiendo a Dios como el creador del universo). A saber, bondad, omnipresencia y omnipotencia. Empecemos por un Dios omnipotente y omnipresente pero carente de toda bondad. Esta situaci³n no es del todo improbable y seguramente sería con la que me quedaría si creyera en Dios pero mi propuesta será otra. Esto explicaría por qué vivimos en un mundo tan injusto y absurdo, sin embargo no me parece que un Dios malvado se contentara con dejarnos en este difícil mundo a nuestro libre albedrío. Creo que usaría su omnipotencia para fastidiar más. Aunque claro, puede que en catástrofes como los tsunamis tenga algo que ver un Dios de este estilo.
Un Dios bondadoso, omnipotente pero sin omnipresencia causaría una situación curiosa, es decir le encantaría ayudar y podría hacerlo pero al no ser consciente de lo que ocurre en el mundo se ve impedido. No me quedo con esta ya que considero que la omnipotencia implica la omnipresencia; si todo lo puedes, ¿por qué no estar en todos sitios a la vez?
De igual forma, la combinación anterior pero con un Dios malvado es absurda por el mismo motivo.
Por otro lado un Dios bondadoso, omnipresente pero sin poder alguno --por haber consumido todo su poder en la creación del mundo, por ejemplo-- es factible aunque lamentable, ¡ya podía haber reservado algo de poder para guiar un poco su creación! Es como construir un avión, hacerlo volar y no ponerle un piloto que lo controle, simplemente se estrella. En cualquier caso no creo que la omnipotencia permita la propia pérdida del poder así que volvemos al absurdo.
La opción que mantiene el cristianismo sin duda me parece la menos probable; hay que ser malvado para tener la capacidad de mejorar las cosas y no hacerlo. Y esto es una contradicción puesto que se parte de un Dios bondadoso.
Yo me quedo con la inexistencia de Dios y el concepto de infinito, me es más sencillo pensar que el momento de la creación está en el infinito. Es decir, no hay tal creación y por tanto no hay tal creador. Soy consciente de que el concepto de infinito nos hace sentirnos incómodos pero uno se puede acostumbrar a ello; basta con utilizar el símbolo adecuado y manejar rangos cercanos a nosotros. Con los números lo hacemos sin ningún problema aparente, raramente manejamos números muy elevados aunque sabemos que existen y el infinito lo manejamos como un concepto abstracto al que tienden los números y lo simplificamos con el símbolo correspondiente. ¿Por qué no asumir algo del siguiente estilo? A mi me vale. Esto no pretende ser una demostración, ¡nada más lejos de mis posibilidades! Es simplemente una opinión personal de un tema tan extensamente debatido en la historia.
Comment by ecamino on 2006-05-23 07:49:35
Desde luego este es un tema del que se puede debatir durante toda la eternidad y no llegar a ninguna conclusión.
Pero voy a tratar, tan solo, de resaltar lo que creo un gran fallo de la disertación inicial.
En cierto momento, se plantea la idea de un creador como pudiera ser un escritor, y de esa forma se puede llegar al absurdo de una conversión a la creencia de Dios al conocer a dicho escritor/creador/Dios, en cuestión.
Es claro que por conocer al escritor/creador de una historia no nos vamos a convertir a nada, pero eso es, porque comparado con el escritor/creador nosotros tambien somos escritores/creadores, es decir en comparación también somos Dioses.
La pregunta adecuada es; qué pasara si Ofelia, de alguna forma descabellada hubiera conocido la existencia de Shakespeare, ahora ya no está tan claro. Si de alguna forma Ofelia era un ser que vivo, aunque sea en la imaginación de los lectores, vivo sin conocer a su creador/Dios.
En resumen, si Ofelia hubiera conocido a quien manipulaba su vida, y hubiera visto que lo que escribia ese manipulador se cumplia totalmente, os aseguro que Shakespeare hubiera sido su Dios.
Por otro lado hay muchas cosas inexplicables por ahora, que dan una posibilidad bastante buena a la existencia de un ser superior. Me refiero al universo, planetas, estrellas, masas oscuras ..... ¿todo eso de donde ha salido?
Me parece bien la idea de que existe desde siempre. El infinito es un concepto bastante asumible, y muy bien utilizado por el creador de esta entrada del log pero en cualquier caso la existencia de Dios es tan buena como un buen infinito.
La moderación agotadora.
El problema de ser una persona reposada en sus razonamientos, sin grandes extremismos y con una actitud de ... digamos ... no odiarlo todo, es que acabas siendo el abogado del diablo en casi todas las ocasiones.
Da igual el que tema que se esté debatiendo, para cualquier interlocutor que tenga una postura sobre el tema a debatir suele parapetarse en uno de los extremos posibles, sin que en ningún momento se les pueda atraer hacia opiniones diferentes a la suya.
Por cierto que las ideas podran ser tanto razonadas como aprendidas, pero en mi opinión priman claramente los conceptos aprendidos ya que incluso los que parecen más despiertos tienen ideas de otros más despiertos aún. Es más, mientras más poderosa sea la mente del que influye más radical se mostrará alguién influenciado, y por supuesto las declaraciones desprendidas, serán dadas como propias.
Considero agotador tanta discrepancia, todo el mundo "sabe de todo" y su opinión siempre es la más válida y no sólo eso, además es siempre una opinión colgada del extremo más alejado posible sobre la opinión del otro.
Parece que sólo hay rojos, o fachas, Catalanes y Españoles, Pinguinos o ventanas, hardware o software, palms o Pockets PC, reproductores RIO o iPods, vinilos o CD (.. sí, sí los hay que afirman que los vinilos tienen un no sé qué...). Vamos la lista es interminable.
En fín que no sé muy bien por qué escribo esto, quizás vaya de virtuoso ya que según el refrán la virtud está en el centro. De cualquier manera lo que sí quiero constatar es que he aprendido a callar en muchas ocasiones. Pocas veces merece la pena decir algo, no vas a convencer a nadie y peor que el intento infructuoso es que dependiendo de la opinión del contertulio hay que decirle unas cosas u otras. Cuando te gustan dos cosas tienes que luchar con los dos extremos a los que sólo una de las dos cosas le satisface.
Cuántas veces me he encontrado hablando maravillas de los Pingũinos y de las ventanas e intentanto una lucha horrible y agotadora que no lleva nunca a ningún sitio. Es como querer que uno del Barcelona se haga del Madrid o viceversa o como si un bisexual tratara de convencer a los heterosexuales que tener relaciones con uno del mismo sexo es bueno.
Como último apunte diré que llevado al extremo esto es lo que pasa en el mundo, es lo que hace que la gente se esté matando y haciendo barbaridades impensables para la época en que vivimos. Es incluso comprensible, dado lo salvaje del ser humano, que cuando el hombre estaba aprendiendo a ser hombre se despacharan a gusto. Pero ahora en pleno siglo XXI cas nos despachamos igual, no sólo por cosas materiales, lo cual es íncreible pero comprensible dada la avaricia demostrada por la historia, sino también por conceptos filosóficos del tipo religioso o cultural, lo cual señores más que increíble es un tremendo despropósito y una demostración de maldad.
Me despido sin más, esperando no haber aburrido mucho, a su vez espero que estas palabras resuenen en la conciencia de algún adicto a lo extremo, aunque ... en realidad no hay salida para el ser humano.
Libros 2005
Recopilatorio personal de los libros que he leido durante 2005.
- Koba el temible-Amis.
No coincido con la marcada fobia comunista del autor, pero aporta mucha información sobre los logros de Stalin.
- Gödel, Escher, Bach-Hofstadter.
Este libro es increíble. Exageradamente bueno. No tengo palabras.
- ¿Qué es la propiedad?-Proudhon.
Muy interesante. Debe ser una de las primeras obras dedicadas a este tema.
- Via revolucionaria-Yates.
Novela sobre el EEUU de los 50, con personajes muy creíbles.
- Mente y materia-Schrödinger.
Breve pero hace reflexionar sobre Darwin/Lamarck, y hace una graciosa advertencia sobre el posible efecto del funcionariado en la evolución del hombre.
- La torre oscura 5-King.
Los personajes conocen al autor en la propia novela.
- Cómo se reparte la tarta-Chomsky.
Chomsky duele, pero es que la realidad duele.
- Free Culture-Lessig.
Muy recomendable para tener un punto de vista propio sobre la preocupante propaganda actual destinada a conseguir, por la fuerza, un consenso social para demonizar lo que hasta ahora era un valor: compartir.
- Mona Lisa acelerada-Wibson.
Para pasar el rato.
- El teorema de Gödel-Nagel, Newmann.
Resumen del famoso teorema y el enfoque de la demostración.
- La sombra de Hegemón-Scott Card.
Me gustó más "La sombra de Ender", pero es divertido.
A punto de terminar:
- Materia de reflexión-Changeaux, Connes.
Se abarcan muchos temas desde dos puntos de vista distintos.
- Brevísima historia del tiempo-Hawking, Mlodinov.
Para los que nos resistimos a dejar de interesarnos por la física básica: muy bien terminado, conciso y claro.
A medias:
- El código y otras leyes del ciberespacio-Lessig.
- Keynes-Skidelsky.
- La riqueza de las naciones-A. Smith.
- Leibniz en 90 minutos-Strathern.
Técnicos relacionados con las Tecnologías de la Información:
- Linux server hacks-Flickenger.
Consejos sencillos pero útiles.
- Knoppix hacks-Rankin.
Para empezar a personalizar Knoppix.
- An introduction to programming in Emacs Lisp-Stallman.
Para saber más sobre Emacs.
- Version control with Subversion-Collins-Sussman, Fitzpatrick, Pilato.
Muy útil y bien estructurado.
En curso:
- ANSI Common Lisp-Graham.
Lisp engancha.
- Classic Shell Scripting-Robbins, Beebe.
Para no tirar siempre de los mismos recursos.
- Texinfo-Chassell, Stallman.
Después del paso (relativamente) en falso de DocBook, Info es una garantía.
- Open Source licensing-Rosen.
Discusión en profundidad de las licencias más conocidas.
- Concurrent and Real-Time programming in Java-Wellings.
Cómo usar Java en situaciones más exigentes.
La riqueza del lenguaje
No hace mucho le comenté a un amigo que el lenguaje oral no necesariamente permite la transmisión del meme sin alteraciones.
Es decir, la utilización del lenguaje para transmitir una idea conlleva una representación verbal muy ligada a la forma que suponemos que el receptor interpretará el mensaje.
Todo esto es una forma muy abstracta de expresar algo tan sencillo. De hecho, el párrafo anterior junto con éste permite una realimentación que hace que pierda ese toque de sencillez.
Muchas veces da la impresión que las dificultades en la comunicación tienen que ver con la riqueza de vocabulario. Sin embargo, hay mucha información en el contexto. Puedes mentir sin que el otro se dé cuenta, o decir la verdad sin saber que el otro cree que mientes. Pero en cuanto haya realimentación, la cosa se complica. Y es que, si lo que se quiere es que lo que se dice se interprete de una forma particular, hay que cuidar no sólo el qué, sino también el cómo. Pero eso no es todo. Puede que ambos deban parecer congruentes. Puede que información no controlada por el emisor influya en la interpretación: ¿Lo dice con seguridad, o duda? ¿Asegura o sugiere?
Además, hay connotaciones sociales ("decir las cosas a la cara", "no le escribas un mensaje, llámale"), que fortalecen la intención del que habla de cara a influenciar al que escucha. No sólo es decir lo que se quiere decir, sino que se entienda lo que se quiere que se entienda.
La influencia puede ser inversa, es decir, casos en los que la actitud del receptor impone sus propias condiciones: desinterés, impaciencia, brevedad, simplicidad. Esto puede imponer unas restricciones tan severas que haga que el que tiene algo que decir decida desistir por la imposibilidad de conseguir una representación en el receptor remotamente parecida a la propia.
En general, podríamos asociar el mensaje con la parte objetiva de la comunicación, y el contexto y la actitud de los contertulios con la parte subjetiva. Bajo esas hipótesis, si lo que se desea es el aspecto subjetivo de la comunicación, es conveniente una comunicación personal, sonora, con presencia física. Si por el contrario se quiere que prime la objetividad, sin verse afectado por los condicionantes del destinatario, la comunicación escrita da mejor resultado.
Eso no impide que sepas que habrá gente que no lea tu blog no porque no le interese o porque no esté de acuerdo, sino porque es demasiado largo de leer.
La toma de decisiones
Vengo un tiempo utilizando un cliente RSS1, el KNewsTicker.
Eso me permite recibir titulares de artículos y noticias de mis fuentes preferidas.
Uno de ellos es República Internet2. En la opinión alarmista de fondo en lo referente a lo político y social, solemos concidir.
Al ver el titular 3 RSS de Nemo, he seguido leyendo y me he vuelto a sorprender de lo que se entiende por "capacidad para tomar una decisión".
La noticia en sí no es más que una de las tantas del estilo, en las que se pide a nuestros representantes políticos que evalúen una propuesta y tomen una decisión al respecto, dando como resultado una absoluta falta de criterio y conocimiento.
Habida cuenta de las dificultades que encuentra la gente para entender el software libre, podría entenderse que una muestra de ese público general tomara asiento en el congreso. Por lógico que parezca, a mí me parece una irresponsabilidad.
En mi opinión, el que no entienda el tema a discutir no debería tener la potestad para influir en la decisión. Y menos aún, demostrar su incapacidad con declaraciones.
Se podría equiparar la argumentación usada para justificar la decisión, basada en que se tendería al monopolio, al conflicto fumadores/no-fumadores. Fumar impone una restricción al no fumador, que no puede evitar respirar el humo.
Se podría favorecer el monopolio si se discutiera favorecer una empresa tabacalera frente a otra.
Aquí, además, se evalúa el conflicto dentro del ámbito de los servicios públicos.
Siguiendo con el ejemplo, sería como si se le dijera a un no-fumador que no tiene más remedio que conformarse a respirar humo, dentro de un hospital público (eso no tendría sentido en el Ruber4).
- 1. Lo comento porque la mayoría de los usuarios de MsWindows no sabréis lo que es. Para el próximo día de Internet, habría que recordar a red.es que Internet no es el Explorer.
- 2. http://www.republicainternet.com
- 3. Carta a los Reyes Magos
- 4. Cuyo nombre o se pronuncia incorrectamente, o debería ser Rúber
Periodismo
Hay una característica de los medios de comunicación tradicionales, como la televisión o la prensa, que establece una relación informante-informado muy desigual en su cardinalidad.
Es obvio, el contenido no se adapta al receptor: la misma noticia la leen muchas personas. Tampoco hay realimentación o bidireccionalidad, el efecto o la opinión producida en respuesta no se divulga, y sólo es captada indirectamente a través de mecanismos que en cualquier caso únicamente proporcionan una estimación de la reacción de la audiencia, en promedio.
¿Y todo esto a qué viene? Bueno, por un lado, mi papel como receptor cada vez me resulta más incómodo. Por otro, me hace cuestionar tanto la aptitud como la actitud de los informantes o mensajeros.
Será cuestión de organizar un poco más la argumentación. Probemos con un ejemplo:
Hace poco puse la tele cuando transmitían (como que yo sepa sólo lo hicieron una vez, no hablaré de "retransmisión") unos informativos en Telemadrid. Digo el nombre porque no encuentro el motivo para no hacerlo.
La reacción que causó en mí el contenido que recibí fue, aunque más o menos leve, de indignación. Daré algunos ejemplos de noticias que contribuyeron a tal estado de ánimo:
- El nuevo Papa dice algunas palabras en castellano. Aparece una estatua del antiguo Papa en la Castellana, y el presentador lo califica como "uno de los mayores luchadores por la paz".
- Aparece C. Rice compareciendo para hablar de lo de las cárceles de la CIA, a la vez que aparece en la parte inferior de la imagen "explicación satisfactoria".
Tengo que reconocer que no sé nada de periodismo. Puede ser que trate de informarme más de su historia, de sus personajes más relevantes, etc. Como resultado posible de mi ignorancia, siempre he pensado o he compartido con los demás la idea de que en el periodismo lo fundamental es el rigor, la independencia, y la objetividad. Hay espacios claramente delimitados para interpretar las noticias y dar la opinión personal, y ésos no son los informativos.
Habiendo dicho esto, comento, por si es necesario, por qué me indigné:
- Yo considero dudoso que eso sea noticia, pero en cualquier caso, la afirmación sobre el antiguo Papa no es ni rigurosa, ni independiente, ni objetiva.
De haberla iniciado con un "en mi opinión, ...", sólo se habría incurrido en un defecto: incluir un contenido propio de tertulia periodística en un informativo.
Pero es que se afirma, dando a entender que el oyente tiene que aceptar eso como verdad.
¿"Explicación satisfactoria"? ¿Es una broma? ¿Es satisfactoria para quién? Si eso no es una interpretación (en mi opinión, extraordinariamente sesgada), es que el concepto de periodista debe ser distinto al que yo pensaba.
En ese estado de indignación, me pregunto: ¿es un problema de actitud o sólo de aptitud? Como he dicho, el papel de receptor impide hacer esa pregunta directamente. Sólo me queda plantear hipótesis y decidir cuál me parece más probable.
- Puede ser que sea simplemente debido a errores no intencionados. Pero en ese caso, lo normal sería una rectificación.
Lamentablemente, sólo hay rectificaciones en casos de presión, y a consecuencia de ésta, no de una evaluación y reflexión sobre las posibles incorrecciones cometidas. Por poner un ejemplo, el famoso "12 meses 12 causas, mes de Octubre"1. Esta hipótesis no me convence mucho, veamos más.
- Puede ser sea habitual manipular más o menos sutílmente la forma en la que se difunden las noticias, de forma que:
- Se interprete la noticia de una forma u otra.
- Se trate de influenciar la opinión del oyente/lector.
En mi opinión, las deficiencias en la aptitud se ven ampliadas por unas más preocupantes carencias en la actitud. Siempre he oido opiniones manifestando cuánto difieren los enfoques que dan dos periódicos distintos frente a la misma noticia. Creo que todo el mundo aprecia este hecho, como norma general. Aceptemos, por tanto, la hipótesis b). Nos queda decidir si simplemente nos quedamos en la b.1) o si por el contrario hemos alcanzado ya la b.2).
Me inclino a ser pesismista. Sin embargo, aunque al ponerme la camisa de lector/oyente/receptor me esfuerce por llevar a cabo una interpretación inversa, para poder llegar a algo más o menos fiable, eso no me impide pensar que realmente lo más probable es que la gente, el público en general, digiera los contenidos, por así decirlo, sin procesarlos antes.
Esto, de cumplirse, resolvería algunas preguntas que me hago, y es que, en promedio, nuestra opinión no es nuestra, es fundamentalmente la que interesa que sea. Como eso parece alarmista, lo decoramos con diversidad, y así atenuamos la preocupación. Sí, me refiero a leer tanto El País como El Mundo. A contrastar las fuentes. Eso, lamentablemente, no funciona si la información que se contrasta les llega a dichas fuentes ya sesgada, o es directamente mentira.
Pero por otro lado, hay que ser paranoico para pensar así. Siempre hubo armas de destrucción masiva.
Hay que luchar contra la piratería y su clara relación con el tráfico de lo que sea. Hay que hablar de terrorismo, o de chapapote, o de cualquier palabra que es parcial en su esencia, y ponerla en boca de las personas de a pie.
En los ratos en los que no hablan de fútbol, claro :).
Empotrar Linux. Primera parte.
Hace mucho tiempo que pienso que, en general, la gente no tiene una idea clara de cómo empotrar Linux en una placa de propósito general y poder aprovechar toda la potencia de un sistema Linux en un entorno reducido y estoy seguro que es un tema muy interesante para muchos.
Hay varios problemas que planean sobre esta inquietud. La primera pregunta que todo el mundo se plantea es, ¿Dónde va a ser almacenado el sistema operativo? ¿El kernel? ¿El boot? .....
En definitiva estas dudas se resumen en dos, que serían:
- ¿Cómo arranca, en general, cualquier chipset formado por un procesador, memoria, dispositivo de almacenaiento y entradas/salidas de proposito general?
- El sistema operativo llamado Linux que vamos a empotrar, ¿Qué es? ¿Qué elementos lo forman?
La respuesta a la pregunta planteada no es sencilla de desarrollar pero trataremos de realizar un resumen suficiente para hacerse una idea.
El lector que pretenda entererarse con detalle y de una forma completamente exhaustiva sobre este tema que nos ocupa le recomiendo que se compre un buen libro y que no siga leyendo. Si por el contrario se busca una idea general, es posible quedar m¡s o menos satisfecho con lo siguiente.
Básicamente la BIOS1, al recibir un reset realiza una serie de comprobaciones del hardware y cuando decide que todo es correcto va a una dirección que coincide con el primer sector de un dispositivo de almacenamiento (configurable en la BIOS) donde se va ha ejecutar un peque±o programa MBR (Master Boot Record) que está ocupando tan solo el tama±o de el primer sector del dispositivo. Es decir, es muy pequeño, para hacerse una idea en un disco duro serán 512 Bytes, desde ese pequeño programa se puede llamar a otros de mayor tamaño, pero eso es otra historia.
Este programa es el boot de arranque, fundamental para todo este entorno y que para concretar diremos sería el famoso LILO2 o GRUB3 para arquitecturas típicas de PC y por ejemplo el uBoot para uClinux (Linux para dispositivos sin MMU4). Por cierto, si se me permite, no desprecies la potencia de un dispositivo de estas características, por ejemplo un Coldfire.
Una vez que se ha ejecutado el boot, éste llama al kernel5 de linux, cuya imagen no ocupa mucho. Podéis mirarlo en vuestro PC (/boot) y quizás os sorprendáis, 1,2 MB más o menos. El kernel es una especie de interfaz entre todas las aplicaciones que corren en el PC y el hardware. Es decir los drivers etc.
Normalmente se le dice al boot la ruta donde se encuentra la imagen kernel, por ejemplo /boot/vmlinuz..... Por otro lado nos encontramos con que necesitamos un rootdir o root file system, que es tpicamente lo que nos encontramos al hacer un ls en el raiz /. La información de dónde se encontrará el rootdir también se encuentra en el boot y esta información será el dispositivo de almacenamiento donde se encuentre el árbol de directorios. Por ejemplo (hda0).
Recomiendo hechar un vistazo al menú de arranque:
cat /boot/grub/menu.lst
En este punto comentaremos que dado el memoria disponible en entornos empotrados es muy escasa tendremos que intentar que el rootdir ocupe lo menos posible, es m¡s aunque la imagen del kernel no ocupa mucho también debemos de preocuparnos de reducirlo al máximo. Un simple make menuconfig, e intentamos reducir a lo mínimo posible los módulos innecesarios.
De lo contado hasta ahora, se extrae que montar un linux es algo bastante sencillo en teoría, complicándose posteriormente en la práctica.
El resumen sera que en algºn dispositivo de almacenamiento grabamos como buenamente se nos ocurra un rootdir, y en el mismo u otro dispositivo de almacenamiento grabamos el kernel de linux. A la BIOS le decimos que arranque de donde tengamos el boot (LILO, GRUB, uBoot)y al boot le indicamos donde est¡ el kernel (ruta) y el rootdir (dispositivo). No parece muy complicado, ¿no?. Bueno por supuesto es una pregunta retórica y en la práctica sá es bastante complicado por los típicos problemas de qué es antes el huevo o la gallina; quiero acceder a un disco duro pero los drivers se encuentran en el mismo disco duro ...... quiero flashear mi rootdir pero claro como no hay nada montado no tengo la herramienta de linux que flashea ...
También es complicado conseguir la configuarción del kernel que permite arrancar nuestros dispositivos, etc.
Un método interesante para arrancar que tienen los boot es mediante un tftp6 (trivial ftp) con lo que no es necesario tener nada en nuestro dispositivo, salvo el boot de arranque. La imagen del kernel y la del rootdir estar¡n en cualquier sitio que posea un demonio servidor de tftp. Vamos que lo recomiendo para hacer diversas pruebas r¡pidas de si lo que se est¡ compilando es una piedra que no arranca o nos sirve.
Otro consejo que quiero dar es que si no se tiene un dispositivo externo de flasheo tipo JTAG o BDM se tenga un cuidado extremo en los flasheos que se realicen mediante el propio linux ya que si se flashea algo inadecuado que no arranque nos quedaremos sin la posibilidad de hacer nada y con una placa inservible e insalvable, salvo con el flaseador externo que he comentado.
Para terminar comentaré que con lo contado, más o menos, se puede vislumbrar que es lo mismo tener un potente PC o una placa de propósito general con digamos un H8 o un cold fire a 66Mhz y una peque±a memoria flash como unidad de almacenamiento. Cambiara la potencia y los dispositivos, pero la idea es la misma, BIOS, boot, kernel, rootdir.
Espero poder realizar un segundo articulo con los pasos detallados, uno a uno, de cómo instalar un pequeño sistema en una placa de proposito general sin disco duro y con pocos recursos.
Espero que se entienda el ámbito puramente divulgativo de estas lneas y sin intención de ser una referencia importante sobre este tema, en ningºn momento. Creo que queda patente en todo momento que son ideas generales, no suficientes para afrontar proyectos de ningún tipo. Simplemente espero que alguien pueda leer este peque±o articulo y decir: No puedo hacer nada con esta información pero si encuentro a alguien que sepa podré hacerle las preguntas adecuadas.
Sobre el famoso Canon de la SGAE
Creo que no seré el primero en decir que el Canon que se establece en beneficio de los autores asociados a la SGAE es claramente injusto, aunque legal según lo establece el Artículo 25 de la Ley de Propiedad Intelectual.
Es claramente injusto por una razón fundamental: Se aplica a todo aparato o medio que el usuario final utiliza para realizar copias de contenido con Propiedad Intelectual; independientemente de que realmente se utilicen para ello e incluso independientemente de que el autor esté o no asociado a la SGAE; hecho que produce algo tan divertido como el beneficio de los asociados a la SGAE por copias de contenido cuya Propiedad Intelectual pertenece a un no asociado.
A mi entender no es necesario un Canon de este tipo para garantizar la supervivencia de la cultura, la aparición de nuevos autores o el avance de la sociedad en general.
¿Acaso Van Gogh necesitó de algún tipo de Canon para decidir hacer sus obras?, simplemente trató de vender su arte aunque no con mucho éxito estando él en vida.
A quién le parezca que el ejemplo citado es tirar piedras sobre mi tejado, se equivoca de raíz.
¿Acaso mi trabajo vale menos que el de cualquier autor?, porque a mí nadie me garantiza que haciendo mi trabajo bien y diariamente, al final no vaya a morirme en la miseria como le ocurrió a Van Gogh. ¿Son los autores más que nadie? ¿porqué hay que garantizarles de por vida una paga asegurada por el hecho de que su trabajo gustara al público?
No, la verdad es que un autor se debe a su trabajo, y mediante él tiene que intentar sobrevivir, como hacemos todos. Un músico debe dejarse la piel en conciertos y giras para vivir.
Probablemente ya vivirían bastante bien simplemente con este ingreso. Pero claro, en más cómodo quedarse en casa y que la SGAE recaude para ti. Y esto sin tener en cuenta que ya cobran entre un 4% y un 15% de las ventas al margen del Canon.
¿Creéis que un productor o director de cine se muere de hambre si no cobra el Canon? No, la realidad es que ya se enriquecen lo suficiente con la recaudación en los cines.
El cobro del Canon no es más que un suplemento adicional para seguirse enriqueciendo.
---Pobres de los productores o directores nóveles españoles que no recaudan nada ---me diréis---.
Que pena, ¡que hagan buen cine y conseguirán recaudar más! ¿Acaso si yo hago un mal trabajo no pongo en riesgo mi continuidad laboral? ¡Pues todos igual!
La verdad es que la supresión del Canon y el facilitar el intercambio de cultura realmente redundaría en beneficio para los propios autores.
¿Creéis que Dan Brown sería ahora tan multimillonario si no fuera porque muchas personas han compartido su libro, «El Código Da Vinci», haciéndolo tan popular que las ventas se disparasen?
Sinceramente, si un amigo me presta o regala una copia de una pelÃcula de un autor desconocido para mí, aconsejándome que la vea, probablemente lo haga beneficiando claramente al autor.
Sobre todo si ha hecho bien su trabajo y la película me gusta, puesto que es muy probable que si posteriormente realiza otra, yo ya le conozca y hasta puede que me acerque al cine a verla.
La literatura está a salvo por la venta de libros, la música por la venta y los conciertos, y el cine por la venta y la recaudación en taquilla.
No necesitan ningún Canon para sobrevivir. Pero claro, no serían tan ricos, sólo un poco menos.
Compartir o copiar Propiedad Intelectual, ¿legal o no?
Me decido a escribir este artículo puesto que, tras leer varios otros relacionados con el tema, me ha parecido interesante resaltar el grado de legalidad que tiene una serie de acciones cotidianas para mí y entiendo que para mucha gente.
Me gustaría comenzar con unas definiciones aclarativas totalmente establecidas en el texto que conforma la Ley de Propiedad Intelectual pero que yo resumo aquí:
Propiedad Intelectual o Copyright
Presenta simplemente quién es el beneficiario de los derechos que establece la Ley de Propiedad Intelectual en cuanto al uso o explotación de un determinado Objeto de Propiedad Intelectual; léase, la creación del Autor.
Objeto de Propiedad Intelectual
Tal y como establece el Artículo 10 de la citada Ley, son Objeto de Propiedad Intelectual las creaciones originales, literarias, artísticas o científicas en cualquier tipo de soporte tangible o no.
Copia Privada
Según la legislación vigente (Articulo 31 de la Ley de Propiedad Intelectual), tenemos el derecho de realizar una reproducción ---en el sentido de copia--- de todo Objeto de Propiedad Intelectual ya divulgado, para un uso privado, sin ánimo de lucro y sin necesitar un consentimiento expreso del Autor.
Copia de Seguridad
En el caso específico de Programas de Ordenador, el Artículo 100 de la Ley de Propiedad Intelectual establece el derecho que el usuario tiene de realizar una Copia de Seguridad sin el consentimiento expreso del Autor, siempre que esta sea necesaria para la utilización del programa.
Con esto en mente, que nadie tenga la menor duda de que realizar copias de música o películas, compartir dicha música o películas con amigos e incluso regalar copias para los amigos sea cual sea el medio utilizado, es totalmente legal --y hasta aconsejable-- siempre que uno no se lucre con ello.
La Ley es clara en establecer que el uso de dicha copia debe ser privado, que uno no se puede beneficiar económicamente y que el original ha de estar ya divulgado, independientemente de que uno sea el propietario del original o no; lo que permite garantizar el derecho a compartir.
De igual forma descargarse este tipo de contenidos mediante una red P2P o cualquier otro método para compartir contenidos, es totalmente lícito y legal. No se debe nunca pensar que el canal o tecnología usado para compartir un contenido es ilegal por el mero hecho de que se pueda hacer un uso ilegal del mismo.
El que está habituado a compartir libros con sus amistades se sorprendería si un día le dijeran que esta forma de intercambio es ilegal sólo porque se puede utilizar este mismo canal para compartir contenido ilegal (como por ejemplo la pornografía infantil).
Pues este tipo de intención es la que existe actualmente cuando nos quieren hacer creer que las redes P2P o mecanismos similares son ilegales. Repito, la tecnología en sí, nunca es responsable del uso de la misma.
Incluso alquilar una película y realizar una copia es algo totalmente legal, tal y como establece el citado Artículo 31, siempre que uno no se lucre con ello. Recordemos que una película alquilada es ya un Objeto de Propiedad Intelectual divulgado por el Autor.
Dicho esto, por favor, siéntase libre de seguir realizando este tipo de acciones y siga compartiendo todo aquel contenido legal que posea si así lo desea.
Por el contrario, cuando se aborda el tema de un contenido en particular, «los Programas de Ordenador o Software», todo lo dicho no es totalmente cierto ya que la Ley no establece los mismos derechos en este caso.
Tal y como indica el Artículo 100, sólo estará permitida la Copia de Seguridad cuando esta sea necesaria para el funcionamiento del programa; lo cual es tan interpretable desde mi punto de vista que realmente no tengo claro si realizar dicha copia en la mayoría de los casos es legal o no.
Abro el debate aquí ya que me complacería enormemente que se me aclarara dicho tema.
Además todo software va acompañado de una licencia de uso que establece --dentro del marco de la legalidad-- los derechos y obligaciones que tiene el usuario que lo adquiere. Lo cual, en la mayoría de los casos no hace más que restringir aun más las posibilidades del usuario.
Por suerte existe la alternativa de usar software libre cuya licencia garantiza precisamente lo contrario que impiden otras licencias: La copia, distribución, redistribución, modificación y hasta el acceso a las fuentes.
Comment by chous on 2005-11-22 16:12:03
Un post muy interesante. Sobre todo, en los tiempos que corren, en el que pasivamente todos nos hemos dejado embaucar por la masiva concienciación1.
Lo que me llama la atención es que al final, la legitimidad de este tipo de acciones sobre los Objetos de Propiedad Intelectual esté condicionada al ánimo de lucro.
Para hacer un poco de mofa, si lo trato de hacer con ánimo de lucro y no consigo lucrarme, ¿es punible? Nadie podrá decir que me he apropiado de un capital que le corresponde al autor o distribuidor, ya que no me he llevado un duro.
No sé, parece que designarlo como ánimo de lucro parece más una táctica de tipo moral, y que es de lo que va todo esto del cáncer de la industria [discográfica]: promover una sensación de delito entre la sociedad, que supone que la mayoría es presuntamente culpable, y la crónica de una muerte anunciada que les espera a las incuestionables víctimas, los autores.
En mi caso personal, empiezo a cansarme de que, o bien consideren que soy tonto, o bien tenga que suponer que en realidad simplemente todo el mundo se deja llevar, y no actúa de mala fe.
Sobre los autores ya has escrito en otro artículo, pero señores, esto es el capitalismo, y es por lo que se habla de Propiedad Intelectual. Si uno apuesta por vivir de su música, y le sale mal, pues qué se le va a hacer, ¿no? En Madrid había muchas cafeterías en la Gran Vía. StarBucks aplicó una práctica rentable de acoso y derribo, y ahora ya no hay mucha elección para el consumidor. No veo ninguna campaña de concienciación a favor de las víctimas.
¿Debería haberla? Al final, aprendemos. Nos cuesta, pero aprendemos. Es mejor unirse al vencedor, que jugársela. Los vencedores, los que actúan impunemente, los que emprenden capañas de sensibilización absolutamente parciales, son las empresas de gestión. Tienen tanto poder que reciben compensaciones incluso por usos de contenido que no gestionan, actúan sobre la masa social, e influyen en el poder ejecutivo. Es cuestión de tiempo que lo hagan en el legislativo.
¿Adelantar o atrasar el reloj?
No es que quiera hablar de nada profundo ni particularmente interesante: el pasado fin de semana, hubo cambio de hora.
El hecho en sí era que había que cambiar la hora a las 3 de la mañana, de forma que volviera a ser las 2.
El caso es que me sorprendí al leer en los periódicos que había que retrasar la hora.
A pesar de la diversión que supone el ir a contracorriente, creo que en este caso no se hace un buen uso del lenguaje. Por el momento, describiré el punto de vista mayoritario ("natural", "obvio", etc.), y después veré si consigo hacer entrar en razón a alguien :).
El hecho de hablar de retraso viene de que la acción requerida por el cambio de hora implica hacer retroceder el reloj. Éste es, por así decirlo, un punto de vista espacial, es decir, utiliza los referentes de detrás/delante.
Supongo que epistemológicamente será válida la correspondencia entre retrasar y retroceder. La raíz común puede justificar el que se utilice retrasar, cuando se está refiriendo en realidad a retroceder. Asimismo, la acción opuesta es aún más ambigua, ya que coincide el mismo verbo: adelantar.
Lamentablemente, en este caso, como en tantos otros, se hace un uso incorrecto del lenguaje. El verbo retrasar hace referencia a la diferencia temporal entre dos sucesos. Si dicha diferencia es positiva, es un retraso, en caso contrario un adelanto. Por tanto, al hacer que artificiosamente se vuelva atrás en el tiempo se incurre en un retraso negativo, es decir, un adelanto. Para ilustrarlo más gráficamente, el efecto del cambio de hora se refleja en que, si no cambias tus planes, llevarás a cabo lo que tengas planeado con una hora de adelanto a lo previsto.
Resulta que si uno consulta la RAE, verá cómo incluye las dos acepciones: la espacial y la temporal, incongruentes entre sí. Hay que tener en cuenta que la RAE, por su parte, tiene también dos funciones: servir de referencia, por un lado, y recopilar el uso cotidiano que se hace del lenguaje, por otro.
Si se consulta el verbo "atrasar" 1, veréis con claridad las dos acepciones contradictorias.
Herencia del rectángulo
A pesar de que el concepto de herencia (en terminología de la programación orientada a objetos) es bastante fácil de asimilar, podemos encontrarnos ejemplos paradójicos, como el que ilustra el libro de Robert C. Martin 1.
El ejemplo en cuestión trata de modelar los conceptos Figura, Rectángulo y Cuadrado. Intuitivamente, los conceptos se relacionarán de una forma similar a ésta:
+--------+
| Figura |
+--------+
^
/ \
+---+
|
|
+------------+
| Rectángulo |
+------------+
^
/ \
+---+
|
|
+----------+
| Cuadrado |
+----------+
Es decir, un Cuadrado no deja de ser un caso particular de Rectángulo, y ambos son Figuras.
Sin embargo, Cuadrado es un Rectángulo, y a la vez no lo es, ya que que el concepto de Rectángulo mezcla dos definiciones:
- Cuadrilátero cuyos lados:
- forman ángulos rectos,
- tienen longitud arbitraria (2 a 2)
Un cuadrado satisface la primera condición, pero no la segunda. Por ese motivo, si usáramos el modelo anterior, incurriríamos en incongruencias como métodos válidos en la clase padre Rectángulo, pero no válidos en Cuadrado, p.ej.: <tt>redimensiona(base, altura)</tt>.
La única opción es, por tanto, un refinamiento en el modelo:
+--------+
| Figura |
+--------+
^
/ \
+---+
|
|
+------------------+
| Cuadrilátero |
+------------------+
^
/ \
+---+
|
|
+-------------------+
| Cuadrilátero |
| de ángulos rectos |
+-------------------+
^ ^
/ \ / \
+---+ +---+
| |
| |
+----------+ +------------+
| Cuadrado | | Rectángulo |
+----------+ +------------+
Se podrían unificar las clases Cuadrilátero y Cuadrilátero de ángulos rectos, pero entonces podríamos encontrarnos con dificultades parecidas al tratar de modelar a la vez Cuadrado y Rombo, aunque curiosamente la intuición funciona mejor para éste caso, y no tratamos de pensar que "un cuadrado es un cierto tipo de rombo".
Es recomendable definir la herencia como una relación de pertenencia obvia, sin casos particulares, ya que de lo contrario podemos llevarnos sorpresas.
En concreto, en el libro citado se analiza el problema como una violación sutil del Principio de Sustitución de Liskov: "Subtipos deben ser reemplazables por sus tipos base".
El análisis se basa, como es frecuente en nuestros días, en una visión prágmatica, consistente en mostrar las incongruencias en las que se incurren al aplicar el citado principio en el modelo de clases original. De hecho, incluso se llega a la conclusión de que la validez del modelo depende de un tercero: el código que recibe indistintamente un Cuadrado o un Rectángulo, y que sin embargo percibe que ambos no se comportan igual. En otras palabras: según el autor, un cuadrado es o no es un rectángulo dependiendo del punto de vista de quién los use.
éste es un buen ejemplo que muestra en lineas generales mi opinión del libro: tiene cosas interesantes, pero te va dando bofetadas sin parar.
Si alguno lo quiere, lo regalo/presto/vendo (depende de lo que le resulte más cómodo).
- 1. Agile Software Development. Principles, Patterns, and Practices.
Comment by ecamino on 2005-11-02 11:14:39
Buscar herencias
Sin ser un experto en el tema, me gustaría decir que no es necesario ser Rober Martin para darse cuenta de que si haces una herencia de un rectángulo para crear un cuadrado vas a tener problemas.
Creo que no hay que confundir la particularizaciones de un elemento con la esencia de lo que quieres heredar. Es decir no hay que buscar herencias como una caza de brujas, no hay que exagerar, en general el cerebro funciona bastante bien en este tipo de cosas. Hay que tratar de heredar cosas que conceptualmente tengan descendencia intuitiva, de modo que el padre realmente sea un ente mayor que el hijo, algo conceptualmente mayor, no hijos que sean particularizaciones.
Si se me permite, o utilizas sólo la clase rectángulo y jamás nombras la palabra cuadrado, válido porque puedes también modelar un cuadrado o si decides utilizar cuadrado hay que poner ambas clases al mismo nivel, como figuras.
No creo que dependa de un tercero el decidir si se puede heredar o no un cuadrado de rectángulo, aunque claro si publicas libros (Rober Martin) parece que tengas la verdad en tus manos ..... y probablemente sea así.

rss