viernes, enero 21, 2011

30 Leyes epónimas relacionadas con el desarrollo de software

Tomado de: Tomado de



Un epónimo es el nombre de una persona o lugar que cede su nombre a una época, pueblo, unidad, ley, etc. Son epónimos por ejemplo "Diesel", cedido por Rudolf Diesel, inventor de este tipo de motores, o "Hamburguesa", infame trozo de carne picada cuyo nombre procede de su lugar de origen.

Hace unos años, el gran Phil Haack posteó sobre leyes epónimas relacionadas con el desarrollo de software en "19 Eponymous Laws Of Software Development", y seleccioné las que me resultaron más interesantes en un par de posts.

Ahora los he vuelto a maquetar y les he añadido un nuevo conjunto de leyes muy interesantes para todos los que nos dedicamos al mundo del desarrollo de software, y muchas de ellas incluso aplicables a otros ámbitos.




1. Ley de Postel




dijo:
Sé conservador en lo que hagas y liberal en lo que aceptes de los demás


Esta frase, de Jonathan Bruce Postel, también llamada Principio de Robustez, es la piedra filosofal del protocolo TCP, y está recogida en la RFC 793, sección 2.10, de septiembre de 1981.




2. Ley de Parkinson



dijo:
El trabajo se extiende siempre hasta rellenar la totalidad del tiempo disponible para completarlo


Esta ley fue postulada inicialmente en 1955 por C. Northcote Parkinson en The Economist y más tarde entró a formar parte de su libro, basado principalmente en las experiencias de la administración británica.




3. Principio de Pareto



dijo:
Para muchos fenómenos, el 80% de las consecuencias derivan del 20% de las causas


Vilfredo Pareto fue un estudioso de la economía y sociología del siglo XIX, y se fijó que el 80% de las propiedades y riqueza estaban repartidas entre el 20% de la población, enunciando su famoso principio. A partir de ahí, se piensa que esta proporción es cierta en múltiples ocasiones, hasta en el número de bugs en el código fuente de un software, o el tiempo de desarrollo de funcionalidades.




4. Revelación de Sturgeon



dijo:
El noventa por ciento de cualquier cosa es basura


Theodore Sturgeon era un autor de ciencia ficción americano que escribió esta frase defendiendo a este tipo de literatura de críticos que opinaban que el 90% era una porquería.

Hay un corolario que dice "La revelación de Sturgeon es cierta salvo para la basura, donde el 100% es basura".




5. El principio de Peter



dijo:
En una jerarquía, todo individuo tiende a subir hasta alcanzar su nivel de incompetencia


Seguro que todos conocéis ejemplos de ello: un fabuloso desarrollador es ascendido a directivo en una empresa, la cual gana un gestor pésimo y pierde un programador excelente. Doble penalización. Lawrence J. Peter, pedagogo de profesión, ya lo enunció en 1968 en el libro El principio de Peter.




6. Ley de Hofstadter



dijo:
La realización de un trabajo siempre dura más de lo esperado, incluso habiéndose tenido en cuenta la Ley de Hofstadter


Esta genial y recursiva Ley creada por el científico, filósofo y académico estadounidense Douglas Hofstadter es absolutamente cierta. Y si no, pensad un poco, ¿cuántas veces habéis estimado plazos en un desarrollo, lo habéis incrementado de forma considerable por los imprevistos y aún así os habéis quedado cortos?




7. Ley de Murphy



dijo:
Si algo puede ir mal, lo hará


La famosa ley, también enunciada en forma de tostada que recurrentemente cae con la mantequilla hacia abajo, fue dictada por Edward A. Murphy, Jr., mientras trabajaba para la fuerza aérea americana como ingeniero, diseñando un sistema de cohetes experimental. Sería lógico pensar que el experimento acabó en tragedia, pero parece ser que la creación y consideración de esta ley les ayudó a evitar graves desastres en sus pruebas.




8. Ley de Brooks



dijo:
Incluir trabajadores en un proyecto retrasado hará que éste avance aún más lentamente


Fred Brooks postuló esta ley en su famoso libro The Mythical Man-Month: Essays on Software Engineering como resultado de su experiencia en IBM. Existen variantes y corolarios como "Una señora es capaz de tener un hijo en nueve meses, pero este plazo no puede disminuir por muchas mujeres embarazadas que pongamos a ello". Simplemente genial.




9. Ley de Conway



dijo:
Cualquier software refleja la estructura organizacional de quien lo produjo


A pesar de que suena a guasa, la ley de Melvin Conway no puede ser más cierta. Una empresa con tres grupos de desarrollo tenderá a generar software distribuido en tres subsistemas, reflejo fiel de las relaciones entre los grupos participantes. Y por cierto, extrapolando un poco... ¿habéis pensado alguna vez que el software que se hace en vuestra empresa es un desastre? ¿creéis que con esta ley podríais obtener alguna conclusión? ;-D




10. Principio de Kerckhoffs



dijo:
En términos de criptografía, un sistema debería ser seguro incluso si todo sobre el mismo se conoce públicamente, salvo una pequeña porción de información


Es increíble que Auguste Kerckhoffs lingüista y criptógrafo alemán, enunciara en el siglo XIX este principio, base de todos los sistemas de criptografía de clave pública actuales.




11. Ley de Linus



dijo:
Dados suficientes ojos, todos los errores son obvios


Pues sí, Linus Torvalds, uno de los más famosos artífices de Linux tal y como es conocido hoy en día, no sólo desarrollaba software, también emitía este tipo de aseveraciones en las que exponía las ventajas del modelo de desarrollo cooperativo y abierto frente al propietario; otros simplemente ven esta teoría como una barbaridad desde el punto de vista de la seguridad y mantenimiento de los sistemas.

Aunque la frase fue cosa de Linus, fue Eric S. Raymond, un hacker a la antigua usanza, el que la popularizó y le dio el nombre de su creador.




12. Ley de Reed



dijo:
La utilidad de grandes redes, y en particular las sociales, crecen exponencialmente con el tamaño de la red


David P. Reed, científico americano, enunció esto que parece obvio en los tiempos actuales dado el tamaño y utilización de este tipo de redes. En esta entrada de la wikipedia podéis encontrar una introducción del soporte teórico en el que se basa, que explica en esencia la facilidad con la que crece el número de subgrupos posibles entre usuarios en relación al número de usuarios o de pares.




13. Ley de Moore



dijo:
La potencia de los ordenadores se duplica cada dos años, reduciendo además su coste


Repetida hasta la saciedad en revistas de cacharreo, y constatada desde hace décadas, fue promulgada por Gordon Earl Moore, quien por cierto es co-fundador de Intel, fijaos si lo tenía claro el muchacho, en 1965 (!). No sé si entonces utilizó la bola de cristal, era una declaración de intenciones, o simplemente es un genio, pero desde luego su ley es una referencia de la medida del avance en los ordenadores y demás dispositivos basados en tecnología similar, y un objetivo mínimo a cumplir.




14. Ley de Wirth



dijo:
El software se ralentiza más deprisa de lo que se acelera el hardware


Brillante la frase de Niklaus Wirth, que allá por el año 1995, aún sin conocer Windows Vista, observó su entorno y predijo la situación actual: cada vez el software es más lento y pesado, a pesar de que según la Ley de Moore tendría que ser al contrario. Este señor, una eminencia, es conocido sobre todo por haber dirigido la creación de los lenguajes Pascal, Modula y algunos otros menos difundidos.

¿Será coincidencia que en ese mismo año, 1995, fue el lanzamiento oficial de Java? ;-P




15. Ley de Zawinski



dijo:
Todo programa intenta expandirse hasta que pueda leer emails. Aquél que no pueda ser expandido hasta ese punto, será sustituido por otro que sí tenga esa capacidad


