jnavila / plotkicadsch Goto Github PK
View Code? Open in Web Editor NEWThis project aims at being able to export Kicad v5 Sch files to structured picture files
Home Page: https://jnavila.github.io/plotkicadsch/
License: Other
This project aims at being able to export Kicad v5 Sch files to structured picture files
Home Page: https://jnavila.github.io/plotkicadsch/
License: Other
I cant use it.
When I try to run, I get this message:
•100% ➜ plotgitsch
use compare (ImageMagick) between bitmaps between Git rev HEAD and file system .
•100% ➜ plotgitsch --version
v0.3.0
Any chance to use a transparent background?
@jnavila, what if you add some command line flags to control the output better?
Is something hard to do?
For example, something to control:
I installed using opam on Ubuntu 19.04, if it matters. It appears that the relevant scanf
chokes on an escaped quote mark. The offending character is \"
which represents inches in my text. If I remove the quote mark, everything works. With the value as it is, I get this error:
could not match Component F (F 1 "1/8" SJ1-3544" H 10350 800 50 0000 R CNN): scanf: bad input at char number 11: character 'S' is not a decimal digit
The relevant component in my .sch is this:
$Comp
L dish-schematic-components:SJ1-3544 J1
U 1 1 5C87F705
P 10050 1200
F 0 "J1" H 10100 700 50 0000 R CNN
F 1 "1/8\" SJ1-3544" H 10350 800 50 0000 R CNN
F 2 "dish-components:CUI_SJ1-3544" H 10050 1200 50 0001 C CNN
F 3 "https://www.cui.com/product/resource/sj1-354x.pdf" H 10050 1200 50 0001 C CNN
F 4 "CP1-3544-ND" H 10050 1200 50 0001 C CNN "DigiKey"
1 10050 1200
-1 0 0 1
$EndComp
I have managed to compile this on macOS although I have had a few problems. :(
The initial compile failed with a git.unix
dependency issue although I have git-unix
installed and updated. I changed git.unix
to git-unix
in the _oasis file and I could then compile and install OK. However, I am now getting Fatal error: exception Plotgitsch.InternalGitError("path not found: /")
when I run plotgitsch
from within a valid git checkout containing a Kicad project .pro & schematic .sch with a committed revision history.
Any advice?
Hey @jnavila do you have an idea why these small missmatches happen?
Some symbols are not pretty the same to what we see in the real schematic
Other features are not equal too
Real schematic. I feel this one could be improved a little bit, but I have not clue.
Gitplotsch output
The whole page, for instance
Generated page
Real text displacement. Ah maybe this one is due to the font mismatch and the text anchor is
Gitplotsch output
Don't get me wrong, pltogitsch is pretty good. I am just asking to understand why these items are slightly different.
inspire from https://github.com/smolkaj/ocaml-open
Hi!
First of all thanks for the windows binaries. I appreciate the effort.
I can not get the program to work. Even when I specify correct -cache.lib file, I get the Component_Not_Found
error. The error message says it is looking for symbol in library:symbol
, but under 5.0.1 in cache file, the symbol is stored as library_symbol
.
I know that the cache file format changed before V5, and I think also once V5 was already released, but I am not certain. Could this be an issue?
The version on opam does not allow once to specify --lib
Seems like there may have been a file format change on kicad 5.1.0?
I committed a blank schematic, Added a resistor, His save then ran
plotgitsch -ifirefox
and this is the result.
internal diff and show with firefox between Git rev HEAD and file system .
Exception (Invalid_argument "Negative position: -1")
seems to be tied to the part orientation.
The option to keep svg keeps only the diff. Is it possible to keep the 2 original versions too?
Hey jnavila, do you have any idea on how to fix this?
I am trying to install plotkicadsch on a new computer with ubuntu 20.10
I appreciate any help, even it is not related to your repo. This Opam thing always gives me headaches.
Do you know any other way to install this easely? Without having to build anything?
D:\Mitja\Plate\kicad_playground\schematic>plotgitsch -k
use compare (ImageMagick) between bitmaps between Git rev HEAD and file system .
Exception (Invalid_argument "index out of bounds")
'hrowing away line 'DRAW
'hrowing away line 'ENDDRAW
'hrowing away line 'ENDDEF
'hrowing away line '#
'hrowing away line '# Device_LED
'hrowing away line '#
'hrowing away line 'DEF Device_LED D 0 40 N N 1 F N
'hrowing away line 'DRAW
'hrowing away line 'ENDDRAW
'hrowing away line 'ENDDEF
'hrowing away line '#
'hrowing away line '# Device_R
'hrowing away line '#
'hrowing away line 'DEF Device_R R 0 0 N Y 1 F N
'hrowing away line 'DRAW
'hrowing away line 'ENDDRAW
'hrowing away line 'ENDDEF
'hrowing away line '#
'hrowing away line '# Timer_LM555
'hrowing away line '#
'hrowing away line 'DEF Timer_LM555 U 0 20 Y Y 1 F N
'hrowing away line 'DRAW
'hrowing away line 'ENDDRAW
'hrowing away line 'ENDDEF
'hrowing away line '#
'hrowing away line '# power_+5V
'hrowing away line '#
'hrowing away line 'DEF power_+5V #PWR 0 0 Y Y 1 F P
'hrowing away line 'DRAW
'hrowing away line 'ENDDRAW
'hrowing away line 'ENDDEF
'hrowing away line '#
'hrowing away line '# power_GND
'hrowing away line '#
'hrowing away line 'DEF power_GND #PWR 0 0 Y Y 1 F P
'hrowing away line 'DRAW
'hrowing away line 'ENDDRAW
'hrowing away line 'ENDDEF
'hrowing away line '#
'hrowing away line '#End Library
D:\Mitja\Plate\kicad_playground\schematic>
Originally posted by @MitjaNemec in #22 (comment)
I got this issue, trying to get the help as described in your README.md
➜ plotgitsch --help
Fatal error: exception Plotgitsch.InternalGitError("cannot parse rev --help")
Installed with opam, version
➜ opam install plotkicadsch
[NOTE] Package plotkicadsch is already installed (current version is 0.1.4).
I am running the upgraded master, but I can't make it work again.
Probably I am doing something wrong again.
•100% ➜ plotgitsch -l homebase-cache.lib -ifirefox HEAD HEAD^1
plotgitsch: unknown option `-l'.
Usage: plotgitsch [OPTION]... [FROM_REF] [TO_REF]
Try `plotgitsch --help' for more information.
I am seeing this sometimes.
Exception Kicadsch__Kicadlib.MakePainter(P).Component_Not_Found("Connector:Conn_01x03_Male")
Then you have this in plotgitsch
documentation.
This is something that I already do. But I have these issues
So, I am thinking here... Is it possible to add a flag to plotgitsch
to plot the board anyway, even with missing components?
Components could be replaced by a standard object that indicates the missing part, or maybe they could be ignored by having an empty area there. Sometimes it is better to check 90% of the changes instead of none.
Do you know if something like this is feasible?
Is it possible to add a short version of these most important flags --help
and --verbose
(-v
-h
)?
Hi,
Looks like eschema is switching to a new file format. Any chance you can add support for it. I would help, but ocaml is way too foreign for me.
Hey @jnavila I know you are super busy, but I just want to have your opinion on this since you understands Opam and your project and I don't.
I changed gitplotshich
to generate and keep the original .svg files even if commits don't have any difference. This is just one or two lines of code.
The issue I am facing is that the git repository is changing the branch automatically for some reason. It is always moving to the master' branch. In one project it dosn't have
masterit onoly has
main` and the other project I am working on a different branch.
So, since I was not able to track where the issue is. Could you check this code, to see if I am doing something that is not right?
My idea was just to remove that if on line 141.
The comparison is here if you need more space to check.
master...leoheck:master
@jnavila do you have any tool to compare things on the layout side?
Only the final image has this transparent bg.
The default viewer shows this composition of images with the diff image in the center.
Using my own img-diff
here to store temporary images does not have the new background, unfortunattely =/
➜ plotgitsch HEAD~5 HEAD~4 --colors=FF0000:00FF00:000000:FFFFFF80
use compare (ImageMagick) between bitmaps between Git rev HEAD~5 and Git rev HEAD~4
Exporting...
sch1-board.svg (41c834)
sch2-board.svg (4f9c66)
Could you propagate this to the source image?
@jnavila did you ever seen something like this?
What this exception means?
➜ plotgitsch -m -l ./newTest-cache.lib 9646e03 2060795
use compare (ImageMagick) between bitmaps between Git rev 9646e03 and Git rev 2060795
Exception (Invalid_argument "index out of bounds")
'hrowing away line 'DRAW
'hrowing away line 'ENDDRAW
'hrowing away line 'ENDDEF
'hrowing away line '#
'hrowing away line '#End Library
'hrowing away line 'DRAW
'hrowing away line 'ENDDRAW
'hrowing away line 'ENDDEF
'hrowing away line '#
'hrowing away line '#End Library
It comes from this project here https://github.com/jorlee99/newTest
I am playing with the new changes you made.
I am seeing this.
One of the commits shows this "Git rev HEAD"
The second one does not have any version info. Is this intentional?
Maybe it is good to have it in the second file too.
However this one has this file system .
which may not be the thing you wanted, I am not sure.
I have previously managed to install with opam install plotkicadsch
Updating to any revisions more recent than [dc287e4]
are failing with the following message. I have tried an opam update
and opam upgrade
but without success. I have reverted back to [2e6c1eb] which is fine.
The following dependencies couldn't be met:
- plotkicadsch -> kicadsch
Your request can't be satisfied:
- No package named kicadsch found.
No solution found, exiting
Does it have any flag to generate images only? I am asking this to use with CI where I can't launch any image visualization tool
Hey @jnavila,
This is an excellent tool, and I appreciate your publishing it. I have gotten the .exe to work in git bash on my windows machine, but I use GitLab and want to use this tool in my CICD pipelines.
To do that, I'm trying to build a Docker image that has plotkicadsch installed, but I have been unable to install it using opam
. Here's my Dockerfile:
FROM ocaml/opam2
# need m4 to build config-m4
RUN sudo apt install m4 -y
# same results if just using 4.06, but 4.06.0 does not exist in base image
RUN opam switch create 4.06.0
RUN eval `opam config env`
RUN opam install plotkicadsch
Building fails with this error message:
[ERROR] The compilation of plotkicadsch failed at "/home/opam/.opam/4.06.0/bin/dune build -p plotkicadsch -j 71".
#=== ERROR while compiling plotkicadsch.0.5.1 =================================#
# context 2.0.5 | linux/x86_64 | ocaml-base-compiler.4.06.0 | git+file:///home/opam/opam-repository
# path ~/.opam/4.06.0/.opam-switch/build/plotkicadsch.0.5.1
# command ~/.opam/4.06.0/bin/dune build -p plotkicadsch -j 71
# exit-code 1
# env-file ~/.opam/log/plotkicadsch-6-6e8724.env
# output-file ~/.opam/log/plotkicadsch-6-6e8724.out
### output ###
# ocamlopt plotkicadsch/src/plotgitsch.exe (exit 2)
# (cd _build/default && /home/opam/.opam/4.06.0/bin/ocamlopt.opt -w -40 -w -3 -safe-string -g -o plotkicadsch/src/plotgitsch.exe -I /home/opam/.opam/4.06.0/lib/angstrom -I /home/opam/.opam/4.06.0/lib/astring -I /home/opam/.opam/4.06.0/lib/base -I /home/opam/.opam/4.06.0/lib/base/caml -I /home/opam/.opam/4.06.0/lib/base/md5 -I /home/opam/.opam/4.06.0/lib/base/shadow_stdlib -I /home/opam/.opam/4.[...]
# File "none", line 1:
# Error: No implementations provided for the following modules:
# Digestif referenced from /home/opam/.opam/4.06.0/lib/git-unix/git_unix.cmxa(Git_unix)
I'm not familiar with ocaml or opam, so I will try to clone the github repository and install from there instead of trying to install from opam. If that works I'll update this issue.
In the meantime, if you know what I'm doing wrong, or if there's some dependency missing from the base image, let me know.
Hey, @jnavila it is me again.
Quick question. I have noticed something strange when having nested projects.
First of all, I am using a custom git-diff
that keeps all svg files even if they don't have any difference.
I have some duplicated files as you can see.. just to track my changes.
✦ ➜ cat ../plotkicadsch_lheck/plotkicadsch/src/git-imgdiff
#!/bin/bash
# New files (rename for not overriding multiple schematic pages)
# Remove 6 unknown digits/hashs from the filename
new1=$(echo $1 | sed "s|/tmp/from_\(.*\)\([0-9a-f]\{6\}\).svg|sch1-\1.svg|g")
new2=$(echo $2 | sed "s|/tmp/to_\(.*\)\([0-9a-f]\{6\}\).svg|sch2-\1.svg|g")
hash1=$(echo $1 | sed "s|/tmp/from_.*\([0-9a-f]\{6\}\).svg|\1|g")
hash2=$(echo $2 | sed "s|/tmp/to_.*\([0-9a-f]\{6\}\).svg|\1|g")
# Almost original filename, remove /tmp string and keep the random number
orig1=$(echo $1 | sed "s|/tmp/from_\(.*\)\([0-9a-f]\{6\}\).svg|sch1-\1-\2.svg|g")
orig2=$(echo $2 | sed "s|/tmp/to_\(.*\)\([0-9a-f]\{6\}\).svg|sch2-\1-\2.svg|g")
echo "Schematic Page: $orig1 -> $new1 (${hash1})"
echo "Schematic Page: $orig2 -> $new2 (${hash2})"
cp -f "$1" "$new1"
cp -f "$2" "$new2"
# Keep originals
mv -f "$1" "$orig1"
mv -f "$2" "$orig2"
echo
I have multiples projects inside the repository. Each project has multiples schematic sheets.
For instance, I have something like this.
repo
- proj1
- board.sch
- page1.sch
- proj2
- board.sch
- page2.sch
- proj3
- board.sch
- page2.sch
So, everything is working pretty fine since most of the time schematic sheets do not have the same name, except for the main schematic sheet that is called board.sch
on all of the projects.
This is the current output I have with my git-diff
script
plotgitsch -l main-board/board-cache.lib -c FF0000:008FFF:FFFFFF:222222 a4da48d 56b5c9a #&> /dev/null
Use compare (ImageMagick) between bitmaps between Git rev a4da48d and Git rev 56b5c9a
Schematic Page: sch1-board-1ae151.svg -> sch1-board.svg (1ae151)
Schematic Page: sch2-board-30817f.svg -> sch2-board.svg (30817f)
Schematic Page: sch1-board-0b26c3.svg -> sch1-board.svg (0b26c3)
Schematic Page: sch2-board-5b2755.svg -> sch2-board.svg (5b2755)
Schematic Page: sch1-board-c002f3.svg -> sch1-board.svg (c002f3)
Schematic Page: sch2-board-5d8be5.svg -> sch2-board.svg (5d8be5)
Schematic Page: sch1-board-59c898.svg -> sch1-board.svg (59c898)
Schematic Page: sch2-board-3446cb.svg -> sch2-board.svg (3446cb)
Schematic Page: sch1-power_supply-7f4b49.svg -> sch1-power_supply.svg (7f4b49)
Schematic Page: sch2-power_supply-15b200.svg -> sch2-power_supply.svg (15b200)
Schematic Page: sch1-peripherals-ec9b8a.svg -> sch1-peripherals.svg (ec9b8a)
Schematic Page: sch2-peripherals-6a7f5f.svg -> sch2-peripherals.svg (6a7f5f)
Schematic Page: sch1-sensor-4437c2.svg -> sch1-sensor.svg (4437c2)
Schematic Page: sch2-sensor-c52aac.svg -> sch2-sensor.svg (c52aac)
Schematic Page: sch1-microcontroller-719496.svg -> sch1-microcontroller.svg (719496)
Schematic Page: sch2-microcontroller-6b2627.svg -> sch2-microcontroller.svg (6b2627)
You can easily see that are many duplicated files (sch1-board-*
,sch2-board-*
). This happens because plotgitsh
is finding these guys on all of my projects.
So, my question is, does plotgitsch
have a way to limit its scope to the current folder or into a specific path inside the repo?
This is request for a flag to keep intermediate files even if the diff does not have any changes. This is also important for me. And may be good for someone else, and it may no to be complex to implement (if you are imolenting, of course). I could not make it, then I just removed a test that was making this restriction.
I have a project with 5 schematics sheets and 3 of them with changes. I am using firefox to display the diffs. Do you know why 2 of the diffs open in one firefox window (different tabs) while the last one is opening on a new window? It is working fine with chrome.
I love your tool and have used it a lot on windows. I just started working on a macbook recently and I couldn't make it work until now.
Everytime I run plotgitsch
it performs a checkout to the branch master, which doesn't even exist in my repo (I use main and dev).
Do you have any idea why this is happening?
Let me know if you need any more information
When runing the plotgitsch the following error emerges Exception ("Kicadsch__Kicadlib.MakePainter(P).Component_Not_Found(\"Device:D_Schottky\")")
I installed the last release version and the error persists.
I attach the project that is giving me the error.
Opam seems to be a Linux/OSX only tool.
Is it possible to use plotgitsch on Windows 10?
I would like to suggest to improve the output of plotgitsch as the Kicad-Diff does. If you didn't use it, there are some images in the end of their README. To be fair, these images are not good to show how their output is good.
So, It generates an html to display the generated diffs in an organized way
For plotgitsch, the user can enable this with the command line if you think it is not a good idea as default.
So, this html, could organize sch sheets and also display the text diff together.
Kicad-Diff, displays the main diff image on top, then bottom-right and the bottom-left the original images used in the diff process (this). There, this is done for each layer of the PCB. But for the schematic, this can be generated for each page.
I mean, it does not keep generated files inside the project folder.
It is keeping files on /tmp
Do we have any option to set the output path?
Right now I am seeing this /tmp/diff_boardee37d8.svg
where the ee37d8
part is a random number.
So, I would suggest this approach
-k [output_folder]
Hi,
I would like to use this tool to document schematic automatically.
However, it doesn't work.
macOS High Sierra
homebrew
opam
KiCad 4.0.7
Error
Fatal error: exception Kicadsch__Kicadlib.MakePainter(P).Component_Not_Found("C")
Hello,
I have set up everything so that I can successfully generate diff images of all schematics manually by entering the GIT project directory in a bash shell (mingw64, im on windows) and typing plotgitsch -ifirefox.
It somehow does not work when tying to limit to specific files, i.E.
USER@XYZ MINGW64 /c/Dev/repo (develop)
$ plotgitsch -ifirefox --file=/c/Dev/repo/Hardware/schematic.sch a48b20d6f2782f5d2ad74804aab9289d15450a12
internal diff and show with firefox between Git rev a48b20d6f2782f5d2ad74804aab9289d15450a12 and file system .
Git Exception: path not found: /C:
Im not sure if I messed up with the paths, but I also tried windows paths and relative paths, and it always turns up a similar. Is it somehow related to window-isms?
Hi,
I can successfully diff working vs HEAD by running plotgitsch -i
, as well as any two revisions using external tools (e.g. plotgitsch HEAD~10 HEAD~3
). Fails to run with internal tools whenever revisions are explicitly written plotgitsch -i HEAD~10 HEAD~3
with the following message:
internal diff and show with HEAD~10 between Git rev HEAD~3 and file system .
The system cannot find the file HEAD~10.
Errored with code 1
I also get a pop-up saying:
Windows cannot find 'HEAD~10'. Make sure you typed the name correctly, and then try again.
Same issue if I specify commits explicitly using a short hash.
If possible provide installers for
see 0install for ideas?
Hi!
As I am get closer to integrating plotkicadsch
into a complete diff tool for TortoiseGit (Windows git GUI client), I'd like to have an option to specify output folder or even better full filename.
Thanks
Hi @jnavila if you add this into the README where you show how to change colors would be nice.
-c REMOVED_RGB:ADDED_RGB:UNCHANGED_RGB:BACKGROUND_RGB
Hi @jnavila , there are some users trying to install plotkicadsch on Windows. From your Readme it looks a little bit experimental.
Could you check the output of the installer, here, to give us some directions?
leoheck/kiri#1 (comment)
Here is the same text but formatted.
[ERROR] The compilation of plotkicadsch failed at
"C:\OCaml64\home\Stanley\.opam\4.09.1+mingw64c\bin\dune.exe
build -p plotkicadsch -j 5".
=== ERROR while compiling plotkicadsch.0.8.0 ==
===============================#
context 2.0.8 | win32/x86_64 | ocaml-variants.4.09.1+min
gw64c | pinned(file://C:/Users/Stanley/Desktop/ELEC)
path ~/.opam/4.09.1+mingw64c/.opam-switch/build/plotk
icadsch.0.8.0
command C:\OCaml64\home\Stanley.opam\4.09.1+mingw64c\bi
n\dune.exe build -p plotkicadsch -j 5
exit-code 1
env-file ~/.opam/log/plotkicadsch-21024-42bb52.env
output-file ~/.opam/log/plotkicadsch-21024-42bb52.out
output
File "plotkicadsch/plotkicadsch/src/dune", line 7, characters 6-1
4:
7 | kicadsch
^^^^^^^^
Error: Library "kicadsch" not found.
Hint: try:
dune external-lib-deps --missing -p plotkicadsch -j 5 @install
Why it is so hard to install this tool?
Now, I can install neither the master version or the stable version.
I am installing it now inside a container
- install patience_diff v0.13.0 [required by plotkicadsch]
- install plotkicadsch 0.6.1
===== 117 to install =====
Do you want to continue? [Y/n] n
The command '/bin/sh -c opam install plotkicadsch' returned a non-zero code: 10
make: *** [Makefile:12: build_release] Error 10
With these instructions
run opam init -c 4.09.0 --disable-sandboxing -a
run eval $(opam config env)
run opam update
run opam install plotkicadsch
It is always hard to install this. Can you help me?
Tried master version and the default version from the package manager
plotkicadsch/plotkicadsch on master took 3s
➜ opam install plotkicadsch
<><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><>
[plotkicadsch.0.5.2] no changes from git+file:///home/lheck/Dropbox/kicad-plugins/plotkicadsch#master
Sorry, no solution found: there seems to be a problem with your request.
No solution found, exiting
Hi,
Can you add an image with an example in Readme or Wiki to show the output files of your project? I am thinking that your projects could be great but I could not make it work yet.
I am coming from, https://jnavila.github.io/plotkicadsch/.
show a few use cases and how to use options
Hi,
I've tried installing on Windows in Git Bash. Scripts are in Mingw64's bin dir. All seems fine with the internal diffing tool (and looks great, thanks!).
If I run without the -i
option, I get no errors but the output is simply the git-imgdiff file itself. That is, my viewer simply shows me the contents of git-imgdiff, which are:
#!/bin/bash PIPE=$(mktemp -u) (! compare -metric RMSE $2 $1 png:${PIPE} 2> /dev/null) && (montage -geometry +4+4 $2 $PIPE $1 png:- | display -title "$1" -) rm $PIPE
Seems like git-imgdiff is being opened rather than executed by plotgitsch. Tried running chmod +x
on git-imgdiff but that didn't solve it.
I have most of my kicad project organized in a similar structure where I have a folder where all schematic sheets are, with the exception of the top level:
├── images
├── mech
├── pdf
├── sch
│ ├── sub-sheet1.sch
│ ├── sub-sheet2.sch
├── project-cache.lib
├── project.kicad_pcb
├──project.pro
├──project.sch
whent I run plotgitsch -i firefox
only differences in project.sch are shown.
in need to cd sch/
and run plotgitsch -i firefox -l ../project-cache.lib
it is a minor annoyance, but I think it could be fix by finding all files ending in .sch including a search in folders.
I tried looking in to the code but I'm not familiar which language is this tool written on.
I guess it would be in line 48 of plotkicadsch/src/kicadDiff.ml
let find_schematics () = F.list_files (ends_with ".sch")
Many thanks for this tool,
Luis
It is always pretty hard for me to remember which color is which.
What do you think about adding a small legend on top of the images
with the color and the corresponding git version something like this
(red square) HASH-1
(blue_square) HASH-2
or this
(red square) HASH-1 - (blue_square) HASH-2
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.