Git Product home page Git Product logo

mas's Introduction

mas-cli

mas-cli

A simple command line interface for the Mac App Store. Designed for scripting and automation.

Software License Swift 5 GitHub Release Reviewed by Hound Build, Test, & Lint

📲 Install

🍺 Homebrew

Homebrew is the preferred way to install:

brew install mas

MacPorts

MacPorts works as well:

sudo port install mas

⚠️ Note that macOS 10.15 (Catalina) is required to install mas from MacPorts or the core Homebrew formula.

☎️ Older macOS Versions

We provide a custom Homebrew tap with pre-built bottles for all macOS versions since 10.11.

To install mas from our tap:

brew install mas-cli/tap/mas

Swift 5 Runtime Support

mas requires Swift 5 runtime support. macOS 10.14.4 and later include it, but earlier releases did not. Without it, running mas may report an error similar to this:

dyld: Symbol not found: _$s11SubSequenceSlTl

To get Swift 5 support, you have a few options:

🐙 GitHub Releases

Alternatively, binaries are available in the GitHub Releases.

🤳🏻 Usage

Each application in the Mac App Store has a product identifier which is also used for mas-cli commands. Using mas list will show all installed applications and their product identifiers.

$ mas list
446107677 Screens
407963104 Pixelmator
497799835 Xcode

It is possible to search for applications by name using mas search which will search the Mac App Store and return matching identifiers. Include the --price flag to include prices in the result.

$ mas search Xcode
497799835 Xcode
688199928 Docs for Xcode
449589707 Dash 3 - API Docs & Snippets. Integrates with Xcode, Alfred, TextWrangler and many more.
[...]

Another way to find the identifier for an app is to

  1. Find the app in the Mac App Store
  2. Select Share > Copy Link
  3. Grab the identifier from the string, e.g. for Xcode, https://apps.apple.com/us/app/xcode/id497799835?mt=12 has identifier 497799835

To install or update an application simply run mas install with an application identifier:

$ mas install 808809998
==> Downloading PaintCode 2
==> Installed PaintCode 2

If you want to install the first result that the search command returns, use the lucky command.

$ mas lucky twitter
==> Downloading Twitter
==> Installed Twitter

Please note that this command will not allow you to install (or even purchase) an app for the first time: use the purchase command in that case. ⛔ The purchase command is not supported as of macOS 10.15 Catalina. Please see Known Issues.

$ mas purchase 768053424
==> Downloading Gapplin
==> Installed Gapplin

Please note that you may have to re-authenticate yourself in the App Store to complete the purchase. This is the case if the application is not free or if you configured your account not to remember the credentials for free purchases.

Use mas outdated to list all applications with pending updates.

$ mas outdated
497799835 Xcode (7.0)
446107677 Screens VNC - Access Your Computer From Anywhere (3.6.7)

mas is only able to install/update applications that are listed in the Mac App Store itself. Use softwareupdate(8) utility for downloading system updates (e.g. Xcode Command Line Tools)

To install all pending updates run mas upgrade.

$ mas upgrade
Upgrading 2 outdated applications:
Xcode (7.0), Screens VNC - Access Your Computer From Anywhere (3.6.7)
==> Downloading Xcode
==> Installed Xcode
==> Downloading iFlicks
==> Installed iFlicks

Updates can be performed selectively by providing the app identifier(s) to mas upgrade

$ mas upgrade 715768417
Upgrading 1 outdated application:
Xcode (8.0)
==> Downloading Xcode
==> Installed Xcode

🚏📥 Sign-in

⛔ The signin command is not supported as of macOS 10.13 High Sierra. Please see Known Issues.

To sign into the Mac App Store for the first time run mas signin.

$ mas signin [email protected]
==> Signing in to Apple ID: [email protected]
Password:

If you experience issues signing in this way, you can ask to sign in using a graphical dialog (provided by Mac App Store application):

$ mas signin --dialog [email protected]
==> Signing in to Apple ID: [email protected]

You can also embed your password in the command.

$ mas signin [email protected] 'ZdkM4f$gzF;gX3ABXNLf8KcCt.x.np'
==> Signing in to Apple ID: [email protected]

Use mas signout to sign out from the Mac App Store.

🍺 Homebrew integration

mas is integrated with homebrew-bundle. If mas is installed, and you run brew bundle dump, then your Mac App Store apps will be included in the Brewfile created. See the homebrew-bundle docs for more details.

⚠️ Known Issues

