User Tools

Site Tools


malete_-_primeros_pasos

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
malete_-_primeros_pasos [24/03/2008 16:31]
fernando
malete_-_primeros_pasos [30/04/2009 18:28]
fernando
Line 5: Line 5:
  
 Vamos a intentar describir paso a paso un primer encuentro con Malete. Vamos a intentar describir paso a paso un primer encuentro con Malete.
 +
  
 ===== Setup ===== ===== Setup =====
Line 11: Line 12:
  
   tar xzf malete.1.0.3.tgz   tar xzf malete.1.0.3.tgz
 +
 +**SUGERENCIA**:​ al descomprimir debería crearse un directorio '​malete-version'​.
  
 Vemos que se crean cuatro directorios:​ Vemos que se crean cuatro directorios:​
Line 22: Line 25:
   * ''​test'':​ contiene dos bases de datos: ''​cds''​ (la tradicional base distribuida por Unesco), y ''​unicode''​ (una pequeña base para probar el uso de Unicode en Malete).   * ''​test'':​ contiene dos bases de datos: ''​cds''​ (la tradicional base distribuida por Unesco), y ''​unicode''​ (una pequeña base para probar el uso de Unicode en Malete).
  
-Cada una de las bases de datos dentro ​de ''​test''​ está compuesta por tres archivos:+Cada base de datos dentro ​del directorio ​''​test''​ está compuesta por tres archivos:
  
   * ''<​db_name>​.m0d'':​ malete options (record 0) file (collation y qué más?)   * ''<​db_name>​.m0d'':​ malete options (record 0) file (collation y qué más?)
-  * ''<​db_name>​.mqt'': ​malete query terms +  * ''<​db_name>​.mqt'': ​**m**alete **q**uery **t**erms 
-  * ''<​db_name>​.mrd'': ​malete record data+  * ''<​db_name>​.mrd'': ​**m**alete **r**ecord **d**ata
  
 Es importante notar que se trata de **archivos de texto**. Es importante notar que se trata de **archivos de texto**.
Line 50: Line 53:
  
 Se trata solamente de una sugerencia inicial, como para comenzar a familiarizarnos con el protocolo de comunicación usado por Malete. Seguiremos esas indicaciones,​ y veremos qué sucede. Se trata solamente de una sugerencia inicial, como para comenzar a familiarizarnos con el protocolo de comunicación usado por Malete. Seguiremos esas indicaciones,​ y veremos qué sucede.
 +
  
 ===== Compilación ===== ===== Compilación =====
Line 57: Line 61:
   make -C mlt server   make -C mlt server
  
-Esto invoca al programa ''​make'',​ y le pasa dos argumentos: la opción ''​-C mlt''​ le indica que debe leer el Makefile del directorio ''​mlt'',​ y el target ''​server''​ ...?+Esto invoca al programa ''​make'',​ y le pasa dos argumentos: la opción ''​-C mlt''​ le indica que debe leer el Makefile del directorio ''​mlt'',​ y el target ''​server''​ ...? **TODO**: ver los otros targets en el Makefile.
  
 <​note>​ <​note>​
Line 70: Line 74:
   listening on '​*:​2042'​   listening on '​*:​2042'​
  
-(El servidor Malete utiliza por defecto el puerto 2042.)+El servidor Malete utiliza por defecto el puerto 2042.
  
-Como resultado de la ejecución de ''​make'',​ se han creado varios archivos. Hay un nuevo directorio ''​bin'', ​y de allí nos interesa especialmente el archivo ''​malete''​, que es el ejecutable ​(279.052 bytes en la versión 1.0.3). Dentro del directorio ''​test''​ han aparecido estos 5 archivos:+Como resultado de la ejecución de ''​make'',​ se han creado varios archivos. Hay un nuevo directorio ''​bin'', ​del cual nos interesa especialmente el archivo ​ejecutable ​''​malete''​ (273 KB).
  
-  * test.m0d +Dentro del directorio ''​test''​ fueron creados estos 5 archivos:
-  * test.mrd +
-  * test.mrx +
-  * test.mqd +
-  * test.mqx+
  
