Code Monkey home page Code Monkey logo

kdb-studio's Introduction

Studio for kdb+

Studio for kdb+ is a rapid development environment for the ultra-fast database kdb+ from Kx Systems. In the style of commonly used SQL Clients, it allows you to

  • Connect to kdb+ processes
  • Execute selected text from the editor window
  • View results as tables, charts, or classic console style

The editor component is based on the NetBeans editor component, and includes the following features

  • find/search/replace
  • cut/copy/paste
  • undo/redo
  • syntax highlighting for the q language
  • most recent files menu

Additionally the application features

  • export to Excel
  • drag and drop
  • immediate charting of grid data

Screenshot

alt tag

Credits

Studio for kdb+ uses the following open source projects:

Installation

Download the latest release from the "Releases" section on the right. Each tag has an associated "studio_javaXX.zip" file with the pre-built version.

Use kdb-studio.bat to start. Edit that file to replace java.exe with javaw.exe to avoid the extra console window.

Background

Studio for kdb+ has been developed since October 2002, and the source was released to the kdb+ community in September 2008 as the primary developer wanted to allow the community to develop the application further.

Studio is written 100% in Java. The primary motivation for its development was to be able to comfortably access remote kdb+ processes. In time, it has become clear that it is not an IDE as such, but is better described as a rapid execution environment. One can edit text in the "scratch" window, highlight a selection and execute it against a remote kdb+ process via tcp/ip, with the results displayed as a grid or as in the classic kdb+ console.

License

Apache 2 , see LICENSE file in repository root.

N.B. JFreeChart and c.java components have their own respective licenses.

kdb-studio's People

Contributors

adavies42 avatar alvin-c-shih avatar charlesskelton avatar charlieskelton-kx avatar dernasherbrezon avatar dzmipt avatar gyorokpeter avatar maoo avatar mindthegab avatar punx120 avatar robmoffat avatar yanpas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

kdb-studio's Issues

Roadmap

Feature Request

Roadmap

Description of Problem:

  • Hard to know if there's potential duplicated effort with respect to other kdbStudio forks.
  • Developers who don't use kdbStudio daily might have problems thinking of how to contribute.

Potential Solutions:

  • roadmap.md file.

drag and drop in server list

It should clearly indicate where the server will end up if dropped.
It must be able to distinguish between dropping an item as the last element of an open folder vs as the next element outside the folder.
Take accessibility into consideration, e.g. what if the user wants to move a server from the bottom of a 100 server list to the top. E.g. don't require using the mouse wheel while also holding down the left button or waiting for ages as the server list scrolls one by one.

Change Log

Feature Request

Change Log

Description of Problem:

Hard to discover what the new features are and whether it's worth trying newer releases.

Potential Solutions:

improve undo

Remove the 50 action limit on undo.
Group undo for typing operations.

theme support

In particular users are asking for a dark theme but this could be genericized for customizable themes with a light and a dark preset.

state saving should be done in a safe way

If power goes out during the state save, it should not result in corrupted state.
E.g. I had about 10 tabs open when the power went out. When I restarted studio afterwards, only one tab came back up.

Options to set colors for : selected line, selected text, Console View background.

Feature Request

Description of Problem:

User would like to configure colors as per Notepad++ "Nord" theme:

Looking for a way to set the colors for the current line and selected text to match the theme.
Currently, the default yellow for current line and light purple for selected text do not fit the theme.

Related is that light blue text is hard to read against the white background of Console View.

Potential Solutions:

Would be nice if options could be added to Theme dialog:

  • token.CURRENT_LINE
  • token.SELECTED_TEXT

And update Theme-related code to act accordingly.

As for the Console View background, it might make sense for it to inherit the color from token.BACKGROUND.

Otherwise, add an option to the Theme dialog.

Thanks!

Protect against adding duplicate servers

If you type in a server name that already exists, the data you enter is silently discarded with no message to tell you that this happened.
Instead you should get an error message when clicking the ok button and get the chance to change the server name.

Key mapper

Users should be able to map actions to keys, e.g.
Ctrl+W - close tab or delete last word?
Ctrl+Shift+Up/Down - swap lines (Notepad++ style) or select paragraph?
As many of the actions as possible should be mappable, with sensible defaults and export config feature.