Lo que más me ha llamado la atención de Jamie Zawinski aparte de su metafórica ley que critica el crecimiento, a veces sin sentido, del software, es su página web personal. No os la perdáis, pues es bastante indicativa del tipo de individuo de que se trata, todo un friki, padre entre otros de una versión de Netscape, Grendel, Netscape Mail & News, Lucid Emacs, etc. También es curioso que es propietario de un club nocturno en San Francisco, este sí que sabe ;-)




16. Las tres Leyes de Clarke



Primera Ley de Clarke
dijo:
Cuando un anciano y distinguido científico afirma que algo es posible, probablemente está en lo correcto. Cuando afirma que algo es imposible, probablemente está equivocado.


Segunda Ley de Clarke
dijo:
La única manera de descubrir los límites de lo posible es aventurarse hacia lo imposible.


Tercera Ley de Clarke
dijo:
Cualquier tecnología lo suficientemente avanzada es indistinguible de la magia.


El conocido científico y escritor británico Sir Arthur Charles Clarke enunció estas tres leyes porque, según comentaba, "si tres leyes fueron suficientes para Newton, modestamente decido parar aquí".

Arthur C. Clarke fue autor de un gran número de libros, relatos y obras de divulgación, destacando su novela y participación en el guión de 2001: Una odisea en el espacio.




17. El principio de Dilbert



dijo:
Las compañías tienden a ascender sistemáticamente a sus empleados menos competentes a cargos directivos para limitar así la cantidad de daño que son capaces de provocar


Este complemento perfecto para el Principio de Peter fue observado por Scott Adams, autor de Dilbert, una popular tira cómica sobre el mundo de la empresa que se publica en 1200 periódicos de todo el mundo.

Scott Adams es considerado uno de los 50 pensadores más influyentes en el mundo de la empresa, incluso por encima de personajes como Steve Jobs o Al Gore. Se trata, además, de un epónimo curioso en cuanto a que su nombre no proviene directamente de su autor, sino de la obra de su autor.




18. Ley de Gilder



dijo:
El ancho de banda aumenta a un ritmo tres veces superior a la potencia de los ordenadores


Pues sí, cualquiera lo hubiera dicho hace unos años... pero la verdad es que hoy en día la velocidad en las conexiones a la red son increíbles. Y por suerte, sin subir proporcionalmente el coste ;-)

George Gilder es un controvertido escritor e intelectual americano, entusiasta de la tecnología e internet, que en la actualidad dirige el Gilder Technology Report, un sitio exclusivo de información de ámbito económico y tecnológico. Según comentan, "sus hijos no estudian español, sino C++" (visto en Wikiquote).




19. Ley de Amdahl



dijo:
El incremento de velocidad de un programa utilizando múltiples procesadores en computación distribuida está limitada por la fracción secuencial del programa


Esta ley, de gran aplicación en el cálculo de rendimiento de sistemas cuando uno de sus componentes es mejorado o en contextos de procesamiento en paralelo, fue enunciada por Gene Myron Amdahl en 1967, en sus tiempos como trabajador de IBM Corporation, que abandonó varias veces por disconformidad con el escaso trato humano en esta empresa, muy encorsetada y llena de burocracia.

Según demuestra matemáticamente, llegados a un punto el rendimiento de un sistema no está relacionado con el número de procesadores instalados, sino con la eficiencia de los algoritmos empleados.




20. Ley de Myhrvold



dijo:
El software es un gas; se expande hasta rellenar su contenedor


Claro, esto explica por qué da igual la potencia y capacidad del ordenador que tengamos: nuestro software lo llenará como si se tratara de un globo, hasta ponerlo a reventar.

Y lo dijo ni más ni menos que Nathan Myhrvold, ex-director de tecnología de Microsoft y fundador de Intellectual Ventures, una empresa dedicada crear y patentar, pero curiosamente no a poner en explotación, inventos para sectores como el software, semiconductores, redes, lásers, biotecnología y otros dispositivos.




21. Las leyes de Bryce



Así las llama él, aunque algunas encajarían mejor en una recopilación de frases célebres. Ahí van algunas, aunque pueden encontrarse más de 150 aquí.


dijo:
Tal y como el uso de la tecnología va aumentando, disminuyen las habilidades sociales

El 85% del trabajo de desarrollo de todos los sistemas consiste en introducir modificaciones y mejoras

A la vez que la capacidad del hardware incrementa, el software se vuelve más pesado

Olvidar al ser humano durante el diseño del sistema provocará que el ser humano se olvide del sistema en el momento de echarlo a andar


[...]

Tim Bryce es un controvertido escritor y consultor de gestión de recursos de información (IRM), famoso entre otras cosas por sus aseveraciones sobre el ego, las manías y extrañezas de los desarrolladores, y sus consejos para manejarlos apropiadamente. Aparte de su habilidad para hacer amigos entre los programadores, es sin duda un gran experto en el mundo de las compañías de desarrollo de software, con más de 30 años a sus espaldas en este campo.




22. Primer principio de Spaf



dijo:
Si eres responsable de seguridad pero no tienes autoridad para establecer reglas y castigar sus incumplimientos, tu cargo real en la organización es asumir la culpa cuando ocurra algo grave


Eugene Spafford, más conocido como "Spaff", es un reputado experto en seguridad informática y profesor de la Purdue Univertity. Según parece, fue uno de los primeros en escribir un libro sobre virus informáticos en 1989, utilizar el término autopsia software para referirse al análisis de aplicaciones para intentar localizar a sus autores, y un sinfín de aportaciones al mundo de la seguridad en sistemas informáticos.

Además, es tan prolífico creando frases y analogías a la hora de explicar conceptos de informáticos queMahesh V. Tripunitara, uno de sus estudiantes, mantiene una página donde las recoge: "The Page of Spaf's Analogies".




23. Ley de Alzheimer de la programación



dijo:
Si lees un código que escribiste hace más de dos semanas es como si lo vieras por primera vez


Efectivamente, el psiquiatra y neurólogo alemán Aloysius Alzheimer no enunció esta ley a primeros del siglo pasado, pues estaba muy ocupado estudiando las enfermedades mentales de sus pacientes. Sin embargo, el síntoma de pérdida de memoria tan habitual en ellos propició la utilización de su nombre en esta Ley tan ligada a la escritura de código limpio, documentado y sencillo.




24. Ley de Amara



dijo:
Tendemos a sobreestimar el efecto de la tecnología en el corto plazo y a subestimarla a largo plazo


Esta ley, causa de la existencia de problemas debidos a excesos de optimismo o de la formulación de predicciones disparatadas, fue enunciada por Roy Amara, que fue presidente del Instituto para el Futuro, un grupo de investigación sin ánimo de lucro dedicado al análisis de tendencias que ayuden a la toma de decisiones basándose en predicciones sobre el futuro.




25. Ley de Hick



dijo:
El tiempo que se tarda en tomar una decisión aumenta a medida que se incrementa el número de alternativas


Puede sonar a obvio, pero la cuestión es que William Edmund Hick, pionero en psicología experimental y ergonomía, fue capaz de idear, a mediados del siglo pasado, la fórmula que explica por qué tardamos tanto tiempo en responder a un cuadro de diálogo con botones para Aceptar, Cancelar, Reintentar, Ignorar y Omitir:
T = blog2(n + 1)Cosas de las matemáticas, seguro. :-D




26. Principio de Liskov



dijo:
Los subtipos deben ser sustituibles por sus clases bases


O en otras palabras, que un subtipo no debe modificar el comportamiento esperado de la clase de la que hereda; de esta forma, si el subtipo puede sustituir a su clase base sin causar daños, la herencia será correcta. Citando a Enrique Place en PHPSenior, "No basta conser hay que comportarse como tal".

