Giter Club home page Giter Club logo

jmbe's People

Contributors

dsheirer avatar karlshea 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jmbe's Issues

AMBE Tone Generator - NPE

07:14:44.566 ERROR i.g.d.d.f.c.o.ChannelOutputProcessor - Error while processing polyphase channel samples [359MB/732MB 49%]
java.lang.NullPointerException: null
at jmbe.codec.ambe.ToneGenerator.generate(ToneGenerator.java:66)
at jmbe.codec.ambe.AMBESynthesizer.getTone(AMBESynthesizer.java:84)
at jmbe.codec.ambe.AMBESynthesizer.getAudio(AMBESynthesizer.java:102)
at jmbe.codec.ambe.AMBEAudioCodec.getAudio(AMBEAudioCodec.java:58)
at jmbe.codec.ambe.AMBEAudioCodec.getAudio(AMBEAudioCodec.java:50)
at jmbe.codec.ambe.AMBEAudioCodec.getAudioWithMetadata(AMBEAudioCodec.java:72)

Build issue: Gradle <5.0 does not support Open JDK 11 or greater

Hello,

I was having some issues compiling JMBE on various linux systems including a Raspberry Pi running Ubuntu 18.04.2 LTS (64-bit/aarch64), using Open JDK 11.0.2.

The dreaded:

* What went wrong:
Could not determine java version from '11.0.4'.

