Code Monkey home page Code Monkey logo

Comments (18)

GuLinux avatar GuLinux commented on June 13, 2024 1

Hi,
I just finished reimplementing a new CI/CD system, in order to get builds automatically pushed as github releases as soon as they're merged into master.

Please have a look at the releases page, there's one just created.
note: this builds are still mostly untested, at least the OSX part. It works for me, but then again, I already have all the dependencies installed, so that was fairly expected...

from planetaryimager.

GuLinux avatar GuLinux commented on June 13, 2024

Hi, could you paste the error please?
I'll try to build the package for mac as soon as possible

from planetaryimager.

ChrisG71muc avatar ChrisG71muc commented on June 13, 2024

I tried the Homebrew way. Eric described. Unfortunately everything is more than 12 months old, so most third party libraries have been updated: ccfitsio seems no longer be available via Homebrew or is merged into ccfits.

from planetaryimager.

cpmeadors avatar cpmeadors commented on June 13, 2024

I ran in the what sound like the same issues. ccfits is not available via homebrew. I even tried to compile ccfits but didn't have any success. Compile errors were too complicated. Looked like maybe the lib version incompatibilities with cfitsio from homebrew.

from planetaryimager.

cpmeadors avatar cpmeadors commented on June 13, 2024

Got CCfits to compile. Got the 2.5 version from https://heasarc.gsfc.nasa.gov/fitsio/ccfits. Now I am hitting compile errors related to qt. I have qt version 5.12.0 installed from brew. Example of an error:

/Users/cameronmeadors/Documents/GitHub/PlanetaryImager/src/commons/configurationdialog.cpp:53:39: error:
allocation of incomplete type 'QButtonGroup'
QButtonGroup *edgeAlgorithm = new QButtonGroup(this);
^~~~~~~~~~~~
/usr/local/Cellar/qt/5.12.0/lib/QtWidgets.framework/Headers/qabstractbutton.h:53:7: note:
forward declaration of 'QButtonGroup'
class QButtonGroup;
^

from planetaryimager.

GreatAttractor avatar GreatAttractor commented on June 13, 2024

Are you trying to build version 0.6.2? Try the master. If I remember correctly, the QButtonGroup error was fixed there in this commit.

from planetaryimager.

cpmeadors avatar cpmeadors commented on June 13, 2024

Switched to master. Failing on the linking with ld: library not found for -ldc1394. So close.

from planetaryimager.

GreatAttractor avatar GreatAttractor commented on June 13, 2024

Try installing it with brew install libdc1394.

from planetaryimager.

cpmeadors avatar cpmeadors commented on June 13, 2024

It is installed. cmake found it, but for some reason the linker cannot find it.

from planetaryimager.

GreatAttractor avatar GreatAttractor commented on June 13, 2024

I'm guessing you're not using a DC1394 camera; the driver can be disabled by adding this option when calling CMake:

-DBUILD_DRIVER_iidc=OFF

from planetaryimager.

cpmeadors avatar cpmeadors commented on June 13, 2024

Thanks. That worked.

from planetaryimager.

cpmeadors avatar cpmeadors commented on June 13, 2024

In summary. I had to compile CCfits 2.5. Had to install opencv@3 and use OpenCV_DIR to specify to use it (had opencv installed which is now 4.0.1). Then I had to disable iidc driver because linker could not find -ldc1394 (possibly a brew issue). Thanks for the help @GreatAttractor.

from planetaryimager.

cpmeadors avatar cpmeadors commented on June 13, 2024

Also had to specify a different qt version. Readme refers to qt5 and version 5.8. brew install of qt got me 5.12.0.

from planetaryimager.

elnappo avatar elnappo commented on June 13, 2024

@GuLinux could you please provide a macOS binary? Thank you! :)

from planetaryimager.

elnappo avatar elnappo commented on June 13, 2024

@GuLinux thank you! It seems like opencv is missing from the binary. I installed it with brew install opencv and it works. Guess opencv should be part of the binary?

