Code Monkey home page Code Monkey logo

airshipper's Introduction

Airshipper

GitHub release) License Discord AUR version

A cross-platform Veloren launcher.

Airshipper

Features

  • Update/Download and start nightly.
  • Fancy UI with batteries included.
  • Updates itself on windows.

Download

NOTE: Airshipper cannot be considered stable yet.

Compile from source

git clone https://gitlab.com/veloren/airshipper.git
cd airshipper
cargo run --release

Make sure to have rustup installed to compile rust code and git lfs for assets.

Airshipper-Server

NOTE: Airshipper-Server is not required by end-users.

Compile from source

git clone https://gitlab.com/veloren/airshipper.git
cd airshipper
cargo run --release --bin airshipper-server

On first execution, a template configuration file will be created at config/config.template.ron and the server will exit.

Rename this to config.ron and edit as appropriate before running again.

cargo run --release --bin airshipper-server

For NixOS users

You can install Airshipper with:

  • Flakes enabled Nix: nix profile install github:veloren/Airshipper
  • Flakes disabled Nix: nix-env -i -f "https://github.com/veloren/Airshipper/tarball/master"

airshipper's People

Contributors

angelonfira avatar atomycx avatar canishelix avatar frinksy avatar herbert-karl avatar hnrq avatar hwittenborn avatar imberflur avatar issew avatar jcapucho avatar ldm0 avatar peterhoeg avatar pythonesque avatar quantumsheep avatar scottc avatar shouvikghosh2048 avatar songtronix avatar timokoesters avatar timsueberkrueb avatar xmac94x avatar yusdacra avatar zesterer 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

airshipper's Issues

Offline support

Right now offline support is really bad and that must be fixed.

BSD Version

Why no version available for BSD Os ?!
I'm using freeBSD OS How do I install AirShiper Launcher?

airshipper does not display changelog and news

Error: invalid uri character

This error originates from isahc not being able to request the changelog/news due to a space in the url which comes from whoami providing as platform: Mac OS.
This should be replaced with std::env::consts::OS which even allows us to remove the entire crate.

NOTE: Any error occuring will block airshipper from allowing the user to try to play the game. This design flaw needs to be fixed once offline support is being worked on.

Better system integration

Is your feature request related to a problem? Please describe.
Windows currently is a first class citizen. A single installer taking care of everything while on macos/linux/bsd the installation process is more complicated.

Describe the solution you'd like
Airshipper should be packaged up based on the distro/system/os specs to better integrate into the users system.

Describe alternatives you've considered
Alternatively at minimum there should be a way to avoid the user having to chmod +x airshipper beforehand to ease the experience.

Current issues

  • linux:
    • File has to be chmod +x airshipper
    • only Arch Linux package available. Often people have to put airshipper binary manually somewhere.
  • macos:
    • File has to be chmod +x airshipper
    • File is being recognized as text
    • no package available. Often people have to put airshipper binary manually somewhere or compile themself.

Bundle openssl

avoids airshipper being unusable by specific distros with old openssl versions.

Should be fixed by adding:
openssl = { version = "*", features = ["vendored"] }

to the dependency section of Cargo.toml

Airshipper error on launch

Describe the bug

I'm trying to boot Airshipper that was installed on pamac from the AUR, but I'm getting this error:

[WARN] Missing features: SAMPLER_ANISOTROPY 
WARNING: lavapipe is not a conformant vulkan implementation, testing use only.
[WARN] Shader validation is disabled 
[ERROR] Airshipper panicked: 

