Git Product home page Git Product logo

khamake's People

Contributors

darmie avatar dependabot[bot] avatar dstrekelj avatar hammeron-art avatar jarrio avatar jefvel avatar joncom avatar juakob avatar laxa88 avatar lewislepton avatar luboslenco avatar magneticrealms avatar marianthull avatar moritzbrueckner avatar mundusnine avatar nazariglez avatar npretto avatar posxposy avatar pulcheri avatar rblsb avatar robdangerous avatar sh-dave avatar spookyfm avatar tcdude avatar tong avatar undefinist avatar wighawag avatar xanozoid avatar zaynyatyi avatar zshoals avatar

Stargazers

 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

khamake's Issues

embedflashassets fails on 15.8.0

Trying to embed flash assets now fails (using haxelib version 15.8.0)

Steps to recreate:

  1. clone kha empty project
  2. try to run haxelib run kha build flash --embedflashassets

Fails on:

...\haxe\lib\kha\15,8,0\Tools\khamake\FlashExporter.js:26
        filename = filename.replaceAll('.', '_');
                            ^
TypeError: undefined is not a function

It seems, that at some point filename doesn't contain string but object {path : "./project.kha"} (or similar, writing that from memory, test dump is long gone...)

Falling back to 15.7.3 solves the problem.

node.js - fs.js - writefilesync and renamesync - file doesn't exist before attempting to rename

Compiling shader 1 of 1 (ChairFabric_shadowmap.frag.glsl).
Compiling shader 1 of 1 (ChairFabric_shadowmap.vert.glsl).
Compiling shader 1 of 1 (Coffee_mesh.frag.glsl).
Recompiling Coffee_mesh.frag
Compiling shader 1 of 1 (Coffee_mesh.vert.glsl).
fs.js:809
return binding.rename(pathModule._makeLong(oldPath),
^

Error: ENOENT: no such file or directory, rename 'C:\Users\blake\Documents\blender\build\html5-resources\Coffee_mesh.frag.essl.temp' -> 'C:\Users\blake\Documents\blender\build\html5-resources\Coffee_mesh.frag.essl'
at Error (native)
at Object.fs.renameSync (fs.js:809:18)
at ChildProcess.child.on (C:\Users\blake\Downloads\Armory3D\Armory\armsdk\win32\Kha\Tools\khamake\out\ShaderCompiler.js:356:44)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:852:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:215:5)
Build failed, check console

I was getting this error with Armory3D

Here is my quote from Armory3D issue: #176

I was investigating this issue, my hunch was that it is asynchronous and the writing of the .temp is sometimes slow, depending on what's going on on my computer, which gives it the intermittent appearance. I found that the writing and renaming was done by the node.js plugin fs.js. I found the functions writefilesync and renamesync.

According to: https://nodejs.org/api/fs.html#fs_fs_writefilesync_file_data_options
Both writefilesync and renamesync are the synchronous versions of the functions.

Then I found this article:
http://www.daveeddy.com/2013/03/26/synchronous-file-io-in-nodejs/
Which did a little experiment and comes to the conclusion that the writefilesync and renamesync are synchronous within the node.js context but they tell the operating system to do asynchronous write and rename.

Canvas size and System.init in html5/debug-html5

In html5/debug-html5 the canvas in the index file is being generated with the size of 800x600 and in Main.hx System.init is being called with a size of 1024x768. Maybe all the references could use the size of the window in Kode Studio. This is when the size is not specified in khafile.js and khamake uses the default size.

Error when create android project

I cloned the Empty repo, when I try to create a android project, I'm getting this error (complete log):

C:\Dev\Projetos\Kha\Empty>node Kha/make android
Graphics: direct3d9
Vr API is: none
Generating Kha project.
Assets done.
Haxe stderr: ..\Kha\Backends\Kore/kha/Starter.hx:76: characters 34-60 : Type not found : CardboardVrInterface