After doing some digging, I found out Gradle v4.x (what JMBE's wrapper is built with) doesn't support Open JDK 11.x. So I simply modified the build.gradle as follows. (Not pretty)

5c5,6
< sourceCompatibility = 1.8
---
> //sourceCompatibility = 1.8
> sourceCompatibility = '11'
69,70c70,71
< task wrapper(type: Wrapper) {
<     gradleVersion = '4.3.1'
---
> task wrapper1(type: Wrapper) {
>     gradleVersion = '5.0'

And then modified jmbe-0.3.3b/gradle/wrapper/gradle-wrapper.properties.

5c5
< distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-bin.zip
---
> distributionUrl=https\://services.gradle.org/distributions/gradle-5.0-bin.zip

These changes allowed me to build JMBE without any issues on Ubuntu 18.04.2 LTS Server (64-bit/aarch64) running on a Raspberry Pi 3b+, as well as Ubuntu 18.04.2 LTS on x86_64.

Raspberry Pi: Linux RPI 4.15.0-1041-raspi2 #44-Ubuntu SMP PREEMPT Wed Jul 3 15:45:20 UTC 2019 aarch64 aarch64 aarch64 GNU/Linux

Laptop: Linux Laptop 4.15.0-46-generic #49-Ubuntu SMP Wed Feb 6 09:33:07 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

I hope this is helpful to someone, and thanks for SDRtrunk!

Enhancement branch fails to compile


C:\Users\ICBus\Downloads\jmbe-5-enhancements>gradlew.bat build

> Configure project :codec
Your finished JMBE library will be located here: C:\Users\ICBus\Downloads\jmbe-5-enhancements\codec\build\libs\jmbe-1.0.0.jar

> Task :codec:compileJava FAILED
C:\Users\ICBus\Downloads\jmbe-5-enhancements\codec\src\main\java\jmbe\codec\imbe\IMBEFrame.java:27: error: package sun.util.resources is not visible
import sun.util.resources.CalendarData;
               ^
  (package sun.util.resources is declared in module java.base, which does not export it to the unnamed module)
1 error

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':codec:compileJava'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 2s
4 actionable tasks: 1 executed, 3 up-to-date

p25 data dump to hdd

can you make it dump all data to hard drive to play back later.
something like "IdTimeDate.p25 preserving all the data transmitted.

JMBE Creator Feature

Create an application that is fully self-contained that downloads the JMBE source code and creates the JMBE library.

Cannot compile

Tried compiling on both Ununtu 18.10 and Windows 10 with same error on both

`Downloading https://services.gradle.org/distributions/gradle-5.1.1-bin.zip
.................................................................................
Unzipping C:\Users\Stuart.gradle\wrapper\dists\gradle-5.1.1-bin\90y9l8txxfw1s2o6ctiqeruwn\gradle-5.1.1-bin.zip to C:\Users\Stuart.gradle\wrapper\dists\gradle-5.1.1-bin\90y9l8txxfw1s2o6ctiqeruwn

Welcome to Gradle 5.1.1!

Here are the highlights of this release:

  • Control which dependencies can be retrieved from which repositories
  • Production-ready configuration avoidance APIs

For more details see https://docs.gradle.org/5.1.1/release-notes.html

Starting a Gradle Daemon (subsequent builds will be faster)

Configure project :
Your finished JMBE library is here: C:\Users\Stuart\Desktop\jmbe-master\build/libs

FAILURE: Build failed with an exception.

  • Where:
    Build file 'C:\Users\Stuart\Desktop\jmbe-master\build.gradle' line: 69

  • What went wrong:
    A problem occurred evaluating root project 'jmbe'.

Cannot add task 'wrapper' as a task with that name already exists.

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org`

DMR

SDTrunk 0.4.0-Alpha
Love this product!
Can it do DMR?
I am using RTL2832u
running on OSX

Audio stops but can be started again....ERROR i.g.d.a.p.AudioOutput - Error while processing audio buffers [87MB/640MB 13%]

JMBE 1.0.9
Linux 5.15.0-92
Mint 21.2

Audio stops soon after monitoring is started with stuttering and buffer issues. All other functions appear to be working normally. The terminal capture reveals:

13:29:03.446 ERROR i.g.d.a.p.AudioOutput - Error while processing audio buffers [87MB/640MB 13%] java.lang.NullPointerException: Cannot invoke "javax.sound.sampled.SourceDataLine.isRunning()" because "this.mOutput" is null at io.github.dsheirer.audio.playback.AudioOutput.checkStop(AudioOutput.java:653) at io.github.dsheirer.audio.playback.AudioOutput.processAudio(AudioOutput.java:509) at io.github.dsheirer.audio.playback.AudioOutput$AudioSegmentProcessor.run(AudioOutput.java:743) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.base/java.util.concurrent.FutureTask.runAndReset(Unknown Source) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.base/java.lang.Thread.run(Unknown Source)

So when I pull up the Users Preference dialog and Output/Tones and just switch between Audio Output Device selections the audio will resume and then once the error repeats, switch the Source back to the original, the audio starts again. This repeats indefinitely.

gradlew.bat doesn't output anything

When running gradlew.bat build I see the following message but when I look in the folder I cant find the jar file (no lib or build directory)

Task :buildEnvironment


Root project

classpath
No dependencies

A web-based, searchable dependency report is available by adding the --scan option.

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.0/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 1s
1 actionable task: 1 executed

Creator Fails

I have tried on a Manjaro box and on Kubuntu, both fully up to date. And on both I get the following error:

(base) jason@jason-ThinkPad-X230:~/Workspace/creator-linux-x86_64-v1.0.7$ ./bin/creator Create JMBE library - starting .... Created Temporary Work Directory: /tmp/jmbe-creator12221170850678908494 Using Auto-Generated Library Path: /home/jason/Workspace/jmbe-1.0.7.jar GitHub Downloading: GitHub Release - Name:Version 1.0.7 Version: 1.0.7 HTML URL:https://github.com/DSheirer/jmbe/releases/tag/v1.0.7 Download URL:https://api.github.com/repos/DSheirer/jmbe/zipball/v1.0.7 Downloading Source Code From: https://api.github.com/repos/DSheirer/jmbe/zipball/v1.0.7 Download HTTP Status: 200 Source Code Downloaded to: /tmp/jmbe-creator12221170850678908494/DSheirer-jmbe-v1.0.7-0-g1ce0d87.zip Looking for required compile libraries here: /home/jason/Workspace/lib Error creating classpath for compile-time libraries java.nio.file.NoSuchFileException: /home/jason/Workspace/lib at java.base/sun.nio.fs.UnixException.translateToIOException(Unknown Source) at java.base/sun.nio.fs.UnixException.rethrowAsIOException(Unknown Source) at java.base/sun.nio.fs.UnixException.rethrowAsIOException(Unknown Source) at java.base/sun.nio.fs.UnixFileSystemProvider.newDirectoryStream(Unknown Source) at java.base/java.nio.file.Files.newDirectoryStream(Unknown Source) at io.github.dsheirer.jmbe.creator.Creator.getLibraryClassPath(Creator.java:310) at io.github.dsheirer.jmbe.creator.Creator.getOptions(Creator.java:242) at io.github.dsheirer.jmbe.creator.Creator.process(Creator.java:137) at io.github.dsheirer.jmbe.creator.Creator.createLibrary(Creator.java:416) at io.github.dsheirer.jmbe.creator.Creator.main(Creator.java:472)

JMBE audio library path is NOT SET in your User Preferences

Hi, I am getting this error while running SDR Trunk. I am also getting this error: JMBE audio conversion library NOT FOUND. What do these error mean and how can I repair these errors? I put the jmbe file in the same folder of sdr trunk.

Build claims to complete but no build directory exists.

After running the gradlew script I get the following output

C:\Users\KR0SIV\Desktop\jmbe-0.3.3b\jmbe-0.3.3b>gradlew.bat

 Configure project :
Your finished JMBE library is here: C:\Users\KR0SIV\Desktop\jmbe-0.3.3b\jmbe-0.3.3b\build/libs

 Task :help

Welcome to Gradle 4.4.

To run a build, run gradlew <task> ...

To see a list of available tasks, run gradlew tasks

To see a list of command-line options, run gradlew --help

To see more detail about a task, run gradlew help --task <task>


BUILD SUCCESSFUL in 1s

The problem is that build directory doesn't exist and no jar file was actually created.
I can compile it myself but it should be noted the script is claiming to have completed successfully when from what I can tell it created no .jar in the process.

Isolated AMBE Tone Frame Errors

Occasionally there is an audio frame that is decoded incorrectly as a Tone frame and it's producing audio glitching or artifacts. This situation can be detected as a Tone frame that's bounded by an audio frame on either side.

Update the tone generator to only generate tone audio when there is a tone sequence, meaning that the previous frame was a tone and the current frame is a tone.

On the first tone frame, do an audio frame repeat. Since this will cause the initial tone frame to be generated as an audio frame, perhaps we can detect the start and then double the length of the generated tone when the second frame arrives.

ToneGenerator NPE

Encountered an NPE while developing DMR decoder.

07:51:01.901 ERROR i.g.d.m.d.d.m.v.DMRAudioModule - Error synthesizing AMBE audio - continuing [null] [262MB/704MB 37%]
java.lang.NullPointerException: null
at jmbe.codec.ambe.ToneGenerator.generate(ToneGenerator.java:66)
at jmbe.codec.ambe.AMBESynthesizer.getTone(AMBESynthesizer.java:84)
at jmbe.codec.ambe.AMBESynthesizer.getAudio(AMBESynthesizer.java:102)
at jmbe.codec.ambe.AMBEAudioCodec.getAudio(AMBEAudioCodec.java:58)
at jmbe.codec.ambe.AMBEAudioCodec.getAudio(AMBEAudioCodec.java:50)
at jmbe.codec.ambe.AMBEAudioCodec.getAudioWithMetadata(AMBEAudioCodec.java:72)
at io.github.dsheirer.module.decode.dmr.message.voice.DMRAudioModule.produceAudio(DMRAudioModule.java:197)
at io.github.dsheirer.module.decode.dmr.message.voice.DMRAudioModule.processAudio(DMRAudioModule.java:185)
at io.github.dsheirer.module.decode.dmr.message.voice.DMRAudioModule.receive(DMRAudioModule.java:127)
at io.github.dsheirer.module.decode.dmr.message.voice.DMRAudioModule.receive(DMRAudioModule.java:57)
at io.github.dsheirer.sample.Broadcaster.broadcast(Broadcaster.java:152)
at io.github.dsheirer.sample.Broadcaster.receive(Broadcaster.java:59)
at io.github.dsheirer.module.decode.Decoder$MessageDistributor.receive(Decoder.java:103)
at io.github.dsheirer.module.decode.Decoder$MessageDistributor.receive(Decoder.java:96)
at io.github.dsheirer.module.decode.dmr.DMRMessageProcessor.dispatch(DMRMessageProcessor.java:207)
at io.github.dsheirer.module.decode.dmr.DMRMessageProcessor.receive(DMRMessageProcessor.java:197)
at io.github.dsheirer.module.decode.dmr.DMRMessageProcessor.receive(DMRMessageProcessor.java:57)
at io.github.dsheirer.module.decode.dmr.DMRMessageFramer.burstDetected(DMRMessageFramer.java:205)
at io.github.dsheirer.module.decode.dmr.DMRBurstFramer.dispatch(DMRBurstFramer.java:253)
at io.github.dsheirer.module.decode.dmr.DMRBurstFramer.receive(DMRBurstFramer.java:152)
at io.github.dsheirer.module.decode.dmr.DMRMessageFramer.receive(DMRMessageFramer.java:156)
at io.github.dsheirer.module.decode.dmr.DMRMessageFramer.receive(DMRMessageFramer.java:49)
at io.github.dsheirer.sample.Broadcaster.broadcast(Broadcaster.java:152)
at io.github.dsheirer.sample.Broadcaster.receive(Broadcaster.java:59)
at io.github.dsheirer.dsp.psk.PSKDemodulator.broadcast(PSKDemodulator.java:58)
at io.github.dsheirer.dsp.psk.DQPSKDecisionDirectedDemodulator.calculateSymbol(DQPSKDecisionDirectedDemodulator.java:88)
at io.github.dsheirer.dsp.psk.PSKDemodulator.receive(PSKDemodulator.java:115)
at io.github.dsheirer.dsp.psk.PSKDemodulator.receive(PSKDemodulator.java:89)
at io.github.dsheirer.module.decode.dmr.DMRStandardDecoder.receive(DMRStandardDecoder.java:109)
at io.github.dsheirer.module.decode.dmr.DMRStandardDecoder.receive(DMRStandardDecoder.java:44)
at io.github.dsheirer.sample.buffer.ReusableBufferBroadcaster.broadcast(ReusableBufferBroadcaster.java:42)
at io.github.dsheirer.sample.buffer.ReusableBufferBroadcaster.broadcast(ReusableBufferBroadcaster.java:23)
at io.github.dsheirer.sample.Broadcaster.receive(Broadcaster.java:59)
at io.github.dsheirer.sample.buffer.ReusableComplexBufferAssembler.flush(ReusableComplexBufferAssembler.java:158)
at io.github.dsheirer.sample.buffer.ReusableComplexBufferAssembler.receive(ReusableComplexBufferAssembler.java:132)
at io.github.dsheirer.sample.buffer.ReusableComplexBufferAssembler.receive(ReusableComplexBufferAssembler.java:144)
at io.github.dsheirer.dsp.filter.channelizer.output.TwoChannelOutputProcessor.process(TwoChannelOutputProcessor.java:117)
at io.github.dsheirer.dsp.filter.channelizer.output.ChannelOutputProcessor.processChannelResults(ChannelOutputProcessor.java:124)
at io.github.dsheirer.dsp.filter.channelizer.PolyphaseChannelSource.processSamples(PolyphaseChannelSource.java:248)
at io.github.dsheirer.source.tuner.channel.TunerChannelSource$ScheduledIntervalProcessor.run(TunerChannelSource.java:321)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at java.base/java.lang.Thread.run(Thread.java:832)

Could not build using Java 17

Error when trying to build with Liberica JDK 17 (as is used with SDRtrunk).

pi@raspberrypi:~/Downloads/jmbe-1.0.7b $ sudo ./gradlew build

FAILURE: Build failed with an exception.

  • Where:
    Settings file '/home/pi/Downloads/jmbe-1.0.7b/settings.gradle'

  • What went wrong:
    Could not compile settings file '/home/pi/Downloads/jmbe-1.0.7b/settings.gradle'.

startup failed:
General error during semantic analysis: Unsupported class file major version 61

Illegal character during build with 1.0.7a

Windows 10 x64, running elevated command prompt. Happens with both 32 and 64 creator package.

Starting: JMBE Library Creator
Created: Temporary Directory [F:\Temp\jmbe-creator2835292894781790827]
Generated: Library Path [F:\Downloads\creator-windows-x86_64-v1.0.7a\jmbe-1.0.7a.jar]
Downloading: Source Code [Version 1.0.7a]
Downloading: https://api.github.com/repos/DSheirer/jmbe/zipball/v1.0.7a
Download Complete: HTTP Status 200
Unzipping: Source Code
Failed: Unknown (General) Error Illegal char <:> at index 2: /F:/Downloads/creator-windows-x86_64-v1.0.7a/lib/creator-1.0.7a.jar
java.nio.file.InvalidPathException: Illegal char <:> at index 2: /F:/Downloads/creator-windows-x86_64-v1.0.7a/lib/creator-1.0.7a.jar
at java.base/sun.nio.fs.WindowsPathParser.normalize(Unknown Source)
at java.base/sun.nio.fs.WindowsPathParser.parse(Unknown Source)
at java.base/sun.nio.fs.WindowsPathParser.parse(Unknown Source)
at java.base/sun.nio.fs.WindowsPath.parse(Unknown Source)
at java.base/sun.nio.fs.WindowsFileSystem.getPath(Unknown Source)
at java.base/java.nio.file.Path.of(Unknown Source)
at io.github.dsheirer.jmbe.creator.Creator.getLibraryClassPath(Creator.java:298)
at io.github.dsheirer.jmbe.creator.Creator.getOptions(Creator.java:244)
at io.github.dsheirer.jmbe.creator.Creator.process(Creator.java:138)
at io.github.dsheirer.jmbe.creator.Creator.createLibrary(Creator.java:412)
at io.github.dsheirer.jmbe.creator.Creator.main(Creator.java:469)

No Audio with P25-2

I'm getting no audio when I am listening to P25-2 channels.

After some digging, I found this on the JMBE Wiki:

P25 Phase 2 channels when started will log the following entry:

16:59:28.415 INFO i.g.d.a.c.m.AmbeAudioModule - AMBE CODEC successfully loaded - P25-2/DMR/NXDN audio will be available

But I never see any of that when I run the sdr-trunk file. I see the following:
i.g.d.a.c.m.ImbeAudioModule - JMBE audio conversion library IMBE CODEC successfully loaded - P25-1 audio will be available [46MB/72MB 64%]

That is the only mention of P25. I double-checked with Command + F as well.

Please excuse my lack of knowledge/proper nomenclature. I am happy to provide more details, just let me know.

AMBEFrame is decoded twice

The AMBEFrame object is created twice, and hence fully processed twice. Rather than creating the AMBEFrame object and passing its reference down the line.

The get audio method used here takes frame data and creates a new AMBEFrame. However an instance of AMBEFrame is created just before this and can be passed it getAudio instead.

AudioWithMetadata audioWithMetadata = AudioWithMetadata.create(getAudio(frameData));

Another getAudio method is available that already takes an AMBEFrame object. This way the frame is not decoded, error corrected, and processed twice.

Compile fails on Slackware64 14.2

I am trying to compile jmbe-3.3a on Slackware64 14.2 I have installed the jdk 8 from oracle I have the $JAVA_HOME set properly I can build jmbe-3.2 without problems but trying 3.3a or the git master get the following output from gradle.

Task :compileJava FAILED
/root/jmbe/src/main/java/jmbe/converters/imbe/IMBEAudioConverter.java:26: error: package jmbe.iface does not exist
import jmbe.iface.AudioConverter;
^
/root/jmbe/src/main/java/jmbe/converters/imbe/IMBEAudioConverter.java:31: error: cannot find symbol
public class IMBEAudioConverter implements AudioConverter
^
symbol: class AudioConverter
/root/jmbe/src/main/java/jmbe/JMBEAudioLibrary.java:7: error: package jmbe.iface does not exist
import jmbe.iface.AudioConversionLibrary;
^
/root/jmbe/src/main/java/jmbe/JMBEAudioLibrary.java:8: error: package jmbe.iface does not exist
import jmbe.iface.AudioConverter;
^
/root/jmbe/src/main/java/jmbe/JMBEAudioLibrary.java:10: error: cannot find symbol
public class JMBEAudioLibrary implements AudioConversionLibrary
^
symbol: class AudioConversionLibrary
/root/jmbe/src/main/java/jmbe/JMBEAudioLibrary.java:59: error: cannot find symbol
public AudioConverter getAudioConverter(String codec, AudioFormat output)
^
symbol: class AudioConverter
location: class JMBEAudioLibrary
/root/jmbe/src/main/java/jmbe/converters/imbe/IMBEAudioConverter.java:79: error: method does not override or implement a method from a supertype
@OverRide
^
/root/jmbe/src/main/java/jmbe/converters/imbe/IMBEAudioConverter.java:93: error: method does not override or implement a method from a supertype
@OverRide
^
/root/jmbe/src/main/java/jmbe/converters/imbe/IMBEAudioConverter.java:99: error: method does not override or implement a method from a supertype
@OverRide
^
/root/jmbe/src/main/java/jmbe/JMBEAudioLibrary.java:12: error: method does not override or implement a method from a supertype
@OverRide
^
/root/jmbe/src/main/java/jmbe/JMBEAudioLibrary.java:27: error: method does not override or implement a method from a supertype
@OverRide
^
/root/jmbe/src/main/java/jmbe/JMBEAudioLibrary.java:34: error: method does not override or implement a method from a supertype
@OverRide
^
/root/jmbe/src/main/java/jmbe/JMBEAudioLibrary.java:40: error: method does not override or implement a method from a supertype
@OverRide
^
/root/jmbe/src/main/java/jmbe/JMBEAudioLibrary.java:46: error: method does not override or implement a method from a supertype
@OverRide
^
/root/jmbe/src/main/java/jmbe/JMBEAudioLibrary.java:58: error: method does not override or implement a method from a supertype
@OverRide
^
15 errors

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':compileJava'.

Compilation failed; see the compiler error output for details.

BUILD FAILED in 3s
1 actionable task: 1 executed
I have tried using both the gradle wrapper included and installing gradle directly both produce the same result

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.