Over time, Apple has changed the APIs used by mas to manage App Store apps, limiting its capabilities. Please sign in or purchase apps using the App Store app instead. Subsequent redownloads can be performed with mas install.

  • ⛔️ The signin command is not supported as of macOS 10.13 High Sierra. #164
  • ⛔️ The purchase command is not supported as of macOS 10.15 Catalina. #289
  • ⛔️ The account command is not supported as of macOS 12 Monterey. #417

The versions mas sees from the app bundles on your Mac don't always match the versions reported by the App Store for the same app bundles. This leads to some confusion when the outdated and upgrade commands differ in behavior from what is shown as outdated in the App Store app. Further confusing matters, there is often some delay due to CDN propagation and caching between the time a new app version is released to the App Store, and the time it appears available in the App Store app or via the mas command. These issues cause symptoms like #384 and #387.

Macs with Apple silicon can install and run iOS and iPadOS apps from the App Store. mas is not yet aware of these apps, and is not yet able to install or update them. #321

💥 When something doesn't work

If you see this error, it's probably because you haven't installed the app through the App Store yet. See #46.

This redownload is not available for this Apple ID either because it was bought by a different user or the item was refunded or cancelled.

If mas doesn't work for you as expected (e.g. you can't update/download apps), run mas reset and try again. If the issue persists, please file a bug. All your feedback is much appreciated! ✨

📺 Using tmux

mas operates via the same system services as the Mac App Store. These exist as separate processes with communication through XPC. As a result of this, mas experiences similar problems as the pasteboard when running inside tmux. A wrapper tool exists to fix pasteboard behaviour which also works for mas.

You should consider configuring tmux to use the wrapper but if you do not wish to do this it can be used on a one-off basis as follows:

brew install reattach-to-user-namespace
reattach-to-user-namespace mas install

ℹ️ Build from source

You can build from Xcode by opening the root mas directory, or from the Terminal:

script/bootstrap
script/build

Build output can be found in the .build/ directory within the project.

✅ Tests

The tests in this project are a recent work-in-progress. Since Xcode does not officially support tests for command-line tool targets, all logic is part of the MasKit target with tests in MasKitTests. Tests are written using Quick.

script/test

📄 License

mas-cli was created by @argon. Code is under the MIT license.

mas's People

Contributors

archite avatar argon avatar blochberger avatar chris-araman avatar danielbayley avatar delebedev avatar dependabot[bot] avatar dlackty avatar flaxel avatar gdawg avatar janbrasna avatar jankais3r avatar jinjorge avatar jlec avatar joshuaclayton avatar lhaeger avatar lwolfsonkin avatar maicki avatar mtoohey31 avatar nick-f avatar pablopunk avatar pandermatt avatar phatblat avatar rgoldberg avatar rodionovd avatar rzhikharevich avatar tangestani avatar timsutton avatar tonyarnold avatar undo1 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  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

mas's Issues

Problem with special characters in passwords

Hi,

if i try to connect to the MAS with a password containing a special character i have to mask it, to get in.

For example:

mas signin MyUsername My!Password does not work, but ...

mas signin MyUsername My\!Password will sign me in.

Thanx in advance.

Kind regards
Efty

Output not sent back via ARD

Most apps run remotely via Apple Remote Desktop return the standard output to ARD. This app does not. I was hoping to deploy this on all my systems and use ARD to send a "mas outdated" command but nothing comes back.

OS X 10.9 Mavericks Support

I'm getting the following error running mas.

dyld: Library not loaded: /System/Library/PrivateFrameworks/StoreFoundation.framework/Versions/A/StoreFoundation
Referenced from: /usr/local/bin/mas
Reason: image not found
zsh: trace trap mas list

Can mas be built without storefoundation?

Thanks

list command doesn't seem to be working

When I run mas list I get no output, even though I have a few Mac app store apps installed:
image

However, other mas commands work like mas upgrade and mas search:
image

Is it required that I download apps with mas install for them to show up with mas list? If not, this may be an issue with Mac Sierra which I am on.

Redownload is not available

mas install 406056744
Didn't downloaded yet

"This redownload is not available for this Apple ID either because it was bought by a different user of the item was refunded or cancelled." Any way to fix this?

[1] 747 illegal hardware instruction mas install 406056744

Is it possible to download updates from more than one App Store?

Many expats including myself have multiple Apple accounts from multiple country app stores.

There is no easy way Apple provides us to update our apps. The App Store app keeps asking to login again and again to different app stores which makes it impossible to automate it. (automator maybe?)

Any chance such a function to be included here?

Kind regards,
Tony

Question about paid apps

Hi,