surface does not support the adapter's queue family: panicked at 'surface does not support the adapter's queue family', /home/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-0.6.0/src/backend/direct.rs:1323:35
thread 'main' panicked at 'surface does not support the adapter's queue family', /home/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-0.6.0/src/backend/direct.rs:1323:35
stack backtrace:
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
[ERROR] Heaps not completely freed before drop. Utilization: MemoryHeapUtilization { utilization: MemoryUtilization { used: 82273792, effective: 30096044 }, size: 2147483648 }
[ERROR] Memory leak: SizeEntry(256) is still used
[ERROR] Memory leak: SizeEntry(2048) is still used
[ERROR] Memory leak: SizeEntry(16384) is still used
[ERROR] Memory leak: SizeEntry(131072) is still used
[ERROR] Memory leak: SizeEntry(32768) is still used
[ERROR] Memory leak: SizeEntry(262144) is still used
[ERROR] Memory leak: SizeEntry(65536) is still used
[ERROR] Memory leak: SizeEntry(524288) is still used
[ERROR] Memory leak: SizeEntry(1048576) is still used
[ERROR] Memory leak: SizeEntry(2097152) is still used
[ERROR] Memory leak: SizeEntry(4194304) is still used
[ERROR] Memory leak: SizeEntry(25600) is still used
[ERROR] Memory leak: SizeEntry(204800) is still used
[ERROR] Memory leak: SizeEntry(51200) is still used
[ERROR] Memory leak: SizeEntry(409600) is still used
[ERROR] Memory leak: SizeEntry(102400) is still used
[ERROR] Memory leak: SizeEntry(819200) is still used
[ERROR] Memory leak: SizeEntry(1638400) is still used
[ERROR] Memory leak: SizeEntry(2600192) is still used
[ERROR] Memory leak: SizeEntry(5600000) is still used
[ERROR] Memory leak: SizeEntry(1400000) is still used
[ERROR] Memory leak: SizeEntry(12800) is still used
[ERROR] Memory leak: SizeEntry(240128) is still used
[ERROR] Memory leak: SizeEntry(40192) is still used
[ERROR] Memory leak: SizeEntry(321536) is still used
[ERROR] Memory leak: SizeEntry(80384) is still used
[ERROR] Memory leak: SizeEntry(643072) is still used
[ERROR] Memory leak: SizeEntry(160768) is still used
[ERROR] Memory leak: SizeEntry(1286144) is still used
[ERROR] Memory leak: SizeEntry(36096) is still used
[ERROR] Memory leak: SizeEntry(288768) is still used
[ERROR] Memory leak: SizeEntry(72192) is still used
[ERROR] Memory leak: SizeEntry(577536) is still used
[ERROR] Memory leak: SizeEntry(144384) is still used
[ERROR] Memory leak: SizeEntry(1155072) is still used
[ERROR] Memory leak: SizeEntry(16777216) is still used
[ERROR] Not all allocations from LinearAllocator were freed
[ERROR] DescriptorAllocator is dropped

This could be because of some underlying graphical issue on my system, but I was wondering if there was anything else I could debug.

Desktop:

  • OS: Garuda Linux
  • GPU: GTX 1070TI

Detect Veloren crashes

Can be done via the exit status. Later on with multi window support from iced ask if User wants to report the crash and upload the crash to my server. Fully optional of course and you have to be able to see what exactly will be uploaded.

Make tools to build releases

https://matklad.github.io/2018/01/03/make-your-own-make.html

Could be used in CI too maybe.


  • cargo release will do the following:
    • Build release of airshipper client in regards to current OS (linux, windows, macOS)
    • Copy all needed assets
    • Package it up as needed:
      • Linux: .tar.gz, .zip, .deb, .rpm, ...
      • Windows: .zip, .msi
      • MacOS: .zip
    • Placed by convention in packages/<OS>/airshipper-<version>-<githash:5>.<ext>

This means CI just collects them up from all runners and is ready to make a release.


  • cargo upload will do the following:
  • TBD

make GUI optional

it would be nice to be able to compile airshipper without an GUI (see #11 for possible usecase) to still use it even though the GUI does not work so smoothly on the current system.

Crash with mesa-git and wayland

When I run airshipper on Arch Linux with mesa-git installed I get a crash with following output:

WARNING: lavapipe is not a conformant vulkan implementation, testing use only.
[WARN] Missing features: SAMPLER_ANISOTROPY 
[WARN] Shader validation is disabled 
error marshalling arguments for create_prime_buffer: dup failed: Bad file descriptor
Error marshalling request: Bad file descriptor
[ERROR] Airshipper panicked: 

called `Result::unwrap()` on an `Err` value: Os { code: 9, kind: Other, message: "Bad file descriptor" }: panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 9, kind: Other, message: "Bad file descriptor" }', /home/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/smithay-clipboard-0.5.1/src/worker/mod.rs:272:14
thread 'smithay-clipboard' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 9, kind: Other, message: "Bad file descriptor" }', /home/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/smithay-clipboard-0.5.1/src/worker/mod.rs:272:14
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
[ERROR] Airshipper panicked: 