-Esta nueva base de datos, llamada ''​test'',​ es una copia de la base ''​cds''​ que vino con Malete. Más precisamente,​ los archivos ''​test.m0d''​ y ''​test.mrd''​ son copia de ''​cds.m0d''​ y ''​cds.mrd''​, respectivamente, mientras que+  * ''​test.m0d''​ 
 +  * ''​test.mrd''​ 
 +  * ''​test.mrx''​ 
 +  * ''​test.mqd''​ 
 +  * ''​test.mqx''​ 
 + 
 +Esta nueva base de datos, llamada ''​test'',​ es una copia de la base ''​cds''​ que vino con Malete. Más precisamente,​ los archivos ''​test.m0d''​ y ''​test.mrd''​ son copia respectivamente ​de ''​cds.m0d''​ y ''​cds.mrd'',​ mientras que
  
-  * ''​test.mqd''​ se genera a partir de ''​cds.mqt''​ 
   * ''​test.mrx''​ se genera a partir de ''​test.mrd''​   * ''​test.mrx''​ se genera a partir de ''​test.mrd''​
 +  * ''​test.mqd''​ se genera a partir de ''​cds.mqt''​
   * ''​test.mqx''​ se genera a partir de ''​test.mqd''​ y ''​test.m0d''​   * ''​test.mqx''​ se genera a partir de ''​test.mqd''​ y ''​test.m0d''​
  
 ===== La base de pruebas ===== ===== La base de pruebas =====
 +
 +<​note>​
 +Comparar con la base CDS de MicroIsis o WinIsis.
 +</​note>​
  
 Podemos examinar la base ''​cds''​ con una herramienta conocida, el utilitario ''​mx''​. Para ello, podemos crear una base Isis a partir de la base Malete. Previamente necesitamos recompilar ''​malete''​ para que trabaje con bases Isis en "​formato Unix", en lugar del "​formato DOS" que usa por defecto: Podemos examinar la base ''​cds''​ con una herramienta conocida, el utilitario ''​mx''​. Para ello, podemos crear una base Isis a partir de la base Malete. Previamente necesitamos recompilar ''​malete''​ para que trabaje con bases Isis en "​formato Unix", en lugar del "​formato DOS" que usa por defecto:
  
-  $ rm -rf bin/ +  $ export ​CDSUNIX=1 
-  $ CDSUNIX=1 +  $ make -B -C mlt server ​ # -B fuerza una recompilación
-  $ export CDSUNIX +
-  $ make -C mlt server+
  
 Ahora exportamos la base ''​cds'',​ de Malete a Isis: Ahora exportamos la base ''​cds'',​ de Malete a Isis:
Line 104: Line 112:
   ..   ..
  
-¿La base tiene 151 registros? No, solamente 150, pero hay un error en la base creada por Malete:+''​mx''​ nos indica que hay 151 registros en la base, aunque el 151 no puede ser leído:
  
   $ mx test/cds "​pft=mfn,​x2,​v24(8,​8)"/​ from=148 now   $ mx test/cds "​pft=mfn,​x2,​v24(8,​8)"/​ from=148 now
