Skip to content
Jaskirat Rajasansir edited this page Dec 8, 2021 · 37 revisions

User Guide

The wiki section of this repository provides details on the libraries that are provided within this "common" package.

All the libraries included are used within our primary kdb+ application which supported BuaBook. If you have any issues, please raise a GitHub issue and we will investigate.

Library Summary

The libraries included are:

  • cargs.q: Enhanced command-line argument parser
  • compress.q: On-disk compression helpers
  • convert.q: Type conversion functions
  • cron.q: Timer job scheduler
  • csv.q: CSV file reader and writer
  • env.q: Environment variable manager
  • event.q: Event manager
  • file.q: File and folder discovery
  • http.q: HTTP query library
  • if.q: Interface library
  • ipc.q: Inter-process communication
  • log.q: Simple console logger, with color and log level configuration
  • mail.q: Sending e-mail via mailx / mutt
  • ns.q: Namespace and meta functionality
  • os.q: Operating system abstraction library
  • rand.q: Random data generator
  • require.q: A dynamic code loading library
  • slack.q: Send messages to Slack via WebHook
  • so.q: Shared object / DLL function manager
  • terminal.q: Terminal window size tracking
  • time.q: Time accessor and utility library
  • type.q: Type checking and normalisation functions
  • tz.q: Timezone conversion library
  • util.q: Other utility functions
  • wsc.q: WebSocket client connection library

Require Library Recommended

It is recommended that you use the Require library to load other libraries into a kdb+ process. There are 2 options to use require.q:

  1. Use boot.q as the initialisation script to a kdb+ process
  2. Initialise require.q manually

If you choose not to use require.q, your dependency manager should implement:

  • .require.lib[library]: Load the files related to the specified library and then initialise it by calling .*library*.init[]
  • .require.libNoInit[library]: Load the files related to the specified library only

Expected Interfaces

As of version kdb-common-1.2.0-2020.06.29, a new interface library (if.q) has been added to allow implementations of common logic to be implemented by an external system. This allows easier integration with an existing system.

When not using require.q, ensure all expected interfaces have a default set. See if.q for the interface list.

Additional Libraries

Below is a list of libraries that are built on top of the kdb-common libraries:

If you have an open-source library built on top of kdb-common that you would like to list here, please modify this file and send me a pull request.

Licensing

This library is licensed under the Apache License 2.0:

A permissive license whose main conditions require preservation of copyright and license notices. Contributors provide an express grant of patent rights. Licensed works, modifications, and larger works may be distributed under different terms and without source code.

For more details, please see https://choosealicense.com/licenses/apache-2.0/.