Next frame: Outdated: panicked at 'Next frame: Outdated', /home/runner/.cargo/git/checkouts/iced-9e73d2fbe1fce35a/62295f5/wgpu/src/window/compositor.rs:130:52
thread 'main' panicked at 'Next frame: Outdated', /home/runner/.cargo/git/checkouts/iced-9e73d2fbe1fce35a/62295f5/wgpu/src/window/compositor.rs:130:52
[ERROR] Airshipper panicked: 

called `Result::unwrap()` on an `Err` value: "SendError(..)": panicked at 'called `Result::unwrap()` on an `Err` value: "SendError(..)"', /home/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/smithay-clipboard-0.5.1/src/lib.rs:85:57
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: "SendError(..)"', /home/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/smithay-clipboard-0.5.1/src/lib.rs:85:57
stack backtrace:
   0:     0x55690b20029a - <unknown>
   1:     0x55690ae215cc - <unknown>
   2:     0x55690b1ffa81 - <unknown>
   3:     0x55690b1ff485 - <unknown>
   4:     0x55690b1fec53 - <unknown>
   5:     0x55690ad87ea6 - <unknown>
   6:     0x55690b1fe800 - <unknown>
   7:     0x55690b21c778 - <unknown>
   8:     0x55690b21c6ec - <unknown>
   9:     0x55690b21c69d - <unknown>
  10:     0x55690ae1ed90 - <unknown>
  11:     0x55690ae25c32 - <unknown>
  12:     0x55690b1f7b3b - <unknown>
  13:     0x55690af0367b - <unknown>
  14:     0x55690ac953b5 - <unknown>
  15:     0x55690ac36943 - <unknown>
  16:     0x55690ac40042 - <unknown>
  17:     0x55690acf308d - <unknown>
  18:     0x55690acdb3a4 - <unknown>
  19:     0x55690acd7a0e - <unknown>
  20:     0x55690ac3eb76 - <unknown>
  21:     0x55690ad8583a - <unknown>
  22:     0x55690ad9d036 - <unknown>
  23:     0x55690ac81553 - <unknown>
  24:     0x55690ada1e75 - <unknown>
  25:     0x7ff1585ce152 - __libc_start_main
  26:     0x55690ac2002a - <unknown>
  27:                0x0 - <unknown>
thread panicked while panicking. aborting.
Illegal instruction (core dumped)

Airshipper does not crash using an X session with mesa-git though. So this could is probably a Wayland related bug.

This is also only related to the GUI of this launcher. The CLI works without problems (I can update and start the game via terminal).

Some env vars no longer need to be set

VOXYGEN_CONFIG
and
VOXYGEN_LOGS
are no longer needed as these are now sensible locations by default and setting these disrupts the new structure with everything in a folder named userdata.

VELOREN_SAVES_DIR is no longer read

Airshipper app does not open on Mac

Describe the bug
I want to download and install the Airshipper app for mac, but I am unable to open the installer correctly.

To Reproduce
Steps to reproduce the behavior:

  1. Go to https://www.veloren.net/download/ and download the .zip file
  2. Unzip the file
  3. Double click on the icon of the program
  4. Instead of opening the program, it opens like a text file

Expected behavior
Airshipper program should open like a .dmg or a normal Mac program, not like a text file

Screenshots
The file looks like this:
Captura de pantalla 2021-03-28 a las 21 00 56
And the program opens like this:
imagen

Desktop (please complete the following information):

  • OS: Mac OS Catalina
  • GPU: Intel

Additional context
I don't know Rust.

when the download is interrupted it starts from the begin

I'm having an hard time to download updates, I don't have a great ISP and if the connection drops I have to download the whole update from the begin, it could just divide the download in chunks

NetworkError => request or response body error: operation timed out [ERROR]
Download failed with: request or response body error: error reading a body from connection: end of file before message length reached

self updates on windows

On linux the package manager will take care of keeping airshipper up to date. However on windows only third party package managers like chocolatey exists which we do not want to require.

The self_update crate could solve this well by using the releases which github provides.

Extract a library out of airshipper

A lot of functionality currently is very generic to any launcher (checking for updates, partial updates, profiles, offline support) and should be extracted into an external crate to be published and used by Airshipper.

As a nice side effect by extracting core logic of the launcher into a separate library is it will reduce the overall growing codebase to a nice maintainable level.

BSD Version!