Line 115: Line 123:
   ​   ​
   fatal: recread/​read   fatal: recread/​read
 +
 +También hay problemas para leer el diccionario usando ''​mx'':​
 +
 +  $ mx test/cds water
 +  ​
 +  fatal: noderead/​ock
 +
 +  $ mx dict=test/​cds
 +  ​
 +  fatal: noderead/​ock
 +
 +
 +Examinemos la versión DOS de la misma base (desde wine).
 +
 +  $ export CDSUNIX= ​  # volvemos al default
 +  $ make -B -C mlt server
 +
 +  $ bin/malete cdsexp cds -ftest/
 +
 +  $ wine /​media/​win1/​cisis/​5.2/​1030/​mx test/cds +control
 +  *test/cds
 +   ​nxtmfn nxtmfb nxtmfp ​ t  reccnt mfcxx1 mfcxx2 mfcxx3 ​   RC
 +     ​152 ​   122     ​12 ​  ​0 ​   150      0      0      0      0
 +  ..
 +  $ wine /​media/​win1/​cisis/​5.2/​1030/​mx test/cds "​pft=mfn,​x2,​v24(8,​8)/"​ now from=148
 +  000148 ​ Personal statement
 +  000149 ​ For a training project based on programmed learning in the developing
 +          countries: objectives, means and resources, organization and
 +          management, development
 +  000150 ​ Micropolitan development:​ theory and practice of greater-rural
 +          economic development
 +  000151 ​ Manuel pratique des assurances sociales
 +
 +Notamos que en este caso ''​mx''​ nos muestra un registro 151, pero se trata de una copia (fantasma) del registro 101:
 +
 +   $ wine /​media/​win1/​cisis/​5.2/​1030/​mx test/cds from=101
 +   ​mfn= ​  101
 +    24  «Manuel pratique des assurances sociales»
 +    26  «^aParis^bDOCIS^c1968»
 +    30  «^a1 v. (loose-leaf)»
 +    50  «Kept up-to-date»
 +    69  «<​social security><​legislation><​France><​guides>​»
 +    71  «Documentation des institutions»
 +   ..x
 +   $ wine /​media/​win1/​cisis/​5.2/​1030/​mx test/cds from=151
 +   ​mfn= ​  151
 +    24  «Manuel pratique des assurances sociales»
 +    26  «^aParis^bDOCIS^c1968»
 +    30  «^a1 v. (loose-leaf)»
 +    50  «Kept up-to-date»
 +    69  «<​social security><​legislation><​France><​guides>​»
 +    71  «Documentation des institutions»
 +   ..x
 +
 +
 +El error en el diccionario es el mismo.
 +
  
 ===== La primera sesión ===== ===== La primera sesión =====
Line 125: Line 190:
   Escape character is '​^]'​.   Escape character is '​^]'​.
  
 +El servidor Malete está listo para escuchar nuestros mensajes.
  
