Code Monkey home page Code Monkey logo

edmarketconnector's People

Contributors

a-underscore-d avatar alternerdtive avatar andreasgocht avatar anthornet avatar athanasius avatar aussig avatar bgol avatar c1701d avatar catfoodcz avatar chennin avatar dependabot[bot] avatar der-eismann avatar devdave avatar dvdmuckle avatar foresto avatar glwine avatar inorton avatar j15t98j avatar kmpm avatar marginal avatar norohind avatar prikhi avatar rixxan avatar robbyxp1 avatar rubysea avatar sayakmukhopadhyay avatar sersorrel avatar spansh avatar tandyuk avatar vakazakov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

edmarketconnector's Issues

Doesn't save CSV export file location

Installed as instructed, set the export file location to a folder in my Dropbox subtree.
App works fine but each time I start it the export location reverts to C:\users\Documents

Translations welcome

If you'd like this app translated into your language please comment below and join the project in OneSky.

Note that about half of the phrases are Federal, Empire, Combat, etc ranks. It's probably best to leave these untranslated, or to translate to the supported in-game language that speakers of your language are mostly likely to choose.

Run on a separate machine?

I'm playing Elite on my Win10 gaming rig, but have a Macbook Pro laptop next to me. Can I run this app on the Mac, to track my data from there, instead of from the gaming rig itself? Would be handy to be able to interact with the app and have it in full view, rather than having to multitask on the gaming rig.

I understand if it needs local game assets, but if it's simply using ED server APIs, then it seems it could run on a separate rig.

Program hang on auto-log entry on system

I am using Release 1.84
Only options on

  • Send Flight Log Data to EDSM
  • Automatically make a log entry on entering a system

I went out to start exploring today. With Auto-log on the program seems to hang on every system entry. The last display is "Sending data to EDSM", still showing the previous system name.

If I disable Auto-log on system entry. I can manually update or use the hotkey and it works with no issues

Error: Server is down

I'm currently getting Error: Server is down. Everything was working fine before the Horizons launch today. Since Horizons has launch, I'v been receiving this error. The Elite: Dangerous servers are up, so I'm not sure which server it's talking about.

EDSM failure seems to prevent csv output

Hello CMDRs.

Love this application - really useful to help me contribute to the EDDN data network. I also use Thrudd's site and so use it to generate a .csv file when I arrive at a station.
In my settings I have EDSM set up to contribute star data, but if that fails for any reason, the .csv is not generated. I then have to wait for the 2 minute cool down, and then re-do the hot-key in order to get the .csv. That's if I notice before I launch... which often I don't.
I am unsure if the EDDN data is sent, but I know for certain that the .csv is not generated.
Is this a dependency issue in the order the code is executed, so that the .csv fails due to the EDSM failure? If so, can it be made independent so that I can still get the .csv file?
I would contribute to the development, but I've never done any coding, other than a bit of visual basic...
I'm using Windows 10 64 bit, fully patched and up to date, with the latest release of the EDMarketConnector.
I've tried clearing EDSM credentials and logging back in, and the only consistent fix is to untick the "Send flight log to EDSM" box.
Happy to provide more information if needed.
Cheers

Is all the data being sent to EDDN?

Over 70% of the time I do an update, the status bar at the bottom will freeze part way through the EDDN send, normally in the mid 20's for a station with more than 50 commodities.

Getting Outfitting without Market

It seems that outfitting data is not synced if a station has no market.

No Problems at "LHS 3447 - Dalton Gateway" because it has both, "LHS 3447 - Trevithick Dock" only has a outfitting bay and no market.
Tested this with mEDI's Elite Tools and looked after "Pulse Laser - Gimballed - 1G"

settings

Global shortcut key

Would it be possible to add a keyboard shortcut for the update button?
That way I could add it to my voice command and instead of having to Alt-Tab out and press update at every station.

Error

Receiving an Error:Server is down message when trying to Update for the first time.

