Code Monkey home page Code Monkey logo

onebusaway-iphone's Introduction

Development work has moved!

All development work on OneBusAway for iOS has moved to the OBAKit repository. This repository is maintained strictly for historical purposes.


OneBusAway for iPhone Build Status codebeat badge Join the OneBusAway chat on Slack

A project of the non-profit Open Transit Software Foundation!

Start Here

  1. Come join our Slack channel to say hi and let us know what you're interested in working on.
  2. We maintain a set of tasks that we think would be good choices for people interested in working on OneBusAway. Learn more about them here: Picking an appropriate first time issue
  3. This project adheres to a Code of Conduct. By participating, you are expected to honor this code.
  4. Now, learn about setting up your development environment.

Test latest development release

Join the TestFlight beta by following this link: https://testflight.apple.com/join/xj9o3Y5y. We have capped it to only work 500 times, so if you run into a problem using it, please email us at [email protected] to be added to our TestFlight Beta testing group.

Contributing

See our contributing guidelines and upcoming milestones. This project adheres to the Open Code of Conduct. By participating, you are expected to honor this code.

Individual Contributor License Agreement (ICLA)

To ensure that the app source code remains fully open-source under a common license, we require that contributors sign an electronic ICLA before contributions can be merged. When you submit a pull request, you'll be prompted by the CLA Assistant to sign the ICLA.

Picking an appropriate first-time issue

You are welcome to work on any bug or feature you would like, but we know that getting started in a new codebase can be intimidating. To that end, we recommend that you take a look at issues labeled as good first issue. These issues are relatively small and self-contained, and should be perfect for anyone who is interested in getting their feet wet with the OneBusAway codebase.

Development environment setup

  1. Install the latest released version of Xcode 10.x from the Mac App Store
  2. git clone your fork
  3. Install Carthage
  4. Build Carthage dependencies: bin/carthage_build --platform iOS --no-use-binaries
  5. open org.onebusaway.iphone.xcodeproj
  6. Create a new Firebase app at https://firebase.google.com/ - You just need the GoogleService-Info.plist file that it'll spit out at you once you've created.
  7. Place GoogleService-Info.plist in the (SOURCEROOT)/AppIdentities/OneBusAway folder.

You should now be able to build. See our contributing guidelines for the specific workflow to add a new feature or bug fix.

Localization Notes

It is vital that any user-facing strings in this project are localized. If your changes reside within the OBA app itself, you must use the NSLocalizedString macro to wrap your localizable strings. If your changes reside within OBAKit, you must make sure that you import the OBAMacros.h header file and use the OBALocalized macro to localize your strings.

Localizers: README

If you are localizing the app: a) thank you so much, and b) you must supply the -s option to genstrings for OBAKit's custom localization macro, like so:

genstrings -s OBALocalized

Updating App Version Numbers

Bundle Version Numbers

The bundle version number should be updated upon every release to TestFlight or the App Store. Run the script bin/version to update the bundle version number. These are the values that take the form 20171021.17.

App Version Numbers

The bundle version number should be updated upon every release to the App Store. Run the script bin/version <VERSION_NUMBER> to update the app version number. For instance, if you are preparing to release version 17.10.0 of the app, you would use the command:

bin/version 17.10.0

Frequently Asked Questions

Swift Compiler Errors

Q: When I compile, I see errors that look like this:

error: module compiled with Swift 4.0 cannot be imported in Swift 4.0.3: /onebusaway/OBAKit/../Carthage/Build/iOS/PromiseKit.framework/Modules/PromiseKit.swiftmodule/x86_64.swiftmodule

What is going on, and how do I fix this?

A: Like the error suggests, this is happening because the project's Carthage frameworks were compiled with an older version of the Swift compiler than the one you have on your computer. You can recompile the Carthage dependencies with this command from the command line:

bin/carthage_build --platform iOS --no-use-binaries

