Archive for the ‘MediaWiki’ Category

Restringir edición a usuarios anónimos

Tuesday, December 9th, 2008

Solamente hay que agregar en el archivo LocalSettings.php (válido para versiones 1.5 y superiores):


$wgGroupPermissions['*']['edit'] = false;

Referencia

Problemas con imágenes en MediaWiki

Thursday, August 7th, 2008

El otro día al administrar un wiki, potenciado por MediaWiki, me encontré con un problema con la visualización de imágenes, subidas en el servidor, cuando eran insertadas en artículos. Comentó cómo solucioné esto.

Al insertar una imagen muy grande o cuando la reducía me lanzaba el siguiente error.


Error al crear miniatura: /var/www/wiki/bin/ulimit4.sh: line 4: /usr/bin/convert: No such file or directory

Resumiendo, el error surgía al intentar hacer alguna transformación sobre la imagen (e.g. agrandar, reducir, etc.), sumando esto a lo descripto por el error, estaba faltando instalar algún programa que se encarga de esta tarea.

Investigando un poco, el comando convert está disponible en el paquete imagemagick en Debian. Al verificar en el servidor que corría el wiki, sobre ese paquete, efectivamente imagemagick no estaba instalado; bastó hacer un aptitude install imagemagick.

Una vez instalado volví al wiki y pude verificar que la imagen se visualizaba perfectamente.

Fuentes

Coloreado de sintaxis en MediaWiki

Thursday, July 3rd, 2008

Para lograr colorear la sintaxis de las fuentes que incluyamos en nuestras páginas en Mediawiki, existe una extensión que facilita enormemente esta tarea. La extensión se llama SyntaxHighlight GeSHi.

Instalación

La extensión se encuentra en un repositorio de Subversion, por lo tanto necesitaremos un cliente Subversion para obtenerla. En caso de que no tengan algún cliente instalado, en este post explico cómo instalarlo.

Luego hay que ir a la carpeta extension, la cual se encuentra dentro del directorio donde tengamos instalado el wiki. Podríamos suponer que se encuentra en /var/www/wiki/extension/.

Dentro de la carpeta extension, utilizaremos el cliente subversión para bajar la extensión. Ejecutando el siguiente comando:


# svn co http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/SyntaxHighlight_GeSHi

Adicionalmente necesitaremos bajar actual de GeSHi, la cual también se encuentra disponible en un repositorio Subversion. La extensión sería recomendado bajarla dentro de la carpeta extension/SyntaxHighlight_GeSHi/.


# cd SyntaxHighlight_GeSHi
# svn co http://geshi.svn.sourceforge.net/svnroot/geshi/branches/RELEASE_1_0_X_STABLE/geshi-1.0.X/src/ geshi

Habilitar la extensión

Ahora indicaremos al wiki sobre la nueva extensión, para esto debemos editar el archivo LocalSettings.php, que se debería encontrar en la raíz del directorio del wiki (ej. /var/www/wiki/). La edición consiste en agregar estas dos líneas al final del archivo.


require_once("extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.php");
require_once( '/var/www/wiki/extensions/SyntaxHighlight_GeSHi/geshi/geshi.php' );

Nota: En el caso del segundo require_once, es necesario que especifiquen la ruta en donde se localiza geshi. De acuerdo a este ejemplo, la ruta que especifico es correcta, pero no podría ser en su caso.

Verificación de la instalación

Para verificar que realmente tenemos la extensión funcionando, podemos revisar la página Especial:Version (deben ser administradores del wiki para poder ver ésta página), en donde debería describir (dentro de otras cosas) las extensiones instaladas. Pueden ver la imagen de como luciría la descripción de la extensión

Página Especial:Version

Uso

Hay que utilizar la etiqueta source y a través de la propiedad lang especificamos el tipo de fuente que vamos a escribir. Acá dejo un pequeño ejemplo como se vería un fragmento de XHTML.


<source lang="xml">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>XHTML 1.0 un ejemplo</title>
 </head>
 <body>
 <p>Esto es una muestra de la extensión<p>
 </body>
</html>
</source>

El código anterior se vería como la siguiente imagen.

Sintaxis coloreada por la extensión SyntaxHighlight GeSHi en MediaWiki

Los parámetros que se le pueden pasar a la etiqueta source son los siguientes:

lang
Define el lenguaje
line
Habilita la numeración de lineas en el código.
start
Número con que comenzará a numerar las líneas.
enclose
Coloreado especial para etiquetas que envuelven el código.
strict

En la tabla de abajo presento los valores que puede tomar la propiedad lang.

