Coder Social home page Coder Social logo

funfried / externalcodeformatter_for_netbeans Goto Github PK

View Code? Open in Web Editor NEW
57.0 10.0 19.0 95.44 MB

Several external (e.g. Eclipse, Google, Spring, ...) code formatters integration for NetBeans

Home Page: https://funfried.github.io/externalcodeformatter_for_netbeans

License: Eclipse Public License 2.0

netbeans-plugin formatter eclipse-formatter netbeans google-java-format netbeans-ide spring-formatter java eclipse

externalcodeformatter_for_netbeans's Introduction

Release Build Status Linux Build Status Windows Build Status Coverage Status Code Coverage Codacy Badge Maven Central GitHub All Releases GitHub issues Eclipse Public License, Version 2.0 Follow Me On Twitter

External Code Formatters for NetBeans

(formerly known as Eclipse Java Code Formatter for NetBeans)

What is External Code Formatters Plugin for NetBeans

This plugin helps you to apply to a common code style in a team of Eclipse, IntelliJ and NetBeans IDE users. You can use several external code formatters inside the NetBeans IDE (see below), depending on whatever your co-workers use. The original formatting engine of Eclipse, the Google Code Formatter, the Spring Java Formatter and others are embedded and allow you to format the source code the same way as e.g. your co-workers do with their Eclipse IDE.

Global settings Project settings

Supported formatters

Features

  • Makes use of the internal NetBeans formatting API, which makes it possible to reuse built-in features like the format on save action or format only selected lines ... (since 1.13)
  • Global configuration and project specific configuration
  • Shows the used formatter in a notification (Disabled by default)
  • Supports profiles (since 1.6)
  • Preserve breakpoints (experimental) (since 1.8)
  • Code templates for @formatter:on/off (since 1.9)
  • Supports Workspace Mechanic configuration file (since 1.10)
  • Support configuration from .settings/org.eclipse.jdt.core.prefs (absolute and relative paths) (since 1.10)
  • Support configuration of linefeed (since 1.10)
  • Support configuration of source level (since 1.10)
  • Support for macro invocation (since 1.12)
  • Support for guarded documents (documents that are created by the NetBeans GUI builder, guarded blocks are skipped of course, but everything in between can be formatted), only for Eclipse Java Code Formatter (since 1.13)
  • Support for Google code formatter (since 1.13)
  • Support for Spring Java formatter (since 1.14)
  • Support for Eclipse Javascript formatter (since 1.14)
  • Support for revelc.net XML formatter (since 1.14)
  • Support for Jsoup XML formatter (since 1.14)
  • Support for Jackson Json formatter (since 1.14)
  • Support for manticore JSQLFormatter (Special thanks to Andreas Reichel for the contribution) (since 1.14.1)
  • Support for remote configurations for Eclipse formatters (since 1.14.1)
  • Support for Palantir Java Formatter (since 1.15.0)
  • Support for Vertical Blank SQL Formatter (since 1.15.0)
  • Support for DBeaver (via Spotless) (since 1.15.0)
  • Option to organize imports with Google and Palantir Formatter instead of NetBeans (since 1.15.2)
  • Support for Jsoup HTML formatter (since 1.15.3)
  • Support for CSS Parser (since 1.15.3)

Compatibility

Compatible with NetBeans 12.0+ and JDK 17+.

Downloads

The latest version should be available in the plugin catalog of your NetBeans IDE, but just in case you can find the download links here.

Known issues

Please check the open GitHub Issues and see here

Note

Please note that this plugin only provides support for formatting. Eclipse users may miss the application of save-actions like "adding @Override annotations" or "member sort order". Such AST-based transformations are not provided by this plugin.

Feedback

Provide defects, requests for enhancements or general feedback at the GitHub issues page. Please check the known issues (see above) before you create an issue and check if your issue also appears in the latest development version (download links can be found here).

Changelog

You can find the changelog of all versions here

Licensing

