关于开发环境:如何设置-Databend-开发环境

工欲善其事,必先利其器。在开启 Databend 奉献之旅前,一起来配置适宜本人的开发环境吧。疾速装置 疾速装置为不便开发者疾速建设开发环境,Databend 保护了一个简单的 shell 脚本,位于 scripts/setup/dev_setup.sh。只需执行一条指令即可实现开发环境配置: $ make setup -d留神:此过程会辅助装置局部 python 环境,可能会对本地原开发环境造成影响,倡议事后执行以下命令以创立并启用专属虚拟环境。 $ python -m venv .databend$ source .databend/bin/activate如果遇到依赖缺失问题,能够参考「分步装置 - 测试必备」这一部分的内容装置。分步装置 分步装置这里以 Fedora 36 为例,思考到不同零碎和发行版之间的差别,你可能须要自行装置 gcc,python 和 openssl。 1.装置 Rust toolchain: 举荐应用 rustup 来治理 Rust toolchain ,参考 https://rustup.rs/ 进行装置。对于 MacOS 和 Linux 用户,执行: $ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shDatabend 通常应用最新公布的 nightly 工具链进行开发,相干信息记录在 rust-toolchain.toml 中。Rustup 会在应用时对工具链进行主动重载,装置时只需默认配置。 $ cargo buildinfo: syncing channel updates for 'nightly-2022-05-19-x86_64-unknown-linux-gnu'info: latest update on 2022-05-19, rust version 1.63.0-nightly (cd282d7f7 2022-05-18)2.装置必备依赖: 以下列出了一些装置构建和测试必备依赖的关键步骤,阐明及报错信息以正文模式出现。 构建必备: # common-hive-meta-store 须要,thrift not found$ sudo dnf install thrift# openssl-sys 须要,Can't locate FindBin.pm, File/Compare.pm in @INC$ sudo dnf install perl-FindBin perl-File-Compare# prost-build 须要,is `cmake` not installed?# The CMAKE_CXX_COMPILER: c++ is not a full path and was not found in the PATH.,装置 clang 时也会装置 gcc-c++ 和 llvm$ sudo dnf install cmake clang测试必备: # 功能测试和后续体验须要$ sudo dnf install mysql# 蕴含目前功能测试和 lint 须要的所有 Python 依赖$ cd tests$ pip install poetry$ poetry install$ poetry shell# sqllogic 测试须要(蕴含在下面步骤中,按需选用)(tests) $ cd logictest$ pip install -r requirements.txt# fuzz 测试须要(tests) $ cd fuzz$ pip install -r requirements.txtLint 必备: # taplo fmt 须要$ cargo install taplo-cli编辑器 - Visual Studio Code 拜访 https://code.visualstudio.com ,装置 Visual Studio Code 。1.插件举荐rust-analyzer 作者:The Rust Programming Language为 Visual Studio Code 提供 Rust 语言反对。crates 作者:Seray Uzgur帮忙 Rust 开发者治理 Cargo.toml 中的依赖。仅反对起源为 crates.io 的依赖。CodeLLDB ...

July 29, 2022 · 1 min · jiezi

关于开发环境:产品对比分析TeamCode-DCS与Docker-Dev-Environment