lang Lenguaje
abap ABAP
actionscript ActionScrip
ada Ada
apache Apache Log
applescript AppleScript
asm ASM
asp Active Server Pages (ASP)
autoit AutoIt
bash Bash
basic4gl Basic4GL
blitzbasic Blitz BASIC
bnf Backus-Naur Form
c C
c_mac C (Mac)
caddcl AutoCAD DCL
cadlisp AutoLISP
cfdg CFDG
cfm ColdFusion
cpp-qt C++ (Qt toolkit)
cpp C++
csharp C#
css Cascading Style Sheets (CSS)
d D
delphi Delphi
diff Diff
div DIV
dos DOS batch file
dot DOT
eiffel Eiffel
fortran Fortran
freebasic FreeBASIC
genero Genero
gml Game Maker Language (GML)
groovy Groovy
haskell Haskell
html4strict HTML
idl Uno IDL
ini INI
inno Inno
io Io
java Java
java5 Java(TM) 2 Platform Standard Edition 5.0
javascript JavaScript
latex LaTeX
lisp Lisp
lua Lua
m68k Motorola 68000 Assembler
matlab MATLAB M
mirc mIRC scripting language
mpasm Microchip Assembler
mysql MySQL
nsis Nullsoft Scriptable Install System (NSIS)
objc Objective-C
ocaml-brief OCaml
ocaml Ocaml
oobas OpenOffice.org Basic
oracle8 Oracle 8 SQL
pascal Pascal
per per
perl Perl
php-brief PHP
php PHP
plsql PL/SQL
python Python
qbasic QBasic/QuickBASIC
rails Rails
reg Windows Registry
robots robots.txt
ruby Ruby
sas SAS
scheme Scheme
sdlbasic SdlBasic
smalltalk Smaltalk
smarty Smarty
sql SQL
tcl Tcl
text Plain text
thinbasic thinBasic
tsql Transact-SQL
vb Visual Basic
vbnet Visual Basic .NET
vhdl VHDL
visualfoxpro Visual FoxPro
winbatch WinBatch
xml XML
xpp X++
z80 ZILOG >80 Assembler

Bibliografía

Instalación y configuración de un Wiki semántico

Tuesday, July 1st, 2008

Logotipo de semantic MediaWiki

Para darle semántica a nuestro wiki, sólo es necesario instalar la extensión Semantic MediaWiki, esta extensión es sólo para MediaWiki, por lo tanto necesitamos tener instalado un wiki con MediaWiki.

Introducción

Semantic MediaWiki (SMW), ayuda a la búsqueda, organización, evaluación y muestra de tags y también ayuda a compartir los contenidos del wiki. Esta extensión posibilita que los textos de nuestro wiki puedan ser interpretados por las máquinas y no sólo por personas, dando pie a la futura Web semántica.

Instalación

Para facilitar la instalación (y la explicación) será necesario tener instalado un cliente de subversión. En caso de no tener instalado el cliente, es necesario instalar el paquete subversion, en Debian o Ubuntu (u otros forks) aptitude install subversion.

Luego hay que ir a la carpeta extension, la cual se encuentra dentro del directorio donde tengamos instalado el wiki. Podriamos suponer que se encuentra en /var/www/wiki/extension/.

Dentro de la carpeta extension, utilizaremos el cliente subversión para bajar la extensión. Ejecutando el siguiente comando:


# svn checkout http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/SemanticMediaWiki/

Habilitar la extensión

Una vez que se descargue el código, debemos indicar al wiki que habilite la extensión, para esto debemos ir editar el archivo LocalSettings.php, que se debería encontrar en la raíz del directorio del wiki (ej. /var/www/wiki/). La edición consiste en agregar estas dos líneas al final del archivo.


include_once('extensions/SemanticMediaWiki/includes/SMW_Settings.php');
enableSemantics('example.org');

Nota: Hay que reemplazar el string example.org, por su dirección http del wiki, por ejemplo versatil.org/wiki/ o por la dirección IP.

Actualización de la base de datos

Por último falta actualizar la base de datos. Esto se puede realizar a través de la página “Special:SMWAdmin” (ver imagen), por ejemplo http://versatil.org/wiki/index.php/Especial:SMWAdmin. Para poder tener acceso a está página tienen que estar logeados como un usuario administrador del wiki.

Página Special:SMWAdmin

Una vez en la página Special:SMWAdmin, deben presionar el botón que dice Initialise or upgrade tables. Si al presionarlo no apareció ningún error, significa que la actualización de la base de datos se ejecuto sin problemas.

Verificación de la instalación y configuración

