Giter VIP home page Giter VIP logo

privacy-friendly-sudoku's Introduction

PFA Twitter Mastodon

Privacy Friendly Sudoku Icon

Privacy Friendly Sudoku

Get it on F-Droid

Privacy Friendly Sudoku is a logic based game. This app belongs to the group of Privacy Friendly Apps developed by the SECUSO Group at Karlsruher Institute for Technology (KIT). It is optimized regarding the user's privacy. It doesn't use any tracking mechanisms, neither it displays any advertisement. Also it does not use any permission, as the app can provide its full functionality without the usage of permissions.

Motivation

Privacy Friendly Apps are group of Android applications which are optimized regarding privacy. Further information can be found on https://secuso.org/pfa

Building

Further development requires Android Studio, we recommend to use the latest version.

API Reference

Mininum SDK: 16 Target SDK: 33

Data Backup

You can use the Privacy Friendly Backup app to backup and restore this application's data. This can also be used to migrate your data to a new phone.

License

Privacy Friendly Sudoku is lisenced under the GPLv3.
Copyright (C) 2016-2018 Christopher Beckmann and Timm Lippert
Copyright (C) 2018-2021 Christopher Beckmann

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

The icons used in the nagivation drawer are licensed under the CC BY 2.5. In addition to them the app uses icons from Google Design Material Icons licensed under Apache License Version 2.0. All other images (the logo of Privacy Friendly Apps, the SECUSO logo, the splash screen logo and the header in the navigation drawer) copyright SECUSO (2019-2024).

The icons ic_trophy_award_black_48dp and ic_trophy_black_48dp are licensed under the Sil Open Font License Version 1.1.

Contributors

App-Icon: Markus Hau

privacy-friendly-sudoku's People

Contributors

agmagor avatar brainyperfect avatar coderpaddys avatar github-actions[bot] avatar gongxter avatar hugomg avatar hype11 avatar jahway603 avatar kamuno avatar lna91 avatar naofum avatar rdatta95 avatar sleep-yearning avatar udenr avatar waldist avatar xinxinxinxinxin avatar yonjuni 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

privacy-friendly-sudoku's Issues

It would be nice if saved games remembered the undo history.

If we leave the game by pressing the back button or by exiting the app then the game's undo history is lost. I sometimes run into this problem when I accidentally press the back button in the middle of a long "trial and error" deduction. When that happens I can't undo those moves anymore and basically have to reset the puzzle and start again from scratch.

High Power Drain

Sudoku used 7% of my battery in 3 minutes.

Sony Xperia Z1
Kitkat 4.4.4

java.lang.IllegalArgumentException

java.lang.RuntimeException: at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4226) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4328) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3427) at android.app.ActivityThread.access$1100(ActivityThread.java:229) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:7407) at java.lang.reflect.Method.invoke(Native Method:0) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) Caused by: java.lang.IllegalArgumentException: at java.lang.Enum.valueOf(Enum.java:200) at org.secuso.privacyfriendlysudoku.ui.GameActivity.onResume(GameActivity.java:250) at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1287) at android.app.Activity.performResume(Activity.java:7015) at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4215)

java.lang.RuntimeException: android.os.TransactionTooLargeException

java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 1106044 bytes
	at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3755)
	at android.os.Handler.handleCallback(Handler.java:751)
	at android.os.Handler.dispatchMessage(Handler.java:95)
	at android.os.Looper.loop(Looper.java:154)
	at android.app.ActivityThread.main(ActivityThread.java:6088)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Caused by: android.os.TransactionTooLargeException: data parcel size 1106044 bytes
	at android.os.BinderProxy.transactNative(Native Method)
	at android.os.BinderProxy.transact(Binder.java:615)
	at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:3628)
	at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3747)
	... 7 more

autosave games

because of #8, i recently saw my phone power down in the middle of a "difficult"-level game. when i restarted the phone, the game was gone!!! i was expecting the game to be automatically saved because there is a "continue" button on the main screen.

Allow switching between big and small numbers easily

When adding small numbers, sometimes it becomes obvious that that number can only be in one box, and so I need to switch to big numbers, enter it, then back to small numbers to continue working through the puzzle.

I'd like to propose allowing to enter big numbers when in small numbers mode by long-pressing in a box, and vice versa. I think this will help make the app more user-friendly.

Adjust difficulty levels

The levels in Sudoku are too hard compared to other applications and "offline" Sudokus.
The levels must be adjusted.

