Giter Site home page Giter Site logo

Comments (30)

shesek avatar shesek commented on May 25, 2024 3

The lightning directory is at /data/lightning, you should use lightning-cli --lightning-dir=/data/lightning getpeers.

You can also set alias lnc=lightning-cli --lightning-dir=/data/lightning, then run commands with lnc getpeers.

from lightning-charge.

yayitswei avatar yayitswei commented on May 25, 2024 1

from lightning-charge.

ckcollab avatar ckcollab commented on May 25, 2024

docker-compose restart and it seems to be working now...!

from lightning-charge.

ckcollab avatar ckcollab commented on May 25, 2024

Errrr, sorry for the spam, it seems to have crashed for some reason and is repeating the same behavior as above?

from lightning-charge.

shesek avatar shesek commented on May 25, 2024

It looks like something is crashing the lightningd process. Can you try looking for errors at ~/.lightning/debug.log, or post the file here (please make sure it doesn't contain anything sensitive)?

Also, I haven't tried running this with docker-compose yet, can you try running this directly with docker run and see if the error persists? (just to narrow down the issue - I'll get it working with composer too eventually.)

Something like this should work:

$ docker run -e NETWORK=regtest -e API_TOKEN=myToken -p 9112:9112 shesek/lightning-charge

from lightning-charge.

ckcollab avatar ckcollab commented on May 25, 2024

For some reason debug.log was never made? I was checking for output there as well, it's blank.. :(

Inside docker:

$ ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 06:29 ?        00:00:00 /bin/sh -c scripts/docker-entryp
root         5     1  0 06:29 ?        00:00:00 /bin/bash scripts/docker-entrypo
root         7     1  4 06:29 ?        00:02:06 bitcoind -daemon -testnet -prune
root        34     5  0 06:30 ?        00:00:13 lightningd --network=testnet --p
root        38    34  0 06:30 ?        00:00:00 [lightningd] <defunct>
root        39     5  0 06:30 ?        00:00:06 charged
root        44    34  0 06:30 ?        00:00:00 [lightning_chann] <defunct>
root        46    34  0 06:30 ?        00:00:00 [lightning_closi] <defunct>
root        47    34  0 06:30 ?        00:00:00 [lightning_gossi] <defunct>
root        48    34  0 06:30 ?        00:00:00 [lightning_hsmd] <defunct>
root        49    34  0 06:30 ?        00:00:00 [lightning_oncha] <defunct>
root        50    34  0 06:30 ?        00:00:00 [lightning_openi] <defunct>
root        51    34  0 06:30 ?        00:00:00 lightning_hsmd
root        52    34  1 06:30 ?        00:00:49 lightning_gossipd
root      7460    34  0 07:13 ?        00:00:00 lightning_onchaind
root      7565     0  0 07:17 pts/0    00:00:00 bash
root      7576  7565  0 07:17 pts/0    00:00:00 ps -ef

It works on-and-off, one problem may have been I had the port 9735 closed, so that could be solving some problems? I was able to fund a channel (I think) with lightning-cli inside the container. Waiting on confirmations and such! So if anyone else runs into this, be patient, maybe wait 5 minutes and restart docker, repeat until you have stable connection...

Thanks again for all the work AND lightning (heh) fast reply ;)

from lightning-charge.

shesek avatar shesek commented on May 25, 2024

Did you previously have a lightning node setup at ~/.lightning?

from lightning-charge.

yayitswei avatar yayitswei commented on May 25, 2024

First of all thanks for making lightning-charge!

I'm also seeing intermittent lightningd crashes pretty much the same as @ckcollab, and I'm running it on testnet with the suggested command:

docker run -v $HOME/.lightning:/root/.lightning -v $HOME/.bitcoin:/root/.bitcoin \
             -v `pwd`/charge.db:/opt/charged/sqlite.db \
             -p 9112:9112 -e API_TOKEN=mySecretToken \
             shesek/lightning-charge

Thinking of separating the bitcoind, lightningd and charged into their own containers to isolate the problem.

from lightning-charge.

yayitswei avatar yayitswei commented on May 25, 2024

Fwiw here's the ~/.lightning/debug.log stacktrace. I was also testing out a few bitcoin-cli commands at the time but I didn't think it should affect lightningd.

