Coder Social home page Coder Social logo

[Bug] TC-IDM-10.1 The feature-map value for both the ElectricalPowerMeasurement cluster and ElectricalEnergyMeasurement cluster has failed validation about certification-tool HOT 20 CLOSED

Semi-Bin-Blain avatar Semi-Bin-Blain commented on May 27, 2024
[Bug] TC-IDM-10.1 The feature-map value for both the ElectricalPowerMeasurement cluster and ElectricalEnergyMeasurement cluster has failed validation

from certification-tool.

Comments (20)

cecille avatar cecille commented on May 27, 2024 1

You can use read-by-id for wildcard. 0xFFFFFFFF is the key for "everything". So

chip-tool any read-by-id 0x0091 0xFFFFFFFF 0x12344321 1
chip-tool any read-by-id 0x0090 0xFFFFFFFF 0x12344321 1

where 0x0091 / 0x0090 are the cluster IDs, 0xFFFFFFFF is the key for "all the attributes", and 0x1234321 is the node id (change as appropriate) and 1 is the endpoint

from certification-tool.

raju-apple avatar raju-apple commented on May 27, 2024

@Survensa Can you check if this issue is seen by the QA team as well ?

from certification-tool.

cecille avatar cecille commented on May 27, 2024

Try reading the feature map on that cluster with chip-tool. f it comes back as an error, it's a problem with your device because feature map is a required global attribute.

from certification-tool.

raju-apple avatar raju-apple commented on May 27, 2024

@Semi-Bin-Blain can you try out what Cecille has suggested pleas e?

from certification-tool.

Semi-Bin-Blain avatar Semi-Bin-Blain commented on May 27, 2024

@cecille @raju-apple
After the test case failed, I tried that and was able to read the feature map on both the EEM cluster and the EPM cluster using chip-tool.

./chip-tool electricalenergymeasurement read feature-map 1 1