Highlight cells with distinct color

It would be helpful if we could see cells populated originally in one color, cells populated by us in another color, and cells penciled in with a given value in a third color.

NullPointer onClick in Tutorial

java.lang.NullPointerException: at org.secuso.privacyfriendlysudoku.ui.TutorialActivity.launchHomeScreen(TutorialActivity.java:133) at org.secuso.privacyfriendlysudoku.ui.TutorialActivity.access$000(TutorialActivity.java:30) at org.secuso.privacyfriendlysudoku.ui.TutorialActivity$2.onClick(TutorialActivity.java:103) at android.view.View.performClick(View.java:5721) at android.widget.TextView.performClick(TextView.java:10949) at android.view.View$PerformClick.run(View.java:22624) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:7407) at java.lang.reflect.Method.invoke(Native Method:0) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

Copyright violation

Hi @SecUSo

I found this app and also this one on the Google Play Store. This guy just took your source code, added some ads in it or made it payable and put it on the Store, without warning this is free software...

As you are the owner of the source code, feel free to open a request to google here to remove the false app from the Store, if it's your wish ;)

Don't forget to tell Google that:

  • The app is licensed under GNU GPL v3 license and this guy is violating it;
  • He is falsely claiming he made the app.

Marking number complete

Suggestion for enhancement:
upon completion of a number, immediately mark the number button yellow (or some other colour). Currently the yellow line only appears when you press the number button again or switch to another number. This means that sometimes I'm checking all boxes to see whether they contain the number I'm working on, whereas it would be great if this could be shown visually immediately when entering the last of that particular number.

Allow creating personal Sudoku puzzles

Hello,
I've been using your app for some time and really like it. I'd really like to be able to add personal puzzles in order to be able to solve them in your neat interface.
Thanks

Main screen for play is broken

Phone : Wiko Ozzy
Android version : 4.2.2
App version : 2.1.1
Language : French

Scenario :

Open the application
Open a new 9*9 game

Expected behaviour :

Game is playable

Current behaviour :

Screen is broken

screenshot_2018-01-05-00-59-11

NullPointer in AboutActivity

java.lang.RuntimeException: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2583) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2665) at android.app.ActivityThread.-wrap11(ActivityThread.java:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1499) at android.os.Handler.dispatchMessage(Handler.java:111) at android.os.Looper.loop(Looper.java:207) at android.app.ActivityThread.main(ActivityThread.java:5765) at java.lang.reflect.Method.invoke(Native Method:0) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679) Caused by: java.lang.NullPointerException: at org.secuso.privacyfriendlysudoku.ui.AboutActivity.onCreate(AboutActivity.java:23) at android.app.Activity.performCreate(Activity.java:6318) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1113) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2530)

Cleanup unused Code

esp. the NewLevelManager and QQWingGenerator has a lot of dead code now because of the restructuring.

java.lang.reflect.InvocationTargetException

java.lang.IllegalStateException: at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293) at android.view.View.performClick(View.java:5721) at android.widget.TextView.performClick(TextView.java:10949) at android.view.View$PerformClick.run(View.java:22624) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:7407) at java.lang.reflect.Method.invoke(Native Method:0) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) Caused by: java.lang.reflect.InvocationTargetException: at java.lang.reflect.Method.invoke(Native Method:0) at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)

high CPU-usage & unlimited increase of battery temperature

I recognized a constant high CPU usage, which results in a unlimited increase and harmful battery temperature. I tried to configure the app to minimalistic features but this doesn't solve the issue.

On the Fairphone 2 it takes about 5 min and on the HTC One m8 it takes about 15 min to resch > 42°C. Both devices running LineageOS 14.1

It's pity, because this is the best Sudoku app i ever played on Android and i would be totally happy to play one round without a break.

Adding an 16x16 variant

Maybe you could add an 16x16 variant?
I find the 12x12 a bit wired because the layout is not square...

ksenofobia CONTRIBUTING.md / xenophobic CONTRIBUTING.md

EO
Mi havas peton pri motivo de la jena regulo en CONTRIBUTING.md:

Unwanted Changes:
New translations/languages

Bonvolu klarigi kiel tradukoj de la aplikaĵo kontraŭas al privateco de la uzanto.
Se vi plue decidos al rifuzi la kunfand-petojn #48 k #15, bonvolu konsideri ŝanĝi la titolon de la aplikaĵo al:
Privacy Friendly Sudoku Only For English People