Why no version available for BSD Os ?!
I'm using freeBSD OS How do I install AirShiper Launcher?

VCRUNTIME140_1.dll is missing

Some people have issues with starting airshipper due to the missing dll.
If placed right beside airshipper it does fix the issue for most of the people.

We should ship it by default with the installer.

Purging s3 artifacts does not consider os

Describe the bug
Airshipper server currently does not take into account to have atleast one nightly per os. As such it can happen that e.g. all windows artifacts will be purged from s3 (most likely when specific artifacts are failing in our CI) and airshipper reporting that the Archive is invalid.

The purging error has shown an bug in airshipper itself as it ignores any http status code and as such tries to download the server's response itself which is of course not a valid zip archive.

Expected behavior
The server should take into account that at minimum one version for each os must be kept when pruning from s3.

Screenshots from user
cmd_airshipper

Wayland Support

Is your feature request related to a problem? Please describe.
Using the CLI can be frustrating. When having an update and not launching from the terminal, you won't be able to update unless you execute Airshipper in the terminal.

Describe the solution you'd like
Add support for Wayland.

Describe alternatives you've considered
Keep using the CLI.

Additional context
Opening Airshipper when using Wayland, it prints this message and only allows me to use the CLI:
[ERROR] IcedError => a suitable graphics adapter or device could not be found

Repo cleanup

Splitting up the client would be great to further detach gui and cli.
But also divide server and client more to avoid all the clutter in the workspace (e.g. env file, docker-compose, dockerfile which is only relevant to the server)

(v0.4.1) Error self-updating Airshipper on Windows 10: msiexec help is displayed instead of executing update

Hello,

When trying to update Airshipper to the latest version via Airshipper v0.4.1, I receive the msiexec help instead of having the msi execute. In my experience as a sysadmin, this happens when you use the incorrect arguments.

The msiexec command it's trying to execute takes the following form:

"C:\Windows\System32\msiexec.exe" /passive /i C:\Users\Example User\AppData\Local\airshipper\airshipper-windows.msi /L*V C:\Users\Example User\AppData\Local\airshipper\airshipper-install.log AUTOSTART=1

It seems the issue is that since I have a space in my username, it's interpreting the C:\ paths as two seperate arguments instead of one. This could be resolved by quoting those arguments. I have attached a link to the relevant code below. Thx

https://github.com/Songtronix/Airshipper/blob/ff875aa4aa41540fe4c34f66ad62b349ca278bdb/client/src/windows.rs#L95

Packaging Airshipper: Fedora Perspective

Is your feature request related to a problem? Please describe.
Currently, packaging Airshipper as an RPM for Fedora is not as straightforward as it could be.
Fedora provides Packaging Guidelines and specific ones for Rust packages. Although there is no requirement to respect these guidelines when creating a Copr repository (Cool Other Projects / Community Projects), following them helps a great deal in making packaging easier.