lightningd(26): Unable to estimate ECONOMICAL/100 fee
lightningd(26): Unable to estimate CONSERVATIVE/2 fee
lightningd(26): Unable to estimate ECONOMICAL/4 fee
lightningd(26): Unable to estimate ECONOMICAL/100 fee
lightningd(26): bitcoin-cli -testnet getblock 0000000001c1ae6b176f93fe950d4b757270bb13fc80dfd233ac866ef39006ee false exited with status 1
lightningd(26): bitcoin-cli -testnet getblock 0000000001c1ae6b176f93fe950d4b757270bb13fc80dfd233ac866ef39006ee false: bad block 'error code: -1
error message:
Block not available (pruned data)
'?
lightningd(26): FATAL SIGNAL 6 RECEIVED
lightningd(26): backtrace: lightningd/log.c:436 (log_crash) 0x5609657e6362
lightningd(26): backtrace: (null):0 ((null)) 0x7fd33efb17ef
lightningd(26): backtrace: (null):0 ((null)) 0x7fd33efb177f
lightningd(26): backtrace: (null):0 ((null)) 0x7fd33efb3379
lightningd(26): backtrace: lightningd/log.c:525 (fatal) 0x5609657e67b8
lightningd(26): backtrace: lightningd/bitcoind.c:368 (process_rawblock) 0x5609657daa50
lightningd(26): backtrace: lightningd/bitcoind.c:156 (bcli_finished) 0x5609657da057
lightningd(26): backtrace: ccan/ccan/io/poll.c:183 (destroy_conn) 0x56096582eca5
lightningd(26): backtrace: ccan/ccan/io/poll.c:189 (destroy_conn_close_fd) 0x56096582ecc5
lightningd(26): backtrace: ccan/ccan/tal/tal.c:240 (notify) 0x560965838441
lightningd(26): backtrace: ccan/ccan/tal/tal.c:400 (del_tree) 0x5609658388f6
lightningd(26): backtrace: ccan/ccan/tal/tal.c:509 (tal_free) 0x560965838d13
lightningd(26): backtrace: ccan/ccan/io/io.c:443 (io_close) 0x56096582d8d7
lightningd(26): backtrace: ccan/ccan/io/poll.c:309 (io_loop) 0x56096582f0bb
lightningd(26): backtrace: lightningd/lightningd.c:321 (main) 0x5609657e4d2c
lightningd(26): backtrace: (null):0 ((null)) 0x7fd33ef9c3f0
lightningd(26): backtrace: (null):0 ((null)) 0x5609657d9599
lightningd(26): backtrace: (null):0 ((null)) 0xffffffffffffffff

from lightning-charge.

shesek avatar shesek commented on May 25, 2024

@yayitswei that was an issue in an older version of lightningd, just updated the docker image to the latest lightningd/charged releases. Should work much smoother now.

@ckcollab Can you see if this helped with your situation also?

from lightning-charge.

shesek avatar shesek commented on May 25, 2024

Correction: the docker image is still uploading, should be ready in a few minutes.

from lightning-charge.

yayitswei avatar yayitswei commented on May 25, 2024

Thanks for the quick response! Could you give me the image digest / dockerhub link so I can verify? Currently on ae2e9f4cfc337aa674777be291be4b0db01489129330889f8e5ebd60cd3752eb.

from lightning-charge.

ckcollab avatar ckcollab commented on May 25, 2024

Also on ae2e9f4cfc337aa674777be291be4b0db01489129330889f8e5ebd60cd3752eb

I did a docker-compose down && docker-compose up -d and I think it may have lost my wallet info? lightning-cli listfunds doesn't show any funds any more. I think everything related to my wallet should have been persisted in ~/.lightning? Maybe my permissions were bad or something and I just fixed them after chown'ing the directory...

from lightning-charge.

shesek avatar shesek commented on May 25, 2024

Sorry, looks like I didn't properly update the image last time! Updated again now, the digest is 958c09c6b765256bf8f3cff063a29c3ad629dfcf57ac438e7ae3bc8026e20cbc.

I did a docker-compose down && docker-compose up -d and I think it may have lost my wallet info? lightning-cli listfunds doesn't show any funds any more.

Ouch. I hope that was on testnet? :)

