Apéndice



Subsecciones
Casiano Rodríguez León
2010-03-22
cución:

pp2@nereida:~/Lerlang$ erl
Erlang (BEAM) emulator version 5.6.5 [source] [64-bit] [smp:8] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.6.5  (abort with ^G)
1> c(register).               
{ok,register}                 
2> P = register:start_server().
tutu_server:                   
<0.38.0>
3> register:rf(P).
Owner: undefined
tutu_server: registering function <toto>.
tutu_server:
accepted request
ok
4> register:rf(P).
Owner: <0.40.0>
tutu_server:
denied request
ok
end of loop reached I = 1000
5> register:rf(P).
Owner: undefined
tutu_server: registering function <toto>.
tutu_server:
accepted request
ok
6> register:rf(P).
Owner: <0.43.0>
tutu_server:
denied request
ok
7> register:rf(P).
Owner: <0.43.0>
tutu_server:
denied request
ok
8> register:rf(P).
Owner: <0.43.0>
tutu_server:
denied request
ok
end of loop reached I = 1000
9>

Casiano Rodríguez León
2010-04-19
~/src/perl/Grammar/> svn commit -m 'Just testing ...' Eliminando META.yml Enviando README Transmitiendo contenido de archivos . Commit de la revisión 3. Observe que ya no es necesario especificar el lugar en el que se encuentra el repositorio: esa información esta guardada en los subdirectorios de administración de subversion .svn

El servicio de subversion parece funcionar desde fuera de la red del centro. Véase la conexión desde una maquina exterior:

pp2@nereida:/tmp$  svn checkout svn+ssh://loginname@banot.etsii.ull.es/home/loginname/repository/Grammar Grammar
loginname@banot.etsii.ull.es's password:
loginname@banot.etsii.ull.es's password:
A    Grammar/t
A    Grammar/t/Grammar.t
A    Grammar/MANIFEST
A    Grammar/lib
A    Grammar/lib/Grammar.pm
A    Grammar/Makefile.PL
A    Grammar/scripts
A    Grammar/scripts/grammar.pl
A    Grammar/scripts/Calc.yp
A    Grammar/scripts/Precedencia.yp
A    Grammar/scripts/aSb.yp
A    Grammar/scripts/g1.yp
A    Grammar/Changes
A    Grammar/README
Revisión obtenida: 3

Comandos Básicos

Referencias

Consulte http://svnbook.red-bean.com/ . Vea la página de la ETSII http://www.etsii.ull.es/svn .

En KDE puede instalar el cliente gráfico KDEsvn.

Autentificación Automática

Para evitar la solicitud de claves cada vez que se comunica con el repositorio establezca autentificación SSH automática. Para ver como hacerlo puede consultar las instrucciones en:

http://search.cpan.org/~casiano/GRID-Machine/lib/GRID/Machine.pod#INSTALLATION

Consulte también las páginas del manual Unix de ssh, ssh-key-gen, ssh_config, scp, ssh-agent, ssh-add, sshd