Haxe process exited with code 1
VrApi (main.js): undefined
korefile found, generating build files.
Generating Android solution
.
.
.
fs.js:500
return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
^
Error: ENOENT, no such file or directory 'C:\Dev\Projetos\Kha\Empty\Kha\Kore\Tools\koremake\Data\android.clas
spath'
at Error (native)
at Object.fs.openSync (fs.js:500:18)
at Object.fs.readFileSync (fs.js:352:15)
at Object.exports.copyIfDifferent (C:\Dev\Projetos\Kha\Empty\Kha\Kore\Tools\koremake\Files.js:60:38)
at ExporterAndroid.exportSolution (C:\Dev\Projetos\Kha\Empty\Kha\Kore\Tools\koremake\ExporterAndroid.js:25
:11)
at exportKakeProject (C:\Dev\Projetos\Kha\Empty\Kha\Kore\Tools\koremake\main.js:178:11)
at exportProject (C:\Dev\Projetos\Kha\Empty\Kha\Kore\Tools\koremake\main.js:190:10)
at Object.exports.run (C:\Dev\Projetos\Kha\Empty\Kha\Kore\Tools\koremake\main.js:215:2)
at C:\Dev\Projetos\Kha\Empty\Kha\Tools\khamake\main.js:412:35
at ChildProcess. (C:\Dev\Projetos\Kha\Empty\Kha\Tools\khamake\Haxe.js:27:3)

Compile error when Kha path contains '(' or ')'

Came across this path issue recently when Kha is not located directly in project dir.

/test
 ─ Empty
 ─ Kha

Running from Empty: node ../Kha/make, builds fine.

Renaming test to test(1)

/test(1)
 ─ Empty
 ─ Kha

Running from Empty: node ../Kha/make:

Creating Kha project.
/Users/lubos/Documents/test(1)/Kha/Sources/kha/graphics4/Graphics2.hx:87: characters 34-60 : Class<kha.Shaders> has no field painter_image_frag
/Users/lubos/Documents/test(1)/Kha/Sources/kha/graphics4/Graphics2.hx:88: characters 32-58 : Class<kha.Shaders> has no field painter_image_vert
/Users/lubos/Documents/test(1)/Kha/Sources/kha/graphics4/Graphics2.hx:322: characters 34-62 : Class<kha.Shaders> has no field painter_colored_frag
/Users/lubos/Documents/test(1)/Kha/Sources/kha/graphics4/Graphics2.hx:323: characters 32-60 : Class<kha.Shaders> has no field painter_colored_vert
/Users/lubos/Documents/test(1)/Kha/Sources/kha/graphics4/Graphics2.hx:586: characters 34-59 : Class<kha.Shaders> has no field painter_text_frag
/Users/lubos/Documents/test(1)/Kha/Sources/kha/graphics4/Graphics2.hx:587: characters 32-57 : Class<kha.Shaders> has no field painter_text_vert
/Users/lubos/Documents/test(1)/Kha/Sources/kha/graphics4/Graphics2.hx:816: characters 34-60 : Class<kha.Shaders> has no field painter_video_frag
/Users/lubos/Documents/test(1)/Kha/Sources/kha/graphics4/Graphics2.hx:817: characters 32-58 : Class<kha.Shaders> has no field painter_video_vert
/Users/lubos/Documents/test(1)/Kha/Sources/kha/vr/VrInterfaceEmulated.hx:308: characters 26-52 : Class<kha.Shaders> has no field painter_image_vert
/Users/lubos/Documents/test(1)/Kha/Sources/kha/vr/VrInterfaceEmulated.hx:309: characters 28-54 : Class<kha.Shaders> has no field painter_image_frag

Haxe compiler error.

Tested on Linux and MacOS.

Preferred format for sound assets

Hi Robert,

I'm currently playing around with kha.Audio and was wondering about the used sound formats.
I have a couple of wav's in my assets folder, and when generating projects, i get ogg for flash/html5, wav for native targets. As my wav's are pretty big i'd like to use ogg on native targets as well. I looked through the khamake sources and see that the KoreExporter just copies the wavs. For testing, i copied the whole copySound() from FlashExporter.js, stuffed it in there and it's working (i get converted oggs and can play them in my app).

Now i was wondering how this could be integrated into khamake in a configurable way.
I did a basic implementation (only for KoreExporter) of a new field Project.assetOptions.

In the projects khafile.js you can use it like:

project.assetOptions.audio.preferredFormat = 'ogg';

And the KoreExporter.copySound() now just has a simple if and a copy of the flash exporters copySound() for the ogg branch.

    copySound(platform, from, to, encoders, options) {
        if (options.preferredFormat == 'ogg') {
            Files.createDirectories(this.directory.resolve(this.sysdir()).resolve(to).parent());
            Converter.convert(from, this.directory.resolve(this.sysdir()).resolve(to + '.ogg'), encoders.oggEncoder);
            return [to + '.ogg'];
        } else {
            fs.copySync(from.toString(), this.directory.resolve(this.sysdir()).resolve(to + '.wav').toString(), { clobber: true });
            return [to + '.wav'];
        }        
    }

Should i do a PR for this, or is it maybe just one usecase of what wighawag proposes in #34 and could be implemented better?

Crash on sound conversion when path contains spaces

Tested using windows, exporting for html5:
Calling khamake when the project directory path contains spaces crashes during sound conversion.

Output when no other files are converted:

D:\Documents\Eigene Programme\khaTris>node Kha/make html5
Creating Kha project.
Exporting asset 1 of 1 (land.wav).
D:\Documents\Eigene Programme\khaTris\Kha\Tools\oggenc\oggenc.exe {in} -o {out}
--quiet error: Error: spawn D:\Documents\Eigene ENOENT
Assets done.
D:\Documents\Eigene Programme\khaTris\Kha\Tools\oggenc\oggenc.exe {in} -o {out}
--quiet process exited with code -4058
Assets done.
Done.
Done.

Can't compile for Unity - no such file or directory proto.shader

When I try and build a project for the Unity target (works for html5/osx), using I get this error:

{ Error: ENOENT: no such file or directory, open 'Users/bparks/gitrepos/kha_super_cobra1/Empty/Kha/Tools/khamake/Data/unity/Shaders/proto.shader'

which I hardcode fixed by editing this file:
/Users/bparks/gitrepos/kha_super_cobra1/Empty/Kha/Tools/khamake/out/main.js

and inserting a '/' at the begin of the join.. So changed this:

let proto = fs.readFileSync(path.join(options.from, options.kha, 'Tools', 'khamake', 'Data', 'unity', 'Shaders', 'proto.shader'), 'utf8');

to this:

let proto = fs.readFileSync(path.join('/',options.from, options.kha, 'Tools', 'khamake', 'Data', 'unity', 'Shaders', 'proto.shader'), 'utf8');

Here's how I compiled.

$ khamake --t unity                                   
Creating Kha project.
Exporting asset 1 of 24 (arial.ttf).
...
Exporting asset 2 of 24 (bomb1.wav).
Compiling shader 8 of 8 (painter-video.vert.glsl).
{ Error: ENOENT: no such file or directory, open 'Users/bparks/gitrepos/kha_super_cobra1/Empty/Kha/Tools/khamake/Data/unity/Shaders/proto.shader'
    at Error (native)
    at Object.fs.openSync (fs.js:640:18)
    at Object.fs.readFileSync (fs.js:508:33)
    at /Users/bparks/gitrepos/kha_super_cobra1/Empty/Kha/Tools/khamake/out/main.js:317:28
    at next (native)
    at fulfilled (/Users/bparks/gitrepos/kha_super_cobra1/Empty/Kha/Tools/khamake/out/main.js:4:58)
  errno: -2,
  code: 'ENOENT',
  syscall: 'open',
  path: 'Users/bparks/gitrepos/kha_super_cobra1/Empty/Kha/Tools/khamake/Data/unity/Shaders/proto.shader' }

khafile should support async calls

This has been discussed in the past on the irc channel. It would be good that instead of a return statement for the project in khafile, we would call instead callback passing in the project.

done(project);

instead of

return project;

This ways khafile would support asynchronous operations

This would also solve the linting error due to returning something while outside of the scope of a function

Cannot use haxelib installed as dev (for example from github)

The error is :
fs.js:500
return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
^
Error: ENOENT, no such file or directory 'C:\HaxeToolkit\haxe\lib\khage.current'
at Error (native)
at Object.fs.openSync (fs.js:500:18)
at Object.fs.readFileSync (fs.js:352:15)
at exportKhaProject (C:\Development\haxe\kha_test\Kha\Tools\khamake\main.js:502:24)
at exportProject (C:\Development\haxe\kha_test\Kha\Tools\khamake\main.js:638:3)
at Object.exports.run (C:\Development\haxe\kha_test\Kha\Tools\khamake\main.js:723:2)
at Object. (C:\Development\haxe\kha_test\Kha\Tools\khamake\khamake.js:498:23)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)