随着云计算技术的呈现和遍及,线上算力越来越强,极大升高了企业的生产成本。同时人们对越来越多的软件公司开始进行数字化翻新,探究更加高效的近程开发和工作模式。微软在2019年公布了 VS Code Remote,反对近程开发性能, 开启了近程开发新时代。依据StackOverflow的2019年度调研,VS Code曾经在过后成为了开发者首选的开发环境。之后,Coder开源了code-server,让VS Code能够在任何平台上运行并通过浏览器拜访,解决了跨设施的环境一致性问题。满足了人们对自在、便捷、高效的工作和合作模式的需要,打造了近程开发的基础架构,不少公司也纷纷推出近程开发工具,例如TeamCode的DCS与Docker推出的Development Environments。 用户价值剖析我的项目开发者-配置环境艰难症开发者开发一个我的项目的时候,第一步要做的就是配置本地开发环境。 通常咱们会边浏览我的项目的文档依据教程配置开发环境,然而恰好是在这看似最根底的事件上,会呈现各类问题困扰开发者: 装置环境报错导致无奈持续;要求的环境依赖与本地环境抵触;好不容易把我的项目胜利了,但我的项目启动不了;零碎不同导致无奈装置胜利,比方有一部分开发者应用的是Windows操作系统。以上这些问题都让开发者抓狂。接下来就让咱们看看两款工具是如何解决环境部署及装置问题的呢? TeamCode 为了解决以上的开发痛点,TeamCode推出了DCS,它是一款疾速主动构建可扩缩的云端开发环境的产品。它的能力 通过 Git 仓库地址疾速搭建开发环境;标准化的开发环境;反对支流 IDE 和浏览器,反对客户端 IDE 接入,可与 TeamCode Cloud-IDE 无缝连贯;反对多种语言,已反对 Java、Python、Go、Typescript 等。它的用处开发环境云端自动化治理,升高人力及研发老本;代码及研发数据云端存储,增强研发数据安全性;研发过程云端治理,数据透明化,晋升管理效率。产品构造剖析产品的次要指标人群为开发者,因而须要重点满足开发者的需要,解决开发流程中的繁琐问题。场景一:如何满足开发者装置环境的需要DCS反对从Git仓库创立一个开发环境自动检测并创立环境能够抉择VS Code与Cloud IDE连贯环境与开发开始开发 Dev Environment反对以下形式创立一个开发环境: Git仓库地址本地文件夹Docker镜像地址环境会被主动创立关上VS Code连贯环境开始开发场景二:如何满足开发者与业务团队的预览公布需要DCS能够通过URL间接预览我的项目改变,无需通过CICD流程。Dev Environment须要通过Git推送代码并走CICD部署至预览服务器。 对TeamCode DCS的将来瞻望与优化倡议劣势:我认为DCS这款产品除了解决装置环境这一痛点之外,还可能成为一个在线的预览测试服务,这可能晋升开发团队与业务团队单干时候的效率,让业务团队能够及时预览改变。Docker的Dev Environment则还是走传统的CICD门路,在此场景下较为低效。倡议:倡议可能在本地创立一个开发环境,因为如果强制用户应用云开发环境,就代表用户所有的开发基础架构都须要上云,绝对于本地开发来说老本较高,这一点Docker的Dev Environment有劣势。

December 2, 2021 · 1 min · jiezi

借助URLOS快速安装MixPHP201框架

环境需求最低硬件配置:1核CPU,1G内存(1+1)提示:如果你的应用较多,而主机节点的硬件配置较低,建议在部署节点时开通虚拟虚拟内存;生产环境建议使用2G或以上内存;推荐安装系统:Ubuntu-16.04、Ubuntu-18.04、CentOS7.X、Debian9X的64位的纯净的操作系统;URLOS安装curl -LO www.urlos.com/iu && sh iuMixPHP安装流程登录URLOS系统后台,在应用市场中搜索“MixPHP”,找到之后,直接点击安装按钮 填写服务名称、选择运行节点、服务端口、选择智能部署 填写网站域名、ssh密码(这里的密码是root密码) 然后点击“提交”按钮,等待部署完成; 访问网站访问:www.aaa.com:8088(这里是自己的域名) 登录sftp网站根目录在 data/www/mix/

July 15, 2019 · 1 min · jiezi

何为真正的-FaaS-阿里舜天平台做了四大创新

