Jornadas mxTIC para el PAS de la Universidad de Sevilla

Desde el Servicio de Formación del PAS y el Grupo deMejora del Personal de Apoyo TIC a la Docencia queremos poner en marcha una nueva actividad formativa denominada Primer Miércoles TIC. La idea es que el primer miércoles de cada mes se celebre un encuentro en torno a las nuevas tecnologías de la información, la gestión del conocimiento, las buenas prácticas TIC y el desarrollo de proyectos en común.

Todo ello giraría en torno a un conjunto de seminarios programados que se impartirían a lo largo de cada jornada. La actividad estará considerada como una actividad formativa del Servicio de Formación del PAS. Cada participante debería completar un mínimo de 15 horas de asistencia en total para obtener el certificado de asistencia, no obstante podrá decidir a que sesiones y en que horario asiste.

Nos encantaría contar con tu colaboración para impartir alguno de estos seminarios sobre algún tema concreto que conozcas y que pienses puede ser de interés para otros. Serían seminarios de una hora de duración en los que de una manera informal expondrías un tema a los asistentes para abrir luego un turno de discusión, preguntas y aportaciones.

Para que puedas hacerte una idea algunos de los seminarios sugeridos en este momento son:

  • Cáscaras, un framework sencillo para trabajar con php, mysql y smarty
  • Desarrollo de plugins con WordPress
  • Desarrollo de una plataforma para reservas de aulas y recursos
  • CMS Made Simple para el desarrollo de portales web en facultades y departamentos.
  • Eyeos, un sistema operativo “en la nube”

También sería interesante que propusierais temas para seminarios a los que os gustaría asistir por si alguien se anima a recoger el guante.

Espero vuestras sugerencias, propuestas y peticiones. También sería fantástico que difundierais esta información entre otros compañeros que penséis que podrían estar interesados en estas jornadas.

Calendario de sesiones

  1. Miércoles 2 de Marzo
  2. Miércoles 6 de Abril
  3. Miércoles 1 de Junio

Horario de las sesiones

  • 09:00 a 15:00
  • 16:00 a 19:00
Publicado en software | Dejar un comentario

Cursos de verano: PHP

El verano es una buena época para ampliar nuestros conocimientos sobre las herramientas que utilizamos a diario y para aprender otra nuevas. Iré poniendo en esta entrada aquellas direcciones que encuentra de utilidad para mejorar mis conocimientos de PHP. De momento, mi lenguaje de programación favorito (y casi el único que entiendo)

Publicado en php, programación | Etiquetas: , , | Dejar un comentario

Control de versiones con Subversion

Contenido

Enlaces externos

Comenzando con subversion

Desde el lado del servidor

  1. Nos conectamos a nuestro servidor con ssh usuario@servidor.com
  2. Crear un nuevo repositorio o proyecto en el servidor, en la carpeta del svn (/var/svn por ejemplo): svnadmin create nombre_proyecto
  3. Establecer propietarios y permisos para www-data (cuenta del httpd) con chown y chmod:
    • chown -R root:www-data nombredir/
    • chmod -R 770 nombredir/
  4. Crear los directorios bases en un temporal: mkdir branches, mkdir tags, mkdir trunk
  5. Desde el directorio temporal: svn import . file:///var/svn/proyecto –message ‘Estructura inicial’
  6. svn status -v para ver el listado de todos los ficheros y su estado

Para Configurar Trac

Desde el lado del cliente

NOTA: el cliente puede estar en el propio servidor si estamos usando la misma máquina como repositorio y entorno de desarrollo

  1. Desde el directorio padre del directorio donde voy a trabajar con el proyecto: svn checkout http://servidor/svn/proyecto/trunk nombre_directorio
  2. Para añadir archivos entramos en el directorio: svn add * y luego: svn commit –message ‘Initial files’
  3. Las siguientes veces empezamos con un: svn update y luego ya usaremos add, delete, etc según convenga

Instalando Subversion

Primero comprobar si subversion esta instalado:

svn –version

Instalar subversion no tiene mas dificultad que hacer un apt-get install :

