phikal / regex Goto Github PK
View Code? Open in Web Editor NEWA Regular Expression game for Android
Home Page: https://f-droid.org/en/packages/com.phikal.regex/
License: GNU General Public License v3.0
A Regular Expression game for Android
Home Page: https://f-droid.org/en/packages/com.phikal.regex/
License: GNU General Public License v3.0
If you rotate the screen to horizontal, and then back to vertical, the current puzzle changes to a new one.
I'm stuck at 9. Also, in the level-success popup, it would be usefeful to see if you went up or down
There could be string transformation mode that would display set of strings in two columns as it is now, but instead of asking player to match left strings and don't match right strings on right, it would ask them to transform right strings into left strings.
Regex input could be kept as is and use '/' to separate input from output or give two input fields to enter input and output regex.
Challenges could be randomly generated by generating random strings and randomly mangling them to create "transform to" column.
Transform tasks could constitute separate mode, or could be mixed with normal tasks.
Now regdb is without https. It's not good for 2016
Turn the app in landscape mode. Have a screen width that is to low to display the whole settings menu.
Try to scroll it so you can reach the lower options like notification on/off. At the moment there is no way to reach the option. The menu doesn't support scrolling.
Dear developers,
We have recently developed a state-of-the-art static analysis tool for uncovering API compatibility issues in Android apps. Applying this tool to open source apps on F-droid, we have exposed a few instances of compatibility issues and submitting them to development teams for a fix.
For your app, we have found that this project has accessed the following APIs which are available only on an API level higher than the declared minSdkVersion and which are accessed without proper protection. In other words, if those APIs get called at runtime, it will trigger a NoSuchMethodError and thus result in a crash of the running application.
<android.app.Fragment: android.content.Context getContext()>:[23,25]
Note that, because of the nature of the static analysis, we cannot confirm whether the flagged APIs would actually be called at runtime (e.g., unreachable code). However, we still believe that those APIs, which may cause compatibility issues, should not be accessed or at least be accessed with proper protections.
In addition to the aforementioned APIs (i.e., backward-compatibility), which could cause app crashes if accessed, we have also identified that this project has also accessed some APIs that have been removed from the latest public SDK, making the app possibly suffer from forward-compatibility issues.
NONE
We would be very much appreciated if you can acknowledge to us that those reported APIs are indeed problematic for the project’s long-term stability. please let us know if you need any more information relating to this issue report.
What is the highest achievable level? I've been at 13 for the longest time and though it was the highest, then I just did one puzzle today (after a long pause) and I suddenly got LVL 14.
Hi, I've just discovered this app. It's awsome...
What do you think about creating a database of solutions submitted by the users ?
After a while, a website with a search engine could make available the best result for the public...
The public could also submit problems which can be dispatched in the game for the best players.
What do you think ?
Bye
(Edit: Relevant part of the stack trace is at com.phikal.regex.Activities.GameActivity.onResume(GameActivity.java:228)
, full stack trace below).
Process: com.phikal.regex, PID: 28492
java.lang.RuntimeException: Unable to resume activity {com.phikal.regex/com.phikal.regex.Activities.GameActivity}: java.lang.IndexOutOfBoundsException: setSpan (16 ... 16) ends beyond length 0
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3000)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3031)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2409)
at android.app.ActivityThread.access$800(ActivityThread.java:145)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1323)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5319)
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:1016)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811)
Caused by: java.lang.IndexOutOfBoundsException: setSpan (16 ... 16) ends beyond length 0
at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1018)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:611)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:607)
at android.text.Selection.setSelection(Selection.java:76)
at android.widget.EditText.setSelection(EditText.java:92)
at com.phikal.regex.Activities.GameActivity.onResume(GameActivity.java:228)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1241)
at android.app.Activity.performResume(Activity.java:6062)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2989)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3031)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2409)
at android.app.ActivityThread.access$800(ActivityThread.java:145)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1323)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5319)
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:1016)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811)
Note that this also happened when I updated from the old version to this one. I can't remember if it happened on the previous version, but I think it didn't.
When you start the app and see the welcome screen there is no obvious way to close it. Sure the back button works but it is means to go back. And in this context the last place you were was the app launcher not the game view.
There should be a close button, maybe an x in the corner or just another button at the end...
It is difficult to see if a word starts or end with a spece (you realize it because your pattern seems broken)
When I enter
(C)(?(1)Y).
in the entry box I would expect that it matches
CY
But instead the number on remaining characters is displayed red, which I interprete as "Syntax error in their expression". What am I missing?
(I use Hackers' Keyboard )
Error requesting next task from server. Please change game mode.
However, if I tap the "add" button with the redb server, the following toast appears:
Can connect.
Sometimes it just works, but most of the time it doesn't. I tried troubleshooting it, but it simply happens sometimes. I am connected to the network. Any hint on what I could do (I can debug it on Android Studio) would be appreciated!
ReGeX does not start since the last upgrade on F-Droid. Android 5.1.1 .
I am excited for this game as I love solving regular expressions. In the real world, regexes allow you to match not just some finite set of words, but all possible words of a certain type. The puzzle and the fun is in recognizing the pattern that groups the words together so you can craft the perfect regex.
This game has promise, but its random problem generator only creates strings of characters with no rhyme or reason. I just played 66 rounds and got to level 10 and every single solution was "[abc].*" or a minor variant of it. It was boring because the type of problem never changed.
I think it would be much more fun if the set of words was created by randomly created regexes, finite state automata or hidden Markov models.
For example, if the game randomly creates "a+", the first level might look like:
Match: a aaaaaa aaaa
Not: b abba baa
As levels progress, instead of the words getting longer, the generating pattern will get more complex, randomly adding regex features like matching groups and alternation.
For example, perhaps the next level would increase the grammar (which letters are allowed) and the problem generated might be "[ab]",
Match: a b
Not: c
And then,
Match: aa abab bbbb
Not: a bab abba
If you make a list of regex features ordered by difficulty, you can add new ones in the mix after each level. That way the game would constantly feel like a significantly different challenge as new types of patterns appear.
Thanks for making what promises to be a great game.
Pls add this :/
Text field lose user input on device rotation
Sequence:
The game runs perfectly on the first launch after installation, but after closing the game and launching it again it simply hangs with an empty screen
Nexus 6P running CopperheadOS
The log seems to be in a loop. Here is the last part:
java.lang.IndexOutOfBoundsException: setSpan (5 ... 5) ends beyond length 0
11-30 20:41:34.683 5130 5130 E AndroidRuntime: at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3401)
11-30 20:41:34.683 5130 5130 E AndroidRuntime: at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3441)
11-30 20:41:34.683 5130 5130 E AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2714)
11-30 20:41:34.683 5130 5130 E AndroidRuntime: at android.app.ActivityThread.-wrap12(ActivityThread.java)
11-30 20:41:34.683 5130 5130 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1461)
11-30 20:41:34.683 5130 5130 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102)
11-30 20:41:34.683 5130 5130 E AndroidRuntime: at android.os.Looper.loop(Looper.java:154)
11-30 20:41:34.683 5130 5130 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6080)
11-30 20:41:34.683 5130 5130 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
11-30 20:41:34.683 5130 5130 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
11-30 20:41:34.683 5130 5130 E AndroidRuntime: at com.android.internal.os.ExecInit.main(ExecInit.java:68)
11-30 20:41:34.683 5130 5130 E AndroidRuntime: at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
11-30 20:41:34.683 5130 5130 E AndroidRuntime: at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:262)
11-30 20:41:34.683 5130 5130 E AndroidRuntime: Caused by: java.lang.IndexOutOfBoundsException: setSpan (5 ... 5) ends beyond length 0
11-30 20:41:34.683 5130 5130 E AndroidRuntime: at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1265)
11-30 20:41:34.683 5130 5130 E AndroidRuntime: at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:684)
11-30 20:41:34.683 5130 5130 E AndroidRuntime: at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:677)
11-30 20:41:34.683 5130 5130 E AndroidRuntime: at android.text.Selection.setSelection(Selection.java:76)
11-30 20:41:34.683 5130 5130 E AndroidRuntime: at android.widget.EditText.setSelection(EditText.java:96)
11-30 20:41:34.683 5130 5130 E AndroidRuntime: at com.phikal.regex.Activities.GameActivity.onResume(Unknown Source)
11-30 20:41:34.683 5130 5130 E AndroidRuntime: at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1269)
11-30 20:41:34.683 5130 5130 E AndroidRuntime: at android.app.Activity.performResume(Activity.java:6768)
11-30 20:41:34.683 5130 5130 E AndroidRuntime: at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3378)
11-30 20:41:34.683 5130 5130 E AndroidRuntime: ... 12 more
11-30 20:41:34.685 5130 5130 E AndroidRuntime: Error reporting crash
11-30 20:41:34.685 5130 5130 E AndroidRuntime: java.lang.RuntimeException: Bad file descriptor
11-30 20:41:34.685 5130 5130 E AndroidRuntime: at android.os.BinderProxy.transactNative(Native Method)
11-30 20:41:34.685 5130 5130 E AndroidRuntime: at android.os.BinderProxy.transact(Binder.java:615)
11-30 20:41:34.685 5130 5130 E AndroidRuntime: at android.app.ActivityManagerProxy.handleApplicationCrash(ActivityManagerNative.java:5103)
11-30 20:41:34.685 5130 5130 E AndroidRuntime: at com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:97)
11-30 20:41:34.685 5130 5130 E AndroidRuntime: at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1068)
11-30 20:41:34.685 5130 5130 E AndroidRuntime: at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1063)
11-30 20:41:34.685 5130 5130 I Process : Sending signal. PID: 5130 SIG: 9
11-30 20:41:34.731 877 2966 I ActivityManager: Process com.phikal.regex (pid 5130) has died
11-30 20:41:34.732 877 2966 D ActivityManager: cleanUpApplicationRecord -- 5130
11-30 20:41:34.748 877 2966 I ActivityManager: Start proc 5149:com.phikal.regex/u0a40 for activity com.phikal.regex/.Activities.GameActivity
11-30 20:41:35.256 5149 5149 D AndroidRuntime: >>>>>> START com.android.internal.os.RuntimeInit uid 10040 <<<<<<
11-30 20:41:35.262 5149 5149 D AndroidRuntime: CheckJNI is OFF
11-30 20:41:35.320 5149 5149 D ICU : No timezone override file found: /data/misc/zoneinfo/current/icu/icu_tzdata.dat
11-30 20:41:35.385 5149 5149 I Radio-JNI: register_android_hardware_Radio DONE
11-30 20:41:35.421 5149 5149 D AndroidRuntime: Calling main entry com.android.internal.os.ExecInit
11-30 20:41:35.422 5149 5149 D Zygote : begin preload
11-30 20:41:35.422 5149 5149 I Zygote : Preloading classes...
11-30 20:41:35.521 5149 5149 E Typeface: Error mapping font file /system/fonts/DroidSansFallback.ttf
11-30 20:41:35.524 3265 3265 I ServiceManager: Waiting for service AtCmdFwd...
11-30 20:41:35.542 5149 5149 I Zygote : ...preloaded 1 classes in 119ms.
11-30 20:41:35.542 5149 5149 I art : VMRuntime.preloadDexCaches starting
11-30 20:41:35.599 5149 5149 I art : VMRuntime.preloadDexCaches strings total=282285 before=37887 after=37887
11-30 20:41:35.599 5149 5149 I art : VMRuntime.preloadDexCaches types total=23482 before=2491 after=3283
11-30 20:41:35.599 5149 5149 I art : VMRuntime.preloadDexCaches fields total=111399 before=8045 after=13418
11-30 20:41:35.599 5149 5149 I art : VMRuntime.preloadDexCaches methods total=196726 before=14964 after=28649
11-30 20:41:35.599 5149 5149 I art : VMRuntime.preloadDexCaches finished
11-30 20:41:35.611 5149 5149 I Zygote : Preloading resources...
11-30 20:41:35.751 5149 5149 I Zygote : ...preloaded 114 resources in 140ms.
11-30 20:41:35.756 5149 5149 I Zygote : ...preloaded 41 resources in 6ms.
11-30 20:41:35.756 5149 5149 I Zygote : Preloading shared libraries...
11-30 20:41:35.765 5149 5149 D Zygote : end preload
11-30 20:41:35.766 5149 5149 I SamplingProfilerIntegration: Profiling disabled.
11-30 20:41:35.842 5149 5149 W System : ClassLoader referenced unknown path: /data/app/com.phikal.regex-1/lib/arm64
11-30 20:41:35.933 5149 5149 D AndroidRuntime: Shutting down VM
11-30 20:41:35.935 5149 5149 E AndroidRuntime: FATAL EXCEPTION: main
11-30 20:41:35.935 5149 5149 E AndroidRuntime: Process: com.phikal.regex, PID: 5149
11-30 20:41:35.935 5149 5149 E AndroidRuntime: java.lang.RuntimeException: Unable to resume activity {com.phikal.regex/com.phikal.regex.Activities.GameActivity}: java.lang.IndexOutOfBoundsException: setSpan (5 ... 5) ends beyond length 0
11-30 20:41:35.935 5149 5149 E AndroidRuntime: at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3401)
11-30 20:41:35.935 5149 5149 E AndroidRuntime: at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3441)
11-30 20:41:35.935 5149 5149 E AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2714)
11-30 20:41:35.935 5149 5149 E AndroidRuntime: at android.app.ActivityThread.-wrap12(ActivityThread.java)
11-30 20:41:35.935 5149 5149 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1461)
11-30 20:41:35.935 5149 5149 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102)
11-30 20:41:35.935 5149 5149 E AndroidRuntime: at android.os.Looper.loop(Looper.java:154)
11-30 20:41:35.935 5149 5149 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6080)
11-30 20:41:35.935 5149 5149 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
11-30 20:41:35.935 5149 5149 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
11-30 20:41:35.935 5149 5149 E AndroidRuntime: at com.android.internal.os.ExecInit.main(ExecInit.java:68)
11-30 20:41:35.935 5149 5149 E AndroidRuntime: at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
11-30 20:41:35.935 5149 5149 E AndroidRuntime: at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:262)
11-30 20:41:35.935 5149 5149 E AndroidRuntime: Caused by: java.lang.IndexOutOfBoundsException: setSpan (5 ... 5) ends beyond length 0
11-30 20:41:35.935 5149 5149 E AndroidRuntime: at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1265)
11-30 20:41:35.935 5149 5149 E AndroidRuntime: at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:684)
11-30 20:41:35.935 5149 5149 E AndroidRuntime: at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:677)
11-30 20:41:35.935 5149 5149 E AndroidRuntime: at android.text.Selection.setSelection(Selection.java:76)
11-30 20:41:35.935 5149 5149 E AndroidRuntime: at android.widget.EditText.setSelection(EditText.java:96)
11-30 20:41:35.935 5149 5149 E AndroidRuntime: at com.phikal.regex.Activities.GameActivity.onResume(Unknown Source)
11-30 20:41:35.935 5149 5149 E AndroidRuntime: at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1269)
11-30 20:41:35.935 5149 5149 E AndroidRuntime: at android.app.Activity.performResume(Activity.java:6768)
11-30 20:41:35.935 5149 5149 E AndroidRuntime: at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3378)
11-30 20:41:35.935 5149 5149 E AndroidRuntime: ... 12 more
11-30 20:41:35.936 5149 5149 E AndroidRuntime: Error reporting crash
11-30 20:41:35.936 5149 5149 E AndroidRuntime: java.lang.RuntimeException: Bad file descriptor
11-30 20:41:35.936 5149 5149 E AndroidRuntime: at android.os.BinderProxy.transactNative(Native Method)
11-30 20:41:35.936 5149 5149 E AndroidRuntime: at android.os.BinderProxy.transact(Binder.java:615)
11-30 20:41:35.936 5149 5149 E AndroidRuntime: at android.app.ActivityManagerProxy.handleApplicationCrash(ActivityManagerNative.java:5103)
11-30 20:41:35.936 5149 5149 E AndroidRuntime: at com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:97)
11-30 20:41:35.936 5149 5149 E AndroidRuntime: at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1068)
11-30 20:41:35.936 5149 5149 E AndroidRuntime: at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1063)
11-30 20:41:35.936 5149 5149 I Process : Sending signal. PID: 5149 SIG: 9
11-30 20:41:35.962 877 903 I ActivityManager: Process com.phikal.regex (pid 5149) has died
11-30 20:41:35.962 877 903 D ActivityManager: cleanUpApplicationRecord -- 5149
11-30 20:41:35.974 541 5153 I art : Starting a blocking GC HeapTrim
11-30 20:41:35.985 877 903 I ActivityManager: Start proc 5168:com.phikal.regex/u0a40 for activity com.phikal.regex/.Activities.GameActivity
It would be useful to provide a "Solution" button for beginners to learn the game.
Is it just length? I notice sometimes that I get a score of 200+ for regex's that aren't particularly short, although I liked the solution better than a [xyz].+
type solution. Is there any weight given to the use of certain solutions / meta characters in scoring?
Just wanted to note the F-Droid app hasn't been updated in 3 years, not sure if there's anything that has been updated, or any security issues that need to be fixed. Thanks
Please extend the score display time for those of us whose eyes do not jump and focus that quickly. One more second would be fine.
The app uses the Android support libraries, which are Apache2 licensed. However, plain GPLv2 is not compatible with it, but GPLv2+ (with the "and later" addition) is. Could you explicitly state this is the correct version, e.g. in the readme? The included license file covers both versions of the gplv2.
The game lacks explanation. People that hope to learn regex via this game will be disappointed.
An ingame explanation or maybe even tutorial would defiantly help for beginners.
Just so the player knows about his her progress.
hey! :-)
i am not sure this is the case, but it seems so to me (in the game, it tells me it is unable to connect).
i like the idea of your game, but as i already know regex, and would rather play with more complex, real-world challenges, i'd rather have something more... real then the random ones.
thanks for the game! :-) like the FOSS and design. :-)
paragraph extraction mode needs a text file to play(either online or local)
the game will select some random paragraphs in the file as the goal, the player have to extract all the needed paragraphs with one expression while not extracting anything else. length of regex isn't limited but longer regex results in lower score.
Due to issues like #20, we need tests to check if all is working as intended. Sadly I have not much experience with tests, so any help would be nice, in the meantime, I'm also going to look into it.
example:
Match: x yuh
Don't match: tui op
Solution: x|yuh
Because of the character limit, I cannot use some longer, more ingenious solutions, instead I am stuck using "x|yuh" for almost all the solution.
Hi, I built the game half an hour ago (after updating the translations). On level 4 I have an "i" on both sides. Writing "i" colors both so there is no a hidden space or something like that.
When I perform this sequence of events, the scroll view on screen goes back to the top
The current code-base it unpleasant to work with, and I cannot use the necessary tools to properly maintain and test it.
I've recently been reading more about Kawa Scheme, a Scheme implementation based on the JVM that can be used to develop Android Applications.
Rewriting ReGeX in Kawa would allow for a much needed simplification and overhaul of the game modes, with a arguably more sane programming language that I don't need a massive IDE to use properly.
This issue will document the journey of porting ReGeX. When I get around to it, I shall also add a TODO list, collecting whatever has yet to be done.
Version 2.0 will be skipped (symbolically), and implementing this will directly result in version 3.0.
Hi,
I am loving the game on Android.
But till now after a few tens or hundred puzzles I always got the Wiz/Android-Error "ReGeX wurde angehalten" which should be something like "ReGeX was stopped/paused/..." in English.
Only reinstall seems to help.
Any advice how I could find/give more information about this?
This is surely no nicely documented issue yet. ;)
Thanks for your work
Sincerely
Jonas
So what do you need to do? Imagine I haven't read the readme or the fdroid description. And just installed it because of its relation to regex.
I am currently working on German and Serbo-Croation translation. Any help would be great.
As suggested on reddit the game should implement not only matching the whole string, but also splitting out a part. I would suggest it to start about level 7, with only pre or post strings on one side.
Stylistically it could be like ante-
string
-post
with ante-
and -post
in a lighter color.
This would have to also be explained either in the start screen or when it appears for the first time
When I perform this sequence of events, the text view returns to its default value:
It is not possible to play the game while listening to music. It just always stops the music.
And the vibration gets annoying if you put your phone on a wooden or glass table while playing.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.