'list' object has no attribute 'keys'

After the last update there is this error:
error

Traceback (most recent call last):
  File "C:\Users\Sebastian\Downloads\EDMarketConnector-master (1)\EDMarketConnector-master\EDMarketConnector.py", line 240, in getandsend
    eddn.export(data)
  File "C:\Users\Sebastian\Downloads\EDMarketConnector-master (1)\EDMarketConnector-master\eddn.py", line 100, in export
    'ships'       : [ship_map.get(ship,ship) for ship in (data['lastStarport']['ships'].get('shipyard_list') or {}).keys() + (data['lastStarport']['ships'].get('unavailable_list') or {}).keys()],
AttributeError: 'list' object has no attribute 'keys'

Non-UTF8 cmdr names

Just got some non-UTF8 in the Uploader-ID via EDDN. Any chance of filtering that out before transmitting?

Phantom item sent to EDDN

There is a price that got sent to EDDN from NGUN/Thiele Orbital. Imperial Slaves are listed in the json but they are not listed in the in-game market. You need to check for invalid values - in this case the demandBracket is "" which is an invalid value you can filter on. All the price values are way off - probably lingering from some other time - but the demandBracket and stockBracket can be used to check if the item will show in the market and thus be worth counting on for data.

1.8.5 Unable to Enable Auto-Log

Thanks for the fast update, however I have been unable to test it.

Whenever I try to check the box to enable auto-log on enter system. The window will not close and save the setting. Hitting "Ok" or the "x" keep the window open. As soon as I uncheck it, it can close again. it will save any other setting just fine still

Does this send more than just trade data to EDDN?

Does this app send:

station capability (e.g. Refuel, Rearm, Outfitting)?
details of modules in outfitters?
ships for sale in shipyards?

If the station does not exists in EDDN (I'm thinking all these ground bases), does EDDN accept the updates, or does something else have to be sent first?

IS all of this stored locally in a file as well as being sent? (I know the price data is).

Settings screen too tall for some laptop resolutions

I'm currently running EDMC on a laptop with a native 1366 x 768 screen resolution, and the EDMC app is almost too tall to be able to fit into that screen under Windows 10. Probably the same in all Windows versions, I expect. It will just squeeze in and can be dragged up to reach the very tippy-top of the OK button when making changes, but it's a pain in the neck to move around (even using keystrokes and tab-presses to reach hidden boxes).

It'd be really useful if the screen's layout could be auto-resized, or reflowed onto a two-column, wider dialog-window, if at all possible.

Certainly if the screen height gets any taller, it will become impossible to use with a mouse, so please bear this in mind!

Thanks for an otherwise excellent and helpful app. Much appreciated.

Track star system, regardless of no station

Based on the interface messaging, it appears if I'm not docked at a station, then the app bails out from communicating my location. I want to log my history regardless of being at a station, so I can stay aware of cool (uninhabited) star systems in my log. Is my assessment correct that no station results in no log at all?

If that's the case, then can we get the update process to still run for the star map log, regardless of station?

"Station doesn't have anything!"

Hey there! I've recently started using this to help update market info :), only have come across a problem!

Arrived at HIP12167 Tikhonravov Port, clicked update aaand : "Station doesn't have anything!" string pops up.

The station does appear on EDDB.io, has a commodity market and seems to have received it's last update 20 days ago!

Hoped you could help me clarify and maybe help me out on resolving this!

~EValve

Where is the shipyard module?

I'm trying to run it from the source on arch. I've installed the required packages and edited ./EDMarketConnector.py to use "python2" instead of "python" (python3), but when I run it, I get this:

Traceback (most recent call last):
  File "./EDMarketConnector.py", line 21, in <module>
    import companion
  File "/home/stephen/git/EDMarketConnector-rel-187/companion.py", line 14, in <module>
    from shipyard import ship_map
ImportError: No module named shipyard

Searching the whole folder I don't see any shipyard module. Any ideas?

Ranks not displayed in statistics

Hi,
EDMC 1.5.3.0 Windows shows no information about ranks in statistics (Trading, Combat, Exploring). It's a minor issue but issue non the less.

Keep up the great work. You rock. ;-)