After Carthage finishes, I recommend cleaning your project and possibly deleting all of your build artifacts.

onebusaway-iphone's People

Contributors

aaronbrethorst avatar aengusmcmillin avatar apollozhu avatar barbeau avatar bbodenmiller avatar bdferris avatar beliyd avatar cagryinside avatar caitbonnar avatar cathy810218 avatar chadsy avatar gitter-badger avatar heckj avatar icecrystal23 avatar jefk avatar jgriffin avatar jxpearce-godaddy avatar kevinvanderlugt avatar ksslng avatar kycook avatar neophit avatar oey192 avatar sergtsaeb avatar sethfri avatar sgl0v avatar themonki avatar tomtclai avatar ualch9 avatar victorray84 avatar yogipatel 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

onebusaway-iphone's Issues

Update credits

Need to review and update all credits. Contributors section likely should just link to GitHub contributors page.

panning from search should dismiss search bar

If the user has clicked in to the search bar and then starts panning the map I think we should dismiss the search bar rather than forcing them to push Cancel. It shouldn't lose whatever they have typed but rather do exactly what Cancel does.

Update 1.2 testing

Hi everyone,

I've been running @ksslng's build for the past few days on my iPhone 5, and it is looking stable enough on its own to put into the testing phase, so I'd like to go ahead and jump into testing for release. (Looks like we can probably go ahead and merge this directly into the master soon as well.)

It'd be awesome to get as many testers as possible. If you'd like to test on your own device(s), here are some instructions for installing (it only takes a few minutes to set up and you don't need to sign up for anything, which is really nice):

  1. Go to: http://macbuildserver.com/try/
  2. Enter git://github.com/ksslng/onebusaway-iphone.git as the GitHub repo, hit next.
  3. Once it's done cloning, select org.onebusaway.iphone.xcodeproj as the project, and "OneBusAway - AdHocDistribution" as the build config. (I actually haven't tried the others, but they may work as well.)
  4. Skip the signing step, as we are going to use their certificate.
  5. Download and drag into iTunes, then install on iPhone/iPod, or directly install OTA from your device. :-)

I probably didn't need to go through these with you guys, but there they are just in case. Let me know if you have any problems getting it to work.

Also, I don't know what the standard practice is here, but I was thinking we could post minor issues on this thread and create a new open issue for anything major. If that's not standard or you want to do it another way, I'm open to suggestions. Personally I don't like too much clutter in issues list, but I think I can manage. :-)

We want to test on as many different Apple devices as possible, so please specify which one you are testing on and what bugs you find, if any. I am going to also post on the developer's list soon, so hopefully there will be others willing to test there as well.

Thanks, and happy testing!!

Fix current location dot issues

  1. Select current location button
  2. Touch, drag map right, untouch
  3. Touch, drag map left, untouch
  4. Repeat steps 2 & 3 lots of times quickly. You'll see the dot randomly disappear. If you go in to apple maps you can see it does not have this issue.

Stop search - no result

The stop search functionality is slightly different between the iPhone and Android apps. One feature of the Android app which makes more sense than the iPhone impl is that when you search by stop number and there are no results, it's not clear that an error has occurred (or that there are no stops matching the search string)

  • The map currently zooms in, there's no reason the map region should change
  • "Search: Stop # 1" should probably be changed to "No results for stop 1" or "There are no results that match your search" (as the Android app reports)

Don't animate the map zoom on application launch

When you first open the app it starts at a very high zoom level and zooms in to your current location. I think we should take Google and Apple Maps lead and just start at the current users location.

search as user types

similar to google and apple maps would be great if search displayed results as user typed.

After entering a new API endpoint, iPhone OBA app crashes when searching by route

Follow these steps to point the OBA iPhone app at our Tampa server:
https://github.com/CUTR-at-USF/onebusaway-application-modules/wiki/Tampa-Third-Party-Mobile-Apps

Then tap on the "Search" tab at the bottom of the app.