sudo apt-get install subversion

Comprobamos que ya este disponible

svn –version

Y por ultimo creamos un directorio para guardar nuestro codigo

mkdir /home/pedro/svn-repos
svnadmin create /home/pedro/svn-repos

Copiado de http://theplanb.wordpress.com/2007/01/03/instalando-subversion/

Crear un tag

Un tag nos sirve para hacer una “foto” de nuestro código en un momento dado. Si no se hacen modificaciones en el tag, así quedará para siempre, pero si seguimos haciendo modificaciones entonces funcionará como un branch (rama)

Para crear un tag hacemos algo como esto:

Y obtendremos algo como esto


El ejemplo asume que el directorio /calc/tags ya existe. (En caso contrario creelo usando svn mkdir.) Después de la copia el directorio es una foto congelada del código en ese momento. Si deseas hacer la copia de una revisión anterior utiliza el modificador “-r” en el comando “copy”para pasarle el número exacto de la versión que quieres “congelar”.

Como cambiar el password de subversion

Como conseguir que subversion ignore ficheros o directorios enteros

Parece mentira, llevo dos años intentado averiguar como hacer esto en subversion y mirando un gestor de proyecto basado en git veo un comando que emula el propio de subversion (el que yo desconocía vamos), googleo un poco y voilá!


Luego, dentro del fichero ponéis “*” para ignorar todo el directorio, el nombre de un fichero para que ignore sólo ese, o un nombre de fichero con asteriscos para ignorar todos los que tengan nombres parecidos.
Si se queja diciendo que no hay ningún editor definido pues le ponéis el editor que queráis usar, en mi caso es vim


Todo esto lo podéis ver mucho mejor explicado, pero en perfecto inglés, en el blog de Pete Freitag

Publicado en herramientas | Etiquetas: , , , | Dejar un comentario

Servidores de calendario

Sigo investigando el tema de los calendarios y me he enterado de muchas cosas que no sabía, y las que me quedan.

Para empezar el protocolo ical no trabaja sobre una base de datos, sino sobre ficheros de texto. Estos ficheros pueden mandarse por correo, compartirse desde una web, etc. Y aquí entra el estándar CalDAV, que a su vez es una ampliación de WebDAV, que a su vez amplía HTTP.

Pero lo mejor de todo es que existen servidores de calendario de código abierto, con lo que podemos montar nuestro propio servidor de calendario al que podrían acceder diferentes aplicaciones.

Os pongo los dos primeros que he estado mirando:

Seguiré informado sobre el tema

Publicado en servicios | Etiquetas: , , , | Dejar un comentario

Recursos WordPress

revolt_basicEl objetivo de esta entrada es ir recopilando recursos interesantes y novedosos sobre wordpress. Si quieres participar y no eres autor del blog puedes mandar tu aportación en un comentario o hacerte autor de este blog.

Sería genial añadir un sistema de votaciones para cada una de las entradas que vayamos haciendo, pero todo se andará.

  • Foro Ayuda WordPress, un foro hecho por Fernando Tello para hablar de WordPress en español.
  • ThemeGrade, muestra, descarga y puntua temas para wordpress, publica dos nuevos temas cada día
Publicado en gestores de contenido | Etiquetas: , | Dejar un comentario

Programando agendas y calendarios

agendaPara programar agendas y calendarios deberíamos utilizar el estándar existente RFC 2445 más conocido como iCalendar o iCal. Veamos lo que dice Wikipedia:

iCalendar permite a los usuarios invitar a reuniones o asignar tareas a otros usuarios a través del correo electrónico. El destinatario del mensaje en formato iCalendar (de tener un programa que lo permita) puede responder fácilmente aceptando la invitación, o proponiendo otra fecha y hora para la misma.

Ha sido implementado en una variedad de programas incluyendo iCal de Apple, Mozilla Calendar (incluyendo Mozilla Sunbird), Google Calendar, Chandler, Lotus Notes, ScheduleWorld, Korganizer, Mulberry, Evolution de Novell, Kronolith, Simple Groupware, Windows Calendar, Nuvvo y Microsoft Outlook.

