Git Product home page Git Product logo

screenshottile's Introduction

app icon ScreenshotTile (NoRoot)

License: GPL v3 F-Droid Play Store Download APK file Downloads F-Droid build status 🔨 Gradle Build

Get it on F-Droid            Consider donating to F-Droid

Screenshot Tile for Android 7.0+ without requiring root access

Video:

Video screenshot

Fork of github.com/ipcjs/ScreenshotTile

Table of Contents

ChangelogView older releasesGoogle store

Languages

To help translate this app, please visit crowdin.com, where the localizations are managed. If you like to add a new language, please open an issue or email me and I will add it.

Crowdin | Agile localization for tech companies

You may translate the resource files directly and open a pull request. The English source is in /app/src/main/res/values/strings.xml and the translated files are stored in /app/src/main/res/values-XX/strings.xml (XX = language code)

Contributors & libraries

Contributors

The internal image editor and image library used is github.com/burhanrashid52/PhotoEditor (MIT license) by Burhanuddin Rashid.

Technical details

This app supports three different methods to take screenshots

Legacy/Original method Legacy method switch on

This method uses the screen recording/screen cast capabilities of Android to record a single frame.

Requirements:

Properties:

  • Custom storage location
  • Custom format
  • Custom notification
  • Before Android 9 the ScreenCaptureIntent/MediaProjection permission was only asked once when adding the tile (with option "Don't show again"). Since Android 9 it needs to be granted frequently before taking a screenshot

Native method with system defaults enabled Native method switch on

This method uses the screenshot function of the device. It's exactly the same as pressing the Home+Power button or whichever key combination is used for screenshots on that phone.

Requirements:

  • Android 9 Pie
  • Accessibility service needs to be started in the system settings
  • Accessibility service screenshot

Properties:

  • No permissions needed, only activating the accessibility service once
  • Functions like long screenshots, screenshot editor, notifications, thumbnail etc., which the device manufacturer may have added, can be used

Native method with custom settings Native method switch on Use system defaults switch off

This method uses AccessibilityService#takeScreenshot which outputs a bitmap that can be compressed and stored on disk.

Requirements:

  • Android 11 R
  • Accessibility service needs to be started in the system settings
  • Storage permission
  • Accessibility service screenshot
  • Storage permission screenshot

Properties:

  • Custom storage location
  • Custom format
  • Custom notification

Restricted Settings

On Android 13 and above, device manufacturers may restrict the settings that can be enabled for an app. In such cases, the option to enable the app in the accessibility settings will appear grayed out. This means that both the "floating button" and the "native method" cannot be enabled. Notably, this is the case on Pixel phones running Android 14:

Grayed Out Accessibility Settings

To circumvent this protection, you need to enable the "restricted settings" option. First, try to enable the accessibility service. Tap on the grayed-out option, and you will see a dialog regarding the restricted settings:

Dialog About Restricted Settings

Now, open the Android system settings and go to "Apps" > "All apps." Find "ScreenshotTile," and in the app info, tap the three dots in the top right corner, and select "Allow Restricted Settings":

Allow Restricted Settings

With "restricted settings" allowed, you can reopen the app and enable either the "native method" or the "floating button." The accessibility settings will open, and you can enable the app.

Read more about this: https://support.google.com/android/answer/12623953#allowrestrictedsettings

Cast icon: cast icon (only Legacy method)

If you don't want to see the cast icon in the status bar on every screenshot, you can turn it off on most phones. I do not recommend turning it off, as it is generally a good idea to know when an app is recording the screen.
Here's an explanation on how to turn it off: PCTattletale.com - How to turn off Android's Pesky Chromecast Icon

Permissions

android.permission.WRITE_EXTERNAL_STORAGE "Photos/Media/Files and Storage"

Read the contents of your internal storage/USB storage
Modify or delete the contents of your internal storage/USB storage

This is required to save the screenshot files on the internal storage of your device. Since Android 10/Q this permission is no longer used.

Since Android 9/Pie this permission is required to take screenshots. It basically means that this app can run without showing itself. However the app will always show a notification when it is running.

Since Android 14/U this permission is required to take screenshots. It is a more specific version of the android.permission.FOREGROUND_SERVICE permission that allows to mirror the screen.

ScreenshotTile will start capturing everything that's displayed on your screen.

This is a special permission that is requested before you take a screenshot or when you add the tile to you quick settings. It allows the app to record the screen. In this case, for a screenshot, the recording is only one image/frame.

