Problemas con DNS dinámico en Debian Squeeze

Llevo unos días preparando  la clase de DNS dinámico con bind9. Para ello he seguido algunos tutoriales muy interasantes que pudes encontrar en internet: DNS dinámico con Bind9, de Mario Carrión (antiguo alumno del ciclo), DNS dinámico “Desde lo alto del Cerro” de mi compañero Alberto Molina o este manual que elaboramos para un curso del CEP: DNS dinámico.

Sin embargo no había forma de actualizar el servidor DNS cuando un cliente recibía una nueva IP desde el servidor DHCP.

El problema está en la versión de BIND 9.7.2. En esta versión en el momento que configuramos la posibilidad de la actualización del servidor, por ejemplo en el fichero /etc/bind/named.conf

include "/etc/bind/rndc.key";
controls
{
  inet 127.0.0.1 port 953
  allow { 127.0.0.1; } keys {"rndc-key";};
};

Se producía un error que podíamos ver en el fichero de logs /var/log/syslog:

named[1577]: managed-keys-zone ./IN: loading from master file managed-keys.bind failed: file not found

El problema esta causado porque en la configuración no se ha incluido el fichero /etc/bind/bind.keys que contiene la clave pública para permitir la actualización del servidor por DNSSEC. Para arreglarlo podemosañadir ese fichero a la configuración, en /etc/bind/named.conf:

include "/etc/bind/bind.keys";

Y para evitar que se se escriban los errores en el registro:

touch /var/cache/bind/managed-keys.bind
chown bind:bind /var/cache/bind/managed-keys.bind

Espero que sea de utilidad.

Posted in General at noviembre 21st, 2011. No Comments.
Tags: , ,

Instalación de Alfresco en Debian Squeeze

Este artículo está basado en este otro, y sobre todo en mi propia experiencia instalando Alfresco Comunity 4.0 en  Debian Squeeze. La instalación se ha realizado sobre una máquina virtual con 3 gigabytes de memoria RAM. Empecemos…

Alfresco es un gestor de Documentación profesional y Open Source. Tiene dos versiones. Una versión Enterprise (de pago y con servicio técnico, etc.) y Community (gratuita y sin garantía). Para la instalación de Alfresco 4.0 Community usaremos los ficheros WAR que sirven para desplegar aplicaciones en un servidor Tomcat ya existente. Necesitaremos hacer los siguientes pasos:

Instalación de Java
En mi caso voy a usar el Java de Oracle, recuerda que debes tener los repositorios non-free configurados:

aptitude install sun-java6-bin sun-java6-jre sun-java6-jdk sun-java6-plugin sun-java6-fonts libcommons-el-java

Cuando nos lo pida en la consola aceptamos la licencia. Si tuviéramos ya instalado otro java podríamos hacer que se use por defecto el de Sun con:

update-alternatives --set java /usr/lib/jvm/java-6-sun/jre/bin/java

Instalación de MySQL
Instalamos el servidor mysql:

aptitude install mysql-server-5.1 mysql-client-5.1 libmysql-java

libmysql-java es el controlador JDBC de MySQL version 5.1.10. Lo configuramos en la instalación de tomcat6.

Instalamos el servidor de aplicaciones Tomcat 6.

aptitude install tomcat6 tomcat6-admin tomcat6-docs tomcat6-examples tomcat6-user

Para manejar el gestor de aplicaciones y el gestor de hosts de tomcat desde el explorador web debemos añadir nuestro usuario a los roles manager y admin de tomcat. Para ello configuramos el fichero /etc/tomcat6/tomcat-user.xml y añadimos el usuario a la sección tomcat-users. Sustituimos usuario y contraseña por los nuestros.

<tomcat-users>
<user username="usuario" password="contraseña" roles="admin,manager"/>
</tomcat-users>

Para configurar el conector AJP y que así el servidor web Apache envíe las peticiones a Tomcat configuramos el siguiente fichero y descomentamos la linea del conector.

nano /etc/tomcat6/server.xml

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Creamos el directorio endorsed en /var/lib/tomcat6/common

mkdir /var/lib/tomcat6/common/endorsed
chown -R tomcat6:tomcat6 /var/lib/tomcat6/common/endorsed

Para que podamos usar alfresco correctamente debemos cambiar unos parámetros en el fichero /etc/default/tomcat6

