-
首先,还是很感谢华为体验官部落能给我这么一个体验的机会,当然也是靠我孜孜不倦的在部落中苦苦蹲守,抓住了这次体验官的机会,(哈哈哈,自吹一波);然后,进入正题,因为体验时间有限,加上不能和部落中一些成名已久,带领成熟团队的大佬相比,所以只能我自己默默的输出这次的评测帖。目前,自己所在团队项目所用的工具是Gerrit,自己也胡乱搭建过Gitlab,使用过Github和Bitbucket,更多的使用的是Gitee(码云),后面比华为Devcloud更早出来的产品就是腾讯推出的Cloud Studio云端开发WebIDE了,这几大产品截图如下:Gerrit:Gitlab:Bitbucket:Gitee(码云):腾讯Cloud Studio云端开发WebIDE:本人因为是菜鸟小白,平时就喜欢瞎折腾,杂而不精,希望各位观帖大佬海涵。使用感受进入正题,说说这几天使用下来的感受和对比情况;首先,整个华为Devcloud服务中的代码托管服务产品我个人觉得是个不错的产品,虽然在竞品服务如此多的市场中也依然是做出了具有一定自身特色的产品,这点是值得肯定的,但是距离像是github和gitee这种相对来说成熟度较高,活跃人数相对较大的产品来说,差距还是有的,主要存在于以下几点:1、和Gerrit相比而言,UI界面比Gerrit要好很多,但是就提交代码规范程度这点来说,存在不足,因为Gerrit在提交代码的说明信息中强制要求了需要按照一定格式规范进行提交,不然是自动识别提交失败的,但是这个点我在华为代码托管服务产品中未能找到设置的地方,希望能在后续迭代版本中添加该功能;2、和Gitlab、Github和Bitbucket相比,给人的感觉就是UI设计上和使用交互上没有前三者那么紧凑和简洁,感觉华为代码托管服务产品的UI设计上比较松散,简洁度上可能还不够,当然这是我个人意见,哈哈。3、和腾讯Cloud Studio云端开发WebIDE对比,这个竞品出来的比较早,应该是在18年上半年就已经开始招募内测了,本人有幸成为该产品的内测用户,一直体验到现在,就代码托管服务而言,腾讯的产品没有华为做的好,因为腾讯的产品在导入已存在仓库的操作上,比较死板,需要先将已存在的仓库进行本地化,然后再推送到新建的远程仓库上进行代码托管,不能像华为代码托管服务这样自动连接到github或者gitee上进行fork操作,如下图对比:腾讯Cloud Studio云端开发WebIDE华为代码托管服务产品对比结果一目了然;当然,这个问题在和bitbacket和gitlab上也存在,并且github也仅仅只是支持上传和fork,不支持和兼容其他代码托管平台,而在这个方面做得比较好的产品我个人觉得是gitee(码云),对比操作截图如下:对比下来,华为产品的使用说明提示更加显眼,人性化,点赞ing;4、产品使用说明帮助文档以及使用步骤提醒上,个人认为gitee(码云)是要比华为要好一些的,腾讯的产品就比较一般了,见下图:gitee(码云)华为云产品腾讯云产品:整体来说,gitee(码云) 的产品说明使用文档是细节做得是最好的,从指引的出处,到入口的详尽显示,到最后操作的成功图示,都做到了详尽指示,并且通俗易懂,相对而言,华为的帮助文档在整体上比较完备,但是细节指引以及人性化的通俗易懂上会存在一定的不足,这个希望能够在后续版本中进行优化。5、这个部分其实我个**会的并不深,因为纵观我罗列的这些产品,在使用所谓的插件功能,或者说是云IDE开发组件功能的时候,其实都不算顺利,很多情况下是该功能暂未实现,或者是该功能需要特殊申请或者付费才能进一步实现,所以这一块的功能是体验不完整的,对此,我个人建议是可以让华为给我们体验官进行一次专场体验活动,以便展示华为的强大资源整合能力,哈哈哈,希望能采纳。以上就是本人这个小菜鸟的体验报告,希望各位观帖大佬多多指正,不吝赐教,跪谢!!!
-
我接触华为云还算是比较久了,毕竟华为云在学生中的支持力度的确非常大。同样,看到华为云异军突起,丝毫不惧阿里云老大哥,产品技术整体发展迅速,的确是很感慨华为的技术底蕴。回归正题。这次是体验华为云的代码托管服务,大家肯定都对GitHub很熟悉了,我也会与GitHub(我目前主要在用),Gitbucket(我们团队用,不多)做一个对比(稍微吐槽一下,腾讯的git做的是真的简陋)。也会讲一下我是怎么使用华为云的代码托管服务的。后面我会说几个还不太人性化的地方,总之希望官方越做越好。基础项我用Git也算是有一定的时间了,对基础操作还是非常熟悉的。那么第一步就是先添加公钥。华为云添加公钥的时候有一点,区分部署秘钥和个人秘钥。要添加到个人秘钥里面,git仓库里面的秘钥是部署秘钥,只有pull而没有push权限。但是我看到git仓库也有单独的角色权限管理,说实话我是没搞清楚这两者的区别的。因为我用CI/CD的功能,所以就用华为云的git直接clone我的GitHub仓库。因为安全性还有GitHub给第三方的权限问题,clone的仓库如果是私有仓库是无法自动拉取最新同步的,这块我当时卡了很久,不知道为什么没同步。而且我clone私有仓库的时候自动同步这个选项是可选的,不知道官方能不能做一下判断。还有就是,克隆的私有仓库是能够点击同步按钮的,是因为官方无法判断克隆的仓库是否是私有的吧?但是我记得是有一些push触发的钩子,没好好研究这块呢,反正是觉得这块的用户体验可以再稍稍优化一下,让用户少一些迷惑。【Question】部署好基础仓库,我吧华为云的仓库也添加到了本地远程仓库记录里面。那么我本地就会有两个分支了。使用的时候日常push到origin,也就是GitHub仓库,需要部署的时候我只需要push到deploy仓库就可以啦。设置了钩子自动触发流水线,还是非常方便的。而且也不用担心每push一次就会触发一次部署,浪费性能。说起来还是定时自动同步更方便一点,如果能够自动同步私有仓库的话,不过这好像不是刚需,私有仓库可以直接用华为云的git,只是我还不习惯天天上devcloud平时使用过程中,代码量少速度问题是完全不担心的。不过华为云的git的确快很多,非常多。几乎push就上去了,不需要等一小会,速度和延迟都好很多。下图可以看出来速度还是差不少的。不过这次的是临时提交的,代码量不大,勿喷。但是必须要说的一点是,bitbucket界面是真的不习惯,虽然bitbucket的看板非常好用。然后bitbucket比GitHub要卡很多。gitlab没用过。pull和push网速上的差距都是一样的,而且华为云的git是支持5人协作500M,网速也快,结合上整个DevCloud,功能还是很丰富很强大的。想用私有团队或者协作仓库是个不错的选择。公开还是无可争议的GitHub了。华为云的git我觉得非常舒服的一点就是,你想要的,肉眼可见的知道在哪,对于我来说功能溢出了啊,哈哈哈可能有很多人一上来不习惯华为云的git,毕竟GitHub用的多,华为云的git是没有readme快速预览、没有项目管理、看板这些东西的,因为都在devcloud中。不过这样也不知道这个仓库是干啥的,索性官方给了这个但是我在仓库里外都没有发现这个字段在哪诶,不知道是不是我又眼岔了【Question】常用进阶操作基础项说完了就该聊一聊不常用但是很关键的一些操作了——PR、merge。我个人的pull request主要是合并开源项目的开发分支以及区分一些功能。随便新建一个branch,push一次新的commit,就能体验这个功能这是我新建的合并请求。其实是很方便的,合并说明,合并方向,创建者但是在进行分支代码对比的时候,我迷惑了一会分支页面点差异对比默认是这样的咦,我明明提交了新的代码?然后我发现,官方默认master是最老的代码,开发是在别的分支上。代码匹配的时候应该把心的分支放前面,要不然老分支放前面匹配机制就会认为两个分支的代码完全一样。但是这应该有一个小小的判断,至少不要直接提示说,两个分支是相同的,我还重复改了代码提交去看问题出在哪。发现提交次数不同应该就能判断出两个分支是不一样的,我不是很明白为什么要从——到—— 这么去设计。【Question】前端界面问题虽然整个git仓库已经很完备了,不过有一些小细节我觉得官方还是可以继续优化,让用户体验更完美。就比如仓库设置页面左侧tabbar,是同步刷新的,每切换一次tabbar就闪一次,还会自动返回顶端页面跳转时候的加载条,都是先跳转过去才开启的,这样其实还是会让操作有滞涩感,仿佛是先卡主了,然后才卡出来的加载条,应该是点击后先弹出加载条再跳转让用户更舒服一点。总结总的来说,devcloud刚做出来,有一些细节的确是不够完善和人性化。不过在这么短的时间内,至少我觉得这些小坑是不影响我的使用了,而且效率很高。这次写的手感很不好,这两天猫早上4点叫,下午午睡也叫,然后晚上写了一半的东西突然崩掉,我们家网还死也连不回去,还好华为云有自动保存,太感动了。要不然我真的炸了。有什么问题欢迎提出,也麻烦各位大佬花时间看我这么难懂的文字,感觉实在是过意不去。当然,奖品有的话还是要的,看在我这么认真的使用了华为云产品的份上
-
操作视频如下:需要依赖的软件:>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>以上工具已经下载好了,下载链接如下:链接: https://share.weiyun.com/5GBLw90 (密码:TQ7E)另外microsoft.net framework如果没有安装或者版本不到4.5.2可能需要安装microsoft.net framework 4.5.2.exe1、gcc-arm-none-eabi-4_9-2015q3-20150921-win32.exe安装多次next后,提示如下,添加到系统环境变量中,勾选上然后一路next就安装好了,然后确认GCC是否安装成功,以及版本确认2、python-2.7.10.amd64.msi(我的电脑是win 7 64位,对应选择amd64)建议选择默认路径建议添加到系统环境变量中,选择添加确认python版本,注意要python2.7的3、pywin32-220.win-amd64-py2.7.exe安装4、python相关的pip安装5、scons-2.4.0-amd64-setup安装,对应系统32/64位选择会提示python的目录,注意对应python2.7安装(我这里是安装了多个python版本):6、找到SDK压缩包,解压如下:对应python2.7/scons安装路径修改socns_nws.bat的路径,如下编译一个新工程,直接运行scons_new.bat,可以直接拖拽近cmd:编译成功:编译完后是在…\BC28_OpenCPU_Hi1_SDK_V1.0\build_scons\arm\目录下有一个***.bin的文件需要将.bin的文件和原始fwpkg固件文件进行合成,这里就需要用到海思的另外一个工具,下面安装另外一个工具7、安装UpdatePackage-3.22.0.14.msi,双击安装8、执行"C:\Program Files(x86)\Neul\UpdatePackage\UpdatePackage.exe" updateApplication --in.\fwpkg\BC28JAR01A07.fwpkg --folder .\build_scons\arm --out BC28JAR01A07_OCN1命名可修改生成可下载的fwpkg升级文件下载工具,确认版本和IMEI号,加载版本点击Dowanload
-
本文内容: 使用mesher对服务进行sidecar模式的代理,并结合zipkin实现对服务的分布式追踪。需求背景: client ---> mesher_client --->mesher_server_A --->server_A --->mesher_server_A --->mesher_server_B--->server_B在此需求背景下,我们希望该请求以一条完整的调用链进行显示,而不是分成client --server_A 和server_A -->server_B两条调用链显示。环境准备(这里只演示本地):1,一个华为云账号,并下载mesher下载2,zipkin下载 3, local-service-center 下载 步骤:1,部署zipkin,本文不详细介绍zipkin部署,可参考zipkin。2 运行server_B及mesher_B2.1 配置microservice.yamlAPPLICATION_ID: mesher service_description: name: server_B # 服务名 version: 1.0 # 服务版本2.2 配置chassis.yaml--- cse: protocols: http: listenAddress: 192.168.0.131:30112 #监听地址,外部地址 service: registry: address: https://cse.cn-north-1.myhuaweicloud.com:443 #如为local-sc请配置为http://127.0.0.1:30100 handler: chain: Consumer: #consumer handlers Provider: incoming: tracing-provider,transport tracing: enabled: true collectorType: zipkin collectorTarget: http://localhost:9411/api/v1/spans #zipkin aderss2.3 配置auth.yamlcse: credentials: accessKey: *** # you ak secretKey: *** # you sk注:ak/sk获取请参考这里,该配置不区分consumer或provider,配置都是相同。如使用local-service-center部署,则不需要该配置2.4 配置环境变量SPECIFIC_ADDRexport SPECIFIC_ADDR=127.0.0.1:82 #用于设置mesher的后端服务地址,即server_B监听地址注:此处请根据本身服务监听地址进行修改2.5 启动mesher./mesher2.6 启动server_B请根据自己本身开发的server_B进行启动,此处需要注意的是,在启动server_B之前需要设置环境变量http_proxy或HTTP_PROXY,该环境变量设置的值为该服务的代理mesher监听地址,在以上配置中http_proxy应设置为export http_proxy=http://192.168.0.131:301123 运行server_A及mesher_A3.1 配置microservice.yamlAPPLICATION_ID: mesher service_description: name: server_A # 服务名 version: 1.0 # 服务版本3.2 配置chassis.yaml--- cse: protocols: http: listenAddress: 192.168.0.131:30111 #监听地址,外部地址 service: registry: address: https://cse.cn-north-1.myhuaweicloud.com:443 #如为local-sc请配置为http://127.0.0.1:30100 handler: chain: Consumer: outgoing: loadbalance,tracing-consumer,transport Provider: incoming: tracing-provider,transport tracing: enabled: true collectorType: zipkin collectorTarget: http://localhost:9411/api/v1/spans #zipkin aderss3.3 配置auth.yaml 请参考 2.33.4 配置环境变量SPECIFIC_ADDRexport SPECIFIC_ADDR=127.0.0.1:81 #用于设置mesher的后端服务地址,即server_A监听地址3.5 启动mesher./mesher3.6 启动server_A此处和启动server_B之前一样,同样需要设置环境变量http_proxy或HTTP_PROXY,详细参考 2.6.4 运行client及mesher_client4.1 配置microservice.yamlAPPLICATION_ID: mesher service_description: name: client # 服务名 version: 1.0 # 服务版本4.2配置chassis.yaml--- cse: protocols: http: listenAddress: 192.168.0.131:30111 #监听地址,外部地址 service: registry: address: https://cse.cn-north-1.myhuaweicloud.com:443 #如为local-sc请配置为http://127.0.0.1:30100 handler: chain: Consumer: outgoing: loadbalance,tracing-consumer,transport tracing: enabled: true collectorType: zipkin collectorTarget: http://localhost:9411/api/v1/spans #zipkin aderss4.3 配置auth.yaml 请参考 2.34.4启动mesher./mesher4.5 启动client 此处和启动server一样,同样需要设置环境变量http_proxy或HTTP_PROXY,详细参考 2.6.5 访问在所有服务以及代理mesher全部启动完成之后,即可正常访问。此处的访问不同于我们以往通过ip+port访问,此处我们可以直接通过服务名(microservice.yaml中的name配置项)。如:server_A和server_B都是向外提供 /hello 接口,此时client 可以通过 http://server_A/hello 对server_A进行访问,server_A可以通过 http://server_B/hello 对server_B进行访问注意:此时的server_A既作为provider又作为consumer,为保证链路的不断,client端发往server_A请求中的header,同时需要将其放在server_A发往server_B的请求中,此部分需要在业务代码中完成5.1 调用成功之后,访问 http://localhost:9411/zipkin/ 并进入调用链详细界面可以看到一下界面上图所示为一个完整调用链
-
黄区是可以访问github的,那上面有很多优秀的开源项目。但是黄区不允许直接git到本地只能直接下载压缩包。那些可以直接下包的都是有专用代理的。希望有什么技术手段能够安全,方便的把通过git工具直接将代码下载下来。(主要是一些开源项目有一些三方库也挂在github上,压缩包无能快速编译这部分。)只是建议安全第一,安全第一
-
11月22日,"知者创物——全球互联网技术大会GITC2018北京站"在北京国家会议中心盛大召开,大会共有1个主会场涵盖无人驾驶、人工智能、区块链、AR&VR、智慧城市、全球化、智能制造、技术论坛等8大主题以及大数据应用、网络安全、基础架构、质量测试、前端技术、运维等十余个分会场,同时还有闭门垂直峰会和领袖峰会。在主会场方面,"华为云EI 智能体,行业升级新引擎"的演讲引起与会嘉宾的强烈反响;分会场方面,华为AI Fabric与华为云视频服务全景等议题也大受追捧。同时,华为云视频服务的高清低码技术和短视频服务系列应用产品也在会上进行了展出。华为云中国区CTO 彭柯,来自全球160位的互联网演讲嘉宾以及其他互联网人士出席了大会。全球互联网技术大会GITC2018北京站现场盛况华为云EI智能体,行业升级新引擎华为云EI(企业智能)服务基于华为最新AI芯片实现能力升级,经过不断发展迎来华为云EI城市智能体的问世。华为云中国区CTO彭柯在大会主会场作了"华为云EI 智能体,行业升级新引擎"的主题演讲,其绘声绘色的演讲多次博得阵阵掌声,他指出,华为云EI企业智能自问世以来,已经经过华为云在城市、制造、物流、互联网等8大行业的超过200个项目进行探索,基于华为最新发布的Ascend 310及910AI芯片,华为云EI从"芯"出发,终于以全栈全场景服务强力升级。华为云EI正致力于助力产业升级,针对海量重复场景、专家经验场景及多域协同场景,实现效率提升、专业传承和突破极限。华为AI芯片大大提升了算力,这也标志着华为云将全面进入AI新时代。华为云EI城市智能体希望与更多伙伴同行,共同创造城市的美好未来。华为云EI智能体希望能更好地结合行业智慧,成为行业升级新引擎,最终实现'用得起、用得好、用得放心'的普惠AI。"华为云中国区CTO彭柯在大会主会场发表演讲AI新时代,智享未来新体验在大会华为分会场,华为AI Fabric与华为云视频服务全景等议题大放异彩。数据中心交换机产品总监邓一鸥作了"华为AI Fabric,引领数据中心进入极速无损的高性能时代"的演讲,他指出,AI正在以前所未有的速度深刻改变人类社会生活,改变世界。越来越多的企业将AI视为数字化转型的下一站,利用AI助力决策、重塑商业模式与生态系统、重建客户体验的能力将是数字化转型计划取得成功的关键推动力。与云计算时代相比,AI时代企业DC的使命正在从聚焦业务快速发放向聚焦数据高效处理进行转变。伴随着AI的热潮,深度学习服务器集群涌现,以及各种SSD等高性能新型存储介质的发展,对端到端通信时延提出了更高的要求,华为AI Fabric解决方案始终致力于无损网络研究,为AI时代数据存储和处理提升效率提供端到端的解决方案。数据中心交换机产品总监邓一鸥在演讲中如今,视频已成为各行业基础能力,多业务、全接入场景成为方案的核心,在这一领域,华为云视频服务高级营销经理孙浩在会上作了"智能视界,乐享未来---解码华为云视频服务全景"的演讲,他指出,在视频编码器测评领域享有盛誉的MSU(Moscow State University,莫斯科国立大学)视频编码器大赛中,华为自主研发的HW265软件编码器在结构相似度(SSIM)及多方法评估融合(VMAF)评价指标均获得第一名的好成绩。华为实时转码支持H.265高清低码,极致压缩,画质更清晰,使得客户的出流带宽成本进一步降低。画质重生,让你尽享视觉盛宴。华为云视频服务专家在大会作主题演讲华为云游戏文娱项目群总经理聂颂在"创新要素的改变,现在与未来"的主题演讲中指出,多年持续投入,华为成为全球领先的ICT解决方案供应商。强力投资核心技术,依托"云+联接",提供稳定可靠、安全可信、可持续演进的云服务,打造智能世界的"黑土地",成为客户面向未来发展的发动机和永远的伙伴。基于华为云,我们提供游戏开发测试、游戏部署、游戏运营、游戏创新全场景覆盖的游戏解决方案。华为云游戏文娱项目群专家AI时代的企业智能,华为云EI为互联网行业赋能。华为云EI产品部解决方案架构师翁哲宇在题为"AI时代的企业智能"的演讲中提到,人工智能正在推动影响国计民生的制造业、物流业、金融业、家电业、媒体娱乐业等产业智能化升级,华为全栈全场景AI解决方案打造客户用得起,用得好,用得放心的普惠AI平台。华为云EI产品部专家在演讲中创新合作,从芯开始华为平台聚集了许多合作伙伴,英特尔就是一位和华为经过了20多年的合作的老朋友,Intel资深技术顾问卢玉峰在演讲中指出,从最开始的网络侧计算,到现在的NFV、AI和云计算,英特尔与华为的合作越来越广,也越来越深入,英特尔与华为20+年核心业务合作历程覆盖全球。我们相信,在华为公有云上,从芯片开始的等多项创新合作将有助于打造一朵与众不同的华为云。Intel资深技术顾问卢玉峰映客直播高级技术总监陈雪峰在演讲中提到了人工智能在直播推荐中的应用,包括通过人工智能对用户外表/风格画像及直播场景识别,对行为理解的处理等能力,促进直播产业的发展。映客直播高级技术总监陈雪峰成果展示,出彩夺目在四层大会展示区展示了华为云视频服务的高清低码技术和短视频服务,华为云视频服务,为您提供从视频采集、上传、 转码、存储、分发到播放的一站式服务,依托华为云,致力打造简单、高效、智能、可信的视频服务平台,帮助行业伙伴更好的开展视频转码、视频点播、视频直播、视频AI等业务。华为云视频服务的高清低码技术,可将高清视频以极低带宽占用实现流畅、清晰、稳定传输,同等视频质量下码率下降20%~30%,在提升用户视频体验同时,极大降低带宽成本。华为云视频服务还提供集短视频录制、上传、转码、存储、分发、播放于一体的一站式短视频端到端解决方案,开放了丰富多样的API、SDK,帮助开发者快速构建优秀短视频应用。拍摄、剪辑、混音,实时美颜、滤镜和酷炫粒子特效,自定义皮肤、AI贴纸,人脸手势识别炫酷玩法,轻松嵌入,分分钟搞定。大会展示区的应用展示GITC 全球互联网技术大会·北京站,着眼2018互联网领域的最新技术成果,聚焦未来行业发展趋势。未来,华为将继续发挥自身在人工智能、智慧城市、智能制造、技术论坛等领域优势,助力每一位合作伙伴拨开迷雾,乘风破浪。视频直播服务(Live)依托华为云,凭借在视频业务领域长期技术积累,快速敏捷为行业提供高并发、低延迟、高清流畅、安全可靠的端到端直播解决方案。计划于2018/12/01 00:00:00将视频直播服务(Live)正式转商用。如需继续使用视频直播服务,请您提前确保账户余额充足。另若公测期间您使用体验域名测试的,请您及时申请域名并完成备案。华为云在此提醒您,相关资源如果不再使用,请于2018/12/01 00:00:00前登陆控制台,删除对应资源,避免产生费用。详情点击官网查看更多信息,请您点击了解。
-
如题在【故事】或者【任务】上建立分支比较好实现对将要实现的新功能的管理然而现在的开发云似乎做不到我希望的效果是,在【故事】或者【任务】列表的对应的行上鼠标右键,会弹出一个菜单,菜单中有一个选项是【新建分支】,然后点击【新建分支】就可以在代码库中按照工作项的编号建立分支,具体细节参考tfs
-
炒得沸沸扬扬的微软 Github 收购事件于昨天(06月04日)尘埃落定,微软最终以 75 亿美元正式收购 Github。随后,Gitlab 趁势带了一波节奏,在其官网上祝贺 Github 被微软收购,并表示此次收购代表着软件开发者的影响力的日渐增长,将软件开发的下一个发展看成是每个人都可以贡献的世界。[indent]原文https://about.gitlab.com/2018/06/03/microsoft-acquires-github/[/indent]微软公司的实力不用说,操作系统、办公套件几乎被微软垄断,你没见过国内用 Linux 系统上班的吧,Mac 也只是小众,太贵,也并不是所有普通人能用得起的。有网友称这是一桩最滑稽的收购案,世界上最大的闭源公司收购了世界上最大的开源公司。这 10 年来,Github 并未盈利,其主要盈利来源也只是其私有的个人仓库(7美元/月)及一些企业化的功能,大部分人都是免费使用其公有仓库来托管代码的。我就是公有仓库的受益者,不是我不付费,而免费的替换者实在太多了,Gitlab 还有国内的码云等都是免费支持私有仓库的。所以 Github 卖身微软也说得过去,比起上市,被巨头收购可能更适合 Github 的后续发展。毕竟微软也作为曾经的龙头企业,一直以来也是采用 Git 协议,自身也有许项目需要用到代码托管,目前就已有超过 1000 个微软开发人员在 Github 上贡献代码,已是 Github 的最大贡献者。微软购买 Github 后,可能会有很多开发人员弃坑,而选择其他的代码托管平台。为什么呢?微软在开源上已经是十分保守的,而且有着许多大公司都有的大公司病,后续如何善待 Github 还真不好说,让我们静静期待在微软统领下的 Github 的更多的变化吧。总之,恭喜微软喜当爹,也恭喜 Github 嫁入豪门~~~~~
-
点击下载PPT完整版《华为云DevCloud大咖分享汇总(附PPT下载)》
-
本帖最后由 码小玩 于 2017-10-9 11:51 编辑 [color=rgb(51,51,51)]我写Python已经有一段时间了,当我回顾起一些较老的代码时,我有时会感到一些畏缩。例如,当我刚开始编程的时候,我用python编写了这个Sudoku 游戏(在GitHub上可以获得)。我当时认为这是我最好的作品之一。事实证明,我甚至不能克隆并运行它,因为我没有添加一个setup.py或 requirements.txt文件,这是我今天绝不会犯的错误![color=rgb(51,51,51)] [color=rgb(51,51,51)]这让我反思了多年来Python代码的质量是如何变化的。它确实变得更干净,更健壮,更易于阅读。但是是什么使它成为这样的呢?[color=rgb(51,51,51)] [color=rgb(51,51,51)]在这篇文章中,我将探讨一下对于编写python代码方式所做的一些改变——不管是大的还是小的。我这样做是希望能够帮助你提高Python代码的质量。其中一些技术甚至可能适用于其他语言和技术。 1.让你的代码成为可PIP安装(PIP-installable)包 [color=rgb(51,51,51)] [color=rgb(51,51,51)]当你拿到一个新的Python包时,开始使用它还是比较容易的,你所做的只需输入“pip install”,加上包名或者路径,然后运行它。[color=rgb(51,51,51)] [color=rgb(51,51,51)]有很多种方法来完成这项工作,我的方法是为我的项目创建一个setup.py文件。[color=rgb(51,51,51)] [color=rgb(51,51,51)]假定在 “flask_example.py”中有一个简单的Flask程序: from flask import Flask[color=rgb(51,51,51)]app = Flask(__name__) [color=rgb(51,51,51)]@app.route(´/´) [color=rgb(51,51,51)]def hello_world(): [color=rgb(51,51,51)] return ´Hello, World!´ [color=rgb(51,51,51)]def main(): [color=rgb(51,51,51)] app.run() [color=rgb(51,51,51)]if __name__ == ‘__main__’: [color=rgb(51,51,51)] main() [color=rgb(51,51,51)] [color=rgb(51,51,51)]我们可以将其转换为可安装的Python包,首先将其移动到一个单独的文件夹中(我们将其称为“flask_example/”。然后,我们可以在根项目文件夹中创建setup.py文件,该文件看起来是这样的: from distutils.core import setup [color=rgb(51,51,51)]setup( [color=rgb(51,51,51)] name=´flask_example´, [color=rgb(51,51,51)] version=´1.0´, [color=rgb(51,51,51)] description=´Hello, World! in flask.´, [color=rgb(51,51,51)] packages=[´flask_example´], [color=rgb(51,51,51)] install_requires=[ [color=rgb(51,51,51)] ´Flask==0.12.2´ [color=rgb(51,51,51)] ], [color=rgb(51,51,51)] entry_points = { [color=rgb(51,51,51)] ´console_scripts´: ´runserver=flask_example.flask_example:main´ [color=rgb(51,51,51)] } [color=rgb(51,51,51)]) [color=rgb(51,51,51)] [color=rgb(51,51,51)]这样做有一些优点。首先,你现在可以使用“pip install -e .”本地安装你的应用。这使得开发人员可以更容易地克隆和安装你的项目。因为setup.py文件将处理所有繁重的工作。[color=rgb(51,51,51)] [color=rgb(51,51,51)]其次,setup.py还可以处理依赖管理工作。install_requires变量允许你定义使用的包和特定的版本。如果你不确定所使用的包和版本,你可以运行“pip freeze”来查看这些信息。[color=rgb(51,51,51)] [color=rgb(51,51,51)]最后,这样还允许你为你的包定义入口,这只需在命令行上输入“runserver”来执行代码。 2.在预提交(Pre-Commit )钩子上整理(Lint)代码 [color=rgb(51,51,51)] [color=rgb(51,51,51)]使用linter可以在代码中解决很多问题。PyLint是Python的一个很好的linter,如果你使用像Git这样的版本控制系统,那么你可以在提交代码前,让Git通过一个linter运行你的代码。[color=rgb(51,51,51)] [color=rgb(51,51,51)]要做到这一点,需要安装PyLint包。 pip install pylint [color=rgb(51,51,51)] [color=rgb(51,51,51)]然后,将以下代码添加到.git/hooks/pre-commit中。如果你已经有了一个预提交钩子,那么简单地将pylint命令附加到文件的末尾。 #!/bin/sh pylint [color=rgb(51,51,51)] [color=rgb(51,51,51)]这可以在提交到Git库前就捕捉所有类型的错误。你可以对代码中的语法错误以及其他的一个良好的linter 可以捕捉到的错误说再见了, 3.使用绝对导入还是相对导入 [color=rgb(51,51,51)][color=rgb(51,51,51)]在python中,导入命令语句中(如 from . import module_name)很少使用相对模块路径。如果你已经经历了为你的项目创建setup.py文件(或者类似的机制)的过程, 你可以简单地通过它们的完整模块路径来引用子模块。[color=rgb(51,51,51)] [color=rgb(51,51,51)]在Python 风格指南PEP-8中推荐使用绝对导入。这是因为在它们的名字里包含了更多的信息,而且根据 Python Softwa的说法,这样也有“更好的表现”。[color=rgb(51,51,51)]我深有体会的是使用相对导入很快会成为一场噩梦。当你开始编程的时候,万事皆好,但是,一旦你可以移动模块或者进行重大重构的时候,这会让你感到头疼了。 4.上下文管理器 [color=rgb(51,51,51)] [color=rgb(51,51,51)]无论你何时打开一个文件、流或者是连接器的时候,你都会和上下文管理器打交道。上下文管理器的重要性在于:如果使用恰当,它们可以处理诸如关闭文件时抛出异常这样的问题。为了做到这一点,只需使用关键字。 [color=rgb(51,51,51)] [color=rgb(51,51,51)]下面是大多数Python初级程序员可能写入文件的语句。 f = open(‘newfile.txt’, ‘w’) f.write(‘Hello, World!’) f.close() [color=rgb(51,51,51)] [color=rgb(51,51,51)]这相当简单,但是想象一下如下场景:你正在将成千上万行代码写入一个文件。在某个时候,出现了一个异常。因为异常的产生,你的文件没有正确地关闭,那些所有的你认为已经正确写入文件的数据都损坏或丢失了。[color=rgb(51,51,51)] [color=rgb(51,51,51)]不过,不要担心,通过一些简单的重构,我们可以确保文件正确地关闭,即使遇到异常。我们可以这样做,如下所示。with open(‘file’, ‘w’) as file: file.write(‘Hello, World!’) [color=rgb(51,51,51)] [color=rgb(51,51,51)]太棒了!真的很简单。此外,代码看起来更清爽,而且更简洁。你还可以使用单个“with”语句打开多个上下文管理器,从而消除了嵌套“with”语句的需要。with open(‘file1’, ‘w’) as f1, open(‘file2’, ‘w’) as f2: f1.write(‘Hello’) f2.write(‘World’) [color=rgb(51,51,51)]5[color=rgb(51,51,51)].使用良好命名(Well-Named)的函数和变量[color=rgb(51,51,51)] [color=rgb(51,51,51)]在Python,尤其是非强类型语言中,很容易不清楚什么样的函数要返回什么值。特别是当你只是某个库中一些函数的使用者时。如果你可以为开发人员节省在文档中查找函数的5分钟时间,这实际上是一个非常有价值的改进。但是我们该怎么做呢?如何做一些简单的如更改变量名字这样事情,来节省开发时间?[color=rgb(51,51,51)] [color=rgb(51,51,51)]在命名函数或变量时,我喜欢考虑三件主要的事情: [*]函数和变量要做什么 [*]任何与函数或变量相关的单元 [*]函数或变量的数据类型 [color=rgb(51,51,51)] [color=rgb(51,51,51)]例如,如果我想创建一个函数来计算矩形的面积,我可能会将其命名为“calc_rect_area”。但是这不会让用户了解更多的信息。它会返回这个值?或者它会存储在什么位置?这个值单位是英尺还是米?[color=rgb(51,51,51)] [color=rgb(51,51,51)]为了提高这个函数的名字,我会把其改为 “get_rect_area_sq_ft”。这就让用户清楚的了解函数的功能和返回值。也让用户明白面积的单位是平方英尺。[color=rgb(51,51,51)]如果你可以通过给函数和变量恰当的命名来给开发人员处处节约时间,不仅提高了开发效率,也使他们更乐意使用你的代码。 结论 [color=rgb(51,51,51)] [color=rgb(51,51,51)]在作为Python程序员的这些年里,我发现这些技巧还是很有帮助的。有些是我自己摸索出来的,有些是别人教我的。我希望这个列表能够帮助您编写更好的Python代码。 [color=rgb(51,51,51)]原文:[color=rgb(51,122,183)]5 Tips for Writing Better Python 作者: [color=rgb(51,122,183)]Michael Washburn Jr. 翻译:夜风轻扬
-
本帖最后由 DevCloud 于 2017-9-23 14:41 编辑2261 大咖来了!华为专家、《Git权威指南》作者蒋鑫亲自授课, 9月28日与你相约华为软件开发云直播间,畅聊Git秘术, 揭秘华为Git解决方案! 报名听课入口:https://m.qlchat.com/topic/840000204169950.htm?pro_cl=1 参与直播三重大礼: 1、优质提问嘉宾抽取三位送出《凤凰项目》一本 2、转发海报到朋友圈集赞20个,截图私信@社群助手,获得DevCloud定制鼠标垫1个 3、华为软件开发云新用户1000元无门槛代金券
-
使用华为云对象存储服务存储Git仓库 1 预置条件 已有Git 服务器,并且支持通过仓库配置仓库地址。 2 使用步骤 1. Git服务器安装S3FS apt-get install s3fs 2. 创建桶 http://support.hwclouds.com/qs-obs/zh-cn_topic_0045829030.html 3. 修改git 配置为一个不存在的目录,并重启服务。 root@ubuntu:~# cat /etc/gitlab/gitlab.rb |grep git_data_dirs git_data_dirs({ "default" => { "path" => "/mnt/git-data1", ´gitaly_address´ => ´unix:/var/opt/gitlab/gitaly/gitaly.socket´ } }) root@ubuntu:~# gitlab-ctl stop root@ubuntu:~# gitlab-ctl reconfigure 提示:挂在前不要迁移数据,否则s3fs 无法同步 root@ubuntu:~# gitlab-ctl start 查看新目录的权限 root@ubuntu:/mnt# ls /mnt -al | grep git-data1 drwx------ 3 git root 4096 Se 4. 挂载桶到指定目录,并赋予git 用户权限: 将有已有的AK、SK密钥文件,并修改权限为600,例如: root@ubuntu:~# vim etcpassword-s3fs(input AKSK) root@ubuntu:~# chmod 600 etcpass root@ubuntu:~# cat /etc/password-s3fs 查询git 用户的用户ID: root@ubuntu:~# cat /etc/passwd | grep git gitlab:x:1000:1000:gitlab,,,:/home/gitlab:/bin/bash gitlab-www:x:999:999::/var/opt/gitlab/nginx:/bin/false git:x: 998:998::/var/opt/gitlab:/bin/sh 指定域名将桶挂载到指定目录: root@ubuntu:s3fs dfv01 /mnt/git-data1 -o url=http://www.hwclouds.com/ -o passwd_file=/etc/password-s3fs -o connect_timeout=20 -o default_acl=public-read-write -o nonempty -o -d -o rw,allow_other,uid=998,gid=998 确保挂载有效,目录可以访问 root@ubuntu:/mnt/git-data1# ll total 12 drwx------ 3 git root 4096 Sep 4 23:20 ./ drwxrwxrwx 5 root root 4096 Sep 5 01:56 ../ drwxrws--- 5 git root 4096 Sep 5 02:34 reposit 5. 迁移已有工程目录到新的仓库: root@ubuntu:~# sudo rsync -av /var/opt/gitlab/git-data/repositories /mnt/git-data1/ 6. 重启数据库,如果configure 数据库失败,需要先umount root@ubuntu:~#gitlab-ctl stop root@ubuntu:~#gitlab-ctl reconfigure 7. 清除缓存,否则会找不到历史数据: root@ubuntu:~# redis-cli 127.0.0.1:6379> flushall OK root@ubuntu:~#gitlab-ctl start 3 常见问题 1. 挂载目录不能访问 原因1: 域名不通 原因2: 不具备Https 证书 原因3: 密钥文件内容或权限不正确 2. 访问历史工程返回404 原因1:检查步骤7中是否清除缓存 3. 创建新工程返回500 原因1:检查挂载后的目录对git 用户是否有访问权限 原因2:检查挂载目录是否可以访问
-
本帖最后由 DevCloud 于 2017-9-22 14:43 编辑
-
今日,GitHub 宣布与 Facebook 合作推出了 Atom-IDE —— 它包括一系列将类 IDE 功能带到 Atom 的可选工具包。初次发布的版本包括更智能、感知上下文的自动补全;导航功能,如大纲视图和 goto-definition,以及其他有用的功能;还包括错误、警告提醒和格式化文档功能。查看 Atom 博客以了解更多。Atom-IDE 包括适用于 C#, Flow, Java, JavaScript, PHP, 和 TypeScript 语言的软件包,它们通过使用语言服务器的强大功能为你的代码和项目提供深度的语法分析。在社区的支持下,GitHub 还计划要扩展 Atom-IDE 可支持的语言数量,并可以运行和编辑应用程序,使用 Atom-IDE 成为一个真正的 IDE。
人生苦短,我用Python
发表于2017-09-14 23:08:21
2017-09-14 23:08:21
最后回复
人生苦短,我用Python
2017-09-14 23:08:40
4653 1 -
Git是一个分布式的版本控制系统。Git的崛起,SVN PK Git,开发者如何选择?以DevCloud为例,如何从SVN向Git迁移?怎样提交才算是好提交?通过本贴中的视频和文章,让华为软件开发云的专家告诉你:一、华为软件开发云Git相关原创文章1、文章标题:如何选择版本控制系统 ---为什么选择Git版本控制系统文章地址:https://bbs.huaweicloud.com/blogs/1126402、文章标题:如何选择版本控制系统之二---Git的研发应用场景文章地址:https://bbs.huaweicloud.com/blogs/1084613、文章标题:如何选择版本控制系统之三---代码托管操作文章地址:https://bbs.huaweicloud.com/blogs/1094244、文章标题:如何更换git托管文章地址:https://bbs.huaweicloud.com/blogs/1026775、文章标题:从SVN到Git最强指南文章地址:https://bbs.huaweicloud.com/blogs/1127856、文章标题:如何使用egit将本地代码提交到托管平台文章地址:https://bbs.huaweicloud.com/blogs/1118337、文章标题:TortoiseGit使用指导文章地址:https://bbs.huaweicloud.com/blogs/1091008、文章标题:华为如何实现基于Git的跨地域协同开发文章地址:https://bbs.huaweicloud.com/blogs/113656二、华为软件开发云Git相关原创视频1、视频标题:如何从SVN迁移到Git视频地址:https://bbs.huaweicloud.com/videos/100743
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签