——————————————————
EN (automatic translation)
I have a request for a reason for the following rule in CONTRIBUTING.md:

Unwanted Changes:
New translations / languages

Please explain how translations of the application are contrary to the user's privacy.
If you further decide to reject the merge requests #48 & #15, please consider changing the title of the application to:
Privacy Friendly Sudoku Only For English People

——————————————————
DE (automatische Übersetzung)
Ich habe eine Anfrage nach einem Grund für die folgende Regel in CONTRIBUTING.md:

Unwanted Changes:
New translations/languages

Bitte erläutern Sie, inwiefern Übersetzungen der Anwendung die Privatsphäre des Benutzers verletzen.
Wenn Sie die Zusammenführungsanforderungen #48 und #15 weiter ablehnen möchten, sollten Sie den Titel der Anwendung in Folgendes ändern:
Privacy Friendly Sudoku Only For English People

Battery drain

Hello, the app drains my phone's battery really fast, playing for 2 hours can drain it completely. OpenSudoku for comparison doesn't do that, so it's definitely not a device problem.

java.lang.IndexOutOfBoundsException

Reported from Android 6.0

java.lang.IndexOutOfBoundsException
	at android.graphics.Canvas.drawText(Canvas.java:1696)
	at android.text.Layout.drawText(Layout.java:410)
	at android.widget.Editor.drawHardwareAccelerated(Editor.java:1752)
	at android.widget.Editor.onDraw(Editor.java:1674)
	at android.widget.TextView.onDraw(TextView.java:5719)
	at android.view.View.draw(View.java:16270)
	at android.view.View.updateDisplayListIfDirty(View.java:15267)
	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3594)
	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3574)
	at android.view.View.updateDisplayListIfDirty(View.java:15227)
	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3594)
	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3574)
	at android.view.View.updateDisplayListIfDirty(View.java:15227)
	at android.view.View.draw(View.java:16040)
	at android.view.ViewGroup.drawChild(ViewGroup.java:3610)
	at android.support.design.widget.CoordinatorLayout.drawChild(CoordinatorLayout.java:1195)
	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400)
	at android.view.View.draw(View.java:16273)
	at android.view.View.updateDisplayListIfDirty(View.java:15267)
	at android.view.View.draw(View.java:16040)
	at android.view.ViewGroup.drawChild(ViewGroup.java:3610)
	at android.support.v4.widget.DrawerLayout.drawChild(DrawerLayout.java:1379)
	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400)
	at android.view.View.draw(View.java:16273)
	at android.view.View.updateDisplayListIfDirty(View.java:15267)
	at android.view.View.draw(View.java:16040)
	at android.view.ViewGroup.drawChild(ViewGroup.java:3610)
	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400)
	at android.view.View.updateDisplayListIfDirty(View.java:15262)
	at android.view.View.draw(View.java:16040)
	at android.view.ViewGroup.drawChild(ViewGroup.java:3610)
	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400)
	at android.view.View.updateDisplayListIfDirty(View.java:15262)
	at android.view.View.draw(View.java:16040)
	at android.view.ViewGroup.drawChild(ViewGroup.java:3610)
	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400)
	at android.view.View.updateDisplayListIfDirty(View.java:15262)
	at android.view.View.draw(View.java:16040)
	at android.view.ViewGroup.drawChild(ViewGroup.java:3610)
	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400)
	at android.view.View.updateDisplayListIfDirty(View.java:15262)
	at android.view.View.draw(View.java:16040)
	at android.view.ViewGroup.drawChild(ViewGroup.java:3610)
	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400)
	at android.view.View.draw(View.java:16273)
	at com.android.internal.policy.PhoneWindow$DecorView.draw(PhoneWindow.java:2697)
	at android.view.View.updateDisplayListIfDirty(View.java:15267)
	at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:281)
	at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:287)
	at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:322)
	at android.view.ViewRootImpl.draw(ViewRootImpl.java:2619)
	at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2438)
	at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2071)
	at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1111)
	at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6017)
	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
	at android.view.Choreographer.doCallbacks(Choreographer.java:670)
	at android.view.Choreographer.doFrame(Choreographer.java:606)
	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
	at android.os.Handler.handleCallback(Handler.java:739)
	at android.os.Handler.dispatchMessage(Handler.java:95)
	at android.os.Looper.loop(Looper.java:234)
	at android.app.ActivityThread.main(ActivityThread.java:5526)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Small screens

