jide / clamp Goto Github PK
View Code? Open in Web Editor NEWCommand Line Apache MySQL PHP
Home Page: http://jide.github.io/clamp
License: GNU General Public License v2.0
Command Line Apache MySQL PHP
Home Page: http://jide.github.io/clamp
License: GNU General Public License v2.0
Getting this error on OSX Sierra, even on a clean start-up or reboot (no Vagrant or LAMP/LEMP stacks running). When I run clamp apache start
the following is returned in the terminal:
(48)Address already in use: AH00072: make_sock: could not bind to address [::]:80
(48)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs
Any troubleshooting suggestions would be greatly appreciated!
I can't get clamp to work after updating PHP to 7.1. I'm a bit lost here so any help is appreciated.
This is my clamp.json
file:
{
"address": "localhost",
"memory": "256M",
"database": "db",
"apache": {
"commands": {
"httpd": "sudo httpd"
},
"options": {
"<Directory": " '{{$cwd}}'>",
"AllowOverride": "All",
"</Directory>": "",
"servername": "{{$.address}}",
"listen": "80",
"documentroot": "'{{$cwd}}'",
"serverroot": "'{{$cwd}}'",
"pidfile": "'{{$cwd}}/.clamp/tmp/httpd.pid'",
"defaultruntimedir": "'{{$cwd}}/.clamp/tmp",
"loglevel": "info",
"errorlog": "'{{$cwd}}/.clamp/logs/apache.error.log'",
"customlog": "'{{$cwd}}/.clamp/logs/apache.access.log' common",
"addtype": "application/x-httpd-php .php",
"directoryindex": "index.html index.php",
"setenv": "LOCAL_SERVER true",
"user": "`whoami`",
"autoopen": false,
"group": "_www",
"loadmodule": {
"authz_host_module": "$(brew --prefix httpd)/lib/httpd/modules/mod_authz_host.so",
"authz_core_module": "$(brew --prefix httpd)/lib/httpd/modules/mod_authz_core.so",
"dir_module": "$(brew --prefix httpd)/lib/httpd/modules/mod_dir.so",
"env_module": "$(brew --prefix httpd)/lib/httpd/modules/mod_env.so",
"mime_module": "$(brew --prefix httpd)/lib/httpd/modules/mod_mime.so",
"log_config_module": "$(brew --prefix httpd)/lib/httpd/modules/mod_log_config.so",
"rewrite_module": "$(brew --prefix httpd)/lib/httpd/modules/mod_rewrite.so",
"php7_module": "$(brew --prefix php71)/libexec/apache2/libphp7.so",
"unixd_module": "$(brew --prefix httpd)/lib/httpd/modules/mod_unixd.so"
},
"php_admin_value": "{{$.php.options}}"
}
},
"host": {
"options": {
"127.0.0.1": "{{$.address}}"
}
},
"mysql": {
"commands": {
"mysql": "$(brew --prefix mariadb)/bin/mysql",
"mysqld": "$(brew --prefix mariadb)/bin/mysqld",
"mysqladmin": "$(brew --prefix mariadb)/bin/mysqladmin",
"mysqldump": "$(brew --prefix mariadb)/bin/mysqldump",
"mysql_install_db": "$(brew --prefix mariadb)/bin/mysql_install_db"
},
"databases": [
"{{$.database}}"
],
"options": {
"bind-address": "127.0.0.1",
"port": "3306",
"lower_case_table_names": 2,
"basedir": "$(brew --prefix mariadb)",
"datadir": "'{{$cwd}}/.clamp/data'",
"socket": "'{{$cwd}}/.clamp/tmp/mysql.sock'",
"pid-file": "'{{$cwd}}/.clamp/tmp/mysql.pid'",
"log_error": "'{{$cwd}}/.clamp/logs/mysql.error.log'",
"max_binlog_size": "10M",
"max_allowed_packet": "32M"
}
},
"php": {
"options": {
"memory_limit": "{{$.memory}}",
"pdo_mysql.default_socket": "{{$.mysql.options.socket}}",
"mysql.default_socket": "{{$.mysql.options.socket}}",
"mysqli.default_socket": "{{$.mysql.options.socket}}"
}
}
}
Even if I add this line to my clamp.json
file it still complains about an MPM module not being loaded:
"mpm_prefork_module": "$(brew --prefix httpd)/lib/httpd/modules/mod_mpm_prefork.so",
As you can see, I've installed apache with homebrew because I need PHP 7 but I don't want to upgrade my Mac yet.
Hello,
another minor idea: would it be useful to add something like this to the end of the main script?
open http://<adress>
this should / could open the defined url in the preferred browser after starting the server. It could be enabled/disabled via the clamp.json à la "autoopen": true
I'm looking to do some fairly light development work and was wondering if a flag could be added to avoid using MySQL at all just to save resources. Thoughts?
Hi again,
no bug, just a question. Is it possible to distribute CLAMP via homebrew? Since homebrew and mariadb are already required, installation would be even easier than it already is.
Yosemite's default file works fine (at least for me) with El Capitan, but since there's no defaults file for it, it tries to load the one from Mavericks and ends failing to launch. So yeah just adding a copy of clamp.defaults.14.json as clamp.defaults.15.json does the job.
Alternatively making ConfigOptionsParser check for the most recent defaults.xx.json file could be a cleaner solution. I'll send a PR tomorrow/tuesday if you're ok with it.
And going a bit offtopic: Thanks for such a nice tool ;)
Hi,
By reading the source, I saw that the root password was used via $this->getConfig('$.mysql.users.root.password')
so I believe it's possible.
I tried to modify my clamp.json file by adding the users.root.password like this :
"users": {
"root": {
"password": "unbreakable_password"
}
}
Right after "options", in "mysql". But it doesn't seems to work.
Do I have to set it before running MySQL the first time? Or do I have to do the changes manually in MySQL, and this variable is to let Clamp know the root password?
Thanks in advance :)
Warning: Calling Formula.sha1 is deprecated!
Use Formula.sha256 instead.
/usr/local/Library/Taps/jide/homebrew-clamp/clamp.rb:7:in `class:Clamp'
Please report this to the jide/clamp tap!
Warning: Calling SoftwareSpec#sha1 is deprecated!
Use SoftwareSpec#sha256 instead.
/usr/local/Library/Taps/jide/homebrew-clamp/clamp.rb:7:in `class:Clamp'
Please report this to the jide/clamp tap!
Warning: Calling Resource#sha1 is deprecated!
Use Resource#sha256 instead.
/usr/local/Library/Taps/jide/homebrew-clamp/clamp.rb:7:in `class:Clamp'
Please report this to the jide/clamp tap!
I have installed php72 with brew. php --version
gives:
PHP 7.2.0beta3 (cli) (built: Sep 5 2017 17:32:46) ( ZTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.2.0-dev, Copyright (c) 1998-2017 Zend Technologies
The ConfigOptionsParser.php detect the php version with substr(php_uname('r'), 0, 2)
what gives a 15 on the command line. (php -r "echo substr(php_uname('r'), 0, 2);"
)
The basic configuration file 'clamp.defaults.15.json' contains the line
"php5_module": "/usr/libexec/apache2/libphp5.so"
and loads the default php5 module for the apache in front of the module
"php7_module": "/usr/local/opt/php72/libexec/apache2/libphp7.so"
adressed in my local clamp config, what prevents executing php7.
Suggestions:
(Clamp 1.4.1 is used)
what is mysql password and user or how am i set?
Hi,
I just upgrade to macOS 10.13 and a clamp install that was working before no doesn't load.
I checked the logs but nothing gets logged.
I ran 'brewup' a few times, which issues:
brew update; brew upgrade; brew prune; brew cleanup; brew doctor
I reinstalled clamp with brew tap jide/clamp
and brew install clamp
.
I moved away a previously working .clamp directory and re-ran clamp
.
The error I get is:
httpd: Syntax error in -C/-c directive: Cannot load /usr/libexec/apache2/libphp5.so into server: dlopen(/usr/libexec/apache2/libphp5.so, 10): image not found
Happy to try stuff to help track what might be wrong.
Thanks for any pointers, cheers.
Is there any way to manage many php versions ?
hi @jide,
Just wondering if there was any thought on how to leverage MySQL 5.7 and PHP 7?
I thought I would commend you for this, the easiest lamp setup I have ever used!
I'm a newb to non-gui-ness and was wondering how would I go about adding nginx support?
Hi,
I’m trying to use XDebug for debugging my PHP scripts, but apparently this module is not available.
Currently I added a configuration to ‘php’ entry of clamp.json, setting “xdebug.remote_autostart” to 1, but it doesn’t do anything (I think the module is not loaded at all).
How can I enable and use it?
Thanks.
Fresh install of clamp gives this:
AH00526: Syntax error on line 6 of -c/-C directives:
Invalid command 'lockfile', perhaps misspelled or defined by a module not included in the server configuration
I installed this https://php-osx.liip.ch PHP package on macOS Sierra and put the appropriate path into the apache options, also removed php5_module
.
"php7_module": "/usr/local/php5/libphp7.so"
But clamp won't init anything anymore.
Currently defaults to port 80. Clamp is for development and local testing... port 80 isn't the best and it requires sudo on most versions of OS X (<10.14).
Thoughts on what port it should be? 8080? Perhaps too common?
Sorry if opening an Issue
here is an inappropriate way to ask this :/
I lOVED clamp
on OSX, but now use Windows 10.
I've installedWSL and wondered, given WSL is just Linux, if there was a way I can use clamp
on Linux, as opposed to OSX?
It'd be brilliant.
Happy to test, or help if my v.limited knowledge can be of any help.
Cheers, and continued thanks for this superb project.
Per discussions in #33, a small test site would be handy for ad-hoc and automated testing. Ideally would exercise all elements of clamp (php and mysql primarily). Document in readme.
I just made a fresh install of MacOS Catalina. Installed clamp as usual with Homebrew. Then tried to run clamp apache start in the folder I always use. I have to type my password, the I get the following error and it gets stuck: AH00534: httpd: Configuration error: No MPM loaded.
Is there a way to run clamp and skip db installation sometimes I just need a php env and not necessarily a database?
TL;DR
Until this formula gets pubished via homebrew, installing it is easy none the less. To give it a try open Terminal and copy
brew install https://raw.githubusercontent.com/perasmus/clamp_formula/master/clamp.rb
done. clamp is now installed and hooked up.
Long explanation
Hi again,
so I did some tests and tried to come up with the easiest solution possible. Here it is clamp.rb
:
require "formula"
class Clamp < Formula
homepage "http://jide.github.io/clamp"
url "https://github.com/jide/clamp.git"
version "0.1"
depends_on "mariadb"
def install
inreplace "clamp", /\/usr\/local\/clamp/, prefix
prefix.install Dir["*"]
bin.install_symlink '../clamp'
end
test do
system bin/"clamp", "help"
end
end
This formula ist working with jide's current repository. So how does it work?
/usr/local/clamp
in the clamp
file with whatever homebrew wants to use. this path luckily is saved in the prefix
variable.bin
folder to our clamp
file. homebrew will then again symlink this bin
file to its bin collection, so that it is globally accessible.You can give it a try by putting this clamp.rb
file into $(brew --prefix)/Library/Formula/
.
this formula passes brew audit clamp
, brew test clamp
and brew install clamp
. It doesn't require any changes to the current repo. Thus it remains »backwards compatibility«.
We have a travis config file, but Travis isn't looking at the code yet because we haven't set up the integration.
I think all that is required is for someone with commit access to this repo to visit https://travis-ci.org/jide/clamp and configure the integration (it was easy when I did it for my fork).
https://github.com/FlowCommunications/JSONPath is based on the implementation we use (https://code.google.com/archive/p/jsonpath/) and is actively maintained.
Does anyone have an idea of how to set up the config file to be able to use virtual hosts in clamp?
I.e.:
mysite.local = the regular frontend... and
backend.mysite.local = the backend/cms on same server, just based in a different folder.
The Live server that I have copied the site from uses the alias module in Apache to make two different aliases: One for the frontend and one for the backend.
Thought it might work if I do something like:
"host": {
"options": {
"127.0.0.1": "{{$.address}}", // address is "mysite.local" in this example
"127.0.0.1/backend": "backend.mysite.local"
}
},
But obviously that is foolhardy. How might I go about this?
Thanks!
Seems as if Mac OS 10.10 Yosemite's apache 2.4 breaks clamp.
I had the same problem as in #18 which I fixed with the "dirty" fix. And now whenever I load the localhost content.
In the apache.error.log I get the following:
[Fri Oct 21 16:41:12.682200 2016] [core:notice] [pid 2439] AH00094: Command line: 'httpd -f /dev/null -c servername localhost -c listen 80 -c documentroot '/Users/andre/Dropbox/development/html-viewer/public_html' -c serverroot '/Users/andre/Dropbox/development/html-viewer/public_html' -c pidfile '/Users/andre/Dropbox/development/html-viewer/public_html/.clamp/tmp/httpd.pid' -c loglevel info -c errorlog '/Users/andre/Dropbox/development/html-viewer/public_html/.clamp/logs/apache.error.log' -c customlog '/Users/andre/Dropbox/development/html-viewer/public_html/.clamp/logs/apache.access.log' common -c addtype application/x-httpd-php .php -c directoryindex index.html index.php -c setenv LOCAL_SERVER true -c user andre -c group _www -c loadmodule authz_host_module /usr/libexec/apache2/mod_authz_host.so -c loadmodule dir_module /usr/libexec/apache2/mod_dir.so -c loadmodule env_module /usr/libexec/apache2/mod_env.so -c loadmodule mime_module /usr/libexec/apache2/mod_mime.so -c loadmodule log_config_module /usr/libexec/apache2/mod_log_config.so -c loadmodule rewrite_module /usr/libexec/apache2/mod_rewrite.so -c loadmodule php5_module /usr/libexec/apache2/libphp5.so -c loadmodule unixd_module /usr/libexec/apache2/mod_unixd.so -c php_admin_value memory_limit 256M -c php_admin_value pdo_mysql.default_socket '/Users/andre/Dropbox/development/html-viewer/public_html/.clamp/tmp/mysql.sock' -c php_admin_value mysql.default_socket '/Users/andre/Dropbox/development/html-viewer/public_html/.clamp/tmp/mysql.sock' -c php_admin_value mysqli.default_socket '/Users/andre/Dropbox/development/html-viewer/public_html/.clamp/tmp/mysql.sock'' [Fri Oct 21 16:41:23.764204 2016] [core:crit] [pid 2440] [client ::1:50275] AH00025: configuration error: couldn't check user: /index.html
and in clamp.json I have put my username in here:
"apache": {
"commands": {
"httpd": "sudo httpd"
},
"options": {
...
"user": "andre",
...
Said "whois
" before and gave the same error.
What to do?
By the way. This is by far the best Apache client I have used!
Since homebew updated yesterday, I am now getting an auth error when creating a new clamp install
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
I believe mariadb now prevents running as root. Not sure if anyone else is getting this issue.
Any help would be greatly appreciated
$ brew -v
Homebrew 1.1.0
Homebrew/homebrew-core (git revision 375a8; last commit 2016-11-07)
$ brew config
HOMEBREW_VERSION: 1.1.0
ORIGIN: https://github.com/Homebrew/brew.git
HEAD: b7abd33475b98598b414f9c4ee2e20249855437b
Last commit: 6 hours ago
Core tap ORIGIN: https://github.com/Homebrew/homebrew-core
Core tap HEAD: 375a83c1af8c25290e5d41001e93e335c540e857
Core tap last commit: 5 hours ago
HOMEBREW_PREFIX: /usr/local
HOMEBREW_REPOSITORY: /usr/local/Homebrew
HOMEBREW_CELLAR: /usr/local/Cellar
HOMEBREW_BOTTLE_DOMAIN: https://homebrew.bintray.com
CPU: dual-core 64-bit penryn
Homebrew Ruby: 2.0.0-p648
Clang: 7.3 build 703
Git: 2.7.4 => /Library/Developer/CommandLineTools/usr/bin/git
Perl: /usr/bin/perl
Python: /usr/bin/python
Ruby: /usr/bin/ruby => /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
Java: 1.6.0_65-b14-468
macOS: 10.11.6-x86_64
Xcode: N/A
CLT: 7.3.1.0.1.1461711523
X11: 2.7.9 => /opt/X11
$ brew upgrade
Updating Homebrew...
Error: Calling Formula.sha1 is disabled!
Use Formula.sha256 instead.
/usr/local/Homebrew/Library/Taps/jide/homebrew-clamp/clamp.rb:7:in `<class:Clamp>'
Please report this to the jide/clamp tap!
Please report this bug:
https://git.io/brew-troubleshooting
/usr/local/Homebrew/Library/Homebrew/utils.rb:86:in `odeprecated'
/usr/local/Homebrew/Library/Homebrew/utils.rb:94:in `odisabled'
/usr/local/Homebrew/Library/Homebrew/compat/sha1.rb:3:in `sha1'
/usr/local/Homebrew/Library/Taps/jide/homebrew-clamp/clamp.rb:7:in `<class:Clamp>'
/usr/local/Homebrew/Library/Taps/jide/homebrew-clamp/clamp.rb:3:in `load_formula'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:25:in `module_eval'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:25:in `load_formula'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:42:in `load_formula_from_path'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:97:in `load_file'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:88:in `klass'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:84:in `get_formula'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:200:in `get_formula'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:240:in `factory'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:271:in `from_keg'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:254:in `from_rack'
/usr/local/Homebrew/Library/Homebrew/formula.rb:1357:in `block in installed'
/usr/local/Homebrew/Library/Homebrew/formula.rb:1355:in `map'
/usr/local/Homebrew/Library/Homebrew/formula.rb:1355:in `installed'
/usr/local/Homebrew/Library/Homebrew/cmd/upgrade.rb:37:in `upgrade'
/usr/local/Homebrew/Library/Homebrew/brew.rb:94:in `<main>'
$ brew doctor
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry and just ignore them. Thanks!
Warning: "config" scripts exist outside your system or Homebrew directories.
`./configure` scripts often look for *-config scripts to determine if
software packages are installed, and what additional flags to use when
compiling and linking.
Having additional scripts in your path can confuse software installed via
Homebrew if the config script overrides a system or Homebrew provided
script of the same name. We found the following "config" scripts:
/Library/Frameworks/Python.framework/Versions/3.4/bin/python3-config
/Library/Frameworks/Python.framework/Versions/3.4/bin/python3.4-config
/Library/Frameworks/Python.framework/Versions/3.4/bin/python3.4m-config
Warning: Python is installed at /Library/Frameworks/Python.framework
Homebrew only supports building against the System-provided Python or a
brewed Python. In particular, Pythons installed to /Library can interfere
with other software installs.
Warning: You have unlinked kegs in your Cellar
Leaving kegs unlinked can lead to build-trouble and cause brews that depend on
those kegs to fail to run properly once built. Run `brew link` on these:
python
unrar
Error: Calling Formula.sha1 is disabled!
Use Formula.sha256 instead.
/usr/local/Homebrew/Library/Taps/jide/homebrew-clamp/clamp.rb:7:in `<class:Clamp>'
Please report this to the jide/clamp tap!
Please report this bug:
https://git.io/brew-troubleshooting
/usr/local/Homebrew/Library/Homebrew/utils.rb:86:in `odeprecated'
/usr/local/Homebrew/Library/Homebrew/utils.rb:94:in `odisabled'
/usr/local/Homebrew/Library/Homebrew/compat/sha1.rb:3:in `sha1'
/usr/local/Homebrew/Library/Taps/jide/homebrew-clamp/clamp.rb:7:in `<class:Clamp>'
/usr/local/Homebrew/Library/Taps/jide/homebrew-clamp/clamp.rb:3:in `load_formula'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:25:in `module_eval'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:25:in `load_formula'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:42:in `load_formula_from_path'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:97:in `load_file'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:88:in `klass'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:84:in `get_formula'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:200:in `get_formula'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:240:in `factory'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:271:in `from_keg'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:254:in `from_rack'
/usr/local/Homebrew/Library/Homebrew/formula.rb:1357:in `block in installed'
/usr/local/Homebrew/Library/Homebrew/formula.rb:1355:in `map'
/usr/local/Homebrew/Library/Homebrew/formula.rb:1355:in `installed'
/usr/local/Homebrew/Library/Homebrew/diagnostic.rb:869:in `check_missing_deps'
/usr/local/Homebrew/Library/Homebrew/cmd/doctor.rb:43:in `block in doctor'
/usr/local/Homebrew/Library/Homebrew/cmd/doctor.rb:35:in `each'
/usr/local/Homebrew/Library/Homebrew/cmd/doctor.rb:35:in `doctor'
/usr/local/Homebrew/Library/Homebrew/brew.rb:94:in `<main>'
while launching curl http://jide.github.io/clamp/install.sh | sh
sudo is not "forwarded" to underlying commandes
$ ▶curl http://jide.github.io/clamp/install.sh | sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1331 100 1331 0 0 2237 0 --:--:-- --:--:-- --:--:-- 2240
Installing MariaDB
Error: Permission denied - /Library/Caches/Homebrew/Formula/mariadb.brewing
Fetching https://github.com/jide/clamp/tarball/master
^C
$ ▶sudo curl http://jide.github.io/clamp/install.sh | sh
Password:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1331 100 1331 0 0 18950 0 --:--:-- --:--:-- --:--:-- 19014
Installing MariaDB
Error: Permission denied - /Library/Caches/Homebrew/Formula/mariadb.brewing
Fetching https://github.com/jide/clamp/tarball/master
mv: rename /var/folders/n2/31w34qld7gs4dc1m2f_hkyzw0000gn/T//clamp.51495/clamp to /usr/local/clamp: Permission denied
Hi,
I have clamp
working AOK but I am seeing in apache.error.log
:
[Sun Jun 18 18:45:20.997647 2017] [core:alert] [pid 51008] [client ::1:57746] /Users/me/example.com/.htaccess: Invalid command 'RedirectMatch', perhaps misspelled or defined by a module not included in the server configuration, referer: http://localhost/
if my `.htaccess' file includes:
RedirectMatch 301 ^/info/$ http://example/
This happens even if I simply try to access http://localhost (not /info).
If I comment out the RedirectMatch
line (and all following Redirect 301 ...
lines) then the site renders AOK.
I have the good .htaccess
setting:
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order allow,deny
</IfModule>
as suggested at https://jide.github.io/clamp/
.
Is this a known issue, or can I provide more info to perhaps help solve this.
clamp
is brilliant ^_^
How would one accomplish this? I would love to not have my .htaccess contain these.
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.