La información en formato iCalendar se transmite por lo general por correo electrónico, aunque el estándar fue diseñado para ser independiente del protocolo de transmisión. Por ejemplo, puede ser compartida y editada utilizando un servidor WebDAV. Un servidor web sencillo (usando tan sólo el protocolo HTTP) puede ser usado para distribuir la información de un evento en particular, o de indicar las horas y fechas en que el usuario estará ocupado o libre. Algunos sitios de eventos en la web ya están incorporando iCalendar directamente en las páginas, usando hCalendar, una representación exacta de iCalendar, expresada en estilo XHTML.

La información iCalendar es declarada como tipo de contenido MIME text/calendar. Se debe usar la extensión “ics” para nombrar un archivo que tenga (una cantidad cualquiera de) información de calendario y agenda consistente con este tipo de contenido MIME. La extensión “ifb” se usará para un archivo que tenga información de horario libre/ocupado de acuerdo con este tipo de contenido MIME. El tipo de archivo “iCal” se usa en sistemas operativos Macintosh de Apple para indicar un archivo que contiene información de calendario y agenda de acuerdo con este tipo de contenido MIME. El tipo de archivo “iFBf” se usa en dichos sistemas operativos para indicar un archivo con horario libre/ocupado de acuerdo con este tipo de contenido MIME.

Los archivos iCalendar son archivos de texto plano ASCII, en los cuales cada línea de texto termina en CRLF (carácter hexadecimal 0D0A).

Recursos

Publicado en php | Etiquetas: , , , , | 1 Respuesta

Técnicas para mejorar rendimiento

Existe mucha literatura sobre como mejorar el rendimiento de las aplicaciones, pero a menudo nos olvidamos de ellas, recopilamos aquí, las técnicas más usadas en aplicaciones de escritorio:

1. Cache, cache y mas cache

Es totalmente innecesario acceder a los mismos datos en la base de datos una y otra vez, es mucho mejor, guardar estos datos en memoria o en disco, y utilizarlos en las sucesivas llamadas.

Además de este tipo de datos, están los parámetros, las preferencias de usuarios, etc…

El uso de cache, mejora radicalmente la velocidad de una aplicación.

2. Arranque Rápido.

Esta es mi técnica preferida, ideal para redes lentas. No es fácil de implementar y requiere un poco de lógica. Se recoge estadística de las tablas y recursos más usados por la aplicación cuando arranca, por ejemplo, podemos tener una aplicación que normalmente abre un formulario y que tiene una lista desplegable con provincias.

Basándonos en las estadísticas, hacemos que arranque en paralelo y proceso que precarge los datos más usado, de forma que cuando el usuario acceda, no tiene que esperar que lleguen los datos.

3. Optimización de Base de Datos

No voy a detallar todas las técnicas, pues hay muchas, pero las principales son optimización de índices, minimizar los accesos a bases de datos, desnormalización cuando es necesario, estudio de planes de ejecución de consultas, etc..

4. Escalabilidad

Quizás, la parte más complicada a la hora de desarrollar una aplicación. Lo primero es ¿como sabemos si es escalable? Existen herramientas que simulan la carga de trabajo de miles de usuairos, es un buen punto de partida.

Pero ¿como lo hacemos más escalable? Existen muchas técnicas, pero la más sencilla y útil es diseñar los sistemas para que se puedan ejecutar en paralelo, no diseñar un proceso central que lo hace todo en el servidor, es mejor diseñar, pequeños procesos de trabajo que se pueden ejecutar en paralelo.

Ahora estamos probando la ejecución distribuida de los procesos del servidor, de forma, que todos los ordenadores de la oficina, participan en el proceso global, aportanto parte de su CPU.

5. Sensación y percepción

Un día llegó a mis manos un documento de Microsoft muy curioso, sobre la percepción que tiene el usuario de la velocidad de un programa, y me pareció muy interesante. La típica barra de progreso que tenía Windows al principio al iniciar, fue sustituida por una barra que se movía a toda prisa y daba varias vueltas. La percepción del usuario es importante, y tenemos que cuidar todos los tiempos muertos de la aplicación, utilizar iconos con reloj, animaciones, etc….