Barbara Liskov es profesora del Massachusetts Institute of Technology (MIT) y fue la primera mujer en conseguir el doctorado en informática de Estados Unidos.





27. Principio de Hanlon



dijo:
Nunca le atribuya a la maldad lo que puede ser explicado por la estupidez


A pesar de su nombre, no está claro quién definió con tanta claridad su confianza en la capacidad del ser humano. Bill Clarke, Goethe, William James, Napoleón Bonaparte, Richard Feynmann, Einstein, Robert A. Heinlein (cuyo apellido podría haber degenerado en "Hanlon", o un desconocido Robert J. Hanlon del que no existen demasiadas referencias podrían ser los padres de esta Ley tan utilizada por los hackers para definir situaciones creadas como consecuencia del trabajo de incompetentes sin mala intención.




28. Ley de Joy



dijo:
El número de empleados inteligentes en una empresa es una función logarítmica del número de empleados totales


También formulada como "no importa quien seas, la mayoría de la gente inteligente trabaja para otro", la Ley dictada por Bill Joy ofrece una visión un tanto pesimista (¿realista?) de nosotros mismos y nuestro entorno de trabajo. Pero ojo, que no lo decía cualquiera, que este señor es co-fundador de Sun y, probablemente, estuviera describiendo lo que veía.




29. Ley de Lister



dijo:
La gente bajo presión no piensa más rápido


Bonita frase para escribir en un post-it y pegárselo en la frente a alguien a ver si se da por aludido. Y es que efectivamente, la presión y la velocidad de pensamiento no son magnitudes proporcionales, pero es Tim Lister, un consultor, formador y escritor experto en gestión de riesgos en procesos de desarrollo de software, el que lo enunció de esta forma tan tajante y certera.




30. La navaja de Occam



dijo:
En igualdad de condiciones la solución más sencilla es probablemente la correcta


En el siglo XIV, Guillermo de Ockham, fraile franciscano y filósofo, postulaba de esta forma el principio de economía, utilizada en disciplinas tan dispares como la teología, informática o lingüística. De hecho, podríamos considerarlo la base de principios como KISS (Keep It Simple, Stupid), o YAGNI (You ain't gonna need it), asociados habitualmente a la programación extrema pero válidos en cualquier tipo de desarrollo.



Fuente: Variable Not Found

jueves, enero 20, 2011

Permitir Gestion de archivos con FCKEditor y PHP

Tomado de:
Permitir Subir Archivos con FCKEditor

Por omisión la Gestión de Archivos esta deshabilitada cuando se utiliza el FCKEditor en el Browser, por razones de seguridad , de esta manera muchos usuarios no pueden subir archivos al servidor por medio del browse.Este post nos ayuda como ajustar de mejor manera que permita subir archivos cuando se utiliza el editor FCKEditor.

Mensaje de Error.

En la instalación por omision del FCKEditor, si se da un click en el Boton "Browse Server" en cualesquiera de los dialogos de archivos, por ejemplo cuando se inserta un archivo, recibe el siguiente mensaje:





This connector is disabled.
Please check the "editor/filemanager/connectors/php/config.php" file

Habilitando el conector.

Para habilitar el conector, cimplemente edite el archivo "/modules/fckeditor/fckeditor/filemanager/connectors/php/config.php" ubique la siguiente linea:

$Config['Enabled'] = false ;

Modifiquelo por:
 
$Config['Enabled'] = true ;

Grabe el archivo y ahora intente subir una imagen por medio del FCKEditor en el browse.
Existe modificaciones adicionales que son requeridas ya que estas estan en la parte inferior, las mismas que permite trabajar de mejor manera otorgando permisos a ciertas carpetas, donde se ubicaran los archivos que son cargados por esta modalidad..

Utilizando Seguridades.

El FCKEditor dispone de una instancia protegida en un archivo .htaccess con el usuario y el password, por  IP o algo similar, usted debe normalmente permitir al conector que desplegue información, de lo contrario las personas revisaran información de su servidor y eso es peligrosos.
Si esta utilizando FCKEditoris se requiere autintificación para poder utilizar este archivo y para ello debe modificar el archivo config para que se pueda autentificar, aqui tenemos un ejemplo:


require_once('/path/to/authentication-libray.php');
$Config['Enabled'] = is_authenticated();

Getting the connector to actually work

Some other configuration options need to be set to actually get the connector working. By default it looks for and saves files to a folder called "userfiles". You can use this default if you want and need to create it if it doesn't already exist, changing the permissions to 0777 so the connector can create folders and files underneath this.
Alternatively you can change the following setting:
$Config['UserFilesPath'] = '/userfiles/' ;
to whereever it is you want to browse/store files. For example if you want to be able to browse all files and folders under the root level you can change it to this:
$Config['UserFilesPath'] = '/' ;
And then just change permissions for the directories you want to be able to upload to to 0777.
The section that looks like this also needs to be modified:
$Config['FileTypesPath']['Image'] = $Config['UserFilesPath'] . 'image/' ;
$Config['FileTypesAbsolutePath']['Image'] = ($Config['UserFilesAbsolutePath'] == '') ? '' : $Config['UserFilesAbsolutePath'].'image/' ;
$Config['QuickUploadPath']['Image'] = $Config['UserFilesPath'] ;
$Config['QuickUploadAbsolutePath']['Image'] = $Config['UserFilesAbsolutePath'] ;
Either remove the 'image/' part from from $Config['FileTypesPath']['Image'] and $Config['FileTypesAbsolutePath']['Image'] or add it to the other two (or change it to e.g. 'images/' and add that to the others if you wish to use a different name).
If you don't do this, you won't be able to find any of the files you upload. There are also configuration options in the same section for files of File, Flash and Media types and they have the same issue as with images.

Preventing file uploads

To only allow browsing and to prevent file uploads, change the config option:
$Config['ConfigAllowedCommands'] = array('QuickUpload', 'FileUpload', 'GetFolders', 'GetFoldersAndFiles', 'CreateFolder') ;
to:
$Config['ConfigAllowedCommands'] = array('GetFolders', 'GetFoldersAndFiles') ;

Preventing Flash and Media file uploads/browsing

To remove flash and media file types (you could also remove image and/or file types using this method), change the config option:
$Config['ConfigAllowedTypes'] = array('File', 'Image', 'Flash', 'Media') ;
to:
$Config['ConfigAllowedTypes'] = array('File', 'Image') ;

Removing file uploads from the Javascript dialogs

Even if you remove the file upload options from the server-sided configuration the options will still remain in the Javascript. When the user tries to upload a file they will get an error message. I have covered this is earlier posts so refer to those (Remove "Browse" button and "Upload" tab in FCKEditor Image Properties dialog and Remove "Browse" button and "Upload" tab in FCKEditor Link dialog).

Curso básico de Drupal

Tomado de:
Videos Curso Basico Drupal

i estás empezando con Drupal y estás un tanto perdido con éste fantástico CMS estás de enhorabuena porque tienes a tu alcance un completo Curso básico de Drupal totalmente gratuito, realizado por Jesús Conde, el maestro de los videotutoriales en España. Hemos decidido publicarlo en Educasitio y así completar los varios videotutoriales que hemos publicado sobre Drupal.
Con éste curso de Drupal aprenderás desde cero, lo instalaras, harás las configuraciones básicas y poco a poco te iras adentrando en todos los aspectos de Drupal, explicado de una forma amena y sencilla. Consta de 18 videotutoriales.
Fuente: Videotutoriales.com

Imágenes

HOla,
En primer lugar felicidades por el videotutorial. He empezado de 0 y en 2 semanas ya tengo bastante instalado.
Una pregunta, el tema imágenes. El FckEditor busca la ruta de la imagen en el servidor. Necesito un tipo de editor que la pueda buscar en mi ordenador, hay alguno?
Necesito implementar un repositorio de imágenes. Hay algún módulo tipo gallery que te deje visualizar bien las imágenes de forma ordenada, por taxonomías. Es para una biblioteca.... muchas gracias!

Bueditor + IMCE

Siempre uso para insertar imágenes en los artículos el Bueditor + el IMCE, éste te permite cargar imagenes desde tu disco duro y con algun complemeto más puedes recortar imagenes y crear/borrar directorios en el servidor para tenerlas ordenadas.
Con el bueditor vienen unos botones predefinidos pero puedes crear más adaptandolos a tus necesidades, pero requiere conocimientos de HTML por lo menos, por ejemplo yo me he creado un botón para además de insertar la imagen... poder alinearla a la derecha o izquierda y darle un margen para que el texto se separe un poco de la imagen, el código es éste:
php:
$imce_url = function_exists('imce_menu') && user_access('access imce') ? url('imce/browse') : '';

return "js:
var B = eDefBrowseButton('$imce_url', 'attr_src', 'Browse', 'image');
var form = [
{name: 'src', title: 'Image URL', suffix: B},
{name: 'width', title: 'Width x Height', suffix: ' x ', getnext: true, attributes: {size: 3}},
{name: 'height', attributes: {size: 3}},
{name: 'alt', title: 'Texto alternativo'},
{name: 'title', title: 'Titulo' },
{name: 'style' , title: 'style', value: 'float:left; margin:5px 5px 0px 0px'},
];
eDefTagDialog('img', form, 'Insert/edit image', 'OK');
";
Tan solo lo tienes que pegar en un botón dentro de la configuración del Bueditor.
En cuanto al tema de la galería, no he usado ninguna pero sí que hay módulos para ello, tendrás que navegar por el amplio repositorio de módulos y buscar algo que se amolde a tus necesidades, es cuestión de ir probando. Si veo algo te lo comento...

ayuda por favor

LA VERDAD ESTOY COMENZANDO EN DRUPAL Y NO HE SIDO CAPAZ DE MOSTRAR EN UNA MISMA PAGINA VARIAS IMAGENES HE INSTALADO UNA CONTIDAD DE MODULOS Y YA NO SE QUE HACER, BUENO YA LAS BUSCA PERO EN LA PADINA ME APARCEN ADJUNTAS COMO UN LINK Y AL CLICKEARLO ME LLEVA A OTRO LADO Y ME MUESTRA LA IMAGEN, PERO REALMENTE LO QUE QUIERO ES MOSTRAR UN PARRAFO Y LUEGO LA IMAGEN, UN PARRAFO Y LUEGO LA IMAGEN, O UN PARRAFO Y DEBAJO LA IMAGEN AYUDENME PORFA.
AHORA BAJE UN MODULO QUE ME DEJA COLOCAR NEGRITA Y CURSIVA Y ME SALE PARA AGREGAR IMAGEN Y ME PIDE DIRECCIÓN URL Y LE DOY UNA Y NO SALE NADA Y LO MISMO CUANDO ME PIDE LINK, REALMENTE NECESITO AYUDA QUIERO APRENDER DE DRUPAL

Bueditor + IMCE

Si lo que quieres es en un mismo nodo (Página) meter todas las imagenes junto con texto te aconsejo Bueditor+IMCE como comenté en el comentario anterior.

AYUDAAAAA

QUE PENA ME PUEDES REGALAR UN MANUAL ES QUE POR DIOS NO ME SALE Y LO NECESITO URGENTE, DISCULPA PERO ES QUE APENAS ESTOY APRENDIENDO, ME DA PENA PERO SI NO PREGUNTO NO PUEDO LLEGAR A NUNGUN LADO AYUDAME POR FAVORRRRRR

Borrar contenido BD

Hola,
Estoy dando mis primeros pasitos en Drupalinfo, he creado un tipo de contenido "foto" y he cargado unas cuantas fotos. Después he creado una vista para visualizar las fotos. Hasta aquí todo bien. Mi pregunta es que ahora quiero borrar un par de fotos , y no me sale ninguna opción para poder hacerlo.
Creo que una opción sería ir a la BD (wampserver) y borrarlo desde allí; Pero no se como acceder a la BD.
Gracias!!

Cuando creas un tipo de

Cuando creas un tipo de contenido "foto" estás creando un nodo, los nodos se pueden editar y borrar, tan simple como eso.

Una duda

Hola
Gracias ... muchas gracias por este curso que, de una manera tan sencilla y directa, me ha permitido empezar a trastear en Drupalinfo empezando desde casi cero (tengo alguna experiencia a nivel medio en blogger, pero no se nada de php).
Tengo algunos problemas al trabajar con algunos módulos, porque las últimas versiones no siempre me funcionan bien (poormanscron) o porque me da un error que no se solucionar (swftools) pero el proyecto (un portal ambiental) está tomando forma de manera muy rápida. Todo, repito, gracias a la confianza que me ha transmitido este curso.
La duda que tengo es la siguiente. Leo en algunos foros los problemas derivados de trasladar la estructura del sitio configurado en modo local a la web. ¿Es mejor empezar desde cero a configurar el sitio online o es mejor trasladarlo desde el ordenador? Mi proyecto no tiene fecha prevista de puesta en marcha y creo que, una vez me sienta cómodo con la configuración que quiero, podría ponerlo en marcha (online) en unos pocos días.
Un saludo.

Personalmente hago las

Personalmente hago las pruebas en local y luego construyo el sitio online, pero también se puede hacer de esa manera.

Muchas gracias por la

Muchas gracias por la información

Instalar modulo FCKeditor para Drupal

Tomado de:Referencia

A drupal le falta incorporar un editor visual HTML para poder crear nuestros contenidos con negrita, imagenes, archivos flash, cambiar el tipo de letra, sin estar colocando los codigos HTML. Para eso existe el editor Visual FCKeditor En este tuto explicare como instalarlo. Al final debe estar asi:
Los pasos seran:
1) Descargar módulo FCKeditor para integrarlo con Drupal
2) Descargar FCKeditor
3) Configuramos FCKeditor

