viktor-ferenczi / performance-improvements Goto Github PK
View Code? Open in Web Editor NEWPlugin to improve the performance of Space Engineers client and servers.
License: MIT License
Plugin to improve the performance of Space Engineers client and servers.
License: MIT License
Wanted to try the Plugin because I have some really odd issue in a modded game where Sim Speed drops after some time and gets progressively worse (removing objects / entities did not fix it), however it turns out it might not work on Linux currently and all patches seem to fail.
If you don't want or can't support Linux for whatever reason that's fine as well.
Version: 1.9.2
Installation Type: Manual (it does load and other plugins, e.g. the MorePPSettings Plugin seems to work for example, at least I can make changes with it ingame)
Other Active Plugins: None (I deactivated all to isolate this)
Steam Proton: Proton Experimental
Launch Options PROTON_LOG=1 DXVK_HUD=fps,gpuload DXVK_FRAME_RATE=73 gamemoderun %command% -skipintro -plugin PluginLoader.dll
(just started the game and quit again)
SpaceEngineers_20220329_19555390.log
VRageRender-DirectX11_20220329_195553783.log
Note: I think the System.Runtime.InteropServices.COMException
in the DX Log pertain to this ValveSoftware/Proton#1792 (comment)
Excerpt from the SpaceEngineers_20220329_19555390.log
which seems to complain about conflicting code changes
2022-03-29 19:56:02.207 - Thread: 1 -> [PluginLoader] Initializing 1 plugins
2022-03-29 19:56:02.209 - Thread: 1 -> Info: PerformanceImprovements: Loading
2022-03-29 19:56:02.233 - Thread: 1 -> Debug: PerformanceImprovements: Scanning for conflicting code changes
2022-03-29 19:56:02.440 - Thread: 12 -> Loading voxel storage from file 'Z:\home\engineofdarkness\.steam\debian-installation\steamapps\common\SpaceEngineers\Content\VoxelMaps\SuperRock_001.vx2'
2022-03-29 19:56:02.672 - Thread: 1 -> Critical: PerformanceImprovements: Detected conflicting code changes:
2022-03-29 19:56:02.674 - Thread: 1 -> Info: PerformanceImprovements: Code change in System.Void VRage.EOS.MyP2PQoSAdapter::UpdateStats(); expected 033ad607, actual 435dc3c1
2022-03-29 19:56:02.674 - Thread: 1 -> Info: PerformanceImprovements: Code change in static Microsoft.CodeAnalysis.SyntaxTree VRage.Scripting.Rewriters.PerfCountingRewriter::Rewrite(Microsoft.CodeAnalysis.CSharp.CSharpCompilation compilation, Microsoft.CodeAnalysis.SyntaxTree syntaxTree, System.Int32 modId); expected a71195dd, actual 85f83a27
2022-03-29 19:56:02.674 - Thread: 1 -> Info: PerformanceImprovements: Code change in System.Void Sandbox.Game.Entities.Character.MyCharacter::RigidBody_ContactPointCallback(Havok.HkContactPointEvent& value); expected 230531d5, actual a34bb931
2022-03-29 19:56:02.674 - Thread: 1 -> Info: PerformanceImprovements: Code change in System.Boolean VRage.Game.Entity.MyEntity::get_InScene(); expected 60f67776, actual 5c27d807
2022-03-29 19:56:02.674 - Thread: 1 -> Info: PerformanceImprovements: Code change in Sandbox.Game.Entities.MyCubeGrid Sandbox.Game.Entities.MyCubeGrid::MergeGridInternal(Sandbox.Game.Entities.MyCubeGrid gridToMerge, VRageMath.MatrixI& transform, System.Boolean disableBlockGenerators); expected ddf218c3, actual 60792e02
2022-03-29 19:56:02.674 - Thread: 1 -> Info: PerformanceImprovements: Code change in Sandbox.Game.Entities.MyCubeGrid Sandbox.Game.Entities.MyCubeGrid::MergeGridInternal(Sandbox.Game.Entities.MyCubeGrid gridToMerge, VRageMath.MatrixI& transform, System.Boolean disableBlockGenerators); expected ddf218c3, actual 60792e02
2022-03-29 19:56:02.674 - Thread: 1 -> Info: PerformanceImprovements: Code change in VRageMath.MatrixI Sandbox.Game.Entities.MyCubeGrid::PasteBlocksServer(System.Collections.Generic.List`1<VRage.Game.MyObjectBuilder_CubeGrid> gridsToMerge); expected e7010d51, actual 29c1578d
2022-03-29 19:56:02.675 - Thread: 1 -> Info: PerformanceImprovements: Code change in VRageMath.MatrixI Sandbox.Game.Entities.MyCubeGrid::PasteBlocksServer(System.Collections.Generic.List`1<VRage.Game.MyObjectBuilder_CubeGrid> gridsToMerge); expected e7010d51, actual 29c1578d
2022-03-29 19:56:02.675 - Thread: 1 -> Info: PerformanceImprovements: Code change in System.Void VRage.Groups.MyGroups`2<Sandbox.Game.Entities.MyCubeGrid, Sandbox.Game.Entities.MyGridLogicalGroupData>::MergeGroups(VRage.Groups.Group<Sandbox.Game.Entities.MyCubeGrid, Sandbox.Game.Entities.MyGridLogicalGroupData> groupA, VRage.Groups.Group<Sandbox.Game.Entities.MyCubeGrid, Sandbox.Game.Entities.MyGridLogicalGroupData> groupB); expected fb5613b0, actual 4a1c8d53
2022-03-29 19:56:02.675 - Thread: 1 -> Info: PerformanceImprovements: Code change in System.Void VRage.Groups.MyGroups`2<Sandbox.Game.Entities.MyCubeGrid, Sandbox.Game.Entities.MyGridLogicalGroupData>::MergeGroups(VRage.Groups.Group<Sandbox.Game.Entities.MyCubeGrid, Sandbox.Game.Entities.MyGridLogicalGroupData> groupA, VRage.Groups.Group<Sandbox.Game.Entities.MyCubeGrid, Sandbox.Game.Entities.MyGridLogicalGroupData> groupB); expected fb5613b0, actual 4a1c8d53
2022-03-29 19:56:02.675 - Thread: 1 -> Info: PerformanceImprovements: Code change in virtual System.Boolean VRage.Groups.MyGroups`2<Sandbox.Game.Entities.MyCubeGrid, Sandbox.Game.Entities.MyGridLogicalGroupData>::BreakLink(System.Int64 linkId, Sandbox.Game.Entities.MyCubeGrid parentNode, Sandbox.Game.Entities.MyCubeGrid childNode); expected 68c25077, actual 5e1db188
2022-03-29 19:56:02.675 - Thread: 1 -> Info: PerformanceImprovements: Code change in virtual System.Boolean VRage.Groups.MyGroups`2<Sandbox.Game.Entities.MyCubeGrid, Sandbox.Game.Entities.MyGridLogicalGroupData>::BreakLink(System.Int64 linkId, Sandbox.Game.Entities.MyCubeGrid parentNode, Sandbox.Game.Entities.MyCubeGrid childNode); expected 68c25077, actual 5e1db188
2022-03-29 19:56:02.675 - Thread: 1 -> Info: PerformanceImprovements: Code change in System.Void Sandbox.Game.EntityComponents.MyResourceDistributorComponent::UpdateBeforeSimulation(); expected cd93ffd6, actual f75384c9
2022-03-29 19:56:02.675 - Thread: 1 -> Info: PerformanceImprovements: Code change in virtual System.Boolean Havok.HandleEqualityComparer::Equals(Havok.HkShape x, Havok.HkShape y); expected 8933ef75, actual 0e4c338b
2022-03-29 19:56:02.675 - Thread: 1 -> Info: PerformanceImprovements: Code change in virtual Havok.HkRigidBody Sandbox.Engine.Physics.MyPhysicsBody::get_RigidBody(); expected fc347f5d, actual 87ad40c6
2022-03-29 19:56:02.675 - Thread: 1 -> Info: PerformanceImprovements: Code change in System.Boolean Sandbox.Game.Entities.MySafeZone::IsSafe(VRage.Game.Entity.MyEntity entity); expected 98164fe2, actual 0e8b938d
2022-03-29 19:56:02.675 - Thread: 1 -> Info: PerformanceImprovements: Code change in System.Boolean Sandbox.Game.Entities.MySafeZone::IsSafe(VRage.Game.Entity.MyEntity entity); expected 98164fe2, actual 0e8b938d
2022-03-29 19:56:02.675 - Thread: 1 -> Info: PerformanceImprovements: Code change in System.Void Sandbox.Game.Entities.MySafeZone::RemoveEntityPhantom(Havok.HkRigidBody body, VRage.ModAPI.IMyEntity entity); expected 55db36e5, actual 31f55f58
2022-03-29 19:56:02.675 - Thread: 1 -> Info: PerformanceImprovements: Code change in System.Void Sandbox.Game.Entities.<>c__DisplayClass103_0::<RemoveEntityPhantom>b__0(); expected b39ccae8, actual 7c21666c
2022-03-29 19:56:02.675 - Thread: 1 -> Info: PerformanceImprovements: Code change in VRage.Game.Entity.MyEntity[] Sandbox.Game.Weapons.MyLargeTurretTargetingSystem::SortTargetRoots(); expected edfb7619, actual 3d07464d
2022-03-29 19:56:02.675 - Thread: 1 -> Info: PerformanceImprovements: Code change in System.Void Sandbox.Game.Weapons.MyLargeTurretTargetingSystem::.ctor(Sandbox.Game.Entities.Interfaces.IMyTargetingReceiver targetReceiver, Sandbox.Game.Weapons.MyTargetingOption raycastMode); expected 8dfc8ab5, actual 07992071
2022-03-29 19:56:02.675 - Thread: 1 -> Info: PerformanceImprovements: Code change in System.Void Sandbox.Game.Weapons.MyLargeTurretTargetingSystem::UpdateVisibilityCacheCounters(); expected e5cf202d, actual 5998c9f1
2022-03-29 19:56:02.675 - Thread: 1 -> Info: PerformanceImprovements: Code change in System.Void Sandbox.Game.Weapons.MyLargeTurretTargetingSystem::SetTargetVisible(VRage.Game.Entity.MyEntity target, System.Boolean visible, System.Nullable`1<System.Int32> timeout); expected 983dff7e, actual a26304fd
2022-03-29 19:56:02.675 - Thread: 1 -> Info: PerformanceImprovements: Code change in System.Boolean Sandbox.Game.Weapons.MyLargeTurretTargetingSystem::IsTargetVisible(VRage.Game.Entity.MyEntity target, System.Nullable`1<VRageMath.Vector3D> overridePredictedPos, System.Boolean useVisibilityCache); expected af0e9b1d, actual b9c4ef72
2022-03-29 19:56:02.675 - Thread: 1 -> Info: PerformanceImprovements: Code change in System.Boolean Sandbox.Game.Weapons.MyLargeTurretTargetingSystem::TestPotentialTarget(VRage.Game.Entity.MyEntity target, VRage.Game.Entity.MyEntity& nearestTarget, System.Double& minDistanceSq, System.Double maxDistance, System.Collections.Generic.List`1<Sandbox.Game.Weapons.MyEntityWithDistSq> outPotentialTargets); expected ab1ec6a6, actual 5ff06247
2022-03-29 19:56:02.675 - Thread: 1 -> Info: PerformanceImprovements: Code change in System.Boolean Sandbox.Game.Weapons.MyLargeTurretTargetingSystem::TestTarget(VRage.Game.Entity.MyEntity target); expected 5061cc1b, actual 335f4588
2022-03-29 19:56:02.675 - Thread: 1 -> Info: PerformanceImprovements: Code change in static VRage.Game.MyVoxelMaterialDefinition Sandbox.Engine.Voxels.IMyStorageExtensions::GetMaterialAt(VRage.Game.Voxels.IMyStorage self, VRageMath.Vector3I& voxelCoords); expected d214d704, actual 1153a58b
2022-03-29 19:56:02.675 - Thread: 1 -> Info: PerformanceImprovements: Code change in System.Boolean SpaceEngineers.Game.Entities.Blocks.MyWindTurbine::get_IsInAtmosphere(); expected 641370cb, actual 35b9c9ab
2022-03-29 19:56:02.675 - Thread: 1 -> Info: PerformanceImprovements: Code change in System.Boolean SpaceEngineers.Game.Entities.Blocks.MyWindTurbine::get_IsInAtmosphere(); expected 641370cb, actual 35b9c9ab
Since the plugin updates for the Warfare Evolution, my game crashes every time when I try to start it. When I remove the plugin by hand from the launcher config.xml, I can start the game normally. This also happens with the current version (commit 5a6e5f2). Before I was able to use this plugin, without any problems.
I'm using linux (manjaro) / proton.
After an hour of troubleshooting, mod-shuffling, and testing, I've come to the conclusion that this plugin's recent update causes the game to crash on world load if any vanilla turrets exist at all in the world and are powered on (enabling their targeting systems).
Example Crash Log trace:
2022-03-22 02:29:11.163 - Thread: 1 -> Exception occurred: System.NullReferenceException: Object reference not set to an instance of an object.
at Sandbox.Game.Weapons.MyLargeTurretTargetingSystem.UpdateVisibilityCacheCounters()
at Sandbox.Game.Weapons.MyLargeTurretBase.DoUpdateTimerTick()
at Sandbox.Game.Entities.Cube.MyFunctionalBlock.OnTimerTick(MyEntityComponentContainer obj)
at System.DelegateExtensions.InvokeIfNotNull[T1](Action`1 handler, T1 arg1)
at Sandbox.Game.Components.MyTimerComponent.Update(Boolean forceUpdate)
at Sandbox.Game.Entities.Cube.MyFunctionalBlock.UpdateAfterSimulation10()
at Sandbox.Game.Entities.MyParallelEntityUpdateOrchestrator.UpdateAfterSimulation10()
at Sandbox.Game.Entities.MyParallelEntityUpdateOrchestrator.DispatchAfterSimulation()
at Sandbox.Game.Entities.MyEntities.UpdateAfterSimulation()
at Sandbox.Game.World.MySector.UpdateAfterSimulation()
at Sandbox.Game.World.MySession.UpdateComponents()
at Sandbox.Game.World.MySession.Update(MyTimeSpan updateTime)
at Sandbox.MySandboxGame.Update()
at Sandbox.Engine.Platform.Game.UpdateInternal()
at Sandbox.Engine.Platform.Game.RunSingleFrame()
at Sandbox.Engine.Platform.FixedLoop.<>c__DisplayClass11_0.<Run>b__0()
at Sandbox.Engine.Platform.GenericLoop.Run(VoidAction tickCallback)
at Sandbox.Engine.Platform.Game.RunLoop()
at Sandbox.MySandboxGame.Run(Boolean customRenderLoop, Action disposeSplashScreen)
at SpaceEngineers.MyProgram.Main(String[] args)
2022-03-22 02:29:11.163 - Thread: 1 -> Showing message
2022-03-22 02:29:12.011 - Thread: 1 ->
================================== CRASH INFO ==================================
AppVersion: 01_200_032
GameName: Space Engineers
IsOutOfMemory: False
IsGPU: False
IsNative: False
IsTask: False
IsExperimental: True
ProcessRunTime: 77
PCUCount: 5873
IsHang: False
GCMemory: 1737
GCMemoryAllocated: 1737
HWAvailableMemory: 16415
ProcessPrivateMemory: 8226
AnalyticId: SE
================================== OFNI HSARC ==================================
This is specific to PB API calls for IMyShipConnector.OtherConnector or IMyShipConnector.OtherConnector.CubeGrid, which are common in inventory accessing scripts such as IIM.
The issue occurs when a grid is connected via a connector and either (we can't determine which) the conveyor or the groups patch option is selected.
Removing both of them resolved the issue and it has not returned even when we enabled them one at a time and together, however, it persisted through dozens of server restarts. We'll add to this issue if it returns.
My GUESS is that the thread priority change for MyCubeGrid.MergeGroups() is conflicting with the MyShipConnector.TryAttach and ultimately with CreateConstraint()'s Sync call returning that the connectors have a constraint and are connected, but returning null in the otherConnectorCubGrid (this is again, my guess) due to the MergeGroups() shift off of the main thread.
Unable to reliably replicate, is fixed by one or both of the conveyor and group patches being disabled. Does not return when enabling them while server is live. Have not gone through a restart to confirm the issue returns after restart with them enabled. Will update further. Issue is that when problem exists, IMyShipConnector.OtherConnector or .OtherConnector.CubeGrid is null. Grid shows valid connection and works through control panel, this is exclusive to PB API call.
Unfortunately pull 1.10.0 #27 has caused an issue with accessing LCDs. I've isolated it to this plugin.
Steps to repro:
Thanks!
I just had this popup. Please investigate. I'm assuming that it is a false positive, but want to be sure. Here is the VirusTotal report on the file: https://www.virustotal.com/gui/file/f43d903e40e74c597fcd8117f1a6e0d3a7a8ec5b33fb7371ea2f1292d0623597/detection
The commit referenced in the current plugin hub, 427df30, appears to no longer exist (did it get force-pushed over?), so loading the plugin via the plugin loader appears to just be hard failing at the download step. I assume this'll probably be fixed when your latest commit, which was merged ~12 hours ago, gets PR'd into the hub, but I figured I'd give you a head's up anyway.
2023-07-30 12:45:41.082 - Thread: 1 -> [PluginLoader] Starting - v1.11.5
2023-07-30 12:45:43.394 - Thread: 1 -> [PluginLoader] Downloading https://raw.githubusercontent.com/sepluginloader/PluginHub/main/plugins.sha1
2023-07-30 12:45:43.543 - Thread: 1 -> [PluginLoader] Downloading https://github.com/sepluginloader/PluginHub/archive/main.zip
2023-07-30 12:45:43.853 - Thread: 1 -> [PluginLoader] Saving whitelist to disk
2023-07-30 12:45:43.860 - Thread: 1 -> [PluginLoader] Saving config
2023-07-30 12:45:43.886 - Thread: 1 -> [PluginLoader] Whitelist updated
2023-07-30 12:45:43.933 - Thread: 1 -> [PluginLoader] Found 120 plugins
2023-07-30 12:45:43.937 - Thread: 1 -> [PluginLoader] Found 49 plugin groups
2023-07-30 12:45:43.943 - Thread: 1 -> [PluginLoader] Enabled plugins: WesternGamer/AddMissingSearchBoxes, austinvaness/BetterInventorySearch, austinvaness/BlockPicker, viktor-ferenczi/se-bugfixes, austinvaness/DisableAnalytics, WesternGamer/FPSCounter, zznty/FactionUnlimiter, StarCpt/SE-GridFilter, austinvaness/MESInhibitorPlugin, viktor-ferenczi/multigrid-projector, Allen-Wrench/NoForcedCameraZoom, WesternGamer/No-News-Plugin, viktor-ferenczi/performance-improvements, WesternGamer/RemoveIntroVideoPlugin, austinvaness/ScrollRotationPlugin, austinvaness/ToolSwitcherPlugin, viktor-ferenczi/toolbar-manager, austinvaness/UnlimitedScriptLength
2023-07-30 12:45:43.944 - Thread: 1 -> [PluginLoader] Patching
2023-07-30 12:45:43.945 - Thread: 12 -> [PluginLoader] Downloading plugin statistics anonymously...
2023-07-30 12:45:44.408 - Thread: 1 -> [PluginLoader] Instantiating plugins
2023-07-30 12:45:44.439 - Thread: 1 -> [PluginLoader] Precompiling BetterInventorySearch_0dphx2oh.rs5, Version=1.2.1.0, Culture=neutral, PublicKeyToken=null
2023-07-30 12:45:44.466 - Thread: 1 -> [PluginLoader] Precompiling BlockPicker_jqkxmodf.2xy, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
2023-07-30 12:45:44.473 - Thread: 1 -> [PluginLoader] Downloading https://github.com/viktor-ferenczi/multigrid-projector/archive/56ac8a25723b9d69169c521a3b31348ddeb2a296.zip
2023-07-30 12:45:45.621 - Thread: 1 -> [PluginLoader] Precompiling multigrid_projector_wxw0mxp5.bal, Version=0.5.0.0, Culture=neutral, PublicKeyToken=null
2023-07-30 12:45:45.762 - Thread: 1 -> [PluginLoader] Precompiling NoForcedCameraZoom_ybg3c515.eva, Version=1.0.0.2, Culture=neutral, PublicKeyToken=null
2023-07-30 12:45:45.794 - Thread: 1 -> [PluginLoader] Precompiling No_News_Plugin_yqxz22s0.5ps, Version=1.0.1.0, Culture=neutral, PublicKeyToken=null
2023-07-30 12:45:45.795 - Thread: 1 -> [PluginLoader] Downloading https://github.com/viktor-ferenczi/performance-improvements/archive/427df307576cb82c23a6659f8cb688870662c3f9.zip
2023-07-30 12:45:45.862 - Thread: 1 -> [PluginLoader] Failed to load viktor-ferenczi/performance-improvements|Performance Improvements because of an error: System.Net.WebException: The remote server returned an error: (404) Not Found.
at System.Net.HttpWebRequest.GetResponse()
at avaness.PluginLoader.Network.GitHub.GetStream(Uri uri)
at avaness.PluginLoader.Network.GitHub.DownloadRepo(String name, String commit)
at avaness.PluginLoader.Data.GitHubPlugin.CompileFromSource(String commit, Action`1 callback)
at avaness.PluginLoader.Data.GitHubPlugin.GetAssembly()
at avaness.PluginLoader.Data.PluginData.TryLoadAssembly(Assembly& a)
2023-07-30 12:46:08.870 - Thread: 1 -> [PluginLoader] Precompiling RemoveIntroVideoPlugin_f55n4wws.h0t, Version=1.1.1.0, Culture=neutral, PublicKeyToken=null
2023-07-30 12:46:08.893 - Thread: 1 -> [PluginLoader] Precompiling ScrollRotationPlugin_zvapuosa.ev5, Version=1.3.1.0, Culture=neutral, PublicKeyToken=null
2023-07-30 12:46:08.922 - Thread: 1 -> [PluginLoader] Precompiling toolbar_manager_dzxllufg.40t, Version=1.3.3.0, Culture=neutral, PublicKeyToken=null
2023-07-30 12:46:08.972 - Thread: 1 -> [PluginLoader] Precompiling AddMissingSearchBoxes_sird4hp4.2pg, Version=1.1.1.0, Culture=neutral, PublicKeyToken=null
2023-07-30 12:46:09.003 - Thread: 1 -> [PluginLoader] Precompiling ToolSwitcherPlugin_rq10zky3.3hv, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
2023-07-30 12:46:09.058 - Thread: 1 -> [PluginLoader] Precompiling UnlimitedScriptLength_rjgq1dhg.x11, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
2023-07-30 12:46:09.092 - Thread: 1 -> [PluginLoader] Precompiling DisableAnalytics_acerpwx1.2pw, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
2023-07-30 12:46:09.103 - Thread: 1 -> [PluginLoader] Precompiling FPSCounter_wb4jtg0b.ri5, Version=1.1.4.0, Culture=neutral, PublicKeyToken=null
2023-07-30 12:46:09.193 - Thread: 1 -> [PluginLoader] Precompiling FactionUnlimiter_ttmhhrad.se2, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
2023-07-30 12:46:09.218 - Thread: 1 -> [PluginLoader] Precompiling SE_GridFilter_04hhi2a5.lda, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
2023-07-30 12:46:09.250 - Thread: 1 -> [PluginLoader] Precompiling MESInhibitorPlugin_ox050dqi.fcv, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
2023-07-30 12:46:09.283 - Thread: 1 -> [PluginLoader] Precompiling se_bugfixes_b2axu3l2.0sy, Version=1.3.6.0, Culture=neutral, PublicKeyToken=null
2023-07-30 12:46:09.303 - Thread: 1 -> [PluginLoader] Finished startup. Took 28225ms
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.