阿里妹导读:数据中心和云计算的超高增速,AI、视频、基因测序等应用对于算力的无尽渴求和摩尔定律发展事实上已经停滞的现实,均给异构加速带来了巨大的应用潜力和商机。但 Faas 解决方案仍有较高的门槛,今天,我们一起了解 Faas 的难度在哪里?以及在阿里,我们如何做到真正的 Faas?一、 前言近几年,DC 和云计算领域风起云涌,发展地如火如荼。中外厂家纷纷发布 “DC First”、“All in Cloud”、“Cloud or Dead” 等战略,不管此前公司的主业为何,杀入 DC 和云计算领域的厂家如过江之鲫。但是,和任何 ICT 领域一样,在经过充分的搏杀和竞争之后,整个市场将基本稳定下来,由 TOP2-3的厂家把持,其他 players 加到一起分点残羹冷炙。Gartner 于4月24日发布报告,阿里云以19.6%的市场份额,雄踞整个亚太第一,AWS 和微软分居第二和第三。全球范围内,仍然维持了AWS、微软和阿里云分别为冠、亚、季军的格局。 阿里云 FPGA as a Service(以下简称FaaS)舜天平台正是 FPGA 异构加速领域的领导者和开拓者,也是 FPGA 异构加速领域良好生态的倡导者和建设者。依托阿里云百万企业付费客户以及阿里云强大的飞天操作系统,FaaS 舜天平台对内而言,已经成为阿里集团 FPGA 加速业务的基础设施;对外而言,则将大幅降低 FPGA 的开发和使用门槛,致力于为客户提供最高性价比的算力和打造健康的 FPGA 加速生态。 二、 传统的 FPGA 应用与 FaaS 的区别FPGA 由于其强大的灵活性,自诞生以来,在数以千计的垂直市场中都获得了大量的应用。但是,这种应用都谈不上“云”,也谈不上“service”。我们知道,传统 IT 基础设施是没有弹性的,因此很容易出现要么业务高峰时无法支撑乃至整个 IT 系统崩溃;要么陷入业务低谷时,大量 IT 资源闲置,造成成本高企。因此,“云”和“非云”的一个最大区别就在于是否支持资源的“弹性”伸缩:需要时按需获取,不需要时随时释放。而要做到“弹性”,那么一定要通过虚拟化来支持。如果做不到“弹性”和“虚拟化”,就称不上 FaaS,究其本质和传统上对 FPGA 的使用没有任何区别。 如果单纯从 FPGA 的设计和使用角度看,即使有门槛的存在,设计一颗 glue logic的 FPGA 或者跑一点简单算法,实现一点简单控制,难度是相当有限的。但是,不能说具备了这些能力之后,就可以对外宣称可以提供 FaaS 的能力了。 首先,使用 FPGA 实现复杂的算法的门槛是非常高的(比如用 FPGA 实现 H.265 编码);其次,高效使用 FPGA 实现复杂的算法的门槛是非常非常高的(还拿 H.265编码举例,设计得不好的话,很大容量的一颗 FPGA 也许只能支持一路 1080p/30 帧的 H.265 视频,好的设计也许就能支持4路);最后,把 FPGA 的加速能力通过“云”来输出给客户的门槛是非常非常非常高的。所以,FaaS 的核心之一是让 FPGA 的算力“x86化”,即云上购买和使用 FPGA 的算力和云上购买和使用 CPU 的算力一样简单;核心之二,是让 FPGA 的算力“服务化”,即不需要客户做二次开发和适配,通过简单的类 URL 调用即可使用。 ...

June 3, 2019 · 3 min · jiezi

macOS开发环境配置JAVA开发环境