Auto reconnect when server list is updated

Feature Request

Description of Problem:

When I import a server list (with new passwords) the existing connection is not updated till a change of server is manually made.

I think the new settings should be immediately applied.

Potential Solutions:

Re connect to currently selected server if it has been re loaded from an external list.

Cannot copy dates to Excel.

Bug Report

Steps to Reproduce:

  1. Run a query that returns a date in a table.
  2. Copy
  3. Paste in Excel
  4. Value is "2023.01.23"
  5. Excel does not recognise it as a date

Expected Result:

Date automatically handled in Excel.

Actual Result:

Excel sees a string not a date. Even =DATEVALAUE() cannot handle the string format.

Environment:

Windows 11, Excel 365

Additional Context:

Excel represents dates as number of days since 1900 something. Ideally kdb-studio should use this format.

Using a string still requires DATEVALUE(), in which case kdb-studio should select a better format (see https://support.microsoft.com/en-us/office/datevalue-function-df8b07d4-7761-4a93-bc33-b7471bbff252) but it might become locale-dependent. The number is safer.

"Open in Excel" works, but it has the bad habit of opening a new Excel session, from which one can copy, true, but still very cumbersome.

alternate display format for strings

Either they should be rendered (e.g. \n appearing as line breaks) or copyable (.Q.s1 format). Maybe use a similar split as for tables where it opens two tabs, one with the rendered form and one with the copyable form.

Programmatically import server list

Feature Request

Description of Problem:

In our organisation the password used to connect to kdb servers expires every couple of days.

We have tools to regenerate the server list (json or qpad format), but all users must manually reimport it each time with numerous clicks which after a while become very tedious.

I would like to have a way to programmatically import the new server list into kdb studio settings with minimal user interaction.

Potential Solutions:

I would like to have a command line switch to import server list which does not require any click.
Or a separate main like

public static void main(String[] args) {
to do it.

wrong indentation of closing brace

E.g. try typing the following:

f1:{
    something
    };

The closing curly brace will be auto-unindented, even though this results in code that won't load, worse still, you won't notice this immediately as this doesn't break over IPC.

ctrl+forward delete deletes entire line

ctrl+forward delete deletes the entire line from the insertion point forward, but ctrl+delete deletes only one word backwards

ctrl+forward delete should delete one word forward, which is what it does in most apps

Table/console switcher in each tab

Instead of creating a separate table/console view tab for each result, there should be a button inside the tab to switch between the two modes.

add keyboard shortcuts

Ctrl+Del and Ctrl+Backspace to delete words
Ctrl+Shift+Up and Ctrl+Shift+Down to move current line(s) up/down

support for duplicated server names within certain limits

  • Do not reintroduce #22 (i.e. user data should not be lost)
  • Deal with the situation of dragging a server into a folder where a server with the same name already exists
  • Server import/export must be able to handle it but it must also be able to load files already saved in the old format

WhiteSource Integration for kdb-studio

Description

This GitHub issue is a request to the FINOS Infrastructure team to work with @alvin-c-shih and the FINOS KDB project to integrate WhiteSource on the FINOS kdb-studio repo.

https://community.finos.org/docs/development-infrastructure/code-validation/whitesource

Actions

  • WhiteSource integrated into kdb-studio repo.
  • FINOS works with KDB team on exclusions and false positive filtering.
  • WhiteSource rolled out for kdb-studio.

cc @maoo @TheJuanAndOnly99 @robmoffat

Replace skips every second occurrence

Recommended fix:

        boolean searchFromSelStart;
        if (context.getReplaceWith() != null) {
            searchFromSelStart = context.getSearchForward();
        } else {
            searchFromSelStart = ! context.getSearchForward();
        }
        int pos = searchFromSelStart ? textArea.getSelectionStart() : textArea.getSelectionEnd();

TAB settings

The traditional default is 4 chars and use spaces instead of tab characters.

improve dialog interactivity

In a dialog with no text boxes (e.g. Confirm Save), just pressing Y/N should activate the Yes/No button, instead of Alt+Y/Alt+N.

Escaping of strings

Examples:

"a\000b" -> should print like this, not as "ab"
"C:\\Projects\\gyorokpeter" -> should print with the double backslashes instead of "C:\Projects\gyorokpeter"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.