html5 target and CDN cache compatibility

Currently khamake use the Assets path as they are.
This means that the use of CDN (Content Delivery Network) would cache the assets even if they changed.

One solution to that is to generate a checksum string and append it to the asset path name.
Since khamake already contain a project.kha format with named asset. Khamake could generate such checksum and add it the asset name with the propper mapping in the generated project.kha.

A checksum should also be generated and appended to the kha.js and project.kha file names. This way CDN will be able to cache the kha game and its assets when they do not change and would not cache them if they change. This also allow efficient caching by browser by settign the server to tell the browser to cache the files as long as they can

Parameter --ignoretimestamps

Would be nice to haven an parameter that ignores timestamp on files, re-exporting even when they are already there in a seemingly newer version.

issues using haxelib libraries

hello robert,

i have a couple of issues using external libraries with kha.

  1. detection of the haxelib library path doesn't work for me (hardcoded to be 'lib' in the haxe installation folder) var libpath = pathlib.join(process.env.HAXEPATH, 'lib', libname.toLowerCase());

it probably would be better to run haxelib config and use the output as basepath?

  1. after i copied my libraries folder to the haxe installation i tried again. libraries still couldn't be found.
    i have a git version of some library, so the .current file contains dev, and the .dev file in turn contains the correct folder of the git clone.

  2. so i deleted .current and it picks up the .dev file ... still doesn't work.
    the problem is, the library doesn't have a Sources folder, but src as it's specified in the haxelib.json:classpath property

  3. copied src folder to Sources folder .. still doesn't work.
    the library depends on another haxelib library (haxelib.json:dependencies property)

  4. added all dependencies manually ... still doesn't work.
    the libraries contain an extraParams.hxml that adds compiler flags (--macro) in this case, that don't get picked up by khamake

  5. added the --macro's to the flashdevelop project file ... finally works! (well until i have to rebuild the project files)

now is it me being stupid, or is the whole haxelib integration not really supported by khamake?

Improvement: different run scripts in FD projects

I'm using this default setting in FD project files:

    <option testMovie="Custom" />
    <option testMovieCommand="run.bat" />

I'm copying my different run.bats after running khamake for specific platform.
So, It would be great if this scripts were named differently in different platform prj files, something like:

run_windows.cmd
run_android.cmd
run_html5.cmd

Kore targets --noproject error

Kore targets, for example node Kha/make android-native --compile --noproject give an error:

      throw er; // Unhandled 'error' event
      ^