I think everything related to my wallet should have been persisted in ~/.lightning? Maybe my permissions were bad or something and I just fixed them after chown'ing the directory...

Yes, it should've. Is it persisting it properly now?

I would also suggest to make a backup of your wallet files outside the mounted volume, just in case.

from lightning-charge.

ckcollab avatar ckcollab commented on May 25, 2024

Ouch. I hope that was on testnet? :)

Of course, and no big deal, thanks so much for all of the work on this!

Dockers seem to have updated, and seem to be working alright. I think one of my problems was not creating and giving proper chown permissions to ~/.bitcoin and ~/.lightning.

Yes, it should've. Is it persisting it properly now?

Seems to be, I'll keep you updated.

from lightning-charge.

yayitswei avatar yayitswei commented on May 25, 2024

I'm still on ae2e9f and everything seems to working, no lightningd crashes. I'm afraid to restart lest I lose my wallet info - running on testnet but it took a while to set up those channels!

from lightning-charge.

shesek avatar shesek commented on May 25, 2024

I'm afraid to restart lest I lose my wallet info

If you backup your ~/.lightning directory first, this shouldn't be a concern. You can also try running with a separate lightning directory first, i.e. -v $HOME/.lightning2:/root/.lightning.

from lightning-charge.

ckcollab avatar ckcollab commented on May 25, 2024

I am trying to fund a channel, but I don't see my transactions on a blockchain explorer:

$ lightning-cli connect 02d28c3aac4b4f36746052a735831afbe65bc5698a7be5bd41b42fd1ddf2a1a358 45.63.87.131
{ "id" : "02d28c3aac4b4f36746052a735831afbe65bc5698a7be5bd41b42fd1ddf2a1a358" }
$ lightning-cli fundchannel 02d28c3aac4b4f36746052a735831afbe65bc5698a7be5bd41b42fd1ddf2a1a358 1000000     
{ "tx" : "0200000000010146e31ebb8044121325a3d9e1da098a4932a7ce717a341e044c6afee4fa8fba870100000017160014db2d8a5a61d4f5b31a5431da63e9c18467088ae3ffffffff0240420f0000000000220020e4b666388ed54409f9bfbabe4300ad24177c990c695ec1bf67d3306d03ca0d93ca8f120500000000160014d2c33f5fd099d7adc350cebe52be335477c8528902483045022100920f0b8510cfd1de21eab806e1d6c4e578454e86e62537d0b243692a9d1c846c0220100fae4d293260b3a70b4d264dd39770ea399fc16efe05f7912cfa926023e8390121035893c2e417787b93982bda8f8b5d2685fa0bccca2dcaa407bc9110af1f7394e300000000", "txid" : "d42d9d81beb48ffee45e10e7a33b765764c0fe1c89ca2e748c5c79793a3b1b46" }

https://live.blockcypher.com/btc-testnet/tx/d42d9d81beb48ffee45e10e7a33b765764c0fe1c89ca2e748c5c79793a3b1b46/

And here's getpeers (with another channel still not funded after a while)

$ lightning-cli getpeers
{ "peers" : 
	[ 
		{ "state" : "CHANNELD_AWAITING_LOCKIN", "netaddr" : 
			[ "45.63.87.131:9735" ], "peerid" : "02d28c3aac4b4f36746052a735831afbe65bc5698a7be5bd41b42fd1ddf2a1a358", "connected" : true, "owner" : "lightning_channeld", "msatoshi_to_us" : 1000000000, "msatoshi_total" : 1000000000 }, 
		{ "state" : "CHANNELD_AWAITING_LOCKIN", "netaddr" : 
			[ "159.203.125.125:9735" ], "peerid" : "02c39955c1579afe4824dc0ef4493fdf7f3660b158cf6d367d8570b9f19683afb5", "connected" : true, "owner" : "lightning_channeld", "msatoshi_to_us" : 861165000, "msatoshi_total" : 861165000 } ] }

Transaction not getting sent out...? It is persisting though! :)

from lightning-charge.

shesek avatar shesek commented on May 25, 2024

Interesting, not sure what could be causing this. Can you see if anything relevant shows up in bitcoind's debug.log?

@rustyrussell @cdecker ideas?

from lightning-charge.