Publicado en programación | Etiquetas: | Dejar un comentario

Grave vulnerabilidad en el uso de AJAX

Hemos descubierto un fallo “en el uso” de AJAX, no en el AJAX en sí, que permite al usuario modificar la lógica de una aplicación, consiguiendo por ejemplo, gastos de envío gratis en tiendas online.

El fallo consiste en que muchos programadores utilizan AJAX para ejecutar lógica de negocio de servidor, pero guardan el estado en el cliente.

El estado en cliente es fácilmente modificable, a no ser que esté encriptado (.NET), permitiendo con algunas herramiendas y/o plugins para firefox modificar el estado y alterar la lógica de negocio.

Pongamos un ejemplo,

En un proceso de compra de una tienda online, el cliente escribe su dirección, y la tienda online se comunica mediante AJAX para obtener los gastos de envío de esa dirección.

Si los gastos de envío se almacenan en una varia HIDDEN, es fácil alterar este valor y consegir gastos de envío gratis.

La solución es sencilla, no almacenar esta información en HIDDEN, o almacenarlo en servidor.

Publicado en fallos | Etiquetas: | 1 Respuesta

Google Gears, reinventando la rueda

Para muchos, tecnologías como AJAX, Google Gears, etc… han supuesto una gran innovación que nos ayudan en el camino hacia la tan nombrada WEB2.0. Para mi, sin embargo, todas estas tecnologías son una reinvención de la rueda que ya existía.

Hagamos un poco de historia….. Java aparece en 1995, aportando “Applets” a las páginas Web, de forma que era posible construir aplicaciones complejas dentro de un explorador web. Esto supuso toda una revolución para muchos desarrolladores que encontraron en esta tecnología una solución a sus problemas, los applets mas famosos fueron los menús, tratamiento de imágenes, calculadoras, visores, etc… pero no llegaron a extenderse para el desarrollo de grandes aplicaciones.

Debido al enfrentamiento legal que tuvieron Microsoft y Sun con respecto a la máquina virtual, Microsoft ideo una alternativa a los Applets, y a finales de los 90 sacó al mercado DHTML y un motor de scripintg muy avanzado que permitía código en JavaScript y VisualBasic Script. Y como ejemplo de esta tecnología, el equipo de desarrollo preparó las mismas demos que Sun publico para explicar las bondades de los Applets, hechas todas con DHTML.

Los Applets poco a poco fueron desapareciendo, sobre todo cuando Netscape desapareció en la lucha con Internet Explorer.

En este punto, Microsoft apostó por su versión de los Applets, los controles ActiveX, los cuales tendrían que retirar años más tardes debido a una patente.

Pero fue en el año 99 cuando descubrí Microsoft Remote Scripting, esta tecnología permitía desde una página web llamar a un procedimiento remoto del servidor, como ejemplo, una lista desplegable de provincia que al cambiarla se recargaba la lista de municipios, ¿os suena?¿AJAX?

Remote Scripting fue realmente complicado de programar, sobre todo por la carencia de herramientas efectivas para la depuración.

Con la salida al mercado de .NET, Microsoft nos dá una sorpresa que nadie se esperaba: Smart Clients, bajo este nombre se esconde una tecnología que permite colocar un ejecutable en una página web, y que se ejecute desde el explorador sin problemas, descargando las DLLs que sean necesarias y comunicandose con el servidor para acceder a los datos.

Por otro lado, Sun no tardó en responder a esta tecnología, llamandola Java Web Star.

¿Pero a donde vamos?

El problema principal es que las aplicaciones web no son lo suficientemente buenas, ni ofrecen la misma usabilidad y funcionalidad que una aplicación cliente. Y que las aplicaciones clientes no son tan fáciles de instalar y tan “bonitas” como una aplicación web.