Ship loadout missing internals for coriolis.io

The coriolis ship loadout is missing some components.
Here is the coriolis.io ship loadout generated by ED Market Connector:

{
  "$schema": "http://cdn.coriolis.io/schemas/ship-loadout/2.json#", 
  "name": "Anaconda", 
  "ship": "Anaconda", 
  "components": {
    "standard": {
      "bulkheads": "Lightweight Alloy", 
      "cargoHatch": {
        "enabled": true, 
        "priority": 2
      }, 
      "powerPlant": {
        "class": 8, 
        "rating": "C", 
        "enabled": true, 
        "priority": 2
      }, 
      "thrusters": {
        "class": 7, 
        "rating": "D", 
        "enabled": true, 
        "priority": 1
      }, 
      "frameShiftDrive": {
        "class": 6, 
        "rating": "A", 
        "enabled": true, 
        "priority": 1
      }, 
      "lifeSupport": {
        "class": 5, 
        "rating": "D", 
        "enabled": true, 
        "priority": 1
      }, 
      "powerDistributor": {
        "class": 8, 
        "rating": "D", 
        "enabled": true, 
        "priority": 1
      }, 
      "sensors": {
        "class": 8, 
        "rating": "D", 
        "enabled": true, 
        "priority": 1
      }, 
      "fuelTank": {
        "class": 4, 
        "rating": "C", 
        "enabled": true, 
        "priority": 2
      }
    }, 
    "hardpoints": [
      null, 
      {
        "class": 3, 
        "rating": "C", 
        "enabled": true, 
        "priority": 1, 
        "group": "Beam Laser", 
        "mount": "Gimballed"
      }, 
      {
        "class": 3, 
        "rating": "C", 
        "enabled": true, 
        "priority": 1, 
        "group": "Beam Laser", 
        "mount": "Gimballed"
      }, 
      {
        "class": 3, 
        "rating": "C", 
        "enabled": true, 
        "priority": 1, 
        "group": "Beam Laser", 
        "mount": "Gimballed"
      }, 
      {
        "class": 2, 
        "rating": "F", 
        "enabled": true, 
        "priority": 1, 
        "group": "Pulse Laser", 
        "mount": "Turret"
      }, 
      {
        "class": 2, 
        "rating": "F", 
        "enabled": true, 
        "priority": 1, 
        "group": "Pulse Laser", 
        "mount": "Turret"
      }, 
      {
        "class": 1, 
        "rating": "E", 
        "enabled": true, 
        "priority": 1, 
        "group": "Fragment Cannon", 
        "mount": "Turret"
      }, 
      {
        "class": 1, 
        "rating": "E", 
        "enabled": true, 
        "priority": 1, 
        "group": "Fragment Cannon", 
        "mount": "Turret"
      }
    ], 
    "utility": [
      {
        "class": 0, 
        "rating": "A", 
        "enabled": true, 
        "priority": 1, 
        "group": "Shield Booster"
      }, 
      {
        "class": 0, 
        "rating": "A", 
        "enabled": true, 
        "priority": 1, 
        "group": "Shield Booster"
      }, 
      null, 
      null, 
      null, 
      null, 
      null, 
      null
    ], 
    "internal": [
      {
        "class": 7, 
        "rating": "E", 
        "enabled": true, 
        "priority": 2, 
        "group": "Cargo Rack"
      }, 
      {
        "class": 6, 
        "rating": "E", 
        "enabled": true, 
        "priority": 2, 
        "group": "Cargo Rack"
      }, 
      {
        "class": 6, 
        "rating": "E", 
        "enabled": true, 
        "priority": 2, 
        "group": "Cargo Rack"
      }, 
      {
        "class": 6, 
        "rating": "E", 
        "enabled": true, 
        "priority": 2, 
        "group": "Cargo Rack"
      }, 
      {
        "class": 5, 
        "rating": "A", 
        "enabled": true, 
        "priority": 1, 
        "group": "Prismatic Shield Generator"
      }, 
      {
        "class": 4, 
        "rating": "A", 
        "enabled": true, 
        "priority": 2, 
        "group": "Fuel Scoop"
      }, 
      {
        "class": 3, 
        "rating": "A", 
        "enabled": true, 
        "priority": 2, 
        "group": "Frame Shift Drive Interdictor"
      }, 
      {
        "class": 4, 
        "rating": "A", 
        "enabled": true, 
        "priority": 1, 
        "group": "Shield Cell Bank"
      }, 
      {
        "class": 1, 
        "rating": "C", 
        "enabled": true, 
        "priority": 2, 
        "group": "Scanner", 
        "name": "Advanced Discovery Scanner"
      }
    ]
  }
}