ckcollab avatar ckcollab commented on May 25, 2024
$ tail ~/.bitcoin/debug.log
2018-01-17 05:47:48 tor: Thread interrupt
2018-01-17 05:47:48 torcontrol thread exit
2018-01-17 05:47:48 addcon thread exit
2018-01-17 05:47:48 scheduler thread interrupt
2018-01-17 05:47:48 Shutdown: In progress...
2018-01-17 05:47:48 msghand thread exit
2018-01-17 05:47:48 net thread exit
2018-01-17 05:47:51 opencon thread exit
2018-01-17 05:47:51 Dumped mempool: 5e-06s to copy, 0.00198s to dump
2018-01-17 05:47:52 Shutdown: done

From yesterday/a while ago?? I had to fix permissions so I didn't have to sudo to view it... I may be messing up permissions left and right, so totally my fault, but some guiding errors would be super helpful?

from lightning-charge.

shesek avatar shesek commented on May 25, 2024

Did you look back before these lines (e.g. with -n 50)? Maybe there's something relevant before them?

I just tried running with docker from an environment that didn't previously have a ~/.lightning and ~/.bitcoin directory, and ran into the same permissions issues you did. There's some more information on what's causing this here. Trying to find a workaround to make this work out-of-the-box, without having to manually fiddle with permissions.

from lightning-charge.

ckcollab avatar ckcollab commented on May 25, 2024

Here's -n 100 from the dump:

