1 |
dpavlin |
237 |
roadmap for the OpenIsis development |
2 |
|
|
|
3 |
|
|
|
4 |
|
|
Mapa para el desarrollo de OpenIsis |
5 |
|
|
|
6 |
|
|
|
7 |
|
|
* status |
8 |
|
|
- read-only engine |
9 |
|
|
- very basic versions of query/formatting |
10 |
|
|
- multiple language bindings: PHP,Perl,Java |
11 |
|
|
- webapps work fine (neither complex queries nor formatting) |
12 |
|
|
|
13 |
|
|
This is the status since summer 2002, one year after the development started. |
14 |
|
|
While multithreading ability would be useful when running inside a Java |
15 |
|
|
servlet engine, webforms do not usually create complex queries, |
16 |
|
|
do not refer to previous results and the graphical layout is anyway |
17 |
|
|
driven by HTML code inside a JSP rather than by formatting |
18 |
|
|
language constructs like "FONTS". |
19 |
|
|
|
20 |
|
|
|
21 |
|
|
* Estado actual |
22 |
|
|
- motor de sólo-lectura |
23 |
|
|
- consultas y formateo aún básicos |
24 |
|
|
- múltiples asociaciones (bindings) en los siguientes lenguajes: PHP, Perl, Java |
25 |
|
|
- aplicaciones web funcionan bien (sin consultas complejas ni formateo) |
26 |
|
|
|
27 |
|
|
Este es el estado desde verano 2002, un año despúes de |
28 |
|
|
haber comenzado el desarrollo. |
29 |
|
|
Mientras que sería útil incluír la habilidad de |
30 |
|
|
manejar multihilos dentro de |
31 |
|
|
un motor de servlets Java, formularios en web |
32 |
|
|
generalmente no requieren la realización de consultas |
33 |
|
|
complejas, no necesitan acceso a resultados anteriores |
34 |
|
|
y el diseño gráfico ya está incluído en el código HTML |
35 |
|
|
dentro de un JSP y no requiere de instrucciones |
36 |
|
|
de formateo como "FONTS". |
37 |
|
|
|
38 |
|
|
|
39 |
|
|
* prepared |
40 |
|
|
- Tcl/Tk GUI client |
41 |
|
|
- Lehmann/Yao index with collation support |
42 |
|
|
- highly efficient multithreading server |
43 |
|
|
|
44 |
|
|
Since midth of 2002, we've been preparing the next step, |
45 |
|
|
which shall lead to a (non web based) graphical user interface |
46 |
|
|
supporting simultaneous write access. |
47 |
|
|
In order to support even very demanding applications, |
48 |
|
|
we sacrificed the simplicity and convenience of direct file access |
49 |
|
|
in favor of a server based approach. |
50 |
|
|
After several tests and studies on how this might be integrated within |
51 |
|
|
the various environments the design phase is mostly finished and |
52 |
|
|
much of the code has already been written. |
53 |
|
|
The index structure is borrowed from Postgres/the GiST. |
54 |
|
|
|
55 |
|
|
|
56 |
|
|
* en preparación |
57 |
|
|
- cliente con interfaz gráfica en Tcl/Tk |
58 |
|
|
- Indice Lehmann/Yao con alfabetización flexible |
59 |
|
|
- servidor multihilos altamente eficiente |
60 |
|
|
|
61 |
|
|
Desde mediados de 2002 hemos preparado el próximo paso |
62 |
|
|
que deberá conducir a una interfaz gráfica (no basada |
63 |
|
|
en web) que posibilite acceeso a escritura simultáneo. |
64 |
|
|
A fin de dar soporte incluso a aplicaciones con altas |
65 |
|
|
exigencias, sacrificamos la simplicidad y |
66 |
|
|
conveniencia de acceso directo a archivos en favor de |
67 |
|
|
un enfoque basado en un servidor. Después de |
68 |
|
|
muchas pruebas y estudios sobre cómo podría ser |
69 |
|
|
integrado en los diferentes entornos, prácticamente |
70 |
|
|
hemos finalizado con la fase del diseño y ya hay mucho |
71 |
|
|
código escrito. La estructura del índice es prestado |
72 |
|
|
de Postgres/the GiST. |
73 |
|
|
|
74 |
|
|
|
75 |
|
|
* aims |
76 |
|
|
- multi-purpose database and server technology |
77 |
|
|
- robustness, performance and scalability |
78 |
|
|
- exploring application areas with tools |
79 |
|
|
|
80 |
|
|
While OpenIsis clearly has it's roots in CDS/ISIS, |
81 |
|
|
we believe the principles of IIF(ISO2709)-based databases to be |
82 |
|
|
very well suited for a wide range of applications, |
83 |
|
|
not only in the bibliographical domain. |
84 |
|
|
|
85 |
|
|
The more programmers feel ISIS is their database of choice, |
86 |
|
|
the more will contribute improvements. |
87 |
|
|
Maybe one day even Koha and Gnuteca will switch over from MySQL/Postgres. |
88 |
|
|
Therefore we strictly focus on an industrial-strength implementation |
89 |
|
|
of the core issues and on making them available to techies in various ways |
90 |
|
|
rather than building elaborated applications offering easy end user access. |
91 |
|
|
|
92 |
|
|
|
93 |
|
|
* Objetivos |
94 |
|
|
- base de datos y tecnología de servidor multipropósito |
95 |
|
|
- robustez, rendimiento y escalabilidad |
96 |
|
|
- exploración de diferentes áreas de aplicación con las herramientas |
97 |
|
|
|
98 |
|
|
Aunque las raíces de OpenIsis provienen de CDS/ISIS, |
99 |
|
|
creemos que los principios de bases de datos |
100 |
|
|
basados en el formato de intercambio de información |
101 |
|
|
(ISO 2709) se adaptan muy bien a una amplia gama de |
102 |
|
|
aplicaciones, no sólo en el ámbito bibliográfico. |
103 |
|
|
|
104 |
|
|
Cuanto más programadores eligan a ISIS como base de |
105 |
|
|
datos, mayores serán los avances contribuidos. Quizas |
106 |
|
|
incluso Koha y Gnuteca se pasen de MySQL/Postgres a |
107 |
|
|
ISIS. Como consecuencia nos hemos concentrado en una |
108 |
|
|
poderosa implementación de las funciones básicas y a |
109 |
|
|
ofrecerlos a desarrolladores de diferentes formas, en |
110 |
|
|
lugar de construir aplicaciones completas para el |
111 |
|
|
usuario final. |
112 |
|
|
|
113 |
|
|
|
114 |
|
|
* variants |
115 |
|
|
- standalone |
116 |
|
|
- client and multithreaded server |
117 |
|
|
- no multi-process writing, single-shot writers possible |
118 |
|
|
|
119 |
|
|
The most simple variant is working for some time now. |
120 |
|
|
In a read-only application, several clients may |
121 |
|
|
access the database simultaneously. (This *may* even work with *one* writer, |
122 |
|
|
but details are system dependent, so don't rely upon this). |
123 |
|
|
|
124 |
|
|
No two writing processes may have overlapping access to the database, |
125 |
|
|
since this would require fine-grained file locking (which has lots of |
126 |
|
|
problems) and rule out agressive caching (which has lots of benefits). |
127 |
|
|
However, where the complete access to the database, from opening to closing, |
128 |
|
|
is strictly serialized by one single lock, multi-process write access |
129 |
|
|
is possible (CGI, PHP). |
130 |
|
|
|
131 |
|
|
The approach most stable yet giving highly parallelized access is a |
132 |
|
|
server acting on behalf of a bunch of clients, as used by every RDBMS. |
133 |
|
|
|
134 |
|
|
|
135 |
|
|
* Variantes |
136 |
|
|
- estación de trabajo independiente |
137 |
|
|
- cliente y servidor multihilos |
138 |
|
|
- sin escritura multi-proceso, funciones de escritura monoestables |
139 |
|
|
|
140 |
|
|
La variante más sencilla ya funciona desde algún |
141 |
|
|
tiempo. Es una aplicación de sólo lectura, varios |
142 |
|
|
clientes pueden acceder una base de datos en forma |
143 |
|
|
simultánea. (Esto incluso *puede* funcionar con *un* |
144 |
|
|
cliente que grabe datos sobre ella, sin embargo los |
145 |
|
|
datalles dependen del sistema de implementación, por |
146 |
|
|
lo que ésto no deberá ser tomado al pie de la letra). |
147 |
|
|
|
148 |
|
|
|
149 |
|
|
* application scenarios |
150 |
|
|
- multi-purpose or customized Tk application |
151 |
|
|
- PHP or Perl webapp readonly or client |
152 |
|
|
- Java webapp standalone, server or client |
153 |
|
|
- multi-protocol C server (Z39.50, HTTP, IMAP) |
154 |
|
|
|
155 |
|
|
The basic GUI version will try to mimik the basic features of WinISIS. |
156 |
|
|
The scripting abilities of Tcl/Tk can be used for customizing applications. |
157 |
|
|
For experienced users facing complex tasks, this could provide a much more |
158 |
|
|
demanding, yet also more flexible alternative to worksheets and printformats. |
159 |
|
|
|
160 |
|
|
As with today's RDBMS, all language environments can act as client to a |
161 |
|
|
database server. Java, due to it's one-multithreaded-process architecture, |
162 |
|
|
may also incorporate the multisession server code locally (via JNI). |
163 |
|
|
The server proper is not limited to it's native database access protocol, |
164 |
|
|
but may support a host of session based TCP protocols, |
165 |
|
|
e.g. Z39.50 using the Yaz toolkit. |
166 |
|
|
|
167 |
|
|
|
168 |
|
|
* Escenarios de aplicación |
169 |
|
|
- aplicaciones multipropósito o a medida con Tk |
170 |
|
|
- aplicaciones web en PHP o Perl de sólo-lectura o clientes |
171 |
|
|
- aplicaciones Java independientes, cliente o servidor |
172 |
|
|
- servidor multi-protocolo en C (Z39.50, HTTP, IMAP) |
173 |
|
|
|
174 |
|
|
La versión con interfaz gráfica reimplementará las |
175 |
|
|
características básicas de WinISIS. La facilidad de |
176 |
|
|
Tcl/Tk para integrar scripts puede aprovecharse para |
177 |
|
|
aplicaciones a medida. Para usuarios experimentados |
178 |
|
|
que se enfrentan a tareas complejas, ésto es una |
179 |
|
|
alternativa más exigente, pero también más flexible |
180 |
|
|
que hojas de trabajo y formatos de impresión (PFT). |
181 |
|
|
|
182 |
|
|
|
183 |
|
|
* server architecture |
184 |
|
|
- multithreading - multisession |
185 |
|
|
- various embedded languages possible |
186 |
|
|
- usually not itself client |
187 |
|
|
|
188 |
|
|
The server opens one session for every client to hold references to previous |
189 |
|
|
query results. All requests on behalf of one client are serialized. |
190 |
|
|
As a consequence, IO and memory, which are also bound to sessions, |
191 |
|
|
can be accessed safely within the server without additional locking. |
192 |
|
|
|
193 |
|
|
The basic server language, yet another PFT-lookalike, can be augmented |
194 |
|
|
by embedded versions of the several bindings similar to the well known |
195 |
|
|
PASCAL formatting exits. While the server could also itself access remote |
196 |
|
|
databases, this is not recommended since it may hamper availability. |
197 |
|
|
|
198 |
|
|
|
199 |
|
|
* Arquitectura del servidor |
200 |
|
|
- multihilos - multisessión |
201 |
|
|
- posibilidad de usar varios lenguajes incrustados |
202 |
|
|
- generalmente no es un cliente en sí |
203 |
|
|
|
204 |
|
|
El servidor abre una sessión para cada cliente para |
205 |
|
|
almacenar referencias a los resultados obtenidos por |
206 |
|
|
consultas anteriores. Todas las solicitudes de un |
207 |
|
|
cliente se serializan, como consecuencia el |
208 |
|
|
acceso a los archivos y la memoria también se ligan a |
209 |
|
|
una sesión y pueden accederse en forma segura dentro |
210 |
|
|
del servidor sin bloquéo adicional. |
211 |
|
|
|
212 |
|
|
El lenguaje del servidor es solamente otro tipo de PFT |
213 |
|
|
y puede aumentarse incrustando versiones de las |
214 |
|
|
diferentes asociaciones similar a las conocidas |
215 |
|
|
salidas de formato de Isispascal. Mientras que el |
216 |
|
|
servidor también podría acceder bases de datos |
217 |
|
|
remotas, ésto no se recomiendo ya que puede haber |
218 |
|
|
inconvenientes con la avabilidad. |
219 |
|
|
|
220 |
|
|
|
221 |
|
|
* client architecture |
222 |
|
|
- TCP or local sockets |
223 |
|
|
- asynchronous in event based environment (GUI,server) |
224 |
|
|
- synchronous else |
225 |
|
|
|
226 |
|
|
The client connects to the server by means of TCP or the faster Unix sockets. |
227 |
|
|
The basic programmatic interface will, after sending a request to the server, |
228 |
|
|
wait until the response is available completely. In some environments like |
229 |
|
|
the Tk GUI however, it is possible for the client to stay responsive while |
230 |
|
|
waiting, display some progress bar and then show results as they arrive. |
231 |
|
|
|
232 |
|
|
|
233 |
|
|
* Arquitectura de clientes |
234 |
|
|
- TCP o sockets locales |
235 |
|
|
- entorno asincrónico basado en eventos (GUI, servidor) |
236 |
|
|
- otros sincrónicos |
237 |
|
|
|
238 |
|
|
El cliente se contecta al servidor mediante TCP o los |
239 |
|
|
sockets de Unix que son más rápidos. La interfaz de |
240 |
|
|
programación básica espera -después de haber enviado |
241 |
|
|
una solicitud al servidor- hasta que la respuesta esté |
242 |
|
|
disponible en forma completa. Sin embargo algunos |
243 |
|
|
entornos como la interfaz gráfica de Tk pueden incluír |
244 |
|
|
algún tipo de barra de progreso y mostrar los |
245 |
|
|
resultados en la medida que ingresan a fin de mantener |
246 |
|
|
el cliente en espera. |
247 |
|
|
|
248 |
|
|
|
249 |
|
|
* relation to technologies |
250 |
|
|
- use pros, avoid cons |
251 |
|
|
- bring ISIS power to other techniques |
252 |
|
|
- but stay independent of single concept like XML |
253 |
|
|
|
254 |
|
|
There is no single perfect programming environment for all kinds of tasks |
255 |
|
|
and all sorts of programmers. In order to support the widest possible |
256 |
|
|
range of techniques, we must not tie OpenIsis to any particular one. |
257 |
|
|
|
258 |
|
|
Using C++, for example, causes problems when linked into another environment |
259 |
|
|
which fails to properly call constructors and destructors or was compiled |
260 |
|
|
with another version of "io.h". While relying on a C++ based XML-parser is |
261 |
|
|
perfectly ok for a given application, it would not be such a good idea for |
262 |
|
|
a multi-purpose library. Even C-runtime features must be used with caution. |
263 |
|
|
|
264 |
|
|
|
265 |
|
|
* Relación con tecnologías |
266 |
|
|
- aprovechar los pros, evitar los contra |
267 |
|
|
- llevar el poder de ISIS a otras tecnologías |
268 |
|
|
- pero permanecer independiente de conceptos aislados como XML |
269 |
|
|
|
270 |
|
|
No hay un entorno de programación perfecto para todo |
271 |
|
|
tipo de tareas y todos los programadores. Para dar |
272 |
|
|
soporte al rango más amplio de tecnologías no debemos |
273 |
|
|
atar a OpenIsis a ninguna en particular. |
274 |
|
|
|
275 |
|
|
Usando C++ por ejemplo, aparecen problemas cuando se |
276 |
|
|
enlazan en otro entorno que falla al llamar |
277 |
|
|
correctamente a constructures y destructores o cuando |
278 |
|
|
ha sido compilado con otra versión de "io.h". Mientas |
279 |
|
|
que un parser XML basado en C++ es perfectamente |
280 |
|
|
factible en una aplicación dada, no sería tan bueno |
281 |
|
|
para una librería multi-propósito. Incluso |
282 |
|
|
características del librería de runtime de C (libc) |
283 |
|
|
deben emplearse con cautela. |
284 |
|
|
|
285 |
|
|
|
286 |
|
|
* Java features |
287 |
|
|
- works well in servlet engines |
288 |
|
|
- full-fledged language with well-designed utilities |
289 |
|
|
- mature and portable multithreading support |
290 |
|
|
- JVM license problems, buggy GUI toolkits |
291 |
|
|
|
292 |
|
|
The various improvements over the C++/Smalltalk heritage made Java |
293 |
|
|
the language of choice for object oriented programming in large-scale |
294 |
|
|
software projects. Servlet engines are the most elaborate environment |
295 |
|
|
for complex web-publishing tasks. |
296 |
|
|
|
297 |
|
|
Unfortunately, the GUI toolkits AWT and Swing are poorly designed |
298 |
|
|
and implemented. The Sun JVM and JDK are subject to export restrictions, |
299 |
|
|
and the free JVMs are not very mature. |
300 |
|
|
|
301 |
|
|
|
302 |
|
|
* Características de Java |
303 |
|
|
- funciona bien en motores servlet |
304 |
|
|
- lenguaje completo con funciones bien diseñadas |
305 |
|
|
- soporte para multihilos maduro y portable |
306 |
|
|
- problemas con la licencia, toolkits GUI deficientes (AWT) |
307 |
|
|
|
308 |
|
|
Las diferentes mejores sobre la herencia de |
309 |
|
|
C++/Smalltalk hacen de Java el lenguaje de elección |
310 |
|
|
para programación orientada a objetas en proyectos de |
311 |
|
|
software de gran escala. Motores servlets ofrecen el |
312 |
|
|
entorno más elaborado para tareas complejas en la |
313 |
|
|
publicación web. |
314 |
|
|
|
315 |
|
|
Desafortunadamente los toolkits de interfaces gráficas |
316 |
|
|
AWT y Swing están pobremente diseñados e |
317 |
|
|
implementadas. La máquina virtual Java y JDK de |
318 |
|
|
Sun están sujetas a restricciones en cuanto a su |
319 |
|
|
exportación y otras máquinas virtuales Java no están |
320 |
|
|
demasiado maduras. |
321 |
|
|
|
322 |
|
|
|
323 |
|
|
* Java application |
324 |
|
|
- multithreaded network application with in-process server |
325 |
|
|
- synchronous client in pure Java |
326 |
|
|
- integration based on JDBC or "enterprise beans" |
327 |
|
|
|
328 |
|
|
The database frontend for "Institut der Didaktik der Mathematik" is a simple |
329 |
|
|
example how to take advantage of HTTP session handling and javax.mail classes |
330 |
|
|
to create an order system. Remote database access can be implemented in pure |
331 |
|
|
Java (like Oracle's "thin client"), however, asynchronous communication is |
332 |
|
|
not supported by java.net.Socket. The wealth of existing Java based solutions |
333 |
|
|
might be basis for integration e.g. with SOAP. |
334 |
|
|
|
335 |
|
|
|
336 |
|
|
* Uso de Java |
337 |
|
|
- aplicación multihilos en red con servidor de procesamiento interno |
338 |
|
|
- clientes sincrónicos en Java puro |
339 |
|
|
- integración basada en JDBC o "enterprise beans" |
340 |
|
|
|
341 |
|
|
El interfaz de base de datos para el "Instituto |
342 |
|
|
de didáctica de la matemática" es un ejemplo simple de |
343 |
|
|
cómo se puede aprovechar las ventajas de un handling |
344 |
|
|
de sesión HTTP y de clases javax.mail para crear un |
345 |
|
|
sistema de solicitud bibliográfica. Se puede |
346 |
|
|
implementar el acceso a bases de datos remotas en Java |
347 |
|
|
puro (como el "cliente liviano" de Oracle), sin |
348 |
|
|
embargo java.net.Socket no ofrece soporte para |
349 |
|
|
comunicación asincrónica. La abundancia de soluciones |
350 |
|
|
existentes basadas en Java pueden ofrecer una base |
351 |
|
|
para una mayor integración, por ejemplo con SOAP. |
352 |
|
|
|
353 |
|
|
|
354 |
|
|
* Tcl/Tk features |
355 |
|
|
- best portable GUI toolkit |
356 |
|
|
- very tight integration with ISIS |
357 |
|
|
- easy scripting for customization |
358 |
|
|
- not too widespread use |
359 |
|
|
|
360 |
|
|
As a GUI toolkit, Tk is unparalleled in portability and ease of use. |
361 |
|
|
While it can also be used as PerlTk, PythonTk and even JavaTk, |
362 |
|
|
Tcl is Tk's native language and, among the mentioned, the most easy to learn. |
363 |
|
|
Since Tcl was conceived as Tool Command Language, features of the |
364 |
|
|
C library are easily and efficiently made accessible. |
365 |
|
|
While Tcl is twelve years old and very mature, it is not that well known |
366 |
|
|
and does not offer such an enormous amount of third-party libraries to use. |
367 |
|
|
|
368 |
|
|
|
369 |
|
|
* Características de Tcl/Tk |
370 |
|
|
- el mejor juego de herramientas GUI multiplataforma |
371 |
|
|
- integración muy estrecha con ISIS |
372 |
|
|
- scripting sencillo para requerimientos particulares |
373 |
|
|
- uso no demasiado extendido |
374 |
|
|
|
375 |
|
|
Como toolkit de interfaz gráfica, Tk no tiene igual en |
376 |
|
|
cuanto a portabilidad y facilida de uso. Mientras que |
377 |
|
|
también puede ser usado como PerlTk, PythonTk e |
378 |
|
|
incluso JavaTk, Tcl es el lenguaje nativo de Tk y |
379 |
|
|
entre los mencionados, el de más facil aprendizaje. |
380 |
|
|
Debido a que Tcl fué concebido como un lenguaje |
381 |
|
|
de control de herramientas, se accede con facilidad y eficiencia a |
382 |
|
|
las características de la librería en C. Mientras que |
383 |
|
|
Tcl ya tiene doce años y es muy maduro, no es tan |
384 |
|
|
conocido y no ofrece una cantidad tan enorme de |
385 |
|
|
librerías adicionales. |
386 |
|
|
|
387 |
|
|
|
388 |
|
|
* Tcl/Tk application |
389 |
|
|
- graphical user interface |
390 |
|
|
- asynchronous singlethreaded client |
391 |
|
|
- integrated in server |
392 |
|
|
|
393 |
|
|
Tcl's most important application is to provide a portable Tk-based GUI, |
394 |
|
|
which, due to it's nature as a script, can be tailored to the needs of |
395 |
|
|
each library or augmented by additional functionality like Z39.50 |
396 |
|
|
(indexdata wrote a Tcl/Tk client based on Yaz). |
397 |
|
|
This GUI provides synchronous access to local databases and asynchronous |
398 |
|
|
remote access, however, runs itself in a single thread. |
399 |
|
|
|
400 |
|
|
Tcl is also well suited as a safe server extension language, |
401 |
|
|
with one interpreter per session. |
402 |
|
|
|
403 |
|
|
|
404 |
|
|
* Uso de Tcl/Tk |
405 |
|
|
- interfaz de usuario gráfica |
406 |
|
|
- cliente asincrónico de proceso simple (sólo hilo) |
407 |
|
|
- integrado con el servidor |
408 |
|
|
|
409 |
|
|
La aplicación de Tcl más importante es de proveer una |
410 |
|
|
interfaz gráfica portable y basada en Tk que, debido a |
411 |
|
|
su naturaleza de script, puede ser hecho a medida de |
412 |
|
|
cada biblioteca o aumentada con funcionalidades |
413 |
|
|
adicionales como Z39.50 (indexdata escribió un |
414 |
|
|
cliente Tcl/Tk basado en Yaz). Esta interfaz gráfica |
415 |
|
|
provee acceso sincrónico a bases de datos locales y |
416 |
|
|
acceso remoto asincrónico, sin embargo corre en sí |
417 |
|
|
mismo como un sólo hilo. |
418 |
|
|
|
419 |
|
|
|
420 |
|
|
* Perl features |
421 |
|
|
- pathologically eclectic rubbish lister |
422 |
|
|
- best for the lazy, impatient and hubristic |
423 |
|
|
- unreadable one-way code |
424 |
|
|
|
425 |
|
|
The experienced programmers preferred quick-and-dirty language. |
426 |
|
|
There is rarely a situation in life for which not somebody wrote some |
427 |
|
|
Perl Module. Usually, however, you can use it but not read it. |
428 |
|
|
|
429 |
|
|
|
430 |
|
|
* Características de Perl |
431 |
|
|
- "pathologically eclectic rubbish lister" |
432 |
|
|
- lo mejor para vagos, impacientes y presuntuosos |
433 |
|
|
- código unidireccional ilegible |
434 |
|
|
|
435 |
|
|
El lenguaje rápido-y-sucio preferido por programadores |
436 |
|
|
experimentales. Se encuentra raramente una ocasión en |
437 |
|
|
la vida donde alguién NO haya escrito un módulo Perl. |
438 |
|
|
Sin embargo generalmente lo puede usar, pero no leerlo. |
439 |
|
|
|
440 |
|
|
Nota1: (Listador de tonterías patológicamente eclécticas). |
441 |
|
|
|
442 |
|
|
|
443 |
|
|
* Perl application |
444 |
|
|
- converting |
445 |
|
|
- reports |
446 |
|
|
- integration |
447 |
|
|
- cgi |
448 |
|
|
|
449 |
|
|
You wouldn't start writing a complex application in Perl, would you? |
450 |
|
|
One year later it's nearly impossible to go any further. |
451 |
|
|
However, behind and between the scenes Perl is as useful as for small |
452 |
|
|
CGI based web frontends. |
453 |
|
|
|
454 |
|
|
|
455 |
|
|
* Uso de Perl |
456 |
|
|
- conversión |
457 |
|
|
- informes |
458 |
|
|
- integración |
459 |
|
|
- cgi |
460 |
|
|
|
461 |
|
|
Ustedes no comenzarían escribir una aplicacion |
462 |
|
|
compleja en Perl, ¿no es cierto? |
463 |
|
|
Un año más tarde es casi imposible de ir más allá. |
464 |
|
|
Sin embargo, atrás y entre escenas Perl es tan práctico |
465 |
|
|
para pequeños cgi-frontends para web. |
466 |
|
|
|
467 |
|
|
|
468 |
|
|
* PHP features |
469 |
|
|
- easy for beginners |
470 |
|
|
- commonly available on servers |
471 |
|
|
- with Apache, runs multiprocess |
472 |
|
|
|
473 |
|
|
|
474 |
|
|
* Características de PHP |
475 |
|
|
- fácil para principiantes |
476 |
|
|
- generalmente disponible en los servidores |
477 |
|
|
- multiproceso con Apache |
478 |
|
|
|
479 |
|
|
|
480 |
|
|
* PHP application |
481 |
|
|
- lightweight web apps |
482 |
|
|
- integration with existing PHP code |
483 |
|
|
- for writing, should be used as client |
484 |
|
|
|
485 |
|
|
|
486 |
|
|
* Uso de PHP |
487 |
|
|
- Aplicaciones web livianas |
488 |
|
|
- integración con código PHP pre-existente |
489 |
|
|
- para escritura, debe ser utilizado como cliente |
490 |
|
|
|
491 |
|
|
|
492 |
|
|
* Mail and MIME |
493 |
|
|
- mailheaders easily stored as ISIS records |
494 |
|
|
- IMAP queries similar to Type-1/ISIS |
495 |
|
|
- well established concept for handling multimedia |
496 |
|
|
|
497 |
|
|
MIME is not exactly a programming language, but an environment |
498 |
|
|
worthwhile to support. While media attached to an ISIS DB is locally |
499 |
|
|
best stored in separate files (just like RDBMS store their "BLOBS"), |
500 |
|
|
it's type and attributes should be described according to the MIME schema. |
501 |
|
|
Even where bibliographical rules for such descriptions apply, |
502 |
|
|
MIME is best suited to give some client app hints on how to display |
503 |
|
|
or further process such data. |
504 |
|
|
|
505 |
|
|
In the long term one could envision basing the cyrus IMAP server on |
506 |
|
|
ISIS to hold the metadata. |
507 |
|
|
|
508 |
|
|
|
509 |
|
|
* Mail y MIME |
510 |
|
|
- Encabezamientos mail se almacenan fácilmente como registros ISIS |
511 |
|
|
- consultas IMAP tienen similitudes con consultas tipo-1/ISIS |
512 |
|
|
- concepto establecido para manejar multimedia |
513 |
|
|
|
514 |
|
|
MIME no es exactamente un lenguaje de programación, |
515 |
|
|
pero un entorno que merece soporte. Mientras que es |
516 |
|
|
preferible almacenar archivos multimedia atachados |
517 |
|
|
localmente a una base de datos ISIS en forma separada |
518 |
|
|
(justo como las bases relacionales almacenan sus "BLOBS"), |
519 |
|
|
el tipo y atributos de estos archivos |
520 |
|
|
deberían describirse acorde al esquema MIME. Incluso |
521 |
|
|
cuando se aplican reglas bibliográficas en estas |
522 |
|
|
descripciones, MIME ofrece la mejor forma de informar |
523 |
|
|
a las aplicaciones cliente como visualizar o procesar |
524 |
|
|
estos datos. |
525 |
|
|
|
526 |
|
|
A largo plazo se podría enfocar de basar el |
527 |
|
|
servidor IMAP cyrus en ISIS para almacenar los metadatos. |
528 |
|
|
|
529 |
|
|
|
530 |
|
|
* XML |
531 |
|
|
- structures easily flattened to ISIS records |
532 |
|
|
- compact storage, fast access |
533 |
|
|
- can search for all attributes |
534 |
|
|
|
535 |
|
|
During the last years virtually every software "moved" to XML, |
536 |
|
|
actually putting fancy new cloths on their same old data. |
537 |
|
|
Since bibliographers were among the early supporters of XML's anchestor |
538 |
|
|
SGML it is not surprising that these cloths can easily be stripped off |
539 |
|
|
in order to store structures whose XML representation is available |
540 |
|
|
into an ISIS DB. Each opening tag produces a field with subfields |
541 |
|
|
holding it's attributes. Fields representing the childs are followed |
542 |
|
|
by a field denoting the closing tag. |
543 |
|
|
|
544 |
|
|
|
545 |
|
|
* XML |
546 |
|
|
- estructura que se adapta fácilmente a registros ISIS |
547 |
|
|
- almacenamiento compacto, acceso rápido |
548 |
|
|
- permite consultas por todos los atributos |
549 |
|
|
|
550 |
|
|
Durante los ultimos años practicamente todo "se movió" |
551 |
|
|
hacia XML colocando bonitas ropas nuevas sobre los |
552 |
|
|
mismos datos viejos. Debido a que entre los primeros |
553 |
|
|
en impulsar SGML -el ancestro de XML- estuvieron |
554 |
|
|
bibliógraficos, no es de sorprender que estas ropas |
555 |
|
|
pueden quitarse facilmente para almacenar datos en |
556 |
|
|
bases de datos ISIS, mientras que las estructuras XML |
557 |
|
|
siguen accesibles. Cada etiqueta de apertura genera un |
558 |
|
|
campo con subcampos que almacenan sus atributos. Los |
559 |
|
|
nodos hijos se representan en campos a los que le |
560 |
|
|
sigue un campo que significa las etiquetas de cierre. |
561 |
|
|
|
562 |
|
|
|
563 |
|
|
* supported platforms |
564 |
|
|
- linux fully supported |
565 |
|
|
- other unixes incl. MacOS X |
566 |
|
|
- windows w/o multithreading |
567 |
|
|
|
568 |
|
|
As of today, linux/intel is the ideal platform. |
569 |
|
|
On other unixes, we may have to deal with big endian processors |
570 |
|
|
and support for POSIX threads may vary. |
571 |
|
|
Windows 9x/Me lacks sufficient multithreading support. |
572 |
|
|
NT4/00/XP has the necessary calls, but difficult to use. |
573 |
|
|
|
574 |
|
|
|
575 |
|
|
* Soporte para plataformas |
576 |
|
|
- soporte completo para linux |
577 |
|
|
- otros unixes incluyendo MacOS X |
578 |
|
|
- windows sin multi-procesamiento |
579 |
|
|
|
580 |
|
|
Actualmente linux/intel representa la plataforma |
581 |
|
|
ideal. Sobre otros unixes tenemos que manejar |
582 |
|
|
procesadores big endian y el soporte para subprocesos |
583 |
|
|
POSIX puede variar. Windows 9x/Me carece de suficiente |
584 |
|
|
soporte para multihilos. NT4/00/XP incluya las |
585 |
|
|
llamadas necesarias, pero son dificiles de usar. |
586 |
|
|
|
587 |
|
|
|
588 |
|
|
* proposed file formats |
589 |
|
|
- plaintext MST |
590 |
|
|
- XRF 4/2, 5/3, 7/5 or as seems fit |
591 |
|
|
|
592 |
|
|
Besides the legacy MST and XRF, OpenIsis will support additional formats. |
593 |
|
|
A plaintext MST is very similar to ISO2709, representing a record as |
594 |
|
|
a series of lines. There are neither limits on field length, record length |
595 |
|
|
or database size nor any alignment or byte order incompatibilities. |
596 |
|
|
In most cases it will even occupy slightly less space. |
597 |
|
|
|
598 |
|
|
The record length should be stored together with the position in the XRF |
599 |
|
|
instead of the MST, so access requires less IO and the number of bytes |
600 |
|
|
used for position/length can be allocated as needed. |
601 |
|
|
|
602 |
|
|
|
603 |
|
|
* Formatos de archivo propuestos |
604 |
|
|
- archivo maestro plano (MST) |
605 |
|
|
- archivo de referencias cruzadas (XRF) 5/3, 7/5 o como parezca ajustarse |
606 |
|
|
|
607 |
|
|
Mas allá de los formatos heredados MST y XRF, OpenIsis |
608 |
|
|
ofrecerá soporte a formatos adicionales. Un MST en un |
609 |
|
|
archivo plano es muy similar a ISO 2709, representando |
610 |
|
|
un registro como una serie de lineas. Tampoco hay |
611 |
|
|
limitacion de longitud de campo, longitud de registro |
612 |
|
|
o tamaño de la base de datos, ni alineamiento o |
613 |
|
|
incompatibilidades de orden de bytes. En muchos casos, |
614 |
|
|
incluso ocuparía un espacio levemente menor. |
615 |
|
|
|
616 |
|
|
|
617 |
|
|
* application projects |
618 |
|
|
- common serials database |
619 |
|
|
- commercial applications (web shop and content management) |
620 |
|
|
- several web based |
621 |
|
|
|
622 |
|
|
|
623 |
|
|
* Proyectos de aplicaciones |
624 |
|
|
- base de datos de publicaciones periódicas |
625 |
|
|
- aplicaciones comerciales (comercios en-línea y gestión de contenidos) |
626 |
|
|
- varios basados sobre aplicaciones web |
627 |
|
|
|
628 |
|
|
|
629 |
|
|
* roadmap 2003 |
630 |
|
|
- 02: finish index |
631 |
|
|
- winter: standalone GUI (HTML formatting) |
632 |
|
|
- spring: server with GUI client |
633 |
|
|
- Java and Perl overhaul |
634 |
|
|
- reworked formatting |
635 |
|
|
- full Type-1 queries |
636 |
|
|
|
637 |
|
|
|
638 |
|
|
* Objetivos para 2003 |
639 |
|
|
- febrero: terminar índice |
640 |
|
|
- marzo: aplicación GUI para estaciones de trabajo independiente (sobre formato HTML) |
641 |
|
|
- primavera: servidor con cliente GUI |
642 |
|
|
- revisión de las asociaciones con Java y Perl |
643 |
|
|
- retrabajar formateo |
644 |
|
|
- soporte completo para consultas tipo 1 |
645 |
|
|
|
646 |
|
|
|
647 |
|
|
--- |
648 |
|
|
$Id: Cuba.txt,v 1.6 2003/02/10 17:15:39 kripke Exp $ |