Comments (15)
@jevanio Thank you for reporting the issue. Would you add more stacktrace?
Memo: Recent GCP client libraries have been built with Jackson 2.17.0 https://github.com/googleapis/sdk-platform-java/blob/ba648ceac869d4fab1a9cbeb40f2e04f69dad4e3/java-shared-dependencies/third-party-dependencies/pom.xml#L32C22-L32C28
@jevanio Do you observe the same problem with Jackson 2.17.0 and spring-cloud-gcp v5.1.2?
from spring-cloud-gcp.
Hey @suztomo, thanks for your answer
So, I tried upgrading to Jackson 2.17.0 and Spring-cloud-gcp 5.1.2 but the issue persist.
I have seen this happens when the entity contains an attribute of JsonNode :/
Regarding to the stacktrace, I can share the whole debug logs from working version before to upgrade jackson and with jackson 2.17.0. I have compare both logs to see any difference related to datastore but no clue yet what could be happening
jackson-2_13_4.txt
jackson-2_17_0.txt
If you check on this, the error points to a Datastore configuration class
EnableDatastoreRepositoriesConfiguration: Type must not be null
Hope this helpπ
from spring-cloud-gcp.
Thank you for the stacktrace.
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'demoService' defined in file [C:\Users\XXX\IdeaProjects\demo\target\classes\com\example\demo\service\DemoService.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'demoRepository' defined in com.example.demo.repository.DemoRepository defined in @EnableDatastoreRepositories declared on DatastoreRepositoriesAutoConfigureRegistrar.EnableDatastoreRepositoriesConfiguration: Type must not be null
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:795) ~[spring-beans-6.1.5.jar:6.1.5]
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:237) ~[spring-beans-6.1.5.jar:6.1.5]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1355) ~[spring-beans-6.1.5.jar:6.1.5]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1192) ~[spring-beans-6.1.5.jar:6.1.5]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) ~[spring-beans-6.1.5.jar:6.1.5]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) ~[spring-beans-6.1.5.jar:6.1.5]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.1.5.jar:6.1.5]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.5.jar:6.1.5]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.1.5.jar:6.1.5]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.1.5.jar:6.1.5]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:975) ~[spring-beans-6.1.5.jar:6.1.5]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:962) ~[spring-context-6.1.5.jar:6.1.5]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624) ~[spring-context-6.1.5.jar:6.1.5]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.2.4.jar:3.2.4]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-3.2.4.jar:3.2.4]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) ~[spring-boot-3.2.4.jar:3.2.4]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:334) ~[spring-boot-3.2.4.jar:3.2.4]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) ~[spring-boot-3.2.4.jar:3.2.4]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) ~[spring-boot-3.2.4.jar:3.2.4]
at com.example.demo.DemoApplication.main(DemoApplication.java:10) ~[classes/:na]
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'demoRepository' defined in com.example.demo.repository.DemoRepository defined in @EnableDatastoreRepositories declared on DatastoreRepositoriesAutoConfigureRegistrar.EnableDatastoreRepositoriesConfiguration: Type must not be null
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1786) ~[spring-beans-6.1.5.jar:6.1.5]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600) ~[spring-beans-6.1.5.jar:6.1.5]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) ~[spring-beans-6.1.5.jar:6.1.5]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.1.5.jar:6.1.5]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.5.jar:6.1.5]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.1.5.jar:6.1.5]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.1.5.jar:6.1.5]
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) ~[spring-beans-6.1.5.jar:6.1.5]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1443) ~[spring-beans-6.1.5.jar:6.1.5]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353) ~[spring-beans-6.1.5.jar:6.1.5]
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:904) ~[spring-beans-6.1.5.jar:6.1.5]
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:782) ~[spring-beans-6.1.5.jar:6.1.5]
... 19 common frames omitted
Caused by: java.lang.IllegalArgumentException: Type must not be null
at org.springframework.util.Assert.notNull(Assert.java:172) ~[spring-core-6.1.5.jar:6.1.5]
at org.springframework.data.util.TypeInformation.of(TypeInformation.java:75) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:205) ~[spring-data-commons-3.2.4.jar:3.2.4]
at com.google.cloud.spring.data.datastore.core.mapping.DatastorePersistentEntityImpl.addEntityToDiscriminationFamily(DatastorePersistentEntityImpl.java:170) ~[spring-cloud-gcp-data-datastore-5.1.2.jar:5.1.2]
at com.google.cloud.spring.data.datastore.core.mapping.DatastorePersistentEntityImpl.verify(DatastorePersistentEntityImpl.java:144) ~[spring-cloud-gcp-data-datastore-5.1.2.jar:5.1.2]
at org.springframework.data.mapping.context.AbstractMappingContext.doAddPersistentEntity(AbstractMappingContext.java:431) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext.addPersistentEntity(AbstractMappingContext.java:383) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext$PersistentPropertyCreator.lambda$createAndRegisterProperty$3(AbstractMappingContext.java:627) ~[spring-data-commons-3.2.4.jar:3.2.4]
at java.base/java.lang.Iterable.forEach(Iterable.java:75) ~[na:na]
at org.springframework.data.mapping.context.AbstractMappingContext$PersistentPropertyCreator.createAndRegisterProperty(AbstractMappingContext.java:624) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext$PersistentPropertyCreator.doWith(AbstractMappingContext.java:578) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.util.ReflectionUtils.doWithFields(ReflectionUtils.java:728) ~[spring-core-6.1.5.jar:6.1.5]
at org.springframework.data.mapping.context.AbstractMappingContext.doAddPersistentEntity(AbstractMappingContext.java:427) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext.addPersistentEntity(AbstractMappingContext.java:383) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:279) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:205) ~[spring-data-commons-3.2.4.jar:3.2.4]
at com.google.cloud.spring.data.datastore.core.mapping.DatastorePersistentEntityImpl.initializeSubclassEntities(DatastorePersistentEntityImpl.java:259) ~[spring-cloud-gcp-data-datastore-5.1.2.jar:5.1.2]
at com.google.cloud.spring.data.datastore.core.mapping.DatastorePersistentEntityImpl.verify(DatastorePersistentEntityImpl.java:143) ~[spring-cloud-gcp-data-datastore-5.1.2.jar:5.1.2]
at org.springframework.data.mapping.context.AbstractMappingContext.doAddPersistentEntity(AbstractMappingContext.java:431) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext.addPersistentEntity(AbstractMappingContext.java:383) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext$PersistentPropertyCreator.lambda$createAndRegisterProperty$3(AbstractMappingContext.java:627) ~[spring-data-commons-3.2.4.jar:3.2.4]
at java.base/java.lang.Iterable.forEach(Iterable.java:75) ~[na:na]
at org.springframework.data.mapping.context.AbstractMappingContext$PersistentPropertyCreator.createAndRegisterProperty(AbstractMappingContext.java:624) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext$PersistentPropertyCreator.doWith(AbstractMappingContext.java:578) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.util.ReflectionUtils.doWithFields(ReflectionUtils.java:728) ~[spring-core-6.1.5.jar:6.1.5]
at org.springframework.data.mapping.context.AbstractMappingContext.doAddPersistentEntity(AbstractMappingContext.java:427) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext.addPersistentEntity(AbstractMappingContext.java:383) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext$PersistentPropertyCreator.lambda$createAndRegisterProperty$3(AbstractMappingContext.java:627) ~[spring-data-commons-3.2.4.jar:3.2.4]
at java.base/java.lang.Iterable.forEach(Iterable.java:75) ~[na:na]
at org.springframework.data.mapping.context.AbstractMappingContext$PersistentPropertyCreator.createAndRegisterProperty(AbstractMappingContext.java:624) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext$PersistentPropertyCreator.doWith(AbstractMappingContext.java:578) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.util.ReflectionUtils.doWithFields(ReflectionUtils.java:728) ~[spring-core-6.1.5.jar:6.1.5]
at org.springframework.data.mapping.context.AbstractMappingContext.doAddPersistentEntity(AbstractMappingContext.java:427) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext.addPersistentEntity(AbstractMappingContext.java:383) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext$PersistentPropertyCreator.lambda$createAndRegisterProperty$3(AbstractMappingContext.java:627) ~[spring-data-commons-3.2.4.jar:3.2.4]
at java.base/java.lang.Iterable.forEach(Iterable.java:75) ~[na:na]
at org.springframework.data.mapping.context.AbstractMappingContext$PersistentPropertyCreator.createAndRegisterProperty(AbstractMappingContext.java:624) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext$PersistentPropertyCreator.doWith(AbstractMappingContext.java:578) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.util.ReflectionUtils.doWithFields(ReflectionUtils.java:728) ~[spring-core-6.1.5.jar:6.1.5]
at org.springframework.data.mapping.context.AbstractMappingContext.doAddPersistentEntity(AbstractMappingContext.java:427) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext.addPersistentEntity(AbstractMappingContext.java:383) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:279) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:205) ~[spring-data-commons-3.2.4.jar:3.2.4]
at com.google.cloud.spring.data.datastore.core.mapping.DatastorePersistentEntityImpl.initializeSubclassEntities(DatastorePersistentEntityImpl.java:259) ~[spring-cloud-gcp-data-datastore-5.1.2.jar:5.1.2]
at com.google.cloud.spring.data.datastore.core.mapping.DatastorePersistentEntityImpl.verify(DatastorePersistentEntityImpl.java:143) ~[spring-cloud-gcp-data-datastore-5.1.2.jar:5.1.2]
at org.springframework.data.mapping.context.AbstractMappingContext.doAddPersistentEntity(AbstractMappingContext.java:431) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext.addPersistentEntity(AbstractMappingContext.java:383) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:279) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:205) ~[spring-data-commons-3.2.4.jar:3.2.4]
at com.google.cloud.spring.data.datastore.core.mapping.DatastorePersistentEntityImpl.addEntityToDiscriminationFamily(DatastorePersistentEntityImpl.java:170) ~[spring-cloud-gcp-data-datastore-5.1.2.jar:5.1.2]
at com.google.cloud.spring.data.datastore.core.mapping.DatastorePersistentEntityImpl.verify(DatastorePersistentEntityImpl.java:144) ~[spring-cloud-gcp-data-datastore-5.1.2.jar:5.1.2]
at org.springframework.data.mapping.context.AbstractMappingContext.doAddPersistentEntity(AbstractMappingContext.java:431) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext.addPersistentEntity(AbstractMappingContext.java:383) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext$PersistentPropertyCreator.lambda$createAndRegisterProperty$3(AbstractMappingContext.java:627) ~[spring-data-commons-3.2.4.jar:3.2.4]
at java.base/java.lang.Iterable.forEach(Iterable.java:75) ~[na:na]
at org.springframework.data.mapping.context.AbstractMappingContext$PersistentPropertyCreator.createAndRegisterProperty(AbstractMappingContext.java:624) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext$PersistentPropertyCreator.doWith(AbstractMappingContext.java:578) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.util.ReflectionUtils.doWithFields(ReflectionUtils.java:728) ~[spring-core-6.1.5.jar:6.1.5]
at org.springframework.data.mapping.context.AbstractMappingContext.doAddPersistentEntity(AbstractMappingContext.java:427) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext.addPersistentEntity(AbstractMappingContext.java:383) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:279) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:205) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:92) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.lambda$afterPropertiesSet$6(RepositoryFactoryBeanSupport.java:282) ~[spring-data-commons-3.2.4.jar:3.2.4]
at java.base/java.util.Optional.ifPresent(Optional.java:178) ~[na:na]
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:282) ~[spring-data-commons-3.2.4.jar:3.2.4]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1833) ~[spring-beans-6.1.5.jar:6.1.5]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1782) ~[spring-beans-6.1.5.jar:6.1.5]
... 30 common frames omitted
from spring-cloud-gcp.
JsonNode
is not one of the supported types in Spring Data Datastore. So, there must be some conversion going on. What is the actual data type you are using in Datastore? You can try registering your own converter as described in the documentation.
from spring-cloud-gcp.
@meltsufin Thanks for your comment
Actually, this implementation was working before the upgrade, which makes sense as this JsonNode is on another object which is been store.
I did include an specific converter to convert from/to JsonNode-String but the error persist.
I have updated the project with the converter. Please let me know if there's something missing
from spring-cloud-gcp.
@suztomo has the stacktrace helped to identify the cause?
from spring-cloud-gcp.
@jevanio What's the last version of Spring Boot / Spring Cloud / Spring Cloud GCP that your project worked with?
from spring-cloud-gcp.
@jevanio If you annotate private JsonNode node
with @Transient
and create a converter for Pojo
, it seems to work.
from spring-cloud-gcp.
@mp911de Do you have any insight into why this might be happening?
from spring-cloud-gcp.
Asked related questions: spring-projects/spring-data-commons#3085
from spring-cloud-gcp.
DatastorePersistentEntityImpl.addEntityToDiscriminationFamily(DatastorePersistentEntityImpl.java:170)
is passing on a null
value for the Class
argument in MappingContext.getPersistentEntity(β¦)
. If JsonNode is considered a store-native type, then you must not call getPersistentEntity(β¦)
for it, instead, CustomConversions.isSimpleType(β¦)
provides whether a type is considered a simple (store-native) one.
from spring-cloud-gcp.
@mp911de This is very helpful because we can fix the problem by checking for null
at DatastorePersistentEntityImpl.addEntityToDiscriminationFamily(DatastorePersistentEntityImpl.java:170)
. However, I'm still not sure how to prevent entities from being created for JsonNode
or other convertible types. Should we override CustomConversion.isSimpleType()
in our DatastoreCustomConversions
class?
from spring-cloud-gcp.
Should we override CustomConversion.isSimpleType() in our DatastoreCustomConversions class?
You can address this issue by creating a SimpleTypeHolder
that defines the types that are considered simple ones. Then, you pass on that SimpleTypeHolder
instance to CustomConversion
(see Mongo and Cassandra examples from my previous comment).
from spring-cloud-gcp.
I tried that but by the time AbstractMappingContext.shouldCreatePersistentEntityFor()
is called, AbstractMappingContext.simpleTypeHolder
has the custom types marked as not simple. I might need to dig further.
from spring-cloud-gcp.
Hey Folks,
As you mention, looks like including the transient help this demo service to start.
Which could be the impact of marking this JsonNode as transient?
from spring-cloud-gcp.
Related Issues (20)
- findFirst Derived Query Language Not Implemented
- Version 5.2.0 causes failure to start spring boot 3.2 application build with jdk 21. HOT 2
- spring-cloud-gcp-dependencies pom.xml should declare cloud-sql-connector-jdbc-sqlserver like it does with postgres-socket-factory and mysql-socket-factory-connector-j-8 HOT 3
- Flaky GoogleStorageIntegrationTests 404 Not Found
- Allow setting Expiration Policy on Subscriptions created via Pub Sub Binder HOT 5
- Generate Spring Auto-Configurations is failing HOT 1
- Documentation / Default for Logging flushlevel can be considered harmful HOT 7
- Datastore: Flaky Test: DatastoreSampleApplicationIntegrationTests.runTests
- Firestore: Flaky Test: Error while extracting response for type User
- Spring Cloud Stream - Subscribing to More Than One Topic in the Same App HOT 4
- Spring boot 3.3.0 compatibility issue with cloud-trace - zipkin / brave tracing error on startup HOT 8
- Support For W3C Trace Propagation
- Forked repo integration test invocation
- Spring Boot 3.3 upgrade causes serialization loss of DatastorePageable.urlSafeCursor HOT 3
- Add CI testing for each supported Spring Boot minor version
- CVE-2022-3171 Vulnerability HOT 4
- Support exactly-once-delivery with MessageReceiverWithAckResponse
- Retries (or similar) when accessing secrets from secret manager
- Reference documentation for release 5.4.1 isn't published HOT 1
- Sprinboot 3.2 + jdk 21 + spring gcp verion 5.4.1, causes java.lang.NoSuchMethodError: 'com.google.api.gax.rpc.StubSettings$Builder HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from spring-cloud-gcp.