Para verificar que realmente tenemos la extensión funcionando, podemos revisar la página Especial:Version, siguiendo con el ejemplo en http://versatil.org/wiki/index.php/Especial:Version. En esa página salen las extensiones instaladas en nuestro wiki, ahí debería estar la extensión Semantic MediaWiki (ver imagen).

Página Especial:Version

Palabras finales

Una vez instalada la extensión, pueden colaborar con el proyecto dándose de alta en un registro de wiki semánticos. Dicho registro es para recolectar datos que faciliten futuras implementaciones.

Bibliografía

Instalación y configuración de memcached en MediaWiki

Monday, June 30th, 2008

A continuación presento como instalé y configuré memcached en MediaWiki, sobre un Ubuntu 7.04.

¿Qué es memcached?

Memcached es un sistema de cache, que almacena objetos en memoria. Estos objetos son las consultas que se van realizando a la base de datos. La cache que utiliza es una tabla hash, que puede ser distribuida entre varias máquinas.

Beneficios del uso de memcached

Aumento en el rendimiento y disminución en la carga de la base de datos. Al estar cacheada las consultas, se puede “armar” más rápido las páginas que se sirven a los usuarios. Además se reduce considerablemente los accesos a la base de datos.

Requerimientos

  • PHP debe estar compilado con la –enable-sockets
  • libevent1
  • memcached

Para verificar que tenemos PHP compilado con esa opción podemos verificarlo con phpinfo (creando un página PHP con <?phpinfo();?>). En la figura podemos ver que tenemos compilado PHP con esa opción.

Socket habilitado en phpinfo

Para satisfacer los otros dos requerimientos, basta ejecutar un aptitude install memcached libevent1.

Verificación de funcionamiento

Podemos ver si está funcionando, verficando si efectivamente memcached está escuchando en su puerto.


$ netstat -tap
Conexiones activas de Internet (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 *:53856                 *:*                     LISTEN     5409/rpc.statd
tcp        0      0 localhost:2208          *:*                     LISTEN     4983/hpiod
tcp        0      0 *:nfs                   *:*                     LISTEN     -
tcp        0      0 *:11211                 *:*                     LISTEN     2
9248/memcached

Esta verificación es redundante ya que las dependencias de memcached son resueltas por aptitude, pero útil si han compilado memcached.


# cd /usr/bin
/usr/bin# ldd memcached
        linux-gate.so.1 =>  (0xffffe000)
        libevent.so.1 => /usr/lib/libevent.so.1 (0xb7edc000)
        libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7d9b000)
        /lib/ld-linux.so.2 (0xb7ef9000)

Configuración de memcached en MediaWiki

Hay que editar el archivo LocalSetting.php y modificar las variables wgMainCacheType y wgMemCachedServers.

La variable wgMainCacheType toma como valor una constante. La siguiente lista contiene las constantes que pueden ser asignadas, no voy a entrar en detalle en el uso específico de cada una.

  • CACHE_ANYTHING
  • CACHE_NONE
  • CACHE_DB
  • CACHE_MEMCACHED
  • CACHE_ACCEL
  • CACHE_DBA

