warmuuh / milkman Goto Github PK
View Code? Open in Web Editor NEWAn Extensible Request/Response Workbench
License: MIT License
An Extensible Request/Response Workbench
License: MIT License
to showcase bi-streaming in Grpc, simple ping-pong
allow exporting of workspaces via usual channels
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
when saving a request, one can only select collections to save the request in, not sub-folders of a collection
First, thanks for Milkman!
A nice-to-have for me is exporting a Collection as an OpenAPI specification. Obviously there are a few issues that might might need to be resolved, such as providing object names for a request body in JSON format and response JSON objects. Without names, these objects would just take the name of the request name.
This would be a big help in developing an OpenAPI specification based on a Milkman test suite, even if a complete specification might need some hand tweaking.
Now with http/2 support coming in 3.7.0, supporting grpc should be easier.
to be verified and fixed, if necessary
apparently, there is something windows-specific going on:
me.dinowernli.grpc.polyglot.protobuf.ProtocInvoker$ProtocInvocationException: Unable to execute protoc binary
at me.dinowernli.grpc.polyglot.protobuf.ProtocInvoker.invokeBinary(ProtocInvoker.java:110)
at me.dinowernli.grpc.polyglot.protobuf.ProtocInvoker.invoke(ProtocInvoker.java:62)
at milkman.plugin.grpc.processor.GrpcRequestProcessor.compileProtoSchema(GrpcRequestProcessor.java:135)
at milkman.plugin.grpc.processor.GrpcRequestProcessor.makeRequest(GrpcRequestProcessor.java:82)
at milkman.plugin.grpc.processor.GrpcRequestProcessor.executeRequest(GrpcRequestProcessor.java:51)
at milkman.plugin.grpc.GrpcPlugin.executeRequestAsync(GrpcPlugin.java:81)
at milkman.ctrl.RequestExecutor$1.call(RequestExecutor.java:43)
at milkman.ctrl.RequestExecutor$1.call(RequestExecutor.java:29)
at javafx.graphics/javafx.concurrent.Task$TaskCallable.call(Task.java:1425)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at javafx.graphics/javafx.concurrent.Service.lambda$executeTask$6(Service.java:725)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at javafx.graphics/javafx.concurrent.Service.lambda$executeTask$7(Service.java:724)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.io.IOException: Cannot run program "/Users/pmucha/protocjar14160495236028116982/bin/protoc.exe": error=316, posix_spawn failed
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1128)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1071)
at com.github.os72.protocjar.Protoc.runProtoc(Protoc.java:117)
at com.github.os72.protocjar.Protoc.runProtoc(Protoc.java:78)
at me.dinowernli.grpc.polyglot.protobuf.ProtocInvoker.invokeBinary(ProtocInvoker.java:107)
... 15 common frames omitted
Caused by: java.io.IOException: error=316, posix_spawn failed
at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:340)
at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:271)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1107)
... 19 common frames omitted
Postman has a setting that determines whether redirect responses should be followed. Sometimes I just want to see that the server returned a 30*, I don't need to follow it.
i would like to use cassandra cql with the existing SQL interface, but there is no good jdbc driver for cassandra, so we need an abstraction over executing some sort of query against a db, which by default tries to resolve to jdbc but can also resolve to e.g. cassandra queries
when searching, hotkey currently is control-f, but it fits better to mac to have command-f
Not every dialog is closeable via esc.
Hi all,
I'm trying to do some REST calls and I'm getting
javax.net.ssl.SSLHandshakeException: The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]
at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131)
at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:117)
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:308)
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:264)
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:255)
at java.base/sun.security.ssl.ServerHello$ServerHelloConsumer.onServerHello(ServerHello.java:968)
at java.base/sun.security.ssl.ServerHello$ServerHelloConsumer.consume(ServerHello.java:890)
at java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:392)
at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:448)
at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:1065)
at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:1052)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask.run(SSLEngineImpl.java:999)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
at java.net.http/jdk.internal.net.http.common.SSLFlowDelegate.lambda$executeTasks$3(SSLFlowDelegate.java:1059)
at java.net.http/jdk.internal.net.http.HttpClientImpl$DelegatingExecutor.execute(HttpClientImpl.java:153)
at java.net.http/jdk.internal.net.http.common.SSLFlowDelegate.executeTasks(SSLFlowDelegate.java:1054)
at java.net.http/jdk.internal.net.http.common.SSLFlowDelegate.doHandshake(SSLFlowDelegate.java:1020)
at java.net.http/jdk.internal.net.http.common.SSLFlowDelegate$Reader.processData(SSLFlowDelegate.java:437)
at java.net.http/jdk.internal.net.http.common.SSLFlowDelegate$Reader$ReaderDownstreamPusher.run(SSLFlowDelegate.java:263)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SynchronizedRestartableTask.run(SequentialScheduler.java:175)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler$CompleteRestartableTask.run(SequentialScheduler.java:147)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run(SequentialScheduler.java:198)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
I have added
-Djdk.tls.client.protocols="SSLv3,TLSv1,TLSv1.1,TLSv1.2" ^
-Dhttps.protocols="TLSv1,TLSv1.1" ^
-Djavax.net.debug=all ^
-Djdk.tls.disabledAlgorithms="" ^
to milkman.bat file (on Windows) but to no avail.
Seems like in JavaRequestProcessor.java
builder.useSystemProperties()
must be called. (according to SO)
Thank you.
make it easier to access body of a http request via script access, escpecially after reactive changes
When I change the url I press the enter key and expect to send a request, but it doesn't :(
The GRPC plugin page doesn't indicate what the chocolatey name is.
The output from choco is:
[ADMIN]: C:\Program Files\PowerToys> choco install milkman-grpc
Chocolatey v0.10.15
Installing the following packages:
milkman-grpc
By installing you accept licenses for the packages.
milkman-grpc not installed. The package was not found with the source(s) listed.
Source(s): 'https://chocolatey.org/api/v2/'
NOTE: When you specify explicit sources, it overrides default sources.
If the package version is a prerelease and you didn't specify `--pre`,
the package may not be found.
Please see https://chocolatey.org/docs/troubleshooting for more
assistance.
Chocolatey installed 0/1 packages. 1 packages failed.
See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).
Failures
- milkman-grpc - milkman-grpc not installed. The package was not found with the source(s) listed.
Source(s): 'https://chocolatey.org/api/v2/'
NOTE: When you specify explicit sources, it overrides default sources.
If the package version is a prerelease and you didn't specify `--pre`,
the package may not be found.
Please see https://chocolatey.org/docs/troubleshooting for more
assistance.
due to changes they made with v1.3, the way, they encode changed (and api).
so content cannot be deciphered via browser anymore.
more details:
https://github.com/PrivateBin/PrivateBin/wiki/Encryption-format#format-version-1-privatebin--121
maybe this changes lead to the javaDeEncryptor being possible now and we can drop SjclDeEncryptor (which uses nashorn)
Version: 3.2.0
OS: Windows 10
Steps to reproduce:
I've included an anonymized dump file that narrows it down to the problem. For whatever reason, PostMan included two environments with the same name, and that causes this issue. In the PostMan UI, I do not see both environments, just the second one.
PostMan dump:
{
"version": 1,
"collections": [
],
"environments": [
{
"id": "28dc01f2-a653-4ce2-a95f-865322c92b12",
"name": "My Workspace - globals",
"values": [
{
"key": "anonymized",
"value": "https://example.org",
"description": "",
"enabled": true
}
]
},
{
"id": "60152d96-b54b-43bb-aece-e7bfdd14ec63",
"name": "My Workspace - globals",
"values": [
{
"key": "anonymized",
"value": "https://example.org",
"description": "",
"enabled": true
},
{
"key": "anonymized2",
"value": "https://example2.org",
"description": "",
"enabled": true
},
{
"key": "anonymized3",
"value": "https://example3.org",
"description": "",
"enabled": true
}
]
}
],
"headerPresets": [],
"globals": []
}
I'm having trouble getting past the TLS handshake to my target, though cURL has no issue. Milkman under Windows has a pop-up reporting...
javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake
...while the target has a log reporting a handshake timeout.
Milkman under Linux has java logs reporting...
07:40:28.769 [JavaFX Application Thread] INFO milkman.ctrl.WorkspaceController - Received response
07:40:28.822 [elastic-2] ERROR milkman.ui.plugin.rest.ResponseBodyTabController - Received Error
java.security.cert.CertificateException: No subject alternative names present
So I'm guessing an alternative name is required in the certificate for Milkman to properly connect?
long urls are hard to edit in text-box. should show a textarea to easier edit the whole string at once
A nice addition to milkman would be a websocket plugin. With support of streaming/async responses starting with Milkman 4.0, this would be achievable. Also, having a websocket UI next to normal requests improves productivity by avoiding context switches.
The UI would be similar to the existing GRPC plugin, allowing to send and recieve multiple request/responses.
Non-Goals: a way to manually send responses based on async chunks sent by the server (i.e. a PONG send by client manually, but only, if the server sent PING before).
Open this: https://api.binance.com/api/v1/exchangeInfo
tested on 3.5.0
If executed from e.g. program directory in Windows, you need elevated rights. Logs and db should be written e.g. to appdata
As i only have windows environment, i cannot really test the created executables. It would be nice to have the build setup to build all three versions during the build (also in windows environement).
maybe using https://github.com/federkasten/appbundle-maven-plugin
The dark theme is usable at best. It can be improved. Some dropdowns still render in white, some fonts are not readable (black on darkgrey). the overall look&feel of this theme could probably be improved as well.
This mainly needs changes in the CSS file
Hello,
In Postman, in the body, there is a form-data input.
How could this be done in Milkman?
Thanks.
Http3 protocol support via kwick/flupke maybe
test server: https://quic.rocks:4433/
for testing performance improvements, any ripple effects where disabled
this leads to no feedback on clikcing buttons.
has to be re-enabled, at least for buttons
because of ClassNotFound: java.rmi.ServerException
this is because java.rmi is not included in jre...
Being able to search for milkman in the gnome overview is nice. You can add a shortcut by creating a .desktop file and install it to either /usr/share/applications
or $HOME/.local/share/applications
.
The way i solved it was by unpacking milkman to
$HOME/.local/opt
and writing the file shown below to $HOME/.local/share/applications/Milkman.desktop
:
[Desktop Entry]
Name=Milkman
Exec=/home/pbsds/.local/opt/milkman-3.2.0/milkman.sh
Icon=/home/pbsds/.local/opt/milkman-3.2.0/milk-bottle.png
Terminal=false
Type=Application
Keywords=milkman;postman;rest;http;sql;jdbc;java;
(i did download the milk-bottle.png image to make this work)
I don't know whether the .desktop file supports environment variables or not, but adding a script or something to generate this file (to fill in the home path) or at least providing a template .desktop file would be nice.
Support for Rsocket
Version: 3.2.0
OS: Windows 10
Issue: After installing the application with all plugins, I played around a little bit, but was unable to get HTTP requests to work (still looking into that). I tried removing most of the plugins, leaving the Rest and Explore plugins. After doing that and restarting the application, Milkman would flash on screen and then quickly exit. Looking into the logs (dump below), it seems that the Explore plugin is dependent upon Notes plugin. After re-adding that plugin, I got a similar dump for missing class ScriptingAspect
.
It's not clear from documentation whether this dependency is intentional or not. If nothing else, an error popup before exit could be beneficial.
Log Dump:
2019-07-09 08:08:46,018 ERROR [JavaFX Application Thread] o.d.n.m.JacksonFacade [JacksonFacade.java:136] Error while converting document to object
java.lang.IllegalArgumentException: Invalid type id 'milkman.plugin.note.NotesAspect' (for id type 'Id.class'): no such class found (through reference chain: milkman.domain.Workspace["openRequests"]->java.util.ArrayList[0]->milkman.ui.plugin.rest.domain.RestRequestContainer["aspects"]->java.util.ArrayList[3])
at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:3512)
at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:3431)
at org.dizitart.no2.mapper.JacksonFacade.asObject(JacksonFacade.java:134)
at org.dizitart.no2.mapper.GenericMapper.asObjectInternal(GenericMapper.java:53)
at org.dizitart.no2.mapper.AbstractMapper.asObject(AbstractMapper.java:76)
at org.dizitart.no2.objects.ObjectCursor$ObjectCursorIterator.next(ObjectCursor.java:110)
at milkman.persistence.PersistenceManager.loadWorkspaceNames(PersistenceManager.java:50)
at milkman.ctrl.ApplicationController.initApplication(ApplicationController.java:62)
at milkman.MilkmanApplication.start(MilkmanApplication.java:27)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Invalid type id 'milkman.plugin.note.NotesAspect' (for id type 'Id.class'): no such class found (through reference chain: milkman.domain.Workspace["openRequests"]->java.util.ArrayList[0]->milkman.ui.plugin.rest.domain.RestRequestContainer["aspects"]->java.util.ArrayList[3])
at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:339)
at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:311)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:298)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:249)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:26)
at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:490)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:95)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:260)
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:163)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:135)
at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId(AsPropertyTypeDeserializer.java:120)
at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject(AsPropertyTypeDeserializer.java:91)
at com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserializeWithType(AbstractDeserializer.java:142)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:279)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:249)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:26)
at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:490)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:95)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:260)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:125)
at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:3507)
... 17 common frames omitted
Caused by: java.lang.IllegalArgumentException: Invalid type id 'milkman.plugin.note.NotesAspect' (for id type 'Id.class'): no such class found
at com.fasterxml.jackson.databind.jsontype.impl.ClassNameIdResolver._typeFromId(ClassNameIdResolver.java:66)
at com.fasterxml.jackson.databind.jsontype.impl.ClassNameIdResolver.typeFromId(ClassNameIdResolver.java:48)
at com.fasterxml.jackson.databind.jsontype.impl.TypeDeserializerBase._findDeserializer(TypeDeserializerBase.java:156)
at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId(AsPropertyTypeDeserializer.java:106)
at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject(AsPropertyTypeDeserializer.java:91)
at com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserializeWithType(AbstractDeserializer.java:142)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:279)
... 35 common frames omitted
"Graal" is a very short and convenient form to speak colloquially. But for Google Search and in formal documentation, it's far better to say "GraalVM". Could you please fix it?
I'm using Milkman 3.5.0. I'm importing my collection from postman but it's not importing properly. The structure looks like this:
After import in Milkman it looks like this:
Here's the example collection to reproduce the issue:
https://gist.github.com/kleewho/7af64aaf94e8a8172a9566a43a4114c9
Steps to Reproduce:
(1) Import a collection from *** in Milkman
(2) Right click the imported collection and select 'Export' -> Postman collection
(3) Import the postman collection in postman
(3) Notice that request urls are blank.
if there is an empty environment variable, it will throw an NPE internally (swallowed) and the request is not executed.
currently, errors are swallowed. also, description can be better and maybe some setters/getters for e.g. headers-aspect (getHeader(...), setHeader(... , ...)
Please add a Chocolatey Package.
This makes it very easy to use the project on Windows.
See https://chocolatey.org/packages/postman
Thank you.
requests should be sortable via drag & drop, also should be movable between collections.
The reason for not making collections drag/dropable is that this would interfere with auto-sorting (starred, a-z), which i prefer over manual sorting (also, this is how postman does it)
It looks like that the search function e.g. in the response body is case sensitive. This should be changed.
Just tested 3.7.0 on Fedora 31 (Gnome 3). No app window showed up. Got this in console:
$ ./milkman.sh
11:51:42.658 [main] INFO milkman.MilkmanApplication - VM Startup time: 322 ms
java.lang.UnsupportedOperationException: Taskbar API is not supported on the current platform
at java.desktop/java.awt.Taskbar.getTaskbar(Taskbar.java:216)
at milkman.ui.main.MainWindow.setIcon(MainWindow.java:98)
at milkman.ui.main.MainWindow.start(MainWindow.java:62)
at milkman.MilkmanApplication.start(MilkmanApplication.java:43)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$11(GtkApplication.java:277)
at java.base/java.lang.Thread.run(Thread.java:834)
11:51:43.123 [JavaFX Application Thread] INFO milkman.ctrl.WorkspaceController - Diplaying request: RequestContainer(name=New Request)
11:51:43.370 [JavaFX Application Thread] INFO milkman.ui.main.WorkingAreaComponent - tab repainted
11:51:43.370 [JavaFX Application Thread] INFO milkman.ui.main.WorkingAreaComponent - request area refreshed
11:51:43.993 [JavaFX Application Thread] INFO milkman.MilkmanApplication - App Initialization time: 1333 ms
11:51:44.167 [Thread-5] INFO milkman.cds.AppCdsGenerator - AppCds archive is up-to-date and usable. Not regenerating.
Hi there, somehow I noticed your usage of protoc-jar
(I'm the author)
5e45f7e
Note that an API exists that allows capturing stdout/stderr: public static int runProtoc(String[] args, OutputStream out, OutputStream err)
And there is a built-in option to include the well-known types (--include_std_types
)
Also, I saw something about grpc reflection -- FYI there is a separate project to make life easier with protobuf reflection, check it out perhaps:
https://github.com/os72/protobuf-dynamic
Cheers!
unable to run the milkman.sh
script.
# pull down dist
wget https://github.com/warmuuh/milkman/releases/download/3.2.0/milkman-dist-linux64-bin.zip
# unzip it
unzip milkman-dist-linux64-bin.zip
cd milkman-dist-linux64-bin/
# make milkman.sh executable
chmod +x milkman.sh
# try and run it!
./milkman.sh
you get the following error:
$ bash: ./milkman.sh: /bin/sh^M: bad interpreter: No such file or directory
Replace Windows line ending with Unix line endings and then run:
$ sed -i -e 's/\r$//' milkman.sh
$ ./milkman.sh
starting with 3.2.1, response tabs are added without clearing first on switching requests
if entries are sorted in environent var table, and then a delete action is triggered, the whole table becomes blank and the key was not deleted
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.