作为一个前端开发人员,本不需要配置后端的开发环境,但是工作中一些项目是前后端不分离的,然后就有了下面这些配置过程。 jrejre是JAVA的执行环境。其实可不安装,jdk中就有,这里是因为下载错了,以为安装好jre就行了。这一步跳过就行了,这里权当做个记录。 下载安装下载地址这里找不到了,也是从oracle官网上下载的。jre的home目录: /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home配置环境变量cd ~vim .bash_profile# 配置内容见下面source .bash_profilejava -version# 这里应该返回java的版本号# .bash_profileJAVA_HOME=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/binCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarPATH="$JAVA_HOME:${PATH}"export PATH JAVA_HOME有个坑是路径里有空格需要用反斜杠转义。 jdk下载安装使用的是jdk1.8,这里是下载地址选择 Java SE Development Kit 8u211里面的jdk-8u211-macosx-x64.dmg。下载可能很慢,请使用vpn。下载后图形界面安装直接点下一步就行了。 安装好后会在系统偏好设置里面有JAVA配置选项设置。jdk的home目录在 /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home配置环境变量不知道怎么配置的参考上一步的配置内容,其实只改了JAVA_HOME变量。 # .bash_profileJAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/HomeCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarPATH="$JAVA_HOME:${PATH}"export PATH JAVA_HOME执行java -version看是否配置成功。 tomcat可以把 tomcat 简单的理解为一个 HTTP 服务器(就像Nginx)。这里是下载地址找到 Core ,下载 .zip 格式文件就行了。下载解压,我把它放到了~/Library/tomcat下。所以他的执行文件目录是: /Users/liuzhen/Library/tomcat/apache-tomcat-8.5.41/bin然后命令行执行 cd /Users/liuzhen/Library/tomcat/apache-tomcat-8.5.41/bin# 因为我执行 startup.sh 时提示无命令 ls -l 看了下是没有执行权限chmod u+x startup.shchmod u+x catalina.shchmod u+x shutdown.sh# 启动sudo ./startup.sh# 停止sudo ./shutdown.sh启动后访问<localhost:8080>可以看到tomcat的欢迎界面。这里要保证8080端口不被占用。 mavenmaven是JAVA的软件包管理工具,类似CentOS里面的yum,也类似JS的npm。这里是下载地址。 选择apache-maven-3.6.1-bin.zip下载就行,我解压到了~/maven下。 在windows中,软件包会装到C盘,mac下可能会安装到${user.home}/.m2/repository,所以软件包的目录需要配置一下。 我把他放在~/Library/jar下,打开/Users/liuzhen/Library/maven/apache-maven-3.6.1/conf/settings.xml添加配置就可以。 <!-- settings.xml --><localRepository>/Users/liuzhen/Library/jar</localRepository>然后我们需要配置环境变量。 # mavenM2_HOME=/Users/liuzhen/Library/maven/apache-maven-3.6.1PATH="$M2_HOME/bin:${PATH}"export M2_HOME PATH修改后执行mvn --version会提示信息。 ...

June 3, 2019 · 1 min · jiezi

阿里云centos7.2下安装chrome浏览器+webdriver+selenium及常见设置-傻瓜教程

Linux版本:阿里云CentOS Linux release 7.2.1511 (Core) root用户下python版本python3.6,python3安装方法https://www.cnblogs.com/FZfangzheng/p/7588944.html 测试时间:2019-04-161.安装chrome浏览器1.1 创建yum源文件cd /etc/yum.repo.d/touch google-chrome.repo1.2 输入yum源信息[google-chrome]name=google-chromebaseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearchenabled=1gpgcheck=1gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub1.3 安装google chromeyum -y install google-chrome-stable –nogpgcheck2.安装chromedriver及seleniumyum install chromedriverpip install selenium默认安装路径:chromedriver: /usr/bin/chromedriver3.修改配置来执行代码,及常见错误处理3.1测试demo#!/usr/bin/env python# -- coding=UTF-8 --#测试代码import timefrom selenium import webdriverdef test(): chromeOptions = webdriver.ChromeOptions() chromeOptions.add_argument(’–headless’) #浏览器无窗口加载 chromeOptions.add_argument(’–disable-gpu’) #不开启GPU加速 """ 解决报错: selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally (unknown error: DevToolsActivePort file doesn’t exist) """ chromeOptions.add_argument(’–disable-dev-shm-usage’) #禁止 chromeOptions.add_argument(’–no-sandbox’)#以根用户打身份运行Chrome,使用-no-sandbox标记重新运行Chrome #其它设置(可选): #chromeOptions.add_argument(’–hide-scrollbars’) #隐藏滚动条, 应对一些特殊页面 #chromeOptions.add_argument(‘blink-settings=imagesEnabled=false’) #不加载图片, 提升速度 #chromeOptions.add_argument(“user-agent=Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36”) #伪装其它版本浏览器,有时可以解决代码在不同环境上的兼容问题,或者爬虫cookie有效性保持一致需要设置此参数 #创建driver对象 #chrome_options=chromeOptions加载设置 #executable_path="/usr/bin/chromedriver"指定webdriver路径(可选) driver = webdriver.Chrome(chrome_options=chromeOptions,executable_path="/usr/bin/chromedriver") try: driver.get(“http://www.baidu.com”) time.sleep(3) print(driver.page_source) except Exception as e: print(e) finally: driver.quit()if name == ‘main’: test()4.参考资料https://www.cnblogs.com/ianduin/p/8727333.html https://www.cnblogs.com/baijing1/p/9751399.html https://www.cnblogs.com/z-x-y/p/9507467.html ...