2018-01-17 05:47:40 Bitcoin version v0.15.1.0-g7b57bc998f
2018-01-17 05:47:40 InitParameterInteraction: parameter interaction: -whitelistforcerelay=1 -> setting -whitelistrelay=1
2018-01-17 05:47:40 Assuming ancestors of block 0000000000000000003b9ce759c2a087d52abc4266f8f4ebd6d768b89defa50a have valid signatures.
2018-01-17 05:47:40 Setting nMinimumChainWork=000000000000000000000000000000000000000000723d3581fe1bd55373540a
2018-01-17 05:47:40 Using the 'standard' SHA256 implementation
2018-01-17 05:47:40 Using RdRand as an additional entropy source
2018-01-17 05:47:40 Default data directory /root/.bitcoin
2018-01-17 05:47:40 Using data directory /root/.bitcoin
2018-01-17 05:47:40 Using config file /root/.bitcoin/bitcoin.conf
2018-01-17 05:47:40 Using at most 125 automatic connections (1048576 file descriptors available)
2018-01-17 05:47:40 Using 16 MiB out of 32/2 requested for signature cache, able to store 524288 elements
2018-01-17 05:47:40 Using 16 MiB out of 32/2 requested for script execution cache, able to store 524288 elements
2018-01-17 05:47:40 Using 0 threads for script verification
2018-01-17 05:47:40 scheduler thread start
2018-01-17 05:47:40 libevent: getaddrinfo: address family for nodename not supported
2018-01-17 05:47:40 Binding RPC on address ::1 port 8332 failed.
2018-01-17 05:47:40 HTTP: creating work queue of depth 16
2018-01-17 05:47:40 No rpcpassword set - using random cookie authentication
2018-01-17 05:47:40 Generated RPC authentication cookie /root/.bitcoin/.cookie
2018-01-17 05:47:40 HTTP: starting 4 worker threads
2018-01-17 05:47:40 init message: Verifying wallet(s)...
2018-01-17 05:47:40 Using BerkeleyDB version Berkeley DB 4.8.30: (April  9, 2010)
2018-01-17 05:47:40 Using wallet wallet.dat
2018-01-17 05:47:40 CDBEnv::Open: LogDir=/root/.bitcoin/database ErrorFile=/root/.bitcoin/db.log
2018-01-17 05:47:40 Cache configuration:
2018-01-17 05:47:40 * Using 2.0MiB for block index database
2018-01-17 05:47:40 * Using 8.0MiB for chain state database
2018-01-17 05:47:40 * Using 440.0MiB for in-memory UTXO set (plus up to 286.1MiB of unused mempool space)
2018-01-17 05:47:40 init message: Loading block index...
2018-01-17 05:47:40 Opening LevelDB in /root/.bitcoin/blocks/index
2018-01-17 05:47:40 Opened LevelDB successfully
2018-01-17 05:47:40 Using obfuscation key for /root/.bitcoin/blocks/index: 0000000000000000
2018-01-17 05:47:40 LoadBlockIndexDB: last block file = 0
2018-01-17 05:47:40 LoadBlockIndexDB: last block file info: CBlockFileInfo(blocks=0, size=0, heights=0...0, time=1970-01-01...1970-01-01)
2018-01-17 05:47:40 Checking all blk files are present...
2018-01-17 05:47:40 LoadBlockIndexDB: transaction index disabled
2018-01-17 05:47:40 Initializing databases...
2018-01-17 05:47:40 Pre-allocating up to position 0x1000000 in blk00000.dat
2018-01-17 05:47:40 Opening LevelDB in /root/.bitcoin/chainstate
2018-01-17 05:47:40 Opened LevelDB successfully
2018-01-17 05:47:40 Wrote new obfuscate key for /root/.bitcoin/chainstate: 640c6402a78781ec
2018-01-17 05:47:40 Using obfuscation key for /root/.bitcoin/chainstate: 640c6402a78781ec
2018-01-17 05:47:40 init message: Rewinding blocks...
2018-01-17 05:47:40  block index              18ms
2018-01-17 05:47:40 init message: Loading wallet...
2018-01-17 05:47:40 nFileVersion = 150100
2018-01-17 05:47:40 Keys: 0 plaintext, 0 encrypted, 0 w/ metadata, 0 total
2018-01-17 05:47:40 Performing wallet upgrade to 60000
2018-01-17 05:47:41 keypool added 2000 keys (1000 internal), size=2000 (1000 internal)
2018-01-17 05:47:41 keypool reserve 1
2018-01-17 05:47:41 keypool keep 1
2018-01-17 05:47:42  wallet                 1974ms
2018-01-17 05:47:42 keypool added 1 keys (0 internal), size=2000 (1000 internal)
2018-01-17 05:47:42 setKeyPool.size() = 2000
2018-01-17 05:47:42 mapWallet.size() = 0
2018-01-17 05:47:42 mapAddressBook.size() = 1
2018-01-17 05:47:42 UpdateTip: new best=000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f height=0 version=0x00000001 log2_work=32.000022 tx=1 date='2009-01-03 18:15:05' progress=0.000000 cache=0.0MiB(0txo)
2018-01-17 05:47:42 Failed to open mempool file from disk. Continuing anyway.
2018-01-17 05:47:42 mapBlockIndex.size() = 1
2018-01-17 05:47:42 nBestHeight = 0
2018-01-17 05:47:42 torcontrol thread start
2018-01-17 05:47:42 Bound to [::]:8333
2018-01-17 05:47:42 Bound to 0.0.0.0:8333
2018-01-17 05:47:42 init message: Loading P2P addresses...
2018-01-17 05:47:42 ERROR: DeserializeFileDB: Failed to open file /root/.bitcoin/peers.dat
2018-01-17 05:47:42 Invalid or missing peers.dat; recreating
2018-01-17 05:47:42 init message: Loading banlist...
2018-01-17 05:47:42 ERROR: DeserializeFileDB: Failed to open file /root/.bitcoin/banlist.dat
2018-01-17 05:47:42 Invalid or missing banlist.dat; recreating
2018-01-17 05:47:42 init message: Starting network threads...
2018-01-17 05:47:42 net thread start
2018-01-17 05:47:42 dnsseed thread start
2018-01-17 05:47:42 Loading addresses from DNS seeds (could take a while)
2018-01-17 05:47:42 init message: Done loading
2018-01-17 05:47:42 opencon thread start
2018-01-17 05:47:42 msghand thread start
2018-01-17 05:47:42 addcon thread start
2018-01-17 05:47:42 139 addresses found from DNS seeds
2018-01-17 05:47:42 dnsseed thread exit
2018-01-17 05:47:43 receive version message: /Satoshi:0.15.1/: version 70015, blocks=504605, us=35.190.154.83:52172, peer=0
2018-01-17 05:47:45 receive version message: /Satoshi:0.14.2/UASF-Segwit:1.0(BIP148)/: version 70015, blocks=504605, us=35.190.154.83:57542, peer=1
2018-01-17 05:47:48 tor: Thread interrupt
2018-01-17 05:47:48 torcontrol thread exit
2018-01-17 05:47:48 addcon thread exit
2018-01-17 05:47:48 scheduler thread interrupt
2018-01-17 05:47:48 Shutdown: In progress...
2018-01-17 05:47:48 msghand thread exit
2018-01-17 05:47:48 net thread exit
2018-01-17 05:47:51 opencon thread exit
2018-01-17 05:47:51 Dumped mempool: 5e-06s to copy, 0.00198s to dump
2018-01-17 05:47:52 Shutdown: done