Describe the solution you'd like

  • Separate the client and server into 2 separate repositories:
    Currently the source for both the client and server components are situated on the same repository. Using macros provided specifically for packaging Cargo-based packages do not work.

  • Use crates.io as the source for dependencies:
    Fedora packages are preferably compiled against system libraries. Macros are provided to achieve this, but only Rust libraries published on crates.io are packaged for Fedora.

  • Use the latest published versions of all dependencies:
    The latest versions of dependencies are more likely to already be packaged for Fedora. However, iced is one of the packages not available at all yet. (Possibly the last one left for this project?)

  • Remove nightly features:
    I suppose this could be in a separate branch if required, but nightly features are not supported when packaging an RPM for Fedora. (Packages must be built using the distribution's version of cargo and rustc, rustup is not available)

  • Add .desktop file and PNG/SVG icon:
    Currently, my package of Airshipper uses a patch file to add a .desktop file, and uses a second source to get a icon. Getting them directly from the repository would simplify things.

Describe alternatives you've considered
Alternatively, I could maintain the RPM package in the same way as it is packaged now.

Additional context
This was mostly a description of my point of view as a Fedora user, rather than demands. I would be happy to help with any of the aforementioned changes ๐Ÿ˜ƒ

I am not sure what the long-term plan for Airshipper is, or if its functionality / purpose will change. In its current state, it is not suitable to be accepted into official Fedora repositories, as it "downloads code bundles from the internet in order to be functional or useful". Alternative, third-party repositories such as RPMFusion might be more inclined to including Airshipper.

provide same functionality to server

Right now the server recompiles right after merge of new features and kicks users who have to wait for CI to produce the next version (~20min) until they can play again.

It would be awesome for server owners to use airshipper to update their servers with clients.

problem when downloading latest veloren build

when trying to use the current release and self build of airshipper, the download cancels at 24% with following error message:
grafik

Plattform: Windows 10
Toolchain: nightly-2020-06-10-x86_64-pc-windows-msvc

[Feature] Version Select

I just downloaded Airshipper and got the latest updates and the game is not starting understandably,
So what about giving the option to choose between versions ?
if the nightly build is broken i can go back to the latest "stable" release

Unable to run the project from scratch

Describe the bug
Cannot run the project due to a package build problem.
Error:

   ... many downloads and compiles later...
   Compiling owned_ttf_parser v0.6.0
error: failed to run custom build command for `x11 v2.18.2`

Caused by:
  process didn't exit successfully: `/home/ferkarchiloff/Airshipper/target/release/build/x11-9f19e8c63dd62c9f/build-script-build` (exit code: 101)
  --- stdout
  cargo:rerun-if-env-changed=X11_NO_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG
  cargo:rerun-if-env-changed=X11_STATIC
  cargo:rerun-if-env-changed=X11_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR

  --- stderr
  thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Failure { command: "\"pkg-config\" \"--libs\" \"--cflags\" \"x11\" \"x11 >= 1.4.99.1\"", output: Output { status: ExitStatus(ExitStatus(256)), stdout: "", stderr: "Package x11 was not found in the pkg-config search path.\nPerhaps you should add the directory containing `x11.pc\'\nto the PKG_CONFIG_PATH environment variable\nNo package \'x11\' found\nPackage x11 was not found in the pkg-config search path.\nPerhaps you should add the directory containing `x11.pc\'\nto the PKG_CONFIG_PATH environment variable\nNo package \'x11\' found\n" } }', /home/ferkarchiloff/.cargo/registry/src/github.com-1ecc6299db9ec823/x11-2.18.2/build.rs:36:67
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
error: build failed
ferkarchiloff@ferkarchiloff-desktop:~/Airshipper$ 

To Reproduce
Steps to reproduce the behavior:

  1. Clone the repository.
  2. cd into it.
  3. Run the cargo run --release command.
  4. See error.

Expected behavior
I was expecting to run it and get Airshipper running.

Desktop (please complete the following information):

  • OS: Ubuntu MATE 20.04.2 LTS (Focal Fossa) 64-bit
  • GPU: AMD RX580 8GB AREZ OC

More bandwidth efficient download of Veloren

Right now Airshipper just downloads the zip everytime which includes all assets. This should be avoided by unzipping it to the s3 storage with a file list and hashes for the client to check each file and the hash locally, downloading what's corrupted, missing, outdated.

For the hashes we can use: https://mvdnes.github.io/rust-docs/zip-rs/zip/read/struct.ZipFile.html#method.crc32
Probably follow this workflow for robust updating: https://github.com/ioquake/ioq3/blob/master/autoupdater-readme.txt

Sign msi installer

Seems like a very hard thing to achieve cheaply and any advice would help me!

"Antialiasing: false" causes integrated GPU to be picked without Vulkan support

Describe the bug
I'm on Pop!_OS with an integrated Intel GPU and an external Nvidia GPU with vendor drivers.
I cannot start Airshipper at all, since Iced will pick my integrated Intel GPU, which has no support for Vulkan.

I found this in your source code:

// client/src/gui/mod.rs
        // https://github.com/hecrj/iced/issues/537
        antialiasing: false,

So apparently this fixes some invisible fonts, but unfortunately according to this comment, antialiasing needs to be set to true so that my Nvidia GPU will be picked.

I'm in a deadlock here. Is there maybe some other way to fix the invisible fonts or replace the font with another one?

server rewrite

A full async rewrite of the server side of airshipper is required due to the available DigitalOcean Space now available to us.

What the backend should do is:

  • via a gitlab webhook download the veloren artifacts and
  • store 3 nightlies and all releases on DigitalOcean Space
  • serve detailed statistics via a prometheus endpoint for our grafana server to grab.

Things to figure out:

  • How to optimize download size? (how to avoid downloading the assets if they haven't changed)

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.