morbac / xmltools Goto Github PK
View Code? Open in Web Editor NEWXML Tools plugin for Notepad++
License: GNU General Public License v3.0
XML Tools plugin for Notepad++
License: GNU General Public License v3.0
The validation window is too tricky to manage selecting all and copying.
A button in the GUI would be helpful.
In an older version line breaks were not removed when formatting xml. Now I updated to the newest version, and when I now format an xml file, all my line breaks are gone. I have large config files, where I group certain elements with line breaks. Now this isn't possible anymore. There should be an option to keep line breaks when using pretty print.
At the moment, the validation result window only lists errors, but it's hard to see where the error happened.
Line numbers would be very helpful for that, especially if it supports clicking to jump to line.
If a file ends with a comment that is not being closed, pretty print option runs forever
file become formatted
the action seems to be running forever and notepad++ freezes
While helping people in the NPP Forums, I've seen a couple of recent questions about the find-XSD-location popup not appearing when expected.
https://notepad-plus-plus.org/community/topic/16274/need-to-load-xsd/2
The first case seemed reasonable to me: it doesn't prompt when the XSD is referenced in the XML, and the XSD file was properly found.
https://notepad-plus-plus.org/community/topic/16359/validate-now-not-able-to-validate-xml-against-schema
In the second, I think a feature could be added: if there is an XSD specified using xsi:noNamespaceSchemaLocation
in the XML, but that referenced XSD file cannot be found, I think the popup should appear asking for the location, rather than just giving an error that it "failed to locate main schema resource"
how to use option Pretty print (libXML) [experimental] in more fast way?
is it possible to bind any hot keys combination to activate it?
Thanks in advance for answering.
IIRC, when the path to a remote schema is no longer valid because the domain has gone AWOL, upon trying to validate an XML file, XML Tools would report the connection failure as an error message.
With the current version, 3.0.4.2 no such error message appears and the XML Validation result is OK even for an XML file that has known validation errors.
IMHO, this is a serious "false negative" bug that needs to be fixed ASAP.
I copied manually XMLTools.dll to %LOCALAPPDATA%\Notepad++\plugins\XMLTools and the content of the libs folder to the notepad++ root folder C:\Program Files (x86)\Notepad++. The plugin is loaded but claims that it cannot find the libXML and libXSLT libraries.
I use the current version 2.4.11 of the plugin.
Btw.: do you have any plans to add this plugin to https://github.com/notepad-plus-plus/nppPluginList?
Hi
I'm just wondering if this is compatible with XSD 1.1. I have tried to validate my xsd schema with several tools, but they fail when using a "xs:assert", which as far as I understand is new in 1.1. I don't really know if I'm doing a mistake or all tools I have tried are not compatible with "xs:assert".
Unable to parse schema file.
Parsing error at line 11:
Element '{http://www.w3.org/2001/XMLSchema}complexType:
The content is not valid. Expected is (annotation?,
(simpleContent | complexContent | ((group | all | choice |
sequence)?, ((attribute | attributeGroup)*, anyAttribute?)))).
And the files:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
vc:minVersion="1.1">
<xs:element name="tag">
<xs:complexType>
<xs:sequence/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="abc" use="optional" type="xs:integer"/>
<xs:attribute name="def" use="optional" type="xs:integer"/>
<xs:assert test="(@abc and not(@def)) or (not(@abc) and @def)"/>
</xs:complexType>
</xs:element>
</xs:schema>
<?xml version="1.0" encoding="utf-8"?>
<tag xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
name="test" abc="10"/>
Best regards
Josef
The xmltools 3.0.3.3 causes performance issue while using the "Replace all" command from NPP search/replace dialog.
A fix has been done in new 3.0.3.4 release
The error XML file is as follows:
Using the "Check XML syntax now" menu of XML tools, the prompt is: XML Parsing error at line 16...
However, the result of using any other XML grammar checking tool is: error on line 7 at column 4.
If the content of the XML file has N rows, the XML tools locates the error in line N (line 16). This will make it very difficult to eliminate XML errors!
I love this plugin.
I am running 64 bit Notepad++ 7.8.4 with XML plugin 3.0.1.0.
Would it be possible to add an option to linearize just the selected text? Either by having the command work only on selected text by default, or as a separate menu command to linearize selected?
This is already the behavior of the Pretty Print and Pretty Print with line breaks commands. If text is selected, the commands are applied only to the selected text; if no text is selected, they are applied to the entire file.
If Linearize worked the same way, that would be awesome.
I would like to be able to linearize sections of XML that I am commenting out, while maintaining the current indenture level.
(Yeah, there's the ideal feature, linearize and comment selected text as one command. But I suspect that's just weirdly specific to my situation.)
Thanks for considering it.
Dan
Seeing as the libxml library is outdated and has a known issue (#17), the library and other dependencies should be updated to the latest release.
Igor Zlatković, the current source of the Windows libraries, had this to say about his ports [via email]:
My Windows port cannot be built any more, except on old platforms. Newer versions of Microsoft C Toolchain cannot link to the system's C runtime (msvcrt.dll). They can only link to their own (incompatible) C runtimes which exist in various versions. According to some opinions (Google for details) distributing such binaries would violate both GPL and Microsoft EULA.
I attempted to distribute builds using GCC, but I am falling behind because I myself do not use Windows or XML any more. There are better maintained ports using the GCC toolchain. The most prominent example would be MSYS2 (msys2.org). It has current, native ports of Libxml and ~1500 other packages.
If it would turn out that my port is still useful and has some advantages over MSYS2 which I do not know about, then I would invest time for it to continue. With information I have now, everyone is better served by MSYS2 port. If I had to use XML on Windows again, I would use MSYS2 port and contribute to it where necessary, rather than revamping my port.
Switching to MSYS2 would also eliminate the requirement of including the source files for the libraries, as the relevant packages are hosted on the MSYS2 repo: libxml2, libxslt, and libwinpthread.
The XML Tools plugin is awesome. Thanks for releasing it for free.
This is actually a suggestion, but not an issue. In my daily work, I usually do the following steps:
Thank you for this excellent tool.
Would it be possible to allow the user to specify a variable number of spaces to use instead of tabs for indents?
The value could be persistent and set via the Options dialog box.
Thanks!
Good morning!
I am running 64 bit Notepad++ 7.8.4
XML plugin 3.0.1.0 unicode 64 bit
XML engine: MSXML
I installed the 3.0.1.0 plugin this morning, upgrading from 2.4.9.2
I attempted to use Pretty Print w/ line breaks on a 9k XML file, with no text selected. I got the error message below. Tried it on a 4k file, same result.
I tried Pretty Print, got the same error. I have not tried other features.
PluginsManager::runPluginCommand Exception
The command works correctly if I select sections of XML, although there is some limit. I cannot select the entire file, for example.
Interesting. If I select everything but the XML and DOCTYPE declarations, the command works correctly, even on substantially larger XML files.
We programmers are so centered on 0-9 style digits that we often don’t properly handle other writing systems, yet we live in a world that has many. There's a systemic bias towards English, albeit not one that's consciously intended.
In a moment of sheer whimsy, earlier today, I made a TextPipe filter that processed an OSIS XML file to replace every digit within sID eID osisID osisRef attributes by the corresponding Devanagari digit.
i.e. This changed all the numerics in Bible references to Devanagari. Other digits were left untouched. So at the very least, all chapter and verse numbers were changed,
NB. This also changed several standard book name abbreviations, such as "1Sam" to "१Sam".
To illustrate the output, here's a sample that was Psalm 1 in the KJV Bible module source text.
<chapter osisID="Ps.१">
<title type="chapter"><abbr expansion="Psalm"><hi type="spaced-letters">PSAL</hi>.</abbr> I.</title>
<verse sID="Ps.१.१" osisID="Ps.१.१"/><w lemma="strong:H0835">Blessed</w> <transChange type="added">is</transChange> <w lemma="strong:H0376">the man</w> <w lemma="strong:H01980" morph="strongMorph:TH8804">that walketh</w> <w lemma="strong:H06098">not in the counsel</w> <w lemma="strong:H07563">of the ungodly</w>, <w lemma="strong:H05975" morph="strongMorph:TH8804">nor standeth</w> <w lemma="strong:H01870">in the way</w> <w lemma="strong:H02400">of sinners</w>, <w lemma="strong:H03427" morph="strongMorph:TH8804">nor sitteth</w> <w lemma="strong:H04186">in the seat</w> <w lemma="strong:H03887" morph="strongMorph:TH8801">of the scornful</w>.<note type="study" osisRef="Ps.१.१" osisID="Ps.१.१!note.a" n="a"><catchWord osisRef="Ps.१.१@s[ungodly]">ungodly</catchWord>: or, <rdg type="alternate">wicked</rdg>.</note><verse eID="Ps.१.१"/>
<verse sID="Ps.१.२" osisID="Ps.१.२"/><w lemma="strong:H02656">But his delight</w> <transChange type="added">is</transChange> <w lemma="strong:H08451">in the law</w> <w lemma="strong:H03068">of the <divineName>Lord</divineName></w>; <w lemma="strong:H08451">and in his law</w> <w lemma="strong:H01897" morph="strongMorph:TH8799">doth he meditate</w> <w lemma="strong:H03119">day</w> <w lemma="strong:H03915">and night</w>.<verse eID="Ps.१.२"/>
<verse sID="Ps.१.३" osisID="Ps.१.३"/><w lemma="strong:H06086">And he shall be like a tree</w> <w lemma="strong:H08362" morph="strongMorph:TH8803">planted</w> <w lemma="strong:H06388">by the rivers</w> <w lemma="strong:H04325">of water</w>, <w lemma="strong:H05414" morph="strongMorph:TH8799">that bringeth forth</w> <w lemma="strong:H06529">his fruit</w> <w lemma="strong:H06256">in his season</w>; <w lemma="strong:H05929">his leaf</w> <w lemma="strong:H05034" morph="strongMorph:TH8799">also shall not wither</w>; <w lemma="strong:H06213" morph="strongMorph:TH8799">and whatsoever he doeth</w> <w lemma="strong:H06743" morph="strongMorph:TH8686">shall prosper</w>.<note type="study" osisRef="Ps.१.३" osisID="Ps.१.३!note.a" n="a"><catchWord osisRef="Ps.१.३@s[wither]">wither</catchWord>: <abbr expansion="Hebrew">Heb.</abbr> <rdg type="x-literal">fade</rdg>.</note><verse eID="Ps.१.३"/>
<verse sID="Ps.१.४" osisID="Ps.१.४"/><w lemma="strong:H07563">The ungodly</w> <transChange type="added">are</transChange> not so: but <transChange type="added">are</transChange> <w lemma="strong:H04671">like the chaff</w> <w lemma="strong:H07307">which the wind</w> <w lemma="strong:H05086" morph="strongMorph:TH8799">driveth away</w>.<verse eID="Ps.१.४"/>
<verse sID="Ps.१.५" osisID="Ps.१.५"/><w lemma="strong:H07563">Therefore the ungodly</w> <w lemma="strong:H06965" morph="strongMorph:TH8799">shall not stand</w> <w lemma="strong:H04941">in the judgment</w>, <w lemma="strong:H02400">nor sinners</w> <w lemma="strong:H05712">in the congregation</w> <w lemma="strong:H06662">of the righteous</w>.<verse eID="Ps.१.५"/>
<verse sID="Ps.१.६" osisID="Ps.१.६"/><w lemma="strong:H03068">For the <divineName>Lord</divineName></w> <w lemma="strong:H03045" morph="strongMorph:TH8802">knoweth</w> <w lemma="strong:H01870">the way</w> <w lemma="strong:H06662">of the righteous</w>: <w lemma="strong:H01870">but the way</w> <w lemma="strong:H07563">of the ungodly</w> <w lemma="strong:H06" morph="strongMorph:TH8799">shall perish</w>.<verse eID="Ps.१.६"/>
</chapter>
When I used XMLTools to check XML Syntax, the plugin crashed and gave the following error message popup.
https://www.dropbox.com/s/3bk4z4ew6escrtl/Screenshot%202020-05-04%2019.06.00.png?dl=0
I wonder whether this might be a significant upstream problem in a library that is used by many other open source programs. That's a sound reason for reporting it here to begin with.
Aside: My apparently strange action did have a real world context. viz.
I am in discussion with a colleague about some of the regular expressions in the .xsd file used for OSIS validation. The regexp pattern \p{N}
is used repeatedly therein. This stands for any Unicode character with the number property, which also covers fractions, superscript and subscript numbers, numbers in circles, numbers like 10,000, roman numerals, and other letter like numbers!
My curious experiment never got as far as an attempt to validate the OSIS, as it hit the plugin crash even for XML Syntax Check. In case anyone was already wondering, I should put on record that the input XML file sent to my filter passes both syntax check and OSIS validation.
Please add "XML Sort" funcionality. It's very useful to compare two XML's.
Something like this tool:
https://archive.codeplex.com/?p=xmlsorter
Statements based on following XML root element definition:
<xmlRootElement xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../nonExistantPath.xsd">
When validating an XML file where the path to a single xsd is provided via "xsi:noNamespaceSchemaLocation" can not be resolved, the validation succeeds and a "no error detected" popup appears.
Display an error popup that the xsd file cannot be loaded (like in XML Tools Version 2.4.11)
I noticed something similar was also discussed on #11, but as I understood it, it should only not trigger an error for a missing xsd file, if there are multiple xsd files provided and the last one is valid.
As in this example there is only one xsd, which makes it the last as well, I would assume it should trigger an error.
It takes more than a minute to pretty print an xml file that is provided in linearalized form. For a linear process that does string operations, 10MB is not much to process. It is not like it is doing DOM operations or something like that.
Looking at the pretty print function it does 2 passes. First it cleans it up, then it pretty prints them. Both passes mutate a std::string object which isn't efficient, and the longer the input string is, the slower everything will become.
If we were to use an std::stringstream to always create a copy instead of mutating the input string all the time, then these two passes could be combined into a single operation. I believe this could boost prettyprint performance significantly on longer inputs.
Hi,
I've encountered a problem with function "Pretty print (XML only - with line breaks)". In some situations the endinge tags will be removed which results in an invalid XML.
The following XML code can be used to reproduce the behaviour:
<konto xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><kElementtype>K</kElementtype><uniquename>TESTEXPORT</uniquename><shorttext>Religionswissenschaft</shorttext><defaulttext>TESTEXPORT4_Religionswissenschaft</defaulttext><longtext>Religionswissenschaft</longtext><elementnr></elementnr><comment><p>Das Modulpaket (au&szlig;ersoziologischer Kompetenzbereich) im Studiengebiet Religionswissenschaft wird in der Modul&uuml;bersicht der fachspezifischen Bestimmungen zum Teilstudiengang "Religionswissenschaft" im Rahmen des Zwei-F&auml;cher-Bachelor-Studiengangs geregelt.</p></comment><defaultlanguageValue>de</defaultlanguageValue><extId>TEST</extId></konto>
After Pretty print the ending </comment>
tag will be missing. Do you have any idea why this happens? Perhaps it lies on JAX-WS escaping mechanismn of strings. It does only escape < but not >. The code above is part of a SOAP request. The comment field contains HTML. Thx
Regards
Thomas
Consider next declaration of element type in schema file:
<xsd:simpleType name="legacyDateType">
<xsd:union memberTypes="isoDateType europeDateType"/>
</xsd:simpleType>
<xsd:simpleType name="europeDateType">
<xsd:annotation>
<xsd:documentation>Format dd.MM.yyyy or dd/MM/yyyy</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:whiteSpace value="collapse"/>
<xsd:pattern value="(0{0,1}[1-9]|[12][0-9]|3[01])[/.](0{0,1}[1-9]|1[012])[/.](18|19|20)[0-9]{2}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="isoDateType">
<xsd:annotation>
<xsd:documentation>Format yyyy-MM-dd</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:date">
<xsd:minInclusive value="1800-01-01"/>
<xsd:maxInclusive value="2100-01-01"/>
</xsd:restriction>
</xsd:simpleType>
So element with some date is supposed to validate both '2019-11-11' and '11.11.2019', however it always complains about second form, as if second member of xsd:union is ignored.
Probably it is due to update xml backend? I've used xerces to check it - validates as expected
I have a single line XML file size ~5KB (i.e. 5K characters long line). It was generated by an accounting system. I used Notepad++ Plugin “XML Tools 3.0.3.3” to make it readable.
In about column 3K in the original file I see clearly the tag sequence:
<cfdi:Emisor RegimenFiscal="123" Rfc="XXXXXX" Nombre="XXXXX XXXX XXXX"></cfdi:Emisor>
But when I press Shift + Ctrl + Alt + B to reformat it, the ending tag </cfdi:Emisor> is gone! The same thing happens to another couple of tags!
Old versions were installed with these libraries:
plugins\XMLTools\libs\libiconv-2.dll
plugins\XMLTools\libs\libwinpthread-1.dll
plugins\XMLTools\libs\libxml2-2.dll
plugins\XMLTools\libs\libxslt-1.dll
plugins\XMLTools\libs\zlib1.dll
Could you provide a default path used as homepath in case of using current version 2.4.11 together with N++ 7.5.9 or older which hasn't the new NPPM_GETPLUGINHOMEPATH and therefore provides an empty path.
I am using the XMLTools to validate some of my older XML's. In the latest releases > 3.0.3.3 the DTD validation is not working any more is there a way to get the DTD validation working again.
Hello,
I reverted back to the version 3.0.3.4 because the pretty print option ("text intend") I used in most cases has been removed. Usually I explicitly don't want that pretty print is screwing up my files by removing/inserting line feeds and similar. I explicitly don't want a (not configurable) pretty print that doe everything that way it thinks it is best.
Also the new display of validation errors is a huge step backwards IMHO.
I am working with a very large Xml file (about 400MB) and cannot do xpath on the file due to an error in libxml: Huge input lookup.
According to another github repo issue, a flag can be enabled to allow large files like this.
sbsdev/daisyproducer#8 and http://making-security-measurable.1364806.n2.nabble.com/libxml2-lxml-Parsing-large-9-5mb-XML-Documents-td7580595.html
Is this something that can be added either by default or have it as an option?
I downloaded the latest and greatest version of the tools and for some reason, ever since I got into the 3.X versions, XSLT stop working when functions (concat, format, etc) are present. If I take off all functions it works perfect.
When i convert text to XML by using the Convert selection XML to text (<> => <&>)
it seems to not do anything for the apostrophe (single quote) even if that should be '
<
>
&
'
"
When creating a user defined language for XML and having XML Tools installed it reverts to the standard notepad++ language style.
I removed from C:\Users[username]\AppData\Roaming\Notepad++\langs.xml:
<Language name="xml" ext="xml xaml xsl xslt xsd xul kml svg mxml xsml wsdl xlf xliff xbl sxbl sitemap gml gpx plist" commentLine="" commentStart="<!--" commentEnd="-->"> </Language>
This allowed notepad++ to open my XML files using my user defined language without XML Tools installed. Once I installed XML Tools it no longer opens XML with my user defined language.
Hello,
since v3.0.4.3, when validationg an xml file without xsd informations set, the xsd file selection dialog doesn't open and validation fails with the following message :
"Le nœud n'est ni valide ni non valide car la déclaration de DTD/schéma est introuvable."
I think the error is line 1191 of XMLValidation, when validation occurs before the search of schemaLocation.
Thank you for your great work.
This has happened on more than one occasion when I clicked Check XML syntax now.
See screenshot.
It's quite a large XML file, and numerous other files are open in Notepad++ most of the time.
NB. The XML file had previously passed and validated.
Workaround = Close Notepad++ and try again.
In the latest version (this worked in Xml Tools V2) running an xsl which includes another xsl then calls a template fails schema validation for the xsl.
Scenario:
Create xsl with:
<xsl:template name="FormatData">test</xsl:template>
Include that file in the primary xsl and call the template:
`
<xsl:include href="formdata.xsl"/>
<xsl:call-template name="FormatData"></xsl:call-template>
`
Hello,
Would it be possible to add a direct shortcut with a key to the "XSL Transformation ..." menu to make it more accessible without having to navigate between menus?
Regards.
I tried my best, fulfilling all requirements in order to compile this myself. But although I got it compiling, N++ still refuses to load it, claiming it can't work with the provided OpenSSL library (which is the standard one out of the Win64 OpenSSL v1.1.0g Light package.
Therefore, I'd like to suggest providing compiled versions for x64 and x86 upon each release here on GitHub.
The menu item Linarize ought to be spelled Linearize.
See also Linearization.
Notepad++: 7.8.5 32bit (build 2020.03.04)
Xml Tools: 3.0.3.3
OS: Win7 64bit
Symptom:
When I use the inbuilt search and replace function in Notepad++ on a simple text file (CSV) with Xml Tools installed, there is a huge delay until the app finishes the replacing compare to that case when Xml Tools is not installed. The time difference in my case (details below) is 30secs! (2=>32)
Reproduction:
I tested with this example below too with similar results:
https://people.sc.fsu.edu/~jburkardt/data/csv/snakes_count_1000.csv
(from here: https://people.sc.fsu.edu/~jburkardt/data/csv/csv.html)
I did not even work with an xml file, so how and why this plugin does interact with this notepad functionality?
Trying to evaluate an XPath expression, or validate a huge XML file can cause Notepad++ to crash outright. An error should be displayed instead of causing Notepad++ to terminate.
Running N++ v7.6.4, XMLTools v2.4.11.0, both 64 bit.
Since your XML Tools Notepad++ plugin is one of the most valuable ones I want to point you to the ongoing discussion in the Notepad++ community forum about the newly introduced Npp Plugin Admin, see here. Further infos are obtainable here.
Currently Plugin Admin is under initial testing but it would bring some serious changes to plugins and would require some effort of plugin authors. Maybe its worth for you to participate in the discussion.
@morbac do you have a problem with me upgrading the solution file to VS2019? It doesn't actually change much but if you are still using VS2017 then it might give some problems. Also on language level (C++ standard 14 vs 17).
I am working on some unit tests which require C++ standard 17, and I'm using VS2019 so that setting came automatic :)
Hi @morbac
I am interested in using this add-on in a commercial setting. However, I would require a license to be added to this repository so our legal department is satisfied with us using this. In my opinion, GPL-3 is a good choice.
There's a large range of Open Source licenses you could choose from . TL;DR Legal
Thanks, Nathan
The first 3 lines of my XML file are:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="KJV_1611.rnc" type="application/relax-ng-compact-syntax"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0" xmlns:xi="http://www.w3.org/2001/XInclude">
I have a local copy of KJV_1611.rnc
.
Please would you make it possible for XML Tools to validate against this type of schema.
XML Parsing error at line 999:
Premature end of data in tag project line 3
"
Pretty print with line break will change how an empty XML elements is displayed.
This comment explains it well.
I also know that this is valid XML, but there are times where all I want is to clean the formatting yet keep the actual content identical.
Would it be possible to add an option to leave empty XML elements as is ?
Hi,
I make a little extension for XPath evaluation. I add column with line number of found node. If you double click cell then make selection line in editor.
Can I add my changes to your project?
XMLTools used to report all validation fails, albeit the reporting dialog was not ideal.
Now it just stops at the first validation error line and describes how something on that line was wrong.
However, there seems to be no means to copy the yellow background reported text to the clipboard.
It may be worth considering the following idea.
Provide an option to choose either
This would give the XML file developer a feel for the magnitude of the task.
It would also provide insights to systematic repeated errors of the same kind.
It would be nice to set path to XSL file as a URL. The tool could download file with specified URL and run transformation process.
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.