ladislav-zezula / casclib Goto Github PK
View Code? Open in Web Editor NEWAn open-source implementation of library for reading CASC storages from Blizzard games since 2014
License: MIT License
An open-source implementation of library for reading CASC storages from Blizzard games since 2014
License: MIT License
Error 2 error C1083: Cannot open source file: 'src\common\Map.cpp': No such file or directory ..\CascLib\c1xx CascLib_test
Error 1 error C1083: Cannot open include file: 'common/Map.h': No such file or directory ..\casclib\src\casccommon.h 28 1 CascLib_test
Error 3 error C1083: Cannot open include file: 'common/Map.h': No such file or directory ..\casclib\src\casccommon.h 28 1 CascLib_test
Error 4 error C1083: Cannot open include file: 'common/Map.h': No such file or directory ..\casclib\src\casccommon.h 28 1 CascLib_test
Error 5 error C1083: Cannot open include file: 'common/Map.h': No such file or directory ..\casclib\src\casccommon.h 28 1 CascLib_test
Error 6 error C1083: Cannot open include file: 'common/Map.h': No such file or directory ..\casclib\src\casccommon.h 28 1 CascLib_test
Error 7 error C1083: Cannot open include file: 'common/Map.h': No such file or directory ..\casclib\src\casccommon.h 28 1 CascLib_test
Error 8 error C1083: Cannot open include file: 'common/Map.h': No such file or directory ..casclib\src\casccommon.h 28 1 CascLib_test
Error 9 error C1083: Cannot open include file: 'common/Map.h': No such file or directory ..\casclib\src\casccommon.h 28 1 CascLib_test
Error 10 error C1083: Cannot open include file: 'common/Map.h': No such file or directory ..\casclib\src\casccommon.h 28 1 CascLib_test
Error 11 error C1083: Cannot open include file: 'common/Map.h': No such file or directory ..\casclib\src\casccommon.h 28 1 CascLib_test
Error 12 error C1083: Cannot open include file: 'common/Map.h': No such file or directory ..\casclib\src\casccommon.h 28 1 CascLib_test
Error 13 error C1083: Cannot open include file: 'common/Map.h': No such file or directory ..\casclib\src\casccommon.h 28 1 CascLib_test
Error 14 error C1083: Cannot open include file: 'common/Map.h': No such file or directory ..\casclib\src\casccommon.h 28 1 CascLib_test
Error 15 error C1083: Cannot open include file: 'common/Map.h': No such file or directory ..\casclib\src\casccommon.h 28 1 CascLib_test
16 IntelliSense: cannot open source file "common/Map.h" ..\CascLib\src\CascCommon.h 28 1 CascLib
17 IntelliSense: identifier "PCASC_MAP" is undefined ..\CascLib\src\CascCommon.h 234 5 CascLib
I have compiled Casc lib and i dont know what to do yet.
please explain it
This is an update for some missing encryption keys. One of them is needed to view the new firecat mount.
This patch was made against the version of CascLib that we use in WoW Modelviewer but I believe it's up-to-date and so should work here as well.
Hi.
Here is some problem with Russian client.
http://s016.radikal.ru/i335/1411/14/fb2516988e80.jpg
It cant open storage, but PATH is true.
CASCViewer ver. 1.0.0.7
The same problem with Beta client, and MAP Extractor in Trinity Core 6.x
SCBW after 1.18 uses CASCs and MPQs for storing game files. Will there be CASClib support for SCBW in the future?
Whenever I try to extract these maps, I get error 6002. Is this fixable?
hello,
i'm using CascLib directly for the first time, in Heroes of the Storm (25.0).
I've just been running the test program which recompiles all the lib source files in its own exe. I adapted only the main
to access the data source. The storage opens correctly, single files can be read, enumerate works, great !
But, if i try to change the mask in CascFindFirstFile
nothing changes. It was *
but if i change it for example to *.xml
or anything else, it doesn't seem to have any effect, always returning all the files. Is that a bug or did i miss something and misunderstood this szMask
parameter?
The lib is not documented so it's very hard to understand what is expected there, but i suppose it's a file token, accepting wildcards like "*" or "?" combined with filenames and/or path specification. I don't know if it handles a internal directory as well (i would expect it to return all the files in that directory).
Thanks for help.
When I try to extract I get the following error message: http://i.imgur.com/3ilR3jq.png
That only happens when I try to extract files from the "unknown" folder, the other folders/files can be extracted.
...In fact, it does not work at all.
After I modified WowHandler_GetKey
to contain these lines
if (pFileEntry)
printf("%s - FileDataID %d\n", szFileName, pFileEntry->FileDataId);
Using sample code
HANDLE CascStorage;
CascOpenStorage(storage_dir.string().c_str(), CASC_LOCALE_ENUS, &CascStorage);
HANDLE f;
if (CascOpenFile(CascStorage, R"(World\Expansion04\Doodads\Pandaren\Stove\PA_stove_open_01.M2)", CASC_LOCALE_ENUS, 0, &f))
CascCloseFile(f);
if (CascOpenFile(CascStorage, "File00080A12", CASC_LOCALE_ENUS, 0, &f))
CascCloseFile(f);
I get the following output
World\Expansion04\Doodads\Pandaren\Stove\PA_stove_open_01.M2 - FileDataID 147494982
with no entry for File00080A12
- according to FileData.dbc the id of World\Expansion04\Doodads\Pandaren\Stove\PA_stove_open_01.M2
is 526866 (00080A12 in hex), not 147494982
It looks like calculating FileDataId when opening the archive is doing something different than the wow client
Tested on fe97d8c, using both 6.2.4.21742 and 7.0.3.22248 clients (7.0.3 client had even different FileDataId for the file mentioned above)
This is even more important in 7.0.3 since FileData and FileDataComplete are both gone and files must be opened by their FileDataId.
Overwatch root file currently has lines like this:
#MD5|CHUNK_ID|PRIORITY|MPRIORITY|FILENAME|INSTALLPATH
993CA6773668FC9E04C167BB9A6CA8FF|0|0|255|PtrClient/Overwatch.exe|Overwatch.exe
Which causes the debug version to fail an assertion, and the release version (including CascView) only sees one file named '0'.
Hey guys,
I have been troubleshooting CascLib for a while now and only recently realized that my problem was that CascLib requires a read-write filesystem. I cannot use it when it does not have write permission to the SC2 files. Here is more information about the issue:
I understand CascLib may be able to add files at some point, but for a simple read operation, it shouldn't try opening files with write access.
Hi Ladislav,
several people experience this error with wow model viewer (that now uses your lib).
After investigation yesterday on a Data/ folder that have the issue, I found the root cause, but I'm not sure what is wanted behavior.
Here is the call stack that conduct to issue:
CascOpenStorage -> LoadRootFile -> LoadRootFileToMemory -> CascReadFile -> FileStream_Read
in folders that have this issue, we read less size, because we reach end of file.
For instance, frame->Compressed = 20077362
We manage to read : (dwBytesRead in BaseFile_Read) 20077324
as dwBytesToRead != dwBytesRead , BaseFile_Read returns false, and cascade error, resulting in not readable folder.
A simple workaround is checking GetLastError() != ERROR_HANDLE_EOF together with !FileStream_Read(...), in same if. This lets folder being read in such a case (and fail in case of real failure)
Maybe a better solution would be to move BaseFile_Read return value from bool to DWORD,return 0 in case of real failure, and BwBytesRead otherwise ?
I had to set the -D versions of the project to link to DLLs. Also, I get unresolved externals when building:
1>------ Build started: Project: CascLib, Configuration: DebugAD Win32 ------
(snip)
1> Generating Code...
1>CascOpenStorage.obj : error LNK2019: unresolved external symbol "int __cdecl Array_Create_(struct _DYNAMIC_ARRAY *,unsigned int,unsigned int)" (?Array_Create_@@YAHPAU_DYNAMIC_ARRAY@@II@Z) referenced in function _CascOpenStorage@12
1>CascRootFile_Diablo3.obj : error LNK2001: unresolved external symbol "int __cdecl Array_Create_(struct _DYNAMIC_ARRAY *,unsigned int,unsigned int)" (?Array_Create_@@YAHPAU_DYNAMIC_ARRAY@@II@Z)
1>CascRootFile_WoW6.obj : error LNK2001: unresolved external symbol "int __cdecl Array_Create_(struct _DYNAMIC_ARRAY *,unsigned int,unsigned int)" (?Array_Create_@@YAHPAU_DYNAMIC_ARRAY@@II@Z)
1>CascOpenStorage.obj : error LNK2019: unresolved external symbol "void * __cdecl Array_Insert(struct _DYNAMIC_ARRAY *,void const *,unsigned int)" (?Array_Insert@@YAPAXPAU_DYNAMIC_ARRAY@@PBXI@Z) referenced in function "int __cdecl InsertExtraFile(struct _TCascStorage *,char const *,struct _QUERY_KEY *)" (?InsertExtraFile@@YAHPAU_TCascStorage@@PBDPAU_QUERY_KEY@@@Z)
1>CascRootFile_Diablo3.obj : error LNK2001: unresolved external symbol "void * __cdecl Array_Insert(struct _DYNAMIC_ARRAY *,void const *,unsigned int)" (?Array_Insert@@YAPAXPAU_DYNAMIC_ARRAY@@PBXI@Z)
1>CascRootFile_WoW6.obj : error LNK2001: unresolved external symbol "void * __cdecl Array_Insert(struct _DYNAMIC_ARRAY *,void const *,unsigned int)" (?Array_Insert@@YAPAXPAU_DYNAMIC_ARRAY@@PBXI@Z)
1>CascOpenStorage.obj : error LNK2019: unresolved external symbol "void __cdecl Array_Free(struct _DYNAMIC_ARRAY *)" (?Array_Free@@YAXPAU_DYNAMIC_ARRAY@@@Z) referenced in function "struct _TCascStorage * __cdecl FreeCascStorage(struct _TCascStorage *)" (?FreeCascStorage@@YAPAU_TCascStorage@@PAU1@@Z)
1>CascRootFile_Diablo3.obj : error LNK2001: unresolved external symbol "void __cdecl Array_Free(struct _DYNAMIC_ARRAY *)" (?Array_Free@@YAXPAU_DYNAMIC_ARRAY@@@Z)
1>CascRootFile_WoW6.obj : error LNK2001: unresolved external symbol "void __cdecl Array_Free(struct _DYNAMIC_ARRAY *)" (?Array_Free@@YAXPAU_DYNAMIC_ARRAY@@@Z)
1>CascOpenStorage.obj : error LNK2019: unresolved external symbol "int __cdecl RootHandler_CreateOverwatch(struct _TCascStorage *,unsigned char *,unsigned long)" (?RootHandler_CreateOverwatch@@YAHPAU_TCascStorage@@PAEK@Z) referenced in function "int __cdecl LoadRootFile(struct _TCascStorage *,unsigned long)" (?LoadRootFile@@YAHPAU_TCascStorage@@K@Z)
1>CascReadFile.obj : error LNK2019: unresolved external symbol "int __cdecl CascDecrypt(unsigned char *,unsigned long *,unsigned char *,unsigned long,unsigned long)" (?CascDecrypt@@YAHPAEPAK0KK@Z) referenced in function "int __cdecl ProcessFileFrame(unsigned char *,unsigned long,unsigned char *,unsigned long,unsigned long)" (?ProcessFileFrame@@YAHPAEK0KK@Z)
1>CascReadFile.obj : error LNK2019: unresolved external symbol "int __cdecl CascDirectCopy(unsigned char *,unsigned long *,unsigned char *,unsigned long)" (?CascDirectCopy@@YAHPAEPAK0K@Z) referenced in function "int __cdecl ProcessFileFrame(unsigned char *,unsigned long,unsigned char *,unsigned long,unsigned long)" (?ProcessFileFrame@@YAHPAEK0KK@Z)
1>CascRootFile_Diablo3.obj : error LNK2019: unresolved external symbol "void * __cdecl Array_ItemAt(struct _DYNAMIC_ARRAY *,unsigned int)" (?Array_ItemAt@@YAPAXPAU_DYNAMIC_ARRAY@@I@Z) referenced in function "int __cdecl RootHandler_CreateDiablo3(struct _TCascStorage *,unsigned char *,unsigned long)" (?RootHandler_CreateDiablo3@@YAHPAU_TCascStorage@@PAEK@Z)
1>CascRootFile_Diablo3.obj : error LNK2019: unresolved external symbol "unsigned int __cdecl Array_IndexOf(struct _DYNAMIC_ARRAY *,void const *)" (?Array_IndexOf@@YAIPAU_DYNAMIC_ARRAY@@PBX@Z) referenced in function "int __cdecl InsertFileEntry(struct TRootHandler_Diablo3 *,struct _ENCODING_KEY &,char const *,unsigned int)" (?InsertFileEntry@@YAHPAUTRootHandler_Diablo3@@AAU_ENCODING_KEY@@PBDI@Z)
1>./bin/CascLib/Win32/DebugAD\CascLibDAD.dll : fatal error LNK1120: 8 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Looks like overall what is missing is:
Hi Ladislav,
for WoW Model Viewer, I have just made an update in CascLib locally in order to expose a new function (CascGetFileId), because I needed it for my software.
Commit is here on my side if you want to look at it : https://bitbucket.org/wowmodelviewer/wowmodelviewer/commits/883670c46e2dfa4bea9a150deccaca263fac420d
Would you be interested in a pull request here to officialise it or do you think it is useless outside of my own need ?
Can't open Diablo PTR CASC
it not have list file
👍
Hey Zezula,
You've done a great job. Can you help me debug an issue I'm having? I am getting an assertion error for an SC2 CASC archive. I am running Heart of the Swarm and the SC2Data folder is 20 GB.
Here is the error I am getting:
CASCExtractor -o wat "/usr/share/sc2/SC2Data/" "Assets/Buildings/Terran/Barracks/Barracks.m3"
Opening '/usr/share/sc2/SC2Data'...
CASCExtractor: /compile/CascLib/src/CascBuildCfg.cpp:493: int GetGameType(TCascStorage*, LPBYTE, LPBYTE): Assertion `false' failed.
Aborted
I read in the source that it is looping through a list of known games and apparently my SC2 is not being identified as SC2. Can you tell me which file to look into to determine which game IDs it is then? Can I send you this file?
I'm getting an error when opening the last PTR build in debug mode:
Assertion failed in CascRootFile_Diablo3.cpp
line 621:
assert(dwFileIndex < dwFileIndexes);
dwFileIndex
and dwFileIndexes
are both 451223.
I'm having an issue compiling the casclib on Linux, any help?
I'm trying to use it with:
https://github.com/maxemann96/ghostpp
Thanks in advance!
Hi Ladislav,
just tried to compile casclib with mingw and cmake, and I needed to update CMakeLists.txt to suceed:
After that, everything goes well (not tried to use it yet, but compilation succeed)
I don't know which update method you prefer, do you want me to submit a patch, or do you prefer doing updates yourself ?
Regards.
Hi,
while transcribing this, I recognized an unaccessed loop variable that most likely should be accessed:
https://github.com/ladislav-zezula/CascLib/blob/master/src/CascOpenStorage.cpp#L456-L465
Just thought I'd leave that here. I'm unsure what the correct fix is so no PR, sorry.
If I try to read the WoW live or Beta game databases with the latest CASCView I get the error:
"Failed to open game storage . The file or directory is corrupted and unreadable."
It gives this error on both game versions and I've ensured that the Battle.net app is properly closed and no Agent processes are running. The game folders also open in WMV so they don't seem corrupted.
Are you seeing this error too? I don't have an older version of CascView on hand to check if it's a problem with the latest version.
Hello, can i open new storage handle if i have started game? Maybe i need to put some flags or something else?
Getting a compile error with the latest commit. CascTextFiles.cpp appears to be missing from the repository. Thanks for your time on this project..
Hi Ladislav, hope you're doing well.
I am currently working on switching WoW Model Viewer to unicode build (it is still using multi byte for years, due to old code base) and I was about to push a pull request to allow using an argument when calling CMake to force unicode build for casclib.
Do you think it is fine to alsways force it for windows builds (several libraries are already doing it) or do you prefer keeping it as optional ?
If anyone is using casclib under windows, your feedbacks are welcome as well.
I'm a little confused here, please bear with me.
Or perhaps I'm misunderstanding it fully.
My use case: I'm on OSX. I would like to extract files from Heroes of the Storm. The current way I have to do this is open the files in a Windows partition, use CascView, and get the files needed. Then do all my magic on OSX (I'm using Kanma's CASCExtractor).
The part where I'm confused, is I understand that CASCExtractor may not have a function for listing files (as it's not your program), however, where is the function that can list files (the index?)?
CascView.exe doesn't seem to have the source, but it HAS be listing an index or at least iterating through all files. A new function in CASCExtractor can easily be written to support that via CascLib. I'm just not versed enough in CPP to do so. Your MPQ examples on the site were useful enough for me to use, but I'm struggling with the CASC functions.
You mention that Heroes CASCs hold the file names, my goal would be to update Kanma's CASCExtractor to read that if I can figure out how to find the function in CascLib. :/
Hi Ladislav,
trying to update WMV to support 8.1, I am currently facing this issue : when I try to read Item.db2, creature.db2 or itemsparse.db2, I get a 6002 error (ENCRYPTED_FILE) when calling CascReadFile, even for reading the first 4 bits, to get the "magic" number.
According to recent WDC3 changes, some sections of the files are probably encrypted, and we don't know the key yet according to wowdev.wiki
However, I am wondering if we are supposed to be stuck because file is partially encrypted with this key, or if we should be able to read other sections if the key is not the same.
I don't know how to easily dump key used overall for the file, let me know how to do it if you need more info.
Note : using CASCView produces the same result, we can't preview these 3 files in it.
you wrote mpqedit, but there is only cascview now
is there a way to mod the data directly?
can't open overwatch casc
to force install overwatch
battle.net.exe --switcherall --install --game=prometheus --installlocale=enUS --installregion=US --torrentinstall
Casc Extractor was never actually able to get anything out of Overwatch, and since a recent update, it can't even open the game. Just reporting, Ninja Ripper no longer works for Overwatch :(
I extract that .xxx files. Some of them are text、xml、dds、ogg which can be recognized, others are totally known.
Is it a bug or I used in a wrong way?
Thanks.
Hi,
i get a strange issue with some files in WoW folder using casclib (within WoW Model Viewer). A user notified me that "AllianceMurloc" and HordeMurloc models are not displayed at all.
In a regular WoW install (7.1.0.22996), checking with code outputs, CascReadFile fails on these files :
I got error 6002, which means "ERROR_FILE_ENCRYPTED" (according to https://msdn.microsoft.com/en-us/library/windows/desktop/ms681389(v=vs.85).aspx)
Do you have any idea from where this issue could come ?
Let me know if you need anything to investigate
A bisect revealed 628ea3c introduced a bug that breaks the build system:
-- Compile dynamically linked library
CMake Error at CMakeLists.txt:135 (install):
install TARGETS given target "casc_static" which does not exist in this
directory.
Reproduce simply by running cmake
.
An config option should not be used to determine whether an install target is even present in the build system.
On my Windows machine, games are located as such:
Games are fully patched.
Even the comments of InitializeCascDirectories
says "The root directory is the one where .build.info
is", but CheckGameDirectory()
looks for .agent.db
. If I modify InitializeCascDirectories
to check the parent of the current directory for .build.info
instead, it works.
May be I am doing something wrong, but Casc Viewer does not opening everything which described in the list file. For example minimaps, there is no folder in the program, but files of Minimaps directory written in list file: World\Minimaps\WMO\Dungeon\Azjol_Uppercity\Azjol_Uppercity_001_02_05.blp
During opening storage there are no errors.
CASC Viewer 1.0.0.11
WoW enUS 6.0.3.19342
hello,
just a minor issue with the VS15 solution. The DLL and test projects are missing in the solution package because it references the .vcxproj
for all projects but only the .vcproj
exist for those last 2 projects. The main lib project is fine. Here are the concerned files:
As i use VS17 i prefer not to change these files so i let someone having VS15 correct them to keep a compatible version in the git repo. Btw the upgrade VS15->VS17 is fine and smoother than VS08->VS17.
Other minor point, when building the CascLib_Test i had this linker error: module unsafe for SAFESEH image.
. I fixed it like this:
CascLib_Test properties > linker > Image Has Safe Exception Handler -> No (/SAFESEH:NO)
Maybe this should be set in the CascLib_test project as well.
When this is fixed in the repo, i will update my local stuff and i can make a pull request for the VS17 files if you are interested.
you can see in this screen shot.
https://i.gyazo.com/b4677430911e2f0a89788ed9369b5c3d.png
They are totally inaccessible, and coincidentally they contain everything that actually matters.
Can anyone explain me how to compile CascLib? i dont know how to use VisulaStudio.
Is someone willed to work an Java version of the CascLib?
Hi Ladislav,
currently evrybody is stuck with 7.3 WoW version (PTR), casclib ending up with a crash
Here is the crash stack
0 "WowHandler_Insert" ( "d:\development\wowmodelviewer\src\casclib\src\cascrootfile_wow6.cpp" - 375 )
1 "InsertExtraFile" ( "d:\development\wowmodelviewer\src\casclib\src\cascopenstorage.cpp" - 234 )
2 "LoadRootFile" ( "d:\development\wowmodelviewer\src\casclib\src\cascopenstorage.cpp" - 927 )
3 "CascOpenStorage" ( "d:\development\wowmodelviewer\src\casclib\src\cascopenstorage.cpp" - 1075 )
4 "CASCFolder::setLocale" ( "d:\development\wowmodelviewer\src\games\wow\cascfolder.cpp" - 130 )
Before digging into it, if you have time, you will be more efficien than me :-)
Impossible to open a storage with CASC lib due to this error when opening Wow folder on Legion 21737+
Assertion failed: false, file F:\heimcore\core\dep\CascLib\src\CascOpenStorage.cpp, line 530
You said in a earlier issue that the folders in overwatch which are currently inaccessible (coincidentally the folders containing everything cool) are accessible to you, then you said a version number newer than that of the current download. I'm not sure if that's available through github, I don't know how to compile things or whatever. I'm sorry to bug you, but I'm just wondering, because I just really want to extract the models from the game for animations.
Sorry to bug you, I've just been checking every day since the game came out (I'm in beta) and I really really want to extract things. Also, happy thanksgiving!
src/zlib/trees.c includes deflate.h, but that file cannot be found.
Maybe removing trees.c is the right way to go about this.
CascView just crash when atempting to read game data, it worked last patch :(
I've been trying to use this.
http://www.zezula.net/en/casc/main.html
And I get this result...
https://i.gyazo.com/8f5a734880191c90b71210bca80d1404.png
Everything but unknown is impossible to open, and has apparently no file type.
https://i.gyazo.com/0482caf1ff3cd124bcd20d148e90823a.png
Everything inside the unknown folder is also useless.
https://i.gyazo.com/8ebe38058bb82fccc1bae3457e138499.png
So am I using the wrong tool? Is that the wrong download? How do I get the one you say is working? I'm confused.
1c9a16f breaks linking against a shared library (which only worked by declaring GetLastError/SetLastError in the consuming program.) Without the proper public declaration linkers can no longer find the right symbols.
I downloaded the latest version of CascView and noticed that the number of unknown files had dropped a lot over the version I'd been using previously. There's a number of .blp images that we don't know the names for yet and some are now missing, despite the fact we still haven't guessed their names.
I guess this happened around the same time you renamed the unknown folder from "unknown" to "CONTENT_KEY"?
Is there somewhere I can download an older version of CascView in the meantime? I overwrote the one i had.
Thanks!
With the 1.30 update (now in PTR) Warcraft 3 has started using CASC storage for their game data files (map remain MPQs for now). Having support for opening Warcraft 3 game data would allow me to support 1.30 too.
I've been trying to track down a problem with ToT master in CascLib. If I attempt to extract World\Maps\Azeroth\Azeroth_29_28.adt, ToT produces a file that is 248725 bytes long, previous checkouts produced a file that is 314252 bytes. I noticed that the shorter file is missing several maptile's worth of data.
I bisected the problem down to the following commit.
[carbon: (bisect/bad~1) CascLib]$ git bisect bad
47bfd4f9b0bcd1cd8d3e3169cc1f68994414e8b6 is the first bad commit
commit 47bfd4f9b0bcd1cd8d3e3169cc1f68994414e8b6
Author: unknown <E:\Ladik\Mail>
Date: Tue Nov 11 15:10:55 2014 +0100
+ Fixed file size handling for ENCODING and ROOT files
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.