Since Android 13/Tiramisu this permission can be used to request the ability to show notifications. You can choose "Don't allow" to block all notifications.

You can automate taking screenshots with apps like MacroDroid or Tasker. This works via Broadcast intents.

Tutorial video on youtube: https://youtu.be/q5hQF1nzOzk

Macro intent screenshot

First you have to activate this feature by setting a password in the app settings.

Now you can add a macro to MacroDroid:

  • Open MacroDroid and tap on Macros and then Add Macro or the ➕ Symbol
  • Tab ➕ on Triggers and add your desired trigger
  • Tab ➕ on Actions and go to Connectivity -> Send Intent
  • Under Target select Broadcast and fill out the fields:
    • Action: com.github.cvzi.screenshottile.SCREENSHOT
    • Package: com.github.cvzi.screenshottile
    • Data (class name): com.github.cvzi.screenshottile.IntentHandler
    • Extra 1 parameter: secret
    • Extra 1 value: yourPasswordFromEarlier
    • (Optional: Extra 2 parameter partial, value true to open the area selector for a partial screenshot instead of taking a screenshot)

Macro intent screenshot

You can also take screenshots from the terminal:

# Take a screenshot
am broadcast -a com.github.cvzi.screenshottile.SCREENSHOT -e secret MY_PASSWORD com.github.cvzi.screenshottile
# Open the area selector for a partial screenshot
am broadcast -a com.github.cvzi.screenshottile.SCREENSHOT -e secret MY_PASSWORD --ez partial true com.github.cvzi.screenshottile

Or via adb from a computer:

adb shell am broadcast -a com.github.cvzi.screenshottile.SCREENSHOT -e secret MY_PASSWORD com.github.cvzi.screenshottile

Miscellaneous data

Some miscellaneous files (mostly images) that don't need to be in the main repository of ScreenshotTile were moved to a separate repository: https://github.com/cvzi/ScreenshotTile_miscellaneous

screenshottile's People

Contributors

abjorck avatar anderbytes avatar axuswizix avatar burhanrashid52 avatar chuckmichael avatar cvzi avatar cyfung1031 avatar frzmtrsprt avatar hamaryns avatar ihfandicahyo avatar ihorhordiichuk avatar ipcjs avatar laralem avatar linsui avatar lucianocheng avatar opexe avatar renovate-bot avatar renovate[bot] avatar rex07 avatar rikishi0071 avatar rtz333 avatar sensetivity avatar simonaiacob avatar stephanepechard avatar subhamjena avatar temp-byte avatar tiendung717 avatar tigrankhachatryan0 avatar user0-07161 avatar yumin2019 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

screenshottile's Issues

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

This repository currently has no open or pending branches.

Detected dependencies

github-actions
.github/workflows/fossa.yml
  • actions/setup-java v4
  • actions/checkout v4
  • gradle/actions v3
  • fossas/fossa-action v1
.github/workflows/gradleCI.yml
  • actions/checkout v4
  • actions/setup-java v4
  • gradle/actions v3
  • actions/upload-artifact v4
  • actions/upload-artifact v4
.github/workflows/instrumentTests.yml
  • actions/checkout v4
  • actions/setup-java v4
  • actions/cache v4
  • actions/cache v4
  • reactivecircus/android-emulator-runner v2
  • actions/cache v4
  • reactivecircus/android-emulator-runner v2
  • actions/upload-artifact v4
.github/workflows/publishPackage.yml
  • actions/checkout v4
  • actions/setup-java v4
  • gradle/actions v3
  • gradle/gradle-build-action v3
.github/workflows/validateFastlane.yml
  • actions/checkout v4
  • ashutoshgngwr/validate-fastlane-supply-metadata v2
gradle
gradle.properties
settings.gradle
build.gradle
  • com.android.application 8.5.0
  • org.jetbrains.kotlin.android 2.0.0
  • org.sonarqube 5.0.0.4638