Instalación:

Descargar módulo para integrar FCKeitor con Drupal

1) Descargamos el modulo FCKeditor para integrarlo con drupal desde la página http://drupal.org/project/fckeditor
2) Descomprimimos el archivo y tendremos la carpeta “fckeditor”
3) Lo subimos a nuestro servidor donde esta drupal y lo colocamos en la carpeta “modules”

Descargar FCKeditor

1) Ahora descargamos FCKeditor (incluido con el codigo fuente), desde la página http://www.fckeditor.net/download
2) Lo descomprimimos a nuestro disco duro y vemos que hay una carpeta llamada “fckeditor”.
3) Las carpetas y archivos que estan dentro de la carpeta “fckeditor” lo copiamos a nuestro servidor donde esta Drupal a “/modules/fckeditor/fckeditor” (Hay un archivo que dice COPY_HERE.txt)

Configurando FCKeditor

1) Ahora nos vamos a “Administer” – “Site Building” – “Modules” y activamos “FCKeditor”.
2) Configuramos los permisos para el uso de FCKeditor “Administer > User Management > Permissions”.
fckeditor module anonymous user authenticated user
access fckeditor MARCADO MARCADO
administer fckeditor DESMARCADO DESMARCADO
allow fckeditor file uploads DESMARCADO DESMARCADO
3) En “Administer” > “Site configuration” > FCKeditor”, ajustamos los perfiles de cada usuario para el uso de FCKeditor, en este caso selecciono el profile (perfil) Advanced y hago clic en “edit”. Luego abajo en “Editor appearance” selecciono, opción “skin” selecciono “Silver” y hacemos clic en el boton para grabar que es “Update”.
4) Para que el texto enriquecido funcione al publicar nuestros contenidos y que lo puedan ver los usuarios, debemos configurar en “Administer” – “Site configuration” – “Input formats”.
  • En “Filtered HTML” presionamos “configure”.
  • Nos muestra las opciones de “Filtered HTML” pero hacemos clic en “Configure”
  • En la opción donde dice Allowed HTML tags colocamos: 
  • <a> <p> <span> <div> <h1> <h2> <h3> <h4> <h5> <h6> <img> <map> <area> <hr><br> 
  • <br /> <ul> <ol> <li> <dl> <dt> <dd> <table> <tr> <td> <em> <b> <u> <i> <strong>
  • <font> <del> <ins> <sub> <sup> <quote> <blockquote> <pre> <address> <code><cite> <embed> <object> <strike> <caption>
  • Guardamos la configuración.