Just curious to know what happens if I install paid app that I haven't purchased yet ? is there some kind of warning that says I will be charged ?. Compare to apps that you have paid for already ?

thanks

update command line tools

The current functionality doesn't allow for an update of Xcode's Command Line Tools. There isn't an update feature from the installer xcode-select so you have to use the App Store to do so.

Command Line Tools also don't show up in man list so there isn't a way to download them manually as far as I can tell.

Add an 'info' command

Not sure if it's possible, but it would be awesome to have a mas info type command to get more details about the package/id. (similar to homebrew)

⇒  brew info mas
mas: stable 1.2.0 (bottled)
Mac App Store command-line interface
https://github.com/argon/mas
/usr/local/Cellar/mas/1.2.0 (4 files, 6.1M) *
  Poured from bottle
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/mas.rb
mas info 123456
mas info Some App Name Here

If possible, maybe the app name, short description, link to the full appstore page, and whether it's installed or not?

Edit: Looks like the itunes lookup api would provide the required bits of info for this:

Eg. https://itunes.apple.com/lookup?id=886106985

Useful Sounding Keys: kind, features, supportedDevices (filter for OSX), advisories (maybe), fileSizeBytes, averageUserRatingForCurrentVersion, userRatingCountForCurrentVersion, trackContentRating, trackCensoredName, trackViewUrl, contentAdvisoryRating, minimumOsVersion, formattedPrice, wrapperType, version, currency, artistId, artistName, genres, price, description, trackName, trackId, bundleId, releaseDate, primaryGenreName, currentVersionReleaseDate, releaseNotes, sellerName, averageUserRating, userRatingCount

Other Keys: screenshotUrls, ipadScreenshotUrls, appletvScreenshotUrls, artworkUrl512, artistViewUrl, artworkUrl60, artworkUrl100, isGameCenterEnabled, languageCodesISO2A, isVppDeviceBasedLicensingEnabled, primaryGenreId, genreIds

As one possible example:

trackCensoredName: version [currency price or formattedPrice] (genres)
By artistName(or sellerName)
description(limit length to something reasonable)...
Current Rating: averageUserRatingForCurrentVersion, Overall Rating: averageUserRating
sellerUrl
Released: currentVersionReleaseDate
Min OS: minimumOsVersion(could check this against system)
Size: fileSizeBytes(calculated to a pretty value)
From: trackViewUrl

Fails to build on Swift 2.x because thoughtbot/Curry's master is on Swift 3 already

Hi @argon, thanks for the great project ❤️