Pra resolver el problema de “Out of Memory” que nos puede surgir con alfresco lo cambiamos dependiendo de la memoria que tengamos, se recomienda tener al menos 3G.

JAVA_OPTS="-Djava.awt.headless=true  -Dfile.encoding=UTF-8 -server -Xms1536m -Xmx1536m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC  -Xmx3G  -Djava.endorsed.dirs=/usr/share/tomcat6/endorsed:/var/lib/tomcat6/common/endorsed"

Habilitamos esta opción para que tomcat o sus aplicaciones puedan usar puertos por debajo de 1024 con usuarios no privilegiados (como tomcat6).

AUTHBIND=yes

Hemos terminado con ese fichero, por otro lado indicar que libmysql-java es el controlador JDBC de MySQL y libcommons-el-java son componentes reusables opensource de java. Esta instalación instala los jar JDBC de mysql y commons en java pero para que funcione correctamente con tomcat debemos incluirlo en el classpath de tomcat. Esto lo hacemos añadiendo un link simbólico al jar de mysql y commons en java en el directorio /usr/share/tomcat6/lib.

cd /usr/share/tomcat6/lib
ln -s ../../java/mysql.jar mysql.jar
ln -s ../../java/commons-el.jar commons-el.jar

En /usr/share/java tenemos un link simbólico llamado mysql.jar que apunta al jdbc de mysql (mysql-connector-java-5.1.10.jar) en el mismo directorio. Por eso apuntamos mysql.jar en el directorio de tomcat a mysql.jar en el directorio de java. Un link a otro link.

Reiniciamos tomcat

/etc/init.d/tomcat6 restart

Y vemos que funciona en http://localhost:8080 y que podemos acceder al manager y al hostmanager con el usuario y contraseña que pusimos.

Instalación de Apache 2.2

Instalamos el servidor web de apache. No es necesario en principio pero lo haremos para que sea apache el que se encargue de las peticiones web.

aptitude install apache2 apache2-utils

No voy a entrar en la configuración de apache, solo configuraremos el conector de apache a tomcat.

Para conectar el servidor web con el servidor de aplicaciones (contenedor de servlets y JSP) se usa el protocolo AJP. Para configurar esto se pueden usar, o el módulo de apache mod_jk o el módulo mod_proxy. La recomendación es usar el módulo mod_proxy ya que es más moderno y es el que configuraremos. También se puede usar para balanceo de carga, clusters… Por defecto, ya viene instalado con apache2.

En la instalación de Tomcat ya configuramos el conector AJP para que funcionara correctamente. Ahora nos ocupamos de la parte de configuración de apache. Para configurar el conector editamos el fichero de configuración de mod proxy y lo dejamos así (Cambia la dirección ip del servidor tomcat):

nano /etc/apache2/mods-available/proxy.conf
<IfModule mod_proxy.c>
        #turning ProxyRequests on and allowing proxying from all may allow
        #spammers to use your proxy to send email.
        # Con esta directiva en Off hacemos que se deshabilite la redirección del
        # proxy excepto para las entradas que nosotros pongamos con ProxyPass
        ProxyRequests Off

        # Hace que las peticiones originales de información de host se mantengan a
        # través de la conexión del conector AJP. Es útil para aplicaciones que
        # necesitan mantener esta información.
        ProxyPreserveHost On

        # Indica que todos los hosts (*) pueden acceder a traves del proxy
        <Proxy *>
                AddDefaultCharset off
                Order deny,allow
                Allow from all
                #Allow from .example.com
        </Proxy>

        # Enable/disable the handling of HTTP/1.1 "Via:" headers.
        # ("Full" adds the server version; "Block" removes all outgoing Via: headers)
        # Set to one of: Off | On | Full | Block
        ProxyVia On

        # Indica que las peticiones a apache para /alfresco se pasen por el protocolo AJP
        # a la dirección IP y puerto donde Tomcat está escuchando mediante el protocolo
        # AJP con un conector.
        ProxyPass /alfresco ajp://192.168.1.35:8009/alfresco

        # Indica que cualquier peticion de cabeceras (request headers) del reverse proxy
        # debería ser reescrita de forma adecuada para asegurar que las redirecciones que
        # haga el servidor Tomcat sean manejadas de forma correcta.
        ProxyPassReverse /alfresco ajp://192.168.1.35:8009/alfresco

        # Permitimos el acceso a la aplicación alfresco
        <Location /alfresco >
                Order allow,deny
                Allow from all
        </Location>

        # Bloque para share.war. Con cada aplicación desplegada que queramos incluir en
        # el conector deberemos poner el bloque siguiente.
        ProxyPass /share ajp://192.168.1.35:8009/share
        ProxyPassReverse /share ajp://192.168.1.35:8009/share
        <Location /share>
                Order allow,deny
                Allow from all
        </Location>