5) Se recomienda desactivar la opción Line break converter” que esta en “Filters”
Listo ya puedes usar el FCKeditor.

Video – Instalar FCKeditor en Drupal en 7 minutos

En esta página hay un video que explica como instalar FCKeditor en Drupal en 7 minutos, el video esta en ingles, pero no es necesario saber ya que con las video nos guiamos.

viernes, diciembre 10, 2010

Tomado de:
Los sistemas EIS

Sistemas de Información Ejecutiva (EIS)

Un Sistema de Información para Ejecutivos o Sistema de Información Ejecutiva es una herramienta software, basada en un DSS, que provee a los gerentes de un acceso sencillo a información interna y externa de su compañía, y que es relevante para sus factores clave de éxito.
La finalidad principal es que el ejecutivo tenga a su disposición un panorama completo del estado de los indicadores de negocio que le afectan al instante, manteniendo también la posibilidad de analizar con detalle aquellos que no estén cumpliendo con las expectativas establecidas, para determinar el plan de acción más adecuado.


Sistemas de Información Ejecutiva (EIS)

De forma más pragmática, se puede definir un EIS como una aplicación informática que muestra informes y listados (query & reporting) de las diferentes áreas de negocio, de forma consolidada, para facilitar la monitorización de la empresa o de una unidad de la misma.
El EIS se caracteriza por ofrecer al ejecutivo un acceso rápido y efectivo a la información compartida, utilizando interfaces gráficas visuales e intutivas. Suele incluir alertas e informes basados en excepción, así como históricos y análisis de tendencias. También es frecuente que permita la domiciliación por correo de los informes más relevantes.
A través de esta solución se puede contar con un resumen del comportamiento de una organización o área específica, y poder compararla a través del tiempo. Es posible, además, ajustar la visión de la información a la teoría de Balanced Scorecard o Cuadro de Mando Integral impulsada por Norton y Kaplan, o bien a cualquier modelo estratégico de indicadores que maneje la compañía.


Ejemplo de EIS

Si no está familiarizado con el concepto de Sistema de Información Ejecutiva, puede resultarle útil, además, examinar las siguientes definiciones:

martes, diciembre 07, 2010

Tomcat y configuraciones

Tomado de: Tomcat

h1

Contendores del tomcat

2 Noviembre 2009
Context Container
El Context element representa una aplicación web, que se ejecuta en un host virtual. Cada aplicacion se basa en un archivo de aplicación (WAR), o un directorio que contiene los elementos descomprimidos.
Catalina decide que plicación que procesa una petición HTTP basándose en la URI comparandola con la ruta del contexto. Una vez que se seleciona el contexto, éste decidira el servlet para procesar la petición de acuerdo con los mapeos de los servlets definidos en el descriptor de la aplicación web (web.xml) que se encuentra en /WEB-INF/web.xml.
Se pueden definir tantos contextos como se quiera, teninedo en cuenta que cada contexto tiene que tener una ruta única, además, debe de existir un contexto con una ruta con una ruta cuya longitud sea cero. Este contexto es el contexto por defecto para los hosts virtuales y se usa para procesar todas las peticiones que no coinciden con ningún contexto.
A partir del Tomcat 5, no se recomienda poner elementos directamente en el server.xml. Esto es porque no es posible modificar la configuración del contexto en el fichero server.xml y recargar dicha configuración sin reiniciar el Tomcat.
Los contextos se pueden definir explicitamente en:
$CATALINA_HOME/conf/context.xml: La información del contexto se cargaran por todas las aplicaciones.
$CATALINA_HOME/conf/[enginename]/[hostname]/context.xml : La información del contexto se cargara por todas las aplicaciones en ese host virtual.
Engine Container
El Engine representa todo el proceso de peticiones asociados a un servicio del catalina en particular, recibe y procesa todas las peticiones de uno o más conectores devolciendo el response completo al conector para que se la devuelva al cliente.
Tiene que existir un engine dentro de un sericio, seguido de todos los conectores asociados al servicio.
Host Container
El elemento host representa un host virtual, que representa una asociación al dominio (por ejemplo “www.google.com”) con el servidor Catalina sobre el que se ejecuta. Para que funcione correctamente se tiene que registrar la DNS.
Para poder asociar mas de un dominio a un host se tiene que usan los alias. Se pueden asociar mas de un host a un Engine. Dentro del host se puede anidar los contextos de las aplicaciones web asociados al host virtual. Al menos uno de tiene que ser el defaultHost del Engine.
h1

Válvulas de Tomcat

2 Noviembre 2009
¿Qué es una válvula del tomcat?
Las válvulas del tomcat son una técnología introducida a partir de Tomcat 4 que permite asociar una instacia de una clase Java al un contenedor Catalina.
Esta configuración permite que la clase asociada actue como un pre-procesador de las peticiones. Estas clases se llaman válvulas, y deben implementar la intefaz org.apache.catalina.Valve interface o extender la clase org.apache.catalina.valves.ValveBase. Las válvulas son propias de Tomcat y no pueden ser usadas en otros contenedores de servlet. Las válvulas disponibles son:
- Access Log
- Remote Address Filter
- Remote Host Filter
- Request Dumper
- Single Sign On
- Form Authenticator
Access Log Valve
La primera válvula por defecto del tomcat es Access Log Valve, que está implementada por la clase org.apache.catalina.valves.AccessLogValve. Crea ficheros de log para rastrear el acceso a la información de los clientes.
Alguna de la infomación que rastrea son clicks, actividad de la sesión del usuario, información de la autenticación del usuario entre otras. Esta válvula se puede asociar a un engine, host o context container del Tomcat.
Ejemplo de uso :
1<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common"/>
Este código indica que los logs se guardaran en el directorio /logs, con el prefijo “localhost_access_log.”, y con el sufijo “.txt”.
Remote Address Filter
El Remote Address filter lo implementa la clase org.apache.catalina.valves.RemoteAddrValve, permite comparar direcciones IP de los clientes que realizan la petición con una o varias expresiones regulares para prohibir o permitir el acceso. Esta válvula se puede asociar al Engine, Host, o Context container.
Ejemplo de uso:
1<Valve className="org.apache.catalina.valves.RemoteAddrValve" deny="127.*"/>
Esta sentencia prohibe el acceso a todos los clientes cuya IP empiecen por 127.
Remote Host Filter
El Remote Host filter está implementado por org.apache.catalina.valves.RemoteHostValve es muy parecido al RemoteAddrValve, con la diferencia que te permite comparar al nombre del host en vez de la IP. Se puede asociar al Engine, Host, o Context container.
Ejemplo de uso:
1<Valve className="org.apache.catalina.valves.RemoteHostValve" deny="virtuas*"/>
Con esta sentencia prohibimos el acceso a todos los host con que incluyan en su nombre virtuas.
Request Dumper Valve
ElRequest Dumper valve lo implenta la clase org.apache.catalina.valves.RequestDumperValve es una herramienta de depuración que escribe en el log el detalle de cada petición realizada. Se puede asociar al Engine, Host, o Context container.
Ejemplo de uso:
1<Valve className="org.apache.catalina.valves.RequestDumperValve"/>
Si accedemos a cualquier aplicación en localhost:8080 y accedemos al log, veremos unas cuantas entradas realizadas por el RequestDumperValve.
Single Sing On
Esta válvula se utiliza cuando queremos que los usuarios puedan identificarse en cualquier aplicacion en nuestro virtual host, y que su identidad sea reconocida por cualquier aplicación que esté en ese host.
Ejemplo de uso:
1<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
Form Authenticator Valve
Se añade automáticamente al Context cuando este se configura para usar autenticación mediante FORM.
h1