[1709805249.099078][9420:9422] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0091 Attribute 0x0000_FFFC DataVersion: 2621930691
[1709805249.099252][9420:9422] CHIP:TOO:   FeatureMap: 7
[1709805249.099774][9420:9422] CHIP:EM: <<< [E:36736i S:38883 M:138781990 (Ack:60809736)] (S) Msg TX to 1:0000000000000001 [FE0B] [UDP:[fd7b:94b:40c6:1:c5b6:ecc7:e869:9f64%wpan0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck)
[1709805249.100047][9420:9422] CHIP:EM: Flushed pending ack for MessageCounter:60809736 on exchange 36736i


./chip-tool electricalpowermeasurement read feature-map 1 1

[1709862941.751647][4200:4202] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0090 Attribute 0x0000_FFFC DataVersion: 951985864
[1709862941.751797][4200:4202] CHIP:TOO:   FeatureMap: 2
[1709862941.752275][4200:4202] CHIP:EM: <<< [E:44752i S:33163 M:170189480 (Ack:211495321)] (S) Msg TX to 1:0000000000000001 [7F2C] [UDP:[fd2d:2141:4633:1:5068:d647:92f:285f%wpan0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck)
[1709862941.752538][4200:4202] CHIP:EM: Flushed pending ack for MessageCounter:211495321 on exchange 44752i

from certification-tool.

cecille avatar cecille commented on May 27, 2024

That's interesting because it's definitely coming back as a value decode failure, and we know this is not a general test failure. Is there maybe something strange with the wildcard vs. individual attribute read? Can you try this again using a wildcard for the cluster or endpoint?

from certification-tool.

Semi-Bin-Blain avatar Semi-Bin-Blain commented on May 27, 2024

That's interesting because it's definitely coming back as a value decode failure, and we know this is not a general test failure. Is there maybe something strange with the wildcard vs. individual attribute read? Can you try this again using a wildcard for the cluster or endpoint?

Of course! How do I do that? Which command should I use for the chip-tool?

from certification-tool.

Semi-Bin-Blain avatar Semi-Bin-Blain commented on May 27, 2024

You can use read-by-id for wildcard. 0xFFFFFFFF is the key for "everything". So

chip-tool any read-by-id 0x0091 0xFFFFFFFF 0x12344321 1 chip-tool any read-by-id 0x0090 0xFFFFFFFF 0x12344321 1

where 0x0091 / 0x0090 are the cluster IDs, 0xFFFFFFFF is the key for "all the attributes", and 0x1234321 is the node id (change as appropriate) and 1 is the endpoint

I have tried this and it was successful. Below is the log file.

[1710818316.889845][85260:85262] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0090 Attribute 0x0000_FFFC DataVersion: 1595548517
[1710818316.889867][85260:85262] CHIP:TOO:   FeatureMap: 2

[1710818303.167114][85257:85259] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0091 Attribute 0x0000_FFFC DataVersion: 3692184921
[1710818303.167149][85257:85259] CHIP:TOO:   FeatureMap: 15

wildcard_attribute_read_20240319_112256.log

from certification-tool.

cecille avatar cecille commented on May 27, 2024

I'm fairly stumped - the read from the test is reporting that the attribute isn't readable, but it seems like it is. I'm fairly confident that the decoding code in python is robust - it's been in use for quite some time. It feels like there's something more fundamental going on here.

Would you mind trying one more thing - can you re-run the test with dump_device_composition_path enabled? If you're running this from the command line, just pass that as a flag, and give it a filename to dump to. It will output a json and a txt file with a direct dump of the wildcard. If you want to anonymize the dump, you can use the tool here: cecille/connectedhomeip@dabbb14 (or just erase the basic information cluster information). You can also send it over to me to take a look if you don't wish to attach it to this issue.

from certification-tool.

Semi-Bin-Blain avatar Semi-Bin-Blain commented on May 27, 2024

I'm fairly stumped - the read from the test is reporting that the attribute isn't readable, but it seems like it is. I'm fairly confident that the decoding code in python is robust - it's been in use for quite some time. It feels like there's something more fundamental going on here.

Would you mind trying one more thing - can you re-run the test with dump_device_composition_path enabled? If you're running this from the command line, just pass that as a flag, and give it a filename to dump to. It will output a json and a txt file with a direct dump of the wildcard. If you want to anonymize the dump, you can use the tool here: cecille/connectedhomeip@dabbb14 (or just erase the basic information cluster information). You can also send it over to me to take a look if you don't wish to attach it to this issue.

Sorry, I'm a little confused.
Should I re-run the IDM-10.1 test case and add the flag dump_device_composition_path? Where can I get the output file?

from certification-tool.

cecille avatar cecille commented on May 27, 2024

Yes. The argument to that flag is the path to output the files.

from certification-tool.

Semi-Bin-Blain avatar Semi-Bin-Blain commented on May 27, 2024

Yes. The argument to that flag is the path to output the files.

Sorry to bother you, I tried to run the test in the docker command line, but I can not get the dump file. Should I bind a new directory to the docker container? If I'm running it in the wrong way? If so, could you please show me the right way?
Below is the command:

rm -f admin_storage.json && python3 temp_python_testing/scripts/sdk/TC_DeviceBasicComposition.py --discriminator 3996  --passcode 34732441 --commissioning-method ble-thread --paa-trust-store-path  /credentials/development/paa-root-certs/  --storage-path admin_storage.json --int-arg use_pase_only:0 --tests test_TC_IDM_10_1 --thread-dataset-hex 0e080000000000010000000300000b35060004001fffe00208f3e7c92ab739b79f0708fd24c99c0091f31d05101e9ebf38f9503215ab0218abc646b9d4030f4f70656e5468726561642d35363333010256330410acd351f85bdfacb4858456eb8565e0840c0402a0f7f8 --ble-interface-id 0 --dump_device_composition_path tc_idm_10_1

from certification-tool.

cecille avatar cecille commented on May 27, 2024

I'm sorry about that - I've completely botched the flag. It should be
--string-arg dump_device_composition_path:path_and_filename

where path_and_filename is the path and filename for your file.

from certification-tool.

Semi-Bin-Blain avatar Semi-Bin-Blain commented on May 27, 2024

I'm sorry about that - I've completely botched the flag. It should be --string-arg dump_device_composition_path:path_and_filename

where path_and_filename is the path and filename for your file.

Got it, it's worked, thanks. Below is the files:
tc_idm_10_1.json
tc_idm_10_1.txt

Besides that, one thing I think needs to mentioned, the feature map value of these two clusters, can not be edited by the Zap tool, we need to config it in the code, like the following:
Is there anything wrong?

BitMask<Clusters::ElectricalPowerMeasurement::Feature> epm_feature = BitMask<Clusters::ElectricalPowerMeasurement::Feature>(2);

from certification-tool.

cecille avatar cecille commented on May 27, 2024

There's definitely something bad going on here - you have value decode failures for almost every attribute on the cluster.

     <class 'chip.clusters.Objects.ElectricalPowerMeasurement'>: {<class 'chip.clusters.Attribute.DataVersion'>: 2690107090,
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.ApparentCurrent'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                            Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.ActivePower'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                        Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.ReactivePower'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                          Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.AttributeList'>: [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
                                                                                                                                                        17, 65528, 65529, 65531, 65532, 65533],
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.FeatureMap'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                       Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.RMSVoltage'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                       Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.PowerMode'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                      Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.NumberOfMeasurementTypes'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                                     Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.Accuracy'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                     Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.Voltage'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                    Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.ActiveCurrent'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                          Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.ApparentPower'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                          Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.RMSCurrent'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                       Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.RMSPower'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                     Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.Frequency'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                      Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.ReactiveCurrent'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                            Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.PowerFactor'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                        Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.GeneratedCommandList'>: [],
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.AcceptedCommandList'>: [],
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.ClusterRevision'>: 1},

from certification-tool.

Semi-Bin-Blain avatar Semi-Bin-Blain commented on May 27, 2024

There's definitely something bad going on here - you have value decode failures for almost every attribute on the cluster.

     <class 'chip.clusters.Objects.ElectricalPowerMeasurement'>: {<class 'chip.clusters.Attribute.DataVersion'>: 2690107090,
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.ApparentCurrent'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                            Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.ActivePower'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                        Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.ReactivePower'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                          Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.AttributeList'>: [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
                                                                                                                                                        17, 65528, 65529, 65531, 65532, 65533],
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.FeatureMap'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                       Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.RMSVoltage'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                       Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.PowerMode'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                      Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.NumberOfMeasurementTypes'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                                     Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.Accuracy'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                     Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.Voltage'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                    Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.ActiveCurrent'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                          Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.ApparentPower'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                          Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.RMSCurrent'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                       Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.RMSPower'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                     Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.Frequency'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                      Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.ReactiveCurrent'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                            Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.PowerFactor'>: ValueDecodeFailure(TLVValue=None,
                                                                                                                                                                        Reason=InteractionModelError(<Status.Failure: 1>)),
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.GeneratedCommandList'>: [],
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.AcceptedCommandList'>: [],
                                                                  <class 'chip.clusters.Objects.ElectricalPowerMeasurement.Attributes.ClusterRevision'>: 1},

@cecille As you say, it seems there is some wrong with our usage, is there any suggestions that can help us to fix it? Thanks!

from certification-tool.

Semi-Bin-Blain avatar Semi-Bin-Blain commented on May 27, 2024

@cecille @raju-apple Is there anything that we can do to fix this issue?

from certification-tool.

cecille avatar cecille commented on May 27, 2024

Given that this test is passing on the example apps, i don't believe this is a test issue - the device is returning bad data on the wildcard. So you'll have to fix it on the device side.

from certification-tool.

Semi-Bin-Blain avatar Semi-Bin-Blain commented on May 27, 2024

Given that this test is passing on the example apps, i don't believe this is a test issue - the device is returning bad data on the wildcard. So you'll have to fix it on the device side.

Got it, thanks

from certification-tool.

Semi-Bin-Blain avatar Semi-Bin-Blain commented on May 27, 2024

@cecille @raju-apple Hi, I resolved this issue, after checking, I noticed that the Test case was finished before my device initiated the value of both clusters, so maybe the command got NULL or Unkonw status value of both clusters, I initiated the value more early, now the test case can pass.

But during the test running, my device still got some error logs, which show retrieving data error, I think the error code means No memory, it seems not to have any bad effect on my device, and the test case is passed, is that okay to ignore these error logs?

E: 25620 [DMG]Error retrieving data from clusterId: 0x0000_0030, err = b
I: 25632 [EM]<<< [E:45483r S:13657 M:44666486 (Ack:251262658)] (S) Msg TX to 1:000000000001B669 [6576] [UDP:[fd11:53::31ef:ebd3:f329:7f51]:52214] --- Type 0001:05 (IM:ReportData)
I: 25849 [EM]>>> [E:45483r S:13657 M:251262659 (Ack:44666486)] (S) Msg RX from 1:000000000001B669 [6576] --- Type 0001:01 (IM:StatusResponse)
I: 25863 [IM]Received status response, status is 0x00
E: 25924 [DMG]Error retrieving data from clusterId: 0x0000_0035, err = b
I: 25936 [EM]<<< [E:45483r S:13657 M:44666487 (Ack:251262659)] (S) Msg TX to 1:000000000001B669 [6576] [UDP:[fd11:53::31ef:ebd3:f329:7f51]:52214] --- Type 0001:05 (IM:ReportData)
I: 26150 [EM]>>> [E:45483r S:13657 M:251262660 (Ack:44666487)] (S) Msg RX from 1:000000000001B669 [6576] --- Type 0001:01 (IM:StatusResponse)
I: 26164 [IM]Received status response, status is 0x00
E: 26244 [DMG]Error retrieving data from clusterId: 0x0000_003E, err = b
I: 26255 [EM]<<< [E:45483r S:13657 M:44666488 (Ack:251262660)] (S) Msg TX to 1:000000000001B669 [6576] [UDP:[fd11:53::31ef:ebd3:f329:7f51]:52214] --- Type 0001:05 (IM:ReportData)
I: 26434 [EM]>>> [E:45483r S:13657 M:251262661 (Ack:44666488)] (S) Msg RX from 1:000000000001B669 [6576] --- Type 0001:01 (IM:StatusResponse)
I: 26447 [IM]Received status response, status is 0x00
E: 26462 [DMG]Error retrieving data from clusterId: 0x0000_003F, err = b
I: 26475 [EM]<<< [E:45483r S:13657 M:44666489 (Ack:251262661)] (S) Msg TX to 1:000000000001B669 [6576] [UDP:[fd11:53::31ef:ebd3:f329:7f51]:52214] --- Type 0001:05 (IM:ReportData)
I: 26649 [EM]>>> [E:45483r S:13657 M:251262662 (Ack:44666489)] (S) Msg RX from 1:000000000001B669 [6576] --- Type 0001:01 (IM:StatusResponse)
I: 26663 [IM]Received status response, status is 0x00
E: 26691 [DMG]Error retrieving data from clusterId: 0x0000_001D, err = b
I: 26703 [EM]<<< [E:45483r S:13657 M:44666490 (Ack:251262662)] (S) Msg TX to 1:000000000001B669 [6576] [UDP:[fd11:53::31ef:ebd3:f329:7f51]:52214] --- Type 0001:05 (IM:ReportData)
I: 26928 [EM]>>> [E:45483r S:13657 M:251262663 (Ack:44666490)] (S) Msg RX from 1:000000000001B669 [6576] --- Type 0001:01 (IM:StatusResponse)
I: 26942 [IM]Received status response, status is 0x00
I: 26950 [DL]Get the fixed label with index:0 at endpoint:1
I: 26956 [DL]Get the fixed label with index:1 at endpoint:1
I: 26961 [DL]Get the fixed label with index:2 at endpoint:1
I: 26967 [DL]Get the fixed label with index:3 at endpoint:1
E: 26987 [DMG]Error retrieving data from clusterId: 0x0000_0090, err = b
I: 27000 [EM]<<< [E:45483r S:13657 M:44666491 (Ack:251262663)] (S) Msg TX to 1:000000000001B669 [6576] [UDP:[fd11:53::31ef:ebd3:f329:7f51]:52214] --- Type 0001:05 (IM:ReportData)
I: 27211 [EM]>>> [E:45483r S:13657 M:251262664 (Ack:44666491)] (S) Msg RX from 1:000000000001B669 [6576] --- Type 0001:01 (IM:StatusResponse)
I: 27225 [IM]Received status response, status is 0x00
I: 27243 [EM]<<< [E:45483r S:13657 M:44666492 (Ack:251262664)] (S) Msg TX to 1:000000000001B669 [6576] [UDP:[fd11:53::31ef:ebd3:f329:7f51]:52214] --- Type 0001:05 (IM:ReportData)

from certification-tool.

Related Issues (20)

Recommend Projects

  • React photo React

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

  • Vue.js photo Vue.js

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

  • Typescript photo Typescript

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

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

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

  • web

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

  • server

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

  • Machine learning

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

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

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

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.