$wgMainCacheType = CACHE_MEMCACHED;
$wgMemCachedServers = array( "127.0.0.1:11211” );

Para poder asignar el valor correcto en wgMemCachedServers, necesitamos saber porque puerto está escuchando memcached. Esta información se encuentra detallada en /etc/memcached.conf. Dejo un fragmento del archivo.


# Default connection port is 11211
-p 11211

# Run the daemon as root. The start-memcached will default to running as root if no

Bibliografía

Restringir y confirmar la creación de cuentas en MediaWiki

Friday, June 20th, 2008

La explicación se basará en una versión superior a la 1.5 y teniendo en cuenta que se ha instalado satisfactoriamente.

Restringir creación de cuentas

Tendremos que editar el archivo LocalSettings.php (el cual se debería encontrar en la carpeta donde instalamos MediaWiki) y agregar al final de él la siguiente línea


$wgGroupPermissions['*']['createaccount'] = false;

Ahora si tratamos de registrarnos, nos dirá que no hay un usuario con dicho nombre

Para terminar explicaré como habilitar la extensión para la confirmación de cuentas para esto haceremos

Confirmar creación de cuentas

  1. Iremos a la carpeta de extensiones (extensions) y por medio de svn bajaremos la extensión desde el repositorio de wikimedia

    
    cd extensions
    svn checkout http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/ConfirmAccount/
    
  2. Ahora deberemos correr un script (en /extensions/ConfirmAccount)
    para crear ciertas tablas en nuestra base de datos, para esto en
    función de la base de datos que estemos usando, es el que tendremos que
    correr:

    • PostgreSQL: ConfirmAccount.pg.sql
    • MySQL: ConfirmAccount.sql

    Si en la instalación hemos modificado el prefijo de las tablas,
    tendremos que indicarlo en el script. Para saber el prefijo y los datos
    sobre la base de datos (especificados durante la instalación) podemos
    revisar el archivo LocalSettings.php y encontraremos lo siguiente

    
    $wgDBtype           = "mysql";
    $wgDBserver         = "192.168.1.111";
    $wgDBname           = "wikidb";
    $wgDBuser           = "wikiuser";
    $wgDBpassword       = "123";
    
    # MySQL specific settings
    $wgDBprefix         = "miPrefijo";
    

    Por ejemplo, habría que reemplazar las ocurrencias /*$wgDBprefix*/ por el valor que tiene la variable wgDBprefix en nuestro LocalSettings.php, en mi caso es miPrefijo. Aquí dejo las partes puntuales que habría que modificar del script

    
    -- This stores all of our reviews,
    -- the corresponding tags are stored in the tag table
    CREATE TABLE /*$wgDBprefix*/account_requests (
      acr_id int unsigned NOT NULL auto_increment,
    
    
    -- This stores all of credential information
    -- When accounts are confirmed, the identity info goes here
    CREATE TABLE /*$wgDBprefix*/account_credentials (
      — Revision ID #
      acd_id int unsigned NOT NULL auto_increment,
    

    FInalizada la modificación de los script faltaría sólo correrlos para esto nos posicionaremos en la carpeta de la extensión (extensions/ConfirmAccount) y ejecutamos

    
     mysql -D wikidb -u wikiuser -h 192.168.1.111 < ConfirmAccount.sql
    
    

    Los valores de los parámetros D, u y h, se encuentran definidos en el archivo LocalSettings.php

  3. Ahora deberemos incluir la siguiente línea en LocalSettings.php
    
    include_once('extensions/ConfirmAccount/SpecialConfirmAccount.php');
    
  4. Debemos asegurarnos que este activado (true) la variable $wgEnableEmail en LocalSettings.php
  5. 
     ## For more information on customizing the URLs please see:
    ## http://www.mediawiki.org/wiki/Manual:Short_URL
    
    $wgEnableEmail      = true;
    
    $wgEnableUserEmail  = true;
    
    $wgEmergencyContact = “algo@mail.org”;
    $wgPasswordSender = “algo@mail.org”;
    

Aquí dejo como se modifica la página de registración y la nueva página para solicitar una cuenta al wiki

Página de registración modificada por la extensión

Página de solicitud de cuenta creada por la extensión

Uno de los datos que se deben llenar en la solicitud de la cuenta, es una bibliografía personal
que conste de 50 palabras. Según la seriedad de nuestro wiki esto puede
ser mínimo, justo o demasiado. Para alterar la cantidad de palabras hay
que editar la variable wgAccountRequestMinWords en el archivo SpecialConfirmAccount.php (en extensions/ConfirmAccount). En este caso lo modifiqué a 25 palabras.


# Minimum biography specs
$wgAccountRequestMinWords = 25;

Bibliografía

Plantilla para Calendario en WikiMedia

Friday, June 20th, 2008

Para
agregar un calendario similar al de Wikipedia a nuestro wiki, tenemos
que hacer lo siguiente. Cuando editemos un página en la que queremos
agregar el calendario, ponemos lo siguiente:


{calendario}

Ahora cuando veamos la imagen, nos debería salir un link con nombre Plantilla:Calendario,
el cual si lo presionamos nos lleva a una página no existente en
nuestro wiki. Esta página que no tenemos definida es la que maneja el
estilo del calendario. Por lo que simplemente escribimos el estilo para
nuestro calendario:


<div style="border:solid #ccc; background: #fff; border-width: 1px 3px 3px 1px; text-align: center; padding-top:3px; float:left; font-size: smaller; line-height: 1.3; margin-right: 4px; width: 7em">
[[{{CURRENTDAY}} de {{CURRENTMONTHNAME}}|<span style="display: block;">{{CURRENTDAYNAME}}</span>
<span style="font-size: x-large; width: 100%; display: block; padding:6px 0px">{{CURRENTDAY}}</span>

<span style="display: block;"> {{CURRENTMONTHNAME}}</span>]]
<span style=”background: #aaa; color: #000; display: block;”>”’[[{{CURRENTYEAR}}]]”’</span>
</div><noinclude>

Finalmente guardamos la página y volvemos a cargar la anterior, en la que habíamos agregado {calendario}, nos debería aparecer algo similar a la siguiente imagen.

Calendario similar al utilizado en WIkipedia