Control de accesos por IP a Tomcat

9 Octubre 2009
Hace poco tuve que capar el acceso a una aplicación por IP, barajamos varias opciones y al final el personal de sistemas tomó una decisión. De todas formas me pareció muy interesante usar las valve o válvulas de Tomcat para hacerlo. Nunca lo había hecho, ni sabía que se podía hacer con el propio Tomcat, siempre había pensado en firewalls o apache, o cualquier otra cosa. La verdad es que nunca tuve que ver como se hacía hasta ahora.
Para hacerlo hay que hacer lo siguiente:
En el fichero server.xml, dentro del Host localhost, ponemos lo siguiente:
1<Valve lassName="org.apache.catalina.valves.RemoteAddrValve" deny="192.164.1.*">
En este caso prohibimos el acceso a todas las direcciones IP que concuerden con 192.164.1.*, se pueden poner más si separamos las IPs con “,”. También se puede definir el parámetro “allow”  que se usa de la misma forma, en este caso todas las IPs que no concuerden con nuestra expresión, no podrán tener acceso.
h1

Vulnerabilidades en Tomcat

9 Octubre 2009
Se han encontrado varios dos fallos de seguridad en las siguientes versiones de tomcat:
Tomcat 4.1.0 al 4.1.37
Tomcat 5.5.0 al 5.5.26
Tomcat 6.0.0 al 6.0.16
Estas vulnerabilidades son:
1)En el RequestDispatcher la ruta de destino se normalizó antes de que la cadena de consulta se ha retirado. Por lo tanto si se pone un parámetro malicioso en la consulta se puede conseguir acceder a información restringida o información que se encuentre en el WEB-IND
Ejemplo:
Una página que tenga:
<%

pageContext.forward("/page2.jsp?somepar=someval&par="+request.getParamet

er("blah"));

%>

El hacker puede usar:

http://host/page.jsp?blah=/../WEB-INF/web.xml


2) HttpServletResponse.sendError () no es sólo aparece en la página de error, también se utiliza en el HTTP response. Esto puede incluir caracteres que son ilegales en las cabeceras HTTP. Con un esto se puede conseguir un ataque XSS, al inyectar contenido arbitrario en la respuesta HTTP.
Por ejemplo:
<%@page contentType=”text/html”%>
<%

final String CRLF = "\u010D\u010A";

final String payload = CRLF + CRLF + "<script

type='text/javascript'>document.write('Hi, there!')</script><div style='display:none'>";

final String message = "Authorization is required to access " + payload;

response.sendError(403, message);

%>
h1

Comunicación entre contextos

9 Octubre 2009
En uno de los proyectos en los que trabajo, tengo la necesidad de compartir variables entre dos contextos que se encuentran en el mismo Tomcat y descubrí el CrossContext que es un atributo de configuración de tomcat que sirve para que las diferentes aplicaciones en el servidor compartan el contexto.
Se tiene que modificar el fichero conf/server.xml del tomcat añadiendo las siguientes líneas dentro del tag <host>:
<Context path=”/miapiclicacion1″ debug=”0″ reloadable=”true” crossContext=”true” />
<Context path=”/miaplicicacion2″ debug=”0″ reloadable=”true” crossContext=”true” />
Con el “crossContext = true” indicamos a los dos proyectos que van a compartir información.
En uno de los proyectos en los que trabajo, tengo la necesidad de compartir variables entre dos contextos que se encuentran en el mismo Tomcat y descubrí el CrossContext que es un atributo de configuración de tomcat que sirve para que las diferentes aplicaciones en el servidor compartan el contexto.
Se tiene que modificar el fichero conf/server.xml del tomcat añadiendo las siguientes líneas dentro del tag <host>:
<Context path=”/miapiclicacion1″ debug=”0″ reloadable=”true” crossContext=”true” />
<Context path=”/miaplicicacion2″ debug=”0″ reloadable=”true” crossContext=”true” />
Con el “crossContext = true” indicamos a los dos proyectos que van a compartir información.
Ahora en una de las aplicaciones podemos poner algo así:
application.setAttribute(”variable”,”hola”);
En la otra ponemos
ServletContext sc = pageContext.getServletContext().getContext(”/miaplicacion2″); //inicializa el servlerContext con el nombre de la aplicación de la que queremos //obtener el contexto
out.println(sc.getAttribute(”variable”));
h1

¿Cuál es la diferencia entre common/lib y shared/lib en Tomcat?

8 Octubre 2009
En common/lib están los archivos jar que se por las aplicaciones web y el propio servidor, mientras que en shared/lib tenemos las librerías que son accesibles sólo para las aplicaciones web.
h1

El log de Tomcat

22 Enero 2009
Hoy he tenido un problema, me he dado cuenta de que mi log del tomcat era demasiado grande, 6 Gb; Lo cual me llamo la atención, ya que sabía, que por defecto el log de tomcat se define como “rotable” es decir, que se rotan los logs una vez al día. Miré si era problema de premisos y no, era problema de configuración. Así que desempolve mi libro de tomcat y lo configuré bien. De ahí, que hoy haya decidido explicar un poco este tema.
Desde el Tomcat 4, existe un concepto que se conoce como “valve” que permite asociar una instancia de una clase java a un contenedor Catalina. De esta forma, asociando el nombre de la clase, podemos hacer que esta actue como un preprocesador de cada solicitud. Estas clases deben implementar la clase org.apache.catalina.Valve o extender la org.apache.catalina.valves.ValveBase clase. Tomcat viene configurado con cuatro válvulas:
- Access Log
- Remote Address Filter
- Remote Host Filter
- Request Dumper
Me voy a centrar en la primera, la válvula del log o LogAccessValve, la clase es org.apache.catalina.valves.AccessLogValve. Cuya misión es crear archivos de log para seguir el seguimiento de la aplicación del servidor de aplicaciones o de la aplicación si deseamos usar este log y no uno propio para ello. Algunos de las seguimientos que hace esta válvula es hit counts, actividad de la sesión del usuario, la autenticación de los usuarios, entre otros.
El siguiente fragmento de código es un ejemplo usando la entrada org.apache.catalina.valves.AccessLogValve:

<Valve className=”org.apache.catalina.valves.AccessLogValve” directory=”logs” prefix=”localhost_access_log.” suffix=”.txt” pattern=”common”/>
Este fragmento de código establece que los archivos de log se colocarán en la <CATALINA_HOME> /, con el sufijo localhost_access_log, con el sufijo txt.
El atributo que me dio a mi el quebradero de cabeza era rotable, que en mi caso estaba a false y con esto hay que tener mucho cuidado. Por defecto está a true.
h1

Ampliar la memoria al tomcat