This plugin is licensed under the Eclipse Public License, Version 2.0. This plugin uses third-party libraries, which are needed to provide its functionality, please check their licenses here.

The history of this project

  • The original idea is based on this blog entry from Willie Scholtz
  • Geertjan Wielenga made further investigations on that idea and put everything together to create a first NetBeans Plugin out of this idea
  • This was then forked by Benno Markiewicz
  • Benno Markiewicz stopped the development on the plugin and so Geertjan Wielenga forked it again and was looking for someone who wanted to take it over
  • I think I used this plugin since I use NetBeans, because in every company I was so far, I had exactly this circumstance that the formatting configuration was always there for Eclipse, but not for NetBeans. And because I prefer NetBeans over Eclipse I had to find a way to use NetBeans but the code style configuration from Eclipse. I'm happy that I can give back something to the community now by continuing the development of this plugin.

Support

Keep this project alive by supporting it: one-time Donate or Patreon! or become a Sponsor or just Buy me a drink

If you can't or don't want to spend money you can also say thanks

externalcodeformatter_for_netbeans's People

Contributors

funfried avatar geertjanw avatar jonathanpoulin9 avatar manticore-projects avatar markiewb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

externalcodeformatter_for_netbeans's Issues

Formatter fails to work with error: No profile in config file of kind: CodeFormatterProfile

I am using Netbeans 7.3.1/JDK-1.6.u45/Linux Ubuntu 12.04LTS

The following stack trace is reported by Netbeans

de.markiewb.netbeans.plugins.eclipse.formatter.xml.ConfigReadException: No profile in config file of kind: CodeFormatterProfile
    at de.markiewb.netbeans.plugins.eclipse.formatter.xml.ConfigReader.read(ConfigReader.java:53)
[catch] at de.markiewb.netbeans.plugins.eclipse.formatter.EclipseFormatter.format(EclipseFormatter.java:65)
    at de.markiewb.netbeans.plugins.eclipse.formatter.EclipseFormatter.forCode(EclipseFormatter.java:91)
    at de.markiewb.netbeans.plugins.eclipse.formatter.EclipseFormatterUtilities$1.run(EclipseFormatterUtilities.java:60)
    at org.netbeans.editor.GuardedDocument.runAtomic(GuardedDocument.java:317)
    at org.openide.text.NbDocument.runAtomic(NbDocument.java:436)
    at de.markiewb.netbeans.plugins.eclipse.formatter.EclipseFormatterUtilities.reFormatWithEclipse(EclipseFormatterUtilities.java:47)
    at de.markiewb.netbeans.plugins.eclipse.formatter.FormatJavaAction.format(FormatJavaAction.java:47)
    at de.markiewb.netbeans.plugins.eclipse.formatter.ReformatWithEclipseAction.actionPerformed(ReformatWithEclipseAction.java:64)
    at org.openide.awt.AlwaysEnabledAction$1.run(AlwaysEnabledAction.java:198)
    at org.openide.util.actions.ActionInvoker$1.run(ActionInvoker.java:95)
    at org.openide.util.actions.ActionInvoker.doPerformAction(ActionInvoker.java:116)
    at org.openide.util.actions.ActionInvoker.invokeAction(ActionInvoker.java:99)
    at org.openide.awt.AlwaysEnabledAction.actionPerformed(AlwaysEnabledAction.java:201)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:809)
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:850)
    at java.awt.Component.processMouseEvent(Component.java:6297)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3275)
    at java.awt.Component.processEvent(Component.java:6062)
    at java.awt.Container.processEvent(Container.java:2039)
    at java.awt.Component.dispatchEventImpl(Component.java:4660)
    at java.awt.Container.dispatchEventImpl(Container.java:2097)
    at java.awt.Component.dispatchEvent(Component.java:4488)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4575)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4236)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4166)
    at java.awt.Container.dispatchEventImpl(Container.java:2083)
    at java.awt.Window.dispatchEventImpl(Window.java:2489)
    at java.awt.Component.dispatchEvent(Component.java:4488)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:674)
    at java.awt.EventQueue.access$400(EventQueue.java:81)
    at java.awt.EventQueue$2.run(EventQueue.java:633)
    at java.awt.EventQueue$2.run(EventQueue.java:631)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
    at java.awt.EventQueue$3.run(EventQueue.java:647)
    at java.awt.EventQueue$3.run(EventQueue.java:645)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:644)
    at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