.github/workflows/publish.gradle
app/build.gradle
  • org.jetbrains.kotlin:kotlin-bom 2.0.0
  • org.jetbrains.kotlinx:kotlinx-coroutines-android 1.8.1
  • androidx.annotation:annotation 1.8.0
  • androidx.appcompat:appcompat 1.7.0
  • androidx.cardview:cardview 1.0.0
  • androidx.constraintlayout:constraintlayout 2.1.4
  • androidx.lifecycle:lifecycle-viewmodel-ktx 2.8.2
  • androidx.preference:preference-ktx 1.2.1
  • androidx.viewpager:viewpager 1.0.0
  • com.burhanrashid52:photoeditor 3.0.2
  • com.google.android.material:material 1.12.0
  • androidx.test:core 1.5.0
  • androidx.test:core-ktx 1.5.0
  • androidx.test.espresso:espresso-core 3.5.1
  • androidx.test.espresso:espresso-contrib 3.5.1
  • androidx.test.ext:junit 1.1.5
  • androidx.test.ext:junit-ktx 1.1.5
  • androidx.test:rules 1.5.0
  • androidx.test:runner 1.5.2
  • junit:junit 4.13.2
  • org.robolectric:robolectric 4.12.2
  • androidx.test:core 1.5.0
  • androidx.test:core-ktx 1.5.0
  • androidx.test.ext:junit 1.1.5
  • androidx.test.ext:truth 1.5.0
  • androidx.test.espresso:espresso-core 3.5.1
  • androidx.test.espresso:espresso-intents 3.5.1
gradle-wrapper
gradle/wrapper/gradle-wrapper.properties
  • gradle 8.8

  • Check this box to trigger a request for Renovate to run again on this repository

Crop menu opening app

After finishing in the crop menu it open up my app called Sketch instead of just saving them.

Sometimes it fails

It will show notification as normal but in fact it fails to take a screenshot. And I will get Error: Album null if I tap on the notification. There will be a black picture in album. My rom is Pie.

[FR] Select area to capture

On LOS 14.1, long-pressing the screenshot option in the power menu allows taking a screenshot of only a chosen area of the screen (selected at that time). This would be a nice feature to have in this app (could be accessed in the long-press menu with the delay options) unless it would add too much complexity.

Translations

Two new things are coming to the app: a long text to explain how to app works, because I keep getting emails from people who don't understand it
And a new feature: a floating button much like a chat bubble that hovers over everything else and let's you take screenshots.

I was wondering if any of you @linsui @mezysinc @theCrazyblack would like to translate the new stuff again, when you have some spare time. I am still working on some technical details, but I have already uploaded the files with the strings.

I also added the project to crowdin:
https://crwd.in/screenshottile
You can use it instead of editing the xml files.

I'm probably going to add some sort of "hint" to the app, to attract other translators for the project and showcase your efforts as contributors.

app stops after every screenshot

every time I take a screenshot, the app stops before the notification shows. it's annoying because to edit the screenshot, I need to open the camera after every screenshot and find the screenshot instead of just clicking the notification. I am using Android 7, rooted with magisk, has Xposed. Samsung note 5

FC when take screenshot on Android 11

FC when take screenshot on Android 11 (latest code):

java.lang.SecurityException: Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
at android.os.Parcel.createExceptionOrNull(Parcel.java:2385)
at android.os.Parcel.createException(Parcel.java:2369)
at android.os.Parcel.readException(Parcel.java:2352)
at android.os.Parcel.readException(Parcel.java:2294)
at android.media.projection.IMediaProjection$Stub$Proxy.start(IMediaProjection.java:231)
at android.media.projection.MediaProjection.(MediaProjection.java:68)
at android.media.projection.MediaProjectionManager.getMediaProjection(MediaProjectionManager.java:162)
at com.github.cvzi.screenshottile.App.createMediaProjection(App.java:126)
at com.github.cvzi.screenshottile.TakeScreenshotActivity.prepareForScreenSharing(TakeScreenshotActivity.kt:269)

screenshot name randomization

I think randomzing name of screenshot would be great as usually screenshots contain date and time which can be removed to gain a little more privacy.

Crash in 1.14.1

Since the upgrade to 1.14.1, a crash error message pops up instead of the app's notification to display the screenshot. However the screenshot file can be found at the expected location. There is no problem with 1.14.0. Both versions are from F-droid. This phone has Android 7.

Relevant logcat:

FATAL EXCEPTION: main
Process: com.github.cvzi.screenshottile, PID: ...
android.app.RemoteServiceException: Bad notification posted from package com.github.cvzi.screenshottile: Couldn't create icon: StatusBarIcon(icon=Icon(typ=RESOURCE pkg=com.github.cvzi.screenshottile id=...) visible user=0 )
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1832)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:154)
       at android.app.ActivityThread.main(ActivityThread.java:6816)
       at java.lang.reflect.Method.invoke(Native Method)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1563)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1451)

Use as Assist app

Long press the home button to share your screenshots.

  • Permission : Assist app
    Screenshot_2022-02-24-11-23-44

