dzmipt / kdbstudio Goto Github PK
View Code? Open in Web Editor NEWThis project forked from charlesskelton/studio
Studio for kdb+ / Rapid execution environment for q
License: Apache License 2.0
This project forked from charlesskelton/studio
Studio for kdb+ / Rapid execution environment for q
License: Apache License 2.0
This is to incorporate PR:
CharlesSkelton#25
I suspect that kdbStudio wouldn't start if there is no config file (i.e. the first start up).
Russian letter "\321\200" (which is a two array list) is output as
enlist "ั"
This is to support drag & drop to move sub-tree to a different location
When I created the list from scratch, popup has all action disabled except "Select" one.
Refresh the result set button repeats the last query and opens one more tab.
Probably more intuitive solution would be to refresh current tab and do not re-open a new tab
Actually the table was not something which is supposed to be used for charting, but still
([]a:1 2 3;b:string 10 20 30)
2021.03.31 08:09:52.123 [AWT-EventQueue-0] ERROR stderr - Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: studio.kdb.K$KCharacterVector cannot be cast to studio.kdb.ToDouble
2021.03.31 08:09:52.124 [AWT-EventQueue-0] ERROR stderr - at studio.ui.LineChart.createDataset(LineChart.java:190)
2021.03.31 08:09:52.124 [AWT-EventQueue-0] ERROR stderr - at studio.ui.LineChart.(LineChart.java:31)
2021.03.31 08:09:52.124 [AWT-EventQueue-0] ERROR stderr - at studio.ui.StudioPanel$21.actionPerformed(StudioPanel.java:1157)
2021.03.31 08:09:52.124 [AWT-EventQueue-0] ERROR stderr - at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
2021.03.31 08:09:52.124 [AWT-EventQueue-0] ERROR stderr - at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
2021.03.31 08:09:52.125 [AWT-EventQueue-0] ERROR stderr - at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
2021.03.31 08:09:52.125 [AWT-EventQueue-0] ERROR stderr - at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
2021.03.31 08:09:52.125 [AWT-EventQueue-0] ERROR stderr - at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
2021.03.31 08:09:52.125 [AWT-EventQueue-0] ERROR stderr - at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
2021.03.31 08:09:52.125 [AWT-EventQueue-0] ERROR stderr - at java.awt.Component.processMouseEvent(Component.java:6539)
2021.03.31 08:09:52.125 [AWT-EventQueue-0] ERROR stderr - at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
2021.03.31 08:09:52.126 [AWT-EventQueue-0] ERROR stderr - at java.awt.Component.processEvent(Component.java:6304)
2021.03.31 08:09:52.126 [AWT-EventQueue-0] ERROR stderr - at java.awt.Container.processEvent(Container.java:2239)
2021.03.31 08:09:52.126 [AWT-EventQueue-0] ERROR stderr - at java.awt.Component.dispatchEventImpl(Component.java:4889)
2021.03.31 08:09:52.126 [AWT-EventQueue-0] ERROR stderr - at java.awt.Container.dispatchEventImpl(Container.java:2297)
2021.03.31 08:09:52.126 [AWT-EventQueue-0] ERROR stderr - at java.awt.Component.dispatchEvent(Component.java:4711)
2021.03.31 08:09:52.127 [AWT-EventQueue-0] ERROR stderr - at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
2021.03.31 08:09:52.128 [AWT-EventQueue-0] ERROR stderr - at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
2021.03.31 08:09:52.128 [AWT-EventQueue-0] ERROR stderr - at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
2021.03.31 08:09:52.128 [AWT-EventQueue-0] ERROR stderr - at java.awt.Container.dispatchEventImpl(Container.java:2283)
2021.03.31 08:09:52.128 [AWT-EventQueue-0] ERROR stderr - at java.awt.Window.dispatchEventImpl(Window.java:2746)
2021.03.31 08:09:52.128 [AWT-EventQueue-0] ERROR stderr - at java.awt.Component.dispatchEvent(Component.java:4711)
2021.03.31 08:09:52.128 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
2021.03.31 08:09:52.128 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventQueue.access$500(EventQueue.java:97)
2021.03.31 08:09:52.129 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventQueue$3.run(EventQueue.java:709)
2021.03.31 08:09:52.129 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventQueue$3.run(EventQueue.java:703)
2021.03.31 08:09:52.129 [AWT-EventQueue-0] ERROR stderr - at java.security.AccessController.doPrivileged(Native Method)
2021.03.31 08:09:52.129 [AWT-EventQueue-0] ERROR stderr - at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
2021.03.31 08:09:52.129 [AWT-EventQueue-0] ERROR stderr - at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
2021.03.31 08:09:52.129 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventQueue$4.run(EventQueue.java:733)
2021.03.31 08:09:52.129 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventQueue$4.run(EventQueue.java:731)
2021.03.31 08:09:52.130 [AWT-EventQueue-0] ERROR stderr - at java.security.AccessController.doPrivileged(Native Method)
2021.03.31 08:09:52.130 [AWT-EventQueue-0] ERROR stderr - at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
2021.03.31 08:09:52.130 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
2021.03.31 08:09:52.130 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
2021.03.31 08:09:52.130 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
2021.03.31 08:09:52.130 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
2021.03.31 08:09:52.131 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
2021.03.31 08:09:52.131 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
2021.03.31 08:09:52.131 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
2021.03.31 08:09:54.792 [AWT-EventQueue-0] ERROR stderr - Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: studio.kdb.K$KCharacterVector cannot be cast to studio.kdb.ToDouble
2021.03.31 08:09:54.792 [AWT-EventQueue-0] ERROR stderr - at studio.ui.LineChart.createDataset(LineChart.java:190)
2021.03.31 08:09:54.793 [AWT-EventQueue-0] ERROR stderr - at studio.ui.LineChart.(LineChart.java:31)
2021.03.31 08:09:54.793 [AWT-EventQueue-0] ERROR stderr - at studio.ui.StudioPanel$21.actionPerformed(StudioPanel.java:1157)
2021.03.31 08:09:54.793 [AWT-EventQueue-0] ERROR stderr - at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
2021.03.31 08:09:54.793 [AWT-EventQueue-0] ERROR stderr - at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
2021.03.31 08:09:54.793 [AWT-EventQueue-0] ERROR stderr - at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
2021.03.31 08:09:54.793 [AWT-EventQueue-0] ERROR stderr - at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
2021.03.31 08:09:54.793 [AWT-EventQueue-0] ERROR stderr - at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
2021.03.31 08:09:54.793 [AWT-EventQueue-0] ERROR stderr - at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
2021.03.31 08:09:54.793 [AWT-EventQueue-0] ERROR stderr - at java.awt.Component.processMouseEvent(Component.java:6539)
2021.03.31 08:09:54.794 [AWT-EventQueue-0] ERROR stderr - at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
2021.03.31 08:09:54.794 [AWT-EventQueue-0] ERROR stderr - at java.awt.Component.processEvent(Component.java:6304)
2021.03.31 08:09:54.794 [AWT-EventQueue-0] ERROR stderr - at java.awt.Container.processEvent(Container.java:2239)
2021.03.31 08:09:54.794 [AWT-EventQueue-0] ERROR stderr - at java.awt.Component.dispatchEventImpl(Component.java:4889)
2021.03.31 08:09:54.794 [AWT-EventQueue-0] ERROR stderr - at java.awt.Container.dispatchEventImpl(Container.java:2297)
2021.03.31 08:09:54.794 [AWT-EventQueue-0] ERROR stderr - at java.awt.Component.dispatchEvent(Component.java:4711)
2021.03.31 08:09:54.794 [AWT-EventQueue-0] ERROR stderr - at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
2021.03.31 08:09:54.794 [AWT-EventQueue-0] ERROR stderr - at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
2021.03.31 08:09:54.794 [AWT-EventQueue-0] ERROR stderr - at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
2021.03.31 08:09:54.794 [AWT-EventQueue-0] ERROR stderr - at java.awt.Container.dispatchEventImpl(Container.java:2283)
2021.03.31 08:09:54.794 [AWT-EventQueue-0] ERROR stderr - at java.awt.Window.dispatchEventImpl(Window.java:2746)
2021.03.31 08:09:54.797 [AWT-EventQueue-0] ERROR stderr - at java.awt.Component.dispatchEvent(Component.java:4711)
2021.03.31 08:09:54.797 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
2021.03.31 08:09:54.797 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventQueue.access$500(EventQueue.java:97)
2021.03.31 08:09:54.797 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventQueue$3.run(EventQueue.java:709)
2021.03.31 08:09:54.797 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventQueue$3.run(EventQueue.java:703)
2021.03.31 08:09:54.797 [AWT-EventQueue-0] ERROR stderr - at java.security.AccessController.doPrivileged(Native Method)
2021.03.31 08:09:54.797 [AWT-EventQueue-0] ERROR stderr - at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
2021.03.31 08:09:54.797 [AWT-EventQueue-0] ERROR stderr - at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
2021.03.31 08:09:54.797 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventQueue$4.run(EventQueue.java:733)
2021.03.31 08:09:54.797 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventQueue$4.run(EventQueue.java:731)
2021.03.31 08:09:54.798 [AWT-EventQueue-0] ERROR stderr - at java.security.AccessController.doPrivileged(Native Method)
2021.03.31 08:09:54.798 [AWT-EventQueue-0] ERROR stderr - at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
2021.03.31 08:09:54.798 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
2021.03.31 08:09:54.798 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
2021.03.31 08:09:54.798 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
2021.03.31 08:09:54.798 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
2021.03.31 08:09:54.798 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
2021.03.31 08:09:54.798 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
2021.03.31 08:09:54.798 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Steps to reproduce:
Expected: server details will be at the old location in the server tree
Actual: Server is removed from the server tree and then it is added into the end at the root level
It would be useful to open new script in a tab rather in a separate frame
I spot at least the following: I opened the Studio with one panel which was saved to a *.q file. I create a new (unnamed) panel and closed the first one. When I restart the Studio, I expected to get unnamed panel. Actually I got again one panel with the *.q file.
Observed in Windows with tables having underscores in their names.
Underscores are not visible in table output - it looks they cell grid is drawn on top of the underscores symbols. As the result it is not obvious if entity has underscore or space char.
If a connection is broken for a server, it is not restored even if the server is restarted
At the moment any initial whitespaces are ignored as a result line which has a single slash prepended with a space would start comments
It is useful to have details such as: host/port, query and duration for every tab in the results
It looks there was big (30Mb) response from remote server. There was no output. Logs have an exception. It should be some notifacation to the user about the error.
2021.03.30 15:37:21.251 [AWT-EventQueue-0] ERROR stderr - Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
2021.03.30 15:37:21.251 [AWT-EventQueue-0] ERROR stderr - at java.util.Arrays.copyOf(Arrays.java:3332)
2021.03.30 15:37:21.252 [AWT-EventQueue-0] ERROR stderr - at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:124)
2021.03.30 15:37:21.252 [AWT-EventQueue-0] ERROR stderr - at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:448)
2021.03.30 15:37:21.252 [AWT-EventQueue-0] ERROR stderr - at java.lang.StringBuilder.append(StringBuilder.java:136)
2021.03.30 15:37:21.252 [AWT-EventQueue-0] ERROR stderr - at studio.kdb.K$KDate.format(K.java:627)
2021.03.30 15:37:21.252 [AWT-EventQueue-0] ERROR stderr - at studio.kdb.K$KBaseVector.formatVector(K.java:1061)
2021.03.30 15:37:21.252 [AWT-EventQueue-0] ERROR stderr - at studio.kdb.K$KBaseVector.format(K.java:1072)
2021.03.30 15:37:21.253 [AWT-EventQueue-0] ERROR stderr - at studio.kdb.K$KList.formatVector(K.java:1123)
2021.03.30 15:37:21.253 [AWT-EventQueue-0] ERROR stderr - at studio.kdb.K$KBaseVector.format(K.java:1072)
2021.03.30 15:37:21.253 [AWT-EventQueue-0] ERROR stderr - at studio.kdb.K$Flip.format(K.java:835)
2021.03.30 15:37:21.253 [AWT-EventQueue-0] ERROR stderr - at studio.kdb.K$Dict.format(K.java:802)
2021.03.30 15:37:21.253 [AWT-EventQueue-0] ERROR stderr - at studio.kdb.K$KBase.toString(K.java:75)
2021.03.30 15:37:21.253 [AWT-EventQueue-0] ERROR stderr - at studio.ui.CellRenderer.getTableCellRendererComponent(CellRenderer.java:52)
2021.03.30 15:37:21.253 [AWT-EventQueue-0] ERROR stderr - at studio.ui.WidthAdjuster.resize(WidthAdjuster.java:91)
2021.03.30 15:37:21.254 [AWT-EventQueue-0] ERROR stderr - at studio.ui.WidthAdjuster.resizeAllColumns(WidthAdjuster.java:67)
2021.03.30 15:37:21.254 [AWT-EventQueue-0] ERROR stderr - at studio.ui.QGrid.(QGrid.java:135)
2021.03.30 15:37:21.254 [AWT-EventQueue-0] ERROR stderr - at studio.ui.TabPanel.initComponents(TabPanel.java:49)
2021.03.30 15:37:21.254 [AWT-EventQueue-0] ERROR stderr - at studio.ui.TabPanel.(TabPanel.java:42)
2021.03.30 15:37:21.254 [AWT-EventQueue-0] ERROR stderr - at studio.ui.StudioPanel.queryExecutionComplete(StudioPanel.java:2164)
2021.03.30 15:37:21.255 [AWT-EventQueue-0] ERROR stderr - at studio.ui.action.QueryExecutor$Worker.done(QueryExecutor.java:152)
2021.03.30 15:37:21.255 [AWT-EventQueue-0] ERROR stderr - at javax.swing.SwingWorker$5.run(SwingWorker.java:737)
2021.03.30 15:37:21.255 [AWT-EventQueue-0] ERROR stderr - at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(SwingWorker.java:832)
2021.03.30 15:37:21.255 [AWT-EventQueue-0] ERROR stderr - at sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:112)
2021.03.30 15:37:21.255 [AWT-EventQueue-0] ERROR stderr - at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(SwingWorker.java:842)
2021.03.30 15:37:21.255 [AWT-EventQueue-0] ERROR stderr - at javax.swing.Timer.fireActionPerformed(Timer.java:313)
2021.03.30 15:37:21.255 [AWT-EventQueue-0] ERROR stderr - at javax.swing.Timer$DoPostEvent.run(Timer.java:245)
2021.03.30 15:37:21.256 [AWT-EventQueue-0] ERROR stderr - at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
2021.03.30 15:37:21.256 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
2021.03.30 15:37:21.256 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventQueue.access$500(EventQueue.java:97)
2021.03.30 15:37:21.256 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventQueue$3.run(EventQueue.java:709)
2021.03.30 15:37:21.256 [AWT-EventQueue-0] ERROR stderr - at java.awt.EventQueue$3.run(EventQueue.java:703)
2021.03.30 15:37:21.256 [AWT-EventQueue-0] ERROR stderr - at java.security.AccessController.doPrivileged(Native Method)
Played with such object:
get `:test1/ set ([] qqq:1.1 2.2 3.3 4.4 5.5; c:{ ([] a:x+til 3; b: til 3)} each til 5)
Got the following Exception:
Error occurred during query execution: kx.c$K4Exception: type kx.c$K4Exception:
type
at kx.c.k(c.java:678)
at kx.c$1.run(c.java:138)
at java.lang.Thread.run(Thread.java:748)
The idea is to save/restore all settings, open tabs, etc. It will allow to have separate workspace for different projects
How to start the application? It is possible to start with gradle or to use a script which add all jars into classpath (actually the script is created during gradle distribution task).
To simplify application start up, probably we need to have a target (a way) to package all dependencies into a single jars. Is it Spring Boot?
At the moment, tabs are named by filename or Script in case the script wasn't loaded or saved. In the latter case, i propose to name tabs based on connected server name or host:port.
Use-case: it is nice to highlight servers to Production with different (e.g. red) color.
It looks we need a wizard which set background (defined by a user) to servers which match to rules. The rules could be something like:
if name has prod (ignore case), color is red (Color selection)
if host has prd, color is red
if folders have ProjectBlahBlah, color is green
Example: 2003.01.03T05:23 produces output 2003.01.03 05:23:00.000z which red (error) highlighting of 05:23:00.000z
.xyz.abc1 is formatted as identifier .xyz.abc and number 1. It should be parsed as one identifier
12.22 is highlighted as number. However 12.22f is highlighted as error
At the moment long lines can be horizontal scrolled. Is it difficult to have word wrap in current text editor? Reformat (to add extra \n) might be not a best option as the line could have comments in the end of the line
At the moment it looks logs at ~/.studioforkdb/log are in UTC timezone. On one hand, it is not obvious from log file. On the another hand, probably it makes sense to have logs in user local timezone
Should we store binary distribution in GitHub? Publish distribution to some central binary repository.
All next queries are ok
Ctrl+E executes all lines from the file (the whole script) in case nothing is selected.
It could be not useful. Let's add an option into settings to not execute everything if nothing is selected (another option is to ask user if he/she wants to execute everything)
At the moment it opens: https://code.kx.com/q/github/
It looks it should open: https://code.kx.com/q/
It is nice to keep all executed queries into a file. It makes sense to have date/time when the query was sent for execution; likely duration and connection details of server.
Trying to open in Excel results in Excel saying that the file is broken.
Trying to Copy in Excel format, Paste into Excel all cells (except header) with something like
studio.kdb.KFormatContext@11c696d9
At the moment: a message with Java exception of java.io.EOFException is displayed
If huge results are loaded, even if tabs were disappeared, the memory is not freed.
Last commit introduced TabPanel.cleanUp() which looks like is fixing the problem. However why a reference is not deleted to a TabPanel during tab removal requires further investigation
It is nice to have history of last connected servers.
It used to be possible to add custom decimal format - it was a property DecimalFormat in Studio property config. During introduction of thousands separator, this was disappeared. Probably we can add this into Settings menu?
It looks Swing controls takes much more memory than result itself (actually requires double check). If this is a case, it is possible situation when results fit into memory however the whole JTable is too huge. May be we can have rendering of visible piece of table
Right now tab is automatically named. It could be useful to not only pin tab (see issue #13) but also rename tab.
It is useful to pin tab in result pane. This is to avoid automatic close such tab
At the moment, / and : are not treated as possible characters for symbol atom.
Kdb doesn't recognized `a/b
as symbol. However the following are legitimate symbols `:a/b
, `:
, `asdf:asdfsa//asdf:
This is to be able to move a file from Windows Explorer into Studio.
'[{2x};{x+y}]
outputs nothing while in q console it is output as {2x}{x+y}
I think that initial initialization of the Dialog might require longer time especially if there are network mounts.
Probably we can re-use File Choose dialog between different panels. If we open a file in a frame where we previously loaded file, the dialog would be initiated to the corresponded path. If it is a new frame, the dialog would show last selected location.
At the moment matching braces is highlighted with magenta color. It would be useful to highlight the whole text between matching braces.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.