April 16, 2019 · 1 min · jiezi

函数运行环境系统动态链接库版本太低?函数计算 fun 神助力分忧解难

背景最近在处理线上工单的时候,遇到一个用户使用 nodejs runtime 时因为函数计算运行环境的 gcc 版本过低导致无法运行的问题,觉得非常有意思,所以深入的帮用户寻找了解决方案。觉得这个场景应该具有一定的通用性,所以在这篇文章里面重点的介绍一下如何使用函数计算的周边工具 fun 解决因为 runtime 中系统版本导致的各种兼容性问题。场景介绍用户问题简要描述一下用户当时遇到的问题:用户使用函数计算的 nodejs8 runtime,在本地自己的开发环境使用 npm install couchbase 安装了 couchbase 这个第三方库。couchbase 封装了 C 库,依赖系统底层动态链接库 libstdc++.so.6。因为用户自己的开发环境的操作系统内核比较新,所以本地安装、编译和调试都比较顺利。所以,最后按照函数计算的打包方式成功创建了 Function,但是执行 InvokeFunction 时,遇到了这样的错误:“errorMessage”: “/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version CXXABI_1.3.9' not found (required by /code/node_modules/couchbase/build/Release/couchbase_impl.node)", "errorType": "Error", "stackTrace": [ "Error: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version CXXABI_1.3.9’ not found (required by /code/node_modules/couchbase/build/Release/couchbase_impl.node)”,…错误发生的原因如堆栈描述,即没有 CXXABI_1.3.9 这个版本,可以看到函数计算 nodejs 环境中的支持情况:root@1fe79eb58dbd:/code# strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 |grep CXXABI_ CXXABI_1.3CXXABI_1.3.1CXXABI_1.3.2CXXABI_1.3.3CXXABI_1.3.4CXXABI_1.3.5CXXABI_1.3.6CXXABI_1.3.7CXXABI_1.3.8CXXABI_TM_1升级底层系统版本的代价比较大,需要长时间的稳定性、兼容性测试和观察,所以,为了支持这类使用场景,我们希望能够有比较简单的方式绕行。场景复现和问题解决前提:先按照 fun 的安装步骤安装 fun工具,并进行 fun config 配置。在本地很快搭建了一个项目目录:- test_code/ - index.js - template.yml其中 index.js 和 template.yml 的 内容分别为# index.jsconst couchbase = require(‘couchbase’).Mock;module.exports.handler = function(event, context, callback) { var cluster = new couchbase.Cluster(); var bucket = cluster.openBucket(); bucket.upsert(’testdoc’, {name:‘Frank’}, function(err, result) { if (err) throw err; bucket.get(’testdoc’, function(err, result) { if (err) throw err; console.log(result.value); // {name: Frank} }); }); callback(null, { hello: ‘world’ })}# template.yml ROSTemplateFormatVersion: ‘2015-09-01’Transform: ‘Aliyun::Serverless-2018-04-03’Resources: fc: # service name Type: ‘Aliyun::Serverless::Service’ Properties: Description: ‘fc test’ helloworld: # function name Type: ‘Aliyun::Serverless::Function’ Properties: Handler: index.handler Runtime: nodejs8 CodeUri: ‘./’ Timeout: 60为了能够在本地模拟函数计算的真实环境进行依赖包安装和调试,这里生成一个 fun.yml 文件用于 fun install 安装使用,内容如下:runtime: nodejs8tasks: - shell: |- if [ ! -f /code/.fun/root/usr/lib/x86_64-linux-gnu/libstdc++.so.6 ]; then mkdir -p /code/.fun/tmp/archives/ curl http://mirrors.ustc.edu.cn/debian/pool/main/g/gcc-6/libstdc++6_6.3.0-18+deb9u1_amd64.deb -o /code/.fun/tmp/archives/libstdc++6_6.3.0-18+deb9u1_amd64.deb bash -c ‘for f in $(ls /code/.fun/tmp/archives/*.deb); do dpkg -x $f /code/.fun/root; done;’ rm -rf /code/.fun/tmp/archives fi - name: install couchbase shell: npm install couchbasefun.yml中参数说明:前面的分析已经了解到函数计算 nodejs8 runtime 的 libstdc++.so.6 的版本偏低,所以,我们找到一个更新的版本来支持,见新版本的 libstdc++.so.6 的 CXXABI_ 参数:$strings .fun/root/usr/lib/x86_64-linux-gnu/libstdc++.so.6|grep CXXABI_CXXABI_1.3CXXABI_1.3.1CXXABI_1.3.2CXXABI_1.3.3CXXABI_1.3.4CXXABI_1.3.5CXXABI_1.3.6CXXABI_1.3.7CXXABI_1.3.8CXXABI_1.3.9CXXABI_1.3.10CXXABI_TM_1CXXABI_FLOAT128执行 fun install 命令安装各种第三方依赖,显示如下:本地执行情况执行 fun local invoke helloworld,可以看到执行成功的效果:$fun local invoke helloworld begin pullling image aliyunfc/runtime-nodejs8:1.4.0………………………………………………………pull image finishedpull image finishedFC Invoke Start RequestId: 78e20963-b314-4d69-843a-35a3f465796cload code for handler:index.handlerFC Invoke End RequestId: 78e20963-b314-4d69-843a-35a3f465796c{“hello”:“world”}2019-02-19T08:16:45.073Z 78e20963-b314-4d69-843a-35a3f465796c [verbose] { name: ‘Frank’ }发布上线使用 fun deploy 发布上线,然后到控制台执行一下线上实际的运行效果:总结fun install 功能能够将代码和依赖文件分离开,独立安装系统依赖文件,而且 fun local 和 fun deply 都能够自动帮你设置第三方库的依赖引用路径,让您无需关心环境变量问题。本文的解法只是提供了一个对于系统版本偏低无法满足用户一些高级库使用需求时的简单绕行方案,仅供参考,对于一些复杂的环境依赖问题,可能还需要具体情况具体分析。更多参考:函数计算 nodejs runtimefun local99dXnVk4I)fun install本文作者:清宵阅读原文本文为云栖社区原创内容,未经允许不得转载。 ...

