home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / kingfisher / kingfisher-2.0beta / kingfisher.doc < prev    next >
Text File  |  1994-03-29  |  17KB  |  430 lines

  1. KingFisher 2.0ß3
  2. Copyright © 1992-1994 by Udo Schuermann
  3. All rights reserved
  4.  
  5.  
  6.  
  7. 0  NOTICE -----------------------------------------------------------------
  8.  
  9. This document is a preliminary copy that describes some features of
  10. KingFisher 2.0 that may not all be functional.  Please be aware of the fact
  11. that KingFisher 2.0 is a BETA release at this time and not a finished
  12. product by any stretch of the imagination.  Much, MUCH, *MUCH* more is
  13. coming!
  14.  
  15.  
  16.  
  17. 1  INTRODUCTION -----------------------------------------------------------
  18.  
  19. Despite rapid growth of KingFisher Release 1 (1.0 through 1.40) KingFisher
  20. has retained largely the same interface.  It was my first serious project
  21. for the Amiga, through which I not only learned how to program the machine,
  22. but also how to listen to users and work towards a more flexible solution
  23. that offers the necessary growth potential.
  24.  
  25. The result of this effort is KingFisher 2.0, not just a rewrite of the
  26. original, but a complete redesign of the underlying concepts.  This makes
  27. KingFisher 2.0 a significantly more powerful product.  Alas, it has also
  28. grown somewhat in complexity.
  29.  
  30. This document attempts to outline the concepts behind KingFisher 2.0 to
  31. give you the necessary understanding of what KingFisher has grown up to
  32. become.
  33.  
  34.  
  35.  
  36. 2  FEATURES ---------------------------------------------------------------
  37.  
  38. Before we dwell on the implementation details, let us examine what this new
  39. KingFisher can do for you:
  40.  
  41. 1. You get a fully (proportional) font-sensitive GadTools interface that
  42.    runs in a window on the default public screen.  You can resize this
  43.    window to your heart's content,
  44.  
  45. 2. You can run two or more copies of KingFisher, run them side-by-side in
  46.    their own windows, use one to search, and the other to examine data,
  47.  
  48. 3. You can access more than just a single database!  You can now view the
  49.    Original Fred Fish database (Disks 1 through 1000) then switch to the
  50.    Aminet Database, then select your club's disk collection.  Run two
  51.    copies of KingFisher and search one database while viewing another, or
  52.    search two databases simultaneously!
  53.  
  54. Do you like it so far?
  55.  
  56. 4. KingFisher now supports Fred Fish's new field-oriented database format
  57.    (which I helped design) so you can perform relational searches based on
  58.    only specific fields,
  59.  
  60. 5. Were the original six search expressions not enough for you?  Would you
  61.    have liked to maintain a larger set of expressions to reference later?
  62.    KingFisher now supports a list of search expressions whose size limit is
  63.    yours to set and revise as you like,
  64.  
  65. 6. Did you ever wish you could easily scan through all fish that a search
  66.    revealed without having to perform lengthy backward searches?  This is
  67.    now a reality with Search Sets, any number of which you can even save to
  68.    disk and retrieve at later times!
  69.  
  70. Sounding better than ever?
  71.  
  72. 7. Avoid finding, over and over again, programs you already have, or ones
  73.    which you already have evaluated, or are not interested in.  KingFisher
  74.    2.0 lets you mark fish in the database so that searches will never find
  75.    them if you want them to stay hidden.
  76.  
  77. 8. Parlez-vous Français?  Sprechen Sie Deutsch?  Habla Español?  Parle
  78.    Italiano?  KingFisher is fully localized, ready to speak YOUR language.
  79.    Change KingFisher's language to one you don't know and learn a foreign
  80.    language.  Amaze your friends!  Amaze yourself!  ;-)
  81.  
  82. 9. Localized, context sensitive AmigaGuide®-based help and information is
  83.    just a keystroke away.
  84.  
  85. Can't wait to see this marvel in action?  Then read on:
  86.  
  87.  
  88.  
  89. 3  CLIENT-SERVER ARCHITECTURE ---------------------------------------------
  90.  
  91. KingFisher 2.0 is no longer a single, self-contained application.  As such,
  92. it is not enough to start a single program, use it, and shut it down again.
  93. At the heart of this new-found flexibility lies a concept known as the
  94. Client-Server Model.  The concept is simple:
  95.  
  96. One program (the Server) handles access to the databases and responds to
  97. access requests from one or more clients.  The clients need to know nothing
  98. of the database format itself, and the server needs to know nothing about
  99. how to present the data.  Each is highly specialized and can therefore be
  100. more expert in its field.
  101.  
  102. The "KingFisher 2.0 Database Server" is the server application which must
  103. run in the background.  The program will consume about 50K of memory while
  104. it is running.  You can close its status window if it bothers you and it
  105. will open it again only when it wants to inform you of something.
  106.  
  107. You can then run one or more client applications which will connect to the
  108. server and let you access the database.  The "KingFisher 2.0 Package" comes
  109. with several such client applications in addition to the ever-needed
  110. server:
  111.  
  112. 1. KingFisher 2.0
  113.    This is the GadTools interface which we introduced above.  Documentation
  114.    for KingFisher will be given in another place.
  115.    NOTE: As of the BETA 2 release, KingFisher will start the KFServer if it
  116.          is not running; this requires that the KFServer program is in the
  117.          default directory (as far as KingFisher is concerned.)
  118.  
  119. 2. RexxFisher 1.0
  120.    This is an ARexx interface to the Server through which a BBS can access
  121.    the server.  Run multiple copies of RexxFisher to offer multiple BBS
  122.    users access to the database!
  123.  
  124. 3. CLIent 1.1
  125.    A CLI-based interface for the Server.  It is useful for simple lookup
  126.    and testing.  It performs no formatting on the data retrieved from the
  127.    server, so it is not especially pretty to use.
  128.         Registered users will obtain source code to this program!
  129.  
  130. 4. ReOrder 1.1
  131.    A CLI-based tool which allows you to copy a range of records from one
  132.    KingFisher database to another.  Multiple invocations could copy ranges
  133.    of fish from multiple databases to produce a new database.
  134.         Registered users will obtain source code to this program!
  135.  
  136.  
  137. Developers:  Contact the author about development of additional client
  138.              programs.  A MUI®-based client is especially desired.
  139.  
  140.  
  141.  
  142. 4  STARTING KINGFISHER ----------------------------------------------------
  143.  
  144. You must first start the KingFisher 2.0 Server (KFServer); without it,
  145. KingFisher cannot present you with a database.  The Server will open a
  146. default database and then wait for clients to connect.  It will also open a
  147. status display window.  You can close this window with the close gadget;
  148. this does not shutdown the server.  See below for ways to shutdown the
  149. server.
  150.  
  151. NOTE: If the Server cannot open its default database, it will shutdown
  152. again.  The default database is described by the contents of the
  153. KFServer.kfdb file.  It must be named that, and its contents should be
  154. something along these lines:
  155.  
  156.     # KingFisher 2.0 Server preferences
  157.     #
  158.     # Database is known to clients as
  159.     database-name=Frozen Fish Database
  160.     
  161.     # Database Sections (StartEntry,EndEntry,Filename)
  162.     section=00000,00999,FrozenFish1:FrozenFish01.data
  163.     section=01000,01999,FrozenFish1:FrozenFish02.data
  164.     section=02000,02999,FrozenFish1:FrozenFish03.data
  165.     section=03000,03999,FrozenFish1:FrozenFish04.data
  166.     section=04000,04999,FrozenFish1:FrozenFish05.data
  167.     section=05000,05999,FrozenFish1:FrozenFish06.data
  168.     section=06000,06999,FrozenFish1:FrozenFish07.data
  169.     section=07000,07999,FrozenFish1:FrozenFish08.data
  170.     section=08000,08999,FrozenFish1:FrozenFish09.data
  171.     section=09000,09999,FrozenFish1:FrozenFish10.data
  172.     
  173.     # Main index is to be stored ... (OnDisk or InRam)
  174.     index=inram
  175.     index-increment=100
  176.     index-name=FishTest:FrozenFish.Index
  177.     
  178.     # Field index
  179.     # This one's not being used at this time
  180.     field-index-field=name
  181.     field-index-name=FishTest:FrozenFish-Name.Index
  182.     
  183.     # THE FOLLOWING WILL ONLY WORK IN THE DEFAULT FILE,
  184.     # i.e. THE 'KFSERVER.KFDB' FILE:
  185.     #
  186.     # Maximum number of clients permitted
  187.     maxclients=2
  188.     
  189.     # Output window
  190.     window=CON://640/200/KingFisher 2.0 Server Messages/AUTO
  191.     
  192.     # How talkative shall the server be?
  193.     # MUTE, TERSE, QUIET, CHATTY, DEBUG
  194.     verbosity=MUTE
  195.  
  196. You can verify that the Server is functional by running it again with the
  197. parameter STATUS from the CLI:
  198.  
  199.     kfserver status
  200.  
  201. This will print a technical status detailing all open databases, clients
  202. that are connected to the server, some traffic information on the clients,
  203. etc.  Try redirecting this output to a file and scan it with MORE or an
  204. editor of your choice.  Lots of hardcore techie information there!
  205.  
  206. After the server is running, you can run KingFisher from the CLI:
  207.  
  208.     KingFisher
  209.  
  210. or from the Workbench.
  211.  
  212.  
  213.  
  214.  
  215. 5  SEARCH EXPRESSIONS -----------------------------------------------------
  216.  
  217. KingFisher 2.0 supports search expressions that have expanded on the ones
  218. available in KingFisher Release 1.  As such, you now specify not single
  219. substrings to be located but "real" expressions.  An expression consists of
  220. a field name, a comparison operator, and a substring:
  221.  
  222.     description $ aquarium
  223.  
  224. This specifies that the field "description" is to be checked if it contains
  225. ($) the substring "aquarium."  Any record in the database that matches this
  226. value will cause KingFisher to stop searching.
  227.  
  228.     description$aquarium & name$fish
  229.  
  230. This matches all records whose description-field contains "aquarium" and
  231. (&) whose name-field contains "fish."  The use of parentheses is not needed
  232. here (although you are welcome to use them.)
  233.  
  234.     description$aquarium & name$fish | name$aqua
  235.  
  236. Here is where parentheses must come into play.  Without parentheses,
  237. KingFisher will evaluate the expression left-to-right, effectively using
  238. the following order (exemplified at hand of parentheses):
  239.  
  240.     ( ( description$aquarium ) & name$fish ) | name$aqua
  241.  
  242. You can easily alter the order of evaluation by specifying parentheses in
  243. your expression:
  244.  
  245.     description$aquarium & ( name$fish | name$aqua )
  246.  
  247. The following symbols are defined (some synonyms exist!):
  248.  
  249.     Logical AND        &
  250.     Logical OR        |
  251.     Logical XOR        ^    (exclusive or)
  252.     Logical NOT        ~  !    (negation)
  253.  
  254.     Less than        <
  255.     Less than or equal    <=
  256.     Greater than        >
  257.     Greater than or equal    >=
  258.     Equal            =  ==
  259.     Not equal        !=  <>
  260.  
  261. At this time, string comparisons are made without sensitivity to case,
  262. meaning that "kInGfIsHeR" is equivalent to "KINGfishER."
  263.  
  264. Here is a KingFisher Release 1 expression:
  265.  
  266.     game & ( graphics | sound ) & ~( demo & commercial )
  267.  
  268. Here is the same thing as a KingFisher Release 2 expression:
  269.  
  270.     description$game & ( description$graphics | description$sound ) &
  271.         ~ ( description$demo & description$commercial )
  272.  
  273. It's longer, true, and looks much more complicated, but it also provides
  274. much more definition and fine-control in the future.  Various enhancements
  275. are planned to make these expressions easier to use.  Your feedback and
  276. your support will drive the development of these features.
  277.  
  278.  
  279.  
  280. 6  SHUTTING DOWN THE SERVER -----------------------------------------------
  281.  
  282. The server will wait in the background, servicing requests.  You can shut
  283. it down with a CTRL_D break signal.  A CTRL_C break signal will also shut
  284. it down, but will not wait for clients to disconnect, thereby risking the
  285. loss of some operating memory.  Here is a nice table:
  286.  
  287.     Break
  288.     Signal    Effect
  289.     ---------------------------------------------------------
  290.     CTRL_C    Cancel.  This shuts down the Server regardless of
  291.         how many clients are currently using the program.
  292.         It's a very rude thing to do and not recommended.
  293.         Use CTRL_D if you want to be nicer.
  294.     ---------------------------------------------------------
  295.     CTRL_D    Down.  This shuts down the Server but first sends
  296.         notification to all clients.  It then waits for a
  297.         response from every client and shuts down only
  298.         after every client has acknowledged the shutdown.
  299.         This is much nicer than CTRL_C but may not always
  300.         work; when a client has crashed, for example, and
  301.         hasn't properly signed off the server.  In such a
  302.         case, CTRL_C may be the only way to shutdown the
  303.         Server.
  304.     ---------------------------------------------------------
  305.     CTRL_F    Front.  Asks the Server to open its window after
  306.         you have closed it.
  307.     ---------------------------------------------------------
  308.  
  309. You can use the CLI command C:BREAK to send KingFisher these signals.  This
  310. is a quick way to shutdown the Server:
  311.  
  312.     1> status
  313.     Process  1: Loaded as command: L:WBStart-Handler
  314.     Process  2: Loaded as command: Workbench
  315.     Process  3: Loaded as command: l:fifo-handler
  316.     Process  4: Loaded as command: sys:utilities/clock
  317.     Process  5: Loaded as command: sys:utilities/sunclock
  318.     Process  6: Loaded as command: :bin/snap
  319.     Process  8: Loaded as command: emacs
  320.     Process  9: Loaded as command: status
  321.     Process 10: Loaded as command: kfserver
  322.  
  323.     1> break 10 d
  324.  
  325. The number (10) you use depends on which of the CLI Processes is the
  326. KingFisher 2.0 Database Server (kfserver.)  The "d" is the CTRL_D break
  327. signal.
  328.  
  329.  
  330.  
  331. 7  REGISTERING KINGFISHER -------------------------------------------------
  332.  
  333. You received KingFisher for free.  You may have paid for a package, such as
  334. one of Fred Fish's CD-ROMs, but KingFisher came free with the package.
  335. This is because Fred and I have a deal: he gets to distribute KingFisher as
  336. part of his great CD-ROMs, and you get a program with both a past and a
  337. future.
  338.  
  339. But wait a minute!  Where do I, the programmer, come in?  What do I get for
  340. all my efforts?  Nothing, it seems.  I spent months of my spare time on
  341. KingFisher and I get nothing.  Pretty crappy deal, don't you agree?
  342.  
  343. Well, you can show your appreciation for my work.  The original KingFisher
  344. was my return of favors to the Amiga Community.  It was free, it was fun,
  345. it taught me a lot.  But best of all (for you) it was free.  KingFisher 2.0
  346. is no longer free.  You need to register the program.
  347.  
  348. Now, why should you register a program that came to you free?  It's simple:
  349. You get to use and evaluate it.  If you decide you like it and wish to
  350. continue using it, you should send me a registration fee.  And if you live
  351. in Europe, you can register with someone I know in Germany!
  352.  
  353. Here is what you get for registering:
  354.  
  355.     · KFServer that is able to allow an unlimited number of clients to
  356.       connect.  For you BBS users, that means you can serve dozens,
  357.       hundreds, thousands(!) of users!
  358.  
  359.     · KingFisher will allow you to save and restore Search Sets, which
  360.       are subset databases constructed from all matches of a search.
  361.       It will also allow you to keep a history of search expressions
  362.       from which you can choose.
  363.  
  364.     · You will receive Programming Documentation so your own programs
  365.       can connect to the KingFisher 2.0 Database Server.  Are you the
  366.       author of BBS software?  Would you like to write a "Door" or
  367.       other interface, rather than going through RexxFisher?  Do you
  368.       want to try your hand at writing a better (gasp!) KingFisher?
  369.  
  370.     · Technical Support via electronic mail and a KingFisher Mailing
  371.       List.  You will also be the first to receive new versions of the
  372.       included software (even maintenance releases which won't always
  373.       make it to the general public.)
  374.  
  375.     · Your conscience will let you sleep better at night, knowing that
  376.       you are supporting your favorite computer.  What good is your
  377.       Amiga if nobody wrote software for it anymore?  Support your
  378.       software authors, because tomorrow it may be too late!
  379.  
  380.  
  381. What it will cost you to register:
  382.  
  383. In the U.S. or North America you should send $15(US) to:
  384.     
  385.     Udo Schuermann
  386.     6000 42nd Avenue, Apt. 405
  387.     Hyattsville, Maryland 20781
  388.     USA
  389.  
  390.     email: walrus@wam.umd.edu
  391.     Phone: 301 699 3937 (evenings, EST)
  392.  
  393.     Personal checks drawn on U.S. funds, money orders, international
  394.     money orders, postal money orders, and cash in U.S. Dollars are
  395.     accepted.
  396.  
  397. In Europe, send DM25 to:
  398.  
  399.     Uwe Schuerkamp
  400.     Jöllenbecker Weg 4
  401.     32051 Herford       
  402.     GERMANY
  403.  
  404.     email: hoover@math22.mathematik.uni-bielefeld.de
  405.  
  406.     Personal checks drawn on a German bank, EuroCheque, and cash in
  407.     Deutsche Mark are accepted.
  408.  
  409.  
  410. COMMERCIAL REGISTRATIONS ARE ALSO AVAILABLE.  CONTACT THE AUTHOR!
  411.  
  412. Sending cash is discouraged for reasons that it's untracable. In the event
  413. that it gets lost in the mail, the loss would be yours to carry.  If you
  414. live in a land far, far away from either Europe or the USA, then your best
  415. bet may be to send cash, as many (international) banks do not cater to the
  416. exchange of small sums.
  417.  
  418. As a final word of encouragment, should you feel hesitant about registering
  419. KingFisher: With the original KingFisher I hope to have established that
  420. quality software and quality support are important to me.  You will receive
  421. nothing less from me in the future.  KingFisher 2.0 is my first attempt to
  422. get some return on my investment of time through the good-will of you, the
  423. appreciating user base.  With your support, KingFisher 2.0 will grow far
  424. beyond what you see before you today.
  425.     Consider your registration a vote.  Vote for the Amiga's growth!
  426. WITHOUT your support it may never achieve its full potential.  Don't take
  427. that chance.  Register today!
  428.  
  429. #EOT
  430.