</IfModule>

Activamos los módulos proxy (se configuran en el mismo archivo anterior)

a2enmod proxy_balancer proxy_ajp proxy

Y reiniciamos apache2.

En la siguiente imagen vemos como el conector, apache y tomcat están funcionando. No usamos directamente el puerto 8080 de tomcat si no el 80 de apache. El error de Alfresco es simplemente debido a que todavía no lo hemos instalado en su sitio.

Instalación de herramientas adicionales

Para un correcto funcionamiento necesitamos instalar las siguientes herramientas.

  • Flash 10.x.
  • SWF Tools: para la conversion de pdf y swf usar la vista previa de pdfs.
  • OpenOffice.org
  • Imagemagick: Para manipulación de imágenes. Ya viene por defecto, pero por si acaso lo incluimos.

Las herramientas que están en los repositorios de Debian las instalamos:

aptitude install  flashplugin-nonfree openoffice.org imagemagick

Sin embargo no existe en Debian un paquete para instalar SWF Tools, por lo tanto es necesario compilarlas, para ello:

Descargate la última versión de la herramienta con:

wget http://www.swftools.org/swftools-2011-10-10-1647.tar.gz

Antes de compilarla instala algunas herramientas necesarias:

apt-get install libjpeg62-dev libfreetype6-dev libpng3-dev libt1-dev libungif4-dev make build-essential

Descomprimimos el fichero que hemos bajado y lo compilamos:

./configure
make
make install

Puedes probar que se ha instalado de manera adecuada ejecuntando:

pdf2swf -V

Por último crea el siguinete enlace símbolico para que se pueda localizar el programa:

ln -s /usr/local/bin/pdf2swf /usr/bin/pdf2swf

Instalación de Alfresco 4.0

Alfresco se compone de varios elementos con distintas funcionalidades. Al instalar el archivo WAR es necesario instalar estos componentes por separado. Si usáramos el paquete de instalación, incluiría tomcat, openoffice, etc. Pero nosotros queremos instalar el fichero war solo.

Nos bajaremos los ficheros desde http://wiki.alfresco.com/wiki/Community_file_list_4.0.b

En concreto yo me bajo los siguientes. Todos no son necesarios para una instalación básica de alfresco y share.

alfresco-community-4.0.b.zip
alfresco-community-webeditor-4.0.b.zip
alfresco-community-deployment-4.0.b.zip

En principio, para la configuración inicial usaremos el primero de la lista que contienen los WAR. Lo bajamos, descomprimimos y comprobamos que tenemos dos archivos WAR (en el directorio /web-server/webapps) que se auto desplegarán en el servidor de aplicaciones y otros directorios y ficheros.

  • Alfresco.war es la aplicación core de gestión de la documentación.
  • Share.war es la aplicación de gestión de contenidos y documentación.

Una vez descomprimidos vamos a crear la base de datos en MySQL. Para ello debemos usar el script

nano db_setup.sql
create database alfresco default character set utf8 collate utf8_bin;
grant all on alfresco.* to 'alfresco'@'localhost' identified by 'alfresco' with grant option;
grant all on alfresco.* to 'alfresco'@'localhost.localdomain' identified by 'alfresco' with grant option;

Vemos que lo que hace es crear la base de datos para utf8 por defecto y los usuarios por defecto alfresco y contraseña alfresco. Lo dejamos así por ahora y creamos la base de datos y comprobamos que existe. Si queremos podemos poner nuestra contraseña ahora y luego acordarnos de cambiarla en el fichero de propiedades (más adelante) También comprobamos que existen los usuarios nuevos y recargamos las tablas de permisos.

mysql -u root -p < db_setup.sql
mysql -u root -p -e "select user,host,password from user where user like 'alfresco'" mysql
mysqladmin -u root -p flush-privileges

