home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 1 / GoldFishApril1994_CD1.img / kingfisher / kingfisher.doc < prev    next >
Text File  |  1994-04-15  |  19KB  |  462 lines

  1. KingFisher 2.0
  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 currently a BETA release and not a finished product
  12. by any stretch of the imagination.  Much, MUCH, *MUCH* more is coming!
  13. (Just look at what is "hidden" in the menus for a HINT of the future.)
  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?  Parla
  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. When you start KingFisher, it will attempt to connect to the KingFisher 2.0
  145. Database Server (KFServer); if it cannot locate the server, it will attempt
  146. to start the server, which will work only if the KFServer is located in the
  147. default directory.  Without the server operational, KingFisher cannot
  148. access a database.
  149.     The Server will open a default database and then wait for clients
  150. to connect.  It will also open a status display window.  You can close this
  151. window with the close gadget; this does not shutdown the server.  See below
  152. for ways to shutdown the server.
  153.  
  154. NOTE: If the Server cannot open its default database, it will shutdown
  155. again.  The default database is described by the contents of the
  156. KFServer.kfdb file.  It must be named that, and its contents should be
  157. something along these lines:
  158.  
  159.     # KingFisher 2.0 Server preferences
  160.     #
  161.     # Database is known to clients as
  162.     database-name=Frozen Fish Database
  163.     
  164.     # Database Sections (StartEntry,EndEntry,Filename)
  165.     section=00000,00999,FrozenFish:FrozenFish01.data
  166.     section=01000,01999,FrozenFish:FrozenFish02.data
  167.     section=02000,02999,FrozenFish:FrozenFish03.data
  168.     section=03000,03999,FrozenFish:FrozenFish04.data
  169.     section=04000,04999,FrozenFish:FrozenFish05.data
  170.     section=05000,05999,FrozenFish:FrozenFish06.data
  171.     section=06000,06999,FrozenFish:FrozenFish07.data
  172.     section=07000,07999,FrozenFish:FrozenFish08.data
  173.     section=08000,08999,FrozenFish:FrozenFish09.data
  174.     section=09000,09999,FrozenFish:FrozenFish10.data
  175.     
  176.     # Main index is to be stored ... (OnDisk or InRam)
  177.     index=inram
  178.     index-increment=100
  179.     index-name=FrozenFish:FrozenFish.Index
  180.     
  181.     # Field index
  182.     # This one's not being used at this time
  183.     field-index-field=name
  184.     field-index-name=FrozenFish:FrozenFish-Name.Index
  185.     
  186.     # THE FOLLOWING WILL ONLY WORK IN THE DEFAULT FILE,
  187.     # i.e. THE 'KFSERVER.KFDB' FILE:
  188.     #
  189.     # Maximum number of clients permitted
  190.     maxclients=2
  191.     
  192.     # Output window
  193.     window=CON://640/200/KingFisher 2.0 Server Messages/AUTO
  194.     
  195.     # How talkative shall the server be?
  196.     # MUTE, TERSE, QUIET, CHATTY, DEBUG
  197.     verbosity=MUTE
  198.  
  199. You can verify that the Server is functional by running it again with the
  200. parameter STATUS from the CLI:
  201.  
  202.     kfserver status
  203.  
  204. This will print a technical status detailing all open databases, clients
  205. that are connected to the server, some traffic information on the clients,
  206. etc.  Try redirecting this output to a file and scan it with MORE or an
  207. editor of your choice.  Lots of hardcore techie information there!
  208.  
  209. After the server is running, you can run KingFisher from the CLI:
  210.  
  211.     KingFisher
  212.  
  213. or from the Workbench.
  214.  
  215.  
  216.  
  217. 5  SEARCH EXPRESSIONS -----------------------------------------------------
  218.  
  219. KingFisher 2.0 supports search expressions that have expanded on the ones
  220. available in KingFisher Release 1.  As such, you now specify not single
  221. substrings to be located but "real" expressions.  An expression consists of
  222. a field name, a comparison operator, and a substring:
  223.  
  224.     description $ aquarium
  225.  
  226. This specifies that the field "description" is to be checked if it contains
  227. ($) the substring "aquarium."  Any record in the database that matches this
  228. value will cause KingFisher to stop searching.
  229.  
  230.     description$aquarium & name$fish
  231.  
  232. This matches all records whose description-field contains "aquarium" and
  233. (&) whose name-field contains "fish."  The use of parentheses is not needed
  234. here (although you are welcome to use them.)
  235.  
  236.     description$aquarium & name$fish | name$aqua
  237.  
  238. Here is where parentheses must come into play.  Without parentheses,
  239. KingFisher will evaluate the expression left-to-right, effectively using
  240. the following order (exemplified at hand of parentheses):
  241.  
  242.     ( ( description$aquarium ) & name$fish ) | name$aqua
  243.  
  244. You can easily alter the order of evaluation by specifying parentheses in
  245. your expression:
  246.  
  247.     description$aquarium & ( name$fish | name$aqua )
  248.  
  249. The following symbols are defined (some synonyms exist!):
  250.  
  251.     Logical AND        &
  252.     Logical OR        |
  253.     Logical XOR        ^    (exclusive or)
  254.     Logical NOT        ~  !    (negation)
  255.  
  256.     Less than        <
  257.     Less than or equal    <=
  258.     Greater than        >
  259.     Greater than or equal    >=
  260.     Equal            =  ==
  261.     Not equal        !=  <>
  262.  
  263. At this time, string comparisons are made without sensitivity to case,
  264. meaning that "kInGfIsHeR" is equivalent to "KINGfishER."
  265.  
  266. Here is a KingFisher Release 1 expression:
  267.  
  268.     game & ( graphics | sound ) & ~( demo & commercial )
  269.  
  270. Here is the same thing as a KingFisher Release 2 expression:
  271.  
  272.     description$game & ( description$graphics | description$sound ) &
  273.         ~ ( description$demo & description$commercial )
  274.  
  275. It's longer, true, and looks much more complicated, but it also provides
  276. much more definition and fine-control in the future.  Various enhancements
  277. are planned to make these expressions easier to use.  Your feedback and
  278. your support will drive the development of these features.
  279.  
  280. NEWSFLASH: As of BETA 4, a new "meta" field has been added, specified with
  281.            the symbol '*':
  282.  
  283.     *$game & ( *$graphics | *$sound ) & ~( *$demo & *$commercial )
  284.  
  285. is now the exact equivalent to the Release 1 expression shown above.
  286.     Please note that the * symbol is NOT a wildcard in the sense that
  287. it represents multiple characters.  It represents a collection of "all
  288. fields in the current database record."  You CANNOT specify "re*$2.04" to
  289. include both "REstrictions" and "REquirements" fields but no others.  The
  290. parser will reject a '*' in your fieldname 're' and complain that it
  291. expected a comparison operator, such a $, <=, !=, etc.
  292.  
  293. NOTE: Further enhancements to the expression syntax are planned.
  294. NOTE: As of BETA 6 the meta field is buggy and VERY likely to crash
  295.       your machine.  My apologies.  Time is short.  Register.  Incite
  296.       me to fix this fast! ;-)
  297.  
  298.  
  299.  
  300. 6  SHUTTING DOWN THE SERVER -----------------------------------------------
  301.  
  302. The server will wait in the background, servicing requests.  You can shut
  303. it down with a CTRL_D break signal.  A CTRL_C break signal will also shut
  304. it down, but will not wait for clients to disconnect, thereby risking the
  305. loss of some operating memory.
  306.  
  307. Notice that the Server will flush various files (such as a modified index)
  308. only when it shuts down.  It is highly recommended to make at least SOME
  309. effort to shutdown the server properly.  The behavior of the server will
  310. undergo some changes in the future to prevent accidental loss of data.
  311.  
  312. Here is a nice table:
  313.  
  314.     Break
  315.     Signal    Effect
  316.     ---------------------------------------------------------
  317.     CTRL_C    Cancel.  This shuts down the Server regardless of
  318.         how many clients are currently using the program.
  319.         It's a very rude thing to do and not recommended.
  320.         Use CTRL_D if you want to be nicer.
  321.     ---------------------------------------------------------
  322.     CTRL_D    Down.  This shuts down the Server but first sends
  323.         notification to all clients.  It then waits for a
  324.         response from every client and shuts down only
  325.         after every client has acknowledged the shutdown.
  326.         This is much nicer than CTRL_C but may not always
  327.         work; when a client has crashed, for example, and
  328.         hasn't properly signed off the server.  In such a
  329.         case, CTRL_C may be the only way to shutdown the
  330.         Server.
  331.     ---------------------------------------------------------
  332.     CTRL_F    Front.  Asks the Server to open its window after
  333.         you have closed it.
  334.     ---------------------------------------------------------
  335.  
  336. You can use the CLI command C:BREAK to send KingFisher these signals.  This
  337. is a quick way to shutdown the Server:
  338.  
  339.     1> status
  340.     Process  1: Loaded as command: L:WBStart-Handler
  341.     Process  2: Loaded as command: Workbench
  342.     Process  3: Loaded as command: l:fifo-handler
  343.     Process  4: Loaded as command: sys:utilities/clock
  344.     Process  5: Loaded as command: sys:utilities/sunclock
  345.     Process  6: Loaded as command: :bin/snap
  346.     Process  8: Loaded as command: emacs
  347.     Process  9: Loaded as command: status
  348.     Process 10: Loaded as command: kfserver
  349.  
  350.     1> break 10 d
  351.  
  352. The number (10) you use depends on which of the CLI Processes is the
  353. KingFisher 2.0 Database Server (kfserver.)  The "d" is the CTRL_D break
  354. signal.
  355.  
  356.  
  357.  
  358. 7  REGISTERING KINGFISHER -------------------------------------------------
  359.  
  360. You received KingFisher for free.  You may have paid for a package, such as
  361. one of Fred Fish's CD-ROMs, but KingFisher came free with the package.
  362. This is because Fred and I have a deal: he gets to distribute KingFisher as
  363. part of his great CD-ROMs, and you get a program with both a past and a
  364. future.
  365.  
  366. But what do I, the programmer, get for all the time I spent on KingFisher?
  367. I cannot live off thank-you notes (although I appreciate all I get) and
  368. CD-ROMs make a poor diet (even when served with wine and cheese ;-) so you
  369. can imagine that I am hoping for something more substantial to reward me
  370. for my efforts, and I am hoping that you will show your appreciation for my
  371. work!
  372.     The original KingFisher was my return of favors to the Amiga
  373. Community.  It was free, it was fun, it taught me a lot.  But best of all
  374. (for you) it was free.  KingFisher 2.0 is no longer free.  You need to
  375. register the program.
  376.  
  377. Now, why should you register a program that came to you free?  It's simple:
  378. You get to use and evaluate it.  If you decide you like it and wish to
  379. continue using it, you should send me a registration fee.  And if you live
  380. in Europe, you can register with someone I know in Germany!
  381.  
  382. Here is what you get for registering:
  383.  
  384.     · KFServer that is able to allow an unlimited number of clients to
  385.       connect.  For you BBS operators, that means you can serve dozens,
  386.       hundreds, thousands(!) of users!  (Billions and billions! ;-)
  387.  
  388.     · KingFisher will allow you to save and restore Search Sets, which
  389.       are subset databases constructed from all matches of a search.
  390.       It will also allow you to keep a history of search expressions
  391.       from which you can choose.
  392.  
  393.     · You will receive Programming Documentation so your own programs
  394.       can connect to the KingFisher 2.0 Database Server.  Are you the
  395.       author of BBS software?  Would you like to write a "Door" or
  396.       other interface, rather than going through RexxFisher?  Do you
  397.       want to try your hand at writing a (gasp!) better KingFisher?
  398.  
  399.     · Technical Support via electronic mail and a KingFisher Mailing
  400.       List.  You will also be the first to receive new versions of the
  401.       included software (even maintenance releases which won't always
  402.       make it to the general public.)
  403.  
  404.     · My pledge that as long as there is demand for KingFisher, I will
  405.       continue to support it, regardless of where Commodore is going.
  406.  
  407.     · Your conscience will let you sleep better at night, knowing that
  408.       you are really supporting your favorite computer.  What good is
  409.       your Amiga if nobody wrote software for it anymore?  Support your
  410.       software authors today, because tomorrow it may be too late!
  411.  
  412.  
  413. What it will cost you to register:
  414.  
  415. In the U.S. or North America you should send $15(US) to:
  416.     
  417.     Udo Schuermann
  418.     6000 42nd Avenue, Apt. 405
  419.     Hyattsville MD  20781-1518
  420.     USA
  421.  
  422.     email: walrus@wam.umd.edu
  423.     Phone: 301 699 3937 (evenings, EST)
  424.  
  425.     Personal checks drawn on U.S. funds, money orders, international
  426.     money orders, postal money orders, and cash in U.S. Dollars are
  427.     accepted.
  428.  
  429. In Europe, send DM25 to:
  430.  
  431.     Uwe Schürkamp
  432.     Jöllenbecker Weg 4
  433.     32051 Herford       
  434.     GERMANY
  435.  
  436.     email: hoover@mathematik.uni-bielefeld.de
  437.  
  438.     Personal checks drawn on a German bank, EuroCheque, and cash in
  439.     Deutsche Mark are accepted.
  440.  
  441.  
  442. COMMERCIAL REGISTRATIONS ARE ALSO AVAILABLE.  CONTACT THE AUTHOR!
  443.  
  444. Sending cash is discouraged for reasons that it's untracable. In the event
  445. that it gets lost in the mail, the loss would be yours to carry.  If you
  446. live in a land far, far away from either Europe or the USA, then your best
  447. bet may be to send cash, as many (international) banks do not cater to the
  448. exchange of small sums.
  449.  
  450. As a final word of encouragment, should you feel hesitant about registering
  451. KingFisher: With the original KingFisher I hope to have established that
  452. quality software and quality support are important to me.  You will receive
  453. nothing less from me in the future.  KingFisher 2.0 is my first attempt to
  454. get some return on my investment of time through the good-will of you, the
  455. appreciating user.  With your support, KingFisher 2.0 will grow far beyond
  456. what you see before you today.
  457.     Consider your registration a vote.  Vote for the Amiga's growth!
  458. WITHOUT your support it may never achieve its full potential.  Don't take
  459. that chance.  Register today and support your existing investment!
  460.  
  461. #EOT
  462.