Here is the same ship loadout in ED Shipyard:

[Anaconda]
L: 3C/G Beam Laser
L: 3C/G Beam Laser
L: 3C/G Beam Laser
M: 2F/T Pulse Laser
M: 2F/T Pulse Laser
S: 1E/T Fragment Cannon
S: 1E/T Fragment Cannon
U: 0A Shield Booster
U: 0A Shield Booster

BH: 1I Lightweight Alloy
RB: 8C Power Plant
TM: 7D Thrusters
FH: 6A Frame Shift Drive
EC: 5D Life Support
PC: 8D Power Distributor
SS: 8D Sensors
FS: 5C Fuel Tank (Capacity: 32)

7: 7E Cargo Rack (Capacity: 128)
6: 6E Cargo Rack (Capacity: 64)
6: 6E Cargo Rack (Capacity: 64)
6: 6E Cargo Rack (Capacity: 64)
5: 5A Prismatic Shield Generator
5: 4A Fuel Scoop
5: 5C Fuel Tank (Capacity: 32)
4: 4C Fuel Tank (Capacity: 16)
4: 3A Frame Shift Drive Interdictor
4: 4A Shield Cell Bank
2: 1C Advanced Discovery Scanner

---
Cargo : 320 T
Fuel  : 80 T

Automatic update?

Would it be possible, to make appliaction do automatic commodity data update in eddb when - for example - station name changes from the one where user was to new one where he just docked?

Special Community Goal commodities are skipped

Commodities with special prices due to an ongoing Community Goal at the station are skipped. e.g. prices for some Metals at "Neville Horizons" due to this goal.

Should EDMC include these prices in its output?

  • Pro: They're valid prices that people are interested in.
  • Con: Once the Community Goal is complete the commodities may disappear from the station's listing so the inflated prices would only be removed by manual intervention in trading tools databases.

The prices are currently skipped because they hit the special handling put in place to fix Issue #2. The Companion API JSON for such commodities looks like this in E:D 1.3 and 1.4 :

      {
        "baseConsumptionQty": 36.8, 
        "baseCreationQty": 4.6, 
        "buyPrice": 0, 
        "capacity": 408296, 
        "categoryname": "Metals", 
        "consumebuy": "1", 
        "consumptionQty": 46662, 
        "cost_max": 9080, 
        "cost_mean": "8549.00", 
        "cost_min": 8017, 
        "creationQty": 4375, 
        "demand": 408296, 
        "demandBracket": "", 
        "homebuy": "94", 
        "homesell": "93", 
        "id": "128049168", 
        "market_id": null, 
        "meanPrice": 8549, 
        "name": "Beryllium", 
        "parent_id": null, 
        "rare_max_stock": "0", 
        "rare_min_stock": "0", 
        "sellPrice": 9128, 
        "statusFlags": [
          "Community Goal in progress"
        ], 
        "stock": 0, 
        "stockBracket": 0, 
        "targetStock": 16040, 
        "volumescale": "1.0400"
      }, 