EclipseCodeFormatter is not working for maven project

Hi,

I have imported the eclipserules for code formatting.Once importing and while appying the code formatting.Code is not changing according to the rules mentioned.
To check it I have taken the two samples java projects with maven and without maven then for normal javaproject it is working,but for maven java project it is not working.Please correct me if I have missed anywhere, and let me know If I am doing anything wrong.

Regards,
Sainath

Only works on "Format on save" mode !

I use NetBeans 7.4 and Eclipse Code Formatter for Java 1.6, the plugin works only on "Format on save" mode, when i uncheck "Format on save" it does not work.

NullPointerException when configuration file not found

The following NullPointerException is thrown when the configuration file for the formatter is not found:

SEVERE [global]
java.lang.NullPointerException
    at de.markiewb.netbeans.plugins.eclipse.formatter.xml.ConfigReader.read(ConfigReader.java:38)
    at de.markiewb.netbeans.plugins.eclipse.formatter.EclipseFormatter.format(EclipseFormatter.java:79)
    at de.markiewb.netbeans.plugins.eclipse.formatter.EclipseFormatter.forCode(EclipseFormatter.java:121)
    at de.markiewb.netbeans.plugins.eclipse.formatter.EclipseFormatterUtilities$EclipseFormatterTask.run(EclipseFormatterUtilities.java:127)
    at org.netbeans.editor.GuardedDocument.runAtomic(GuardedDocument.java:321)
    at org.openide.text.NbDocument.runAtomic(NbDocument.java:436)
    at de.markiewb.netbeans.plugins.eclipse.formatter.EclipseFormatterUtilities.reFormatWithEclipse(EclipseFormatterUtilities.java:61)
    at de.markiewb.netbeans.plugins.eclipse.formatter.FormatJavaAction.format(FormatJavaAction.java:50)
    at de.markiewb.netbeans.plugins.eclipse.formatter.ReformatWithEclipseAction.actionPerformed(ReformatWithEclipseAction.java:65)
    at org.openide.awt.AlwaysEnabledAction$1.run(AlwaysEnabledAction.java:198)
    at org.openide.util.actions.ActionInvoker$1.run(ActionInvoker.java:95)
    at org.openide.util.actions.ActionInvoker.doPerformAction(ActionInvoker.java:116)
    at org.openide.util.actions.ActionInvoker.invokeAction(ActionInvoker.java:99)
    at org.openide.awt.AlwaysEnabledAction.actionPerformed(AlwaysEnabledAction.java:201)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
    at java.awt.Component.processMouseEvent(Component.java:6505)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
    at java.awt.Component.processEvent(Component.java:6270)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:708)
    at java.awt.EventQueue$4.run(EventQueue.java:706)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
    at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159)
[catch] at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

Setting not used correctly.

I used elicpse formatter without problem.

Some value has been done on this file, so i reloaded file.

The old value for indentation was 8

Now it's 4 but it continue to use 8.
I tried to close netbeans, but the old value continue to be used.

Support configuration of target JDK level

org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.source=1.7

  • currently it is hardcoded to 1.6

Java Formatter lost when saving the file

I downloaded your plug-in and tried out on NB 7.4 RC1 and NB 7.3.1

  1. When I use shortcut key (Ctrl-Shift-F) it works
  2. But when I save the java file, it looses all the formats.

Please provide me a solution.

Don't replace the format in the menu

Don't replace the format in the menu. The new delegation action is only enabled for "text/java-x" and thus formatting other mimetypes like xml isn't possible anymore..

NPE while saving options when no profile is set

