dlang / dub-registry Goto Github PK
View Code? Open in Web Editor NEWOnline registry for dub packages
License: Boost Software License 1.0
Online registry for dub packages
License: Boost Software License 1.0
If you have no packages, the message reads:
"You don't have registered any packages, yet."
It should read:
"You haven't registered any packages yet."
ISC license should be considered a free software license.
I tried to register to submit my scrypt.d package to dub, but the link it sent me via email throws an error:
500 - Internal Server Error
Internal Server Error
Internal error information:
object.Exception@../../../opt/vibe/source/vibe/inet/path.d(287): Empty path entries not allowed.
----------------
./allsites(bool std.exception.enforce!(bool).enforce(bool, lazy const(char)[], immutable(char)[], ulong)+0x6b) [0x5a107b]
./allsites(vibe.inet.path.PathEntry[] vibe.inet.path.splitPath(immutable(char)[])+0x2fa) [0x66e062]
./allsites(vibe.inet.path.Path vibe.inet.path.Path.__ctor(immutable(char)[])+0x25) [0x66c5f9]
./allsites(@property void vibe.inet.url.Url.localURI(immutable(char)[])+0x1aa) [0x66a4aa]
./allsites(void delegate(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse) vibe.http.proxy.reverseProxyRequest(immutable(char)[], ushort).void handleRequest(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse)+0x4f) [0x644f8f]
./allsites(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, immutable(char)[], vibe.http.server.HTTPServerListener, ref vibe.http.server.HttpServerSettings, ref bool)+0x1642) [0x653a7a]
./allsites(void vibe.http.server.handleHttpConnection(vibe.core.net.TcpConnection, vibe.http.server.HTTPServerListener)+0x1fc) [0x652338]
./allsites(void vibe.http.server.listenHttpPlain(vibe.http.server.HttpServerSettings, void delegate(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse)).void doListen(vibe.http.server.HttpServerSettings, vibe.http.server.HTTPServerListener, immutable(char)[]).void __lambda52(vibe.core.net.TcpConnection)+0x36) [0x64f0d2]
./allsites(extern (C) nothrow void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).void ClientTask.execute()+0x2cb) [0x612507]
./allsites(void vibe.core.core.CoreTask.run()+0xf5) [0x61ec35]
./allsites(void core.thread.Fiber.run()+0x2a) [0x6ada6a]
./allsites(fiber_entryPoint+0x61) [0x6ad97d]
[(nil)]
It would be nice if I could be manually activated, the nickname I used was BitPuffin so it's pretty obvious that I'm the right guy haha
Resetting the password works, but redirects to http://code.dlang.org/reset_password and just displays the text "Please choose a new password below:" with no input fields whatsoever.
See #43
The build is failing for me on OSX, with:
source/app.d(41): Error: function dub.internal.utils.jsonFromFile (Path file, bool silent_fail = false) is not callable using argument types (Path, bool)
Am I doing something wrong? Here's the output of running dub
in the root: https://gist.github.com/3c1e67413cc2e761e020.
I'm on OSX 10.9.2, dmd version 2.065 and dub 0.9.21.
Subpackages don't have their own web pages.
That means it's difficult to see upon which packages they depend.
Example: http://code.dlang.org/packages/gfm/~master
which is a "include all" package, unfortunately hide specifics of each package.
Note: I really like sub-packages :) but if they don't fit with your intended model (automatic license and dependencies retrieving) I'll abandon them.
Some possible statistics:
The exact behavior of "dub test" needs to be documented.
It's common to not specify whether an account was not registered or whether just the password was wrong, as it helps both privacy and security (against brute-forcing in particular).
Problem:
I transferred a repositery from github user "p0nce" to "d-gamedev-team".
I get this error message:
Failed to get GIT tags/branches: Failed to get tags: Failed to read JSON from https://api.github.com/repos/p0nce/wave-d/tags: File 'https://api.github.com/repos/p0nce/wave-d/tags' does not exist.
The correct URL to hit would be https://api.github.com/repos/d-gamedev-team/wave-d/tags
I tried to create a new package from github with owner: "burner" and reponame: "inifile-D"
That failed telling me that the reponame is invalid. After renaming the github repo and entering "inifiled" as reponame. It failed again telling me: Package names must be all lower case, not "inifile-D". I even tried a different browser and got the same result.
Ideas?
Currently pre-relase versions are not comparing as having a lower precedence than normal versions among other things. Version comparisons generally should work according to paragraph 11 of the SemVer spec.
500 - Internal Server Error
Internal Server Error
Internal error information:
object.Exception@../userman/source/userman/controller.d(142): The activation code provided is not valid.
./dub-registry(pure @safe bool std.exception.enforce!(bool).enforce(bool, lazy const(char)[], immutable(char)[], ulong)+0x6b) [0x5c632f]
./dub-registry(void userman.controller.UserManController.activateUser(immutable(char)[], immutable(char)[])+0x1e7) [0x72ad7f]
./dub-registry(void userman.web.UserManWebInterface.activate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x134) [0x72e408]
./dub-registry(void vibe.http.router.URLRouter.handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x179) [0x640f41]
./dub-registry(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, immutable(char)[], vibe.http.server.HTTPServerListener, ref vibe.http.server.HTTPServerSettings, ref bool)+0x16b9) [0x636f49]
./dub-registry(void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener)+0x146) [0x6357ca]
./dub-registry(void vibe.http.server.listenHTTPPlain(vibe.http.server.HTTPServerSettings, void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)).void doListen(vibe.http.server.HTTPServerSettings, vibe.http.server.HTTPServerListener, immutable(char)[]).void __lambda50(vibe.core.net.TCPConnection)+0x2c) [0x63223c]
./dub-registry(extern (C) nothrow void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).void ClientTask.execute()+0x2e2) [0x651c46]
./dub-registry(void vibe.core.core.CoreTask.run()+0xee) [0x65ba62]
./dub-registry(void core.thread.Fiber.run()+0x2a) [0x7629ca]
./dub-registry(fiber_entryPoint+0x61) [0x7628dd]
[(nil)]
500 - Internal Server Error
Internal Server Error
Internal error information:
core.exception.AssertError@../../../opt/vibe/source/vibe/core/drivers/libevent2_tcp.d(120): Trying to acquire a TCP connection that is currently owned.
----------------
./dub-registry(_d_assert_msg+0x45) [0xa12b0d]
./dub-registry(void vibe.core.drivers.libevent2_tcp.Libevent2TCPConnection.acquire()+0xe3) [0x7a0b27]
./dub-registry(void vibe.core.drivers.libevent2_tcp.Libevent2TCPConnection.close()+0x6e) [0x7a0df2]
./dub-registry(void vibe.db.mongo.connection.MongoConnection.disconnect()+0x7b) [0x85621f]
./dub-registry(vibe.db.mongo.connection.Reply vibe.db.mongo.connection.MongoConnection.query(immutable(char)[], vibe.db.mongo.connection.QueryFlags, int, int, vibe.data.bson.Bson, vibe.data.bson.Bson)+0x17b) [0x856827]
./dub-registry(void vibe.db.mongo.cursor.MongoCursorData.startIterating()+0x9c) [0x85f9b0]
./dub-registry(@property bool vibe.db.mongo.cursor.MongoCursorData.empty()+0x7c) [0x85f3a8]
./dub-registry(@property bool vibe.db.mongo.cursor.MongoCursor.empty()+0x5f) [0x85ee23]
./dub-registry(_D11dubregistry12dbcontroller12DbController14getAllPackagesMFZS11dubregistry12dbcontroller12DbController14getAllPackagesM123__T9MapResultS7011dubregistry12dbcontroller12DbController14getAllPackagesM10__lambda20TS4vibe2db5mongo6cursor11MongoCursorZ9MapResult123__T9MapResultS7011dubregistry12dbcontroller12DbController14getAllPackagesM10__lambda20TS4vibe2db5mongo6cursor11MongoCursorZ9MapResult5emptyMFNdZb+0x51) [0x8f2415]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.showHome(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x21c) [0x77c188]
./dub-registry(void vibe.http.router.URLRouter.handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x179) [0x794a6d]
./dub-registry(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener, ref vibe.http.server.HTTPServerSettings, ref bool)+0x17da) [0x789b2e]
./dub-registry(void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener)+0x12b) [0x788267]
./dub-registry(void vibe.http.server.listenHTTPPlain(vibe.http.server.HTTPServerSettings, void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)).void doListen(vibe.http.server.HTTPServerSettings, vibe.http.server.HTTPServerListener, immutable(char)[]).void __lambda60(vibe.core.net.TCPConnection)+0x2c) [0x7844d8]
./dub-registry(extern (C) nothrow void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).void ClientTask.execute()+0x2d6) [0x7a2d42]
./dub-registry(_D4vibe4core4core12__T7runTaskZ7runTaskFDFZvZS4vibe4core4task4Task12callDelegateFC4vibe4core4core8CoreTaskZv+0x2b) [0x7b7f1f]
./dub-registry(void vibe.core.core.CoreTask.run()+0x14a) [0x7b400e]
./dub-registry(void core.thread.Fiber.run()+0x2a) [0xa522fe]
./dub-registry(fiber_entryPoint+0x61) [0xa52209]
[(nil)]
Right now when sorting by update date it always puts the packages which have a version number (aren't tracking branches) at the top. This is intentional from what I can gather looking at the code. Seems more useful to me to just sort by update date.
Feel free to close this if you disagree since this is just a matter of taste (though I am curious what the rationale is).
It's crucial to know which licenses are in the game when using foreign projects. It should be enforced/encouraged to have this information available for every package in the registry.
If only warnings are used, displaying the license as "proprietary" and making it incompatible with every other package so that dub warns about it (dlang/dub#117) is probably the way to go.
Just by going to code.dlang.org
500 - Internal Server Error
Internal Server Error
Internal error information:
core.exception.AssertError@../../../opt/vibe/source/vibe/http/client.d(252): Interleaved request detected!
----------------
./allsites(_d_assert_msg+0x45) [0x6f0d55]
./allsites(bool vibe.http.client.HTTPClient.doRequest(scope void delegate(vibe.http.client.HTTPClientRequest))+0x74) [0x5b6108]
./allsites(void vibe.http.client.HTTPClient.request(scope void delegate(scope vibe.http.client.HTTPClientRequest), scope void delegate(scope vibe.http.client.HTTPClientResponse))+0x98) [0x5b5e54]
./allsites(void vibe.http.client.requestHTTP(vibe.inet.url.URL, scope void delegate(scope vibe.http.client.HTTPClientRequest), scope void delegate(scope vibe.http.client.HTTPClientResponse))+0x23f) [0x5b5823]
./allsites(void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse) vibe.http.proxy.reverseProxyRequest(vibe.http.proxy.HTTPReverseProxySettings).void handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x91) [0x5af87d]
./allsites(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, immutable(char)[], vibe.http.server.HTTPServerListener, ref vibe.http.server.HTTPServerSettings, ref bool)+0x16c8) [0x5a9124]
./allsites(void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener)+0x143) [0x5a7997]
./allsites(void vibe.http.server.listenHTTPPlain(vibe.http.server.HTTPServerSettings, void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)).void doListen(vibe.http.server.HTTPServerSettings, vibe.http.server.HTTPServerListener, immutable(char)[]).void __lambda17(vibe.core.net.TCPConnection)+0x2c) [0x5a3f40]
./allsites(extern (C) nothrow void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).void ClientTask.execute()+0x2d6) [0x5be502]
./allsites(void vibe.core.core.CoreTask.run()+0xf2) [0x5cc466]
./allsites(void core.thread.Fiber.run()+0x2a) [0x722942]
./allsites(fiber_entryPoint+0x61) [0x72284d]
[(nil)]
Headers sent:
GET / HTTP/1.1
User-Agent: Opera/9.80 (X11; Linux x86_64) Presto/2.12.388 Version/12.15
Host: code.dlang.org
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: en-US,en;q=0.9
Accept-Encoding: gzip, deflate
Cache-Control: no-cache
Connection: Keep-Alive
Headers received:
HTTP/1.1 500 Internal Server Error
Content-Encoding: gzip
Server: vibe.d/0.7.17
Date: Fri, 18 Oct 2013 18:00:01 GMT
Keep-Alive: timeout=10
Content-Type: text/plain; charset=UTF-8
I'm also getting the same response for favicon.ico
I've converted the VST 2.4 SDK from Steinberg which include a custom license, available here: http://www.gersic.com/vstsdk/html/plug/intro.html#licence
Should we add a special case for it?
There are a number of reasons why a repo URL could change, so it should be possible to edit that field in the my packages configuration.
Also if the dub registry permanently fails to locate a package, it should notify the owner via e-mail.
Hi Sรถnke,
As I'm currently improving Mono-D to be bypass-free compatible to dub packages,
I noticed that I have no (obvious) chance for retrieving the project's target executable path which is needed (at least) for automatically launching the debugger.
Calling dub describe or trying to deduce the executable's name from the package.json contents might not be perfect otherwise.
dub describe won't to the job for me! :-/
Besides, what about a 'clean' command - to clean the executable and support files up (recursively)?
I appreciate dub very much though!
Alex
I'm trying to go to the front page but it's throwing the following error:
500 - Internal Server Error
Internal Server Error
Internal error information:
object.Exception@../../../opt/vibe/source/vibe/data/json.d(692): Trying to access JSON of type Null as Json[string].
----------------
./dub-registry(pure @safe bool std.exception.enforce!(bool).enforce(bool, lazy const(char)[], immutable(char)[], ulong)+0x6b) [0x5ec62b]
./dub-registry(const(void function()) vibe.data.json.Json.checkType!(vibe.data.json.Json[immutable(char)[]]).checkType+0xa5) [0x69ca5d]
./dub-registry(ref vibe.data.json.Json vibe.data.json.Json.opIndex(immutable(char)[])+0x63) [0x69a653]
./dub-registry(ref @property vibe.data.json.Json vibe.data.json.Json.opDispatch!("versions").opDispatch()+0x5f) [0x69cc7f]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.showHome(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse).immutable(char)[] getDate(vibe.data.json.Json)+0x15) [0x5e33c5]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.showHome(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse).pure bool __lambda7!(vibe.data.json.Json, vibe.data.json.Json).__lambda7(vibe.data.json.Json, vibe.data.json.Json)+0x60) [0x5e51a0]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.showHome(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse).void __T23optimisticInsertionSortS13911dubregistry3web22DubRegistryWebFrontend8showHomeMFC4vibe4http6server17HttpServerRequestC4vibe4http6server18HttpServerResponseZv9__lambda7TAS4vibe4data4json4JsonZ.optimisticInsertionSort(vibe.data.json.Json[])+0xca) [0x603252]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.showHome(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse).void __T13quickSortImplS13911dubregistry3web22DubRegistryWebFrontend8showHomeMFC4vibe4http6server17HttpServerRequestC4vibe4http6server18HttpServerResponseZv9__lambda7TAS4vibe4data4json4JsonZ.quickSortImpl(vibe.data.json.Json[])+0x29c) [0x602ddc]
./dub-registry(_D11dubregistry3web22DubRegistryWebFrontend8showHomeMFC4vibe4http6server17HttpServerRequestC4vibe4http6server18HttpServerResponseZv206__T4sortS13911dubregistry3web22DubRegistryWebFrontend8showHomeMFC4vibe4http6server17HttpServerRequestC4vibe4http6server18HttpServerResponseZv9__lambda7VE3std9algorithm12SwapStrategy0TAS4vibe4data4json4JsonZ4sortMFAS4vibe4data4json4JsonZS11dubregistry3web22DubRegistryWebFrontend8showHomeMFC4vibe4http6server17HttpServerRequestC4vibe4http6server18HttpServerResponseZv183__T11SortedRangeTAS4vibe4data4json4JsonS13911dubregistry3web22DubRegistryWebFrontend8showHomeMFC4vibe4http6server17HttpServerRequestC4vibe4http6server18HttpServerResponseZv9__lambda7Z11SortedRange+0x2a) [0x5e4fe6]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.showHome(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse)+0x17f) [0x5e337f]
./dub-registry(void vibe.http.router.UrlRouter.handleRequest(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse)+0x179) [0x719c69]
./dub-registry(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, immutable(char)[], vibe.http.server.HTTPServerListener, ref vibe.http.server.HttpServerSettings, ref bool)+0x163f) [0x727467]
./dub-registry(void vibe.http.server.handleHttpConnection(vibe.core.net.TcpConnection, vibe.http.server.HTTPServerListener)+0x1f9) [0x725d2d]
./dub-registry(void vibe.http.server.listenHttpPlain(vibe.http.server.HttpServerSettings, void delegate(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse)).void doListen(vibe.http.server.HttpServerSettings, vibe.http.server.HTTPServerListener, immutable(char)[]).void __lambda102(vibe.core.net.TcpConnection)+0x36) [0x722a36]
./dub-registry(extern (C) nothrow void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).void ClientTask.execute()+0x2b3) [0x6a6367]
./dub-registry(void vibe.core.core.CoreTask.run()+0xee) [0x6b3646]
./dub-registry(void core.thread.Fiber.run()+0x2a) [0x78b5be]
./dub-registry(fiber_entryPoint+0x61) [0x78b4d1]
[(nil)]
Perhaps I'm being blind, but I can't see any mention of the lowercase requirement in http://code.dlang.org/package-format
Based on my reading of http://code.dlang.org/package-format#standard-fields, I should have a field "buildTypes" at the root. Based on my reading of http://code.dlang.org/package-format#build-settings, this "buildTypes" should be an object, of which one of the keys is "dflags". The value of "dflags" is a "String[]", meaning an array of Strings.
Thus, I write the following package.jon
file:
{
"name": "tmp",
"description": "My Project",
"copyright": "Copyright ยฉ 2013, Nebu Pookins",
"authors": ["Nebu Pookins"],
"dependencies": {
},
"buildTypes": {
"dflags": [
"-Idwt/imp",
"-Jdwt/org.eclipse.swt.gtk.linux.x86/res"
],
}
}
However, when I run dub
, I get the following error:
Failed to parse package description in /home/nebu/dev/tmp
Failed to parse package description in /home/nebu/dev/tmp
Error: Got .dflags of type array - expected object.
Run 'dub help' for usage information.
Each package should have 1 to 3 categories associated with it to make it easier to later find a package even with many regsitered packages. There is a categories.json already in the repository. It has to be parsed and the web front end logic has to be written.
As the assert nicely tells us, the server tried to start another session.
What I did was, I had the package list open from yesterday. Today I found the activation email in my spam box and clicked on the activation link. Ignoring the tab that opened (those activation links usually don't take me where I want to be), I clicked on Login in the old tab and logged in, resulting in:
500 - Internal Server Error
Internal Server Error
Internal error information:
core.exception.AssertError@../../../opt/vibe/source/vibe/http/server.d(810): Try to start a session, but already started one.
----------------
./dub-registry(_d_assert_msg+0x45) [0x73ba15]
./dub-registry(vibe.http.session.Session vibe.http.server.HTTPServerResponse.startSession(immutable(char)[], bool)+0xff) [0x632c17]
./dub-registry(void userman.web.UserManWebInterface.login(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x23d) [0x72fa41]
./dub-registry(void vibe.http.router.URLRouter.handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x179) [0x63fff1]
./dub-registry(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, immutable(char)[], vibe.http.server.HTTPServerListener, ref vibe.http.server.HTTPServerSettings, ref bool)+0x16b9) [0x635ff9]
./dub-registry(void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener)+0x146) [0x63487a]
./dub-registry(void vibe.http.server.listenHTTPPlain(vibe.http.server.HTTPServerSettings, void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)).void doListen(vibe.http.server.HTTPServerSettings, vibe.http.server.HTTPServerListener, immutable(char)[]).void __lambda50(vibe.core.net.TCPConnection)+0x2c) [0x6312ec]
./dub-registry(extern (C) nothrow void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).void ClientTask.execute()+0x2e2) [0x650c42]
./dub-registry(void vibe.core.core.CoreTask.run()+0xee) [0x65aa5e]
./dub-registry(void core.thread.Fiber.run()+0x2a) [0x764ada]
./dub-registry(fiber_entryPoint+0x61) [0x7649ed]
[(nil)]
The number of times I've hit enter thinking I'm logging in just to search for empty string...
Would it be possible to add a simple web api to retrieve the packages in the repository with a get request + query string? I'd like to integrate dub with a graphical tool i'm writing, allowing to browse all packages (currently I'm scraping the website). The query could return a json array of all package.json's or similar.
The registry is currently living on the edge with it's GitHub API use. 60 non-cached requests per hour are allowed and jus registering two projects at once that contain some tags/branches will hit that limit.
When using OAuth2 to access the API, the limit gets increased to 2000 and it also becomes possible to use the PubSubHubbub API to avoid polling, making the registry more responsive and saving bandwith.
Bitbucket probably has something similar.
I have already registered 13 packages. When I click on "Register new package", I get
403 - Forbidden
You don't have access rights for this package.
Internal error information:
vibe.http.common.HTTPStatusException@../vibe/source/vibe/http/common.d(107): You don't have access rights for this package.
----------------
./dub-registry(bool vibe.http.common.enforceHTTP!(bool).enforceHTTP(bool, vibe.http.status.HTTPStatus, lazy immutable(char)[])+0x36) [0x9e14d2]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.enforceUserPackage(userman.controller.User, immutable(char)[])+0x5b) [0xa757ff]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.getMyPackagesPackage(immutable(char)[], userman.controller.User, immutable(char)[])+0x98) [0xa74fc4]
./dub-registry(void vibe.web.web.handleRequest!("getMyPackagesPackage", _D11dubregistry3web22DubRegistryWebFrontend20getMyPackagesPackageMFAyaS7userman10controller4UserAyaZv, dubregistry.web.DubRegistryWebFrontend).handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse, dubregistry.web.DubRegistryWebFrontend, vibe.web.web.WebInterfaceSettings)+0x3ce) [0x9e6c12]
./dub-registry(void vibe.web.web.__T20registerWebInterfaceTC11dubregistry3web22DubRegistryWebFrontendVE4vibe3web6common11MethodStylei5Z.registerWebInterface(vibe.http.router.URLRouter, dubregistry.web.DubRegistryWebFrontend, vibe.web.web.WebInterfaceSettings).__lambda36!(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse).__lambda36(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x2d) [0x9d3e21]
./dub-registry(_D4vibe4http6router9URLRouter13handleRequestMFC4vibe4http6server17HTTPServerRequestC4vibe4http6server18HTTPServerResponseZ21__T9__lambda3TmTAAyaZ9__lambda3MFmMAAyaZv+0x210) [0xb87b64]
./dub-registry(void vibe.http.router.MatchTree!(vibe.http.router.Route).MatchTree.match(immutable(char)[], scope void delegate(ulong, scope immutable(char)[][]))+0x1dc) [0xb88250]
./dub-registry(void vibe.http.router.URLRouter.handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x1a6) [0xb878e2]
./dub-registry(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener, ref vibe.http.server.HTTPServerSettings, ref bool)+0x16ee) [0xbf3e9a]
./dub-registry(void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener)+0x19c) [0xbf26a8]
./dub-registry(void vibe.http.server.listenHTTPPlain(vibe.http.server.HTTPServerSettings).doListen(vibe.http.server.HTTPServerSettings, ulong, immutable(char)[]).__lambda4(vibe.core.net.TCPConnection)+0x62) [0xbf20aa]
./dub-registry(void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).ClientTask.execute()+0x4d4) [0xb4608c]
./dub-registry(void vibe.core.core.makeTaskFuncInfo!(void delegate()).makeTaskFuncInfo(ref void delegate()).callDelegate(vibe.core.core.TaskFuncInfo*)+0x72) [0x97e2c6]
./dub-registry(void vibe.core.core.CoreTask.run()+0x18f) [0xb2dd47]
./dub-registry(void core.thread.Fiber.run()+0x2a) [0xc8ed1e]
./dub-registry(fiber_entryPoint+0x61) [0xc8ec31]
[(nil)]
I get a 403 for the http://code.dlang.org/my_packages/register? page to which I'm send when clicking "Register new package".
403 - Forbidden
You don't have access rights for this package.
Internal error information:
vibe.http.common.HTTPStatusException@../vibe/source/vibe/http/common.d(107): You don't have access rights for this package.
----------------
./dub-registry(void vibe.http.common.enforceHTTP!(bool).enforceHTTP(bool, vibe.http.status.HTTPStatus, immutable(char)[])+0x36) [0x84f36a]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.enforceUserPackage(userman.controller.User, immutable(char)[])+0x67) [0x8d44eb]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.getMyPackagesPackage(immutable(char)[], userman.controller.User, immutable(char)[])+0x8c) [0x8d3b60]
./dub-registry(void vibe.web.web.handleRequest!("getMyPackagesPackage", _D11dubregistry3web22DubRegistryWebFrontend20getMyPackagesPackageMFAyaC7userman10controller4UserAyaZv, dubregistry.web.DubRegistryWebFrontend).handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse, dubregistry.web.DubRegistryWebFrontend, vibe.web.web.WebInterfaceSettings)+0x289) [0x8524dd]
./dub-registry(void vibe.web.web.__T20registerWebInterfaceTC11dubregistry3web22DubRegistryWebFrontendVE4vibe3web6common11MethodStyle5Z.registerWebInterface(vibe.http.router.URLRouter, dubregistry.web.DubRegistryWebFrontend, vibe.web.web.WebInterfaceSettings).__lambda18!(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse).__lambda18(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x2d) [0x841fd9]
./dub-registry(void vibe.http.router.URLRouter.handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse).void __lambda3!(ulong, immutable(char)[][]).__lambda3(ulong, scope immutable(char)[][])+0x1dc) [0x984ce4]
./dub-registry(void vibe.http.router.MatchTree!(vibe.http.router.Route).MatchTree.match(immutable(char)[], scope void delegate(ulong, scope immutable(char)[][]))+0x1dc) [0x985324]
./dub-registry(void vibe.http.router.URLRouter.handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x1a6) [0x984a96]
./dub-registry(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener, ref vibe.http.server.HTTPServerSettings, ref bool)+0x165d) [0xa0447d]
./dub-registry(void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener)+0x1a3) [0xa02d3f]
./dub-registry(void vibe.http.server.listenHTTPPlain(vibe.http.server.HTTPServerSettings).doListen(vibe.http.server.HTTPServerSettings, vibe.http.server.HTTPServerListener, immutable(char)[]).__lambda4(vibe.core.net.TCPConnection)+0x2c) [0xa02a2c]
./dub-registry(void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).ClientTask.execute()+0x316) [0x95692e]
./dub-registry(_D4vibe4core4core27__T16makeTaskFuncInfoTDFZvZ16makeTaskFuncInfoFNbDFZvZS4vibe4core4core12TaskFuncInfo12callDelegateFPS4vibe4core4core12TaskFuncInfoZv+0xda) [0x7e8f5e]
./dub-registry(void vibe.core.core.CoreTask.run()+0x16a) [0x93f1a2]
./dub-registry(void core.thread.Fiber.run()+0x2a) [0xa91bf6]
./dub-registry(fiber_entryPoint+0x61) [0xa91b01]
[(nil)]
I added a tag (v3.16.0) to the Deimos project I want to register, but I still get the following error message.
This is probably an issue with caching because it works when I run the dub-registry locally.
https://github.com/D-Programming-Deimos/FreeImage
The repository must have at least one tagged version (SemVer format, e.g. "v1.0.0" or "v0.0.1") to be published on the registry. Please add a proper tag using "git tag" or equivalent means and see http://semver.org for more information.
After updating, to 0.9.21 "dub generate visuald" no longer
generates "release" and "unittest"configurations for VisualD -
only "debug" is available. I downgraded to 0.9.20 to make sure
and indeed this version generates VisualD projects correctly
(with all 3 configurations)
I get the following message:
Branch ~gh-pages: Found neither dub.json, nor package.json in the repository.
But the gh-pages
is useful to display documentation hosted on github. It isn't meant to have a package.json somewhere.
I think the category select should use optgroups instead of the putting |_
in front of every option. I cannot "search" in the select box as it is now.
This could be generated automatically from DUB's commandline.d.
I don't know if it already fixed or not, but I found 2 different packages with same name, see:
https://github.com/nomad-software/dunit/blob/master/package.json
https://github.com/nomad-software/dunit/blob/master/package.json
We have only the last one in registry. I don't know if the first one also was added in registry.
I tried logging in with my username, and it worked fine.
The error page (/my_packages
):
500 - Internal Server Error
Internal Server Error
Internal error information:
object.Exception@../userman/source/userman/controller.d(230): The specified user name is not registered.
----------------
./dub-registry(pure @safe bool std.exception.enforce!(bool).enforce(bool, lazy const(char)[], immutable(char)[], ulong)+0x6b) [0x62a93b]
./dub-registry(userman.controller.User userman.controller.UserManController.getUserByName(immutable(char)[])+0x124) [0x7e5c3c]
./dub-registry(void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse) userman.web.UserManWebInterface.auth(void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse, userman.controller.User)).void requestHandler(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0xdf) [0x7e953f]
./dub-registry(void vibe.http.router.URLRouter.handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x179) [0x6eafd1]
./dub-registry(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, immutable(char)[], vibe.http.server.HTTPServerListener, ref vibe.http.server.HTTPServerSettings, ref bool)+0x1638) [0x6dfc88]
./dub-registry(void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener)+0x143) [0x6de58b]
./dub-registry(void vibe.http.server.listenHTTPPlain(vibe.http.server.HTTPServerSettings, void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)).void doListen(vibe.http.server.HTTPServerSettings, vibe.http.server.HTTPServerListener, immutable(char)[]).void __lambda52(vibe.core.net.TCPConnection)+0x2c) [0x6dab34]
./dub-registry(extern (C) nothrow void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).void ClientTask.execute()+0x2d6) [0x6f88e6]
./dub-registry(void vibe.core.core.CoreTask.run()+0xf2) [0x7067c2]
./dub-registry(void core.thread.Fiber.run()+0x2a) [0x827b9a]
./dub-registry(fiber_entryPoint+0x61) [0x827aa5]
[(nil)]
Packages should be scanned for all D packages that they occupy. A reverse search could then find all package candidates for a certain namespace. Especially useful for tools that want to automatically determine the list of dependencies using just the source code. Also useful to avoid package conflicts when choosing a namespace for a new library.
Stranges with this site.
http://code.dlang.org/download - 500 error code
500 - Internal Server Error
Internal Server Error
Internal error information:
std.file.FileException@std/file.d(2394): public/files: Too many open files
----------------
./dub-registry(bool std.file.DirIteratorImpl.stepIn(immutable(char)[])+0x61) [0xac17f1]
./dub-registry(ref std.file.DirIteratorImpl std.file.DirIteratorImpl.__ctor(immutable(char)[], std.file.SpanMode, bool)+0x9d) [0xac1b0d]
./dub-registry(std.file.DirIteratorImpl* std.conv.emplace!(std.file.DirIteratorImpl, immutable(char)[], std.file.SpanMode, bool).emplace(std.file.DirIteratorImpl*, ref immutable(char)[], ref std.file.SpanMode, ref bool)+0x48) [0xabf70c]
./dub-registry(void std.typecons.__T10RefCountedTS3std4file15DirIteratorImplVE3std8typecons24RefCountedAutoInitialize0Z.RefCounted.RefCountedStore.initialize!(immutable(char)[], std.file.SpanMode, bool).initialize(ref immutable(char)[], ref std.file.SpanMode, ref bool)+0x83) [0xaaaa37]
./dub-registry(ref std.typecons.__T10RefCountedTS3std4file15DirIteratorImplVE3std8typecons24RefCountedAutoInitialize0Z.RefCounted std.typecons.__T10RefCountedTS3std4file15DirIteratorImplVE3std8typecons24RefCountedAutoInitialize0Z.RefCounted.__ctor!(immutable(char)[], std.file.SpanMode, bool).__ctor(ref immutable(char)[], ref std.file.SpanMode, ref bool)+0x11) [0xaaa9a9]
./dub-registry(ref std.file.DirIterator std.file.DirIterator.__ctor(immutable(char)[], std.file.SpanMode, bool)+0x40) [0xa95f90]
./dub-registry(std.file.dirEntries.FilterResult!(_D3std4file10dirEntries1fMFS3std4file8DirEntryZb, std.file.DirIterator).FilterResult std.file.dirEntries(immutable(char)[], immutable(char)[], std.file.SpanMode, bool)+0x77) [0xa9646b]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.showDownloads(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x537) [0x7b350b]
./dub-registry(void vibe.http.router.URLRouter.handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x179) [0x7cc44d]
./dub-registry(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener, ref vibe.http.server.HTTPServerSettings, ref bool)+0x17da) [0x7c150e]
./dub-registry(void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener)+0x12b) [0x7bfc47]
./dub-registry(void vibe.http.server.listenHTTPPlain(vibe.http.server.HTTPServerSettings, void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)).void doListen(vibe.http.server.HTTPServerSettings, vibe.http.server.HTTPServerListener, immutable(char)[]).void __lambda60(vibe.core.net.TCPConnection)+0x2c) [0x7bbeb8]
./dub-registry(extern (C) nothrow void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).void ClientTask.execute()+0x2d6) [0x7da80a]
./dub-registry(_D4vibe4core4core12__T7runTaskZ7runTaskFDFZvZS4vibe4core4task4Task12callDelegateFC4vibe4core4core8CoreTaskZv+0x2b) [0x7f2bdf]
./dub-registry(void vibe.core.core.CoreTask.run()+0x14a) [0x7eecce]
./dub-registry(void core.thread.Fiber.run()+0x2a) [0xab4f6e]
./dub-registry(fiber_entryPoint+0x61) [0xab4e79]
[(nil)]
dub fetch libevent --version=2.0.1+2.0.16
Platform: Fedora 19 x86
Dub version: v0.9.19-2-gb08454b
dmd version: v2.063.2
Running on CI server, thus jenkins $HOME dir is /var/lib/jenkins. Package borey-engine is added as local package (doesn't updated in dub registry):
git clone https://github.com/NCrashed/BoreyEngine.git
cd BoreyEngine && dub add-local . ~master
Original problem package is not available, but there is reduced package.json which cause problem:
{
"name": "test",
"sourcePaths": [],
"targetPath": "bin",
"configurations": [
{
"name": "client",
"sourcePaths": ["source"],
"libs-posix": ["dl"],
"targetType": "executable",
"targetName": "client",
"dependencies":
{
"borey-engine": "~master",
"borey-engine:interface": "~master",
}
}
]
}
source/app.d:
void main() {}
Dub is called with:
dub build --config=client --build=unittest --vverbose
Output:
dub: /lib/libcurl.so.4: no version information available (required by dub)
Using dub registry url 'http://code.dlang.org/'
Looking for local package map at /var/lib/dub/packages/local-packages.json
Looking for local package map at /var/lib/jenkins/.dub/packages/local-packages.json
Try to load local package map at /var/lib/jenkins/.dub/packages/local-packages.json
iterating dir /var/lib/jenkins/.dub/packages/
iterating dir /var/lib/jenkins/.dub/packages/ entry local-packages.json
iterating dir /var/lib/jenkins/.dub/packages/ entry derelict-master
Looking for local package map at /var/lib/dub/packages/local-packages.json
Looking for local package map at /var/lib/jenkins/.dub/packages/local-packages.json
Try to load local package map at /var/lib/jenkins/.dub/packages/local-packages.json
iterating dir /var/lib/jenkins/.dub/packages/
iterating dir /var/lib/jenkins/.dub/packages/ entry local-packages.json
iterating dir /var/lib/jenkins/.dub/packages/ entry derelict-master
Looking for local package map at /var/lib/dub/packages/local-packages.json
Looking for local package map at /var/lib/jenkins/.dub/packages/local-packages.json
Try to load local package map at /var/lib/jenkins/.dub/packages/local-packages.json
iterating dir /var/lib/jenkins/.dub/packages/
iterating dir /var/lib/jenkins/.dub/packages/ entry local-packages.json
iterating dir /var/lib/jenkins/.dub/packages/ entry derelict-master
Looking for local package map at /var/lib/dub/packages/local-packages.json
Looking for local package map at /var/lib/jenkins/.dub/packages/local-packages.json
Try to load local package map at /var/lib/jenkins/.dub/packages/local-packages.json
iterating dir /var/lib/jenkins/.dub/packages/
iterating dir /var/lib/jenkins/.dub/packages/ entry local-packages.json
iterating dir /var/lib/jenkins/.dub/packages/ entry derelict-master
Failed to run git: git rev-parse failed: fatal: Not a git repository: '/var/lib/jenkins/jobs/FMTG/workspace/testprj/.git'
Note: Failed to determine version of package test at /var/lib/jenkins/jobs/FMTG/workspace/testprj. Assuming ~master.
Collecting dependencies for test
Found dependency borey-engine:interface ~master: true
Collecting dependencies for borey-engine:interface
Found dependency derelict:util ~master: true
Collecting dependencies for derelict:util
Found dependency borey-engine ~master: true
Collecting dependencies for borey-engine
Found dependency derelict:opengl3 ~master: true
Collecting dependencies for derelict:opengl3
Found dependency derelict:glfw3 ~master: true
Collecting dependencies for derelict:glfw3
Checking dependencies in '/var/lib/jenkins/jobs/FMTG/workspace/testprj'
Try to resolve ["borey-engine"]
There are 1 packages missing.
Adding package to graph: borey-engine
Found installed package borey-engine ~master
Try to resolve ["derelict"]
There are 1 packages missing.
Adding package to graph: derelict
Found installed package derelict ~master
Required package 'borey-engine' found with version '~master'
Required package 'derelict' found with version '~master'
Generating using build
Creating build generator.
Including test client -> borey-engine:interface library
Including test client -> borey-engine application
Including borey-engine:interface library -> derelict:util library
Including borey-engine application -> derelict:opengl3 library
Including borey-engine application -> borey-engine:interface library
Including borey-engine application -> derelict:glfw3 library
Including borey-engine application -> derelict:util library
Including derelict:opengl3 library -> derelict:util library
Including borey-engine:interface library -> derelict:util library
Including derelict:glfw3 library -> derelict:util library
Error: Range violation
Full exception: [email protected](271): Range violation
----------------
dub(_d_array_bounds+0x2b) [0x826287b]
dub() [0x81e1153]
dub(const(immutable(char)[][immutable(char)[]] function(const(dub.compilers.compiler.BuildPlatform), immutable(char)[])) dub.project.Project.getPackageConfigs.bool isReachableByAllParentPacks(uint)+0x71) [0x81de005]
dub(const(immutable(char)[][immutable(char)[]] function(const(dub.compilers.compiler.BuildPlatform), immutable(char)[])) dub.project.Project.getPackageConfigs+0x1a9) [0x81dd6dd]
dub(const(void function(ref dub.compilers.compiler.BuildSettings, const(dub.compilers.compiler.BuildPlatform), immutable(char)[], const(dub.package_.Package))) dub.project.Project.addBuildSettings+0x63) [0x81de66f]
dub(void dub.generators.build.BuildGenerator.generateProject(dub.generators.generator.GeneratorSettings)+0x98) [0x81e5304]
dub(void dub.dub.Dub.generateProject(immutable(char)[], dub.generators.generator.GeneratorSettings)+0x6f) [0x81ca0c3]
dub(_Dmain+0x134c) [0x81c20d8]
dub(extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void runMain()+0x10) [0x8262f38]
dub(extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void tryExec(scope void delegate())+0x27) [0x8262ab7]
dub(extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void runAll()+0x64) [0x8262fac]
dub(extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void tryExec(scope void delegate())+0x27) [0x8262ab7]
dub(_d_run_main+0x162) [0x8262a72]
dub(main+0x2a) [0x82628fa]
/lib/libc.so.6(__libc_start_main+0xf3) [0x44058963]
Run 'dub help' for usage information.
This means casing is important. Offending line:
try rep.readFile(reference.sha, Path("/README.md"),
(scope input) { dbver.readme = input.readAllUTF8(); });
Note that (at least Github) allows all sorts of names for the readme: readme.md
, readme.markdown
, README.md
, README.markdown
, etc. I'm not sure whether all supported combinations are listed anywhere.
There's also .rst
support on Github but I don't know if we have any D .rst
parsers around for use with dub-registry.
I'm trying to fill in the fields, put them all in but get an error with "Missing user name field.". No confirmation email is sent, no warnings if I am reusing another user name, no idea how to log in so that I can add projects to the registry.
I am getting following messages for all my packages (at 'manage package' page):
Unexpected reply for 'https://raw.github.com/NCrashed/dlogg/ec962075eb6a67ee1dc03365c29f4e61d441d11c/package.json': Moved Permanently
For instance my dlogg package:
Package errors:
Version 0.1.0-docs: Unexpected reply for 'https://raw.github.com/NCrashed/dlogg/7b7fd1405240ef1b337cd2a3e1129e15f80af108/dub.json': Moved Permanently
Version 0.1.0: Unexpected reply for 'https://raw.github.com/NCrashed/dlogg/ec962075eb6a67ee1dc03365c29f4e61d441d11c/package.json': Moved Permanently
Version 0.1.1: Unexpected reply for 'https://raw.github.com/NCrashed/dlogg/4dbf22b9e8308eace6ef7640b923bd01e75923c6/package.json': Moved Permanently
Version 0.1.2: Unexpected reply for 'https://raw.github.com/NCrashed/dlogg/65ff66bb303f1de33a378349271e46df1faa24e0/package.json': Moved Permanently
Version 0.1.3: Unexpected reply for 'https://raw.github.com/NCrashed/dlogg/0b28135f4f78d52072b8cb351a5c237af3da06d4/package.json': Moved Permanently
Version 0.2.0: Unexpected reply for 'https://raw.github.com/NCrashed/dlogg/f267d3eff40f8a6c45343d2a4360db2bd5821c0b/dub.json': Moved Permanently
Branch ~master: Unexpected reply for 'https://raw.github.com/NCrashed/dlogg/f267d3eff40f8a6c45343d2a4360db2bd5821c0b/dub.json': Moved Permanently
Branch ~gh-pages: Unexpected reply for 'https://raw.github.com/NCrashed/dlogg/f3e16d2a79ff96c4841e11e6e610ce4bfec19768/dub.json': Moved Permanently
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.