1. Introducción a HTML
Un documento HTML (Hyper Text Markup Language)
es un archivo ASCII que contiene marcas (tags) que le dicen al browser cómo
debe presentar el texto. Estos documentos pueden contener vínculos (links)
a otros documentos, gráficos, sonidos y hasta programas.
1.1 Tags
Un tag es una instrucción dentro del documento, que le dice al browser qué debe hacer. Los tags se mezclan con el texto del documento, pero no se visualizan a través del browser. Cada tag empieza con un "<", seguido de una instrucción, la cual se cierra con otro ">". El modo general es:
El HTML no es sensitivo al texto, es decir, <TAG>, <tag> y <TaG> tienen todos el mismo significado. <TAG>Texto afectado</TAG>.
A pesar de que casi cualquier documento de texto puede ser cargado y visualizado a través de un browser, no todos los documentos son tratados como documentos HTML. Los siguientes son los tags mínimos que debería tener un documento HTML:
Un ejemplo simple que usa estos tags es el siguiente:
- <HTML> Le informa al browser que lo que sigue es un documento HTML.
- <HEAD> Le dice al browser que lo que sigue es información de encabezado (básicamente el título del documento).
- <TITLE> Le dice al browser que lo que sigue es el título del documento.
- <BODY> Le dice al browser que lo que sigue es el texto del documento.
<html>
<head>
<title>Título del documento</title>
</head>
<body>
Texto del documento HTML
</body>
</html>
1.2 Encabezados
Los encabezados son tags que resaltan el texto. HTML ofrece 6 diferentes tamaños de texto:
<h1>Texto</h1>
<h6>texto</h6>. ·
·
·
El texto con <h1> es el más grande, y va disminyendo de tamaño, hasta llegar al <h6>, el más pequeño.
1.3 Centrar texto
Para centrar texto, se usa el tag <center> de la siguiente manera:
<center>Este texto aparece en el centro</center>
1.4 Links
Los links son punteros a otros documentos en Internet.. Estos documentos son, por lo general, archivos HTML, aunque pueden tener distintos formatos:
Ejemplo: http://dcc.ing.puc.cl/~group
- Un documento HTML: http://URL/archivo
- Un newsgroup: news://server/newsgroup
Ejemplo: news://usenet.ufl.edu/rec.arts.disney Ejemplo: ftp://ftp.ing.puc.cl
- Un sitio FTP: ftp://URL/path/archivo
Estos ejemplos pueden ser invocados directamente desde un browser copiando esas dirección en el área de Location. Sin embargo, pueden ser invocados desde otro documento HTML usando el siguiente tag:
<a href="objeto">Nombre del link</a>
donde "objeto" es un link válido como los ejemplos de arriba.
Ejemplo:
<a href="http://dcc.ing.puc.cl/~group>Taller de Groupware</a>
1.5 Imágenes
Los formatos típicos de imágenes que se pueden incluir en documentos HTML son: GIF y JPEG.
El tag para incluir una imagen en un documento HTML es el siguiente:
<IMG SRC="archivo">
Ejemplo: <IMG SRC="home.gif">
1.6 Backgrounds
El background es un atributo del tag BODY. Se puede escoger como background un color o una imagen. Para color hay cinco atributos en el tag BODY:
BGCOLOR: Color del background de la página.
TEXT: Color del texto de la página.
LINK: Color de los links NO visitados.
VLINK: Color de los links visitados.
ALINK: Color de los links activados. Es el color que aparece cuando se hace click en el link.
Ejemplo:
<body bgcolor="#CCFFCC" text="#0033FF" link="#9900FF" vlink="#AAAAAA" alink="#33FFFF">
Algunas veces se desea poner como background una imagen. El browser rellenará el background con copias de la imagen. El tag para hacer esto es el siguiente:
<body background="archivo">
Ejemplo:
<body background="bricks.gif" text="#FFFFFF" link="#00FFFF" vlink="#00AAAA">
1.7 Más información
Hay muchos sitios en Intener con tutoriales sobre HTML y sobre cómo hacer páginas Web. Algunos links recomendados son:
http://www.ramapo.edu/CCIS/htmltut.html
http://grove.ufl.edu/~u3063bnk/html.html
http://www.ncsa.uiuc.edu/General/Internet/WWW/HTMLPrimer.html
http://vobo.com.mx/Tutorial/cont/intro.html
http://www.iponet.es/~jspinte/internet.html
2. Introducción a JavaScript
JavaScript es un lenguaje de programación interpretado con características rudimentarias de orientación a objetos. El intérprete del lenguaje ha sido incorporado dentro del Netscape Navigator y otros Web browsers. Permite que un "contenido ejecutable" sea incluido dentro de una hoja HTML, lo cual hace que la hoja deje de ser estática, ya que se pueden incluir programas dinámicos que interactúan con el usuario, controlan el browser y dinámicamente crear contenidos HTML.
Sintácticamente el lenguaje JavaScript es similar a C, C++ y Java, con condicionales como if, ciclos while, etc. Sin embargo, JavaScript es un lenguaje sin tipos, es decir, las variables no tienen un tipo específico.
Ejemplo 2.1. Un programa JavaScript simple.
<HTML>
<BODY>
<SCRIPT LANGUAJE="JavaScript">
document.write("<h2>Tabla de factoriales</h2>");
for (i = 1, fact = 1; i < 10; i++, fact *= i) {
document.write(i + "! = " + fact);
document.write("<br>");
}
</SCRIPT>
</BODY>
</HTML>Como se puede ver en el ejemplo anterior, las marcas <SCRIPT> y </SCRIPT> son usadas para definir código JavaScript dentro de un archivo HTML. El método document.write() es usado para crear texto dinámicamente en una hoja HTML.
La siguiente figura muestra la hoja HTML del ejemplo anterior en el Netscape Navigator.
![]()
Figura 2.1. Página Web generada por el ejemplo 1. Ejemplo 2.2. Un formulario (form) HTML con un manejador de eventos JavaScript.
<HTML>
<FORM>
<INPUT TYPE="button"
VALUE="Haga Click"
onClick="alert('Usted presionó el botón')">
</FORM>
</HTML>En este caso hay un llamado a la rutina alert() de JavaScript cuando se produce el evento onClick, es decir, cuando se hace click en el botón.
La siguiente figura muestra lo que se visualiza en el browser al cargar la página del ejemplo anterior y presionar el botón.
![]()
Figura 2.2. Página Web generada por el ejemplo 2.
2.1 Qué puede hacer JavaScriptJavaScript es un lenguaje de programación de uso general. Algunas de las principales funciones de JavaScript se mencionan a continuación.
2.1.1 Control de la apariencia y contenido de documentos.
El objeto JavaScript Document, a través de su método write() permite escribir de forma arbitraria un documento HTML dentro de un documento previamente cargado. Se pueden generar documentos completos usando este método, sin que las hojas HTML existan previamente en disco. Esto puede reemplazar el uso tradicional de llamados a scripts CGI.
2.1.2 Control del browser.
Algunos objetos JavaScript permiten controlar el comportamiento del browser. El objeto Window contiene métodos para crear ventanas de diálogo para desplegar mensajes y obtener ciertos datos del usuario. Este objeto tiene métodos para crear nuevas ventanas en el browser, en las que se puede especificar el tamaño, la apariencia y los controles que se desean. El objeto Location permite cargar y desplegar el contenido de una dirección URL en cualquier ventana o "frame" del browser. El objeto History permite movernos hacia delante y hacia atrás en la historia de navegación del browser, simulando la acción de los botones "forward" y "back" del browser.
2.1.3. Interactuar con el contenido del documento.
El objeto Document y los objetos que éste contiene, permiten a los programas leer, y algunas veces interactuar con algunas partes del documento. Este objeto permite crear otros elementos como buttons, checkbox, hidden, password, radio, reset, select, submit, text y textarea. JavaScript permite leer estos elementos, procesar su contenido y generar código "en el aire" para crear nuevos documentos HTML según la información procesada.
2.1.4 Interactuar con el usuario.
JavaScript permite definir manejadores de eventos (event-handlers), es decir, piezas arbitrarias de código que se ejecutan cuando un evento particular se genera, por ejemplo, cuando se mueve el mouse por cierta área, cuando se ingresa un valor en un campo, cuando se presiona un botón, etc.
2.1.5 Leer y escribir "cookies".
Las "cookies" son un término Netscape para definir pequeños grupos de datos que pueden ser almacenados en la máquina del cliente de forma temporal o permanente. De esta forma, una página HTML puede "recordar" ciertos datos acerca de los clientes, por ejemplo cuando fue la última vez que ese cliente visitó ese sitio, o que ese cliente ya se ha registrado y obtenido su password, o que ese cliente tiene ciertas preferencias acerca de los colores o el diseño de las páginas Web.
2.1.6 Interacción con Applets.
A partir del Navigator 3.0, JavaScript puede interactuar con applets de Java que están corriendo en el browser. Esto se hace a través de "LiveConnect", una capa de comunicación que permite a los applets de Java, los plug-ins de Netscape y los scripts de JavaScript "hablar" entre ellos e invocar sus métodos.
2.1.7 Manipular imágenes
A pertir de Netscape 3.0, y a través del tag <IMG>, JavaScript puede cambiar el despliegue de las imágenes. Esto permite crear sofisticados efectos, como permitir que una imagen cambie cuando el mouse pasa sobre ella, o cuando el usuario presiona un botón.
2.1.8 Muchas más facilidades.
- Ejecutar cálculos arbitrarios (como el primer ejemplo que vimos) y muchas funciones matemáticas.
- El objeto Date simplifica el proceso de interactuar con fechas y horas.
- El método window.setTimeout() permite a un bloque de código JavaScript ser ejecutado algún número de milisegundos en el futuro.
- El objeto Navigator contiene variables que especifican el nombre y versión del browser que está corriendo, así como la plataforma sobre la que está corriendo.
- A partir del Navigator 3.0, el vector navigator.plugins[] especifica cuáles plug-ins están instalados en el browser.
3. Qué cosas no puede hacer JavaScript
- No tiene capacidades gráficas, excepto la habilidad de desplegar y configurar imágenes.
- No se permite leer ni escribir archivos.
- No tiene capacidades de red, excepto las de cargar hojas desde URLs.
- No tiene capacidades multithreads.
4. Explorando JavaScript
En el ejemplo 2.1 se mostró cómo hacer un documento HTML con un script de JavaScript que calculaba el factorial desde 1 a 10. Es posible en Navigator omitir ciertas partes propias de documentos HTML, como los tags <HTML>, <HEAD> y <BODY>. El siguiente documento hace lo mismo que el ejemplo 2.1:
<SCRIPT>
document.write("<h2>Tabla de factoriales</h2>");
for (i = 1, fact = 1; i < 10; i++, fact *= i) {
document.write(i + "! = " + fact);
document.write("<br>");
}
</SCRIPT>
También es posible usar el área Location del Navigator browser para ejecutar comandos JavaScript "en línea". Intente ejecutar los siguientes comandos desde el campo Location del browser:
- javascript:5%2
- javascript: x = 3; (x < 5)? "x es menor": "x es mayor"
- javascript:d = new Date(); typeof d;
- javascript:for (i=0, j=1, k=0, fib=1; i<10; i++, fib=j+k, k=j, j=fib) alert(fib);
El último ejemplo calcula la serie de Fibonacci desde 1 hasta 10. Este mismo ejmplo puede hacerse de la siguiente manera en un documento HTML:
<SCRIPT>
document.write("<h2>Tabla de Números de Fibonacci</h2>");
for (i=0,j=1,k=0,fib=1; i<10; i++, fib=j+k, k=j, j=fib) {
document.write("Fibonacci(" + i + ") = " + fib);
document.write("<br>");
}
</SCRIPT>
4.1 Comentarios
En el código JavaScript se pueden hacer comentarios al estilo C y C++. Cualquier cosa entre // y el final de la línea, se toma como comentario, así como el texto entre /* y */
4.2 Strings
Algunas de las principales funciones de strings se muestran en los siguientes ejemplos:
s = "Hello," + " world" // Produce el string "Hello, world"
saludo = s + "!!!" // Produce el string "Hello, world!!!"
saludo.length // 15
car = s.charAt(s.length - 1) // car = "d"
sub = saludos.substring(1,4) // sub = "alu"
i = saludos.indexOf("o") // 4
4.3 Otros ejemplos
if (a == 4)
- Booleanos y cláusula if:
b = b + 1; // o b++
else
a = a + 1;function cuadrado(x) {
- Funciones:
return x*x;
}
cont = 0;
- While:
while (cont < 10) {
document.write(cont + "<br>");
cont++;
}for (i = 0; i < a.length; i++) {
- For y Break:
if (a[i] == clave)
break;
}for (i = 0; i < a.length; i++) {
- Continue:
if (a[i] == null)
continue;
total += a[i];
}Hay muchos sitios Web con tutoriales, información y ejemplos de JavaScript. Se sugiere revisar los siguientes links:
- Más información
http://www.webreference.com/javascript/
http://dezines.com/dezines/javalinks.html
<script>
- Último ejemplo:
var atributos = 'toolbar=no,location=no,directories=no,'; atributos += 'status=no,menubar=no,scrollbars=no,';
atributos += 'resizable=yes,copyhistory=no,width=300,';
atributos += 'height=150';function fnOpcion(op) {
if (op == 1) {
ventana = window.open('','',atributos)
var doc = "<html><title>Título de la ventana</title><br>"
doc += "<br><center><h3>" + self.document.frm.texto.value
doc += "</h3><br><form><input type=button value=Cerrar"
doc += " onclick=self.close()></center></html>"
ventana.document.write(doc)
ventana.document.close()
}
if (op == 2) {
self.close();
}
}
</script>
<br><br>
<form name="frm">
<center>Mensaje: <input type=text name="texto" size=30>
<br><br><br>
<input type=button value="Crear ventana" onclick="fnOpcion(1)">
<input type=button value="Cerrar el browser" onclick="fnOpcion(2)">
</center>
</form>
![]()
Figura 4.1. Resultado del último ejemplo Problemas son cada vez de mayor tamaño- Problemas cada vez más especializados
- Soluciones requieren aptitudes diferentes
- Cambio de actitud
- Personas necesitan trabajar como miembros de un equipo (cooperación).
- Personas requieren intercambiar información más frecuentemente.
- El éxito de un equipo de trabajo dependerá no sólo de aptitudes individuales sino que del nivel de cooperación.
- Cambio organizacional
- Conversaciones informales.
- Conversaciones cara a cara.
- Teléfono.
- Reuniones.
- Comunicación formal.
- Documentos (reportes, manuales, cartas,etc).
- Reuniones grabadas.
- Intercambio de información apoyada por computador.
- E-mail, bases de datos, documentos electrónicos, documentos en Web.
- Computer Supported Cooperative Work
- Software para apoyar el trabajo en grupo.
Bajo Alto
Sistemas de Sistemas de
b. Dimensión de ambientes compartidos (desde ambientes compartido bajos a altos):
Bajo Alto
Sistemas de Sistemas de
b. Taxonomía a nivel de aplicaciones
- En tiempo real.
- Teleconferencias.
- De escritorio.
Aspectos en que se seguirá trabajando a futuro. Analizaremos esto focalizándonos en software de apoyo a grupos de trabajo de tamaño pequeño a mediano.
- Interfaces WYSIWIS.
- Foco del grupo y aspectos distractivos.
- Aspectos relacionados con la dinámica de grupo.
- Aspectos relacionados con la administración del espacio de la pantalla.
- Aspectos relacionados con herramientas de interfaces grupales.
- Protocolos de grupo.
- Operaciones de grupo.
- Factores organizacionales y sociales.
- Excepciones y coordinación.
- Integración de apoyo de actividades.
- Protocolos de comunicación.
- Control de acceso.
- Notificación.
- Editores de texto.
- Hojas de cálculo.
- Herramientas gráficas.
- Reuniones electrónicas.
- Herramientas de coordinación.
- Schedulling.
- Workflow.
- Reemplazar el flujo de papeles por flujo electrónico.
- Ahorro de papel, aumento de eficiencia, adición de inteligencia.
- Rol activo en la diseminación de información.
- Sistemas basados en el usuario: BeyondMail.
- Sistemas basados en agentes: Workman.
- Sistemas basados en servidores: Action.
- Timbuktu. Ver http://bio444.beaumont.plattsburgh.edu/TB2/Timbuktu.html.
- Lotus Notes. Ver http://www.lotus.com.
- Meeting Maker
- XNear
- Coordinator. Ver http://www.actiontech.com.
- Windows for Workgroups
- Publish/Subscribe del Sistema 7 de Apple
- COLAB (Xerox):
- Preparación de un texto conjunto.
- Cara-a-cara sincrónico.
- WYSIWIS (What You See Is What I See).
- “Brainstorming”, organización y evaluación.
- NetMeeting. Ver http://www.microsoft.com.
- Que serían imposible o muy difícil de realizar sin apoyo computacional.
- Tiempo.
- Costo.
- 500 productos de groupware (Baecker).
- 38 millones de usuarios estimados.
- Crecimiento rápido.
- 45 millones de personas trabajando en casa (al menos part-time).
- Interacción grupal y humana es una disciplina antigua y compleja en ciencias sociales.
- ¿Debiésemos tener el mismo enfoque en groupware?.
- Experiencias previas no-exitosas nos dan algunas pistas que el problema es mucho más complejo y la intuición no es suficiente (ver Grudin).
- Estudiar y analizar paradigmas de ciencias sociales tomadas en consideración:
- Jerarquías, falta de cooperación, anonimato, culturas.
Existen al menos cinco áreas que influirán en el desarrollo de los Sistemas Colaborativos a futuro:
- Introducir conceptos.
- Investigar aspectos de CSCW.
- Analizar logros tecnológicos en groupware.
- Prepararlo para esta área
- Tomar el primer paso hacia el uso, entendimiento y desarrollo de groupware.
- Algunos artículos desconectados (81-86)
- Expansión de las redes
- Algunos proyectos experimentales (86-88)
- Primera conferencia CSCW (88) [Greif 88]
- Conferencia siguiente (90)
- Primera Conferencia Europea (91)
- Artículos de investigación, reportes, revistas, libros, etc.
- Workshops.
- Software comercial (Lotus Notes).
- Resultados experimentales.
- Grupos de interés.
- Computación Organizacional.
- Web.
- Software comercial en la Web.
- BPR serio.
- Más información documentada (memoria organizacional).
- Más interacción paralela (Interacción asincónica).
- Más información objetiva (interacción orientada a texto).
- Menos viajes.
- Menos papel y correo.
- Menos consumo de tiempo.
[Bellotti92] Bellotti V., Dourish P., "Awareness and Coordination in Shared Work Spaces", Procedings of CSCW 1992.
[Bireman94] Bireman B. (editor), Workflow 94 Conference Procs. Scottsdale, AZ: The Conference Group.
[Bock92] Bock G. "Workflow as Groupware: A Case for Group Language?" GroupWare 92. David D. Coleman (editor). San Mateo, CA. Morgan Kaufmann Pub. 1992.
[Burns94] Burns N. "Workflow Automation: A Methodology for Change". The Workflow CD-ROM Sampler. Creative Networks. 1994.
[Coleman94] Coleman D. Groupware 94: The Workgroup Solutions Conference Proceedings. Scottsdale, AZ: The Conference Group.
[Conklin92] Conklin J. "Capturing Organization Memory". Groupware 92. David D. Coleman (editor). San Mateo, CA. Morgan Kaufmann Pub. 1992.
[Davidow93] Davidow W.H., Malone M.S. (1993). "The Virtual Corporation". New York, NY. Harper-Collins Publishers.
[Dourish92] Dourish P., Bellotti V. (1992). "Awareness and Coordination in Shared Workspaces". CSCW 92: Proceedings of the Conference on Computer Supported Cooperative Work, J.Turner, R.Kraut (editors). Toronto, Canada.
[Doyle76] Doyle M., Strauss D. (1976). "How to Make Meetings Work". New York, NY: Berkley Publishing Group.
[Engelbart88] Engelbart D. (1988). "Working Together". BYTE, December, 1988.
[Greif88] Greif I.(editor) (1988). "Computer Supported Cooperative Work: A Book of Readings". San Mateo, CA. Morgan Kaufmann Publishers.
[Grohowski90] Grohowski R.B., McGoff C., Vogel D.R., Martz W.B., and Nunamaker Jr., J.F. (1990). "Implementation of Electronic Meeting Systems at IBM." MIS Quarterly, 14, 4.
[Grudin89] Grudin, J. (1989). "Why Groupware Applications Fail: Problems in Design and Evaluation." Office Technology and People 4(3).
[Grudin88] Grudin J. (1988). "Perils and Pitfalls." BYTE, December 1988.
[Jessup93] Jessup L.M., Valacich J.S. (1993). "Group Support Systems." New Perspectives.
[Johansen88] Johansen R. (1988). "Groupware: Computer Support for Business Teams". New York. The Free Press.
[Khoshafian95] Khoshafian S., Buckiewicz M., "Introduction to Groupware, Workflow, and Workgroup Computing", John Wiley & Sons, 1995.
[Koulopulos94] Koulopulos, T. (1994). "The Workflow Imperative". Delphi Consulting Group.
[Kramer88] Kramer, J.L., King, J.L. (1988). "Computer-Based Systems for Cooperative Work." ACM Computing Surveys, 20(2), June 1988.
[Marshak94] Marshak, R.N. (1994). "Workflow White Paper: On Overview of Workflow Software." Workflow 94. Bob Bierman (editor). San Jose, CA: The Conference Group.
[Nelson65] Nelson, T. (1965). "The hupertext." Proceedings of the World Documentation Federation. 1965.
[Nunamaker89] Nunamaker Jr., J.F., Vogel, D., Heminger, A., Martz, B., Grohowski, R., and McGoff, C. (1989). "Experiences at IMB with group support systems: A field study." Decison Support Systems, 5,2 (1989).
[Palermo92] Palermo, A.M., and McCreedy, S.C. (1992). "Workflow Software: A Primer." In Group-Ware 92 David D. Coleman (ed), Morgan Kaufman Publishers.
[Saffo93] Saffo, Paul (1993). "The Future of Virtual Conferencing." PC Computing, January 1993.
[White94] White, Thomas E., and Fischer, Layna (editors) (1994). "The Workflow Paradigm". Alameda, CA: Future Strategies Inc.
[Winograd86] Winograd, T., and Flores, F. (1986). Cognition Understanding Computers and Cognition, Addison-Wesley.
[Workflow] Workflow Management Coalition (1993). The Workflow Reference Model Version 0.6. June 1993. Document Number SC001-1003. (This document gets periodically updated.)