-El servidor Malete está listo para escuchar nuestros mensajes. ​Empecemos con **test.Q**, seguido por un doble Enter:+==== Consulta vacía ==== 
 + 
 +Empecemos con **test.Q**, seguido por un doble Enter:
  
   test.Q   test.Q
 +
 +La **Q** indica que estamos haciendo una **consulta** (//​query//​),​ y la ausencia de parámetros hace que se trate de un caso especial de consulta, la //consulta vacía//. Con esta consulta recuperamos todos los registros de la base (véase [[http://​malete.org/​Doc/​Protocol|Protocol]]).
  
 Malete nos responde de esta manera: Malete nos responde de esta manera:
Line 150: Line 220:
   30              ap. 225-232 ​    ​billus.   30              ap. 225-232 ​    ​billus.
   70      Bosian, G.   70      Bosian, G.
- +  ​ 
-[Esos son los primeros 2 registros; siguen 18 más]+  [Esos son los primeros 2 registros; siguen 18 más.]
  
 La línea inicial de la respuesta, La línea inicial de la respuesta,
Line 157: Line 227:
   #       ​151 ​    ​0 ​      0   #       ​151 ​    ​0 ​      0
  
-indica ​...+es un **comentario** (lo sabemos pues comienza con '#'​),​ que nos proporciona información acerca de la consulta realizada:​ 
 + 
 +  * '​151'​ es la **cantidad estimada de registros** restantes para la presente consulta, incluyendo los recién leídos. 
 +  * '​0'​ es el **número de la consulta**, que puede ser usado para referirse a ella desde futuras consultas; veremos que en sucesivas consultas este número va aumentando. 
 +  * **record id de truncamiento**:​ si no es '​0',​ es el record id donde la búsqueda fue truncada debido al límite de tamaño para el conjunto de resultados.
  
 A continuación aparece el primer registro de la base ''​test'':​ A continuación aparece el primer registro de la base ''​test'':​
Line 188: Line 262:
 y así sucesivamente,​ hasta llegar al número 20. y así sucesivamente,​ hasta llegar al número 20.
  
 +Vemos que cada registro se inicia con una línea que comienza con un número negativo de la forma **-n**, donde **n** es la cantidad de campos del registro. Debe notarse que esa línea inicial es también un campo.
  
-Al usar una //consulta vacía//, estamos recuperando todos los registros de la base (véase [[http://​malete.org/​Doc/​Protocol|Protocol]]). +Cuando repetimos el mensaje ''​test.Q''​ (seguido, como en todos los casos, por doble Enter), obtenemos los siguientes 20 registros de la base ''​test''​, comenzando por el 21:
- +
-Cuando repetimos el mensaje ''​test.Q''​ (seguido, como en todos los casos, por doble Enter), obtenemos los siguientes 20 registros de la base ''​test'':​+
  
   test.Q   test.Q
Line 213: Line 286:
   70      Shachori, A.Y.   70      Shachori, A.Y.
   70      Michaeli, A.   70      Michaeli, A.
 +  ​
 +  [Siguen los registros hasta el 40.]
 +
 +Vemos que la línea inicial de la respuesta, el comentario:
 +
 +  #       ​131 ​    ​0 ​      0
 +
 +ahora nos indica que restan 131 registros (los primeros 20 ya los habíamos recibido), y el identificador de la consulta sigue siendo '​0',​ pues seguimos solicitando resultados de la consulta anterior.
  
-[siguen hasta el registro 40]+==== Consultas no vacías ====
  
-Pasemos ​ahora una consulta no vacía: "​test.Q water" (atención: luego de la Q hay un TAB):+Hagamos ​ahora una consulta no vacía, con el término **water**:
  
   test.Q water   test.Q water
Line 237: Line 318:
  
 Lo que hemos hecho es una búsqueda por el término "​water",​ y lo que vemos es una Lo que hemos hecho es una búsqueda por el término "​water",​ y lo que vemos es una
-lista de los 14 record-id encontrados (record-id es equivalente al MFN de cds/isis).+lista de los 14 record-id encontrados (record-id es equivalente al MFN de cds/​isis). ​A diferencia del ejemplo previo, donde directamente recibíamos los registros completos, aquí solamente tenemos acceso a la lista de MFNs. Pero también podemos recuperar los registros:
  
-Pasemos a la siguiente consulta: +   test.Q ​ water? 
- +    
-  ​test.Q plant water?+   # ​      ​14 ​     2       0 
 +   ​-9 ​     4@1043 
 +   ​44 ​     Methodology of plant eco-physiology:​ proceedings of the Montpellier Symposium 
 +   ​50 ​     Incl. bibl. 
 +   ​69 ​     Paper on: <​hygrometers><​plant transpiration><​moisture><​water balance>​ 
 +   ​24 ​     <An> Electric hygrometer apparatus for measuring water-vapour loss from plants in the field 
 +   ​26 ​             c1965 
 +   ​30 ​             ap. 247-257 ​    ​billus. 
 +   ​70 ​     Grieve, B.J. 
 +   ​70 ​     Went, F.W.
   ​   ​
-  ​#       ​2 ​      ​2 ​      0 +  ​[... siguen 13 registros ​más.]
-  -9      5@1372 +
-  44      Methodology of plant eco-physiology:​ proceedings of the Montpellier Symposium +
-  50      Inclbibl. +
-  69      <plant physiology><​soil moisture><​plant transpiration><​evapotranspiration><​measurement and instruments>​ +
-  24      Anti-transpirants as a research tool for the study of the effects of water stress on plant behaviour +
-  26              c1965 +
-  30              ap269-274 ​    ​billus. +
-  70      Gale, J. +
-  70      Poljakoff-Mayber,​ A. +
-  -8      25@7420 +
-  24      <The> Heat, water and carbon dioxide budget of plant cover: methods and measurements +
-  26              c1965 +
-  30              ap. 495-512 ​    ​billus. +
-  44      Methodology of plant eco-physiology:​ proceedings of the Montpellier Symposium +
-  50      Incl. bibl. +
-  69      Paper on: <energy balance><​water balance><​carbon dioxide><​plant physiology><​heat transfer><​measurement and instruments>​ +
-  70      Baumgartner,​ Albert +
- +
- +
-Hemos realizado la consulta **plant water?**, y hemos recuperado los registros ​5 y 25. Esta consulta consta de dos partes: una **búsqueda** (plant water) y un **filtro** (lo que aparece a la derecha del signo **?**; en este caso, el filtro es vacío).+
  
-Obtuvimos los registros, y no solamente los identificadores. Véase Protocol.txt:​ 
  
-  //If no filter is specified (i.e. no '?')only record ids are returned.//+El signo de interrogación **?** divide la consulta en dos partes: a la izquierda la **expresión de búsqueda**a la derecha un **filtro**. En este caso el filtro es vacío, pero la sola presencia del signo ? hace que el servidor Malete nos envíe los registros.
  
-El uso del signo '?' ​hace que el servidor envíe los registros.+  If no filter is specified (i.e. no '?'​), only record ids are returned.
  
  
-Siguiente ​consulta, de acuerdo con la sugerencia del archivo ''​README'':​+La siguiente ​consulta, de acuerdo con la sugerencia del archivo ''​README''​, es:
  
   test.Q ​ plant + dev$   test.Q ​ plant + dev$
Line 298: Line 367:
   0       132   0       132
  
-Como hay 26 registros ​sólo recibimos los identificadores de los primeros 20, +De acuerdo con el comentario que encabeza la respuesta, ​hay 26 registros ​en el conjunto de resultados de nuestra consulta; como sólo recibimos los identificadores de los primeros 20 registros, enviamos un nuevo mensaje ​**test.Q**, sin indicar parámetros:
-enviamos un nuevo mensaje ​"test.Q":+
  
   test.Q   test.Q
Line 311: Line 379:
   0       150   0       150
  
 +Tal como habíamos visto más arriba al usar una consulta vacía, el mensaje test.Q no crea una nueva consulta (de ahí que el número de identificación siga siendo '​3'​),​ sino que continúa solicitando más resultados para la consulta actual, si los hay.
  
 Si reiteramos el mensaje **test.Q**, ahora que ya hemos agotado los resultados para la última consulta, obtenemos: Si reiteramos el mensaje **test.Q**, ahora que ya hemos agotado los resultados para la última consulta, obtenemos:
Line 337: Line 406:
 donde //query// es una expresión en el lenguaje de consulta de Malete (véase [[http://​malete.org/​Doc/​Query|Query]]). donde //query// es una expresión en el lenguaje de consulta de Malete (véase [[http://​malete.org/​Doc/​Query|Query]]).
  
-La fila de números que encabeza la respuesta a un mensaje Q tiene el significado 
-siguiente (véase [[http://​malete.org/​Doc/​Protocol|Protocol]]):​ 
  
-  *  número estimado ​de registros ​restantes, incluyendo los que acaban ​de ser leídos +==== Lectura ​de registros ​==== 
-  *  ​número de la consulta, por el cual se la puede referenciar + 
-   ​truncation record id+Además ​de recuperar registros a través de una consulta, podemos también solicitar al servidor Malete registros específicos en base a su id o MFN. Usamos para esto el mensaje **R** (//​read//​). 
 + 
 +En este ejemplo, solicitamos el registro 4: 
 + 
 +  ​test.R*TAB*4 
 +    
 +   W 
 +   ​-9 ​     4@1043 
 +   ​44 ​     Methodology of plant eco-physiology:​ proceedings of the Montpellier Symposium 
 +   ​50 ​     Incl. bibl. 
 +   ​69 ​     Paper on: <​hygrometers><​plant transpiration><​moisture><​water balance>​ 
 +   ​24 ​     <An> Electric hygrometer apparatus for measuring water-vapour loss from plants in the field 
 +   ​26 ​             c1965 
 +   ​30 ​             ap. 247-257 ​    ​billus. 
 +   ​70 ​     GrieveB.J. 
 +   ​70 ​     Went, F.W. 
 + 
 + 
 +Y en este otro ejemplo, solicitamos 2 registros comenzando ​por el 10: 
 + 
 +   ​test.R*TAB*10*TAB*2 
 +    
 +   W 
 +   ​-12 ​    ​10@2950 
 +   ​24 ​     Modifications to the relative turgidity technique with notes on its significance as an index of the internal water status of leaves 
 +   ​25 ​     20 
 +   ​25 ​     30 
 +   ​25 ​     40 
 +   ​26 ​             c1965 
 +   ​30 ​             ap. 331-342 ​    ​billus. 
 +   ​70 ​     Slatyer, R.O. 
 +   ​70 ​     Barrs, H.D. 
 +   ​44 ​     Methodology of plant eco-physiology:​ proceedings of the Montpellier Symposium 
 +   ​50 ​     Incl. bibl. 
 +   ​69 ​     <plant physiology><​moisture><​leaves>​ 
 +   ​-9 ​     11@3306 
 +   ​44 ​     Methodology of plant eco-physiology:​ proceedings of the Montpellier Symposium 
 +   ​50 ​     Incl. bibl. 
 +   ​69 ​     Paper on: <plant physiology><​water balance><​pressure><​hygrometers>​ 
 +   ​24 ​     Measurement of water stress in plants 
 +   ​26 ​             c1965 
 +   ​30 ​             ap. 343-351 ​    ​billus. 
 +   ​70 ​     Kramer, P.J. 
 +   ​70 ​     Brix, H. 
 + 
 + 
 +También podemos leer una secuencia arbitraria de registros, donde los MFN no necesitan ser consecutivos. Por ejemplo, aquí leemos los registros 3, 7 y 9: 
 + 
 +   ​test.R 
 +   ​0*TAB*3 
 +   ​0*TAB*7 
 +   ​0*TAB*9 
 +    
 +   W 
 +   ​-8 ​     3@624 
 +   ​24 ​     Control of conditions in the plant chamber: fully automatic regulation of wind velocity, temperature and relative humidity to conform to microclimatic field conditions 
 +   ​26 ​             c1965 
 +   ​30 ​             ap. 233-238 ​    ​billus. 
 +   ​70 ​     Bosian, G. 
 +   ​44 ​     Methodology of plant eco-physiology:​ proceedings of the Montpellier Symposium 
 +   ​50 ​     Incl. bibl. 
 +   ​69 ​     Paper on: <plant physiology><​moisture><​temperature><​wind><​measurement and instruments><​ecosystems>​ 
 +   ​-9 ​     7@2075 
 +   ​44 ​     Methodology of plant eco-physiology:​ proceedings of the Montpellier Symposium 
 +   ​50 ​     Incl. bibl. 
 +   ​69 ​     Paper on: <plant physiology><​carbon dioxide><​chemical analysis><​photosynthesis>​ 
 +   ​24 ​     Colorimetric determination of CO2 exchange in field and laboratory 
 +   ​26 ​             c1965 
 +   ​30 ​             ap. 291-298 ​    ​billus. 
 +   ​70 ​     SlavÝk, B. 
 +   ​70 ​     Catsky, J. 
 +   ​-7 ​     9@2687 
 +   ​44 ​     Methodology of plant eco-physiology:​ proceedings of the Montpellier Symposium 
 +   ​50 ​     Incl. bibl. 
 +   ​69 ​     Paper on: <plant physiology><​soil>​ 
 +   ​24 ​     <A> New type of porometer for measuring stomatal opening and its use in irrigation studies 
 +   ​26 ​             c1965 
 +   ​30 ​             ap. 325-329 ​    ​billus. 
 + 
 + 
 + 
 +===== Más recursos ===== 
 + 
 +http://​solsoft.co.cr/​foros/​list.php?​2 
 + 
 +http://​sourceforge.net/​project/​showfiles.php?​group_id=11257 
 + 
 + 
 +{{tag>​malete}}
malete_-_primeros_pasos.txt · Last modified: 05/05/2009 00:00 (external edit)