Error: spawn bash ENOENT
    at Process.ChildProcess._handle.onexit (internal/child_process.js:201:19)
    at onErrorNT (internal/child_process.js:379:16)
    at process._tickCallback (internal/process/next_tick.js:114:19)```

Ability specify what the output .hxproj file will be named.

Currently, when generating project names the resulting .hxproj ends up as something like MyProject-html5.hxproj, it would be nice if this could be overridden and allow a custom project name, for example kha-html5.hxproj when passing in kha as a parameter of somekind.

Access data from command line inside the khafile

Currently there is no way to do something in the khafile that depends on command line arguments
It would be great to be able to access the command line arguments from the khafile so it can act on them

The custom target thing does not currently allow khafile to know about the custom target.

I also think something different than custom target should be used to access any kind of arguments

error when there is no assets field in project.kha

c:\path\to\prj\Kha\Tools\khamake\main.js:212
        if (index >= assets.length) {
                           ^
TypeError: Cannot read property 'length' of undefined
    at exportAssets (c:\path\to\prj\Kha\Tools\khamake\main.js:212:21)
    at exportKhaProject (c:\path\to\prj\Kha\Tools\khamake\main.js:595:2)
    at exportProject (c:\path\to\prj\Kha\Tools\khamake\main.js:664:3)
    at Object.exports.run (c:\path\to\prj\Kha\Tools\khamake\main.js:752:2)
    at Object.<anonymous> (c:\path\to\prj\Kha\Tools\khamake\khamake.js:498:23)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Module.require (module.js:365:17)

Can't build for Windows

Can't build for Windows.
More accurately, it don't create the project solution.

Node v6.9.1

Compiling code.
korefile found.
Creating Windows project files.
ReferenceError: __dirname is not defined
    at eval (eval at createProject (Kha\Kore\Tools\koremake\out\Solution.js:85:23), <anonymous>:3:34)
    at Function.createProject (Kha\Kore\Tools\koremake\out\Solution.js:85:103)
    at eval (eval at createSolution (Kha\Kore\Tools\koremake\out\Solution.js:93:24), <anonymous>:8:32)
    at Function.createSolution (Kha\Kore\Tools\koremake\out\Solution.js:93:130)
    at Function.create (Kha\Kore\Tools\koremake\out\Solution.js:117:33)
    at exportKoremakeProject (Kha\Kore\Tools\koremake\out\main.js:149:40)
    at exportProject (Kha\Kore\Tools\koremake\out\main.js:216:16)
    at Object.<anonymous> (Kha\Kore\Tools\koremake\out\main.js:271:24)
    at next (native)
    at Kha\Kore\Tools\koremake\out\main.js:7:65

Option to khafile for specifying icon(s)

Could be along the lines of

project.addIcon(iconPath) 
or
project.addIcon(iconSize, iconPath);
or
project.options.icons = [{size:"x-large", path: iconPath}, {iconPath:iconPath}];
or
something else

android-native: second run of khamake taking to much time

When I first run khamake for android native it takes 9 seconds. But second and other times it takes almost 2 minutes. I workaround this in script by deleting this dirs:

android_native_build/prj_name/app/src/main/jni
android_native_build/Sources

Refer to docs in case of duplicate assets

from irc:

  • dave: i just updated the wiki section for kha's asset management to include the "advanced" options. come to think of it, maybe they should be the default, as that's what people would expect instead flattened directories?
  • RobertMobile: Not sure. I like to put images in an Image subdir and don't like to have Assets.images.Images_whatever.
  • RobertMobile: But we could detect duplicates and then refer to the docs.

Feature request: specify projectfile on the command line instead of "khafile.js"

Hi Robert,

while fiddling about with --from and --to i thought it would be nice to be able to specify the project file on the command line instead of having a hardcoded "khafile.js". If i take the example from #23, i have

@node Kha/make --target flash --from src/spriter/example-kha-g2 --to build/example-kha-g2
@node Kha/make --target flash --from src/spriter/example-kha-g4 --to build/example-kha-g4

What i'd like to do is something like ...

@node Kha/make --target flash --projectfile example-kha-g2.js --to build/example-kha-g2
@node Kha/make --target flash --projectfile example-kha-g4.js --to build/example-kha-g4

... so i don't have to keep the project files in diffrent subdirs.

FlashDevelop classpaths --from --to problem

Hi Robert,

i just tried to use the --from --to flags while creating a project.

@node Kha/make --target flash --from src/spriter/example-kha-g2 --to build/example-kha-g2

results in Kha paths being broken.

<class path="..\..\src\spriter\example-kha-g2\e:\projects.libraries\Spriter-Example\Kha\Sources" />
<class path="..\..\src\spriter\example-kha-g2\e:\projects.libraries\Spriter-Example\Kha\Backends\Flash" />
<class path="..\..\src\spriter\example-kha-g2" />
<class path="..\..\SpriterHaxeEngine" />

Bugfix is quite easy: In khamake/HaxeProject.js change path.join() to path.resolve()

    for (let i = 0; i < options.sources.length; ++i) {
        classpaths.e.push({
            n: 'class',
            path: path.relative(projectdir, path.resolve(options.from, options.sources[i]))
            //path: path.relative(projectdir, path.join(options.from, options.sources[i]))
        });
    }

Result:

<class path="..\..\Kha\Sources" />
<class path="..\..\Kha\Backends\Flash" />
<class path="..\..\src\spriter\example-kha-g2" />
<class path="..\..\SpriterHaxeEngine" />

Now i think i should start to learn how to do proper forks and pull requests and stuff instead of posting here 😅

Library should be able to add pre and post processes callbacks

Following up on #34
it would be great to allow libraries to add pre process and post process step.
Maybe they could even have write access to the project object so they can add stuff

Not sure how this could be done but maybe a khafile.js per library that would in some way allow to pass callbacks ?

khame server should not allow caching of files

I have had weird behavior wiht my shaders until I cleared my cache.
If the shaders from 2 projects have the same names. or maybe if they are modified? the browser will get from the cache (which might be the shader from the other one

Only seeing a black screen on Unity export.

Hi, I am playing with Kha, which looks great so far!

Unfortunately, I am running into issues when trying to export to Unity:

First, I had to do some quick fixes on khamake files to workaround this issue: #74

Then, I did not succeed to get anything displayed on the Unity export. It just shows a black screen when running.

I tried with some basic lewis lepton's https://github.com/lewislepton/kha-tutorial-series examples (004_loadingImage and 005_drawingShape) with no luck.

The same examples work fine on html5, ios or mac export.

I am using latest Kha (git version) and latest Unity (5.5).

Am I missing something? Is there any other required step to make it work on Unity?

Thanks!

Edit: not sure if I should have posted this on Kha or khamake repository.

Debugging issue with generated FlashDevelop Project File (Flash Target)

Hello Robert,

i encounter issues with the generated FD project file for the flash target (FlashDevelop build 5.0.2.2). Kha is added via git submodule.

  • Kha sources are added with an absolute path
  • Kha sources are actually in a 'Kha' folder (uppercase K),

(Additional libraries in the project.kha file are added with relative paths and are debuggable)

<classpaths>
    <class path="..\Sources" />
    <class path="e:\projects\myproject\kha\Sources" />
    <class path="e:\projects\myproject\kha\Backends\Flash" />
    <class path="..\Libraries\somelib1\Sources" />
    <class path="..\Libraries\somelib2\Sources" />
</classpaths>

This somehow breaks the ability to debug in FD. Breakpoints in Kha source files aren't hit, and doubleclicking logged exceptions/errors in the results panel fails to jump to the correct line in the files. The debugger always jumps to line 1.

Classpath Test Result
<class path="e:\projects\myproject\kha\Sources" /> original fail
<class path="..\kha\Sources" /> relative path fail
<class path="e:\projects\myproject\Kha\Sources" /> correct case fail
<class path="..\Kha\Sources" /> relative path + case ok 😄

android-native: errors when using --from argument

I run khamake like this

node Kha/make -t android-native --from path/to/android/native/build

And I get plenty of errors similar to this:

FC: cannot open PATH/TO/PRJ/KHA/KORE/SOURCES/KORE/NETWORK/SOCKET.H - No such file or folder

addLibrary will add two entries on the generated FlashDevelop project

In my khafile: project.addLibrary("haxe-crypto");

Output of khamake in project-flash.hxproj:

  <classpaths>
    <class path="C:\Kha\Sources" />
    <class path="C:\Kha\Backends\Flash" />
    <class path="..\Sources" />
    <class path="C:\HaxeToolkit\haxe\lib\haxe-crypto\0,0,6\src" />
    <class path="C:\HaxeToolkit\haxe\lib\haxe-crypto\0,0,6" />
  </classpaths>

Passing haxe compilation arguments

I'm trying to define a haxe compilation flag for conditional compilation. I added to my khafile.js project.addDefine("stuff"); but it doesn't seem to take an effect. Is this not the correct use case for addDefine? is there another method that I should call? I'm using the haxelib version of kha.

Unity Backend

The unity backend has a bunch of errors mainly around shader compilation through khamake and then in the unity backend blob loading.

I've been patching as best I can, can someone supply me an older unity build folder for a project that actually works under unity, so I can finish patching the latest toolchains so they work and put it all in a pull request?

Cheers,
Matt

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.