Creamos el directorio donde vamos a guardar el repositorio de alfresco que es donde se van a guardar los índices y los ficheros que subamos (documentos, etc.). Después cambiamos los permisos para que tomcat pueda leer los datos.

mkdir /srv/alfresco/alf_data
chown -R tomcat6:tomcat6 /srv/alfresco

Copiamos todos los ficheros del directorio endorsed al directorio de tomcat, endorsed.

cd web-server
cp endorsed/* /var/lib/tomcat6/common/endorsed/
chown -R tomcat6:tomcat6 /var/lib/tomcat6/common/endorsed

Copiamos los ficheros .war al directorio de aplicaciones de tomcat donde se autodesplegarán simplemente copiándolos en el directorio.

cd webapps
cp alfresco.war share.war /var/lib/tomcat6/webapps/

Configuración básica de Alfresco

Una vez desplegados los war, Alfresco tiene dos directorios de configuración, uno para el mismo y otro para share que son:

  • <configroot>: /var/lib/tomcat6/webapps/alfresco/WEB-INF
  • <configrootshare>: /var/lib/tomcat6/webapps/share/WEB-INF

Dentro de estos directorios se puede configurar alfresco o share.

El fichero general de configuración de alfresco lo tenemos en /var/lib/tomcat6/webapps/alfresco/WEB-INF/classes/alfresco-global.properties.sample. Lo debemos copiar con el mismo nombre pero sin la extensión sample.

Y debe quedar de la siguiente manera:

###############################
## Common Alfresco Properties #
###############################

#
# Sample custom content and index data location
#-------------
# Repositorio de documentación de Alfresco que
# creamos antes.
dir.root=/srv/alfresco/alf_data

#
# Sample database connection properties
#-------------
# Datos de conexión de la base de datos. Si cambiamos
# la contraseña o el usuario al configurar mysql
# debemos cambiarlos aquí.
db.name=alfresco
db.username=alfresco
db.password=alfresco
db.host=localhost
db.port=3306

#
# External locations
#-------------
# Rutas a los programas que necesita alfresco y que
# instalamos previamente. Podemos usar whereis.
ooo.exe=/usr/bin/soffice
#ooo.enabled=false
#img.root=./ImageMagick
img.exe=/usr/bin/convert
#swf.exe=/usr/bin/pdf2swf

#
# MySQL connection
#-------------
# Driver de mysql. Por defecto usa el dialecto
# hybernate de InnoDB asi que no ponemos nada más.
db.driver=org.gjt.mm.mysql.Driver
db.url=jdbc:mysql://${db.host}:${db.port}/${db.name}

#
# Index Recovery Mode
#-------------
index.recovery.mode=FULL

#
# Outbound Email Configuration
#-------------
mail.host=localhost
mail.port=25
#mail.username=anonymous
#mail.password=
mail.encoding=UTF-8
mail.from.default=admin@dominio.com
#mail.smtp.auth=false

Últimos pasos

Vamos terminando. Tenemos que indicar en que fichero se van a guardar los log de alfresco. Para ello modificamos el fichero /var/lib/tomcat6/webapps/alfresco/WEB-INF/classes/log4j.properties y modificar la siguiente línea:

log4j.appender.File.File=/var/log/tomcat6/alfresco.log

Del mismo modo lo tendrás que hacer en el fichero: /var/lib/tomcat6/webapps/share/WEB-INF/classes/log4j.properties

Si vamos ahora a http://localhost/alfresco veremos, por fin, la página de alfresco funcionando.

Recomiendo que en los últimos pasos de la instalación se vayan monitorizando los ficheros de logs: catalina.out y alfresco.log. Si surge algún error la mejor manera de solucionar es buscar en internet donde he encontrado mucha información sobre la instalación de alfresco. Espero quele sirva a alguien.

Un saludo.

Posted in General at noviembre 10th, 2011. 3 Comments.
Tags: , , , ,

Ejemplos del módulo rewrite en Apache 2.2

Este artículo lo he escrito para explicar en clase a mis alumnos del ciclo formativo de grado superior de Administración de Sistemas Informáticos en Red, una introducción al módulo rewrite de Apache.

El módulo rewrite nos va a permitir acceder a una URL e internamente estar accediendo a otra. Ayudado por los ficheros .htaccess, el módulo rewrite nos va a ayudar a formar URL amigables que son más consideradas por los motores de búsquedas y mejor recordadas por los humanos. Por ejemplo estas URL:

www.dominio.com/articulos/muestra.php?id=23
www.dominio.com/pueblos/pueblo.php?nombre=torrelodones

Es mucho mejor escribirlas como:

www.dominio.com/articulos/23.php
www.dominio.com/pueblos/torrelodones.php

Ejemplo 1: Reescribir URL

Si tenemos el siguiente fichero php (descargar) llamado operacion.php, podríamos usarlo de la siguiente manera:

http://localhost/operacion.php?op=suma&op1=6&op2=8

Y si queremos reescribir la URL y que usemos en vez de php html, de esta forma:

http://localhost/operacion.html?op=suma&op1=6&op2=8

Para ello activamos el mod_rewite, y escribimos un .htaccess de la siguiente manera:

Options FollowSymLinks
RewriteEngine On
RewriteRule ^operacion\.html$ operacion.php

Ejemplo 2: Cambiar la extensión de los ficheros

Si queremos usar la extensión do en vez de html podríamos usar este .htacces

Options FollowSymLinks
RewriteEngine On
RewriteRule ^(.+)\.do$ $1.html [nc]

Esto puede ser penalizado por los motores de búsqueda ya que podemos acceder a la misma página con dos URL distintas, para solucionar esto podemos hacer una redirección:

RewriteRule ^(.+)\.do$ $1.html [r,nc]

Ejemplo 3: Crear URL amigables

Como habíamos visto anteriormente el fichero operacion.php se podía ejecutar de la siguiente manera:

http://localhost/operacion.php?op=suma&op1=6&op2=8

Creando una URL amigable podríamos llamar a este fichero de la siguiente manera:

http://localhost/suma/8/6

¿Cómo podemos conseguir esto?

Crea un .htaccess con el siguiente contenido:

Options FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^([a-z]+)/([0-9]+)/([0-9]+)$ operacion.php?op=$1&op1=$2&op2=$3

Ejemplo 4: Acortar URL

Supongamos que dentro de nuestro DocumentRoot tenemos una carpeta búsqueda con un fichero buscar.php (descargar). Este fichero me permite obtener la página de búsqueda de google con el parámetro dado, de esta forma:

http://localhost/busqueda/buscar.php?id=hola

Nos gustaría poder crear una URL más corta que haga lo mismo, escribiríamos en nuestro .htaccess un RewriteRule de la siguiente forma:

RewriteRule ^buscar busqueda/buscar.php

De esta forma accederíamos por medio de la URL:

http://localhost/buscar?id=hola

Ejercicio: Siguiendo las técnicas anteriormente vistas, realiza una reescritura de URL para que pudieramos realizar búsquedas con URL de la siguiente manera:

http://localhost/buscar/hola.html

Ejemplo 5: Uso del RewriteCond

Ls directiva RewriteCond nos permite especificar una condición que si se cumple se ejecuta la directiva RewriteRule posterior. Se pueden poner varias condiciones con RewriteCond, en este caso cuando se cumplen todas se ejecuta la directiva RewriteRule posterior.

Como vemos en la documentación podemos preguntar por varios parámetros , entre los que destacamos los siguientes:

%{HTTP_USER_AGENT}: Información del cliente que accede.
Por ejemplo, podemos mostrar una página distinta para cada navegador:

RewriteCond %{HTTP_USER_AGENT} ^Mozilla
RewriteRule ^/$ /index.max.html [L]

RewriteCond %{HTTP_USER_AGENT} ^Lynx
RewriteRule ^/$ /index.min.html [L]

RewriteRule ^/$ /index.html [L]

%{QUERY_STRING}: Guarda la cadena de parámetros de una URL dinámica.Por ejemplo:

Teníamos un fichero index.php que recibía un parámetro lang, para traducir el mensaje de bienvenida.

http://localhost/index.php?lang=es

Actualmente hemos cambiado la forma de traducir, y se han creado distintos directorios para cada idioma y dentro un index.php con el mensaje traducido.

http://localhost/es/index.php

Sin embargo se quiere seguir utilizando la misma forma de traducir.

RewriteCond %{QUERY_STRING} lang=(.*)
RewriteRule ^index\.php$ /%1/$1

%{REMOTE_ADDR}: Dirección de destino. Por ejemplo puedo denegar el acceso a una dirección:

RewriteCond %{REMOTE_ADDR} 145.164.1.8
RewriteRule ^(.*)$ / [R,NC,L]

También podemos controlar la reescritura de URL según la hora y la fecha, para saber más lee este artículo.

%{HTTP_REFERER}: Guarda la URL que accede a nuestra página y %{REQUEST_URI} guarda la URI, URL sin nombre de dominio. Podemos evitar el Hot_Linking, o uso de recursos de tu servidor desde otra web. Por ejemplo, un caso muy común es usar imágenes alojadas en tu servidor puestas en otras web. Para ello podemos escribir el siguiente .htaccess:

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?dominio\.com/ [NC]
RewriteCond %{REQUEST_URI} !hotlink\.(gif|png) [NC]
RewriteRule .*\.(gif|jpg|png)$ http://www.dominio.com/image/hotlink.png [NC]

En el anterior ejemplo el primer RewriteCond permite la solicitud directa pero no desde otras páginas (referrer vacío). La siguiente línea indica que si el navegador ha enviado una cabecera Referrer y esta no contiene la palabra “dominio.com” se ejecutará el RewriteRule. La ultima instrucción RewriteCond indica que si en la url solicitada se encuentra el nombre de la imagen “hotlink” no se realizará el RewrtieRule; esto se pone porque la imagen hotlink.png va a ser la que vamos a usar en RewriteRule y si no ponemos este RewriteCond también sería redirigida la solicitud a esta imagen. La última instrucción del ejemplo es el RewriteRule que indica que cualquier solicitud a una imagen desde otro referrer será reescrita en el servidor hacia la imagen hotlink.png y esta será la imagen que se vea en la web que te esté intentando robar la imagen.

Ejercicio: Realiza un .htaccess para evitar el hot-linking. Puedes usar esta esta imagen para realizar el ejercicio.

Ejemplo 6: URL amigables con WordPress

Ejercicio: Instala wordpress en tu servidor con el módulo rewrite desactivado, comprueba que las URL no son amigables. Activa el módulo y a continuación configura el blog para que tenga URL amigables (Settings->Permalink).

Posted in General at octubre 28th, 2011. No Comments.
Tags: , ,

php no funciona con el módulo userdir de Apache

Estoy preparando un servidor para que mis alumnos hagan prácticas de Implantación de Aplicaciones Web. Para ello he activado el módulo userdir, que permite a cada usuario del sistema a tener un espacio web disponible en el servidor web. Para activar este módulo simplemente hay que realizar los siguientes pasos:

a2enmod userdir
/etc/init.d/apache2 restart

A continuación nos dimos cuenta que los ficheros php guardados en el directorio public_html de los suarios no se precesaban correctamente. La solución al problema es editar el fichero /etc/apache2/mods.enabled/php5.conf y comentar la línea php_admin_value engine Off, quedando el fichero de la siguiente manera:

...
 <IfModule mod_userdir.c>
 <Directory /home/*/public_html>
 # php_admin_value engine Off
 </Directory>
 </IfModule>
...

Para terminar reiniciando el servicio Apache2, y ya todo funciona de manera adecuada.

Posted in General at octubre 10th, 2011. No Comments.
Tags: , ,

Día del Software Libre

Comienza el curso y vuelvo a escribir en esta página. Espero ser constante e ir escribiendo entradas relacionadas con la informática y la educación.

Para empezar este año recordamos que durante el día de ayer se celebró el Día del Software Libre. Si quiere obtener más información sobre este evento visita la página oficial, nosotros siguiendo la recomendación de Cenatic, os dejamos los siguientes documentos:

Posted in General at septiembre 18th, 2011. No Comments.
Tags:

Pledin se socializa…

Como podéis comprobar estoy empezando a usar Twitter como herramienta de comunicación social, de esta manera comento en la red social las novedades que se van publicando en esta página, y todas las cosas que voy encontrando y me van interesando. Además he añadido dos plugins a esta página: por un lado ya se puede compartir los arículos que se publican y además en un bloque podéis ir viendo mis tweets.

Posted in General at junio 16th, 2011. No Comments.
Tags: , ,