Casiano Rodríguez León
2010-04-20
ode>blib viene de Build Library.
  • Se ejecuta el traductor de XS a C xsubpp (línea 9). El compilador usa unos ficheros de información denominados typemap para determinar la correspondencia entre los tipos de C y los de Perl. En vez de producir directamente un fichero con extensión .c la salida se almacena en un fichero temporal Example.xsc y luego se renombra como Example.c. Ello se hace para evitar que ficheros en proceso de formación puedan ser erróneamente tomados por código C válido.
  • El warning de la línea 10 puede ser ignorado. En XS es posible especificar un prototipo Perl para determinar la forma en la que ocurre la llamada a la XSUB (vea un ejemplo en la sección 17.11). El mensaje de advertencia puede desactivarse usando la directiva PROTOTYPES: DISABLE en el fichero XS justo después de la declaración MODULE:
    lhp@nereida:~/Lperl/src/XSUB/Example$ cat -n Example.xs
         1  #include "EXTERN.h"
         2  #include "perl.h"
         3  #include "XSUB.h"
         4
         5  #include "ppport.h"
         6
        ..  .................................................
        20  MODULE = Example                PACKAGE = Example
        21  PROTOTYPES: DISABLE
        22
        23  double
        24  computepi(id, N, np)
        25  int id
        26  int N
        27  int np
    
  • Se compila el fichero Example.c generado por xsubpp (línea 11).
    cc -c  -I. -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN \
      -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE \
      -D_FILE_OFFSET_BITS=64 -O2-DVERSION=\"0.01\" -DXS_VERSION=\"0.01\" \
      -fPIC "-I/usr/lib/perl/5.8/CORE" Example.c
    
    El compilador y las opciones del compilador usadas son las mismas que se emplearon para construir la instalación actual del intérprete Perl. Los valores con los que la versión usada de Perl fue compilada pueden obtenerse por medio del módulo Config . Por ejemplo:
    lhp@nereida:~/Lperl/src/XSUB$  perl -MConfig -e 'print Config::myconfig()'
    Summary of my perl5 (revision 5 version 8 subversion 8) configuration:
      Platform:
        osname=linux, osvers=2.6.15.4, archname=i486-linux-gnu-thread-multi
        uname='linux ninsei 2.6.15.4 #1 smp preempt mon feb 20 09:48:53 pst 2006\
                                                 i686 gnulinux '
        config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN
        -Dcccdlflags=-fPIC -Darchname=i486-linux-gnu
        -Dprefix=/usr -Dprivlib=/usr/share/perl/5.8
        -Darchlib=/usr/lib/perl/5.8 -Dvendorprefix=/usr
        -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5
        -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.8.8
        -Dsitearch=/usr/local/lib/perl/5.8.8 -Dman1dir=/usr/share/man/man1
        -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1
        -Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1 -Dman3ext=3perl
        -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Uusesfio -Uusenm
        -Duseshrplib -Dlibperl=libperl.so.5.8.8 -Dd_dosuid -des'
        hint=recommended, useposix=true, d_sigaction=define
        usethreads=define use5005threads=undef useithreads=define usemultiplicity=define
        useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
        use64bitint=undef use64bitall=undef uselongdouble=undef
        usemymalloc=n, bincompat5005=undef
    ! Compiler:
    !   cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS
    !   -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include
    !   -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    !   optimize='-O2',
        cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN 
                 -fno-strict-aliasing -pipe -I/usr/local/include'
        ccversion='', gccversion='4.0.3 (Debian 4.0.3-1)', gccosandvers=''
        intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
        d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
        ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
        alignbytes=4, prototype=define
      Linker and Libraries:
        ld='cc', ldflags =' -L/usr/local/lib'
        libpth=/usr/local/lib /lib /usr/lib
        libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
        perllibs=-ldl -lm -lpthread -lc -lcrypt
        libc=/lib/libc-2.3.6.so, so=so, useshrplib=true, libperl=libperl.so.5.8.8
        gnulibc_version='2.3.6'
      Dynamic Linking:
        dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
        cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib'
    
  • A continuación se procede a la construcción de la librería dinámica. El proceso depende de la plataforma y la forma de hacerlo viene de nuevo dirigida por el módulo Config. Observe que la librería se deja en el directorio blib/arch/auto/Example/ (línea 18).
    !13 chmod 644 Example.bs
    !14 rm -f blib/arch/auto/Example/Example.so
    !15 cc  -shared -L/usr/local/lib Example.o  -o blib/arch/auto/Example/Example.so    \
     16                 \
     17 
    !18 chmod 755 blib/arch/auto/Example/Example.so
    !19 cp Example.bs blib/arch/auto/Example/Example.bs
    !20 chmod 644 blib/arch/auto/Example/Example.bs
     21 Manifying blib/man3/Example.3pm
    
  • Para probar el módulo escribimos un programa de prueba:

    lhp@nereida:~/Lperl/src/XSUB/Example$ cat -n useexample.pl
     1  #!/usr/bin/perl -w
     2  use blib; # Para que encuentre el módulo
     3  use strict;
     4  use Example;
     5
     6  my $n = shift || 1000;
     7  my $x = 0;
     8
     9  $x += Example::computepi(0,$n,4) for 0..3;
    10  print "$x\n";
    lhp@nereida:~/Lperl/src/XSUB/Example$ time ./useexample.pl 1000
    3.14459174129814
    
    real    0m0.032s
    user    0m0.020s
    sys     0m0.010s
    lhp@nereida:~/Lperl/src/XSUB/Example$ time ./useexample.pl 10000000
    3.14159295358978
    
    real    0m0.359s
    user    0m0.360s
    sys     0m0.000s
    



    Subsecciones
    Casiano Rodríguez León
    2011-06-04