February 21, 2019 · 2 min · jiezi

30 行 Javascript 代码搞定智能家居系统

本文首发于『阿里云 IoT 开发者社区』,更多精彩物联网内容欢迎前往浏览。智能家居可谓是今年物联网的热门领域,通过智能单品和智能音箱,人们已然把『智能』两个字变成了生活的理所应当。搭建云上之家除了买买买,还能 DIY。依托阿里云物联网平台,我们用 30 行代码来搞定一套智能家居解决方案。常见的智能家居解决方案包括了设备端、上云、应用端三大部分,更广的还涉及大数据及人工智能。传统的物联网开发非常强调流程性,即设备端、云、应用端三个步骤需要依次进行。而今天,依托于阿里云物联网平台的『物模型』基础,物联网开发的两端可以齐头并进,节省大量的人力物力成本。齐头并进显然很诱人,但是能否再更进一步,一人 Handle 全部开发呢?答案是 YES!目前,有大量互联网开发者由于缺乏嵌入式开发能力,如C/C++语言基础,止步于物联网蓝海的大门。通过阿里云 IoT 提供的 TinyEngine 引擎,可以快速使用 Javascript 进行设备端开发,完美解决这部分开发者的心头大患。而针对不熟悉前后端开发的嵌入式开发者,阿里云物联网平台一样提供了『可视化搭建应用』等快速上手的功能,零代码实现应用开发,大大减轻学习负担。下面我们就使用阿里云物联网开发平台的 TinyEngine 引擎和可视化搭建功能,30 行代码快速开发一个由灯和温湿度计组成的智能家居系统。一、开通服务首先,申请阿里云账号,并开通登陆 Link Develop 一站式开发平台:https://linkdevelop.aliyun.com。之后,新建项目(项目名任意)—— 设备开发 —— 新增产品 —— 所属分类按需选择『灯』或『温湿度计』,通讯方式选择 WiFi ,数据格式选择Alink —— 完成。完成后选择『设备开发』标签页 —— 新增调试设备,记录下设备三元组。二、设备开发打开嵌入式 Javascript 在线工作台(没错,开发环境都不用搭建),创建新项目。替换 index.js代码:1. 灯var deviceShadow = require(‘deviceShadow’);var ledHandle = GPIO.open(“led1”);deviceShadow.bindDevID({ productKey: “”, deviceName: “”, deviceSecret: “”});function main(err){ if(err){ console.log(“连接平台失败”); }else{ console.log(“主程序开始”); deviceShadow.addDevSetPropertyNotify(“LightSwitch”, function (lightStatus) { GPIO.write(ledHandle, 1-lightStatus); }); var mainLoop = setInterval(function () { var ledStatus = GPIO.read(ledHandle); deviceShadow.postProperty(“LightSwitch”, 1-ledStatus); }, 2000); }}deviceShadow.start(main);2. 温湿度计var deviceShadow = require(‘deviceShadow’);var shtc1 = require(‘shtc1’);var handle = new shtc1(‘shtc1’);var ledHandle = GPIO.open(“led”);deviceShadow.bindDevID({ productKey: “a17vi82MmxP”, deviceName: “0001”, deviceSecret: “tYUngSMqYeDxODgtX3DNKkQ7920I3t4T”});function main(err) { if (err) { console.log(“连接平台失败”); } else { console.log(“主程序开始”); var mainLoop = setInterval(function () { var val = handle.getTempHumi(); console.log(‘shtc1:temp=’ + val[0] + ’ humi:’ + val[1]); deviceShadow.postProperty(“CurrentTemperature”, val[0]); deviceShadow.postProperty(“RelativeHumidity”, val[1]); }, 2000); }}deviceShadow.start(main);将设备连接至电脑,点击『连接』并『运行』,设备启动后会自动加载并运行index.js这个文件,同时上报数据至阿里云物联网平台。三、应用开发既然是系统,没有应用可不行,我们利用可视化搭建功能 0 代码快速完成一个应用,只需依次拖入仪表盘和开关组件,替换图片,绑定设备即可完成全部操作。齐活,短短 30 行代码搭建出的端到端智能家居系统就完成了,保存发布后就可以分享给他人访问了。*配合的 TinyEngine 引擎和可视化搭建,开发者无需学习新的编程语言,即可无缝快速切入物联网开发,也彰显了阿里云物联网平台的包容性和独创性。各位开发者,赶紧丢掉犹豫,上手试试吧!https://linkdevelop.aliyun.com本文作者:cxlwill阅读原文本文为云栖社区原创内容,未经允许不得转载。 ...

December 11, 2018 · 1 min · jiezi