After the recent updates (starting with 3.0.0 and getting worse with 3.0.1) the game becomes unplayable for me:
Screenshot_20201012-215839

Here are some other screenshots …
Watch the date – level overlap:
Screenshot_20201012-215855

Watch the stars overflowing the borders:
Screenshot_20201012-215849

I admit, it is phone with a really small screen, but it worked with the 2.2.x series …

This is on Android 8.1 and on a Jelly Pro phone.

InstantiationException

java.lang.RuntimeException: 
  at android.app.ActivityThread.handleCreateService(ActivityThread.java:3842)
  at android.app.ActivityThread.access$2100(ActivityThread.java:229)
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1909)
  at android.os.Handler.dispatchMessage(Handler.java:102)
  at android.os.Looper.loop(Looper.java:148)
  at android.app.ActivityThread.main(ActivityThread.java:7407)
  at java.lang.reflect.Method.invoke(Native Method:0)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by: java.lang.InstantiationException: 
  at java.lang.Class.newInstance(Native Method:0)
  at android.app.ActivityThread.handleCreateService(ActivityThread.java:3839)

upgrade to targetSdkVersion 28

Hello,
When I use targetSdkVersion 26 the application works fine in my smart phone but once I change it to targetSdkVersion 28 it goes throw the tutorial and then crashed.
Any Idea about this issue?
Chaker

Warn of obvious mistakes

Great app. It would be nice if the app would mark obvious wrong entries (e.g. same number already exists in line, column or square) and thus warn the user about them. If you say this would not be desirable for everyone because of higher/lower difficulty it could be configurable and either be on or off by default.

Settings design

The top page of settings has to follow the same design as the sub pages.

java.lang.IllegalStateException

java.lang.RuntimeException: at android.app.LoadedApk.makeApplication(LoadedApk.java:516) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4553) at android.app.ActivityThread.access$1500(ActivityThread.java:139) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1353) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:149) at android.app.ActivityThread.main(ActivityThread.java:5257) at java.lang.reflect.Method.invokeNative(Native Method:0) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:610) at dalvik.system.NativeStart.main(Native Method:0) Caused by: java.lang.IllegalStateException: at android.app.LoadedApk.initializeJavaContextClassLoader(LoadedApk.java:376) at android.app.LoadedApk.getClassLoader(LoadedApk.java:329) at android.app.LoadedApk.makeApplication(LoadedApk.java:508)

Add layout for 6"/7" tablets

Hi,
I have Sudoku v2.0.1 from fdroid running on a fire tablet 7" with Android 5.1.1.

  • The grid has different border sizes, sometimes gray
  • The Notes are pixelated
  • Numbers on the buttons are too small
  • Border of the buttons in the last row are too big

screenshot

java.lang.RuntimeException in easy level

Reported from Android Version 5.0 while playing in an easy level.

java.lang.RuntimeException: Unable to start activity ComponentInfo{org.secuso.privacyfriendlysudoku/org.secuso.privacyfriendlysudoku.ui.GameActivity}: java.lang.IllegalArgumentException: Saved level is does not have the correct size.
	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2534)
	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2614)
	at android.app.ActivityThread.access$800(ActivityThread.java:178)
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470)
	at android.os.Handler.dispatchMessage(Handler.java:111)
	at android.os.Looper.loop(Looper.java:194)
	at android.app.ActivityThread.main(ActivityThread.java:5650)
	at java.lang.reflect.Method.invoke(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:372)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
Caused by: java.lang.IllegalArgumentException: Saved level is does not have the correct size.
	at org.secuso.privacyfriendlysudoku.controller.NewLevelManager.loadLevel(NewLevelManager.java:107)
	at org.secuso.privacyfriendlysudoku.controller.GameController.loadNewLevel(GameController.java:101)
	at org.secuso.privacyfriendlysudoku.ui.GameActivity.onCreate(GameActivity.java:119)
	at android.app.Activity.performCreate(Activity.java:6092)
	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1112)
	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2481)
	... 10 more

Add new tutorial design from example app

Overlapping small chinese numbers on 12x12

When using chinese numbers, the number 10 is 十; 11 is 十一; and 12 is 十二.
If 10 and 11 are marked on the same square (as small numbers), the 十 on both of them overlaps perfectly, making it impossible to discern whether number 10 is there or not.

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.