pgyer / fastlane-plugin-pgyer Goto Github PK
View Code? Open in Web Editor NEWDistribute app to pgyer beta testing service with fastlane!
Home Page: http://www.pgyer.com
License: MIT License
Distribute app to pgyer beta testing service with fastlane!
Home Page: http://www.pgyer.com
License: MIT License
!上传 WX20230413-下午[email protected]...
[15:59:59]: Make sure to commit your Gemfile, Gemfile.lock and Pluginfile to version control
Installing plugin dependencies...
在gitaction构建完成,回传到蒲公英的还是一直卡在上传那一步,会导致整个build process hang。
我在使用pgyer插件,打包没有问题, 可上传过程中出错了。具体代码如下。 目前看来从pgyer_action.rb:70: `run'方法开始有问题。 Any suggestions will be appreciated!
The pgyer plugin is working.
build_file: /Users/username//archive.ipa
Start upload /Users/username//archive.ipa to pgyer...
undefined method `[]' for nil:NilClass
fastlane finished with errors
bundler: failed to load command: fastlane (/usr/local/bin/fastlane)
**NoMethodError: [!] undefined method []' for nil:NilClass** /usr/local/lib/ruby/gems/2.3.0/gems/fastlane-plugin-pgyer-0.2.1/lib/fastlane/plugin/pgyer/actions/pgyer_action.rb:70:in
run'
/usr/local/lib/ruby/gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/runner.rb:253:in block (2 levels) in execute_action' /usr/local/lib/ruby/gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/actions/actions_helper.rb:50:in
execute_action'
/usr/local/lib/ruby/gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/runner.rb:231:in block in execute_action' /usr/local/lib/ruby/gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/runner.rb:227:in
chdir'
/usr/local/lib/ruby/gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/runner.rb:227:in execute_action' /usr/local/lib/ruby/gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/runner.rb:148:in
trigger_action_by_name'
/usr/local/lib/ruby/gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/fast_file.rb:148:in method_missing' Fastfile:24:in
block (2 levels) in parsing_binding'
/usr/local/lib/ruby/gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/lane.rb:33:in call' /usr/local/lib/ruby/gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/runner.rb:49:in
block in execute'
/usr/local/lib/ruby/gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/runner.rb:45:in chdir' /usr/local/lib/ruby/gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/runner.rb:45:in
execute'
/usr/local/lib/ruby/gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/lane_manager.rb:56:in cruise_lane' /usr/local/lib/ruby/gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/command_line_handler.rb:36:in
handle'
/usr/local/lib/ruby/gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/commands_generator.rb:108:in block (2 levels) in run' /usr/local/lib/ruby/gems/2.3.0/gems/commander-fastlane-4.4.5/lib/commander/command.rb:178:in
call'
/usr/local/lib/ruby/gems/2.3.0/gems/commander-fastlane-4.4.5/lib/commander/command.rb:153:in run' /usr/local/lib/ruby/gems/2.3.0/gems/commander-fastlane-4.4.5/lib/commander/runner.rb:476:in
run_active_command'
/usr/local/lib/ruby/gems/2.3.0/gems/fastlane-2.80.0/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:75:in run!' /usr/local/lib/ruby/gems/2.3.0/gems/commander-fastlane-4.4.5/lib/commander/delegates.rb:15:in
run!'
/usr/local/lib/ruby/gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/commands_generator.rb:337:in run' /usr/local/lib/ruby/gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/commands_generator.rb:42:in
start'
/usr/local/lib/ruby/gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/cli_tools_distributor.rb:98:in take_off' /usr/local/lib/ruby/gems/2.3.0/gems/fastlane-2.80.0/bin/fastlane:20:in
<top (required)>'
/usr/local/bin/fastlane:22:in load' /usr/local/bin/fastlane:22:in
<top (required)>
Could not find action, lane or variable 'pgyer'. Check out the documentation for more details: https://docs.fastlane.tools/actions
由于 0.2.2
及更老的版本依赖 pgyer API v1
接口, API v1
接口即将停止服务, 请尽快升级至0.2.3
版本
There is the Broken pipe Error when I use the payer plugin
macOS High Sierra:10.13.3
ruby: 2.3.3p222
gem: 2.5.2
fastlane: 2.80.0
fastlane-plugin-pgyer (0.2.1)
🔗 You can ⌘ + double-click on links to open them directly in your browser.
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/net/http/generic_request.rb:206:in write': [!] Broken pipe (Faraday::ConnectionFailed) from /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/net/http/generic_request.rb:206:in
copy_stream'
from /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/net/http/generic_request.rb:206:in send_request_with_body_stream' from /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/net/http/generic_request.rb:123:in
exec'
from /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/net/http.rb:1435:in block in transport_request' from /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/net/http.rb:1434:in
catch'
from /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/net/http.rb:1434:in transport_request' from /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/net/http.rb:1407:in
request'
from /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/net/http.rb:1400:in block in request' from /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/net/http.rb:853:in
start'
from /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/net/http.rb:1398:in request' from /Library/Ruby/Gems/2.3.0/gems/faraday-0.14.0/lib/faraday/adapter/net_http.rb:80:in
perform_request'
from /Library/Ruby/Gems/2.3.0/gems/faraday-0.14.0/lib/faraday/adapter/net_http.rb:38:in block in call' from /Library/Ruby/Gems/2.3.0/gems/faraday-0.14.0/lib/faraday/adapter/net_http.rb:85:in
with_net_http_connection'
from /Library/Ruby/Gems/2.3.0/gems/faraday-0.14.0/lib/faraday/adapter/net_http.rb:33:in call' from /Library/Ruby/Gems/2.3.0/gems/faraday_middleware-0.12.2/lib/faraday_middleware/response_middleware.rb:31:in
call'
from /Library/Ruby/Gems/2.3.0/gems/faraday-0.14.0/lib/faraday/request/url_encoded.rb:15:in call' from /Library/Ruby/Gems/2.3.0/gems/faraday-0.14.0/lib/faraday/request/multipart.rb:15:in
call'
from /Library/Ruby/Gems/2.3.0/gems/faraday-0.14.0/lib/faraday/rack_builder.rb:143:in build_response' from /Library/Ruby/Gems/2.3.0/gems/faraday-0.14.0/lib/faraday/connection.rb:387:in
run_request'
from /Library/Ruby/Gems/2.3.0/gems/faraday-0.14.0/lib/faraday/connection.rb:175:in post' from /Library/Ruby/Gems/2.3.0/gems/fastlane-plugin-pgyer-0.2.1/lib/fastlane/plugin/pgyer/actions/pgyer_action.rb:67:in
run'
from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/runner.rb:253:in block (2 levels) in execute_action' from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/actions/actions_helper.rb:50:in
execute_action'
from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/runner.rb:231:in block in execute_action' from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/runner.rb:227:in
chdir'
from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/runner.rb:227:in execute_action' from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/runner.rb:148:in
trigger_action_by_name'
from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/fast_file.rb:148:in method_missing' from Fastfile:96:in
block (2 levels) in parsing_binding'
from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/lane.rb:33:in call' from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/runner.rb:49:in
block in execute'
from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/runner.rb:45:in chdir' from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/runner.rb:45:in
execute'
from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/lane_manager.rb:56:in cruise_lane' from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/command_line_handler.rb:36:in
handle'
from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/commands_generator.rb:108:in block (2 levels) in run' from /Library/Ruby/Gems/2.3.0/gems/commander-fastlane-4.4.5/lib/commander/command.rb:178:in
call'
from /Library/Ruby/Gems/2.3.0/gems/commander-fastlane-4.4.5/lib/commander/command.rb:153:in run' from /Library/Ruby/Gems/2.3.0/gems/commander-fastlane-4.4.5/lib/commander/runner.rb:476:in
run_active_command'
from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.80.0/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:75:in run!' from /Library/Ruby/Gems/2.3.0/gems/commander-fastlane-4.4.5/lib/commander/delegates.rb:15:in
run!'
from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/commands_generator.rb:337:in run' from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/commands_generator.rb:42:in
start'
from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.80.0/fastlane/lib/fastlane/cli_tools_distributor.rb:98:in take_off' from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.80.0/bin/fastlane:20:in
<top (required)>'
from /usr/local/bin/fastlane:22:in load' from /usr/local/bin/fastlane:22:in
我的 fastlane 配置如下:
#
lane :debug do
desc "Build and upload iOS Debug to pgyer"
gym(
workspace: "Runner.xcworkspace",
scheme: "Runner",
configuration: "Debug",
export_method: "ad-hoc",
clean: true,
include_symbols: true,
)
notification(app_icon: './fastlane/icon.png', title: 'manager', subtitle: '打包成功,已导出安装包', message: '准备上传至蒲公英……')
pgyer_upload
end
#
lane :pgyer do
pgyer_upload
end
private_lane :pgyer_upload do
pgyer(api_key: "c7de8a678df33616f401ec287c132a76", update_description: "update by fastlane")
end
fastlane 报错打印如下:
[14:37:54]: fastlane finished with errors
/opt/homebrew/Cellar/fastlane/2.214.0/libexec/gems/colored2-3.1.2/lib/colored2/codes.rb:59:in `value': stack level too deep (SystemStackError)
from /opt/homebrew/Cellar/fastlane/2.214.0/libexec/gems/colored2-3.1.2/lib/colored2/codes.rb:41:in `to_s'
from /opt/homebrew/Cellar/fastlane/2.214.0/libexec/gems/colored2-3.1.2/lib/colored2/ascii_decorator.rb:64:in `join'
from /opt/homebrew/Cellar/fastlane/2.214.0/libexec/gems/colored2-3.1.2/lib/colored2/ascii_decorator.rb:64:in `decorate'
from /opt/homebrew/Cellar/fastlane/2.214.0/libexec/gems/colored2-3.1.2/lib/colored2.rb:26:in `surround_with_color'
from /opt/homebrew/Cellar/fastlane/2.214.0/libexec/gems/colored2-3.1.2/lib/colored2.rb:51:in `block (3 levels) in included'
from /opt/homebrew/Cellar/fastlane/2.214.0/libexec/gems/fastlane-2.214.0/fastlane_core/lib/fastlane_core/ui/implementations/shell.rb:56:in `success'
from /opt/homebrew/Cellar/fastlane/2.214.0/libexec/gems/fastlane-2.214.0/fastlane_core/lib/fastlane_core/ui/implementations/shell.rb:97:in `header'
from /opt/homebrew/Cellar/fastlane/2.214.0/libexec/gems/fastlane-2.214.0/fastlane_core/lib/fastlane_core/ui/ui.rb:17:in `method_missing'
... 8609 levels...
from /opt/homebrew/Cellar/fastlane/2.214.0/libexec/gems/fastlane-2.214.0/fastlane/lib/fastlane/cli_tools_distributor.rb:123:in `take_off'
from /opt/homebrew/Cellar/fastlane/2.214.0/libexec/gems/fastlane-2.214.0/bin/fastlane:23:in `<top (required)>'
from /opt/homebrew/Cellar/fastlane/2.214.0/libexec/bin/fastlane:25:in `load'
from /opt/homebrew/Cellar/fastlane/2.214.0/libexec/bin/fastlane:25:in `<main>'
If you do not set the installation type and installation password, you will get an error.
Please your Fastfile, add install_type: "2",password:"1234" parameters.
上传完毕后如何配置后,不需要再到app版本管理页面设置为当前最新版本呢;是否有具体设置
desc "test builder dev"
lane :dev do
gym(scheme: "****",
workspace: "****",
output_name: "****")
pgyer(api_key: "****",
user_key: "****")
upload_app_to_bugly(file_path: IPA_OUTPUT_PATH,
app_key:"****",
app_id:"****",
title:"****")
end
This's script of Fastfile,but still failure:
[13:42:35]: Do not let descriptions end with a '.', since it's used for user inputs as well
+------+-------------------------------------+-------------+
| fastlane summary |
+------+-------------------------------------+-------------+
| Step | Action | Time (in s) |
+------+-------------------------------------+-------------+
| 1 | Verifying required fastlane version | 0 |
| 2 | default_platform | 0 |
| 3 | cocoapods | 2 |
| 4 | gym | 43 |
| 💥 | pgyer | 0 |
+------+-------------------------------------+-------------+
[13:42:35]: fastlane finished with errors
[!] Do not let descriptions end with a '.', since it's used for user inputs as well
sorry,I got confused, spent lot of time for that, hope~
服务器挂了吗?前两天还可以。。
报错信息:
Traceback (most recent call last):
44: from /usr/local/bin/fastlane:23:in <main>' 43: from /usr/local/bin/fastlane:23:in
load'
42: from /usr/local/lib/ruby/gems/2.5.0/gems/fastlane-2.149.1/bin/fastlane:23:in <top (required)>' 41: from /usr/local/lib/ruby/gems/2.5.0/gems/fastlane-2.149.1/fastlane/lib/fastlane/cli_tools_distributor.rb:119:in
take_off'
40: from /usr/local/lib/ruby/gems/2.5.0/gems/fastlane-2.149.1/fastlane/lib/fastlane/commands_generator.rb:41:in start' 39: from /usr/local/lib/ruby/gems/2.5.0/gems/fastlane-2.149.1/fastlane/lib/fastlane/commands_generator.rb:352:in
run'
38: from /usr/local/lib/ruby/gems/2.5.0/gems/commander-fastlane-4.4.6/lib/commander/delegates.rb:15:in run!' 37: from /usr/local/lib/ruby/gems/2.5.0/gems/fastlane-2.149.1/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:76:in
run!'
36: from /usr/local/lib/ruby/gems/2.5.0/gems/commander-fastlane-4.4.6/lib/commander/runner.rb:476:in run_active_command' 35: from /usr/local/lib/ruby/gems/2.5.0/gems/commander-fastlane-4.4.6/lib/commander/command.rb:153:in
run'
34: from /usr/local/lib/ruby/gems/2.5.0/gems/commander-fastlane-4.4.6/lib/commander/command.rb:178:in call' 33: from /usr/local/lib/ruby/gems/2.5.0/gems/fastlane-2.149.1/fastlane/lib/fastlane/commands_generator.rb:108:in
block (2 levels) in run'
32: from /usr/local/lib/ruby/gems/2.5.0/gems/fastlane-2.149.1/fastlane/lib/fastlane/command_line_handler.rb:36:in handle' 31: from /usr/local/lib/ruby/gems/2.5.0/gems/fastlane-2.149.1/fastlane/lib/fastlane/lane_manager.rb:47:in
cruise_lane'
30: from /usr/local/lib/ruby/gems/2.5.0/gems/fastlane-2.149.1/fastlane/lib/fastlane/runner.rb:45:in execute' 29: from /usr/local/lib/ruby/gems/2.5.0/gems/fastlane-2.149.1/fastlane/lib/fastlane/runner.rb:45:in
chdir'
28: from /usr/local/lib/ruby/gems/2.5.0/gems/fastlane-2.149.1/fastlane/lib/fastlane/runner.rb:49:in block in execute' 27: from /usr/local/lib/ruby/gems/2.5.0/gems/fastlane-2.149.1/fastlane/lib/fastlane/lane.rb:33:in
call'
26: from Fastfile:36:in block (2 levels) in parsing_binding' 25: from /usr/local/lib/ruby/gems/2.5.0/gems/fastlane-2.149.1/fastlane/lib/fastlane/fast_file.rb:159:in
method_missing'
24: from /usr/local/lib/ruby/gems/2.5.0/gems/fastlane-2.149.1/fastlane/lib/fastlane/runner.rb:157:in trigger_action_by_name' 23: from /usr/local/lib/ruby/gems/2.5.0/gems/fastlane-2.149.1/fastlane/lib/fastlane/runner.rb:227:in
execute_action'
22: from /usr/local/lib/ruby/gems/2.5.0/gems/fastlane-2.149.1/fastlane/lib/fastlane/runner.rb:227:in chdir' 21: from /usr/local/lib/ruby/gems/2.5.0/gems/fastlane-2.149.1/fastlane/lib/fastlane/runner.rb:253:in
block in execute_action'
20: from /usr/local/lib/ruby/gems/2.5.0/gems/fastlane-2.149.1/fastlane/lib/fastlane/actions/actions_helper.rb:50:in execute_action' 19: from /usr/local/lib/ruby/gems/2.5.0/gems/fastlane-2.149.1/fastlane/lib/fastlane/runner.rb:261:in
block (2 levels) in execute_action'
18: from /usr/local/lib/ruby/gems/2.5.0/gems/fastlane-plugin-pgyer-0.2.2/lib/fastlane/plugin/pgyer/actions/pgyer_action.rb:66:in run' 17: from /usr/local/lib/ruby/gems/2.5.0/gems/faraday-0.17.0/lib/faraday/connection.rb:175:in
post'
16: from /usr/local/lib/ruby/gems/2.5.0/gems/faraday-0.17.0/lib/faraday/connection.rb:387:in run_request' 15: from /usr/local/lib/ruby/gems/2.5.0/gems/faraday-0.17.0/lib/faraday/rack_builder.rb:143:in
build_response'
14: from /usr/local/lib/ruby/gems/2.5.0/gems/faraday-0.17.0/lib/faraday/request/multipart.rb:15:in call' 13: from /usr/local/lib/ruby/gems/2.5.0/gems/faraday-0.17.0/lib/faraday/request/url_encoded.rb:15:in
call'
12: from /usr/local/lib/ruby/gems/2.5.0/gems/faraday_middleware-0.13.1/lib/faraday_middleware/response_middleware.rb:31:in call' 11: from /usr/local/lib/ruby/gems/2.5.0/gems/faraday-0.17.0/lib/faraday/adapter/net_http.rb:38:in
call'
10: from /usr/local/lib/ruby/gems/2.5.0/gems/faraday-0.17.0/lib/faraday/adapter/net_http.rb:92:in with_net_http_connection' 9: from /usr/local/lib/ruby/gems/2.5.0/gems/faraday-0.17.0/lib/faraday/adapter/net_http.rb:43:in
block in call'
8: from /usr/local/lib/ruby/gems/2.5.0/gems/faraday-0.17.0/lib/faraday/adapter/net_http.rb:87:in perform_request' 7: from /usr/local/Cellar/ruby/2.5.0_2/lib/ruby/2.5.0/net/http.rb:1455:in
request'
6: from /usr/local/Cellar/ruby/2.5.0_2/lib/ruby/2.5.0/net/http.rb:909:in start' 5: from /usr/local/Cellar/ruby/2.5.0_2/lib/ruby/2.5.0/net/http.rb:920:in
do_start'
4: from /usr/local/Cellar/ruby/2.5.0_2/lib/ruby/2.5.0/net/http.rb:935:in connect' 3: from /usr/local/Cellar/ruby/2.5.0_2/lib/ruby/2.5.0/timeout.rb:103:in
timeout'
2: from /usr/local/Cellar/ruby/2.5.0_2/lib/ruby/2.5.0/timeout.rb:93:in block in timeout' 1: from /usr/local/Cellar/ruby/2.5.0_2/lib/ruby/2.5.0/net/http.rb:936:in
block in connect'
/usr/local/Cellar/ruby/2.5.0_2/lib/ruby/2.5.0/net/http.rb:939:in `rescue in block in connect': [!] Failed to open TCP connection to qiniu-storage.pgyer.com:80 (getaddrinfo: nodename nor servname provided, or not known) (Faraday::ConnectionFailed)
通过插件,上传到pyger平台成功后,如何获取pyger的下载地址?
我注意到Pgyer更新了新版的接口,有一个可选的参数。希望可以在插件pgyer中使用到。
if gym set output_directory
path, like "~/Desktop/jenkins_output/xxxx.ipa", pgyer couldn‘t find this path.
感谢作者的分享,参照作者的feature实现
插件版本0.2.5,单独运行报错
fastlane run pgyer api_key:xxxx ipa:/xx/xx.ipa
日志:
[17:47:03]: -------------------
[17:47:03]: --- Step: pgyer ---
[17:47:03]: -------------------
[17:47:03]: The pgyer plugin is working.
[17:47:03]: build_file: /xx/xx.ipa, type: ios
[!] Get token is failed, info:
:Get token is failed, info:
<title>302 Found</title>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.