16 Diciembre 2008
Uno de los problemas más comunes que nos hemos encontrado todos alguna vez es que nuestro servidor de aplicaciones, en este caso, tomcat, se quede sin memoria (heap space), para ampliarlo tenemos que tener en cuenta los parámetros que tenemos que modificar, cómo modificarlos y dónde modificarlos. Para empezar vamos a hablar de las opciones:
  • Maximum heap size: Esto indica el tamaño máximo de la memoria que usara la máquina virtual de java (JVM). En la mayoría de los casos el valor que toma por defecto es 64MB. Para ampliar la memoria se utiliza el parámetro -Xmx, por ejemplo, -Xmx512m. Hay que tener en cuenta que la memoria que se le aplique debe ser consiederablemente menor a la cantidad de RAM del sistema, sino puede entrar en conflicto con otras aplicaciones.
  • Nota: Si queremos saber la memoria de la que disponemos en Linux, ejecutar el comando top o free.
  • Initial heap size: Indica el la memoria que se utiliza inicialmente y se configura de la siguiente usando el parámetro -Xms, por ejemplo, -Xms252m
Algunos de los fallos comunes a la hora de configurar la memoria del tomcat son:
  1. No poner m, M o g, G, teniendo en cuenta que es sensible a mayúsculas.
  2. Escribir mal la sentencia, no lleva espacios ni el símbolo “=”, la forma correcta es -Xmx512m.
  3. Poner el initial heap size mayor que el maximun heap size.
  4. Que se le haya asignado una memoría mayor que la real del sistema.
  5. Usar como la unidad mb cuando es m.
  6. Asignarle más memoria de la que la JVM piensa que va a ser necesaria.
  7. No expresar la cantidad como un número entero.
Para modificar el tamaño de la memoria debemos ir a $TOMCAT_HOME\bin\catalina.sh o catalina.bat y poner:
set CATALINA_OPTS=”-Xms512m -Xmx512m”  (Windows)
export CATALINA_OPTS=”-Xms512m -Xmx512m”  (linux)

viernes, diciembre 03, 2010

En Resumen un Almacen de Datos(DataWareHouse) es

  1. La ventaja principal de este tipo de sistemas se basa en su concepto fundamental, la estructura de la información
  2. Integrado: los datos almacenados en el Data Warehouse deben integrarse en una estructura consistente, por lo que las inconsistencias existentes entre los diversos sistemas operacionales deben ser eliminadas. La información suele estructurarse también en distintos niveles de detalle para adecuarse a las distintas necesidades de los usuarios.
  3. Temático: sólo los datos necesarios para el proceso de generación del conocimiento del negocio se integran desde el entorno operacional. Los datos se organizan por temas para facilitar su acceso y entendimiento por parte de los usuarios finales. Por ejemplo, todos los datos sobre clientes pueden ser consolidados en una única tabla del Data Warehouse. De esta forma, las peticiones de información sobre clientes serán más fáciles de responder dado que toda la información reside en el mismo lugar.
  4. Histórico: el tiempo es parte implícita de la información contenida en un Data Warehouse. En los sistemas operacionales, los datos siempre reflejan el estado de la actividad del negocio en el momento presente. Por el contrario, la información almacenada en el Data Warehouse sirve, entre otras cosas, para realizar análisis de tendencias. Por lo tanto, el Data Warehouse se carga con los distintos valores que toma una variable en el tiempo para permitir comparaciones.
  5. No volátil: el almacén de información de un Data Warehouse existe para ser leído, y no modificado. La información es por tanto permanente, significando la actualización del Data Warehouse la incorporación de los últimos valores que tomaron las distintas variables contenidas en él sin ningún tipo de acción sobre lo que ya existía.
Para comprender el concepto de Data Warehouse, es importante considerar los procesos que lo conforman. A continuación se describen dichos procesos clave en la gestión de un Data Warehouse:
Extraccion: obtención de información de las distintas fuentes tanto internas como externas.
Elaboracion: filtrado, limpieza, depuración, homogeneización y agrupación de la información.
Carga: organización y actualización de los datos y los metadatos en la base de datos.
Explotacion: extracción y análisis de la información en los distintos niveles de agrupación.

3.4.COMPONENTES A TENER EN CUENTA A LA HORA DE CONSTRUIR UN DW

3.4.1.Hardware

3.4.2.-Software de almacenamiento (SGBD)

3.4.3.- Software de extracción y manipulación de datos

Control de la extracción de los datos y su automatización, disminuyendo el tiempo empleado en el descubrimiento de procesos no documentados, minimizando el margen de error y permitiendo mayor flexibilidad.
Acceso a diferentes tecnologías, haciendo un uso efectivo del hardware, software, datos y recursos humanos existentes.
Proporcionar la gestión integrada del Data Warehouse y los Data Marts existentes, integrando la extracción, transformación y carga para la construcción del Data Warehouse corporativo y de los Data Marts.
Uso de la arquitectura de metadatos, facilitando la definición de los objetos de negocio y las reglas de consolidación.
Acceso a una gran variedad de fuentes de datos diferentes.
Manejo de excepciones.
Planificación, logs, interfaces a schedulers de terceros, que nos permitiran llevan una gestión de la planificación de todos los procesos necesarios para la carga del DW.
Interfaz independiente de hardware.
Soporte en la explotación del Data Warehouse.
A veces, no se suele prestar la suficiente atención a esta fase de la gestión del Data Warehouse, aun cuando supone una gran parte del esfuerzo en la construcción de un Data Warehouse. Existen multitud de herramientas disponibles en el mercado que automatizan parte del trabajo.

3.4.4.- Herramientas Middleware

• Por un lado herramientas Middleware, que provean conectividad entre entornos diferentes, para ayudar en la gestión del Data Warehouse.
• Por otro, analizadores y aceleradores de consultas, que permitan optimizar tiempos de respuestas en las necesidades analíticas, o de carga de los diferentes datos desde los sistemas operacionales hasta el Data Warehouse.
Las herramientas Middleware deben ser escalables siendo capaces de crecer conforme crece el Data Warehouse, sin problemas de volúmenes. Tambien deben ser flexibles y robustas, sin olvidarse de proporcionar un rendimiento adecuado. Estarán abiertas a todo tipos de entornos de almacenamiento de datos, tanto mediante estándares de facto (OLE, ODBC, etc.), como a los tipos de mercado más populares (DB2, Access, etc.). La conectividad, al menos en estándares de transporte (SNA LU6.2, DECnet, etc.) debe estar tambien asegurada.
Con el uso de estas herramientas de Middleware lograremos:
• Maximizar los recursos ejecutando las aplicaciones en la plataforma más adecuada.
• Integrar los datos y aplicaciones existentes en una plataforma distribuida.
• Automatizar la distribución de datos y aplicaciones desde un sistema centralizado.
• Reducir tráfico en la red, balanceando los niveles de cliente servidor (mas o menos datos en local, mas o menos proceso en local).
• Explotar las capacidades de sistemas remotos sin tener que aprender multiples entornos operativos.
• Asegurar la escalabilidad del sistema.
• Desarrollar aplicaciones en local y explotarlas en el servidor.
Los analizadores y aceleradores de querys trabajan volcando sobre un fichero de log las consultas ejecutadas y datos asociados a las mismas (tiempo de respuesta, tablas accedidas, método de acceso, etc). Este log se analiza, bien automáticamente o mediante la supervisión del administrador de datos, para mejorar los tiempos de accesos.
Estos sistemas de monitorización se pueden implementar en un entorno separado de pruebas, o en el entorno real. Si se ejecutan sobre un entorno de pruebas, el rendimiento del entorno real no se vé afectado. Sin embargo, no es posible optimizar los esfuerzos, puesto que los análisis efectuados pueden realizarse sobre consultas no críticas o no frecuentemente realizadas por los usuarios.
El implantar un sistema analizador de consultas, en el entorno real tiene además una serie de ventajas tales como:
• Se pueden monitorizar los tiempos de respuesta del entorno real.
• Se pueden implantar mecanismos de optimización de las consultas, reduciendo la carga del sistema.
• Se puede imputar costes a los usuarios por el coste del Data Warehouse.
• Se pueden implantar mecanismos de bloqueo para las consultas que vayan a implicar un tiempo de respuesta excesivo.