I've tried to build HEAD with Xcode 7.3.1 (Swift 2.x) and stumbled across multiple compiler errors inside ./Seeds/Curry/Source/Curry.swift — this library has been already migrated to Swift 3.0 while mas isn't there yet (#33).

The problem is that in your Seedfile you don't pin thoughtbot/Curry dependency to any tag but use "master" (aka HEAD) reference instead. I suggest that you'll choose a correct tag that supports Swift 2.x (e.g. tag "v.2.2.0" works great for me) until mas’s codebase is upgraded properly.


Thanks again for your work and have a great day!

Cannot update iTunes

Don't see iTunes in the outdated list and thus cannot update it. I'm currently have iTunes 12.5.1 and AppStore suggests to update it to 12.5.2.

I guess this is somehow related to the fact that I actually didn't get iTunes via AppStore, it was rather preinstalled. But I couldn't find any info about that in docs or issues, so I wonder if this is true.

FYI, mas version: 1.3.1, macOS: 10.12.1

Cannot get it to work on Mavericks

On Mavericks it crashes with:
mas signin [email protected] "**********"
dyld: Library not loaded: /System/Library/PrivateFrameworks/StoreFoundation.framework/Versions/A/StoreFoundation
Referenced from: /Users/frasc/./mas
Reason: image not found
Trace/BPT trap: 5

Is it possible to get it to work on older OS versions ?

Thanks a lot, that's an awesome idea!

mas and tmux

This isn't a bugreport as much as a "hey, look what I found".

If I ssh in to a remote mac (as an admin-enabled user), I can install and run mas, signin and list applications. If I on the other hand start a tmux session and try running mas there, I get errors like this:

$ mas list
Illegal instruction: 4
$ mas account
Not signed in
$ mas signin [email protected] "<password>"
==> Signing in to Apple ID: [email protected]
The operation couldn’t be completed. (MASErrorDomain error 6.)
$ 

Outside of tmux, things work fine. I've not been able to work out what differs between the regular ssh environment and the tmux one, but something happens with tmux that prevents mas from working properly.

Uninstalling app

How is it possible to uninstall packages with this cli tool?
Is this something, which could be developed?

Allow `mas install` to accept multiple arguments

This would allow multiple applications to be installed more concisely when setting up a new machine. The syntax is offered by other package managers like Homebrew and RubyGems.

Current syntax: mas install 1234 && mas install 2345 && mas install 3456
Suggested syntax: mas install 1234 2345 3456

Suggestion - changes to improve automation

I'm running mas over ssh to several machines to automate install of mas apps. Different machines may be signed into different mas accounts, and the apps each one has purchased may be different.

Currently attempting to install an app that's not "purchased" blocks the mas tool. Also not being logged in blocks the tool. Blocks in the sense a dialog would normally pop up when running locally on the machine, but remotely over ssh there is no way to interact with dialog boxes popped up by the Apple MAS app.

The following, which may or may not be possible, would make proper automation possible:

  • A command to have mas list all purchased (available apps) for the logged in user account
  • mas should return an error and quit if an app is not available (not purchased)
  • mas should return an error and quit if user is not logged into the store yet

Suggestion - add restore in-app purchases

Some apps provide additional functionality/pro features as an in-app purchase. Usually the app has a menu item or button in preferences to restore the in-app purchase when the app is reinstalled on a different machine.

Not sure this is possible to do (might be app-specific) but would be great.

mas is working great for me currently with the features it provides.

Install Application by Name

Would it be possible to add the ability to search and install by name, e.g. mas search "Degrees Weather" or mas install "Degrees Weather"

The application ID can be looked up using a URL call:

https://itunes.apple.com/search?entity=macSoftware&term=OneDrive&attribute=allTrackTerm

Which will return a JSON response with matches, including the trackId which is the applications ID number.

Reference: http://www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.html

Display price in search [Enhancement]

(Related to #60)

As of right now, search results look like this:

$ mas search Tweetbot
557168941 Tweetbot for Twitter

I think search results should display the price of an app as well, like this:

$ mas search Tweetbot
> 557168941 ($9.99) Tweetbot for Twitter

Thank you!

Just wanted to say thanks for mas. I just added it to my workstation configuration over at https://github.com/cweagans/workstation and this is really useful for those apps that brew cask can't handle.

This is really really awesome. Thank you!

Upgrade specific app

Need to upgrade just one app instead all list which return mas outdated

It should be mas upgrade -a iMovie

tmux support missing

Most mas commands do not work inside of a tmux session.

Repro

  1. Open a terminal and observe that mas works correctly

$ mas list
2. Install tmux if needed

$ brew install tmux
3. Start new tmux session

$ tmux new -smas-repro
4. Run mas and observe different results

$ mas list

Output

$ mas list
No installed apps found

Maintainer Needed

Due to new work commitments I am no longer permitted to publish code to, or participate in, the mas project. Therefore I am seeking a maintainer to take good care of it and ensure it remains a useful project.

Please DM me via Twitter (@argon) or send an email to the address on my GH profile if you wish to take it over. If you do take it over, please follow these rules:

  • Do not claim to be the original author, so the license should retain my name, but feel free to add yourself to it once you have made any substantial contributions. Please keep my name and Twitter handle intact in the README - but you can move it around as you see fit.
  • If at any point in the future, you want to stop maintaining the project:
    • If you find someone else to takeover the project, please ensure they will continue following these rules.
    • If you cannot find anyone to take it over, please add an unmainted badge (see here) to the README and transfer the project back to my GitHub account (@argon). That will allow me to find a new maintainer myself or to at least keep the project available for historical purposes.
  • My GitHub account (@argon) should continue to be one of the owners of the project, but you will have full control over its future direction.

Add the ability to install programs from a list

When bootstrapping a new computer, I need to go to the Mac App Store to download the apps I need from there. It would be great if I could maintain a list of apps to install via mas list, and then run something like mas install mas-apps.txt on a new computer to ensure that all required apps are installed.

"mas upgrade" command

Instead of:

❯ mas outdated
747648890 Telegram (1.90)
557168941 Tweetbot for Twitter (2.1)

❯ mas install 747648890
==> Downloading Telegram
==> Installed Telegram

❯ mas install 557168941
==> Downloading Tweetbot for Twitter
==> Installed Tweetbot for Twitter

just something like ...

❯ mas upgrade
The following applications are outdated: Telegram (1.90), Tweetbot for Twitter (2.1)
==> Downloading Telegram
==> Installed Telegram
==> Downloading Tweetbot for Twitter
==> Installed Tweetbot for Twitter

Use password prompt for signin

It's a terrible design for passing raw password as an argument.
Your password will be stored in .bash_history.
Use read -s instead.

To sign into the Mac App Store for the first time run mas signin.

$ mas signin [email protected] "ZdkM4f$gzF;gX3ABXNLf8KcCt.x.np"
==> Signing in to Apple ID: [email protected]

Which apple id was an app installed with

Hello - does your app allow people to find out which apple id an app was installed with?

In a company environment, sometimes upgrades are a pain, because different apple Ids were used.

I'm looking for a way to run a script on a computer, to get a list of the MAS apps, but showing which apple id was used for the install.

Is such a think possible, would you happen to know?

Hang up when installing specific app

mas hang up when installing Install OS X El Capitan_10.11 with mas install 1018109117. Meanwhile, there's a dialog "Redownload Unavailable with This Apple ID" popped up with in MAS.

After close the dialog, mas exit with Unknown error.

screen shot 2016-02-15 at 19 32 21

mas signin

Hi
I seem to be having issue where mas things I am not signed in, however when I try signing in I get

❯ mas signin [email protected]
==> Signing in to Apple ID: [email protected]
Password:
Error: Sign in failed: The operation couldn’t be completed. (mas.MASError error 1.)

but when I try installing with mas I get

mas install  715768417

Error: Not signed in

[ERROR] failed to install  715768417

also if I open app store, I am showing as been signed in as I can download software and update.

thanks

Bug? "mas outdated" doesn't show available MAS updates

I also had the problem described elsewhere: needed to run mas signout first in order to do a correct mas signin. (Also did a reboot beforehand to be sure, and also set to "save password" for free downloads in the App Store PrefPane.)

Now there's a different problem: updates are available at the MAS, but mas outdated is showing nothing at all; and the "outdated" option is the primary reason for me to use mas.

System: 10.11.4
Installed with: brew install argon/mas/mas

Unable to re-install app

Is there a mas command to uninstall App Store Apps? When I trash an app from the App Store, I am unable to use mas install to re-install the application. I get a "Warning: App Name is already installed" and running "mas list" shows the app minus the version number. Is there a way to clear this app from the mas list?

Project has not been migrated to Swift 3

==> Downloading https://github.com/argon/mas/archive/v1.2.0.tar.gz
Already downloaded: /Users/kaczmarzyktomasz/Library/Caches/Homebrew/mas-1.2.0.tar.gz
==> gem install bundler
==> script/bootstrap
==> xcodebuild -project mas-cli.xcodeproj -scheme mas-cli -configuration Release
Last 15 lines from /Users/kaczmarzyktomasz/Library/Logs/Homebrew/mas/03.xcodebuild:
guard let updates = updateController.availableUpdates() where updates.count > 0 else {
^
?
/tmp/mas-20160623-1006-1p3ul22/mas-1.2.0/mas-cli/Commands/Version.swift:15:21: error: 'NSBundle' has been renamed to 'Bundle'
let plist = NSBundle.mainBundle().infoDictionary
^~~~~~~~
Bundle

** BUILD FAILED **

The following build commands failed:
CompileSwift normal x86_64
CompileSwiftSources normal x86_64 com.apple.xcode.tools.swift.compiler
(2 failures)

READ THIS: https://git.io/brew-troubleshooting
If reporting this issue please do so at (not Homebrew/brew):
https://github.com/Homebrew/homebrew-core/issues

Warning: You are using OS X 10.12.

Fix this asap

mas install does not work over SSH

mas install only works when running it from a terminal on the intended machine. mas install hangs silently when invoked over SSH. Any idea why?

Purchased Apps Feature (enhancement)

Hi

It's my first time emailing someone on github, Just what I was looking for, but do you think it's possible to add "Purchased Apps" command.

Regards

Display app versions

list command

Current output:

409203825 Numbers
847496013 Deckset
1024069033 Veertu
452840086 Receigen
409201541 Pages

Proposed output:

409203825 Numbers (3.6)
847496013 Deckset (1.6.2)
1024069033 Veertu (1.1.4)
452840086 Receigen (3.4.0)
409201541 Pages (5.6)

outdated command

Current output:

409203825 Numbers (3.6.2)
409201541 Pages (5.6.2)

Proposed output:

409203825 Numbers (3.6 -> 3.6.2)
409201541 Pages (5.6 -> 5.6.2)

I'm working on a PR to implement this feature.
Question: Should I hide this feature under a new flag (e.g. --version) or just make it a default behaviour for both commands?

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.