juliaweb / mux.jl Goto Github PK
View Code? Open in Web Editor NEWMiddleware for Julia
License: Other
Middleware for Julia
License: Other
on julia 1.0 even after defining @sync serve(app, 8000) julia just exits right away after the server is started.
but if i run the script file in the REPL it doesn't exit and the server keeps listening to the defined port.
I switched to julia-0.6.2 and it works as expected.
Thank you
I'm trying to build a mux based system, but we have no examples around setting headers, and how to put stuff in various parts of the chain.
I've tried...
# Access-Control-Allow-Origin: *
function withCors(app, req)
res = app(req)
res.headers["Access-Control-Allow-Origin"] = "*"
res
end
but, the app(req) is not a response object. and I have no way I can find of turning it into one.
The examples all seem to think that app(req) does give you a response object.
and if you want many of your pages to use the same middle layer AFTER the page call, how do you tell it to do that?
Mux is a dependency when loading Escher, and I had to make the following signature change in websockets.jl to load it in 0.4:
function todict(rc::Tuple{Request, WebSocket})
I put the example code in server.jl
and run it by julia server.jl
. The server did not start up. The process ended immediately.
I think HttpServer
is not required in basic.jl, here. I ran the runtests.jl file in test folder, it worked fine even without using HttpServer
in basic.jl file.
Hi,
Any plans / progress on adding support for HTTP verbs?
What I have in mind is routing functions that would map to HTTP methods other than GET (which is now provided by "page" & co.): POST, PUT, PATCH, DELETE, etc.
Additionally, a "resource" routing function would be nice, something like:
resource("product", Product)
This would automatically map all the HTTP verbs to methods on the Product type,
ex:
GET "/products" would result in calling Product.index(req)
POST "/products" would result in calling Product.create(req)
PATCH "/products/:id" would result in calling Product.update(req)
DELETE "/products/:id" would result in calling Product.delete(req)
and so on.
If nobody works on this and it's found useful, I could try to add it, starting with the basic HTTP verbs function first.
I'm not entirely sure about the value of resources vs cognitive load to API users, though surely they'd be nice as a convenience method.
I guess the best approach would be to code them as middlewares that could eventually be included by default as part of the core.
-- Adrian
Hey,
Mux has been causing a lot of problems over at Escher recently. See JuliaGizmos/Escher.jl#66, JuliaGizmos/Escher.jl#62, JuliaGizmos/Escher.jl#53.
In the current state, it is broken on 0.3
and gives a ERROR: isexpr not defined
while on 0.4
it freezes as mentioned in #10.
The good news is all these issues are fixed in master
and Pkg.checkout("Mux")
fixes things. It would be awesome if you could release a new version, solving this and not having to need the Pkg.checkout
anymore! 😄
Thanks.
Rohit.
cc: @shashi
ulia> using Mux
julia> function df(req)
@info "h1", req
end
df (generic function with 1 method)
julia> @app test = (
Mux.defaults,
page(respond("<h1>Hello World!</h1>")),
page("/about",
probabilty(0.1, respond("<h1>Boo!</h1>")),
respond("<h1>About Me</h1>")),
page("/user/", df),
Mux.notfound())
julia> serve(test)
Task (runnable) @0x00007f7a146aebf0
shell> curl -L http://localhost:8000/user/
[ Info: ("h1", Dict{Any,Any}(:query=>"",:method=>"GET",:params=>Dict{Any,Any}(),:path=>SubString{String}[],:cookies=>HTTP.Cookies.Cookie[],:uri=>HTTP.URI("/user/"),:data=>UInt8[],:headers=>Pair{SubString{String},SubString{String}}["Host"=>"localhost:8000", "User-Agent"=>"curl/7.58.0", "Accept"=>"*/*"]))
I am using Mux 0.7.0
Julia Version 1.1.0
Commit 80516ca202 (2019-01-21 21:24 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-6.0.1 (ORCJIT, broadwell)
I'm trying to figure out how to stream data with Mux.jl
I want the body to be taken from IOBuffer until the buffer is close. Any suggestion?
Would be nice to publish some metrics
Hi there,
This is a request for help rather than an issue with Mux.jl. Apologies if this belongs somewhere else.
I am trying to migrate example 4 in this project from Meddle.jl to Mux.jl. The Meddle version is in example_4_middleware_MEDDLE
and the Mux version is in example_4_middleware
, still under development.
As you can see in example_4_middleware/main_middleware.jl
I'm building up to it and I'm having a little trouble understanding what's going on. What should the 2nd argument to Page()
be? A function that takes a request and returns a response?
FYI - it may or may not help to know that both examples are functionally the same as example_3_servefiles, only the latter does not use middleware at all.
Cheers,
Jock
When upgrading some code to Julia 1.0, I'm finding Mux failing on server.jl:26 with the error below. I haven't too much into the Mux code, but if the 'const' is removed, the code functions again. Local constants aren't supported in newer versions (not sure when that was supported/removed), but if it is ok, could you remove the keyword?
ERROR: LoadError: LoadError: syntax: unsupported `const` declaration on local variable around /home/gearsad/.julia/dev/Mux/src/server.jl:26
Stacktrace:
[1] include at ./boot.jl:317 [inlined]
[2] include_relative(::Module, ::String) at ./loading.jl:1041
[3] include at ./sysimg.jl:29 [inlined]
[4] include(::String) at /home/gearsad/.julia/dev/CaesarServer/src/CaesarServer.jl:1
[5] top-level scope at none:0
[6] include at ./boot.jl:317 [inlined]
[7] include_relative(::Module, ::String) at ./loading.jl:1041
[8] include(::Module, ::String) at ./sysimg.jl:29
[9] top-level scope at none:2
[10] eval at ./boot.jl:319 [inlined]
[11] eval(::Expr) at ./client.jl:389
[12] top-level scope at ./none:3
....
Anyone who's run into an error somewhere within a Mux app knows that the stacktraces are pretty inscrutable, due to the rather heavy usage of anonymous functions. We should find a way to make stacktraces more readable without compromising performance (such as the overhead of including lots of try/catch blocks) and composability.
In parallel with generating nicer stacktraces, we should also consider a "debug mode" which would allow better introspection into "message flow" through an app, potentially at the detriment of performance if necessary. Making it easy to use any of the JuliaDebug packages to debug requests and responses would be very useful, IMO.
It looks like the migration to HTTP caused some breaking changes in Mux.serve
. This is the code that was previously used in WebIO:
julia> using Mux
julia> app = x -> nothing
#5 (generic function with 1 method)
julia> http = Mux.App(Mux.mux(
Mux.defaults,
app,
Mux.notfound()
));
julia> websock = Mux.App(Mux.mux(
Mux.wdefaults,
Mux.route("/webio-socket", x -> nothing),
Mux.wclose,
Mux.notfound(),
));
┌ Warning: The `keep` keyword argument is deprecated; use `keepempty` instead
│ caller = ip:0x0
└ @ Core :-1
julia> Mux.serve(http, websock, 8000)
ERROR: MethodError: no method matching HTTP.Servers.Server(::HTTP.Handlers.HandlerFunction{getfield(Mux, Symbol("##7#8")){Mux.App}}, ::HTTP.Handlers.HandlerFunction{getfield(Mux, Symbol("##9#10")){Mux.App}})
Closest candidates are:
HTTP.Servers.Server(::H<:HTTP.Handlers.Handler) where H<:HTTP.Handlers.Handler at /home/rdeits/.julia/dev/HTTP/src/Servers.jl:190
HTTP.Servers.Server(::H<:HTTP.Handlers.Handler, ::IO; cert, key, args...) where H<:HTTP.Handlers.Handler at /home/rdeits/.julia/dev/HTTP/src/Servers.jl:190
Stacktrace:
[1] serve(::Mux.App, ::Mux.App, ::Int64) at /home/rdeits/.julia/dev/Mux/src/server.jl:63
[2] top-level scope at none:0
(tested with Mux master on Julia v0.7-beta2)
It looks like Mux
is trying to construct an HTTP.Server
from both handlers, but there's no method to do that.
Can you help me figure out how to migrate to the new API? Or is this just a bug?
The app, no matter configured or not, emits "info" on each request. It slows down response time while testing it and wastes log, that must be used for other stuff.
I am getting the following precompilation error on julia 1.1 with v0.6.0
julia> using Mux
[ Info: Precompiling Mux [a975b10e-0019-58db-a62f-e48ff68538c9]
WARNING: could not import HTTP.HandlerFunction into Mux
ERROR: LoadError: LoadError: UndefVarError: Server not defined
Stacktrace:
[1] top-level scope at none:0
[2] include at .\boot.jl:326 [inlined]
[3] include_relative(::Module, ::String) at .\loading.jl:1038
[4] include at .\sysimg.jl:29 [inlined]
[5] include(::String) at C:\Users\Maxime\.julia\packages\Mux\a0IXM\src\Mux.jl:1
[6] top-level scope at none:0
[7] include at .\boot.jl:326 [inlined]
[8] include_relative(::Module, ::String) at .\loading.jl:1038
[9] include(::Module, ::String) at .\sysimg.jl:29
[10] top-level scope at none:2
[11] eval at .\boot.jl:328 [inlined]
[12] eval(::Expr) at .\client.jl:404
[13] top-level scope at .\none:3
in expression starting at C:\Users\Maxime\.julia\packages\Mux\a0IXM\src\server.jl:56
in expression starting at C:\Users\Maxime\.julia\packages\Mux\a0IXM\src\Mux.jl:24
ERROR: Failed to precompile Mux [a975b10e-0019-58db-a62f-e48ff68538c9] to C:\Users\Maxime\.julia\compiled\v1.1\Mux\cs9xb.ji.
Stacktrace:
[1] error(::String) at .\error.jl:33
[2] compilecache(::Base.PkgId, ::String) at .\loading.jl:1197
[3] _require(::Base.PkgId) at .\loading.jl:960
[4] require(::Base.PkgId) at .\loading.jl:858
[5] require(::Module, ::Symbol) at .\loading.jl:853
Any idea on how to fix this? Thanks
https://github.com/JuliaWeb/Mux.jl/blob/master/src/routing.jl#L42
page(p::Vector, app...) =
branch(req -> length(p) == length(req[:path]) && matchpath!(p, req), app...)
req[:app]
makes the assumption that the request is a Dict with that key, which is only the case when todict
has been used.
This popped up on me recently and haven't been able to figure out what went wrong. No bites on discourse so might be a real issue. As the example code should replicate, when accessing a widget from "/" it is responsive and "clicked" is printed in the REPL, while "/page1" is unresponsive for the same required widget. Not the behavior I was expecting or experiencing previously.
I do get a websockets error (pasted below) but unclear why it would selectively affect the "/page1" endpoint. Hopefully this is an obvious fix, but I was able to replicate the issue locally and on an aws server, both running Julia 1.0.2, Mux v0.5.3 and Interact v0.9.0. Thinking this is a Mux issue and not an interact issue because of the websocket error and the widget working at least for the "/" endpoint.
Thank you for any help you can provide!
Andrew
Error:
Error handling websocket connection: WebSockets.WebSocketClosedError(“ws|server respond to OPCODE_CLOSE 1001:Going Away”)"
Example code:
using Mux, Interact
# setting up Interact.jl widget
b = button("Test click")
on(n -> println("clicked"), b)
# putting together apps for root and id1 page using same widget
app1 = page("/", req -> b)
app2 = page("/page1", req -> b)
# stacking together
app = Mux.stack(app1, app2)
# serving
WebIO.webio_serve(app, 8000)
Given the recent rewrite of HTTP.jl it seems like it might make sense to migrate Mux over to it. Opening this issue for discussion.
When I run the first example in a Julia file, Julia exits before the web server starts. I think the example should be amended:
@sync serve(test)
Notably, without this it doesn't print out any sort of message. I had to read the mux code to find out what was going on.
:^)
Eg, travis, codecov. Ill do it if no one gets around to it first.
Need this and Hiccup.jl for Escher.
is there a blocking version of the serve function? when I launch my web server I want to be able to leave it running forever. I'm happy to put a
serve(app, port)
waitforever()
into my app but I think it would be useful to have a serve_sync function. what do you think?
I'm happy to raise a pull request if you think this is a good idea.
I'm having trouble with a fairly simple example, using curl I'm always getting connection reset by peer.
using Mux
println("Starting")
@app routes = (
Mux.defaults,
page(respond("Healthy")),
Mux.notfound())
serve(routes, ENV["PORT"])
println("Done starting")
Base.JLOptions().isinteractive==0 && wait()
Mux entry in manifest
[[Mux]]
deps = ["AssetRegistry", "Base64", "HTTP", "Hiccup", "Lazy", "Pkg", "Sockets", "WebSockets"]
git-tree-sha1 = "3621676e7f711aca14d783d1bff9ac379d9df6b7"
uuid = "a975b10e-0019-58db-a62f-e48ff68538c9"
version = "0.7.1"
curl -v
curl -v localhost:9000
* Rebuilt URL to: localhost:9000/
* Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 9000 (#0)
> GET / HTTP/1.1
> Host: localhost:9000
> User-Agent: curl/7.52.1
> Accept: */*
>
* Recv failure: Connection reset by peer
* Curl_http_done: called premature == 1
* stopped the pause stream!
* Closing connection 0
curl: (56) Recv failure: Connection reset by peer
Any suggestions?
We support WebSockets.jl integration but have no tests that actually exercise it. Since it's a direct dependency, it should be covered by the test suite.
How to receive post requests?
Julia is really fast. So I am curious about Mux
's performance.
Some benchmark should be really helpful.
such as this https://github.com/heckpsi-lab/em-midori#performance.
Cool library. It looks like notfound() isn't setting the status code though.
using Mux
@app test = (
Mux.defaults,
page(respond("<h1>Hello World!</h1>")),
Mux.notfound())
serve(test)
curl -v http://127.0.0.1:8000/404_plz
* Trying 127.0.0.1...
* Connected to 127.0.0.1 (127.0.0.1) port 8000 (#0)
> GET /nod HTTP/1.1
> Host: 127.0.0.1:8000
> User-Agent: curl/7.43.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Connection: keep-alive
< Content-Length: 9
< Content-Type: text/html; charset=utf-8
< Date: Sat, 31 Oct 2015 08:12:47
< Content-Language: en
< Server: Julia/0.4.0
<
* Connection #0 to host 127.0.0.1 left intact
Not found
After some digging, it looks like this is because of a (mis?)use of the Lazy.jl @d macro:
# from Mux.jl/src/examples/basic.jl
notfound(s = "Not found") = mux(status(404), respond(s))
# from Mux.jl/src/basics.jl
reskey(k, v) = post(res -> merge!(res, @d(k=>v)))
status(s) = reskey(:status, s)
Which unfortunately seems to do something other than what's intended by that line...
julia> k = 10
10
julia> @d(k => 1)
Dict{Any,Any} with 1 entry:
:k => 1
I can fork and define reskey(k, v) = post(res -> merge!(res, Dict(k=>v)))
if you'd like. I have to admit I'm confused about what precisely @d is intended to do, so I'm asking first.
req
seems to be of type Dict{Any,Any}, couldn't Dict{Symbol, Any} be a bit more specific? All keys seem to be symbols. It could also be good to add the values for each key of req in the README
ERROR: LoadError: LoadError: UndefVarError: @errs not defined
in include at ./boot.jl:250
in include_from_node1 at ./loading.jl:129
in include at ./boot.jl:250
in include_from_node1 at ./loading.jl:129
in reload_path at ./loading.jl:153
in _require at ./loading.jl:68
in require at ./loading.jl:51
while loading /home/amitm/.julia/v0.4/Mux/src/server.jl, in expression starting on line 46
while loading /home/amitm/.julia/v0.4/Mux/src/Mux.jl, in expression starting on line 22
Hi, I cannot figure out how to configure rate limits, any suggestions? I think it's the HTTP.listen rate_limits
param, but how do I set it from the Mux.serve?
Thanks
It'd be great to se Julia and Mux there: https://www.techempower.com/benchmarks/
I might be missing something, but it seems to me that I can push middlewares at the beginning of the stack, before the routes are evaluated; but once a route is matched, the response is sent directly to the browser, skipping middlewares added after the routing.
For practical purposes, the routing middleware should, like any other middleware, have access to and modify the request and response dictionaries, and return them to the next middleware in the stack. An obvious application of this is a response logger. I've been able to add a request logger at the top of the middlewares stack, but the response logger, added at the bottom of the middleware stack is never called.
Any advice on how could this be achieved? (a)
Related to this, can you please point me in the right direction in regards to:
(b) how can I get access to the response dict, similar to the request dict (in HttpServer they're both used equally)
(c) how can I setup communication between HttpServer and Mux so that for example application errors are logged back to the console / logger, rather than only having them displayed in the web page response (imagine an app running unmanaged in production, devs would never know about errors displayed to users).
I noticed this while running an automatic "recompile everything" script: since this package is used by others for which __precompile__(true)
, this package needs it too.
page("/foo/:key", server)
only matches one word keys like foo/bar
. How do I match /foo/bar/baz
?
When building Mux, the following warning is displayed:
WARNING: using HTTP.stack in module Mux conflicts with an existing identifier.
This can be fixed easily by changing the using HTTP
statements (in 2 places) to using HTTP: HTTP
This looks a bit odd and I could not find this particular syntax in the documentation anywhere, but it works. What it does is to just make the module HTTP reachable within Mux and its included files, without actually bringing all the names exported by HTTP into the Mux scope. Among the exports is stack
. Mux has its own declaration of stack, which is causing the conflict.
In Mux all references to HTTP internals are done with dot-syntax so it is not necessary to bring into Mux any of the HTTP exports. Only the namespace of the module HTTP is needed and this is what the suggested code achieves.
I can provide the necessary PR if the above change sounds acceptable
Kobus
using Mux
@app test = (
Mux.defaults,
page(respond("<h1>Hi</h1")),
Mux.notfound())
@sync serve(test, port=1234)
Only spawns a Server on 0.0.0.0:1234
how is that changeable ? host=127.0.0.1 in the serve doesnt work
Master doesn't have depwarns but the latest tagged release does, so could you tag a new release?
I thought I knew a bit of Julia, but I am still a newbie. I am trying to see how you would define a route that only match POST (and a different function for GET/OPTION). "p" is the path ... I do not see anywhere the METHOD is considered in matching.
route(p, app...) = branch(req -> matchpath!(p, req), app...)
route(p::AbstractString, app...) = route(splitpath(p), app...)
route(app::Function, p) = route(p, app)
Also, if I use @app ....and I have a few lines for each route ....this function get huge!
@app app = (
Mux.defaults,
#page("/about", req -> hello(req)),
#method("GET",
#route("Hello world!", "/about"),
route(get_meta,"/api/p3meta"),
Mux.notfound()
)
can I add after defining app?
In examples/files.jl
, for example, constructing an HTML div
element throws a warning on 0.4:
Warning: both Hiccup and Base export "div"; uses of it in module Mux must be qualified
Similar to #89, we should add examples to the README of how to serve websockets with Mux.
Hi,
I don't know if this is an issue with Mux, but when I try to add Mux, I get some errors. I copied below my latest attempt. I'm on a Windows Server on an Azure VM with Julia 0.4 rc1.
It looks like I can grab all required packages except Nettle and GnuTLS.
Any ideas? Thanks
julia> Pkg.update()
INFO: Updating METADATA...
INFO: Updating cache of BinDeps...
INFO: Updating cache of SHA...
INFO: Updating cache of Docile...
INFO: Computing changes...
INFO: Upgrading BinDeps: v0.3.15 => v0.3.16
INFO: Upgrading Docile: v0.5.18 => v0.5.19
INFO: Upgrading SHA: v0.1.1 => v0.1.2
julia> Pkg.checkout("Mux")
INFO: Checking out Mux master...
INFO: Pulling Mux latest master...
INFO: No packages to install, update or remove
julia> Pkg.build("Mux")
INFO: Building HttpParser
INFO: Building WinRPM
INFO: Downloading https://cache.e.ip.saba.us/http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_13.1/repodata/repomd.xml
INFO: Downloading https://cache.e.ip.saba.us/http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_13.1/repodata/7a833a399a331e96db98ada98a76ed38c7938db5ab8c228f50e8cf4d505283b1-pri
mary.xml.gz
WARNING: Unknown download failure, error code: 2148270088
WARNING: Retry 1/5 downloading: https://cache.e.ip.saba.us/http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_13.1/repodata/7a833a399a331e96db98ada98a76ed38c7938db5ab8c228f50e8cf
4d505283b1-primary.xml.gz
WARNING: Unknown download failure, error code: 2148270088
WARNING: Retry 2/5 downloading: https://cache.e.ip.saba.us/http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_13.1/repodata/7a833a399a331e96db98ada98a76ed38c7938db5ab8c228f50e8cf
4d505283b1-primary.xml.gz
WARNING: Unknown download failure, error code: 2148270088
WARNING: Retry 3/5 downloading: https://cache.e.ip.saba.us/http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_13.1/repodata/7a833a399a331e96db98ada98a76ed38c7938db5ab8c228f50e8cf
4d505283b1-primary.xml.gz
WARNING: Unknown download failure, error code: 2148270088
WARNING: Retry 4/5 downloading: https://cache.e.ip.saba.us/http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_13.1/repodata/7a833a399a331e96db98ada98a76ed38c7938db5ab8c228f50e8cf
4d505283b1-primary.xml.gz
WARNING: Unknown download failure, error code: 2148270088
WARNING: Retry 5/5 downloading: https://cache.e.ip.saba.us/http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_13.1/repodata/7a833a399a331e96db98ada98a76ed38c7938db5ab8c228f50e8cf
4d505283b1-primary.xml.gz
WARNING: received error 0 while downloading https://cache.e.ip.saba.us/http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_13.1/repodata/7a833a399a331e96db98ada98a76ed38c7938db5ab
8c228f50e8cf4d505283b1-primary.xml.gz
INFO: Downloading https://cache.e.ip.saba.us/http://download.opensuse.org/repositories/windows:/mingw:/win64/openSUSE_13.1/repodata/repomd.xml
INFO: Downloading https://cache.e.ip.saba.us/http://download.opensuse.org/repositories/windows:/mingw:/win64/openSUSE_13.1/repodata/d261b71262ba05d3f6598be3de875ce921b225cc15e49ed2bd844600b506ef1c-pri
mary.xml.gz
WARNING: Unknown download failure, error code: 2148270088
WARNING: Retry 1/5 downloading: https://cache.e.ip.saba.us/http://download.opensuse.org/repositories/windows:/mingw:/win64/openSUSE_13.1/repodata/d261b71262ba05d3f6598be3de875ce921b225cc15e49ed2bd8446
00b506ef1c-primary.xml.gz
WARNING: Unknown download failure, error code: 2148270088
WARNING: Retry 2/5 downloading: https://cache.e.ip.saba.us/http://download.opensuse.org/repositories/windows:/mingw:/win64/openSUSE_13.1/repodata/d261b71262ba05d3f6598be3de875ce921b225cc15e49ed2bd8446
00b506ef1c-primary.xml.gz
WARNING: Unknown download failure, error code: 2148270088
WARNING: Retry 3/5 downloading: https://cache.e.ip.saba.us/http://download.opensuse.org/repositories/windows:/mingw:/win64/openSUSE_13.1/repodata/d261b71262ba05d3f6598be3de875ce921b225cc15e49ed2bd8446
00b506ef1c-primary.xml.gz
WARNING: Unknown download failure, error code: 2148270088
WARNING: Retry 4/5 downloading: https://cache.e.ip.saba.us/http://download.opensuse.org/repositories/windows:/mingw:/win64/openSUSE_13.1/repodata/d261b71262ba05d3f6598be3de875ce921b225cc15e49ed2bd8446
00b506ef1c-primary.xml.gz
WARNING: Unknown download failure, error code: 2148270088
WARNING: Retry 5/5 downloading: https://cache.e.ip.saba.us/http://download.opensuse.org/repositories/windows:/mingw:/win64/openSUSE_13.1/repodata/d261b71262ba05d3f6598be3de875ce921b225cc15e49ed2bd8446
00b506ef1c-primary.xml.gz
WARNING: received error 0 while downloading https://cache.e.ip.saba.us/http://download.opensuse.org/repositories/windows:/mingw:/win64/openSUSE_13.1/repodata/d261b71262ba05d3f6598be3de875ce921b225cc15
e49ed2bd844600b506ef1c-primary.xml.gz
INFO: Building Nettle
===========================================================================================[ ERROR: Nettle ]============================================================================================
LoadError: None of the selected providers can install dependency nettle.
Use BinDeps.debug(package_name) to see available providers
while loading C:\Users\Eric.Forgy.julia\v0.4\Nettle\deps\build.jl, in expression starting on line 39
INFO: Building GnuTLS
===========================================================================================[ ERROR: GnuTLS ]============================================================================================
LoadError: None of the selected providers can install dependency gnutls.
Use BinDeps.debug(package_name) to see available providers
while loading C:\Users\Eric.Forgy.julia\v0.4\GnuTLS\deps\build.jl, in expression starting on line 59
============================================================================================[ BUILD ERRORS ]============================================================================================
WARNING: Nettle and GnuTLS had build errors.
Pkg.build("Nettle", "GnuTLS")
deps/build.jl
scriptI'm using a route with the POST method:
route("/teste",req->method("POST",withHeaders(meuteste(req), req)))
but I'm always having the following error:
MethodError: no method matching show(::IOContext{Base.AbstractIOBuffer{Array{UInt8,1}}}, ::MIME{Symbol("text/html")}, ::Mux.##5#6{Mux.##29#30{String},Dict{Symbol,Any}})...
Could someone tell me what's wrong?
I am opening this issue just to discuss the matter related to the above mentioned project. I am an aspirant to participate in GSoC 2017 with this project.
I have made couple of pull requests, can someone please take a look at them.
When overwriting a already served app with the @app macro, as described in the readme, the server does not update :(
Anyone else got this problem?
Using Julia 1.0.1 on MacOS
Mux
depends on HttpServer
and HttpServer
depends on MbedTLS
.
But the MbedTLS's master code doesn't support julia 0.4.
So I think Mux
should not support julia 4.0 too.
What do you think of this?
Hi everyone,
I am new to julia and experience problems using Julia Pro 1.0.1 installation on Windows 10.
I get the following Error:
ERROR: Unsatisfiable requirements detected for package WebSockets [104b5d7c]:
WebSockets [104b5d7c] log:
├─possible versions are: [0.0.1-0.0.6, 0.1.0-0.1.2, 0.2.0-0.2.3, 0.3.0, 0.4.0, 0.5.0, 1.0.0-1.0.3]
or uninstalled
├─restricted by julia compatibility requirements to versions: 1.0.0-1.0.3 or uninstalled
├─restricted by compatibility requirements with Mux [a975b10e] to versions: [0.0.1-0.0.6, 0.1.0-0.1
.2, 0.2.0-0.2.3, 0.3.0, 0.4.0, 0.5.0, 1.0.0-1.0.3], leaving only versions: 1.0.0-1.0.3
│ └─Mux [a975b10e] log:
│ ├─possible versions are: [0.1.0-0.1.1, 0.2.0-0.2.3, 0.3.0-0.3.1, 0.4.0, 0.5.0-0.5.3] or uninsta
lled
│ ├─restricted to versions * by an explicit requirement, leaving only versions [0.1.0-0.1.1, 0.2.
0-0.2.3, 0.3.0-0.3.1, 0.4.0, 0.5.0-0.5.3]
│ └─restricted by julia compatibility requirements to versions: [0.3.1, 0.4.0, 0.5.0-0.5.3] or un
installed, leaving only versions: [0.3.1, 0.4.0, 0.5.0-0.5.3]
└─restricted by compatibility requirements with HTTP [cd3eb016] to versions: [0.0.1-0.0.6, 0.1.0-0.
1.2, 0.2.0-0.2.3, 0.3.0, 0.4.0, 0.5.0] or uninstalled — no versions left
└─HTTP [cd3eb016] log:
├─possible versions are: 0.7.0 or uninstalled
└─restricted to versions * by an explicit requirement, leaving only versions 0.7.0
Is that an known issue or can anyone help?
Thank you!
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.