spesmilo / electrum Goto Github PK
View Code? Open in Web Editor NEWElectrum Bitcoin Wallet
Home Page: https://electrum.org
License: MIT License
Electrum Bitcoin Wallet
Home Page: https://electrum.org
License: MIT License
The setup script is throwing up an error trying to copy data/background.png saying it doesn't exist. I'm guessing due to some recent changes in the codebase.
sudo python setup.py install
/usr/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'install_requires'
warnings.warn(msg)
running install
running build
running build_py
file lib/icons_rc.py (for module electrum.icons_rc) not found
file lib/icons_rc.py (for module electrum.icons_rc) not found
running build_scripts
running install_lib
copying build/lib.linux-x86_64-2.7/electrum/msqr.py -> /usr/local/lib/python2.7/dist-packages/electrum
copying build/lib.linux-x86_64-2.7/electrum/gui.py -> /usr/local/lib/python2.7/dist-packages/electrum
copying build/lib.linux-x86_64-2.7/electrum/exchange_rate.py -> /usr/local/lib/python2.7/dist-packages/electrum
copying build/lib.linux-x86_64-2.7/electrum/gui_qt.py -> /usr/local/lib/python2.7/dist-packages/electrum
copying build/lib.linux-x86_64-2.7/electrum/gui_lite.py -> /usr/local/lib/python2.7/dist-packages/electrum
copying build/lib.linux-x86_64-2.7/electrum/init.py -> /usr/local/lib/python2.7/dist-packages/electrum
copying build/lib.linux-x86_64-2.7/electrum/history_widget.py -> /usr/local/lib/python2.7/dist-packages/electrum
copying build/lib.linux-x86_64-2.7/electrum/mnemonic.py -> /usr/local/lib/python2.7/dist-packages/electrum
copying build/lib.linux-x86_64-2.7/electrum/wallet.py -> /usr/local/lib/python2.7/dist-packages/electrum
copying build/lib.linux-x86_64-2.7/electrum/pyqrnative.py -> /usr/local/lib/python2.7/dist-packages/electrum
copying build/lib.linux-x86_64-2.7/electrum/qrscanner.py -> /usr/local/lib/python2.7/dist-packages/electrum
copying build/lib.linux-x86_64-2.7/electrum/interface.py -> /usr/local/lib/python2.7/dist-packages/electrum
copying build/lib.linux-x86_64-2.7/electrum/bmp.py -> /usr/local/lib/python2.7/dist-packages/electrum
copying build/lib.linux-x86_64-2.7/electrum/util.py -> /usr/local/lib/python2.7/dist-packages/electrum
copying build/lib.linux-x86_64-2.7/electrum/i18n.py -> /usr/local/lib/python2.7/dist-packages/electrum
copying build/lib.linux-x86_64-2.7/electrum/version.py -> /usr/local/lib/python2.7/dist-packages/electrum
byte-compiling /usr/local/lib/python2.7/dist-packages/electrum/msqr.py to msqr.pyc
byte-compiling /usr/local/lib/python2.7/dist-packages/electrum/gui.py to gui.pyc
byte-compiling /usr/local/lib/python2.7/dist-packages/electrum/exchange_rate.py to exchange_rate.pyc
byte-compiling /usr/local/lib/python2.7/dist-packages/electrum/gui_qt.py to gui_qt.pyc
byte-compiling /usr/local/lib/python2.7/dist-packages/electrum/gui_lite.py to gui_lite.pyc
byte-compiling /usr/local/lib/python2.7/dist-packages/electrum/init.py to init.pyc
byte-compiling /usr/local/lib/python2.7/dist-packages/electrum/history_widget.py to history_widget.pyc
byte-compiling /usr/local/lib/python2.7/dist-packages/electrum/mnemonic.py to mnemonic.pyc
byte-compiling /usr/local/lib/python2.7/dist-packages/electrum/wallet.py to wallet.pyc
byte-compiling /usr/local/lib/python2.7/dist-packages/electrum/pyqrnative.py to pyqrnative.pyc
byte-compiling /usr/local/lib/python2.7/dist-packages/electrum/qrscanner.py to qrscanner.pyc
byte-compiling /usr/local/lib/python2.7/dist-packages/electrum/interface.py to interface.pyc
byte-compiling /usr/local/lib/python2.7/dist-packages/electrum/bmp.py to bmp.pyc
byte-compiling /usr/local/lib/python2.7/dist-packages/electrum/util.py to util.pyc
byte-compiling /usr/local/lib/python2.7/dist-packages/electrum/i18n.py to i18n.pyc
byte-compiling /usr/local/lib/python2.7/dist-packages/electrum/version.py to version.pyc
running install_scripts
copying build/scripts-2.7/electrum -> /usr/local/bin
changing mode of /usr/local/bin/electrum to 775
running install_data
copying electrum.desktop -> /usr/share/applications/
copying electrum.png -> /usr/share/app-install/icons/
error: can't copy 'data/background.png': doesn't exist or not a regular file
I'm getting an error with the git 72b4ac9 revision and the 1.5.6 version.
Traceback (most recent call last):
File "/usr/bin/electrum", line 254, in <module>
gui.main(url)
File "/usr/lib/python2.7/site-packages/electrum/gui.py", line 1247, in main
ew = ElectrumWindow(self.wallet, self.config)
File "/usr/lib/python2.7/site-packages/electrum/gui.py", line 535, in __init__
self.create_history_tab()
File "/usr/lib/python2.7/site-packages/electrum/gui.py", line 973, in create_history_tab
self.update_history_tab()
File "/usr/lib/python2.7/site-packages/electrum/gui.py", line 1178, in update_history_tab
details = self.wallet.get_tx_details(tx_hash)
File "/usr/lib/python2.7/site-packages/electrum/wallet.py", line 436, in get_tx_details
time_str = datetime.datetime.fromtimestamp(timestamp).isoformat(' ')[:-3]
TypeError: a float is required
Can you add a message that notify the user that there is a new final version available to download?
It would be nice to have a search box in electrum, so that you could search your history, receive addresses and contacts. Simple feature that would be handy for those of us with many contacts.
Thanks :D
Prepare something like http://multibit.org/test/releaseCheckList-0.4.16.jpg as wiki page, so every stable release will be checked for basic functionality.
Currently when you are sending a payment the client freezes for a few seconds. This is bad UX and we should add some features to let people know the client is working on your request.
The wallet.py file does all the base58 encoding, hashing, and a whole lot of other stuff that makes it really large jack of all trades and unwieldy. It would be more readable and more organized if we could split off some of those responsibilities into other python modules.
There are existing libraries that we can use like this base58 code or we can do some cutting/pasting
I ran the client, and at first it was stuck on "disconnected" for a while, then on "synchronizing".
No real indication of what's going on, and it's taking a long time. It's a bad UX to let the user just wait.
Is there a timeout on the sync process? How long should it take? Why isn't it instant (for a fresh wallet, at least)
The overall UX is not good.
Right now the only check thats being done is making sure that the length isn't 0, ie something is being entered before the send button becomes clickable.
I think it would be much better if the wallet file were actually valid JSON. I don't know if this has been discussed before but there are some problems that prevent wallets from being viewed in JSON viewers for debugging purposes.
I could work on this, or not depending on whether others feel it really should be valid JSON.
Things I know are wrong: single quotes instead of double, capitalized boolean values, None is not valid and should be "None".
Not sure if anything else. I'm manually /search/replacing/ so I can view with nice formatting...
THe package I downloaded from the main site wants me to install X11 on my mac and I prefer not to if I can avoid it.
Also, are there any instructions / dependencies anywhere for building electrum on OS X?
I had to modify electrum.dat manually to get it to start again.
They are separate logics and should not be together.
I can't find anyway of verifying the source tarballs on the electrum homepage, some signed shasums would be nice.
The master public key is great for accepting payments without having to expose your private key to your webserver or a shopping cart service. A sample implementation of this concept exists at AcceptBit.com.
However, it is currently not very easy for end users to get the master public key, the only way to do it is through the command line:
electrum get master_public_key
It would be nice if there was an option in the UI allowing users to get it.
Note: I see something in gui_lite.py
referring to acceptbit - I'm not sure if this is accessible to users yet.
If the ~/.electrum/
directory doesn't exist creating the config file fails and electrum crashes. This is really shitty because the first time the user tries to boot electrum they get an error and likely will go away.
The simple solution is to create the directory if it doesn't exist.
I've noticed that there are a significant number of raised BaseExceptions that display string error messages in the wallet.py file. This practice is discouraged and deprecated in python 2.5+ . I am not sure whether or not to replace the BaseExceptions with StandardError or OSError. If someone is more familiar with how these work, it should be a relatively simple find and replace option.
Some windows security crap I guess.
I've seen a number of electrum newbies get confused when first starting up the program because the default server cannot connect to the client. They think its something wrong that they did (or that electrum is broken) vs the server being broken. This server should be taken off the list or the default should be changed to another one to avoid this problem.
Pro GUI acts weird when editing the amount of bitcoin to send.
enter 1.456
hit cursor left 3 times
enter "123"
see "0.145623" instead of the expected "0.123456"
some guy had some ridiculous small balance like 0.001 and the server was rejecting his payment unless he added a fee of 0.001.
so he had an inaccessible balance.
don't think this is resolvable in the client but maybe there should be a note or something. the real fix is to have a server which doesn't reject any transactions sent to it (just relays them on) and put the onus of transaction validation on the client (maybe)
10/19/12 6:58:48 AM com.apple.launchd.peruser.502496 Exited: Killed
10/19/12 6:59:15 AM [0x0-0x784784].org.pythonmac.unspecified.Electrum[11846] Traceback (most recent call last):
10/19/12 6:59:15 AM [0x0-0x784784].org.pythonmac.unspecified.Electrum[11846] File "/Applications/Electrum.app/Contents/Resources/boot.py", line 309, in
10/19/12 6:59:15 AM [0x0-0x784784].org.pythonmac.unspecified.Electrum[11846] _run('electrum.py')
10/19/12 6:59:15 AM [0x0-0x784784].org.pythonmac.unspecified.Electrum[11846] File "/Applications/Electrum.app/Contents/Resources/boot.py", line 306, in _run
10/19/12 6:59:15 AM [0x0-0x784784].org.pythonmac.unspecified.Electrum[11846] execfile(path, globals(), globals())
10/19/12 6:59:15 AM [0x0-0x784784].org.pythonmac.unspecified.Electrum[11846] File "/Applications/Electrum.app/Contents/Resources/electrum.py", line 147, in
10/19/12 6:59:15 AM [0x0-0x784784].org.pythonmac.unspecified.Electrum[11846] import electrum.gui_lite as gui
10/19/12 6:59:15 AM [0x0-0x784784].org.pythonmac.unspecified.Electrum[11846] ImportError: No module named gui_lite
10/19/12 6:59:15 AM Electrum[11846] Electrum Error
10/19/12 6:59:18 AM com.apple.launchd.peruser.502496 Exited with exit code: 255
10/19/12 6:59:20 AM [0x0-0x786786].org.pythonmac.unspecified.Electrum[11854] Traceback (most recent call last):
10/19/12 6:59:20 AM [0x0-0x786786].org.pythonmac.unspecified.Electrum[11854] File "/Applications/Electrum.app/Contents/Resources/boot.py", line 309, in
10/19/12 6:59:20 AM [0x0-0x786786].org.pythonmac.unspecified.Electrum[11854] _run('electrum.py')
10/19/12 6:59:20 AM [0x0-0x786786].org.pythonmac.unspecified.Electrum[11854] File "/Applications/Electrum.app/Contents/Resources/boot.py", line 306, in _run
10/19/12 6:59:20 AM [0x0-0x786786].org.pythonmac.unspecified.Electrum[11854] execfile(path, globals(), globals())
10/19/12 6:59:20 AM [0x0-0x786786].org.pythonmac.unspecified.Electrum[11854] File "/Applications/Electrum.app/Contents/Resources/electrum.py", line 147, in
10/19/12 6:59:20 AM [0x0-0x786786].org.pythonmac.unspecified.Electrum[11854] import electrum.gui_lite as gui
10/19/12 6:59:20 AM [0x0-0x786786].org.pythonmac.unspecified.Electrum[11854] ImportError: No module named gui_lite
10/19/12 6:59:20 AM Electrum[11854] Electrum Error
10/19/12 6:59:22 AM com.apple.launchd.peruser.502496 Exited with exit code: 255
Py2app for OSX and Windows. Perhaps a PPA for Ubuntu?
A confirmation dialog should be shown in the light-gui when you want to send a certain amount of coins.
ability to tag receive addresses helps merchants out. this feature would save me time for conference tickets.
Summary: Compressed keys are not supported by Electrum
commmand line executing of "electrum import address:private key" fails when the format of the keypair is compressed (a new bitcoin wallet import format aka WIF)
The only workaround for this issue is to transfer all funds to a non compressed public key.
For general info see http://sourceforge.net/mailarchive/forum.php?thread_name=CAPg%2BsBhDFCjAn1tRRQhaudtqwsh4vcVbxzm%2BAA2OuFxN71fwUA%40mail.gmail.com&forum_name=bitcoin-development
Electrum doesn't update the balance on imported keys, that had to be uncompressed prior to importing. In other words, transactions in the blockchain referencing a compressed address do not match the equivalent uncompressed address using the current search rules. However, this may not be a problem, since the two addresses are actually considered unique and different address per the bitcoin core dev:
http://sourceforge.net/mailarchive/message.php?msg_id=28428010
when you enter values in the amount field it causes shifting of the elements which is ugly.
cosmetic bug.
I am new to bitcoin and I was playing around with Electrum, moving coins between my addresses, and I got my wallet into a state where I can no longer spend some of my coins.
Balance shows I have 2 coins in my wallet.
When I list the addresses with balances, it shows 4 of the addresses have a balance (the individual balances are: 1, 0.5, 0.25, 0.25).
When I try a payto with a value greater than 0.25 I get this error:
Traceback (most recent call last):
File "/Applications/Electrum.app/Contents/Resources/electrum.py", line 465, in
File "lib/wallet.pyc", line 924, in mktx
BaseException: Not enough funds
It looks like it is an issue with the address itself, not the wallet. I imported the address into a brand new wallet and I still get the same issue.
I am new to the scene, but this is my guess as to what is happening:
In each of the affected addresses, I did a partial spend out of the address. However, I did not wait for a confirmation of the coins coming into the address before moving half of them out. It looks like the transaction into the address was converted to have two outputs (both pointing to the same address), the first output being used for the partial spend going out.
Here are the affected addresses:
https://blockchain.info/address/17EeVUeSi69wxDDGhC4LQ46jzBR4HLneG
https://blockchain.info/address/198tJXnd4AvrgpVFAhSpjcvRMGJfeLBBnm
https://blockchain.info/address/13hfKfm8JDVG3R6jnegdiBJ6vxnrorZqiE
So, my wild ass guess is the history for these addresses is getting screwed up. For each address, there is one transaction that has two outputs (both outputs pointing to the address in question). The second output is unspent, but Electrum believes it is spent.
I was able to get the coins transfered by importing the keys into blockchain.info.
Start up electrum > menubar > quit. Nothing happens.
Using git head, text UI, I get error "Invalid Bitcoin address" after trying to send coins to 1JMLBfckLq6WPQm1NzebS5MGgzJR8Xgw8d
I'm sure I have no whitespaces in the input field.
I cannot enter special chars (!@#$%^&*()) in the text UI, especially to password field when sending transaction.
Latest git version, Ubuntu 12.10, gnome terminal.
1.) Start up electrum
2.) Click on the menubar and select brain wallet
Traceback (most recent call last):
File "/home/vm/electrum-github/lib/gui_lite.py", line 600, in show_seed_dialog
gui_qt.ElectrumWindow.show_seed_dialog(self.wallet)
File "/home/vm/electrum-github/lib/gui_qt.py", line 908, in show_seed_dialog
password = parent.password_dialog()
AttributeError: 'NoneType' object has no attribute 'password_dialog'
Steps to reproduce:
...
nothing happens.
This is slightly tricky.
Probably the way is to load multiple Wallet classes. But then we need to make sure they work together nicely. It would be preferable to stop, start a new one and reload it in the gui as that would mean less resource usage and having many wallets would not slow down Electrum. However it makes switching between wallets slower and doesn't seem trivial yet due to the way Electrum is architected.
Setup.py is used by pip to do the install and configuration of the app. The problem is that the setup.py file presumes all the deps are already installed which makes little sense.
I think we need to find a way to remove the lib/version and lib/utils dependencies on the script and to this an other way since this triggers the loading of the whole electrum code which of course will fail since the deps are not installed by pip yet.
This error only occurs when ~/.electrum/ is present. With default config it too crashes, but only when ~/.electrum/ is present. This is with the latest version on Mac OS X 10.7 (AKA lion). Works perfectly on my linux machine.
Theese are my error message results.
2012-12-17 22:16:05,441 [0x0-0x12e52e4].org.pythonmac.unspecified.Electrum: Traceback (most recent call last):
2012-12-17 22:16:05,441 [0x0-0x12e52e4].org.pythonmac.unspecified.Electrum: File "/Applications/Electrum.app/Contents/Resources/__boot__.py", line 309, in <module>
2012-12-17 22:16:05,441 [0x0-0x12e52e4].org.pythonmac.unspecified.Electrum: _run('electrum.py')
2012-12-17 22:16:05,441 [0x0-0x12e52e4].org.pythonmac.unspecified.Electrum: File "/Applications/Electrum.app/Contents/Resources/__boot__.py", line 306, in _run
2012-12-17 22:16:05,441 [0x0-0x12e52e4].org.pythonmac.unspecified.Electrum: execfile(path, globals(), globals())
2012-12-17 22:16:05,441 [0x0-0x12e52e4].org.pythonmac.unspecified.Electrum: File "/Applications/Electrum.app/Contents/Resources/electrum.py", line 119, in <module>
2012-12-17 22:16:05,441 [0x0-0x12e52e4].org.pythonmac.unspecified.Electrum: wallet.read()
2012-12-17 22:16:05,441 [0x0-0x12e52e4].org.pythonmac.unspecified.Electrum: File "lib/wallet.pyc", line 716, in read
2012-12-17 22:16:05,441 [0x0-0x12e52e4].org.pythonmac.unspecified.Electrum: File "lib/wallet.pyc", line 887, in update_tx_history
2012-12-17 22:16:05,441 [0x0-0x12e52e4].org.pythonmac.unspecified.Electrum: File "lib/wallet.pyc", line 892, in update_tx_labels
2012-12-17 22:16:05,441 [0x0-0x12e52e4].org.pythonmac.unspecified.Electrum: KeyError: 'value'
2012-12-17 22:16:05,511 Electrum: Electrum Error
2012-12-17 22:16:08,530 com.apple.launchd.peruser.501: ([0x0-0x12e52e4].org.pythonmac.unspecified.Electrum[63351]) Exited with code: 255
Hi,
I've installed electrum on OS X via homebrew and pip.
It starts up fine, but not if I try to run it with -w
pointing to a wallet file residing in another directory (a Dropbox folder).
Doesn't matter if the path is absolute or relative.
The wallet file was generated by Bitcoin-QT. Is importing wallets from other clients supported?
I've installed electrum from the latest master, and I'm on OS X 10.6.8.
This is the trace:
Traceback (most recent call last):
File "/usr/local/share/python/electrum", line 7, in <module>
execfile(__file__)
File "/Users/lrnz/code/electrum/src/electrum/electrum", line 120, in <module>
wallet.read()
File "/Users/lrnz/code/electrum/src/electrum/lib/wallet.py", line 727, in read
raise IOError("Cannot read wallet file.")
IOError: Cannot read wallet file.
Currently the server handling is very in your face. This has to be reworked so that servers get picked randomly and in an unobtrusive way.
It would be nice if someone could add the ability to connect to the testnet blockchain, maybe enabled when a flag is set on the command line at startup?
When I try to send a payment I get the following error:
Traceback (most recent call last):
File "/tmp/Electrum-1.5.5/lib/gui_lite.py", line 399, in send
self.amount_input.text(), self):
File "/tmp/Electrum-1.5.5/lib/gui_lite.py", line 768, in send
h = self.wallet.send_tx(tx)
File "/tmp/Electrum-1.5.5/lib/wallet.py", line 808, in send_tx
tx_hash = Hash(tx.decode('hex') )[::-1].encode('hex')
File "/usr/lib/python2.7/encodings/hex_codec.py", line 42, in hex_decode
output = binascii.a2b_hex(input)
TypeError: Non-hexadecimal digit found
My software versions:
python 2.7.3
python-ecdsa 0.8
python-slowaes 0.1a1
python-pyqt 4.9.5
The satoshi client has a button to backup the wallet file. In my opinion this would be a nice addition to electrum as well.
The usecase would be for new users getting started on Bitcoin. The idea in electrum is that one memorizes the passphrase, however, since the passphrase is never used, one will forget it over time.
A techy user will use spaced repetition to commit it to long term memory, but when I help someone getting started, I would like to have them set up securely and instantly, without having to remind them to learn their passphrase.
I would tell them to put a password on their wallet (=encrypt it), then backup the wallet and send it to themselves via mail, or save it via dropbox (or send it to me so I'll add it to my backups).
When creating a new password, I'm asked for a password + verification.
If the verification does not equal the password, the client should just let me retry, not give up on encrypting the wallet.
Immediately after starting up client, I get following exception (using latest git):
Traceback (most recent call last):
File "./electrum", line 253, in
gui.main(url)
File "/home/marekp/projekty/electrum-upstream/lib/gui_lite.py", line 115, in main
self.mini = MiniWindow(actuator, self.expand, self.config)
File "/home/marekp/projekty/electrum-upstream/lib/gui_lite.py", line 274, in init
self.receiving = receiving_widget.ReceivingWidget(self)
File "/home/marekp/projekty/electrum-upstream/lib/receiving_widget.py", line 66, in init
self.update_list()
File "/home/marekp/projekty/electrum-upstream/lib/receiving_widget.py", line 45, in update_list
for tx_hash, tx_height in history:
ValueError: need more than 1 value to unpack
If you press the receive button and mouse over the little dialog window that pops up, it will immediately disappear.
As a new user when I boot the application for the first time I want to see a setup wizard.
The wizard screen is divided into two screens. On the left-side will be a information panel describing what we are doing during this step and on the right-side will be room for interacting with the wizard in various ways.
The first dialog is a general introduction to electrum and it's features and an introductory text about bitcoin wallets and what they are used for.
The next dialog would explain why we need to encrypt the generated wallet with the password input on the right side.
The third dialog would display the generated seed and 12 words on the right hand side and on the left hand side could be a little story about what those words represent tying into the previous stories about wallets.
This is the error I get:
ffunenga@asus:~/documents/others/electrum$ electrum
Install zbar package to enable QR scans
Connected to electrum.novit.ro:50001
Traceback (most recent call last):
File "/usr/local/bin/electrum", line 191, in
found = gui.restore_or_create()
File "/usr/local/lib/python2.7/dist-packages/electrum/gui_lite.py", line 105, in restore_or_create
return qt_gui_object.restore_or_create()
File "/usr/local/lib/python2.7/dist-packages/electrum/gui_qt.py", line 1513, in restore_or_create
if not ElectrumWindow.network_dialog( wallet, parent=None ): return False
File "/usr/local/lib/python2.7/dist-packages/electrum/gui_qt.py", line 1406, in network_dialog
proxy_mode.setCurrentIndex(proxy_mode.findText(str(interface.proxy["mode"]).upper()))
TypeError: 'NoneType' object has no attribute 'getitem'
I've got ubuntu 12.04 in a 64bits machine. I can send more info if needed
uname -a:
Linux asus 3.2.0-31-generic #50-Ubuntu SMP Fri Sep 7 16:16:45 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
Filipe Funenga
Lisbon PT
save it in a config file and put a button in pro mode to go back to lite mode.
I had no idea what import aes referred to, and looking online didn't help. It was only after commenting out 'import aes' and running electrum that I saw an error message that was useful 'sys.exit("Error: AES does not seem to be installed. Try 'sudo pip install slowaes'")'.
Please consider moving this line to the earlier in the build script, before the setup crashes from not having slowaes. Unless I'm being an idiot, which is very likely.
Edit: And I am now aware that it is listed as a dependency in http://electrum-desktop.com/download.html
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.