See https://netbeans.org/bugzilla/show_bug.cgi?id=238410

java.lang.NullPointerException
   at org.netbeans.core.startup.preferences.NbPreferences.put(NbPreferences.java:179)
   at org.netbeans.core.startup.preferences.NbPreferences.put(NbPreferences.java:174)
   at de.markiewb.netbeans.plugins.eclipse.formatter.options.EclipseFormatterPanel.store(EclipseFormatterPanel.java:381)
   at de.markiewb.netbeans.plugins.eclipse.formatter.options.EclipseFormatterOptionsPanelController.applyChanges(EclipseFormatterOptionsPanelController.java:45)
   at org.netbeans.modules.options.TabbedController.applyChanges(TabbedController.java:130)
   at org.netbeans.modules.options.CategoryModel$Category.applyChanges(CategoryModel.java:401)
java.lang.NullPointerException
    at org.netbeans.modules.projectapi.AuxiliaryConfigBasedPreferencesProvider$AuxiliaryConfigBasedPreferences$1.run(AuxiliaryConfigBasedPreferencesProvider.java:635)
    at org.netbeans.modules.projectapi.AuxiliaryConfigBasedPreferencesProvider$AuxiliaryConfigBasedPreferences$1.run(AuxiliaryConfigBasedPreferencesProvider.java:631)
    at org.openide.util.Mutex.writeAccess(Mutex.java:404)
    at org.netbeans.modules.projectapi.AuxiliaryConfigBasedPreferencesProvider$AuxiliaryConfigBasedPreferences.put(AuxiliaryConfigBasedPreferencesProvider.java:631)
    at de.markiewb.netbeans.plugins.eclipse.formatter.options.EclipseFormatterPanel.store(EclipseFormatterPanel.java:381)
    at de.markiewb.netbeans.plugins.eclipse.formatter.customizer.EclipseFormatterCustomizerTab$1.actionPerformed(EclipseFormatterCustomizerTab.java:60)
    at org.netbeans.modules.project.uiapi.CustomizerDialog$OptionListener.storePerformed(CustomizerDialog.java:357)
    at org.netbeans.modules.project.uiapi.CustomizerDialog$OptionListener.storePerformed(CustomizerDialog.java:360)
    at org.netbeans.modules.project.uiapi.CustomizerDialog$OptionListener.access$400(CustomizerDialog.java:253)
    at org.netbeans.modules.project.uiapi.CustomizerDialog$OptionListener$2$1$1.run(CustomizerDialog.java:316)

NPE when Format action is invoked but no java document has the focus

java.lang.NullPointerException
    at org.netbeans.eclipse.formatter.ReformatWithEclipseAction.actionPerformed(ReformatWithEclipseAction.java:69)
    at org.openide.awt.AlwaysEnabledAction$1.run(AlwaysEnabledAction.java:198)
    at org.openide.util.actions.ActionInvoker$1.run(ActionInvoker.java:95)
    at org.openide.util.actions.ActionInvoker.doPerformAction(ActionInvoker.java:116)
    at org.openide.util.actions.ActionInvoker.invokeAction(ActionInvoker.java:99)
    at org.openide.awt.AlwaysEnabledAction.actionPerformed(AlwaysEnabledAction.java:201)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
    at java.awt.Component.processMouseEvent(Component.java:6505)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
    at java.awt.Component.processEvent(Component.java:6270)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:708)
    at java.awt.EventQueue$4.run(EventQueue.java:706)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
    at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159)
[catch] at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

Support "Eclipse [built-in]" formatter

unfortunately I did not manage to successfully register the "Eclipse [built-in]" formatter profile (used "Export All..." to export the profile from eclipse Kepler) in NetBeans (no NetBeans status bar information).

Cannot choose profile using eclipse configuration file

In Eclipse, I chose the "Export All" option in the formatting preferences. I Browse to this .xml file with Eclipse Formatter but the profile only shows a "--Choose profile--" option. OK and Apply options are greyed out.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.