retrodriven / pocket_updater Goto Github PK
View Code? Open in Web Editor NEWWindows GUI Application to Update Cores for the Analogue Pocket
License: MIT License
Windows GUI Application to Update Cores for the Analogue Pocket
License: MIT License
When you click Update nothing happens ... if you click again still nothing happens :) - then suddenly the update runs ... twice ... simultaneously it seems :)
This may be related to the other issue posted where a user is having trouble with the manage cores screen. Delete Skipped Cores simply doesn't delete unselected cores. It just leaves them. No errors present when running the update.
Is it possible to add timestamp to Updater Status window? I started the updater a few hours ago and the last I see is:
Checking Core: jotego.jtvulgus
No releases found. Skipping
Looking for Assets
vulgus.rom: Bad checksum!
Downloading vulgus.rom
Finished downloading vulgus.rom
mach9.rom: Bad checksum!
Downloading mach9.rom
Finished downloading mach9.rom
vulgusj.rom: Bad checksum!
Downloading vulgusj.rom
Finished downloading vulgusj.rom
-------------
At this point I don't know if the process is still running, there was an error or the update finished correctly.
Hi, thanks for you work it is very appreciated.
As the list of core keeps growing, I would really like to have a button to uncheck all selected cores in order to be able to choose just 1 or 2 without having to manually unselect everything.
There could also be a check all cores (but this would be less essential)
Avrel
I've been trying to get the "Fix Jotego Core Names" option to work without any success.
I've tried it with and without Preserve Platforms turned on. I've tried removing the contents of the Platforms directory and all my cores manually and reinstalling them with Pocket Updater. The Jotego Core names just aren't being changed.
Is there some trick to getting this to work?
I see that some Amigafiles (fasthd/slowhd) are not found, also there seems to be a missing palette file for the NES core. Unfortunately the log files do not track which files were missing during an update run.
It keeps updating the Game Gear core even though it's already been updated to the newest version.
Also, can you make it tell you at the end what things it updated, so you dont need to scroll through all the skipped updates?
When first opening the Asset Image Packs tab, no download location is selected. Trying to open any of the Github URLs for the asset packs with no download location selected results in an unhandled (I believe null pointer; not sure) exception until you select a download location.
Firstly, thankyou for your awesome work on this!
I have a minor feature request, it would be awesome if we could see the "Category" on the Manage Cores page. When I'm choosing which cores to enable/disable I typically want to enable all the Arcade cores and just disable Handhelds/Consoles I'm not interested or don't have the roms for. But it's a little hard to know which is which without the Category.
After attempting to update my Pocket, using the latest version of the updater, the program completely crashes and becomes completely unresponsive. You cannot kill the process at all. Using Task Manager, Task kill command in Command Prompt, Process explorer to kill process/end task is useless. Process explorer says access is denied, even when it's using admin privileges. Windows itself can't even terminate it, when the "waiting for program to respond" box comes up. After it "reports the problem to Microsoft", it still doesn't close out and sits there completely crashed. When Windows attempts to restart, it prevents the OS from restarting properly, because it cannot terminate the program at all, and you essentially have to hard reboot/use reset button.
Updater auto-grabs the latest firmware and places it on the external drive, however when multiple firmwares are present in the root, updates dont take place.
I propose an oldFirmwares directory, into which all .bin files in the root directory are moved when a new firmware is found.
Getting an error on CPS core. I am a Patreon Supporter as well.
Uh oh something went wrong.
'0x00' is an invalid start of value. Path: $ | LineNumber: 0 | BytePositionInLine: 0.
Restoring platforms folder
I am using version 1.5.4.
Here is the error log:
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.IO.DirectoryNotFoundException: Could not find a part of the path '\?\C:\Users\AppData\Local\Microsoft\VisualStudio\17.0_1fa20820\WinFormsDesigner\421upsnr.pvw\imagepack.zip'.
at Microsoft.Win32.SafeHandles.SafeFileHandle.CreateFile(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options)
at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize)
at System.IO.File.OpenHandle(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize)
at System.IO.File.WriteAllBytes(String path, Byte[] bytes)
at pannella.analoguepocket.HttpHelper.DownloadFileAsync(String uri, String outputPath)
at pannella.analoguepocket.ImagePack.fetchImagePack(String path)
at pannella.analoguepocket.ImagePack.Install(String path)
at Pocket_Updater.Controls.Image_Packs.Image_Packs.dataGridView1_CellContentClick(Object sender, DataGridViewCellEventArgs e)
at System.Threading.Tasks.Task.<>c.b__128_0(Object state)
************** JIT Debugging **************
Can this arcade core be added to the updater?
Check boxes for individual cores not appearing under “Manage Cores”. Unable to select cores.
only check box is the one for all in the blue header
occurring in 1.5.0 and 1.5.1
surface pro 7
Win 10
i5 16gb ram
Hello, I'm unable to update as I get the "no internet connection detected" error. I do indeed have an internet connection. Please let me know what other info you need.
Update: I did however notice that the cli tool I sometimes use also has this issue right now; with an error "service currently unavailable" so perhaps I simply have rotten timing.
Issued On Friday, August 11, 2023 at 8:44:21 AM
Expires On Thursday, November 9, 2023 at 8:44:20 AM
could be important
I would like to request a toggle to skip attempting to download and *.sav files as part of an update.
I am one of the likely few people who keep the "Skip Alternative Arcade Files" option OFF so that I get these alternates, but that also means a RIDICULOUS amount of wasted time waiting for 98% of the roms to have a failed attempt at downloading a matching ".sav" file. Not only does this at least triple the time an already long update takes, but even if I'm fully up to date and run the updater again (let's say one core was updated) it still tries to download ALL the ".sav" files again for EVERYTHING since it never found them on a previous run.
Thank you for your awesome work and your consideration of this request.
Note: Only tested on machines that previously suffered from issue #10
Updating directly to removable media is not working again in v1.3.1. This time you can correctly see the removable disk, select it and start the update, however, the update window remains completely blank and nothing happens no matter how long you wait. Even closing out of the 3 open windows for the app does not produce any error. I redownloaded v1.3.0 and renamed the executable to "Pocket Updater_1.3.0.exe" so it could coexist nest to the current v1.3.1. Running v1.3.0 works as expected. Alternating back and forth between v1.3.0 & v1.3.1 yields the same results: v1.3.0 always works as expected and v1.3.1 never begins the update process - it just sits at a blank update window forever.
Running v1.3.1 and updating to "current directory" works as expected.
Not sure if v1.3.1 can update to removable media successfully on machines that never suffered from issue #10 as both of my PCs had the issue prior to the release of a fix in v1.2.1
Full error upon booting Pocket Updater: No Internet Connection Detected. Failed to check for App Updates.
Subsequently when I click on "Manage Cores" I get this error: No Internet Connection Detected
The app was working fine in an older version. After updating to version 1.4.3 this error pops up. I added the EXE to my virus software's white list and ran as an administrator.
Hello,
When I try to change which cores I would like to keep/update, the app does not allow me to make changes to the list. If I toggle on all of them, the app works as it should and checks/updates them all. But if I go in and uncheck some, I am not permitted to save my changes and am told 'Specified cast is not valid'. Am I doing something wrong? I am using the latest version on a PC running Windows 10.
My thanks,
Andy
Running Windows 11 at 300% scaling. Scaling in app seems off, maybe allow resizing of window. Thanks
Pocket Updater v1.1.0
Upon clicking "Update Pocket" I am immediately greeted with an "Error!" window stating "Error retrieving Drive Information".
Clicking "OK" brings me to the "Update Location:" setting.
"Current DIrectory" works as expected but "Removable Storage" has no options to choose from. Clicking the green refresh button immediately pops up the original error message again. This happens 100% of the time and on every launch of the updater, regardless of whether or not removable storage is inserted in my PC via USB, built-in SD reader or not at all.
The PC I am using is a WIndows 10 Professional desktop on a corporate domain. I am the admin of both the PC and the domain so it is not an account rights issue. The PC has 13 drive letters in use (not counting those used by removable drives). 11 letters are assigned to local hard disks and two are mapped network drives. Removable media like SD cards or thumb drives when inserted generate additional drive letters.
Other software (both commercial and not) that specifically tries to point you to or limit you to removable media works as expected. Examples are SD Card Formatter, Etcher, Ultimaker Cura (auto redirect to devices detected as removable media when inserted), and a couple .NET apps that are specifically for manipulating SD card data only and completely ignore non-removable disks.
Sorry for the excessive info, wasn't sure if any of that would make it easier to track down the problem or not. 😄
Thanks so much for the awesome app!
Hello and thank you for this great tool! I have been following @RetroDriven since its script on MiSTer and appreciate the quality of its tools.
My request is simple: it would be nice if there was an option to force the deletion of the settings that are lying around in the Assets, Plateforms or even Settings folders when we decide to delete cores.
Thank you for this!
JB
Instance JSON builder for PC Engine CD Core doesn't work recursively, for instance I have my fullset built as this:
D:\Assets\pcecd\common\TGCD<game name>
D:\Assets\pcecd\common\PCECD-Translations<game name>
D:\Assets\pcecd\common\PCECD<game name>
and so on.
The JSON builder only seems to only detect if a game is located in a folder inside the common folder, it can't go further recursively.
So the way I personally use the Pocket Updater is to keep it in my PC Hard Drive and update to "Current Directory" first (as a backup & test) and then I run the update again against my SD card (Removable Storage).
When I updated just now (current directory on HDD) it found the new Pocket firmware update and downloaded it to my HDD. I then put my SD card in my PC and ran the updater again on "Removable Storage" and it says there were no updates found. I quit and relaunched the app and it still didn't find any updates. This time I paid close attention and it said my firmware was already up to date.
Somehow if the firmware update is already in the "current directory" (my PC hdd) it decides my SD card already has it as well, even if it doesn't.
I did not experience this in a previous version of the app and I have no idea if that is because the older versions didn't have the issue or just the timing of firmware releases prevented it from presenting itself.
A bunch of jtcps1 roms are not downloading from archive. Example:
Downloading sf2dongb.rom
Unable to find sf2dongb.rom in archive
I can’t download because windows 11 says it’s a virus
Upgraded from previous version (stored on system drive).
Saved core settings.
Selected Removeable Storage.
Correct drive is selected.
Click Update.
Unhandled exception.
Removed settings and tried again. Same error.
Unhandled exception:
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.NullReferenceException: Object reference not set to an instance of an object.
at pannella.analoguepocket.SettingsManager..ctor(String settingsPath, List`1 cores)
at pannella.analoguepocket.PocketCoreUpdater.LoadSettings()
at pannella.analoguepocket.PocketCoreUpdater.Initialize()
at Pocket_Updater.Update_Pocket.updateCoresButton_Click(Object sender, EventArgs e)
at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0(Object state)
************** Loaded Assemblies **************
System.Private.CoreLib
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
Pocket Updater
Assembly Version: 1.3.2.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Runtime
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Windows.Forms
Assembly Version: 6.0.2.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.ComponentModel.Primitives
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Windows.Forms.Primitives
Assembly Version: 6.0.2.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Runtime.InteropServices
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Drawing.Primitives
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Collections.Specialized
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Threading
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Diagnostics.TraceSource
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Collections
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Drawing.Common
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Net.WebClient
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.ComponentModel.EventBasedAsync
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
Microsoft.Win32.Primitives
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Threading.Thread
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
Accessibility
Assembly Version: 4.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.ComponentModel.TypeConverter
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
Microsoft.Win32.SystemEvents
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Collections.Concurrent
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.ComponentModel
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Numerics.Vectors
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Memory
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Resources.Extensions
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Drawing
Assembly Version: 6.0.2.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.ObjectModel
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Linq
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Private.Uri
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Net.Requests
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Net.Primitives
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Net.WebHeaderCollection
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Net.Http
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Diagnostics.Tracing
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Net.ServicePoint
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Net.Security
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Security.Cryptography.X509Certificates
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Collections.NonGeneric
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Diagnostics.DiagnosticSource
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Net.Sockets
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Net.NameResolution
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Diagnostics.Process
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Text.Json
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Threading.Overlapped
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Threading.ThreadPool
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Security.Cryptography.Primitives
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Security.Principal.Windows
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Security.Claims
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Security.Cryptography.Encoding
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Reflection.Emit.Lightweight
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Reflection.Primitives
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Reflection.Emit.ILGeneration
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Text.Encoding.Extensions
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Text.Encodings.Web
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Runtime.Intrinsics
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Runtime.CompilerServices.Unsafe
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Text.RegularExpressions
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.IO.FileSystem.DriveInfo
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Runtime.Loader
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Diagnostics.StackTrace
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Reflection.Metadata
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
System.Collections.Immutable
Assembly Version: 6.0.0.0
Win32 Version: n/a
CodeBase:
----------------------------------------
************** JIT Debugging **************
1.3.9 windows 10 1080p resolution
thanks for this great software, it's a blessing
Downloaded the new version and still keeps saying there is a new version. Redownloaded and still the same issue.
I cannot deselect individual cores from the Manage Cores tab. Individual core checkboxes do not respond to single-clicking, only double-clicking - and when the core is clicked away from (by clicking on another core, changing tabs in the program, etc.), the checkbox reverts to the checked state. Checking/unchecking all cores works as expected.
Upon unchecking all via the checkbox at the top, I was able to successfully save and deselect all cores. Now, however, I am unable to save a new selection of cores. Checking the boxes next to the desired individual cores and then clicking Save throws an error and the selections are not saved. Restarting the application confirms the selections do not save.
I've deleted the config file and started fresh, yet experience the same behavior. This occurs on the latest release as well as the previous.
I'm running Windows 11 and since I started using this excellent app, scaling issues have been there. My laptops resolution is 3840 x 2400 pixels and therefore I'm running 225% zoom (scaling).
The issues makes:
I specifically select and un-select a list of cores i want, save the option, and then update. The program simply ignores my choices and downloads every single core
Updated from 1.3.0 to 1.3.2. I only have some cores selected (basically only the consoles, no arcade). I made sure only these were selected, and clicked save. Then when I updated cores from removable storage, it started downloading all the cores ... even though I didn't have them checked.
Unfortunatly on my HiDPI Display 1.3.9 now HAS scaling problems which earlier versions did not have. That's on Win11.
With so many cores in place, it's getting harder already to tell which cores or files have been added or changed in a given run of this tool. As such, if you're loading these files into a staging folder, instead of right onto the pocket, it's hard to know what all should be copied over. You have to read back through the verbose output of the tool to find out.
Would it be possible to add a summary (either of files added/changed) or simply of Cores added/changed) to the bottom of the output as a summary? Or perhaps a toggle to have just that output vs the full verbose output?
Thanks!!
would be eternally gratefully. thanks
Not an issue as it is in any way but if at all possible could a future revision have the option to bring the previously used Update Location up as default the next time you open the GUI rather than having to navigate to a location again?
Quality-of-life request:
Spiritualized1997's Game Gear core has had the wrong aspect ratio set by default since its initial release. Currently, the only fix is to manually edit "video.json" so that the 160x144 resolution has an aspect ratio of 4:3, but manual edits get reverted after an update.
I'd like to suggest one of two possible features to fix this:
v1.3.9 has scaling issues in Win10 @ 100% scale. Issues NEVER existed before this version
Manage Cores screen completely blocks last entry from view: Picture
Organize Cores screen slightly clips last entry and obscures chosen drive letter completely: Picture
From a layman's perspective it seems to me that the bottom horizontal bar is layered overtop of the table instead of beginning after the table ends. Organize Cores doesn't clip as much as Manage Cores since it's bar shorter and thus overlaps the table less.
It is worth noting that resizing the window manually can alter how much is clipped from the last line in both mentioned windows but it's never perfect at the default size and practically impossible to resize it manually and make it mostly visible since it wants to snap the table position to mess it up again. If that makes any sense...
Hi,
Pocket Updater v1.6.0 seems to be downloading cores that are not checked. Please see the attached log and screenshot. For example, Pokemon Mini is unchecked but Pocket Updater still downloads it. I don't recall the previous version having this issue.
[pocket_update_log_122123.txt]
(https://github.com/RetroDriven/Pocket_Updater/files/13746589/pocket_update_log_122123.txt)
When using this app on Windows 11 with 250% scaling, it almost becomes unusable. (The text is too small with overlapping icons)
There is definitely something funky going on with how the app is meant to scale up on a 3840x2160 screen
The main 'Update' button allows a user to double/triple/etc -click the button, seemingly starting multiple update processes, as the status text on the right is doubled/tripled.
I wonder if this is related to #57; perhaps those users are double-clicking and not realizing or stating such?
This is a cross-post of an issue I created in mattpannella/pupdate#16. I noticed you use the core list in that repo already and would love your input on this.
I've noticed there are several tools in the community for updating Pocket cores. I have contributed to the
update-pocket
project, I'm aware of your project, and I know there is now a Windows application. Every time a new core is released, every project needs to update its own internal list of cores. It is my proposal that instead, we create a new API outside of these projects where the core list can be retrieved from.We already have the great resource
openfpga-cores-inventory
, so I suggest that we utilize that for hosting the API. This is another place that has to be independently updated every time a core is released, and is the best resource for members of the community to find the list of available cores. I already have the API put together in a local branch, ready to be put up as a PR, but for this to be successful, the developers of updater tools should all agree on a set JSON structure for the data.I would love to get your feedback on this, and if there is a consensus in the community that this is a good idea, I'm more than happy to stand up the API myself.
Not an issue with the core per se.
But it's not okay subscribing/watching for updates, when you get spammed about 15 times in a row for test updates.
Just thought I'd log the issue, so you'd notice it.
Currently unsubbed because of constant spam updates. Will re-sub once this is fixed.
I have been getting the error "The request was canceled due to the configured HttpClient.Timeout of 100" while it is actively downloading data.
I can verify the download is active as the task manager shows Pocket Updater is using 1-4Mbps of network traffic. It requires me to run the updater over and over again until I get a data rate that can complete the download before timing out.
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.