Enter a route number (e.g., 5), and press "Search" on the keyboard. The app should crash and exit.

Note that searching by stop ID on the same page (e.g., 3105) as well as searching by address works fine, and shows the location of that stop or address on the map.

After entering a new API endpoint, Trip Details screens say "Trip not found"

If I follow these steps to point the OBA iPhone app at our Tampa server:
https://github.com/CUTR-at-USF/onebusaway-application-modules/wiki/Tampa-Third-Party-Mobile-Apps

...and then tap on any stops, it will show the estimated arrivals for that stop correctly.

If I tap on one of the estimated arrivals, it takes me to the screen shown under the "Trip Details" heading here, which is also correct behavior:
http://onebusaway.org/p/Tools_IPhone.action

However, if I tap on "Show as Map", it takes me to a map with zoom level at the world view with a header "Trip not found" (see attached).
20130225_114010

Additionally, if I tap on "Show as list", it takes me to an empty list with the
word "Loading..." and a header of "Trip not found" (see attached).

20130225_114402

I'm guessing these two features are still hardcoded to the original API endpoint and don't get redirected upon entering a new endpoint.

After entering a new API endpoint, iPhone OBA app doesn't allow trip problem reporting

Follow these steps to point the OBA iPhone app at our Tampa server:
https://github.com/CUTR-at-USF/onebusaway-application-modules/wiki/Tampa-Third-Party-Mobile-Apps

Then, tap on any stop to bring up the list of arrival times.

Then, tap on "Report a Problem".

Then, tap on "A bus/train/etc at this stop".

It should show you a list of trips to pick from.

Here, if you tap on a trip, it just highlights the trip in the list but doesn't do anything. (see attached)

20130226_163421

It should let you proceed to fill out a form and report a problem with the trip.

Note that if you choose to report a problem for a bus stop, it works fine and the problem shows up in the OBA Admin console.

New OBA server API endpoint info isn't saved if "Done" on keyboard is tapped after entering address

The OBA iPhone app currently has an option under "More->Settings" to change the OBA server API endpoint the app is pointed at. This allows the existing OBA iPhone app in the app store to work with new OBA instances.

Currently, there is a quirk in the process of entering the API endpoint information that can cause the app to crash and not save the new endpoint info.

Steps to reproduce issue:

  1. Open app, go to "More->Settings"
  2. Enter text in the "API Server" field
  3. Tap "Done" on the keyboard to hide it.

The app should crash. The API endpoint information seems to appear correctly in the "API Server" field if you browse back to this screen, but the app doesn't appear to be able to connect to the server.

Current Workaround:

  1. Open app, go to "More->Settings"
  2. Enter text in the "API Server" field
  3. Instead of tapping "Done", press the "More" button in the upper-left corner of the screen to return to the main OBA screen.

Using this workaround, the API info is saved properly and the app is able to connect to the new OBA server API endpoint.

Test & setup OBA app testing platform

The OBA iPhone app needs an easy way for users without the XCode development environment setup to test the latest (or near latest) builds. This conversation started at #5. It has been suggested that TestFlight may be the easiest way to distribute test builds to many users without special provisioning through Apple servers.

Also would be great to have a chatroom like campfirenow.

Unable to checkout iPhone code