No stats available

Starting with E:D 1.3.08 statistics are no longer reported in the data from the Companion API. So:

  • The "Statistics" menu item just results in a message "No stats available?!"
  • Selecting the "Cmdr statistics" output option causes EDMC to fail to produce output of any kind.

NPC and PVP kills not updating

The counts of NPC and PVP kills in the Statistics menu option and Excel chart don't update. They appear frozen at the mid-June 2015 figures.

Can't Update - "Error: Invalid Credentials"

Hello and thanks you for the application. i'm french so please excuse my poor english.
i can't would like to use your application but i have an issue when i try to connecte the first time.
When it ask me the elite code i wrote it and nothing append except an "erreur identifiants invalides".
i tried many times and even restarted my computer but i couldn't find a solution.
do you have an idea ?

Error when running from source

(On OSX) I've cloned the repo, installed Python 2.7 via brew, installed requests, updated activetcl, etc. When I attempt to run EDMarketConnector.py, I get the following error:

Traceback (most recent call last):
  File "./EDMarketConnector.py", line 411, in <module>
    app = AppWindow(root)
  File "./EDMarketConnector.py", line 170, in __init__
    hotkeymgr.register(self.w, config.getint('hotkey_code'), config.getint('hotkey_mods'))
  File "/Users/jlangevin/repos/EDMarketConnector/hotkey.py", line 69, in register
    self.tkProcessKeyEvent_old = NSApplication.sharedApplication().methodForSelector_(sel)
AttributeError: No selector tkProcessKeyEvent:

Any suggestions?

App just bounces on startup then exits on Mac Yosemite.

The app was working fine until the EDDN 2 update whereupon it reported 'server is down' then would never start up again. I've updated again since and same result.

I tried running it from the command line and this is all it says:-