3.4.5.Conclusiones y consideraciones de interes.

El Data Warehouse va a ser el elemento principal en nuestro sistema de Inteligencia de Negocio. De su correcta definición, procesamiento y carga de datos va a depender el exito posterior del proyecto.
Aunque el usuario al final solo vea un conjunto de herramientas de analisis que utilizar para “atacar” a los datos, por delante hay una serie de procesos que hacen que toda la información proveniente de diferentes sistemas haya sido identificada, extraida, procesada, homogeneizada, depurada y cargada en el Datawarehouse. Esto es posible a través de las herramientas ETL y Middleware. Y esta  es la parte que normalmente mas tiempo lleva en cualquier proyecto.
Muchas veces conviene elegir un departamento piloto para implantar sistemas de este tipo que luego nos permitan vender internamente dentro de la organización los proyectos.
Habrá que dar siempre importancia a la formación como eje fundamental al uso de las herramientas.
Los proyectos de BI y DW no van a ser solo proyectos tecnológicos, hay mucho mas detras, y aunque en ellos se utilize la tecnología tiene que haber conocimiento empresarial para poder reflejar en el lo que  realmente se necesita, desde los niveles mas bajos hasta los superiores de toma de decisiones. En este momento el consultor de BI también tiene que ser capaz de aportar no solo su conocimiento tecnológico, sino también conocimiento de las area de negocio y de los diferentes elementos que se van a utilizar en el diseño, desarrollo y explotación de un sistema de BI (ver el artículo de Jorge Fernández en su blog: El consultor de Bi, ese bicho raro ).

3.4.6. Nuevas tendencias en el mundo DW. El Datawarehouse 2.0.

Los sistemas DW han evolucionado en los ultimos años conforme han surgido nuevas necesidades. Los motivos de esta evolución son varios, y los podemos resumir en:
- Uso de herramientas de analisis que obligaban a estructuras diferentes optimazadas al uso de determinadas tecnologías (por ejemplo el data mining o el uso de herramientas estadísticas).
- Simplificación de la gestión de sistemas DW complejos formados por multiples datamarts orientados a cada departamento en los que se pierde el concepto de Corporativo (que hace que se pierdan oportunidades ).
- De la unión de multiples aplicaciones pequeñas (Datamarts o Datawarehouse), no surge toda la información corporativa. Sería necesario construir este Centro a partir del cual se van a generar todos los DW necesarios para todos los ambitos de análisis.
- Proceso Online: los procesos de actualización hacían que hubiera muchos momentos en los que no se podía acceder a los datos. Igualmente, podría haber cierto retardo en la disponibilidad de la información, lo que nos impedia poder hacer análisis inmediatos (analisis mas orientados a la operacion del negocio).
- Evolución tecnologica en las herramientas ETL, costes de la tecnología (los costes han bajando de tal forma que permiten abordar los proyectos de una forma mas amplia), etc.

jueves, diciembre 02, 2010

Cómo no construir un datawarehouse

Tomado de:
Creando un DW

A través de TodoBI he encontrado un artículo muy interesante de Ralph Kimball (¿Algún despistado que no lo conoce?) donde detalla los 12 errores más comunes en la construcción de un datawarehouse.
Se trata de un artículo excelente. Cada vez que he cometido alguno de estos errores, he tenido que rectificar al poco tiempo. No valen los atajos, hay que hacer las cosas bien desde el principio.
Los doce errores más comunes en la construcción de un datawarehouse son:
  • Error 12: Incluir atributos de texto en una tabla de hechos, si se hace con la intención de filtrar o agrupar.
  • Error 11: Abreviar las descripciones en las tablas de dimensión con la intención de reducir el espacio requerido.
  • Error 10: Dividir las jerarquías y los niveles de las jerarquías en múltiples dimensiones.
  • Error 9: No afrontar el tratamiento de las dimensiones lentamente cambiantes.
  • Error 8: Crear “smart keys” para relacionar una tabla de dimension con una tabla de hechos.
  • Error 7: Añadir dimensiones en una tabla de hechos antes de definir su granularidad.
  • Error 6: Crear un modelo dimensional para resolver un informe en particular.
  • Error 5: Mezclar hechos de diferente granularidad en una misma tabla de hechos.
  • Error 4: Olvidarse del máximo nivel de detalle en el modelo entidad-relación.
  • Error 3: Omitir las tablas agregadas y comprimir las tablas de dimension para afrontar los problemas de rendimiento.
  • Error 2: No unificar los hechos entre distintas tablas de hechos
  • Error 1: No compartir dimensiones entre diferentes tablas de hechos.
En mi vida laboral he participado en la construcción de varios datawarehouses, y he visto muchos de estos errores. Durante los próximos días, analizaré una a una estas recomendaciones de Kimball, e intentaré justificar por que son errores graves y cómo debemos evitarlos.
A mis lectores menos "tekies", os pido perdón porque los próximos mensajes no los escribo pensando en vosotros. Van dirigidos al lado oscuro... :-)

Serie sobre cómo construir un datawarehouse

Finalmente, he terminado de recorrer la lista de Ralph Kimball sobre cómo no construir un datawarehouse. A lo largo de estos artículos he intentado introducir los conceptos más importantes relativos a la modelización de un datawarehouse (base de cualquier entorno Business Intelligence).
Para finalizar esta serie, incluyo el índice de todas las entradas:
Cada artículo, analiza uno de los 12 errores que justificaron esta serie:
  • Mistake 12: Place text attributes in a fact table if you mean to use them as the basis of constraining and grouping.
  • Mistake 11: Limit the use of verbose descriptive attributes in dimensions to save space.
  • Mistake 10: Split hierarchies and hierarchy levels into multiple dimensions.
  • Mistake 9: Delay dealing with a slowly changing dimension (SCD).
  • Mistake 8: Use smart keys to join a dimension table to a fact table.
  • Mistake 7: Add dimensions to a fact table before declaring its grain.
  • Mistake 6: Declare that a dimensional model is "based on a specific report."
  • Mistake 5: Mix facts of differing grain in the same fact table.
  • Mistake 4: Leave lowest-level atomic data in E/R format.
  • Mistake 3: Eschew aggregate fact tables and shrunken dimension tables when faced with query performance concerns
  • Mistake 2: Fail to conform facts across separate fact tables.
  • Mistake 1: Fail to conform dimensions across separate fact tables.
Y que traduje de esta manera...
  • Error 12: Incluir atributos de texto en una tabla de hechos, si se hace con la intención de filtrar o agrupar.
  • Error 11: Abreviar las descripciones en las tablas de dimensión con la intención de reducir el espacio requerido.
  • Error 10: Dividir las jerarquías y los niveles de las jerarquías en múltiples dimensiones.
  • Error 9: No afrontar el tratamiento de las dimensiones lentamente cambiantes.
  • Error 8: Crear "smart keys" para relacionar una tabla de dimension con una tabla de hechos.
  • Error 7: Añadir dimensiones en una tabla de hechos antes de definir su granularidad.
  • Error 6: Crear un modelo dimensional para resolver un informe en particular.
  • Error 5: Mezclar hechos de diferente granularidad en una misma tabla de hechos.
  • Error 4: Olvidarse del máximo nivel de detalle en el modelo entidad-relación.
  • Error 3: Omitir las tablas agregadas y comprimir las tablas de dimension para afrontar los problemas de rendimiento.
  • Error 2: No unificar los hechos entre distintas tablas de hechos
  • Error 1: No compartir dimensiones entre diferentes tablas de hechos.