Process:               PlanetaryImager [8308]
Path:                  /private/var/folders/*/PlanetaryImager.app/Contents/MacOS/PlanetaryImager
Identifier:            net.gulinux.planetaryimager
Version:               ??? (0.7.70_20190531_ci89)
Code Type:             X86-64 (Native)
Parent Process:        ??? [1]
Responsible:           PlanetaryImager [8308]
User ID:               501

OS Version:            Mac OS X 10.14.4 (18E226)
Report Version:        12

Time Awake Since Boot: 2100 seconds
Time Since Wake:       590 seconds

System Integrity Protection: enabled

Notes:                 Translocated Process

Crashed Thread:        0

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Reason:    DYLD, [0x1] Library missing

Application Specific Information:
dyld: launch, loading dependent libraries

Dyld Error Message:
  Library not loaded: @rpath/libopencv_imgproc.4.1.dylib
  Referenced from: /private/var/folders/xg/rfs58prd65l0w3trygktv_xc0000gn/T/AppTranslocation/78F39D74-8980-4873-A315-52300E8B0774/d/PlanetaryImager.app/Contents/Frameworks/libopencv_gapi.4.1.dylib
  Reason: image not found

Binary Images:
       0x1025fb000 -        0x102783ff7 +net.gulinux.planetaryimager (??? - 0.7.70_20190531_ci89) <34C4FA7B-5E3F-329E-B87A-D4C08D9CFA73> /var/folders/*/PlanetaryImager.app/Contents/MacOS/PlanetaryImager
       0x102807000 -        0x10295eff3 +libopencv_gapi.4.1.dylib (0) <DB1EB57C-A968-3CE2-9BA4-BDBEC33BD8A5> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_gapi.4.1.dylib
       0x10297d000 -        0x1029f6ff7 +libopencv_stitching.4.1.dylib (0) <ECA38699-A797-3DEC-AB13-E6F46148B04E> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_stitching.4.1.dylib
       0x102a11000 -        0x102a4aff7 +libopencv_aruco.4.1.dylib (0) <0DBB323D-4340-3AF6-AC41-F1E21D6F3B10> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_aruco.4.1.dylib
       0x102a7e000 -        0x102a96ffb +libopencv_bgsegm.4.1.dylib (0) <3E99B2AF-8121-35DC-9E2D-088D2E730720> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_bgsegm.4.1.dylib
       0x102aa0000 -        0x102aceff7 +libopencv_bioinspired.4.1.dylib (0) <77C8668E-233E-3B18-AB56-27F899F9F51A> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_bioinspired.4.1.dylib
       0x102adb000 -        0x102b5ffff +libopencv_ccalib.4.1.dylib (0) <10EE67BE-4816-37C8-BB92-8107FAF83AAE> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_ccalib.4.1.dylib
       0x102b6f000 -        0x102b76ff7 +libopencv_dnn_objdetect.4.1.dylib (0) <F2CA280F-9C6D-3CB4-9B6D-17377A766AC0> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_dnn_objdetect.4.1.dylib
       0x102b81000 -        0x102b92ffb +libopencv_dpm.4.1.dylib (0) <772B1C3B-EDAF-3FEC-9772-33D2418122CB> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_dpm.4.1.dylib
       0x102b97000 -        0x102c24fff +libopencv_face.4.1.dylib (0) <B9B09CEA-2BF3-326E-A3DD-5C4A4E3D8621> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_face.4.1.dylib
       0x102c37000 -        0x102c3cff7 +libopencv_freetype.4.1.dylib (0) <2D1EBF81-4A5B-343F-9E40-479CFDFCB8FE> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_freetype.4.1.dylib
       0x102c48000 -        0x102c60ffb +libopencv_fuzzy.4.1.dylib (0) <57054620-EEB1-3CB2-832C-229F04C3A35D> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_fuzzy.4.1.dylib
       0x102c67000 -        0x102c73ff3 +libopencv_hfs.4.1.dylib (0) <EF898C52-A76A-3C21-9987-7A5337C40B73> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_hfs.4.1.dylib
       0x102c78000 -        0x102c85ffb +libopencv_img_hash.4.1.dylib (0) <774C0CF0-4A98-3633-9809-DD2E3BA2245F> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_img_hash.4.1.dylib
       0x102c8d000 -        0x102caaffb +libopencv_line_descriptor.4.1.dylib (0) <D2775217-BB4F-3AD5-B573-FC53E3D7CB75> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_line_descriptor.4.1.dylib
       0x102cba000 -        0x102cc9ffb +libopencv_quality.4.1.dylib (0) <F3747D3D-36A4-36BC-8501-1D2D1E348407> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_quality.4.1.dylib
       0x102cd3000 -        0x102cedfff +libopencv_reg.4.1.dylib (0) <C2998846-EAEE-3EA4-A755-36B5190FA493> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_reg.4.1.dylib
       0x102cf3000 -        0x102d8fff3 +libopencv_rgbd.4.1.dylib (0) <535B6CC3-A9C5-3364-8D94-52D2270BB48C> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_rgbd.4.1.dylib
       0x102da2000 -        0x102dc3ffb +libopencv_saliency.4.1.dylib (0) <67E3357E-C895-37BE-9A41-0FBDD8B396B2> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_saliency.4.1.dylib
       0x102dd4000 -        0x102e30fff +libopencv_sfm.4.1.dylib (0) <3EEBFBFF-D87F-3516-8D77-E9857A136DCF> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_sfm.4.1.dylib
       0x102e3b000 -        0x102e5cff3 +libopencv_stereo.4.1.dylib (0) <FA322E96-827B-3795-91AB-F6E009802499> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_stereo.4.1.dylib
       0x102e62000 -        0x102e73fff +libopencv_structured_light.4.1.dylib (0) <10F0B1F9-776C-3420-97C0-ED378C622C66> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_structured_light.4.1.dylib
       0x102e7c000 -        0x102e95fff +libopencv_superres.4.1.dylib (0) <7DAF57E6-0281-3291-9F0C-E5715441AB07> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_superres.4.1.dylib
       0x102ea4000 -        0x102edaff3 +libopencv_surface_matching.4.1.dylib (0) <3FC9BE46-6C23-3DD3-8D01-D7B260FA3FD6> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_surface_matching.4.1.dylib
       0x102ee9000 -        0x1030cdfff +libopencv_tracking.4.1.dylib (0) <D415FA9F-98ED-3727-A710-2CC39E8C9E47> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_tracking.4.1.dylib
       0x1030e8000 -        0x103117ff7 +libopencv_videostab.4.1.dylib (0) <0295F6FC-90D2-3D3C-9CBD-81D3027C9EDD> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_videostab.4.1.dylib
       0x10312c000 -        0x1033f2ff7 +libopencv_xfeatures2d.4.1.dylib (0) <5C360EED-740E-3B45-B321-0A07303023F1> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_xfeatures2d.4.1.dylib
       0x103408000 -        0x10341afff +libopencv_xobjdetect.4.1.dylib (0) <F7DC6A00-FD8D-37BE-A1BD-9F9BBAE4070D> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_xobjdetect.4.1.dylib
       0x103425000 -        0x10349effb +libopencv_xphoto.4.1.dylib (0) <76414082-CB8E-3423-AD56-7E621E2AA7BA> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_xphoto.4.1.dylib
       0x1034af000 -        0x103821ffb +org.qt-project.QtQml (5.12 - 5.12.3) <FDB93147-BD36-3DB4-A46F-10E38956EE51> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/QtQml.framework/Versions/5/QtQml
       0x1038d7000 -        0x1039ebfff +libcfitsio.7.dylib (0) <11282911-72F3-342C-971D-5A1EA6D846AA> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libcfitsio.7.dylib
       0x103b95000 -        0x103bc9ff3 +org.qt-project.QtOpenGL (5.12 - 5.12.3) <EB24CDEF-63F8-39B2-BF3D-A96639724B0F> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/QtOpenGL.framework/Versions/5/QtOpenGL
       0x103bef000 -        0x103c14ffb +libopencv_shape.4.1.dylib (0) <14B934F8-31B1-3103-B784-36BB4CD5421E> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_shape.4.1.dylib
       0x103c1c000 -        0x103c54ff3 +libopencv_datasets.4.1.dylib (0) <59462A66-B928-3ED8-8CF1-5C1E684974BA> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_datasets.4.1.dylib
       0x103c62000 -        0x103c69fff +libopencv_plot.4.1.dylib (0) <3301774B-7D7E-34E3-BAED-1F7D0923BEFE> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_plot.4.1.dylib
       0x103c73000 -        0x103ccfffb +libopencv_text.4.1.dylib (0) <145FC145-E58D-3326-8F4F-3A4655946295> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_text.4.1.dylib
       0x103da6000 -        0x103fd7ff3 +libopencv_dnn.4.1.dylib (0) <A639BBD8-A50D-31FD-94CE-CABDA5B4256F> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_dnn.4.1.dylib
       0x104006000 -        0x104090ffb +libopencv_ml.4.1.dylib (0) <4610820D-EB0E-3BD8-8D9A-C1572C6F11ED> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_ml.4.1.dylib
       0x1040a5000 -        0x1040a9ff3 +libopencv_phase_unwrapping.4.1.dylib (0) <3638D8E8-6B01-36BB-8591-E35443B6A5E3> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_phase_unwrapping.4.1.dylib
       0x1040b2000 -        0x104111fff +libopencv_optflow.4.1.dylib (0) <AD1D8CB7-A231-3475-AFE9-D1849388A63C> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_optflow.4.1.dylib
       0x104121000 -        0x104231ff3 +libopencv_ximgproc.4.1.dylib (0) <3E8F9344-A6F5-34C4-8019-EB3479D1F500> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_ximgproc.4.1.dylib
       0x104347000 -        0x1043a1fff +libopencv_video.4.1.dylib (0) <D2622810-D307-385D-9904-0CF8430A0D18> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_video.4.1.dylib
       0x1043af000 -        0x1043fffff +libopencv_objdetect.4.1.dylib (0) <F12B6039-AA71-3814-88CF-AEBE4C2E2894> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_objdetect.4.1.dylib
       0x104410000 -        0x1045a5ffb +libopencv_calib3d.4.1.dylib (0) <6D6639CC-F25F-315A-A02B-3C60AD1B1615> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_calib3d.4.1.dylib
       0x1045bd000 -        0x104648ff3 +libopencv_features2d.4.1.dylib (0) <E552E048-D1EE-3F5D-9D37-59D10E1AD23C> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_features2d.4.1.dylib
       0x10465e000 -        0x104694fff +libopencv_flann.4.1.dylib (0) <6E1EA088-7913-3752-BDF1-242E61E543E5> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_flann.4.1.dylib
       0x1046a5000 -        0x1046b3ff3 +libopencv_highgui.4.1.dylib (0) <818B3B28-0A5F-3CD4-B0C7-26E2D9BF9379> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_highgui.4.1.dylib
       0x1046ba000 -        0x1046eaffb +libopencv_videoio.4.1.dylib (0) <12F206CB-7570-329B-9FD5-E8B5CF6AA220> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_videoio.4.1.dylib
       0x104702000 -        0x1047d0ff3 +libopencv_imgcodecs.4.1.dylib (0) <68301CA6-37F2-3E60-84A5-45ADCB73DC87> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_imgcodecs.4.1.dylib
       0x1047e2000 -        0x104883ffb +libopencv_photo.4.1.dylib (0) <2193B33A-31A4-3DBA-BCDB-58ABABEBD3DF> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_photo.4.1.dylib
       0x104896000 -        0x106263fdf +libopencv_imgproc.4.1.dylib (0) <C31F780D-177E-3B7F-A7E0-26813D03CFD8> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_imgproc.4.1.dylib
       0x1063e7000 -        0x1071e4fef +libopencv_core.4.1.dylib (0) <C539E2F4-A926-377B-98E1-700168E1DEB2> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/libopencv_core.4.1.dylib
       0x1072a6000 -        0x1073b0ff7 +org.qt-project.QtNetwork (5.12 - 5.12.3) <7F4AF8DA-368C-3450-B429-4EE39B287DBB> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/QtNetwork.framework/Versions/5/QtNetwork
       0x1073fc000 -        0x10783affb +org.qt-project.QtWidgets (5.12 - 5.12.3) <84F7EEDD-FD3E-3058-BB25-AB8C25A443A2> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/QtWidgets.framework/Versions/5/QtWidgets
       0x1079a4000 -        0x107de8fef +org.qt-project.QtGui (5.12 - 5.12.3) <759C3F53-ACAC-3708-9819-1334792B2F03> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/QtGui.framework/Versions/5/QtGui
       0x107ef2000 -        0x108420fff +org.qt-project.QtCore (5.12 - 5.12.3) <6B3323C6-1B1A-37A5-8F6A-C92F6CE7C598> /var/folders/*/PlanetaryImager.app/Contents/Frameworks/QtCore.framework/Versions/5/QtCore
       0x110a60000 -        0x110aca6ef  dyld (655.1.1) <F217F7F8-A795-3109-B77F-B1E2277F3E3B> /usr/lib/dyld
    0x7fff549f7000 -     0x7fff549f8ffb  libSystem.B.dylib (1252.250.1) <72841192-B0C9-36A0-8E55-ED651EADEF08> /usr/lib/libSystem.B.dylib
    0x7fff54c3a000 -     0x7fff54c8dff7  libc++.1.dylib (400.9.4) <446DAE5E-4E97-3E4B-B2A3-AC0A74C0E453> /usr/lib/libc++.1.dylib
    0x7fff5564c000 -     0x7fff5569ffff  libcurl.4.dylib (105.200.2) <4512BCAA-D30E-3BCD-9372-49EE93406823> /usr/lib/libcurl.4.dylib

from planetaryimager.

GuLinux avatar GuLinux commented on June 13, 2024

Hi,
Well actually opencv was already in the bundle, but the rpath for both the binary and the dependencies was not set properly, and the libraries could not be loaded.

I created a new release that should solve the issue, if you could uninstall opencv from brew and retry it would be great :)

from planetaryimager.

elnappo avatar elnappo commented on June 13, 2024

Thanks! 👍 PlanetaryImager now starts successfully :) Can't confirm if everything else is working as I don't have a camera at the moment.
Furthermore, it would be nice if you can add notarization by Apple into your build chain when you have time ;)
If you don't mind, I would add PlanetaryImager to Homebrew (package manager of macOS) when I have time ;)

https://developer.apple.com/documentation/security/notarizing_your_app_before_distribution
https://developer.apple.com/developer-id/

from planetaryimager.

GuLinux avatar GuLinux commented on June 13, 2024

Thanks! 👍 PlanetaryImager now starts successfully :) Can't confirm if everything else is working as I don't have a camera at the moment.
Cool!
I'm gonna close the issue now then, you can always open a new one if cameras don't seem to be working (I did test ASI recently though, so I don't expect surprises... hopefully!)

Furthermore, it would be nice if you can add notarization by Apple into your build chain when you have time ;)

Yup, I'll look into it, I'm just a bit concerned though as my build process is not exactly compliant to Apple's standards (I don't use xcode and stuff like that).

If you don't mind, I would add PlanetaryImager to Homebrew (package manager of macOS) when I have time ;)

Sure, that would be really helpful!
I did have an old recipe here, but stopped maintaining so it might be a lot out of date.
Just for reference, here it is: https://github.com/GuLinux/PlanetaryImager/tree/341a6ed3b2128790d285d587013cd37a3d4dc008/support/osx-brew

You can find a list of current dependencies here: https://github.com/GuLinux/PlanetaryImager/blob/master/support/osx/install-deps#L10
The hard bit is that CCFits doesn't seem to have a brew recipe (which is why in that script I'm installing it manually)

from planetaryimager.

Related Issues (20)

Recommend Projects

  • React photo React

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

  • Vue.js photo Vue.js

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

  • Typescript photo Typescript

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

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

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

Recommend Topics

  • javascript

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

  • web

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

  • server

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

  • Machine learning

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

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

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

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.