$ git submodule init
Submodule 'Libraries/InAppSettingsKit' (https://github.com/futuretap/InAppSettingsKit.git) registered for path 'Libraries/InAppSettingsKit'
Submodule 'Libraries/json-framework' (https://github.com/stig/json-framework.git) registered for path 'Libraries/json-framework'
Submodule 'Libraries/onebusaway-iphone-common' (https://github.com/OneBusAway/onebusaway-iphone-common) registered for path 'Libraries/onebusaway-iphone-common'

$ git submodule update
Cloning into Libraries/InAppSettingsKit...
remote: Counting objects: 1257, done.
remote: Compressing objects: 100% (634/634), done.
remote: Total 1257 (delta 831), reused 995 (delta 586)
Receiving objects: 100% (1257/1257), 234.44 KiB | 197 KiB/s, done.
Resolving deltas: 100% (831/831), done.
Submodule path 'Libraries/InAppSettingsKit': checked out '5e0cae80a3eaeffa45b7a1236aca54152e35ba65'
Cloning into Libraries/json-framework...
remote: Counting objects: 6024, done.
remote: Compressing objects: 100% (1819/1819), done.
remote: Total 6024 (delta 3999), reused 5843 (delta 3838)
Receiving objects: 100% (6024/6024), 1.16 MiB | 510 KiB/s, done.
Resolving deltas: 100% (3999/3999), done.
Submodule path 'Libraries/json-framework': checked out '87a86811ba7cf76bbdaa0c378d0bfb0d38ae5a29'
Cloning into Libraries/onebusaway-iphone-common...
remote: Counting objects: 605, done.
remote: Compressing objects: 100% (378/378), done.
remote: Total 605 (delta 224), reused 599 (delta 218)
Receiving objects: 100% (605/605), 1.59 MiB | 612 KiB/s, done.
Resolving deltas: 100% (224/224), done.
fatal: reference is not a tree: bfdbd482e8598b4cddd46c7e0387de4e798d3f59
Unable to checkout 'bfdbd482e8598b4cddd46c7e0387de4e798d3f59' in submodule path 'Libraries/onebusaway-iphone-common'

It appears there are a few commits that were added to the submodule but haven't been pushed to onebusaway-iphone-common.

commit a868d6f2ca7d72252acb268f5d8dc98581d92807
Merge: b4ef6c6 0071896
Author: Brian Ferris <[email protected]>
Date:   Thu May 3 22:26:26 2012 +0200

    Merge branch 'master' of github.com:OneBusAway/onebusaway-iphone

    Conflicts:
        README.md

commit b4ef6c60225888ce82bb25ff561b8864594afe84
Author: Brian Ferris <[email protected]>
Date:   Thu May 3 22:25:18 2012 +0200

    A number of updates to make this thing build.

commit 0071896409da39ff584680084fdcd9202d9a359b
Author: Brian Ferris <[email protected]>
Date:   Mon Apr 16 22:58:20 2012 +0300

    Update README.md

commit 81cee6c1a7dc9e25e917b8f389c159ab67c1f9bd
Author: Brian Ferris <[email protected]>
Date:   Mon Apr 16 21:52:50 2012 +0200

    Update build instructions.

commit 752cd163e842bcc75f49e5d7955997b5e44986ca
Author: Brian Ferris <[email protected]>
Date:   Mon Apr 16 21:46:48 2012 +0200

    Add readme file with build instructions.

rapidride search issues

Searching for:

  • a
  • b
  • c
  • d
  • rapidride

Returns no results.

Searching for "A line" returns a list where I can't click either option.

Searching for "B line" returns the A line.

/cc @ksslng @caitbonnar

Advanced Settings for API Server fails if Done button clicked

When entering a new URL or IP Address in Advance Settings for API Server, clicking the done button causes an immediate app failure. Often it also truncates the URL or IP Address entered.

Note that the setting can be successfully saved through the work-around of clicking the More button at the top of the screen rather than the Done button.

Steps to reproduce:

  1. Click the More button at bottom of screen
  2. Click Settings
  3. Enter new (or same) URL or IP Address in API Server field
  4. Click Done button in the keyboard

Behavior:

The app immediately shuts down / fails. The user must restart the app to proceed. Often the URL or IP Address entered is truncated. If the API Server entry is truncated, users will experience connection errors. They have to figure out the need to navigate back to Advanced Settings to fix the entry. They also have to figure out that only by immediately clicking the More button at the top of the screen are they able to successfully save the new setting.

ui refresh

What should the initial UI refresh look like? Here is the starting point:

d53bc03a-ea3e-11e2-85d9-15faaac806ce
photo 1
photo 2
photo 3
photo 4
photo 5

stops missing after showing agencies on map

It appears if you select Info, Agencies, Show on map stops will not appear on the map anymore by browsing it (or looking at the list) until you force quit the application.

can't rename existing bookmarks

In 1.1.4 you could rename existing bookmarks via the edit button on bookmarks tab. In 1.2 (previously called 1.1.5) you can only rearrange the order but not the name. @ksslng @caitbonnar this is a lose of functionality so I think we should address.

Show stop icons at a higher (i.e., more zoomed out) zoom level

Originally referenced in #42.

The apps cuts off the view of icons at too low a zoom level. Right now I'm several blocks from transit service that I wanted to look at, which requires me to zoom out, pan elsewhere, and then zoom back in to get stop icons to appear on the map. And if I zoom out by a step or so, the icons disappear and again prompt me to "Zoom in to look for stops".

In contrast, in the Android app I can zoom out to almost the city level and still get icons for all the stops on the map.

We should allow stop icons to be shown at least a few zoom levels higher than the current cutoff that triggers the "Zoom in to look for stops" prompt.

Arrivals for transfer stop should take into account ETA of selected trip

From the Trip Schedule list, it's possible to select a stop further along the selected trip (and the ETA at that stop is shown in the list).

If I'm on a bus that takes an hour to reach the stop I get off at, and I want to transfer to another service once I get there, the arrivals screen for that stop should show arrivals expected to arrive at my ETA, not now.

The arrivals-and-departures-for-stop service has an optional "time=n" parameter, this should be provided by the Trip Schedule list when a stop is selected.

let's use api.pugetsound.onebusaway.org for the default API server for the new app

Hi - for the new app version of the app that just integrates the branches and fixes the aspect ratio problem (but that doesn't integrate full multi-region support) let's use api.pugetsound.onebusaway.org for the default API server. This is trivial to change, and will make it clearer what is going on for people using the app in a different region in the meantime.

This will no longer be relevant when we go to multi-region support of course.

Small number of users occasionally lose ability to connect to API

We have a pattern of a few users simply losing the ability to connect to OBA following a data bundle update. For any given update, we hear from a half dozen or more users. This also may be occurring in relationship to other changes such as DNS updates, etc. But the most clear pattern to date is emerging in relationship to data bundle updates, after which we consistently hear from a small number of users who can't connect.

We provide the users with three possible actions to correct:

  • Stop and restart OBA
  • Shutdown the iPhone then restart OBA
  • Reinstall OBA

It's a bit difficult to get followup from what eventually works for users, and we are attempting to gather better stats. At this point, it seems that it is fairly evenly spread across the three actions listed above.

I am entering this bug to both initiate an investigation of root causes if practical, and to also see if other OBA Operators are experiencing similar user impact.

For background, we utilize a rolling update to a pair of TDS Servers operating through a load balancer for fault tolerance. To update data bundles, the first server is disabled, updated, tested then re-enabled. Then we repeat the process for the second server. This works great, allowing four nines availability with no effective downtime for users other than the few mentioned above. Validation conducted directly against API has never resulted in failure to connect to the TDS server throgh the API, so this seems to be something to do with some condition that the native app is experiencing but not coping with consistently. We have also not had similar reports from users of either Android or Windows phones. Or at least not that I have noticed.

Happy to provide any further information / support needed. It's a gnarly one, probs, but definitely helpful to users going forward.

show visual feedback on zoom to current location button

When the current location is being tracked fill in icon but when user pans unfill icon to indicate current location is not being followed. For an example see the Apple Maps app. Also most other maps show this in the lower left.

Route filtering missing in 1.1.5

The ability to filter a stop by routes is no longer available in the 1.1.5 test build.

  1. Tap into a stop
  2. Scroll to bottom of view beneath routes

Expected: Row with "Filter & Sort Routes" available for selecting which routes at that stop should be visible.

Actual: There is no filter cell in the table. I haven't had a chance to look into the code yet, but I wanted to raise this early.

beta
production

look in to reminders feature

oba android has a reminders feature. we should look into what this is and if we should add it to the iphone version.

1.1.5 crashes on iOS 5.1.1

As per @barbeau #18 (comment)

1.1.5rc3 crashes on startup on my iPod Touch 3rd generation (MC011LL) with iOS 5.1.1 (9B206). The app opens and I see blank map tiles for about half a second, and then it closes.

System log:

Jul 15 11:39:28 OneBusAway[14473] <Warning> *** -[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
Jul 15 11:39:28 OneBusAway[14473] <Warning> *** -[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
Jul 15 11:39:28 OneBusAway[14473] <Warning> *** -[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
Jul 15 11:39:28 OneBusAway[14473] <Warning> *** -[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
Jul 15 11:39:28 OneBusAway[14473] <Warning> *** -[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
...
Jul 15 11:39:29 OneBusAway[14473] <Error> *** Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named NSLayoutConstraint'
*** First throw call stack:
(0x35d3488f 0x30caa259 0x35d34789 0x35d347ab 0x3190054d 0x319006bb 0x31900423 0x31891001 0x317ff3c7 0x316dcc59 0x31652c17 0x31677481 0x3163bbd5 0x316fe359 0x316443b5 0x316443d1 0x316443d1 0x31644263 0x3164423f 0x113bd7 0x113c49 0x31651cab 0x3164b7dd 0x31619ac3 0x31619567 0x31618f3b 0x3159022b 0x35d08523 0x35d084c5 0x35d07313 0x35c8a4a5 0x35c8a36d 0x3164a86b 0x31647cd5 0xf3057 0xf3030)
Jul 15 11:39:30 ReportCrash[14478] <Notice> Formulating crash report for process OneBusAway[14473]
Jul 15 11:39:30 com.apple.launchd[1] <Warning> (UIKitApplication:com.macbuildserver.helloapp[0xe2ab]) Job appears to have crashed: Abort trap: 6
Jul 15 11:39:30 SpringBoard[52] <Warning> Application 'OneBusAway' exited abnormally with signal 6: Abort trap: 6
Jul 15 11:39:30 SpringBoard[52] <Warning> Unable to deliver SBApplicationNotificationStateChanged notification to port com.apple.springboard.appstatechanged: (ipc/send) timed out
Jul 15 11:39:30 geod[8228] <Warning> Can't get bundle identifier for process 14473
Jul 15 11:39:31 ReportCrash[14478] <Notice> Saved crashreport to /var/mobile/Library/Logs/CrashReporter/OneBusAway_2013-07-15-113929_Seans-iPod-Touch.plist using uid: 0 gid: 0, synthetic_euid: 501 egid: 0
Jul 15 11:40:00 SpringBoard[52] <Warning> Unable to deliver SBApplicationNotificationStateChanged notification to port com.apple.springboard.appstatechanged: (ipc/send) timed out
Jul 15 11:43:04 SpringBoard[52] <Warning> Unable to deliver SBApplicationNotificationStateChanged notification to port com.apple.springboard.appstatechanged: (ipc/send) timed out
Jul 15 11:43:04 SpringBoard[52] <Warning> Unable to deliver SBApplicationNotificationStateChanged notification to port com.apple.springboard.appstatechanged: (ipc/send) timed out
Jul 15 11:43:06 SpringBoard[52] <Warning> Unable to deliver SBApplicationNotificationStateChanged notification to port com.apple.springboard.appstatechanged: (ipc/send) timed out

Full crash report is here:
https://www.dropbox.com/s/djc4rte22vewpca/OneBusAway_2013-07-15-115107_Seans-iPod-Touch.crash

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.