viernes, 20 de septiembre de 2013
viernes, 16 de septiembre de 2011
Y... bueno ya es hora de venderme
Ya llevo tiempo pensando en la poca publicidad que doy al trabajo que realizo. Y analizando el trabajo de otras personas mucho más famosas que yo y cuya trayectoria es sobradamente conocida, hoy me encuentro con muy poca autoestima, así es que necesito recordarme algunas cosas, que me hacen pensar en lo banal de esas reputaciones que en muchos casos se deben más al éxito comercial de los proyectos en los que se han implicado que al mérito técnico, al buen análisis y diseño, o a la elección de la tecnología más adecuada.
Desde que comencé con la programacion en el sector privado allá por el año 2002 o desde que cree una red social para mi proyecto fin de carrera en PHP allá por el año 2003, y tras el éxito comercial de este tipo de portales al cual no supe dar salida en su momento, la enumeración de trabajos que he realizado en "background" sin importarme que se supiera que mi mano está ahí ha sido innumerable.
Soy inquieto y quiero aprender más siempre. Por eso estoy seguro de que siempre tendré actitud y potencial para cumplir con cualquiera de los objetivos que se me plantean. Y lo he demostrado.
He desarrollado mis habilidades haciendo uso de varios conocidos frameworks, como struts e hibernate en Java y con el desarrollo frameworks propios que siempre me han resultado más útiles, escalables y sencillos, quedando demostrado en los desarrollos que hoy en día andan... por ahí...
y que por otro lado me abren las puertas para que tras un largo periodo, tenga acceso a dirigir proyectos y por ejemplo, analizar y codificar un gestor de trámites administrativos que incluye el diseño de cualquier procedimiento con la administración y su adecuación a la legalidad sobre la e-administración. Un proyecto sin precedentes que la Junta de Andalucía seleccionó para incluir en su repositorio de aplicaciones disponibles para su uso como software libre para cualquier administración en esta tierra.
El trabajo que he realizado pasa por el análisis y desarrollo para empresas en distintos sectores que también incluyen sectores como la aeronáutica, la formación y el e-learning, pero también he dirigido procesos de certificación de calidad y realizado labores de consultoría.
Entre muchos otros trabajos se me ocurre también destacar el proyecto "Dentro Video" para Joomla, con la investigación y desarrollo de su sistema de almacenamiento y taggeo, el análisis y desarrollo de un sistema de grabación televisiva y de analizar, diseñar y codificar la primera escuela de poker en Internet que reproduce, almacena y auto-corrige las manos subidas de cientos de miles de jugadores en internet, con un proceso de minería de datos que en su conjunto, conforma una de las herramientas de formación y análisis del poker mas novedosas en el mundo.
Y todo bajo la potencia y escalabilidad del framework que desarrollé hace ya algunos años con el que además me he lanzado al universo del "reality mining" con City Analytics, un sistema que en tiempo real ofrece información sobre el movimiento de las personas en las ciudades, integrándome con todo tipo de clientes en PHP, Ruby o Python y además estando a cargo de los sistemas que soportan tal cantidad de datos.
Y tras tanto desarrollo y después de haber visto como "programadores" (según ellos) de toda índole mienten descaradamente a costa de otros incautos como yo, me encuentro que no es suficiente porque nunca dije "Esto es mío", por que nunca dije "Esto lo hice yo".
Pero ya va llegando el momento. Y sobre todo después de estudiar en la universidad, donde ahora me encuentro que no sirvió de nada, puesto que el gobierno reconocerá un título a todos aquellos que se aprovecharon de mi trabajo, y que puedan acreditar que llevan 10 años en este trabajo. Así, por el intrusismo laboral y por listos, ahora, perfectos inútiles podrán conseguir un título. Debí ponerme a trabajar sin estudiar, puesto que ahora, tendría más dinero y el título que tanto trabajo me costó conseguir. Desde luego esta es la mejor forma de fomentar la ignorancia y la "cutrez", en lugar de potenciar la calidad, que es lo único que le queda al mundo occidental.
Desde que comencé con la programacion en el sector privado allá por el año 2002 o desde que cree una red social para mi proyecto fin de carrera en PHP allá por el año 2003, y tras el éxito comercial de este tipo de portales al cual no supe dar salida en su momento, la enumeración de trabajos que he realizado en "background" sin importarme que se supiera que mi mano está ahí ha sido innumerable.
Soy inquieto y quiero aprender más siempre. Por eso estoy seguro de que siempre tendré actitud y potencial para cumplir con cualquiera de los objetivos que se me plantean. Y lo he demostrado.
He desarrollado mis habilidades haciendo uso de varios conocidos frameworks, como struts e hibernate en Java y con el desarrollo frameworks propios que siempre me han resultado más útiles, escalables y sencillos, quedando demostrado en los desarrollos que hoy en día andan... por ahí...
y que por otro lado me abren las puertas para que tras un largo periodo, tenga acceso a dirigir proyectos y por ejemplo, analizar y codificar un gestor de trámites administrativos que incluye el diseño de cualquier procedimiento con la administración y su adecuación a la legalidad sobre la e-administración. Un proyecto sin precedentes que la Junta de Andalucía seleccionó para incluir en su repositorio de aplicaciones disponibles para su uso como software libre para cualquier administración en esta tierra.
El trabajo que he realizado pasa por el análisis y desarrollo para empresas en distintos sectores que también incluyen sectores como la aeronáutica, la formación y el e-learning, pero también he dirigido procesos de certificación de calidad y realizado labores de consultoría.
Entre muchos otros trabajos se me ocurre también destacar el proyecto "Dentro Video" para Joomla, con la investigación y desarrollo de su sistema de almacenamiento y taggeo, el análisis y desarrollo de un sistema de grabación televisiva y de analizar, diseñar y codificar la primera escuela de poker en Internet que reproduce, almacena y auto-corrige las manos subidas de cientos de miles de jugadores en internet, con un proceso de minería de datos que en su conjunto, conforma una de las herramientas de formación y análisis del poker mas novedosas en el mundo.
Y todo bajo la potencia y escalabilidad del framework que desarrollé hace ya algunos años con el que además me he lanzado al universo del "reality mining" con City Analytics, un sistema que en tiempo real ofrece información sobre el movimiento de las personas en las ciudades, integrándome con todo tipo de clientes en PHP, Ruby o Python y además estando a cargo de los sistemas que soportan tal cantidad de datos.
Y tras tanto desarrollo y después de haber visto como "programadores" (según ellos) de toda índole mienten descaradamente a costa de otros incautos como yo, me encuentro que no es suficiente porque nunca dije "Esto es mío", por que nunca dije "Esto lo hice yo".
Pero ya va llegando el momento. Y sobre todo después de estudiar en la universidad, donde ahora me encuentro que no sirvió de nada, puesto que el gobierno reconocerá un título a todos aquellos que se aprovecharon de mi trabajo, y que puedan acreditar que llevan 10 años en este trabajo. Así, por el intrusismo laboral y por listos, ahora, perfectos inútiles podrán conseguir un título. Debí ponerme a trabajar sin estudiar, puesto que ahora, tendría más dinero y el título que tanto trabajo me costó conseguir. Desde luego esta es la mejor forma de fomentar la ignorancia y la "cutrez", en lugar de potenciar la calidad, que es lo único que le queda al mundo occidental.
viernes, 29 de julio de 2011
En un periquete
Tanto tiempo sin escribir que ni recuerdo por donde iba... y es que han sido casi cuatro meses de infarto.
Por un lado el trabajo. En Ciudad 2020 no paramos, siempre tenemos nuevos retos y nuevos proyectos. He estado integrándome con todo tipo de clientes y aplicaciones que beben de nuestra API, y además en Mayo terminé con el desarrollo del mapa de movilidad de Córdoba. Un proyecto muy interesante en el que he aprendido más de la API de Google Maps V3 de lo que jamás pensé que me haría falta.... jejeje. Encontré especialmente interesante el sistema de InfoWindows y el sistema que dibuja el HeatMap, que se complementa con java.awt.Graphics2D en el servidor.
Y lo hemos presentado al mundo en el "Living Labs Global" en Estocolmo, donde estuve en un Workshop group con Lewis Carl de Oracle debatiendo sobre "Cloud Computing".
Por otro lado City Analytics sigue creciendo y madurando, de forma que hemos incluido muchas mejoras en el rendimiento, tras algún que otro traspiés, hasta que hemos liberado la versión 1.9 del cliente. Esto unido a nuevos servicios como el Checkin Físico y otras novedades que incorporaremos en breve me ha tenido bastante ocupado.
Y por otro lado, hay algo que se ha hecho un hueco en mi vida, y que está creciendo de forma que casi asusta. Pero ya no hay quien lo pare. No hay palabras para esto y solo aquellos que lo han sentido lo pueden entender. Me viene al pelo esa frase de la canción de Los Suaves que dice que "hay cosas que solo se dicen con silencio y yo callándome te las digo". Mi hija vino al mundo el día 9 de abril.
Por un lado el trabajo. En Ciudad 2020 no paramos, siempre tenemos nuevos retos y nuevos proyectos. He estado integrándome con todo tipo de clientes y aplicaciones que beben de nuestra API, y además en Mayo terminé con el desarrollo del mapa de movilidad de Córdoba. Un proyecto muy interesante en el que he aprendido más de la API de Google Maps V3 de lo que jamás pensé que me haría falta.... jejeje. Encontré especialmente interesante el sistema de InfoWindows y el sistema que dibuja el HeatMap, que se complementa con java.awt.Graphics2D en el servidor.
Y lo hemos presentado al mundo en el "Living Labs Global" en Estocolmo, donde estuve en un Workshop group con Lewis Carl de Oracle debatiendo sobre "Cloud Computing".
Por otro lado City Analytics sigue creciendo y madurando, de forma que hemos incluido muchas mejoras en el rendimiento, tras algún que otro traspiés, hasta que hemos liberado la versión 1.9 del cliente. Esto unido a nuevos servicios como el Checkin Físico y otras novedades que incorporaremos en breve me ha tenido bastante ocupado.
Y por otro lado, hay algo que se ha hecho un hueco en mi vida, y que está creciendo de forma que casi asusta. Pero ya no hay quien lo pare. No hay palabras para esto y solo aquellos que lo han sentido lo pueden entender. Me viene al pelo esa frase de la canción de Los Suaves que dice que "hay cosas que solo se dicen con silencio y yo callándome te las digo". Mi hija vino al mundo el día 9 de abril.
lunes, 28 de marzo de 2011
Optimización de MySql InnoDB en un servidor Linux
Tras un arduo proceso de investigación y documentación, voy a describir el proceso a seguir para configurar un servidor MySql para producción. Las bases consultadas no son otras que la documentación oficial en dev.mysql.com y mysqlperformanceblog.com.
En la configuración de un servidor debes pensar en una instalación que tenga un rendimiento acorde con lo que se necesita, empezando por la instalación del sistema operativo. Como es de imaginar principalmente MySql realiza tareas pesadas sobre los discos duros, por lo tanto la elección de discos duros con bajos tiempos de búsqueda es importante pero también es importante si tienes varios discos, optar por usar RAID 0 para unirlos, lo cual afecta bastante al rendimiento de las búsquedas.
Después será necesario revisar la implementación y el diseño de tu base de datos. Respecto al diseño no contaré nada puesto que depende de la aplicación/es que hagan uso del Data Source con MySql, pero respecto a la implementación si que hay un par de cuestiones a tener en cuenta:
Una vez que hayas revisado esto lo deseable es afinar el rendimiento de la ejecución de MySql. Los parámetros más importantes son (para InnoDB):
Pues con esto espero haber arrojado algo más de información sobre los parámetros más importantes, aunque evidentemente me dejo mucho en el tintero, pero para mí estas son las cuestiones más importantes. Suerte!!
En la configuración de un servidor debes pensar en una instalación que tenga un rendimiento acorde con lo que se necesita, empezando por la instalación del sistema operativo. Como es de imaginar principalmente MySql realiza tareas pesadas sobre los discos duros, por lo tanto la elección de discos duros con bajos tiempos de búsqueda es importante pero también es importante si tienes varios discos, optar por usar RAID 0 para unirlos, lo cual afecta bastante al rendimiento de las búsquedas.
Después será necesario revisar la implementación y el diseño de tu base de datos. Respecto al diseño no contaré nada puesto que depende de la aplicación/es que hagan uso del Data Source con MySql, pero respecto a la implementación si que hay un par de cuestiones a tener en cuenta:
- Manten el tamaño de los campos de tu BBDD lo más pequeño posible. Si puedes usar mediumint en lugar de bigint hazlo, y a colación e igual de importante es que:
- No utilices campos `varchar`. Y si lo necesitas, al final de la tabla. Dependiendo de tus necesidades por supuesto, pero ten en cuenta que en su lugar puedes usar el tipo `char`. Un tamaño variable para las cadenas ahorra espacio en disco pero un tamaño fijo permite un acceso más rápido a los datos puesto que no hay que calcular la longitud del registro variable como ocurre cuando tenemos un `varchar` y saltamos al siguiente registro. InnoDB realiza algunas optimizaciones por ejemplo convirtiendo `varchar` de tamaño menor de 4 en `char`, pero es deseable que calcules la longitud máxima de un campo y crees campos de tamaño `fixed`. Dentro de poco cuando regalen TeraBytes con las cajas de galletas, esta pérdida de espacio con registros `fixed` no será tan importante como el rendimiento de las consultas a tu servidor... ;)
- Crea solo los índices que necesitas y elimina índices duplicados. Los índices benefician el proceso de lectura pero pueden complicar el de escritura, así que debes tener cuidado con esto. También ocurre que borras y creas una tabla un varias veces cambiando el script, modificando... y al final, revisando te das cuenta de que tienes un índice duplicado. Si el tamaño de tu tabla no es muy grande, el gasto en memoria puede no ser demasiado, pero he llegado a reducir en cerca de 3 Gb el tamaño de una tabla tan solo descubriendo y eliminando un par de índices duplicados.
Una vez que hayas revisado esto lo deseable es afinar el rendimiento de la ejecución de MySql. Los parámetros más importantes son (para InnoDB):
- innodb_data_home_dir ( =/var/lib/mysql): Es el lugar donde InnoDB almacenará la información (anteponiéndolo a innodb_data_file_path en caso de existir) así como los ficheros de registro. Asegúrate que apunta a tus discos en RAID 0.
- innodb_data_file_path | innodb_file_per_table: Con estos parámetros configuras como se almacenan tus datos y donde. Si especificas innodb_file_per_table, indicas a MySql que guarde los datos de cada tabla en un fichero distinto. Esto es beneficioso si tienes en mente ampliaciones y/o migraciones.
- innodb_buffer_pool_size: El tamaño que ocupa en memoria el almacenamiento intermedio de datos. Cuanto mayor es este valor, menor es la cantidad de operaciones de lectura/escritura en disco. El valor adecuado para un servidor dedicado solo a MySql debería permitir la ejecución del sistema operativo sin problemas. Ten en cuenta que a este tamaño se suma el del parámetro key_buffer_size en el motor MyISAM. Desde la documentación oficial de MySql especifican un 80% de la memoria del ordenador, pero con 64Gb de RAM tendríamos 12 Gb para el SO... es mucho ¿no?
- innodb_log_file_size: Es el tamaño de los ficheros de registro de InnoDB. Pueden existir varios y la suma de sus tamaños no puede exceder los 4Gb. Un tamaño mayor reduce las operaciones de lectura/escritura en disco, así que este parámetro también es importante. Una regla para fijar este valor se basa en darle el 25% del tamaño especificado en innodb_buffer_pool_size. Ten en cuenta que cada vez que quieras cambiar el tamaño de los ficheros de registro debes fijarte en que probablemente ya existan así es que tendrás que:
- Parar el servidor,
- Hacer copia de seguridad de los ficheros de log. Normalmente ib_logifle0 e ib_logfile1 en /var/lib/mysql renombrados a ib_logfile0.BAK e ib_logfile1.BAK. En caso de pánico y horror puedes restaurarlos.
- Borrar los originales (ib_logfile0 e ib_logfile1),
- Especificar el nuevo tamaño, e
- Iniciar MySql
- innodb_log_buffer_size: Es el tamaño del almacenamiento intermedio en los ficheros de registros, por lo tanto valores altos también reducen el número de operaciones de lectura/escritura. Aún así el tamaño de esta variable (evidentemente siempre menor que innodb_log_file_size) se establece como razonable entre 8 y 16 Mb ya que este buffer se vuelca forzosamente cada segundo, así que puede no ser necesario un tamaño mayor y si que sería un gasto de memoria.
- innodb_flush_log_at_trx_commit: Este parámetro controla cuando se vuelcan los datos del buffer en los ficheros de registros. Este volcado se realiza cada segundo forzosamente pero puede hacerse más a menudo. El valor por defecto de 1, indica que este volcado se realiza tras un commit. Un valor de 2 sería cada 2 commit, o cada segúndo, lo que ocurra antes. De esta forma un valor de 2 reduce las operaciones de E/S en disco pero podríamos perder un segundo de transacciones en caso de error del sistema. Yo pongo 2... ;)
- innodb_flush_method: Indica la forma de volcado de los ficheros de registros y datos. Si está disponible, con la opción O_DIRECT evitamos el uso de memoria swap y así MySql vuelca estos ficheros directamente en memoria física evitando consumir ancho de banda entre la memoria y la CPU por las copias de la cache del kernel y del espacio de memoria del usuario.
Pues con esto espero haber arrojado algo más de información sobre los parámetros más importantes, aunque evidentemente me dejo mucho en el tintero, pero para mí estas son las cuestiones más importantes. Suerte!!
sábado, 26 de febrero de 2011
Libertad, igualdad y democracia
Hace poco que leía un artículo sobre este tema que me parece muy interesante. Sobre todo en estos tiempos en los que a mi juicio, el sistema esta a prueba como nunca antes lo había estado.
Una prueba que dudo que supere si no cambian las cosas puesto que este "liberalismo" en el que vivimos (pese a que el partido actualmente en el poder se denomine "socialista") no parece tal. Un liberalismo entre comillas puesto que si nos atenemos a sus principios, parece haberse olvidado del que a mi juicio es el más importante. En este sistema respeta el individualismo, respeta la libertad y por supuesto respeta la propiedad privada, así como el establecimiento de códigos civiles, y resolución de problemas por medio de asambleas.
Pero ha olvidado la igualdad, y en algunos casos la necesidad de que los gobiernos proporcionen un nivel mínimo de seguridad y vida para su correcto funcionamiento, lo cual es condición necesaria para el ejercicio de la democracia, el poder del pueblo, la forma de gobierno en la que se ha manifestado el liberalismo.
Esta democracia es considerada por algunos la tiranía de las mayorías. Y en ocasiones puede ser cierto. Pero a mi juicio debe ser aceptada esta tiranía, siempre que las decisiones de la mayoría respeten los principios de este liberalismo.
Explicado mediante un ejemplo, quiero decir que una decisión democrática de prohibir el consumo de drogas no tiene sentido, puesto que no cumple con el principio de libertad individual. Otra discusión es si las drogas aumentan los niveles de delincuencia, lo cual sin duda es así. Pero a mi juicio, no es por los efectos en la mente humana, si no por la prohibición del comercio de estas sustancias.
Otro claro ejemplo a mi juicio sería la decisión democrática de privatizar la educación, la justicia o la sanidad, puesto que es incompatible con la igualdad, desde el momento en el que es obvio que en ese supuesto los individuos con más recursos (hoy en día el dinero) tendrán acceso a una mejor educación, una mejor sanidad o una justicia más favorable a ellos, y por el principio de igualdad, esto tampoco tiene sentido.
Los gobiernos deberían facilitar como mínimo los sistemas de seguridad social, pensiones, justicia, educación y sanidad. Así mismo deberían garantizar la igualdad en los dos sentidos en los que eran planteados por Tocqueville, igualdad de recursos e igualdad de poder.
Pero el hecho es que actualmente no es así, puesto que el modelo de economía capitalista con su ley de oferta y demanda (basados en el liberalismo económico), establecen un equilibrio en los precios de los productos que favorece a las grandes multinacionales, especialmente si además se establece la "economía global". Estas multinacionales que provocan un exceso de producción sitúan el precio de los productos en un punto insostenible para los pequeños productores, y su consiguiente sumisión a los grandes, de forma que los dueños de estos grandes productores obtienen todos los beneficios. Esto no es igualdad.
Y así llegamos al punto actual, en el que la medida del bienestar en un país sigue evaluándose por el PIB, y no por la renta per cápita o el grado de libertad individual. Y todo esto apoyado por el FMI y el Banco Internacional. Y en esas estamos, en un estado en el que el consumismo nos hace exclavos de los bancos y las multinacionales. Y entonces no somos libres.
Las grandes multinacionales dominan los mercados, y los mercados corrompen a los gobiernos, que aunque se auto denominan democráticos y liberales, aprueban medidas que protegen los intereses de la banca (por ejemplo recientemente con la dación en pago de las hipotecas), que implacable, nos tratan a los individuos como objetos que compran. Y gracias a esa corrupción, aumentan la presión fiscal sobre los pequeños productores, a los pobres que no podemos afrontarlos, y no a los que realmente tienen dinero, y así es como también los pequeños productores vemos reducidos nuestros beneficios por unos impuestos que no se corresponden con lo obtenido. Por eso se hace difícil emprender, y por eso nuestra economía está favoreciendo cada vez más a los grandes y debilitando cada vez más a los pequeños.
Una prueba que dudo que supere si no cambian las cosas puesto que este "liberalismo" en el que vivimos (pese a que el partido actualmente en el poder se denomine "socialista") no parece tal. Un liberalismo entre comillas puesto que si nos atenemos a sus principios, parece haberse olvidado del que a mi juicio es el más importante. En este sistema respeta el individualismo, respeta la libertad y por supuesto respeta la propiedad privada, así como el establecimiento de códigos civiles, y resolución de problemas por medio de asambleas.
Pero ha olvidado la igualdad, y en algunos casos la necesidad de que los gobiernos proporcionen un nivel mínimo de seguridad y vida para su correcto funcionamiento, lo cual es condición necesaria para el ejercicio de la democracia, el poder del pueblo, la forma de gobierno en la que se ha manifestado el liberalismo.
Esta democracia es considerada por algunos la tiranía de las mayorías. Y en ocasiones puede ser cierto. Pero a mi juicio debe ser aceptada esta tiranía, siempre que las decisiones de la mayoría respeten los principios de este liberalismo.
Explicado mediante un ejemplo, quiero decir que una decisión democrática de prohibir el consumo de drogas no tiene sentido, puesto que no cumple con el principio de libertad individual. Otra discusión es si las drogas aumentan los niveles de delincuencia, lo cual sin duda es así. Pero a mi juicio, no es por los efectos en la mente humana, si no por la prohibición del comercio de estas sustancias.
Otro claro ejemplo a mi juicio sería la decisión democrática de privatizar la educación, la justicia o la sanidad, puesto que es incompatible con la igualdad, desde el momento en el que es obvio que en ese supuesto los individuos con más recursos (hoy en día el dinero) tendrán acceso a una mejor educación, una mejor sanidad o una justicia más favorable a ellos, y por el principio de igualdad, esto tampoco tiene sentido.
Los gobiernos deberían facilitar como mínimo los sistemas de seguridad social, pensiones, justicia, educación y sanidad. Así mismo deberían garantizar la igualdad en los dos sentidos en los que eran planteados por Tocqueville, igualdad de recursos e igualdad de poder.
Pero el hecho es que actualmente no es así, puesto que el modelo de economía capitalista con su ley de oferta y demanda (basados en el liberalismo económico), establecen un equilibrio en los precios de los productos que favorece a las grandes multinacionales, especialmente si además se establece la "economía global". Estas multinacionales que provocan un exceso de producción sitúan el precio de los productos en un punto insostenible para los pequeños productores, y su consiguiente sumisión a los grandes, de forma que los dueños de estos grandes productores obtienen todos los beneficios. Esto no es igualdad.
Y así llegamos al punto actual, en el que la medida del bienestar en un país sigue evaluándose por el PIB, y no por la renta per cápita o el grado de libertad individual. Y todo esto apoyado por el FMI y el Banco Internacional. Y en esas estamos, en un estado en el que el consumismo nos hace exclavos de los bancos y las multinacionales. Y entonces no somos libres.
Las grandes multinacionales dominan los mercados, y los mercados corrompen a los gobiernos, que aunque se auto denominan democráticos y liberales, aprueban medidas que protegen los intereses de la banca (por ejemplo recientemente con la dación en pago de las hipotecas), que implacable, nos tratan a los individuos como objetos que compran. Y gracias a esa corrupción, aumentan la presión fiscal sobre los pequeños productores, a los pobres que no podemos afrontarlos, y no a los que realmente tienen dinero, y así es como también los pequeños productores vemos reducidos nuestros beneficios por unos impuestos que no se corresponden con lo obtenido. Por eso se hace difícil emprender, y por eso nuestra economía está favoreciendo cada vez más a los grandes y debilitando cada vez más a los pequeños.
Suscribirse a:
Comentarios (Atom)