En este sentido hay dos tendencias, llevar las aplicaciones de escritorio a web (Thin Client) o mejorar las capacidades de los browsers de internet, como AJAX, Google Gears, Adobe Flex, etc…

Es decir, llevamos más de 10 años con lo mismo, sacando tecnología sobre tecnología, para lo mismo, y cuando una de ellas parece consolidarse, aparece otra alternativa mejor que descarta las anteriores.

Aunque esto parezca bueno, pues la innovación es buena, en mi opinión, es una lucha de poderes entre Sun, Microsoft y ahora Google, que reinventan la rueda a su manera, involucrando a miles de empresas y programadores, con cambios constantes.

Publicado en programación | Etiquetas: , , , , , , | 1 Respuesta

DCOM "Inicio de sesión fallido para la cuenta IWAM_"

Si al entrar en tu aplicación web obtienes el siguiente error en el navegador:

Error de aplicación en el servidor
Error al cargar una aplicación durante el procesamiento de su solicitud. Consulte el registro de sucesos para obtener más información. Póngase en contacto con el administrador del servidor para obtener asistencia.

En el visor de sucesos, registro del sistema es posible que tengas algo como:


Origen: DCOM
Error: DCOM obtuvo "Inicio de sesión fallido: nombre de usuario desconocido o contraseña incorrecta". No se pudo iniciar la sesión .\IWAM_SERVERNAME para ejecutar el servidor.

y también esto otro:

El servidor no pudo cargar la aplicación '/LM/W3SVC/1/Root'. Error 'El proceso del servidor no ha podido iniciarse debido a que la identidad configurada no es correcta. Compruebe el nombre del usuario y la contraseña.

Este error es debido a que se ha perdido la sincronización entre la contraseña que guarda IIS para los usuarios IWAM_SERVERNAME y/o IUSR_SERVERNAME

La solución a este problema es un poquito trabajosa pero la alternativa sería reinstalar el Internet Information Server que es peor. Así que os cuento como he logrado solucionarlo yo.

  1. Desconecta tu servidor web de la red, bien usando el firewall (¿qué no tienes firewall?), bien quitando el cable de red, esto es importante porque si no las peticiones desde la red hacen que se bloqueen las cuentas IWAM e IUSR una y otra vez.
  2. Ve al Administrador de Usuarios y cambia las contraseñas para ambas cuentas. Desbloquea la cuenta si se ha quedado bloqueada.
  3. Ahora tienes que usar un script que hay en tu servidor para sincronizar las claves. Desde una consola de comandos ve al directorio C:\Inetpub\AdminScripts. Ejecuta lo siguiente:
    C:\Inetpub\AdminScripts>cscript adsutil.vbs get w3svc/anonymoususerpass
    Esto te devuelve algo como esto:
    anonymoususerpass : (STRING) "***********"
  4. Para no trabajar a ciegas edita el fichero adsutil.vbs que está en el directorio C:\Inetpub\AdminScripts desde el Bloc de notas u otro editor, busca una línea donde pone “IsSecureProperty = True”, cambia la línea por “IsSecureProperty = False”. Recuerda ponerlo luego igual por si las moscas.
  5. Vuelve a ejecutar el comando anterior desde línea de comandos y debes obtener algo como esto anonymoususerpass : (STRING) "/XEv01T!69I"
  6. Para cambiar el password establecido para la cuenta IUSR debes teclear:
    cscript adsutil.vbs set w3svc/anonymoususerpass "Pa55word" y para la cuenta IWAM tecleas:
    cscript adsutil.vbs set w3svc/wamuserpass "Pa55word"
  7. Ahora ejecuta el comando de abajo para sincronizar IIS con Microsoft Transaction Server (MTS) y los servicios de componentes (COM):
    C:\Inetpub\AdminScripts>cscript.exe synciwam.vbs -v
  8. Por último reinicia IIS desde el menú contextual del servicio IIS en una consola administrativa (MMC)

Referencias

Publicado en fallos, Internet Information Server, seguridad | Etiquetas: , , , , , , | 1 Respuesta
Ir a la barra de herramientas