Comments (16)
Patches welcome!
from backy2.
We have a pretty stable .deb now. Might alien be able to convert this? I have no redhat, so if anyone wants to test, i'll happily put the alien call into the makefile and make the rpm available in https://github.com/wamdam/backy2/releases
from backy2.
If there's an RPM provided I can definitely test it
from backy2.
A pypi package would also be cool, if made available, btw
from backy2.
I've uploaded it to pypi.
https://pypi.org/project/backy2/
You might test checking out the code and trying to do a
python3 setup.py bdist_rpm
and look into you dist folder. Tell me if it works. I'm lacking the rpm tool hereβ¦
from backy2.
Just verified. On a fresh ubuntu 16.04 this works:
apt-get install python3-pip
pip3 install backy2
backy2 initdb
;)
from backy2.
That fails on a CentOS7.4 host:
# python3.6 setup.py bdist_rpm
running bdist_rpm
running egg_info
writing src/backy2.egg-info/PKG-INFO
writing dependency_links to src/backy2.egg-info/dependency_links.txt
writing entry points to src/backy2.egg-info/entry_points.txt
writing requirements to src/backy2.egg-info/requires.txt
writing top-level names to src/backy2.egg-info/top_level.txt
reading manifest file 'src/backy2.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'src/backy2.egg-info/SOURCES.txt'
creating build/bdist.linux-x86_64/rpm
creating build/bdist.linux-x86_64/rpm/SOURCES
creating build/bdist.linux-x86_64/rpm/SPECS
creating build/bdist.linux-x86_64/rpm/BUILD
creating build/bdist.linux-x86_64/rpm/RPMS
creating build/bdist.linux-x86_64/rpm/SRPMS
writing 'build/bdist.linux-x86_64/rpm/SPECS/backy2.spec'
running sdist
running check
creating backy2-2.9.14
creating backy2-2.9.14/src
creating backy2-2.9.14/src/backy2
creating backy2-2.9.14/src/backy2.egg-info
creating backy2-2.9.14/src/backy2/data_backends
creating backy2-2.9.14/src/backy2/enterprise
creating backy2-2.9.14/src/backy2/io
creating backy2-2.9.14/src/backy2/io/lib
creating backy2-2.9.14/src/backy2/meta_backends
creating backy2-2.9.14/src/backy2/meta_backends/sql_migrations
creating backy2-2.9.14/src/backy2/meta_backends/sql_migrations/alembic
creating backy2-2.9.14/src/backy2/meta_backends/sql_migrations/alembic/versions
creating backy2-2.9.14/src/backy2/scripts
creating backy2-2.9.14/src/backy2/tests
copying files to backy2-2.9.14...
copying MANIFEST.in -> backy2-2.9.14
copying README.rst -> backy2-2.9.14
copying setup.cfg -> backy2-2.9.14
copying setup.py -> backy2-2.9.14
copying src/backy2/__init__.py -> backy2-2.9.14/src/backy2
copying src/backy2/backy.py -> backy2-2.9.14/src/backy2
copying src/backy2/config.py -> backy2-2.9.14/src/backy2
copying src/backy2/locking.py -> backy2-2.9.14/src/backy2
copying src/backy2/logging.py -> backy2-2.9.14/src/backy2
copying src/backy2/utils.py -> backy2-2.9.14/src/backy2
copying src/backy2.egg-info/PKG-INFO -> backy2-2.9.14/src/backy2.egg-info
copying src/backy2.egg-info/SOURCES.txt -> backy2-2.9.14/src/backy2.egg-info
copying src/backy2.egg-info/dependency_links.txt -> backy2-2.9.14/src/backy2.egg-info
copying src/backy2.egg-info/entry_points.txt -> backy2-2.9.14/src/backy2.egg-info
copying src/backy2.egg-info/not-zip-safe -> backy2-2.9.14/src/backy2.egg-info
copying src/backy2.egg-info/requires.txt -> backy2-2.9.14/src/backy2.egg-info
copying src/backy2.egg-info/top_level.txt -> backy2-2.9.14/src/backy2.egg-info
copying src/backy2/data_backends/__init__.py -> backy2-2.9.14/src/backy2/data_backends
copying src/backy2/data_backends/file.py -> backy2-2.9.14/src/backy2/data_backends
copying src/backy2/data_backends/s3.py -> backy2-2.9.14/src/backy2/data_backends
copying src/backy2/enterprise/__init__.py -> backy2-2.9.14/src/backy2/enterprise
copying src/backy2/enterprise/nbd.py -> backy2-2.9.14/src/backy2/enterprise
copying src/backy2/enterprise/nbdserver.py -> backy2-2.9.14/src/backy2/enterprise
copying src/backy2/io/__init__.py -> backy2-2.9.14/src/backy2/io
copying src/backy2/io/file.py -> backy2-2.9.14/src/backy2/io
copying src/backy2/io/rbd.py -> backy2-2.9.14/src/backy2/io
copying src/backy2/io/lib/__init__.py -> backy2-2.9.14/src/backy2/io/lib
copying src/backy2/io/lib/rados.py -> backy2-2.9.14/src/backy2/io/lib
copying src/backy2/io/lib/rbd.py -> backy2-2.9.14/src/backy2/io/lib
copying src/backy2/meta_backends/__init__.py -> backy2-2.9.14/src/backy2/meta_backends
copying src/backy2/meta_backends/sql.py -> backy2-2.9.14/src/backy2/meta_backends
copying src/backy2/meta_backends/sql_migrations/__init__.py -> backy2-2.9.14/src/backy2/meta_backends/sql_migrations
copying src/backy2/meta_backends/sql_migrations/alembic.ini -> backy2-2.9.14/src/backy2/meta_backends/sql_migrations
copying src/backy2/meta_backends/sql_migrations/alembic/README -> backy2-2.9.14/src/backy2/meta_backends/sql_migrations/alembic
copying src/backy2/meta_backends/sql_migrations/alembic/__init__.py -> backy2-2.9.14/src/backy2/meta_backends/sql_migrations/alembic
copying src/backy2/meta_backends/sql_migrations/alembic/env.py -> backy2-2.9.14/src/backy2/meta_backends/sql_migrations/alembic
copying src/backy2/meta_backends/sql_migrations/alembic/versions/29c655b78818_new_table_tags.py -> backy2-2.9.14/src/backy2/meta_backends/sql_migrations/alembic/versions
copying src/backy2/meta_backends/sql_migrations/alembic/versions/__init__.py -> backy2-2.9.14/src/backy2/meta_backends/sql_migrations/alembic/versions
copying src/backy2/meta_backends/sql_migrations/alembic/versions/bbe7904bfc3a_added_snapshot_name_to_versions.py -> backy2-2.9.14/src/backy2/meta_backends/sql_migrations/alembic/versions
copying src/backy2/scripts/__init__.py -> backy2-2.9.14/src/backy2/scripts
copying src/backy2/scripts/backy.py -> backy2-2.9.14/src/backy2/scripts
copying src/backy2/tests/test_main.py -> backy2-2.9.14/src/backy2/tests
Writing backy2-2.9.14/setup.cfg
Creating tar archive
removing 'backy2-2.9.14' (and everything under it)
copying dist/backy2-2.9.14.tar.gz -> build/bdist.linux-x86_64/rpm/SOURCES
building RPMs
rpm: /usr/bin/rpmspec: No such file or directory
error: Failed to execute: "rpm -q --qf '%{name}-%{version}-%{release}.src.rpm %{arch}/%{name}-%{version}-%{release}.%{arch}.rpm\\n' --specfile 'build/bdist.linux-x86_64/rpm/SPECS/backy2.spec'"
from backy2.
Cloned into a new dir instead of pulling into an existing one:
# python3.6 setup.py bdist_rpm
running bdist_rpm
running egg_info
creating src/backy2.egg-info
writing src/backy2.egg-info/PKG-INFO
writing dependency_links to src/backy2.egg-info/dependency_links.txt
writing entry points to src/backy2.egg-info/entry_points.txt
writing requirements to src/backy2.egg-info/requires.txt
writing top-level names to src/backy2.egg-info/top_level.txt
writing manifest file 'src/backy2.egg-info/SOURCES.txt'
reading manifest file 'src/backy2.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'src/backy2.egg-info/SOURCES.txt'
creating build
creating build/bdist.linux-x86_64
creating build/bdist.linux-x86_64/rpm
creating build/bdist.linux-x86_64/rpm/SOURCES
creating build/bdist.linux-x86_64/rpm/SPECS
creating build/bdist.linux-x86_64/rpm/BUILD
creating build/bdist.linux-x86_64/rpm/RPMS
creating build/bdist.linux-x86_64/rpm/SRPMS
writing 'build/bdist.linux-x86_64/rpm/SPECS/backy2.spec'
running sdist
running check
creating backy2-2.9.15
creating backy2-2.9.15/src
creating backy2-2.9.15/src/backy2
creating backy2-2.9.15/src/backy2.egg-info
creating backy2-2.9.15/src/backy2/data_backends
creating backy2-2.9.15/src/backy2/enterprise
creating backy2-2.9.15/src/backy2/io
creating backy2-2.9.15/src/backy2/io/lib
creating backy2-2.9.15/src/backy2/meta_backends
creating backy2-2.9.15/src/backy2/meta_backends/sql_migrations
creating backy2-2.9.15/src/backy2/meta_backends/sql_migrations/alembic
creating backy2-2.9.15/src/backy2/meta_backends/sql_migrations/alembic/versions
creating backy2-2.9.15/src/backy2/scripts
creating backy2-2.9.15/src/backy2/tests
copying files to backy2-2.9.15...
copying MANIFEST.in -> backy2-2.9.15
copying README.rst -> backy2-2.9.15
copying setup.cfg -> backy2-2.9.15
copying setup.py -> backy2-2.9.15
copying src/backy2/__init__.py -> backy2-2.9.15/src/backy2
copying src/backy2/backy.py -> backy2-2.9.15/src/backy2
copying src/backy2/config.py -> backy2-2.9.15/src/backy2
copying src/backy2/locking.py -> backy2-2.9.15/src/backy2
copying src/backy2/logging.py -> backy2-2.9.15/src/backy2
copying src/backy2/utils.py -> backy2-2.9.15/src/backy2
copying src/backy2.egg-info/PKG-INFO -> backy2-2.9.15/src/backy2.egg-info
copying src/backy2.egg-info/SOURCES.txt -> backy2-2.9.15/src/backy2.egg-info
copying src/backy2.egg-info/dependency_links.txt -> backy2-2.9.15/src/backy2.egg-info
copying src/backy2.egg-info/entry_points.txt -> backy2-2.9.15/src/backy2.egg-info
copying src/backy2.egg-info/not-zip-safe -> backy2-2.9.15/src/backy2.egg-info
copying src/backy2.egg-info/requires.txt -> backy2-2.9.15/src/backy2.egg-info
copying src/backy2.egg-info/top_level.txt -> backy2-2.9.15/src/backy2.egg-info
copying src/backy2/data_backends/__init__.py -> backy2-2.9.15/src/backy2/data_backends
copying src/backy2/data_backends/file.py -> backy2-2.9.15/src/backy2/data_backends
copying src/backy2/data_backends/s3.py -> backy2-2.9.15/src/backy2/data_backends
copying src/backy2/enterprise/__init__.py -> backy2-2.9.15/src/backy2/enterprise
copying src/backy2/enterprise/nbd.py -> backy2-2.9.15/src/backy2/enterprise
copying src/backy2/enterprise/nbdserver.py -> backy2-2.9.15/src/backy2/enterprise
copying src/backy2/io/__init__.py -> backy2-2.9.15/src/backy2/io
copying src/backy2/io/file.py -> backy2-2.9.15/src/backy2/io
copying src/backy2/io/rbd.py -> backy2-2.9.15/src/backy2/io
copying src/backy2/io/lib/__init__.py -> backy2-2.9.15/src/backy2/io/lib
copying src/backy2/io/lib/rados.py -> backy2-2.9.15/src/backy2/io/lib
copying src/backy2/io/lib/rbd.py -> backy2-2.9.15/src/backy2/io/lib
copying src/backy2/meta_backends/__init__.py -> backy2-2.9.15/src/backy2/meta_backends
copying src/backy2/meta_backends/sql.py -> backy2-2.9.15/src/backy2/meta_backends
copying src/backy2/meta_backends/sql_migrations/__init__.py -> backy2-2.9.15/src/backy2/meta_backends/sql_migrations
copying src/backy2/meta_backends/sql_migrations/alembic.ini -> backy2-2.9.15/src/backy2/meta_backends/sql_migrations
copying src/backy2/meta_backends/sql_migrations/alembic/README -> backy2-2.9.15/src/backy2/meta_backends/sql_migrations/alembic
copying src/backy2/meta_backends/sql_migrations/alembic/__init__.py -> backy2-2.9.15/src/backy2/meta_backends/sql_migrations/alembic
copying src/backy2/meta_backends/sql_migrations/alembic/env.py -> backy2-2.9.15/src/backy2/meta_backends/sql_migrations/alembic
copying src/backy2/meta_backends/sql_migrations/alembic/versions/29c655b78818_new_table_tags.py -> backy2-2.9.15/src/backy2/meta_backends/sql_migrations/alembic/versions
copying src/backy2/meta_backends/sql_migrations/alembic/versions/__init__.py -> backy2-2.9.15/src/backy2/meta_backends/sql_migrations/alembic/versions
copying src/backy2/meta_backends/sql_migrations/alembic/versions/bbe7904bfc3a_added_snapshot_name_to_versions.py -> backy2-2.9.15/src/backy2/meta_backends/sql_migrations/alembic/versions
copying src/backy2/scripts/__init__.py -> backy2-2.9.15/src/backy2/scripts
copying src/backy2/scripts/backy.py -> backy2-2.9.15/src/backy2/scripts
copying src/backy2/tests/test_main.py -> backy2-2.9.15/src/backy2/tests
Writing backy2-2.9.15/setup.cfg
creating dist
Creating tar archive
removing 'backy2-2.9.15' (and everything under it)
copying dist/backy2-2.9.15.tar.gz -> build/bdist.linux-x86_64/rpm/SOURCES
building RPMs
rpm: /usr/bin/rpmspec: No such file or directory
error: Failed to execute: "rpm -q --qf '%{name}-%{version}-%{release}.src.rpm %{arch}/%{name}-%{version}-%{release}.%{arch}.rpm\\n' --specfile 'build/bdist.linux-x86_64/rpm/SPECS/backy2.spec'"
from backy2.
Yeah, obviously rpmspec is missing:
rpm: /usr/bin/rpmspec: No such file or directory
from backy2.
ok, installed rpm-build and fixed another bug (python3 was hardcoded while my system came with python3.6 as executable so had to make a symlink) and now the RPM is built. Will test it tomorrow and report
from backy2.
Installation (had to enable the IUS repo for python3)
[root@hv02 ~]# sudo yum -y install https://centos7.iuscommunity.org/ius-release.rpm
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
ius-release.rpm | 8.1 kB 00:00:00
Examining /var/tmp/yum-root-hp9YCx/ius-release.rpm: ius-release-1.0-15.ius.centos7.noarch
Marking /var/tmp/yum-root-hp9YCx/ius-release.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package ius-release.noarch 0:1.0-15.ius.centos7 will be installed
--> Processing Dependency: epel-release = 7 for package: ius-release-1.0-15.ius.centos7.noarch
--> Running transaction check
---> Package epel-release.noarch 0:7-10 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=============================================================================== Package Arch Version Repository Size
===============================================================================Installing:
ius-release noarch 1.0-15.ius.centos7 /ius-release 8.5 k
Installing for dependencies:
epel-release noarch 7-10 extras 14 k
Transaction Summary
===============================================================================Install 1 Package (+1 Dependent package)
Total size: 23 k
Total download size: 14 k
Installed size: 33 k
Downloading packages:
epel-release-latest-7.noarch.rpm | 14 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : epel-release-7-10.noarch 1/2
Installing : ius-release-1.0-15.ius.centos7.noarch 2/2
rhel-7-fast-datapath-htb-rpms/x86_64/productid | 2.1 kB 00:00:00
rhel-7-fast-datapath-rpms/7Server/x86_64/productid | 2.1 kB 00:00:00
rhel-7-server-optional-rpms/7Server/x86_64/productid | 2.1 kB 00:00:00
rhel-7-server-rhev-mgmt-agent-rpms/7Server/x86_64/productid | 2.1 kB 00:00:00
rhel-7-server-rpms/7Server/x86_64/productid | 2.1 kB 00:00:00
rhel-7-server-supplementary-rpms/7Server/x86_64/productid | 2.1 kB 00:00:00
Verifying : ius-release-1.0-15.ius.centos7.noarch 1/2
Verifying : epel-release-7-10.noarch 2/2
Installed:
ius-release.noarch 0:1.0-15.ius.centos7
Dependency Installed:
epel-release.noarch 0:7-10
Complete!
[root@hv02 ~]# yum localinstall backy2-2.9.17-1.noarch.rpm
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
Marking backy2-2.9.17-1.noarch.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package backy2.noarch 0:2.9.17-1 will be installed
--> Processing Dependency: python(abi) = 3.6 for package: backy2-2.9.17-1.noarch
epel/x86_64/metalink | 20 kB 00:00:00
epel | 4.3 kB 00:00:00
ius | 2.3 kB 00:00:00
(1/4): epel/x86_64/updateinfo | 833 kB 00:00:00
(2/4): epel/x86_64/group_gz | 170 kB 00:00:00
(3/4): ius/x86_64/primary_db | 216 kB 00:00:00
epel/x86_64/primary_db FAILED
(4/4): epel/x86_64/primary_db | 4.8 MB 00:00:01
--> Processing Dependency: /usr/bin/python3 for package: backy2-2.9.17-1.noarch
--> Running transaction check
---> Package python34.x86_64 0:3.4.5-4.el7 will be installed
--> Processing Dependency: python34-libs(x86-64) = 3.4.5-4.el7 for package: python34-3.4.5-4.el7.x86_64
--> Processing Dependency: libpython3.4m.so.1.0()(64bit) for package: python34-3.4.5-4.el7.x86_64
---> Package python36u.x86_64 0:3.6.2-1.ius.centos7 will be installed
--> Processing Dependency: python36u-libs(x86-64) = 3.6.2-1.ius.centos7 for package: python36u-3.6.2-1.ius.centos7.x86_64
--> Processing Dependency: libpython3.6m.so.1.0()(64bit) for package: python36u-3.6.2-1.ius.centos7.x86_64
--> Running transaction check
---> Package python34-libs.x86_64 0:3.4.5-4.el7 will be installed
---> Package python36u-libs.x86_64 0:3.6.2-1.ius.centos7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=============================================================================== Package Arch Version Repository Size
===============================================================================Installing:
backy2 noarch 2.9.17-1 /backy2-2.9.17-1.noarch 715 k
Installing for dependencies:
python34 x86_64 3.4.5-4.el7 epel 50 k
python34-libs x86_64 3.4.5-4.el7 epel 8.2 M
python36u x86_64 3.6.2-1.ius.centos7 ius 55 k
python36u-libs x86_64 3.6.2-1.ius.centos7 ius 9.2 M
Transaction Summary
===============================================================================Install 1 Package (+4 Dependent packages)
Total size: 18 M
Total download size: 18 M
Installed size: 70 M
Is this ok [y/d/N]: y
Downloading packages:
(1/4): python34-3.4.5-4.el7.x86_64.rpm | 50 kB 00:00:00
(2/4): python36u-3.6.2-1.ius.centos7.x86_64.rpm | 55 kB 00:00:00
(3/4): python34-libs-3.4.5-4.el7.x86_64.rpm | 8.2 MB 00:00:01
(4/4): python36u-libs-3.6.2-1.ius.centos7.x86_64.rpm | 9.2 MB 00:00:04
-------------------------------------------------------------------------------------------------------------------------------------------
Total 3.5 MB/s | 18 MB 00:00:05
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : python34-libs-3.4.5-4.el7.x86_64 1/5
Installing : python34-3.4.5-4.el7.x86_64 2/5
Installing : python36u-3.6.2-1.ius.centos7.x86_64 3/5
Installing : python36u-libs-3.6.2-1.ius.centos7.x86_64 4/5
Installing : backy2-2.9.17-1.noarch 5/5
Verifying : python36u-libs-3.6.2-1.ius.centos7.x86_64 1/5
Verifying : python36u-3.6.2-1.ius.centos7.x86_64 2/5
Verifying : python34-3.4.5-4.el7.x86_64 3/5
Verifying : python34-libs-3.4.5-4.el7.x86_64 4/5
Verifying : backy2-2.9.17-1.noarch 5/5
Installed:
backy2.noarch 0:2.9.17-1
Dependency Installed:
python34.x86_64 0:3.4.5-4.el7 python34-libs.x86_64 0:3.4.5-4.el7 python36u.x86_64 0:3.6.2-1.ius.centos7 python36u-libs.x86_64 0:3.6.2-1.ius.centos7
Complete!
from backy2.
Trying to run backy2:
[root@hv02 ~]# backy2
Traceback (most recent call last):
File "/usr/bin/backy2", line 6, in <module>
from pkg_resources import load_entry_point
ImportError: No module named 'pkg_resources'
looks like another dependency is missing, and the RPM doesn't pull it in...
from backy2.
Installed python34-setuptools (this should be added as a dependency so a yum install can install it) and now I'm getting
[root@hv02 ~]# backy2
Traceback (most recent call last):
File "/usr/bin/backy2", line 6, in <module>
from pkg_resources import load_entry_point
File "/usr/lib/python3.4/site-packages/pkg_resources/__init__.py", line 3138, in <module>
@_call_aside
File "/usr/lib/python3.4/site-packages/pkg_resources/__init__.py", line 3124, in _call_aside
f(*args, **kwargs)
File "/usr/lib/python3.4/site-packages/pkg_resources/__init__.py", line 3151, in _initialize_master_working_set
working_set = WorkingSet._build_master()
File "/usr/lib/python3.4/site-packages/pkg_resources/__init__.py", line 661, in _build_master
ws.require(__requires__)
File "/usr/lib/python3.4/site-packages/pkg_resources/__init__.py", line 962, in require
needed = self.resolve(parse_requirements(requirements))
File "/usr/lib/python3.4/site-packages/pkg_resources/__init__.py", line 849, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'backy2==2.9.17' distribution was not found and is required by the application
from backy2.
any ideas what to do about this?
from backy2.
Me? Not at all. Never had a redhat.
from backy2.
Maybe the above mentioned spec file can help
from backy2.
Related Issues (20)
- RBD volume with parent cannot be used after restore HOT 4
- Backy2 2.13.3 broken with s3 HOT 1
- Error in rbd demonstration script
- Documentation is unclear
- Feature request: Debian repository
- python-fuse vs python-fusepy on Debian hosts
- Could not locate column in row for column 'DISTINCT blocks.uid' HOT 1
- Internal Snapshot Feature is it supported? HOT 1
- Ceph Octopus - rbd diff --from-snap lists all allocated space when using 'whole-object' HOT 2
- Incrementals taking a long time, despite completing data HOT 4
- An error is reported when backing up two volumes at the same time HOT 1
- How about to support RBD images within some namespace. HOT 1
- Scrubbing against source gives inntermittent HOT 2
- backy2 Install error, how to fix? HOT 1
- Backup restore failed HOT 2
- sqlalchemy >= 1.4 breaks the cleanup cli HOT 1
- Ubuntu 22.04.1 LTS - .deb SyntaxWarning: "is" with a literal. HOT 1
- Is this project dead? HOT 1
- can't mount fuse : FileNotFoundError
- MINIO PY 7.x fixes HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from backy2.