Enable previews

  • Permission : Display over other apps

Refer : Screenshot sharer app

Allow installation on SD card/external storage

External storage installation was disabled because of

But the app size has grown significantly since then, so this needs to be reconsidered.

Check list:

  • Tile does not disappear?
  • AccessibilityService/floating button does not disappear?
  • Widgets don't disappear?
  • Assistant still works?

[Feature Request] Go straight away to area selection & take screenshot

When pressing tile/button from 'quick pulldown bar' it makes screenshots right away or in 'delay' that was set beforehand.

I'd be great to add option in configs (optional for whoever would prefer to activate this), that changes default behavior & goes right away to 'select area' after pressing 'tile/button' in quick menu.

Now in order to 'select area' you have to

  1. long press
  2. press 'select area' option
  3. select area (with finger)
  4. confirm
  5. screenshot is taken

Adding new option in configurations with action that -- goes straight away to 'selecting area' -- (and maybe even making screenshot right away after finger was lifted off (without confirmation)

New behavior would be:

  1. press tile
  2. select area (with finger)
  3. finger was lifted off, screenshot was taken

Toggle:
Select area right away

App auto starts after boot

The app main activity is opened after a phone restart.

It occurs very rarely (on my devices). It happened once on my Android 10 after a power off and I have had one report from a user after a reboot.
I have not been able to reproduce it since, neither on my devices nor on the emulator.

Tile Disappears After Restart

The app works great, but every time I restart my device, the tile disappears, and I must edit the quick setting tiles again in order to put the tile back on the quick settings menu.

Crash NullPointerException in onRequestPermissionsResult

Caused by: java.lang.NullPointerException: 
  at android.service.quicksettings.TileService.startActivityAndCollapse (TileService.java:310)
  at com.github.ipcjs.screenshottile.App.screenshotHiddenCountdown (App.java:24)
  at com.github.ipcjs.screenshottile.App.screenshot (App.java:15)
  at com.github.ipcjs.screenshottile.AcquireScreenshotPermission.onRequestPermissionsResult (AcquireScreenshotPermission.kt:5)
  at android.app.Activity.dispatchRequestPermissionsResult (Activity.java:7618)
  at android.app.Activity.dispatchActivityResult (Activity.java:7468)
  at android.app.ActivityThread.deliverResults (ActivityThread.java:4353)

Tests fail on CI

Run actions/setup-java@v3
Trying to resolve the latest version from remote
Error: <!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en-US"> <![endif]-->
<!--[if IE 7]>    <html class="no-js ie7 oldie" lang="en-US"> <![endif]-->
<!--[if IE 8]>    <html class="no-js ie8 oldie" lang="en-US"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en-US"> <!--<![endif]-->
<head>

<title>Please Wait... | Cloudflare</title>
...

Context:
actions/setup-java#334
actions/setup-java#335

UnsupportedOperationException on Samsung Galaxy S3 (GT-9300)

On my Samsung Galaxy S3 (GT-9300), when I tried to take a screenshot, I've got the following error:

Failed to take screenshot, please try again
Could not acquire image
UnsupportedOperationException
This device is not supported.

The phone OS is LineageOS 14.1 (Android 7.1.2).
The app version is 1.17.0 (66), downloaded from the F-Droid site.
Is there any chances to make the Screenshot Tile work on this phone? Maybe installing some third party libraries, etc?
Thanks in advance!

SD card storage fails after reboot

oh,I was setting the store in SD card.if I reboot my phone,that I can't store picture in the SD card.so there has a error message.but I forgot that.

Data loss while using the app (dialog disappears after on-screen rotation)

When I perform these sequences of events, the dialog disappears after on-screen rotation:

  1. Go to the Main activity
  2. Tap in More Settings
  3. Tap in Floating button theme
  4. A fragment similar to this will appear:

Before rotation:

  1. Force the pause from the activity and then return to the activity (double rotation). Note that the fragment disappears.

Note: the pause from activity can be performed in several ways. We suggest using a double rotation (starts in portrait, goes to landscape, and back to portrait) with this function previously enabled in the smartphone.

The expected behavior is the return to the previous state with the fragments of the previous image.

However, the fragment disappears.

After rotation:

Device:

  • Device: Moto G30 with OS: Android 11
  • Version: 1.14.10
  • Device language: English

Request for a separate Application:

Hello,

I'm a highly impressed, but non-Coder user of you Application(ScreenshotTile).
But I'm(and might be many more) also very resource conscious despite having a z2_plus(4,64,SD820),
So i request you for a new Application if you agree.

Thank you;

…continued in next comment!

Cast icon is always on

I'm not sure is this a correct behavior. The Cast icon won't disappear after screenshot. I'm using native method and I guess this icon should not appear.

Copycat on Google Play

Hi @cvzi

I found this app on the Google Play Store. This guy just took your source code, added some ads in it 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 this copy 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;
  • Provide some screenshots of your own app.

Launcher icon

When the option to Hide app icon from launcher is enabled, the icon remains visible in the launcher and clicking on it pops up a toast message stating App uninstalled..

Android 11: AccessibilityService creates IncorrectContextUseViolation in strict mode

Starting the accesibility service on Android 11 creates a VmPolicy exception

/com.github.cvzi.screenshottile.debug D/StrictMode: StrictMode policy violation: android.os.strictmode.IncorrectContextUseViolation: Visual services, such as WindowManager, WallpaperService or LayoutInflater should be accessed from Activity or other visual Context. Use an Activity or a Context created with Context#createWindowContext(int, Bundle), which are adjusted to the configuration and visual bounds of an area on screen.
      at android.os.StrictMode.onIncorrectContextUsed(StrictMode.java:2192)
      at android.app.ContextImpl.getSystemService(ContextImpl.java:1915)
      at android.accessibilityservice.AccessibilityService.getSystemService(AccessibilityService.java:2006)
      at android.accessibilityservice.AccessibilityService$2.init(AccessibilityService.java:2091)
      at android.accessibilityservice.AccessibilityService$IAccessibilityServiceClientWrapper.executeMessage(AccessibilityService.java:2311)
      at com.android.internal.os.HandlerCaller$MyHandler.handleMessage(HandlerCaller.java:44)
      at android.os.Handler.dispatchMessage(Handler.java:106)
      at android.os.Looper.loop(Looper.java:223)
      at android.app.ActivityThread.main(ActivityThread.java:7656)
      at java.lang.reflect.Method.invoke(Native Method)
      at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
   Caused by: java.lang.IllegalAccessException: Tried to access visual service WindowManager from a non-visual Context:com.github.cvzi.screenshottile.services.ScreenshotAccessibilityService@c1d3698
      at android.app.ContextImpl.getSystemService(ContextImpl.java:1914)
      at android.accessibilityservice.AccessibilityService.getSystemService(AccessibilityService.java:2006) 
      at android.accessibilityservice.AccessibilityService$2.init(AccessibilityService.java:2091) 
      at android.accessibilityservice.AccessibilityService$IAccessibilityServiceClientWrapper.executeMessage(AccessibilityService.java:2311) 
      at com.android.internal.os.HandlerCaller$MyHandler.handleMessage(HandlerCaller.java:44) 
      at android.os.Handler.dispatchMessage(Handler.java:106) 
      at android.os.Looper.loop(Looper.java:223) 
      at android.app.ActivityThread.main(ActivityThread.java:7656) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 
/com.github.cvzi.screenshottile.debug E/ContextImpl: Tried to access visual service WindowManager from a non-visual Context:com.github.cvzi.screenshottile.services.ScreenshotAccessibilityService@c1d3698 Visual services, such as WindowManager, WallpaperService or LayoutInflater should be accessed from Activity or other visual Context. Use an Activity or a Context created with Context#createWindowContext(int, Bundle), which are adjusted to the configuration and visual bounds of an area on screen.
  java.lang.IllegalAccessException: Tried to access visual service WindowManager from a non-visual Context:com.github.cvzi.screenshottile.services.ScreenshotAccessibilityService@c1d3698
      at android.app.ContextImpl.getSystemService(ContextImpl.java:1914)
      at android.accessibilityservice.AccessibilityService.getSystemService(AccessibilityService.java:2006)
      at android.accessibilityservice.AccessibilityService$2.init(AccessibilityService.java:2091)
      at android.accessibilityservice.AccessibilityService$IAccessibilityServiceClientWrapper.executeMessage(AccessibilityService.java:2311)
      at com.android.internal.os.HandlerCaller$MyHandler.handleMessage(HandlerCaller.java:44)
      at android.os.Handler.dispatchMessage(Handler.java:106)
      at android.os.Looper.loop(Looper.java:223)
      at android.app.ActivityThread.main(ActivityThread.java:7656)
      at java.lang.reflect.Method.invoke(Native Method)
      at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

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.