./EDMarketConnector.app/Contents/MacOS/E\:D\ Market\ Connector 
Jun 30 23:49:06 Tonic-2.local E:D Market Connector[11150] <Notice>: 2015-06-30 23:49:06.281 E:D Market Connector[11150:2795669] An uncaught exception was raised
Jun 30 23:49:06 Tonic-2.local E:D Market Connector[11150] <Notice>: 2015-06-30 23:49:06.282 E:D Market Connector[11150:2795669] Error (1000) creating window shape
Jun 30 23:49:06 Tonic-2.local E:D Market Connector[11150] <Notice>: 2015-06-30 23:49:06.282 E:D Market Connector[11150:2795669] (
Jun 30 23:49:06 Tonic-2.local E:D Market Connector[11150] <Notice>:     0   CoreFoundation                      0x00007fff8a7a666c __exceptionPreprocess + 172
Jun 30 23:49:06 Tonic-2.local E:D Market Connector[11150] <Notice>:     1   libobjc.A.dylib                     0x00007fff869be76e objc_exception_throw + 43
Jun 30 23:49:06 Tonic-2.local E:D Market Connector[11150] <Notice>:     2   CoreFoundation                      0x00007fff8a7a651d +[NSException raise:format:] + 205
Jun 30 23:49:06 Tonic-2.local E:D Market Connector[11150] <Notice>:     3   AppKit                              0x00007fff90c7f0ae _NSCreateWindowWithOpaqueShape2 + 154
Jun 30 23:49:06 Tonic-2.local E:D Market Connector[11150] <Notice>:     4   AppKit                              0x00007fff90c7d906 -[NSWindow _commonAwake] + 1882
Jun 30 23:49:06 Tonic-2.local E:D Market Connector[11150] <Notice>:     5   AppKit                              0x00007fff90c7d009 -[NSWindow _makeKeyRegardlessOfVisibility] + 85
Abort trap: 6

EDMarketConnector reporting erroneously that I'm not docked at any station

Not sure what is happening all of a sudden. I'm playing the regular 1.4.01 version. I'm docked at Rogers Hub in HIP 105391 but after 3 times and being there for at least 5 minutes, EDMarketConnector still reports that I'm not docked at any station when I try updating. It gets the correct system but doesn't seem all of a sudden to see that I'm actually docked.

UPDATE: just as I finish writing this, I do another try and this time, it correctly reported that I'm docked at Rogers Hub. I will keep an eye on it. Maybe just a temporary glitch.

Can't import to Coriolis

Hi,
I tried importing the JSON for Coriolis, but keep having some invalid data ^^

Here is my file:

    {
      "$schema": "http://cdn.coriolis.io/schemas/ship-loadout/2.json#", 
      "name": "Asp Explorer", 
      "ship": "Asp Explorer", 
      "components": {
        "standard": {
          "bulkheads": "Lightweight Alloy", 
          "cargoHatch": {
            "enabled": true, 
            "priority": 2
          }, 
          "powerPlant": null, 
          "thrusters": {
            "class": "5", 
            "rating": "E", 
            "enabled": true, 
            "priority": 2
          }, 
          "frameShiftDrive": {
            "class": "5", 
            "rating": "E", 
            "enabled": true, 
            "priority": 2
          }, 
          "lifeSupport": {
            "class": "4", 
            "rating": "E", 
            "enabled": true, 
            "priority": 2
          }, 
          "powerDistributor": {
            "class": "4", 
            "rating": "E", 
            "enabled": true, 
            "priority": 2
          }, 
          "sensors": {
            "class": "5", 
            "rating": "E", 
            "enabled": true, 
            "priority": 2
          }, 
          "fuelTank": {
            "class": "5", 
            "rating": "C", 
            "enabled": true, 
            "priority": 2
          }
        }, 
        "hardpoints": [
          null, 
          null, 
          {
            "class": "1", 
            "rating": "F", 
            "enabled": true, 
            "priority": 2, 
            "group": "Pulse Laser", 
            "mount": "Fixed"
          }, 
          {
            "class": "1", 
            "rating": "F", 
            "enabled": true, 
            "priority": 2, 
            "group": "Pulse Laser", 
            "mount": "Fixed"
          }, 
          {
            "class": "1", 
            "rating": "E", 
            "enabled": true, 
            "priority": 1, 
            "group": "Beam Laser", 
            "mount": "Fixed"
          }, 
          {
            "class": "1", 
            "rating": "E", 
            "enabled": true, 
            "priority": 1, 
            "group": "Beam Laser", 
            "mount": "Fixed"
          }
        ], 
        "utility": [
          null, 
          null, 
          null, 
          null
        ], 
        "internal": [
          {
            "class": "5", 
            "rating": "E", 
            "enabled": true, 
            "priority": 2, 
            "group": "Cargo Rack"
          }, 
          {
            "class": "5", 
            "rating": "E", 
            "enabled": true, 
            "priority": 2, 
            "group": "Shield Generator"
          }, 
          {
            "class": "2", 
            "rating": "E", 
            "enabled": true, 
            "priority": 2, 
            "group": "Cargo Rack"
          }, 
          {
            "class": "3", 
            "rating": "B", 
            "enabled": true, 
            "priority": 1, 
            "group": "Fuel Scoop"
          }, 
          null, 
          {
            "class": "1", 
            "rating": "D", 
            "enabled": true, 
            "priority": 2, 
            "group": "Scanner", 
            "name": "Intermediate Discovery Scanner"
          }, 
          {
            "class": "1", 
            "rating": "C", 
            "enabled": true, 
            "priority": 2, 
            "group": "Scanner", 
            "name": "Detailed Surface Scanner"
          }
        ]
      }
    }

Server is down

E:D Market Connector is showing "Error: Server is down". It might be because of the Horizon update which took place today.
image

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.