Also, I was able to finally connect, I think!

$ lightning-cli getpeers
{ "peers" : 
	[ 
		{ "state" : "CHANNELD_AWAITING_LOCKIN", "netaddr" : 
			[ "45.63.87.131:9735" ], "peerid" : "02d28c3aac4b4f36746052a735831afbe65bc5698a7be5bd41b42fd1ddf2a1a358", "connected" : true, "owner" : "lightning_channeld", "msatoshi_to_us" : 1000000000, "msatoshi_total" : 1000000000 }, 
		{ "state" : "CHANNELD_AWAITING_LOCKIN", "netaddr" : 
			[ "159.203.125.125:9735" ], "peerid" : "02c39955c1579afe4824dc0ef4493fdf7f3660b158cf6d367d8570b9f19683afb5", "connected" : true, "owner" : "lightning_channeld", "msatoshi_to_us" : 861165000, "msatoshi_total" : 861165000 }, 
		{ "state" : "OPENINGD", "netaddr" : 
			[ "81.27.36.90:9735" ], "peerid" : "021a45969aea11e8a306defcecf52029628c98f7e900941e2fd4f628ccf2aece28", "connected" : true, "owner" : "lightning_openingd" } ] }

So hopefully in a couple more confirmations I can get my first item from Starblocks!!! :D

from lightning-charge.

shesek avatar shesek commented on May 25, 2024

Can you please check what grep -C 10 sendrawtransaction ~/.bitcoin/debug.log returns?

from lightning-charge.

ckcollab avatar ckcollab commented on May 25, 2024

Nothing is logging there any more actually.. permissions should be ok.. I just went into the container and read/wrote to the file...! Output from that command was empty

from lightning-charge.

yayitswei avatar yayitswei commented on May 25, 2024

It's probably not the issue but your docker-compose.yml in your first post has a small typo:

root.lightning => root/.lightning

from lightning-charge.

ckcollab avatar ckcollab commented on May 25, 2024

That's definitely an issue!! Thanks. That could solve some problems for sure ;)

from lightning-charge.

shesek avatar shesek commented on May 25, 2024

@ckcollab I made some changes to resolve the permission issues with docker. Specifically, the README now suggests using --user <uid> so that files created inside the container are owned by the user. This also required moving data storage to /data, as the user inside the container no longer has access to write in /root.

I also changed the instructions so that everything is stored in a single directory, instead of using the user's local ~/.bitcoin and ~/.lightning.

If you'd like to run this with the previously used paths, replace -v `pwd`/data:/data with -v $HOME/.lightning:/data/lightning -v $HOME/.bitcoin:/data/bitcoin -v `pwd`/charge.db:/data/charge.db

from lightning-charge.

shesek avatar shesek commented on May 25, 2024

@ckcollab @yayitswei Also, another important change: bitcoind is now running without pruning, due to some pruning-related issues in c-lightning. You'll have to either manually reindex your existing bitcoin datadir, or remove it to let it re-sync from scratch.

Note that the latest changes aren't on docker hub yet, I'll update when they are.

from lightning-charge.

shesek avatar shesek commented on May 25, 2024

[email protected] was released on npm and docker (image digest: 563a79de9c1e5a9edb070e5a6d1ce06cb11707e3b1f3cadfde74a009e9a4cdb1).

Closing this issue, let me know if you need any other help.

from lightning-charge.

yayitswei avatar yayitswei commented on May 25, 2024

Currently getting this error calling lightning-cli inside the container:

root@628964919fe2:/opt/charged# lightning-cli getpeers
lightning-cli: Moving into '/tmp/.lightning': No such file or directory

I'm on 563a79de9c1e5a9edb070e5a6d1ce06cb11707e3b1f3cadfde74a009e9a4cdb1.

from lightning-charge.

Related Issues (20)

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.