diennea / docetproject Goto Github PK
View Code? Open in Web Editor NEWDocet - an online documentation manager
Home Page: https://docetproject.org
License: Apache License 2.0
Docet - an online documentation manager
Home Page: https://docetproject.org
License: Apache License 2.0
Would be very supportive to introduce a tool to help find typos in documents' content: in the first instance, this should support at least italian and english.
At first thought, it may be integrated in the overall validation process and, as a result, generate a report of mispelled words and typos.
First things first, we need to look for libraries implementing spell check.
The idea is to have a mojo which creates a ready-to-use WAR file which contains the built documentation package together with:
we can also add an option to create an "executable-war", that is a JAR file which runs Tomcat or Jetty and deploys the WAR file.
this will be useful too, in order to "view" the documentation without the need to install a Java Web container
It may be useful to have a Docet resouce accessor devising placeholders' values not only based on actual application currently serving a document, but also on the package, actual document and corresponding format.
To this end we plan to extend DocetDocumentResourcesAccessor interface providing a further method getPlaceholderForDocument taking in input an additional param containing the following info:
These field would be better encapsulated in a model class whose name still has to be made up.
So far doc packages does not feature any id allowing them to be uniquely identified on any host web application. Would be good to introduce a new "id" property so as to uniquely identify a package within the context of Docet itself with no need to provide any additional feature on the hosting Web application.
On my jenkins the build is really slow, this is the stacktrace.
Maybe there could be an option to compact the index ?
"pool-1-thread-1 for channel id=48208" Id=12 Group=main RUNNABLE (in native)
at sun.nio.fs.UnixNativeDispatcher.stat0(Native Method)
at sun.nio.fs.UnixNativeDispatcher.stat(UnixNativeDispatcher.java:286)
at sun.nio.fs.UnixFileAttributes.get(UnixFileAttributes.java:70)
at sun.nio.fs.UnixFileStore.devFor(UnixFileStore.java:55)
at sun.nio.fs.UnixFileStore.<init>(UnixFileStore.java:70)
at sun.nio.fs.LinuxFileStore.<init>(LinuxFileStore.java:48)
at sun.nio.fs.LinuxFileSystem.getFileStore(LinuxFileSystem.java:112)
at sun.nio.fs.UnixFileSystem$FileStoreIterator.readNext(UnixFileSystem.java:213)
at sun.nio.fs.UnixFileSystem$FileStoreIterator.hasNext(UnixFileSystem.java:224)
- locked sun.nio.fs.UnixFileSystem$FileStoreIterator@103d9f84
at org.apache.lucene.util.IOUtils.getFileStore(IOUtils.java:515)
at org.apache.lucene.util.IOUtils.spinsLinux(IOUtils.java:459)
at org.apache.lucene.util.IOUtils.spins(IOUtils.java:448)
at org.apache.lucene.util.IOUtils.spins(IOUtils.java:423)
at org.apache.lucene.index.ConcurrentMergeScheduler.initDynamicDefaults(ConcurrentMergeScheduler.java:376)
- locked org.apache.lucene.index.ConcurrentMergeScheduler@2646ee62
at org.apache.lucene.index.ConcurrentMergeScheduler.merge(ConcurrentMergeScheduler.java:464)
- locked org.apache.lucene.index.ConcurrentMergeScheduler@2646ee62
at org.apache.lucene.index.IndexWriter.maybeMerge(IndexWriter.java:1931)
at org.apache.lucene.index.IndexWriter.flush(IndexWriter.java:3088)
at org.apache.lucene.index.IndexWriter.forceMerge(IndexWriter.java:1741)
at org.apache.lucene.index.IndexWriter.forceMerge(IndexWriter.java:1721)
at docet.maven.DocetPluginUtils.indexDocsForLanguage(DocetPluginUtils.java:1285)
at docet.maven.DocetPluginUtils.indexDocs(DocetPluginUtils.java:1225)
at docet.maven.DocetMojo.execute(DocetMojo.java:183)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
In general make sure to always use everywhere java.nio library in Docet APIs.
DocetUtils.fastReadFile does not work on Java 9
java.lang.NullPointerException
at docet.DocetUtils.forceReleaseBuffer(DocetUtils.java:156)
at docet.DocetUtils.fastReadFile(DocetUtils.java:136)
at docet.engine.DocetManager.loadTocForPackage(DocetManager.java:439)
at docet.engine.DocetManager.existsPageForLanguage(DocetManager.java:1056)
Pdf conversion works by starting straightly with html-like source doc: pdf parser is pretty picky with dangling (unclosed) tags.
When such a tag (e.g. li p and the like) is found with no closing tag, pdf is not correctly generated: in order to avoid this, it would be a lot useful to introduce a strict syntactic validation on source page structure.
This happens only when the content div is shorter than toc div and toc is long enough to activate its scrollbar
Happens when a page, say a page in english is opened as a default from an original request for a page in a different language XX (one for which no doc is available but for which the descriptor says doc in english must be used): image srcs of the page displayed refers to a path corresponding to resources for language XX that, unfortunately, does not exist, so that images appear broken on the page.
Solution is to parse the page before sending it to the browser so as to change any src of any image in the f page, adopting the corresponding path the code of the actual fallback language (english in the example described above).
Avoid when possible to use strings like "UTF-8" and use StandardCharset.UTF-8 instead when a Charset is required. It avoid typos AND skip Charset lookup every time is needed.
This goal could be achieved adding maven-frontend-plugin, downloading NodeJs and npm and run a script during the build
Support correct use of browser buttons such as back button: as Docet is a single-page application, in future release is going to be key to adopt techniques and patterns to improve overall ux.
In Explorer links just work if called from the TOC.
Any kind of internal link to a different page or to an internal anchor returns doensn't work and returns:
SCRIPT438: L'oggetto non supporta la proprietà o il metodo 'startsWith'
docet.js (505,9)
It would be great to have tests on the UI with WebDriver + phantomjs
Findbugs project is officially dead: it is important to switch to his successor project Spotbugs.
It would be very useful to have a "mojo" (Maven Goal) to start a Web Server and deploy the documentation package of the "current project"
Remove from DocetConfiguration and from the sample app any attribute which is no longer used.
Docet depends from a AGPL v3 library itext.pdf. To avoid such dependency pdf generation could be totally disabled (and importing docet through maven itext can be excluded)
<dependency>
<groupId>org.docetproject</groupId>
<artifactId>docet-core</artifactId>
<version>${docet.version}</version>
<!-- Avoid itext AGPL v3 dependency -->
<exclusions>
<exclusion>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
</exclusion>
<exclusion>
<groupId>com.itextpdf.tool</groupId>
<artifactId>xmlworker</artifactId>
</exclusion>
</exclusions>
</dependency>
Findbugs detected a few potential bugs on release 1.8 that should be coped with:
[INFO] BugInstance size is 3
[INFO] Error size is 0
[INFO] Total bugs: 3
[INFO] Return value of org.jsoup.nodes.Element.appendElement(String) ignored, is this OK in docet.engine.PDFDocumentHandler.normaliseHTML(Document) [docet.engine.PDFDocumentHandler] At PDFDocumentHandler.java:[line 553] RV_RETURN_VALUE_IGNORED_INFERRED
[INFO] Unread field: docet.engine.PDFDocumentHandler$DocumentPart.layout [docet.engine.PDFDocumentHandler$DocumentPart] At PDFDocumentHandler.java:[line 1087] URF_UNREAD_FIELD
[INFO] Unused field: docet.engine.PDFDocumentHandler$DocumentPart.id [docet.engine.PDFDocumentHandler$DocumentPart] In PDFDocumentHandler.java UUF_UNUSED_FIELD
Introduce support for animated GIF on documents: indeed, so far only images in png format are supported and, accordingly, correctly rendered at runtime by Docet engine.
When in tables <b> and <i> element get misplaced above normal text line of sime pixels
Repo for snapshot is not configured in docet-maven-plugin project.
We should upgrade jsoup to 1.15.1
Remove from js configuration object in docet.js initialization properties no longer used.
The code that adds hidden class css is not executed in Java 9 due to an optimization in Java Stream API.
subItems.stream().peek(ul -> {
ul.addClass(CSS_CLASS_DOCET_SUBMENU);
ul.addClass(CSS_CLASS_DOCET_MENU_HIDDEN);
});
The code should be executed with a forEach loop to ensure the hidden class is added.
Docet strip away anchor target
attributes through Jsoup.clean(dirtyPageText, whiteList);
Permitting target
attribute we can link external resources in another page
Below a few points to be further discussed.
Fix any remaining Findbugs issue.
We are checking only for classes in core itextpdf package.
We need to check for com/itextpdf/tool/xml/pipeline/html/ImageProvider too.
see
java.lang.NoClassDefFoundError: com/itextpdf/tool/xml/pipeline/html/ImageProvider
at docet.engine.DocetManager$DocetDocumentParserFactory.getParserForFormat(DocetManager.java:1221)
at docet.engine.DocetManager$DocetDocumentParserFactory.access$100(DocetManager.java:1204)
at docet.engine.DocetManager.<init>(DocetManager.java:146)
Add a feature allowing to specify a link from page A in package 1 to page B in package 2.
This behavior is very annoying during development. If you are editing a page and reload it to see the change, you go back to the home and you have to navigate again to the page you were editing.
See stacktrace below:
Exception com.lowagie.text.exceptions.IllegalPdfSyntaxException: Unbalanced save/restore state operators.
com.lowagie.text.exceptions.IllegalPdfSyntaxException: Unbalanced save/restore state operators.
at com.lowagie.text.pdf.PdfContentByte.sanityCheck(PdfContentByte.java:3126)
at com.lowagie.text.pdf.PdfContentByte.reset(PdfContentByte.java:1283)
at com.lowagie.text.pdf.PdfContentByte.reset(PdfContentByte.java:1272)
at com.lowagie.text.pdf.PdfWriter.resetContent(PdfWriter.java:741)
at com.lowagie.text.pdf.PdfDocument.initPage(PdfDocument.java:1147)
at com.lowagie.text.pdf.PdfDocument.newPage(PdfDocument.java:965)
at com.lowagie.text.pdf.PdfDocument.close(PdfDocument.java:813)
at com.lowagie.text.Document.close(Document.java:450)
at docet.engine.PDFDocumentHandler.createPDF(PDFDocumentHandler.java:919)
at docet.engine.PDFDocumentHandler.createPDF(PDFDocumentHandler.java:375)
at docet.engine.PDFDocumentGenerator.generateDocetDocument(PDFDocumentGenerator.java:81)
at docet.engine.DocetManager.serveRequest(DocetManager.java:1002)
Docet links are manager via a handler intercepting just clicks: in order to provide a greater deal of accessibility for people with blind disabilitiy to intercept also enter keypressing on these links as these is the mechanism adopted by them to surf canonical links. Also, would be good to render these links by adding the aria attribute role
with value link
(role=link
).
18-10-04-12-25-00 java.lang.IllegalArgumentException: expected '>' at position 26
java.lang.IllegalArgumentException: expected '>' at position 26
at org.apache.lucene.util.automaton.RegExp.parseSimpleExp(RegExp.java:1127)
at org.apache.lucene.util.automaton.RegExp.parseCharClassExp(RegExp.java:1090)
at org.apache.lucene.util.automaton.RegExp.parseComplExp(RegExp.java:1078)
at org.apache.lucene.util.automaton.RegExp.parseRepeatExp(RegExp.java:1047)
at org.apache.lucene.util.automaton.RegExp.parseConcatExp(RegExp.java:1040)
at org.apache.lucene.util.automaton.RegExp.parseConcatExp(RegExp.java:1041)
at org.apache.lucene.util.automaton.RegExp.parseConcatExp(RegExp.java:1041)
at org.apache.lucene.util.automaton.RegExp.parseConcatExp(RegExp.java:1041)
at org.apache.lucene.util.automaton.RegExp.parseConcatExp(RegExp.java:1041)
at org.apache.lucene.util.automaton.RegExp.parseConcatExp(RegExp.java:1041)
at org.apache.lucene.util.automaton.RegExp.parseConcatExp(RegExp.java:1041)
at org.apache.lucene.util.automaton.RegExp.parseConcatExp(RegExp.java:1041)
at org.apache.lucene.util.automaton.RegExp.parseConcatExp(RegExp.java:1041)
at org.apache.lucene.util.automaton.RegExp.parseConcatExp(RegExp.java:1041)
at org.apache.lucene.util.automaton.RegExp.parseConcatExp(RegExp.java:1041)
at org.apache.lucene.util.automaton.RegExp.parseConcatExp(RegExp.java:1041)
at org.apache.lucene.util.automaton.RegExp.parseConcatExp(RegExp.java:1041)
at org.apache.lucene.util.automaton.RegExp.parseConcatExp(RegExp.java:1041)
at org.apache.lucene.util.automaton.RegExp.parseConcatExp(RegExp.java:1041)
at org.apache.lucene.util.automaton.RegExp.parseConcatExp(RegExp.java:1041)
at org.apache.lucene.util.automaton.RegExp.parseConcatExp(RegExp.java:1041)
at org.apache.lucene.util.automaton.RegExp.parseConcatExp(RegExp.java:1041)
at org.apache.lucene.util.automaton.RegExp.parseConcatExp(RegExp.java:1041)
at org.apache.lucene.util.automaton.RegExp.parseConcatExp(RegExp.java:1041)
at org.apache.lucene.util.automaton.RegExp.parseInterExp(RegExp.java:1033)
at org.apache.lucene.util.automaton.RegExp.parseUnionExp(RegExp.java:1027)
at org.apache.lucene.util.automaton.RegExp.(RegExp.java:405)
at org.apache.lucene.search.RegexpQuery.(RegexpQuery.java:108)
at org.apache.lucene.search.RegexpQuery.(RegexpQuery.java:93)
at org.apache.lucene.queryparser.classic.QueryParserBase.newRegexpQuery(QueryParserBase.java:580)
at org.apache.lucene.queryparser.classic.QueryParserBase.getRegexpQuery(QueryParserBase.java:781)
at org.apache.lucene.queryparser.classic.QueryParserBase.handleBareTokenQuery(QueryParserBase.java:851)
at org.apache.lucene.queryparser.classic.QueryParser.Term(QueryParser.java:348)
at org.apache.lucene.queryparser.classic.QueryParser.Clause(QueryParser.java:247)
at org.apache.lucene.queryparser.classic.QueryParser.Query(QueryParser.java:202)
at org.apache.lucene.queryparser.classic.QueryParser.TopLevelQuery(QueryParser.java:160)
at org.apache.lucene.queryparser.classic.QueryParserBase.parse(QueryParserBase.java:117)
at docet.engine.SimpleDocetDocSearcher.searchForMatchingDocuments(SimpleDocetDocSearcher.java:104)
at docet.engine.DocetManager.searchPagesByKeywordAndLangWithRerencePackage(DocetManager.java:796)
at docet.engine.DocetManager.serveSearchRequest(DocetManager.java:1129)
at docet.engine.DocetManager.serveRequest(DocetManager.java:1023)
at docet.engine.DocetManager.serveRequest(DocetManager.java:907)
at magnews.gateway.docet.DocetSimpleServlet.processRequest(DocetSimpleServlet.java:69)
at magnews.gateway.docet.DocetSimpleServlet.doGet(DocetSimpleServlet.java:53)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:645)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:750)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668)
:
The idea is that the URI on the browser could be "bookmarkable" and sharable by users.
This feature requires an integration on the "container" web application, so that we need to support this kind of integration.
Maybe we can add on the 'hash' (#fragment) some information to recreate the page
Replace currently used itext.pdf library with one with a more friendly license (itext 5 is AGPLv3)
To support more modern APIs, upgrade javax.servlet:javax.servlet-api:3.1.0
to jakarta.servlet:jakarta.servlet-api:6.0.0
When clicking on a faq-page link from search results, the faq page is opened without being contextualized on the FAQ submenu in TOC.
Introduce a back button to ease navigation between pages, especially to simplify access so previously visited pages: a possibility could be that of devising a sort of nav bar of last-viewed pages.
Currently, pdf parser seems not to support nested ULs such as:
<ul>
<li></li>
<li>
<ul><li></li></ul>
</li>
</ul>
Assume that in the PDF rendering the videos are not supported
In the maven plugin implement the video unused check like the images
When running docet with jdk8
Caused by: java.lang.NoSuchMethodError: java.nio.ByteBuffer.flip()Ljava/nio/ByteBuffer;
at docet.DocetUtils.fastReadFile(DocetUtils.java:101)
at docet.DocetUtils.generatePackageDescriptor(DocetUtils.java:62)
at docet.engine.DocetPackageRuntimeManager.constructPackageInfo(DocetPackageRuntimeManager.java:149)
at docet.engine.DocetPackageRuntimeManager.retrievePackageInfo(DocetPackageRuntimeManager.java:125)
at docet.engine.DocetPackageRuntimeManager.getDocumentDirectoryForPackage(DocetPackageRuntimeManager.java:88)
at docet.engine.DocetManager.getPathToPackageDoc(DocetManager.java:158)
at docet.engine.DocetManager.servePackageDescriptionForLanguage(DocetManager.java:723)
at docet.engine.DocetManager.servePackageListRequest(DocetManager.java:1160)
at docet.engine.DocetManager.serveRequest(DocetManager.java:1039)
at docet.engine.DocetManager.serveRequest(DocetManager.java:910)
at magnews.gateway.docet.DocetSimpleServlet.processRequest(DocetSimpleServlet.java:69)
at magnews.gateway.docet.DocetSimpleServlet.doGet(DocetSimpleServlet.java:53)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:645)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:750)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
... 19 more
Drop inclusion of select2 framework which are no longer used.
If we are requesting a page belonging to a language not defined in a given package, it is useless to (try to) load the TOC for that language.
See sample error below:
java.nio.file.NoSuchFileException: /data/mn1/tomcat/./.docetdata/userguide_1495189343330/docs/fr/toc.html
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214)
at java.nio.file.Files.newByteChannel(Files.java:361)
at java.nio.file.Files.newByteChannel(Files.java:407)
at docet.DocetUtils.fastReadFile(DocetUtils.java:123)
at docet.engine.DocetManager.loadTocForPackage(DocetManager.java:431)
at docet.engine.DocetManager.existsPageForLanguage(DocetManager.java:1061)
at magnews.backend.docet.DocetFileManager.existspageIdForPackageAndLanguage(DocetFileManager.java:197)
at magnews.backend.framework.PageContext.existsCurrentDocumentationPageForLanguage(PageContext.java:2932)
at sun.reflect.GeneratedMethodAccessor733.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at it.camuffo.CamuffoMethod.invoke(CamuffoMethod.java:125)
at it.camuffo.scripting.MethodCallExpression.evaluate(MethodCallExpression.java:54)
at it.camuffo.scripting.FieldAccessExpression.evaluate(FieldAccessExpression.java:45)
at it.camuffo.scripting.ExpressionEvaluator.evaluate(ExpressionEvaluator.java:35)
at it.camuffo.scripting.ExpressionEvaluator.evaluate(ExpressionEvaluator.java:31)
at it.camuffo.CamuffoContext.evaluateExpression(CamuffoContext.java:232)
at it.camuffo.tags.CFIfTag.evaluateCondition(CFIfTag.java:118)
at it.camuffo.tags.CFIfTag.execute(CFIfTag.java:74)
at it.camuffo.tags.CFIfTag.execute(CFIfTag.java:68)
at it.camuffo.CamuffoEngine.executeTagNode(CamuffoEngine.java:182)
at it.camuffo.CamuffoEngine.execute(CamuffoEngine.java:392)
at it.camuffo.tags.CFIfTag.execute(CFIfTag.java:77)
at it.camuffo.tags.CFIfTag.execute(CFIfTag.java:68)
at it.camuffo.CamuffoEngine.executeTagNode(CamuffoEngine.java:182)
at it.camuffo.CamuffoEngine.execute(CamuffoEngine.java:392)
at it.camuffo.tags.CFOutputTag.execute(CFOutputTag.java:43)
at it.camuffo.CamuffoEngine.executeTagNode(CamuffoEngine.java:182)
at it.camuffo.CamuffoEngine.execute(CamuffoEngine.java:392)
at it.camuffo.CamuffoEngine.execute(CamuffoEngine.java:386)
at it.camuffo.CamuffoEngine.executeAsIntepreted(CamuffoEngine.java:162)
at it.camuffo.CamuffoEngine.executeModule(CamuffoEngine.java:281)
at it.camuffo.tags.DynamicModuleTag.execute(DynamicModuleTag.java:60)
at it.camuffo.CamuffoEngine.executeTagNode(CamuffoEngine.java:182)
at it.camuffo.CamuffoEngine.execute(CamuffoEngine.java:392)
at it.camuffo.CamuffoEngine.execute(CamuffoEngine.java:386)
at it.camuffo.CamuffoEngine.executeAsIntepreted(CamuffoEngine.java:162)
at it.camuffo.CamuffoEngine.includeTemplate(CamuffoEngine.java:235)
at it.camuffo.runtime.CamuffoInterpreterServlet.processRequest(CamuffoInterpreterServlet.java:115)
at it.camuffo.runtime.CamuffoInterpreterServlet.doGet(CamuffoInterpreterServlet.java:272)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at sun.reflect.GeneratedMethodAccessor63.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:282)
at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:279)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAsPrivileged(Subject.java:549)
at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:314)
at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:170)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:224)
at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:46)
at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:148)
at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:144)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:143)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:726)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:592)
at org.apache.catalina.core.ApplicationDispatcher.access$100(ApplicationDispatcher.java:63)
at org.apache.catalina.core.ApplicationDispatcher$PrivilegedInclude.run(ApplicationDispatcher.java:112)
at org.apache.catalina.core.ApplicationDispatcher$PrivilegedInclude.run(ApplicationDispatcher.java:100)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:517)
at org.apache.jsp.tag.web.layoutInsert_tag.doTag(layoutInsert_tag.java:110)```
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.