flarp / distri-node Goto Github PK
View Code? Open in Web Editor NEWDistributed computing in Node.js and JavaScript
Home Page: https://distri.js.org
License: GNU General Public License v3.0
Distributed computing in Node.js and JavaScript
Home Page: https://distri.js.org
License: GNU General Public License v3.0
Verification strength breaks in static mode. This needs to be fixed ASAP, as it renders the program unusable in static mode until then. (Note, if verification strength is on one, the program will work just fine. However, verification strength is one of the main features of the program, so it would be nice if it actually worked.)
This is going to be tough, but I'm thinking of adding dynamic timeouts. (This is not related to the dynamic or static modules.)
What is does is it gets the averages of all the times it took for people to finish the problem who weren't timed out, and use it as the next timeout limit. So, if the average time it took for 30 people to complete a problem was 10 seconds, and the user-defined timeout was 100 seconds, the timeout would be changed to 10 seconds. This could be a problem as people with slow computers could be kicked out wrongfully, and spammers could constantly be sending bork results in record amounts of time, setting the timeout so low it's not even possible with a super computer to have a valid result sent back in time.
Another thing is to get the slowest time it took for someone to send it back in who was not timed out. Say, if the timeout is 30 seconds and the slowest time it took for someone to send it in was 26 seconds, that would be the new timeout, This could work much better but might not speed things up too much.
Right now only signed and unsigned integers are supported in static mode. Floating-point numbers need to be implemented.
As of now, Distri is really kind of a crazy mix of code, some of which doesn't even need to be there. One main thing I am thinking about removing is the equalityPercentage
functionality, and in return, allow a user to define functions to check solutions themselves, with custom event emitters for a workgroup being completed, a workgroup being accepted, and a workgroup being rejected. This will probably be added before New Years, but I'm announcing it now because nobody is fucking reading this.
Right now work and solutions in static mode can only be a string or a number, not an array of either. The plan is to add the option to allow arrays of strings and numbers as both work and solutions.
Make sure everything works, damnit
JSON is much faster than message packing.
easy
These extra features bloat the software and I would like it to be a minimalistic as possible, per the Unix philisophy. Instead, a work_submitted
event will be added, that returns the work, the result the user submitted, and their websocket instance. The server admin may do what they please with this result. This would require another Promise thing, like how workgroup_complete
is, but that can be worked around with default functions.
Socket.io is a CPU hog, and ws is faster.
Since this is an node module, it'd be helpful if it were on npm. It'd increase visibility of the package, make it easier to find, and to install.
Risk mode is when not all of the results submitted are equal, but most are. The result that takes up more than 50% of the submissions will be considered correct.
Minimum users is how many unique users there must be until work will be distributed.
To embrace functional programming a bit more
Server.addWork(work)
can do the same thing the work constructor does, and I'm trying to get rid of all the options the constructor has, per the Unix philosophy.
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.