cap-js / docs Goto Github PK
View Code? Open in Web Editor NEWCAP Documentation
Home Page: https://cap.cloud.sap
License: Apache License 2.0
CAP Documentation
Home Page: https://cap.cloud.sap
License: Apache License 2.0
The Postgresql create deploy script generates an invalid 'package.json' file
echo '{"dependencies": { "@sap/cds": "*", "@cap-js/postgres": "*"}, "scripts": { "start": "cds-deploy",}}' > gen/pg/package.json
contains an invalid ',' after "cds-deploy"
npm ERR! JSON.parse Unexpected token "}" (0x7D) in JSON at position 101 while parsing near "...tart\": \"cds-deploy\",}}\n"
npm ERR! JSON.parse Failed to parse JSON data.
npm ERR! JSON.parse Note: package.json must be actual JSON, not just JavaScript.
https://cap.cloud.sap/docs/guides/databases-postgres#create-the-shell-script
This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.
This repository currently has no open or pending branches.
.vitepress/config.ts
com.sap.cds:cds-services-api 2.0.1
.vitepress/config.ts
com.sap.cds:cds4j-api 2.0.0
for example https://cap.cloud.sap/docs/guides/databases#native-db-queries does not lead me to the native-db-queries
section, but to a section which is below the desired one. Tested on the newest Chrome Version as well as in Safari.
Hi,
I'm trying to get OData V4 Server messages to work https://ui5.sap.com/#/topic/fbe1cb5613cf4a40a841750bf813238e to get Confirmation Dialogs in my Fiori Elements applications (see https://ui5.sap.com/#/topic/9a536627a6a94de084b0605eb164d2c8), but it seems as CAP does not allow all properties SAPUI5 supports, but only the ones from the OData standard. Unfortunately SAPUI5 cannot work with "@transition" but expects "transition", which is sanitised by CAP.
It would make sense to state here
Line 429 in 7ec8723
Kind regards,
Sebastian
I want to define a constant or string literal type. But I could not find how to do it with the docs. If it's possible to do it, it should be easier to find out from docs.
example: in below given aspect, I want to define a constant for 'Tax'
aspect AccountInfo {
taxIds : Association to many ExpenseBracket
on taxIds.owner = $self
and taxIds.identifierType = 'Tax'; //this should be defined as a constant
taxReferenceNumber : Integer;
}
I noticed several issues during deployment of the bookshop app example.
I used "jump start" from here: https://cap.cloud.sap/docs/guides/multitenancy/
Issue in mta.yaml
: xsappname: bookshop-${org}-${space}
The ${org}
parameter fails if the name of the org contains spaces.
This is at least the case in "https://api.cf.us10.hana.ondemand.com"
Last year I also noticed that issue on EU10!
This can be fixed by some hard coded value
after deployment I get several errors - no idea what is missing:
a) in bookshop-mtx.log:
cds.error(_errorMessage(e, 'acquiring', tenant), { status: e.response?.status ?? 500 }) (STDERR, APP/PROC/WEB)#
...
Error: Error acquiring tenant t0: unknown error (STDERR, APP/PROC/WEB)#
b) in bookshop-srv.log
throw new Error( (STDERR, APP/PROC/WEB)#
...
Error: Neither "hdb" nor "@sap/hana-client" could be required. Please make sure one of them is installed. (STDERR, APP/PROC/WEB)#
Should the example work out of the box? If so, what could be the reason for the errors?
If not, what must be changed?
Hello,
I'm developing a CAP Application and wanted to deploy my latest CDS files to the HANA Cloud DB.
However when i try to execute: cds deploy --to hana
I get this error:
Error: This application uses @sap/cds version >= 7, which is not compatible with the installed @sap/cds-dk version 6. Either update @sap/cds-dk to version 7 or downgrade @sap/cds to version 6 instead.
at Object. (/home/user/projects/resell-engine-cap/node_modules/@sap/cds/bin/deploy/to-hana.js:1:7)
at Module._compile (node:internal/modules/cjs/loader:1165:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1219:10)
at Module.load (node:internal/modules/cjs/loader:1043:32)
at Function.Module._load (node:internal/modules/cjs/loader:878:12)
at Module.require (node:internal/modules/cjs/loader:1067:19)
at require (node:internal/modules/cjs/helpers:103:18)
at Object.exports.deploy (/home/user/.node_modules_global/lib/node_modules/@sap/cds-dk/bin/deploy/to-hana.js:6:20)
at Object.deploy (/home/user/.node_modules_global/lib/node_modules/@sap/cds-dk/bin/deploy/index.js:97:20)
at Object.exec (/home/user/.node_modules_global/lib/node_modules/@sap/cds-dk/bin/cds.js:50:27)
I upgraded both libraries (@sap/cds AND @sap/cds-dk) to Version 7.0.3 but the error still occurs.
A quick look into the to-hana.js file showed me why:
It's not implemented and only throws this error.
Hey colleagues,
I know that I can get the application name and ID with the following code snippet:
@On(event = ExtractPackageContext.CDS_NAME)
public void extractPackage(ExtractPackageContext context) {
context.getCdsRuntime().getEnvironment().getApplicationInfo().getName();
context.getCdsRuntime().getEnvironment().getApplicationInfo().getId();
}
However, I need to know the instance ID of the application where the event is running.
Is it possible to get this information? And in addition to that, is it possible to get a list of all currently running instance IDs?
Best Regards,
Sascha
Hello,
I've searched for mediaContentType but the entry Custom Streaming (beta) wasn't found. I had to search for $mediaContentType. I hope the search can be improved.
Best Regards
Gregor
A lot of the CAP doco refers to things that people coming from a traditional ABAP context will have no clue about.
I would recommend a link to an authoritative source to explain this further, instead of just leaving people to google what you are on about. ;)
The release notes of 2020 are wrongly listed within "All of 2021".
In addition, each of them doesn't exist, resulting in a 404 error.
Doc shows that an immutable map can be used. Map.of()
https://cap.cloud.sap/docs/java/messaging-foundation
however code does not allow it.
fails in AbstractMessagingService, retrieveContextParameters.
**return Optional.ofNullable((Map<String, Object>) headersMap.remove(CONTEXT_PARAMETERS_KEY));
In the document https://cap.cloud.sap/docs/cds/cdl I see $user only implemented for SAP HANA that is already not so nice for local testing. Is there a way to provide a service that shows just the entry of the logged in user?
For example you have Persons
as an entity set.
My intention was something like:
@odata.singleton
MyData as projection on Persons where Persons.ID = $user.ID;
But looks like that won't work. Is there some similar solution described in the docs?
Hello Team,
When i am following the steps to create the bookshop sample application with multi-tenancy enabled, everything works perfect in my local. However, when i am try to deploy it to my BTP global account, i got the below error messages.
Error messages from bookshop-mtx application
Error messages from bookshop-srv application
Would you please help to figure out is there any step is missing from my side, or this is still not support by @sap/cds-mtxs?
Best Regards,
Hank.
https://cap.cloud.sap/docs/guides/databases#using-cds-compile-2-dialect
In this documentation, it is mentioned that postgres dialect will work (TIP section) . however it is not working.
Error: Unknown model processor: cds.compile.to.postgres
What is the correct process of upgrading a multi tenant application?
Assume a SAP CAP app that was deployed, subscribed and later schema changes.
How can a subscribed app upgrade the database?
It seems to me like some Java documentation is being shown under the node toggle:
Line 1513 in 0c128b3
The indication to pascal case is contradictory to the above shown example.
Hi!
The link https://www.joyent.com/node-js/production/design/errors at
docs/node.js/best-practices.md
Line 364 in 50f71d7
Kind regards,
Sebastian
This is probably a vitescript issues but when I navigate to an anchor
eg https://cap.cloud.sap/docs/get-started/in-a-nutshell#vue
the page doesn't seem to land at that anchor properly.
Sometimes it seems to be at the bottom of the page and sometimes just under the header at the top.
If I discover more about the behaviour I will add to this but as I said not sure if it is a vitepress issue or this repo?
(Ahha - if I dismiss the survey notice at the top it seems to be better.)
Hello,
I'm currently trying to make use of the recently added foreign key constraint option in CAP 7. Unfortunately all of my constraints (tried with multiple hdi containers) are being set as "initially immediate", instead of "initially deferred". According to the documentation there shouldn't really be a way to achieve this, even if I wanted to.
Using DBeaver I can see the unwanted deferability setting on the HANA cloud db:
Oddly, the DDL seems to be correct:
and seems to match the created .hdbconstraint file:
CONSTRAINT c__[constraint]
ON [table]
FOREIGN KEY([field])
REFERENCES [referencedTable](ID)
ON UPDATE RESTRICT
ON DELETE CASCADE
VALIDATED
ENFORCED
INITIALLY DEFERRED
This feature is also supported by SAP HANA Cloud, as we can see in the documentation.
The same problem exists when using my HANA Express, too.
Any idea what this may be caused by?
Because of this I can't insert entries within the same transaction in the "wrong" order.
ALSO: CAP does NOT show me an error after failing to insert data with missing references! It also does not roll back the DB transaction, it just doesn't insert some data and then commits the data that is "correct"!
Hello CAP Team,
on the page https://cap.cloud.sap/docs/resources/ there is no pointer to the Continuous Influence Session for SAP Cloud Application Programming Model (CAP). I would suggest to add this link to give it more visibility.
Best Regards
Gregor
Dear CAP Team,
I really like the premise of CAP - just a couple of easy command and away you go.
The problem is that you are learning another language of yaml and these command are magically adding things and it isn't always clear what has been added.
I think a very good addition to the documentation would be to explain all the magic files (mta.yaml, ui5.yaml etc) from top to bottom to explain what each bit does.
And it would be nice if the different tools didn't clobber your mta.yaml
Trying use the fiori
cli tool explained here was complaining about a misformed mta.yaml without saying what was misformed then I find that app-db was missing so I rerun cds add hana --for production
and that obliterates my xsuaa section from the yaml.
😱
sincerely,
Frustrated
Thanks to the quick implementation of my feature request for VitePress: Allow configuration of minisearch to not split at - Sign (Hyphen, Minus) #2570 it is now possible to configure miniSearch options. I hope that an updated NPM will be released soon. With that my feature request can be implemented:
Right now when searching for "content-id" at https://cap.cloud.sap/docs/ I get this results:
When searching using Google I get the two pages that contain "content-id". For example Changelog 2021.
So I suggest to use the new configuration option of VitePress and add a custom split variable so that - is not interpreted as a split variable anymore.
Hi CAP Team,
I am following the Resolvable View and Projection section to implement a view for CRUD. My definition is shown below
// schema.cds
entity HeaderAsso {
key id : UUID;
displayId : String(32);
exc_from : String(8);
exc_to : String(8);
tcurr: Association to one TCURR on tcurr.FCURR = exc_from and tcurr.TCURR = exc_to;
}
entity TCURR {
key MANDT : String(3);
key KURST : String(4);
key FCURR : String(5);
key TCURR : String(5);
key GDATU : String(8);
UKURS : Decimal(9, 5);
FFACT : Decimal(9, 0);
TFACT : Decimal(9, 0);
}
// MyService.cds
entity HeaderJoinAsso as projection on HeaderAsso{
*,
tcurr.UKURS as UKURS,
};
My design is that I could insert into HeaderJoinAsso
, and the payload will go to both HeaderAsso
and TCURR
.
I post the following payload and it succeed, but only HeaderAsso
is inserted.
{
"id": "34642296-8b91-4145-a579-0e4d5a51cdb6",
"displayId": "ID-1",
"exc_from": "EUR",
"exc_to": "USD",
"type": "M",
"effective_date": "2021-08-09",
"UKURS": 1.15
}
Does it mean that, while inserting to a view, I can only get the validation for the associated entity columns but no deep insertion? I will need to create a handler class to do insertion for associated entities?
Thanks a lot!
I have this function in a NodeJS application using @sap/cds version 7.3.0:
static async getEquipmentSet() {
try {
const api = await cds.connect.to('sap-odata-service');
const result = await api.get(`EquipmentSet`);
return result;
} catch (error) {
console.log(error);
}
}
This previous GET function returned data from the remote service 'sap-odata-service'
configured in cdsrc.json
file.
But the following POST method returns an error:
static async postHourmeter(equipmentData, measurementPointId) {
try {
const payload = this.getHourmeterPayload(equipmentData, measurementPointId);
const api = await cds.connect.to('sap-odata-service');
const result = await api.post(`MeasureDocumentSet`, payload);
return result;
} catch (error) {
console.log(`The error is:`);
console.log(error);
}
}
Does anyone know how to fix it?
I have followed the documentation at https://cap.cloud.sap/ and in particular the
https://cap.cloud.sap/docs/guides/databases-postgres but following the instructions as written I am not able to deploy a postgres database.
I have done the following:
cap init pg-bookshop
sqlite3
from package.json, rm -f node_modules; npm i
to ensure that sqlite is removedcds env requires.db
still responds with:{
impl: '@sap/cds/libx/_runtime/sqlite/Service.js',
credentials: { url: ':memory:' },
kind: 'sqlite'
}
"@cap-js/postgres": "^1.1.0",
being a dependency and the docs suggesting there are Automatic configuration settings, these are either null or don't work../.cdsrc.json
to match the docker setup{
"requires": {
"db": {
"[pg]": {
"kind": "postgres",
"credentials": {
"host": "localhost", "port": 5432,
"user": "postgres",
"password": "postgres",
"database": "postgres"
}
}
}
}
}
none of the following commands are working:
cds watch --profile pg
Error: No configuration found for 'cds.requires.postgres'
cds deploy --profile pg
[ERROR] No configuration found for 'cds.requires.postgres'
It seems like the auto configuration is not quite working and even with the suggested config it is not working.
I have also raised this on stack overflow
Could you please suggest a way forward?
Hi Colleagues,
Can I have a link to the right place to submit a ticket in internal SAP?
I have a CAP service Entity MyService and the primary keys are (id, displayed). It fails when I send a GET request to localhost:8090/odata/v4/test/MyService(id=54642296-8b91-4145-a579-0e4d5a51cdb6,displayId='M-EUR/CNY-20210809')
The error message is 400: "The key value 'displayId' is invalid."
It might be because of the slash in displayId='M-EUR/CNY-20210809')
since it works without a slash. So I replaced /
with %2F
. But returns 400 from Apache this time (not from cap service): Message Invalid URI: [The encoded slash character is not allowed].
I am wondering if in CAP there is an option/annotation to enable slash char handling.
Thanks!
The page
https://cap.cloud.sap/docs/guides/media-data
does describe how to define the service and the database for media.
But I miss a hint/link/documentation that describes how to use it on a Fiori Elements App.
I noticed the annotation
HeaderInfo : {
Image : image,
But Image
is marked as experimental.
And ImageUrl
should point to what?
Also how should be the way to edit the image in an Fiori Elements App that uses draft handling?
Is this build in? Or is this completely missing?
How to extend it in the right way?
Hello,
right now the GitHub Icon Link in the upper right corner of Capire:
points to https://github.tools.sap/cap which is SAP internal. I think it needs to be updated to https://github.com/cap-js/docs/.
CU
Gregor
Hi
Is the documentation for use of PostgreSQL complete? Or does this need to be used in conjunction with other blogs? I have followed the one from official documentation below but it does not generate the db files in gen/db.
Hi,
This morning I was searching for some guidance for the custom service implementation and found:
https://cap.cloud.sap/docs/node.js/services#srv-impl-how
which shows the 3 options (subclass, plain function, arrow function) as equal. But this afternoon I've navigated via https://cap.cloud.sap/docs/node.js/ and found:
https://cap.cloud.sap/docs/node.js/core-services#how-to-provide-custom-service-implementations
where the subclass based implementation has the preference. I think /docs/node.js/services is an artefact that should be checked for removal or?
Best Regards
Gregor
Hello CAP Team,
right now I find this sentence in the cds.DatabaseService — Configuration - Pool section:
This default pool configuration does not apply to @cap-js database implementations.
It would be great if the differences regarding the pool configuration can be directly explained. Because in https://github.com/cap-js/cds-dbs I haven't found any details about the Pool handling.
Best Regards
Gregor
I am using 6.8.4 release of cap and I was trying to write cleanup function for server shutdown. When I try to hook on the shutdown
lifecycle event of cds, then I get compilation error that Argument of type 'shutdown' is not assignable to parameter of type 'listening'
. Overall I can hook to bootstrap
, connect
, listening
, loaded
, served
, serving
lifecycle events but not the shutdown event
.
cds.on("shutdown", () => {});
is there any change in the syntax about how to bind two parameters together to be used when defining view from CDS 6.4.1 to CDS 7+?
like:
define view View_Info_Flattened (id: String) as
select from View_Info_Grouped_Epic (id: id) as Grouped
join ***_INFO as Parent on Grouped.jira_id = Parent.jira_id
join View_Info_Grouped_Req (id: id) as Grouped_Req on Grouped_Req.root_id = Parent.root_id
....
....
for CDS 6.4.1 there is no error with the query above, but I have to use the [@cap-js/audit-logging] which required CDS 7+, the error happened after I upgraded to CDS 7.3.1.(in place with (id: id))
The results in
docs/guides/databases-sqlite.md
Lines 713 to 717 in c4ffb72
With the example
entity Foo {
virtual foo : Integer;
bar : Integer;
}
The outcome should be
SELECT.from('Foo') //> [{ bar:1 }, ...]
SELECT('foo').from('Foo') //> ERROR: no columns to read
instead, as foo
is defined as virtual
and bar
is not, right?
Kind regards,
Sebastian
Here https://cap.cloud.sap/docs/node.js/cds-env#env-cds-config
and
https://cap.cloud.sap/docs/node.js/authentication#prepare-local-environment
there are references to uaa
when they should be auth
In the second link there is:
cds env list requires.uaa --resolve-bindings --profile hybrid
but that returns nothing.
Rather:
cds env list requires.auth --resolve-bindings --profile hybrid
returns what I expect as auth
is what is configured in the .cdsrc-private.json
"requires": {
"[hybrid]": {
"auth": {
In a follow file:
lib -> PostgresService.js
In the file above I having a problem with timeout millis in a pools config. So, when I try to deploy to any database Postgress, it has show timed out error.
This error occurr when I try to pass the config in Pool, doesn't work correctly because in the config in PostgresService.js has a fix config.
If you see in the picture above, the problem is origin in fix values.
Is it possible to config when the parameters: acquireTimeoutMillis and destroyTimeoutMillis is null in the custom config, fix value 1000?
Regards
I try to delete all entries in a table that point to an element that will be deleted in an ongoing request.
What I try to do. In the service implementation I register:
this.on('DELETE', "SomeEntity", deleteReferencedEntities);
So each time DELETE of SomeEntity is requested it will call the handler.
The handler should delete all entries in a different table that pointing to this entry.
async function deleteReferencedEntities(req, next) {
console.log("deleting all referenced entities with id = " + req.data.ID);
let iNumberOfDeletedEntitities = await DELETE.from(OtherEntity).where ({referenced_ID:req.data.ID});
console.log("deleted " + iNumberOfDeletedEntitities + " referenced entitites");
next(); // use default handler
}
Locally with cds watch
that works as expected.
Deployed to the cloud as multi tenant app I get following error:
ERR [cds|...] - ❗️Uncaught Error: Transaction is already closed
ERR at /home/vcap/app/node_modules/@sap/cds/libx/_runtime/hana/execute.js:154:36
ERR at Statement.handle (/home/vcap/app/node_modules/hdb/lib/protocol/Statement.js:91:3)
ERR at handleReply (/home/vcap/app/node_modules/hdb/lib/Client.js:278:15)
ERR at receive (/home/vcap/app/node_modules/hdb/lib/util/Queue.js:114:18)
ERR at Connection.receive (/home/vcap/app/node_modules/hdb/lib/protocol/Connection.js:390:3)
ERR at TLSSocket.ondata (/home/vcap/app/node_modules/hdb/lib/protocol/Connection.js:243:12)
ERR at TLSSocket.emit (node:events:512:28)
ERR at addChunk (node:internal/streams/readable:343:12)
ERR at readableAddChunk (node:internal/streams/readable:316:9)
ERR at Readable.push (node:internal/streams/readable:253:10)
So I assume my understanding of the documentation is wrong?
Is there a different way of deleting entries pointing to a deleted entry?
Opened so I can create a PR against it
As Developer that tries to develop tests I'd expect, that the documentation directly explains how to authorise and authenticate.
Hi,
Referring to this code line: https://github.com/cap-js/docs/blob/fdb79dc87e37f332a1cf2d3d0a73fd30104001ed/guides/providing-services.md?plain=1#L281C16-L281C16
In the docs the Deep Read query is written with the dot outside the literal: o.`*`
SELECT.from ('Orders', o => o.`*`, o.header (h => h.`*`, h.items('*')))
But this leads to the following syntax error in BAS:
Can it be that the correct syntax is either this
SELECT.from ('Orders', o => o`.*`, o.header (h => h`.*`, h.items('*')))
or this?
SELECT.from ('Orders', o => o(`*`), o.header (h => h(`*`), h.items('*')))
BR,
Nico
Hi CAP Team,
I am following this section to implement a batch request for my service.
The CDS definition is described below
// schema.cds
entity ExchangeRateDto {
key id : UUID;
key displayId : String(32);
exechangeRate : Decimal(10,2);
};
//MyService.cds
@Capabilities.UpdateRestrictions.DeltaUpdateSupported
service MyService {
entity ExchangeRate as projection on ExchangeRateDto {*};
}
Regular post/get apis work as expected.
I tested CAP PATCH batch to URL: localhost:8080/odata/v4/MyService/ExchangeRate
via following payload
{
"@context": "#$delta",
"value": [
{
"id": "34642296-8b91-4145-a579-0e4d5a51cdb6",
"displayId": "ID-1",
"exechangeRate": 7.83
},
{
"id": "44642296-8b91-4145-a579-0e4d5a51cdb6",
"displayId": "ID-2",
"exechangeRate": 7.83
}
]
}
But got the response with 405 method not allowed with body
{
"error": {
"code": "405005",
"message": "Entity '{}' is not delta updatable"
}
}
Besides, I tested odata-style $batch to URL localhost:8080/odata/v4/MyService/$batch
{
"requests": [
{
"id": "1",
"method": "post",
"url": "/MyService/ExchangeRate"
"body": {
"id": "34642296-8b91-4145-a579-0e4d5a51cdb6",
"displayId": "ID-1",
"exechangeRate": 7.83
}
},
{
"id": "2",
"method": "post",
"url": "/MyService/ExchangeRate",
"body": {
"id": "44642296-8b91-4145-a579-0e4d5a51cdb6",
"displayId": "ID-2",
"exechangeRate": 7.83
}
}
]
}
but get error response 400 bad request
{
"error": {
"code": "400",
"message": "Content-Type at line '0' should be 'multipart/mixed' but is 'application/json'."
}
}
Not sure which part goes wrong? Would you kindly advise?
This page about compiler v2 has no context about when it applies or when v2 became available or how to check you have it.
Please clarify
Hi,
I stumbled across PATCH Entity Collection with Mass Data and tried to use it. Only after spending considerable time, I concluded that it is only available for Java and not available for node.js.
Am I right to conclude so? If so, could you please indicate here, this is a generic section about oData, that it is only for Java or move it to Java specific documentation. I am afraid that others may waste their time like me.
Best Regards,
Dinu
Hello,
There might be a small typo in the PostgreSQL documentation page like :
You can switch of automatic schema evolution -> You can switch off automatic schema evolution
Just an 'f' is missing.
I noticed that LTS is now 20.9
What's the plan to update the requirement in CAP and other tools so I dont have a swag of EBADENGINE
warnings ?
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '@sap/[email protected]',
npm WARN EBADENGINE required: { node: '^16.0.0 || ^18.0.0' },
npm WARN EBADENGINE current: { node: 'v20.9.0', npm: '10.2.1' }
npm WARN EBADENGINE }
Is there a way to define an @assert.range based on properties.
For example if you have a time range to ensure the from is before the end date.
Or is there a different way to handle that?
Or is the only solution registering a CREATE and UPDATE handler for the such field validation?
Links to unanswered SAP blog questions (from 2021):
https://answers.sap.com/questions/13422473/cap-date-dependency.html
https://answers.sap.com/questions/13442673/-48.html
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.