alt83 / mvp4g Goto Github PK
View Code? Open in Web Editor NEWAutomatically exported from code.google.com/p/mvp4g
Automatically exported from code.google.com/p/mvp4g
If we have a GWT project that is divided into several GWT modules (and each
of these module is modeled as mvp4g module). These modules have inheritance
say Module B include Module A. So for firing some event from Module A to
Module B, former gets a dependency on latter causing a circular dependency.
Is there any way in the current framework to get rid of this problem?
Original issue reported on code.google.com by [email protected]
on 17 Feb 2010 at 11:30
It would be useful to have an option to define a name for a history token. If
I want to have e.g. "#company" in the URL, I have to define an event called
"company", but it would be better to have an event, let's say "goToCompany"
as in example, but in the URL would appear "company".
This is similar to @HistoryName("someChildModule"), but for events. It can be
done by an optional parameter "historyName" in @Event annotation.
Version:
1.2.0-20100423 snapshot
Original issue reported on code.google.com by honza.suchan
on 3 May 2010 at 11:55
I followed the MultiModule example to create my multi module application
and I realized that the name I give to my modules with @HistoryName never
appears in the URL as it's said to do in your documentation
(http://code.google.com/p/mvp4g/wiki/PlaceService#History_Management_and_Multi-M
odules_feature).
Instead, the name of the event (the name of the EventBus method) is
displayed in the URL.
Then I realized the same is happening with your MultiModule example.
Original issue reported on code.google.com by [email protected]
on 30 Mar 2010 at 9:22
Developer should be able to reveal presenters thanks to a goto method.
Should they be able to pass parameters? It could be useful but then this
solution wouldn't be strongly typed, probably something to discuss.
Original issue reported on code.google.com by [email protected]
on 1 Oct 2010 at 11:37
What steps will reproduce the problem?
1. go to http://code.google.com/p/mvp4g
2. click JavaDoc link on right of page
3. witness a mess of html!
What is the expected output? What do you see instead?
Formatted JavaDoc, I see lots of html source.
What version of the product are you using? On what operating system?
2.1, vista
Please provide any additional information below.
NA
Original issue reported on code.google.com by [email protected]
on 8 Jun 2010 at 5:57
I've small problem with Mvp4g. I would use more than one level inheritance.
Let's imaginate that we have a complex application. To avoid creation of
huge event buses we create following buses:
ApplicationEventBus (some common events like login, logout)
`- FrameEventBus (master view)
`- DashboardEventBus (detail view)
Root cause of problem is declaration of "itself" field in generated
modules. They use Mvp4gModule instead of "self" type.
I made patch to change field type to current class name. It's very simple.
Regards,
Luke
Original issue reported on code.google.com by [email protected]
on 30 Mar 2010 at 12:48
Attachments:
Add documentation for @Start
Original issue reported on code.google.com by [email protected]
on 12 May 2010 at 11:44
If presenter, view, service or history converter isn't in the same package
as the one describe in the parent tag, you have to write the full name of
its class even when it is in a subpackage.
You should have the possibility to indicate that the class attribute
should be concatenated to the package attribute even if it contains a
package name.
If a class name starts by a dot, the package attribute will be
concatenated to the class name.
For example
<presenters package="com.myapp.client.presenters" >
<presenter class=".display.MyDisplayPresenter" .../>
will give as class name:
com.myapp.client.presenters.display.MyDisplayPresenter
Original issue reported on code.google.com by [email protected]
on 4 Oct 2009 at 1:51
If you declare event with more than one argument the
com.mvp4g.util.exception.loader.Mvp4gAnnotationException is thrown with
message: Event method must not have more than 1 argument.
Original issue reported on code.google.com by [email protected]
on 28 Jan 2010 at 10:48
gwt 2.0 comes with UiBinder
Currently mvp conflicts with UiBinder when UiBinder xml file includes other
controls also defined in UiBinder
For example:
Main Mail application view consists from Inbox Panel, Navigation Panel and
Top Command Panel. If all views are defined in UiBinder xml files, and also
defined as views in mvp configuration, both mechanism will instantiate each
view class.
Original issue reported on code.google.com by [email protected]
on 29 Nov 2009 at 1:49
It would be useful to have a method to build event's token for external links
(i.e. GWT's Hyperlink widgets). This method could be provided by the event bus
and have the following signature:
public String getEventToken(String eventName, Object... parameters);
This is how you could use it:
String token = event.getEventToken(eventName, arg1, arg2);
Original issue reported on code.google.com by [email protected]
on 6 Oct 2010 at 11:38
What steps will reproduce the problem?
1. Download
http://mvp4g.googlecode.com/svn/maven2/releases/com/googlecode/mvp4g/mvp4g/1.2.0
/mvp4g-1.2.0-javadoc.jar
2. Unpack
3. See .svn directories there.
What is the expected output? What do you see instead?
.svn directories should be omitted. Artifact should repacked without them.
Original issue reported on code.google.com by [email protected]
on 13 Sep 2010 at 4:43
On NullPointerException in the dispatch method of EventBus, the error
message is :
"Event MyEvent doesn't exist. Have you forgotten to add it to your Mvp4g
configuration file?"
But if the NullPointerException is throw by the execute method, the error
message is not the appropriate.
A proposal to discuss :
public void dispatch(Event e) {
try {
if ( commands.get(e.getType()) != null ) {
commands.get(e.getType()).execute(e.getForm());
}
else {
throw new Mvp4gException("Event " + e.getType() + " doesn't exist.
Have you forgotten to add it to your Mvp4g configuration file?");
}
}
catch (ClassCastException er) {
throw new Mvp4gException( "Class of the object sent with event" +
e.getType() + " is incorrect. It should be the same as the one configured
in the Mvp4g configuration file.");
}
}
Original issue reported on code.google.com by [email protected]
on 29 Jul 2009 at 9:40
Have a child module with autoDisplay = false.
When this child module is loaded, the start view & its presenter are built
even if they're not used.
Start view & its presenter should be built only when getStartView is
called (and only if it wasn't built before).
Original issue reported on code.google.com by [email protected]
on 25 May 2010 at 12:24
Currently, you can only dispatch "event" and "payload". It would be a nice-
to-have if I could send more than one parameters.
Original issue reported on code.google.com by [email protected]
on 11 Mar 2010 at 10:20
Attribute calledMethod should be optional. If not present, the name of the
method should just be the type of the event preceded by "on".
For example, for an event which type is "displayMessage", if no
calledMethod attribute is defined, then the name of the method will
be "onDisplayMessage".
Original issue reported on code.google.com by [email protected]
on 14 Aug 2009 at 8:32
In Java, the word "method" is used instead of "function". So in the event
tag, the attribute "functionCalled" should be "methodCalled".
Original issue reported on code.google.com by [email protected]
on 7 Aug 2009 at 11:14
If you set the wrong class for the parent module with the setParentModule
method, a class cast exception occurs.
Instead Mvp4g should display an error message.
Original issue reported on code.google.com by [email protected]
on 1 May 2010 at 9:51
I think there is a limit of events in event bus.
Inside a temporary file generated by mvp4g, in section:
eventBus = new AbstractEventBus(){
// event's invocations
}
I've got an error:
"Too many synthetic parameters, emulated parameter val$parameter_name is
exceeding the limit of 255 words eligible for method parameters"
Is there any workaround to solve this issue without dividing my module into
submodules?
Original issue reported on code.google.com by [email protected]
on 18 Aug 2010 at 6:21
This way, the presenter can build other multiple presenters and pass their
views to its own view before its view needs to be build.
Workaround, use this class instead:
public class LazyPresenter<V extends LazyView, E extends EventBus> extends
BasePresenter<V, E> {
@Override
final public void bind() {
createPresenter();
view.createView();
bindView();
}
public void bindView() {
//do nothing by default
}
public void createPresenter() {
//do nothing by default
}
}
Original issue reported on code.google.com by [email protected]
on 11 Oct 2010 at 6:41
The framework should ease the management of history thanks to a place
service as described in Ray's presentation.
Original issue reported on code.google.com by [email protected]
on 7 Aug 2009 at 11:22
If you set a multiple presenter's view as the start view, an error occurs
because no instance of this presenter is created at start.
Solution:
When the getStartView is called, an instance of this multiple presenter should
be created.
Original issue reported on code.google.com by [email protected]
on 20 Jun 2010 at 2:23
Add a xsd file to automaticaly validate the mvp4g xml configuration file
Original issue reported on code.google.com by [email protected]
on 7 Aug 2009 at 11:42
What steps will reproduce the problem?
1. Define a child module
2. Set async = true
3. Set autoDisplay = true
What is the expected output?
I want to be able to load the child module without displaying it, but not
at application start.
What do you see instead?
Child module load only occurs only when event is passed to it, and that
always triggers start view display.
What version of the product are you using? On what operating system?
1.2.0 snapshot
multi-os (windows, mac, ubuntu)
Please provide any additional information below.
If I could temporarily disable the autoDisplay for the duration of a single
event, I could accomplish the prefetch (by defining and calling an event in
the child module that does nothing). Better yet though, would be some
kind of "prefetch" mechanism built into the framework.
Thanks.
I love your framework!
Original issue reported on code.google.com by [email protected]
on 1 Jun 2010 at 3:30
When a token fired by history doesn't correspond to an event, a 'not
found' event should be fired.
This event must be configurable thanks to XML or annotations:
<history initEvent="myInit" notFoundEvent="error404">...</history>
or
@NotFoundHistory
Original issue reported on code.google.com by [email protected]
on 7 Nov 2009 at 3:36
If not precised by the developer, this attribute should be deduced from
the method description of the first presenter that handles this event.
Original issue reported on code.google.com by [email protected]
on 4 Oct 2009 at 1:57
What steps will reproduce the problem?
1. I created the child Module(B) by extending child Module(A) and mention
the child Module(B) name inside the child Module(A) Event Bus.
2. I created method with setParentModule(childModule(A))
3.
What is the expected output? What do you see instead?
Excpected output:To load a child Module from another child module
Error: Failed to instantiate the child module(B) Impl. But the history
converter works (convertToToken) works fine but the child Module (B) Impl
fails to instantiate due to being abstract class.
What version of the product are you using? On what operating system?
mvp4g 1.1.0 . Linux Fedora
Please provide any additional information below.
I suppose Inheritance property from the child Module(A) is not being
implemented for the child Module(B)..
Original issue reported on code.google.com by [email protected]
on 21 May 2010 at 11:55
When Class.forName(...) is called, it creates a class object thanks to the
name but it also instantiates all static attributes of the class.
If one of the attribute needs a call to GWT.create(...), an error will be
thrown and the application won't be loaded.
Instead of using this method, use:
context.getTypeOracle().findType( typeName );
Original issue reported on code.google.com by [email protected]
on 28 Oct 2009 at 2:50
Can't find my EventBus class when I use two source paths:
<source path='com.hyip.domain' />
<source path='com.hyip.client' />
If I put the 'domain' package inside the 'client' package, and remove the
<source> tags from gwt.xml, it works.
See screenshot for details.
- Mvp4g is 1.2
- GWT 2.0.3
- Java 1.6
- Mac OS Snow Leopard
Original issue reported on code.google.com by GBalensiefer
on 11 Jul 2010 at 6:52
Attachments:
Add a @View annotation to have the choice to either annotate the presenter or
the view.
You could have either
@Presenter(view=OneView.class)
public class OnePresenter ... {}
or
@View(presenter=OnePresenter.class)
public class OneView ... {}
Original issue reported on code.google.com by [email protected]
on 1 Oct 2010 at 11:29
It may be a bug or it may be that I don't fully understand how multi-module
feature works in mvp4g, it which case I apologize for reporting this as a bug.
I created a skeleton of an application which is certainly going to change but
that's not the point - for now I'm just experimenting with the mvp4g
multi-module feature.
Here is the error message that I'm getting during compilation:
[ERROR] presenter pl_ciborowski_konrad_peval_client_application_ApplicationPresenter: Invalid Event Bus. Can not convert pl.ciborowski.konrad.peval.client.main.MainEventBus to pl.ciborowski.konrad.peval.client.application.ApplicationEventBus
com.mvp4g.util.exception.InvalidTypeException: presenter
pl_ciborowski_konrad_peval_client_application_ApplicationPresenter: Invalid
Event Bus. Can not convert pl.ciborowski.konrad.peval.client.main.MainEventBus
to pl.ciborowski.konrad.peval.client.application.ApplicationEventBus
at com.mvp4g.util.config.Mvp4gConfiguration.validateEventHandlers(Mvp4gConfiguration.java:720)
at com.mvp4g.util.config.Mvp4gConfiguration.load(Mvp4gConfiguration.java:212)
at com.mvp4g.util.Mvp4gGenerator.writeClass(Mvp4gGenerator.java:144)
at com.mvp4g.util.Mvp4gGenerator.createClass(Mvp4gGenerator.java:89)
at com.mvp4g.util.Mvp4gGenerator.generate(Mvp4gGenerator.java:70)
at com.google.gwt.dev.javac.StandardGeneratorContext.runGenerator(StandardGeneratorContext.java:418)
at com.google.gwt.dev.cfg.RuleGenerateWith.realize(RuleGenerateWith.java:38)
at com.google.gwt.dev.shell.StandardRebindOracle$Rebinder.tryRebind(StandardRebindOracle.java:108)
at com.google.gwt.dev.shell.StandardRebindOracle$Rebinder.rebind(StandardRebindOracle.java:54)
at com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:154)
at com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:143)
at com.google.gwt.dev.Precompile$DistillerRebindPermutationOracle.getAllPossibleRebindAnswers(Precompile.java:317)
at com.google.gwt.dev.jdt.WebModeCompilerFrontEnd.doFindAdditionalTypesUsingRebinds(WebModeCompilerFrontEnd.java:95)
at com.google.gwt.dev.jdt.AbstractCompiler$Sandbox$CompilerImpl.process(AbstractCompiler.java:200)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:444)
at com.google.gwt.dev.jdt.AbstractCompiler$Sandbox$CompilerImpl.compile(AbstractCompiler.java:123)
at com.google.gwt.dev.jdt.AbstractCompiler$Sandbox$CompilerImpl.compile(AbstractCompiler.java:234)
at com.google.gwt.dev.jdt.AbstractCompiler$Sandbox$CompilerImpl.access$200(AbstractCompiler.java:109)
at com.google.gwt.dev.jdt.AbstractCompiler.compile(AbstractCompiler.java:522)
at com.google.gwt.dev.jdt.BasicWebModeCompiler.getCompilationUnitDeclarations(BasicWebModeCompiler.java:112)
at com.google.gwt.dev.jdt.WebModeCompilerFrontEnd.getCompilationUnitDeclarations(WebModeCompilerFrontEnd.java:47)
at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler.precompile(JavaToJavaScriptCompiler.java:430)
at com.google.gwt.dev.jjs.JavaScriptCompiler.precompile(JavaScriptCompiler.java:32)
at com.google.gwt.dev.Precompile.precompile(Precompile.java:522)
at com.google.gwt.dev.Precompile.precompile(Precompile.java:414)
at com.google.gwt.dev.Compiler.run(Compiler.java:201)
at com.google.gwt.dev.Compiler$1.run(Compiler.java:152)
at com.google.gwt.dev.CompileTaskRunner.doRun(CompileTaskRunner.java:87)
at com.google.gwt.dev.CompileTaskRunner.runWithAppropriateLogger(CompileTaskRunner.java:81)
at com.google.gwt.dev.Compiler.main(Compiler.java:159)
So it says it cannot convert the MainEventButs to ApplicationEventBus. I'm not
sure what this really means. Both are sublasses of EventBus so why is it
attempting to convert one to another?
Here is my MainEventBus
@Events(startView = MainViewImpl.class, historyOnStart = false, debug = true)
@ChildModules({@ChildModule(moduleClass = LoginModule.class, async = false,
autoDisplay = false),
@ChildModule(moduleClass = ApplicationModule.class, async = true, autoDisplay =
false)})
public interface MainEventBus extends EventBus {
@Start
@Event(modulesToLoad = LoginModule.class, handlers = MainPresenter.class)
public void goToLogin();
@Event(modulesToLoad = ApplicationModule.class, handlers = ApplicationPresenter.class)
public void goToAppMainScreen();
@Event(handlers = MainPresenter.class)
public void changeBodyContainer(Canvas bodyContainer);
}
Here is my application event bus
@Events(startView = ApplicationViewImpl.class, module =
ApplicationModule.class, debug = true)
public interface ApplicationEventBus extends EventBus {
@Event(forwardToParent = true)
public void changeBodyContainer(Canvas bodyContainer);
/**
* @see MainEventBus#goToAppMainScreen()
*/
@Event(handlers = ApplicationPresenter.class)
public void goToAppMainScreen();
}
In case you need the ApplicationPresenter - here it is:
@Presenter(view = ApplicationViewImpl.class)
public class ApplicationPresenter extends BasePresenter<ApplicationView,
ApplicationEventBus> {
/**
* Displays the application main screen.
*/
public void onGoToAppMainScreen() {
eventBus.changeBodyContainer(view.getViewCanvas());
}
}
I am puzzled no end why this doesn't compile. Either it is indeed a bug or I'm
missing something blindigly obvious.
Best regards,
Konrad Ciborowski
Kraków, Poland
PS The error message should say "Cannot convert" rather than "Can not convert".
Original issue reported on code.google.com by [email protected]
on 27 Sep 2010 at 8:43
Update xsd file with 1.1.0 features
Original issue reported on code.google.com by [email protected]
on 29 Nov 2009 at 5:09
You should have the possibility to define an event with no handler in case
it's not caught for the moment.
the attribute handlers must be there but
<event ... handlers="" ... /> must be a correct value
Original issue reported on code.google.com by [email protected]
on 13 Oct 2009 at 6:32
If you use @HistoryConfiguration with no @InitHistory, an unexcept error
message shows:
history : Encountered a reference to unknown element 'null'
The following error message should be displayed: You must define a History init
event if you use history converters.
workaround: set the mandatory @InitHistory fixes the issue
Original issue reported on code.google.com by [email protected]
on 5 Oct 2010 at 5:48
Mvp4gAnnotationException throws this error message:
"Have you forget to inject it to a presenter?"
The correct form should be:
"Have you forgotten to inject it to a presenter?"
A trivial error but also very easy to fix.
Best regards,
Konrad Ciborowski
Original issue reported on code.google.com by [email protected]
on 20 Aug 2010 at 9:54
would be better, if u create a group to allow we all discuss on mvp for gwt
Original issue reported on code.google.com by [email protected]
on 30 Jun 2009 at 5:53
Attach an history converter to an event with no parameter, the following
error occurs:
[ERROR] Line 69: form cannot be resolved
Original issue reported on code.google.com by [email protected]
on 1 Dec 2009 at 3:12
Add path attribute to service tag as described by webdizz (see
http://groups.google.com/group/mvp4g/browse_thread/thread/a182892e248dac19)
.
Original issue reported on code.google.com by [email protected]
on 22 Sep 2009 at 5:01
The framework should be able to automatically inject the presenter into the
view only for a certain type of view.
Original issue reported on code.google.com by [email protected]
on 1 Oct 2010 at 11:32
Some event will make the application switch screens. For this event, developer
should be able to display a navigation confirm if needed to make sure the user
wants to leave the page. It's really useful to prevent user to lose information
on create page.
Original issue reported on code.google.com by [email protected]
on 1 Oct 2010 at 11:43
Presenters should be built only when they handle their first event or at
start if its view gets displayed.
See following post for more details:
(http://groups.google.com/group/mvp4g/browse_thread/thread/1fa4aeed1e25fff2
)
Original issue reported on code.google.com by [email protected]
on 11 Nov 2009 at 10:12
Currently the eventBus calls support only 1 parameters and as previously
discussed with Pierre he indicated it could be done however some revamp of
other services are required as well.
So this is just to register as an issue that would be nice to get addressed
on next version.
Original issue reported on code.google.com by [email protected]
on 11 Mar 2010 at 2:09
Add ant files to examples to build them
Original issue reported on code.google.com by [email protected]
on 16 Oct 2009 at 1:09
I need to change application's locale on the client side after user's
login. To do it I split application into three modules:
- application - which is root module,
- login - responsible for user's login and setting user's locale in
variable __gwt_Locale,
- main - rest of application.
Now I need to define property provider for variable locale in main
submodule. To do this mvp4g have to read submodule definition from gwt xml
file what is missing in current version.
This enhancement has other benefits, i.e. login module can inherit less
modules than main module so the first one will load faster.
Original issue reported on code.google.com by [email protected]
on 1 Apr 2010 at 10:31
I'm currently using 1.1.0.
What I'm attempting to do is have a DockLayoutPanel as my main widget (like
the grid in the samples).
To duplicate I took the Mvp4gHistory project and did the following :
1) Changed mvp4ghistory.html file to <!DOCKTYPE html>
2) Did the following code change in RootTemplateView.java :
DockLayoutPanel dock=new DockLayoutPanel(Unit.EM);
DeckPanel message=new DeckPanel();
DeckPanel top=new DeckPanel();
DeckPanel bottom=new DeckPanel();
DeckPanel center=new DeckPanel();
@Override
protected Widget createWidget(){
messageBar.setStyleName( "messageBar" );
message.add(messageBar);
message.setSize("100%", "100%");
top.setSize("100%", "100%");
bottom.setSize("100%", "100%");
center.setSize("100%", "100%");
dock.setSize("100%", "100%");
dock.addNorth(message, 5);
dock.addNorth(top, 5);
dock.addSouth(bottom, 5);
dock.add(center);
return dock;
}
public Label getMessageBar() {
return messageBar;
}
public void setBottomWidget( Widget w ) {
bottom.clear();
bottom.add(w);
bottom.showWidget(0);
}
public void setMainWidget( Widget w ) {
center.clear();
center.add(w);
center.showWidget(0);
}
public void setTopWidget( Widget w ) {
top.clear();
top.add(w);
top.showWidget(0);
}
public void clearMainWidget() {
center.clear();
}
Now I have tried creating widgets and putting them into the dock as a test
(instead of the DeckPanels), but even on a static display it isn't
rendering correctly (although Chrome will sometimes get close).
I recall reading something about it maybe having something to do with
RootView and RootPresenter but have no idea how to overcome it.
Original issue reported on code.google.com by [email protected]
on 26 Jan 2010 at 5:13
Attachments:
Developers should be able to override presenter's methods to define actions to
execute when its view is getting displayed (load method), or when its view is
getting removed (unload method) or whenever the presenter has to handle an
event (reset method)
Original issue reported on code.google.com by [email protected]
on 1 Oct 2010 at 11:47
When you run JUnit tests for the example, they fail for the following
reason:
com.mvp4g.client.Mvp4gException: Event changeTopWidget doesn't exist. Have
you forgotten to add it to your Mvp4g configuration file?
Workaround:
In com.mvp4g.example.client.mock.eventbus.MockEventBus class
change
public void dispatch( String eventType, Object form ) {
to
public void dispatch( String eventType, Object form, boolean hasHistory ) {
Original issue reported on code.google.com by [email protected]
on 17 Oct 2009 at 7:09
Requested functionality:
I would like the ability to bind an event in the eventbus to something that is
either annotated with some user created annotation or something that implements
a specific interface
-
Detailed description of functionality
In the eventbus
@Event(annotatedWith=MyNewAnnotation.class)
void fireSomeEvent(String variable);
The presenter
@MyNewAnnotation
@Presenter(....)
public void onFireSomeEvent(String variable)
-
-
Use cases or testing scenarios for the functionality
The would allow me to build a framework that other people could build upon.
Also, for events that are managed by many different presenters/handlers it
would reduce the codebloat in the eventbus and increase readability.
Original issue reported on code.google.com by [email protected]
on 28 Sep 2010 at 8:06
See post
http://groups.google.com/group/mvp4g/browse_thread/thread/a9714065557e8c98
for more information
Original issue reported on code.google.com by [email protected]
on 13 Nov 2009 at 4:07
Currently Mvp4g always has one view and presenter. It would be nice to
support more than one instance of view/presenter - for example by adding
"multiple=true" attribute to @Event annotation. After that Mvp4g should
create new view and presenter on every event.
Original issue reported on code.google.com by [email protected]
on 31 Mar 2010 at 9:15
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.