Runner

Flutter

孤街醉人 提交于 2020-04-15 09:09:32
【推荐阅读】微服务还能火多久?>>> Flutter之Dart语言 Mac VSCode 配置Dart 学习Dart过程中、使用VSCode作为编辑器 一方面编写代码非常方便、而且界面风格我也很喜欢 另一方面我可以快速在终端看到我编写代码的效果 使用VSCode编写Dart需要安装Dart插件: Dart 和 Flutter插件是为了Flutter开发准备的 Code Runner可以点击右上角的按钮让我快速运行代码 Hello World 在VSCode中新建一个helloWorld.dart文件、添加下面的内容 main(List<String> args) { print( ' hello world dart ' ); } run code或者右上角的运行按钮(当你安装了Code Runner插件就有了) 报错: Dart_LoadScriptFromKernel: The binary program does not contain 'main'. 解决:   先保存(command+s)代码、 再运行就OK tips:遇到的问题 用flutter开发项目,flutter环境都配置好了。需要学习dart语言,用VSCode跑dart时输出报错: bin /sh: dart: command not found 原因: 如果只是开发移动端的项目不需要单独安装dart

掌握使用gitlab ci构建Android包的正确方式

喜你入骨 提交于 2020-04-13 18:23:55
【今日推荐】:为什么一到面试就懵逼!>>> 掌握使用gitlab ci构建Android包的正确方式 最近公司在做移动端的项目,自然而然的需要搭建打包的环境。本来计划用Jenkins的,但是发现在gitlab上创建完项目后,提示去配置pipeline,于是决定用gitlab去尝试下,毕竟我觉得Jenkins的配置过于复杂了。 gitlab-runner 在gitlab中,gitlab-runner相当于Jenkins中的slave的概念,所以首先需要给项目配置一个runner。gitlab-runner分为三种:Shared Runner、Group Runner、Specific Runner。其中: Shared Runner相当于全局的runner,所有的项目都可以使用。 Group Runner相当于给一个分组设置runner,因此,分组中所有的项目都可以使用。 Specific Runner顾名思义,就是项目特有的runner。只有这一个项目才能使用。 个人建议使用Group Runner,你可以根据不同种类的项目,创建不同的分组,比如:Android、IOS、服务端等,然后针对每个分组创建对应的Group Runner,这样相互之间不会有影响,同时又不需要为每个工程单独创建runner。 安装gitlab-runner 需要在你的打包机器上安装gitlab-runner

CoreCRM 开发实录——Travis-CI 实现 .NET Core 程度在 macOS 上的构建和测试 [无水干货]

强颜欢笑 提交于 2020-04-13 11:31:14
【今日推荐】:为什么一到面试就懵逼!>>> 上一篇文章我提到:为了使用“国货”,我把 Linux 上的构建和测试委托给了 DaoCloud,而 Travis-CI 不能放着不用啊。还好,这货支持 macOS 系统。所以就把 CoreCRM 在 macOS 上的构建和测试任务交给它了。 我想国内已经有很多写怎么用 Travis-CI 的博客文章了,我就不需要在这里多费话了。当然,最好的文章其实就是 Travis-CI 的文档;最好的帮助都在 StackOverflow 和 GitHub 上。如果还觉得自己英语不够用,看不懂这些站的话,我觉得只有两条路可以选:1. 学好英语;2. 放弃做程序员。 这里我要记录的是,使用 Travis-CI 构建 CoreCRM 时遇到的两个问题。在我解决这两个问题的过程中,我发现在这是两个非常普遍的问题,基本上在现在的 .NET Core 版本下 (Microsoft.NETCore.App 1.1.0),是两个肯定会遇到的问题。我在综合了好多的 GitHub issue 之后,用了 10 个 commit 才把这两个问题解决了。 1. OpenSSL 没有安装 首先遇到的问题是,在执行 dotnet restore 的时候,出现下面的异常: Unhandled Exception: System.TypeInitializationException

GitLab+Docker搭建CI/CD自动化部署

核能气质少年 提交于 2020-04-11 16:29:43
1.使用场景 CICD,顾名思义就是持续集成(Continuous Integration)和持续部署(Continuous Deployment)简称,指在开发过程中自动执行一系列脚本来减低开发引入 bug 的概率,在新代码从开发到部署的过程中,尽量减少人工的介入。 以前的老技术,比如git/svn+jenkins这种,jenkins的配置多数还是依赖于负责维护CI的人,很多人不熟悉jenkins怎么配置,每一个步骤应该怎么编译和测试,一般都由CI的人来定义。 而CICD,其实可以使用jenkinsfile,就象gitlab的 .gitlab-ci.yaml文件,把CICD的流程控制和步骤也作为开发的一部分,由开发去维护。并且可以很快的部署到多个环境。 持续集成 持续集成指在和向远程仓库 push 代码后,在这次提交合并入主分支前进行一系列测试,构建等流程。假设现在有个应用的代码存储在 gitlab 上,每天开发者都 push 很多次提交,针对每次 push,你可以创建一系列脚本进行自动测试,降低往应用里引入错误的概率。这就是持续集成,它可应用在包括开发分支在内的多个分支上。 持续部署 持续部署在持续集成的基础上更进一步,指将推送指仓库默认分支的部署至产品环境。如果这部分需要手动触发,这就是一个持续交付(Continuous Delivery)环节。 安装环境 Gitlab

从零打造企业内部Ansible自动化管理平台-第一章(Api)

旧城冷巷雨未停 提交于 2020-04-07 07:25:10
从零打造企业内部Ansible自动化管理平台-第一章 一. 背景; 随着中下企业技术的快速技术迭代,以及微服务分布式架构的普及,传统运维系统运维环境治理方面,系统初始化,环境部署,环境一致性困难较大. 由此 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点, 实现了批量系统配置、批量程序部署、环境快速部署迭代,批量运行命令等功能。 Ansible 工作原理和关联模块介绍: ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括: (1)、连接插件connection plugins:负责和被监控端实现通信; (2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机; (3)、各种模块核心模块、command模块、自定义模块; (4)、借助于插件完成记录日志邮件等功能; (5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。 二. 本章概述: 本文主要描述ansible 2.7.2 版本官方python 3 版本Api 封装, (内容:Ansible 数据结构返回,host inventory动态主机,playbook 执行返回) 三

IDEA 编译运行 Spring Boot 2.0 源码

寵の児 提交于 2020-03-27 11:44:24
3 月,跳不动了?>>> 下载代码切换分支 首先到 GitHub 上 clone 下 Spring Boot 的代码: git clone https://github.com/spring-projects/spring-boot.git 由于 Spring Boot 的发布版本代码都在 tag 上,所以需要使用 git tag 命令查看所有的 tag : git tag 然后切换到名为 v2.0.0.RELEASE 的 tag 上: git checkout -b v2.0.0.RELEASE v2.0.0.RELEASE 这样,代码就被保存到本地分支 v2.0.0.RELEASE 上了。 源码编译 Spring Boot 官方建议使用 ./mvnw clean install 或者标准的 mvn clean install 命令来编译源代码,如果要使用标准的 mvn 命令的话, Maven 的版本要求在 3.5.0 或以上。导入 IDEA 源码视图如下: 接着切换到 spring-boot 根目录下,执行如下命令,我这里使用的 Maven 版本是 3.5.4 : mvn -Dmaven.test.skip=true clean install 以上命令对 Spring Boot 源码打包并安装到本地 maven 仓库,在打包过程中会忽略测试,因为运行单元测试时间特别长

Future、Callable和FutureTask

你离开我真会死。 提交于 2020-03-17 11:56:28
某厂面试归来,发现自己落伍了!>>> 一、为什么使用Future jdk提供了Thread和Runnale支持多线程,但是这两种方式执行完任务之后都没有办法获取到执行结果。 jdk1.5之后提供了Future和Callable来解决这个问题,Future方式提供了异步获取执行结果的方式,避免开启任务之后阻塞等待返回结果,而是开启任务之后可以干其他事情异步获取结果。 二、FutureTask FutureTask实现了RunnableFuture接口,而RunnableFuture接口继承了Runnable和Future接口,所以FutureTask可以作为Runnable被线程执行,也可以通过Callable异步获取任务执行结果。 三、FutureTask源码分析 1.构造方法 public FutureTask(Callable<V> callable) { if (callable == null) throw new NullPointerException(); this.callable = callable; this.state = NEW; // ensure visibility of callable } public FutureTask(Runnable runnable, V result) { this.callable = Executors

golang 并发模式笔记

微笑、不失礼 提交于 2020-03-11 12:24:29
golang并发 1. worker Pool 启动一个工作池,启动maxRoutines个routine,轮询works,满时阻塞任务添加 1.1 接口 type Worker interface{ Task() } // 实现自定义Worker type WorkPool interface { Run(w Worker) Shutdown() } // Run 向Worker添加任务 // Shutdown 终止任务 type WorkerConstruction func(maxRoutines int) *WorkPool // 构造WorkPool type WorkPool struct { works chan Worker wg sync.WaitGroup } // works 向Worker添加任务 // wg 控制任务调度 1.2 实现 func NewWorkPool(maxRoutines int) *WorkPool{ wp := &WorkPool{ works:make(chan Worker), } wp.wg.Add(maxRoutines) for i:=0;i!=maxRoutines;i++{ // 启动N个routine, 每一个都range works,chan会确保这没有冲突 go func(){ for w := range wp

使用Github Actions创建CI/CD工作流

馋奶兔 提交于 2020-03-05 23:10:32
这个文章以一个简单的Nodejs应用为例,示例如何使用 Github Actions 来自动构建,测试和部署一个应用. <!-- more --> 什么是Github Actions 首先简单介绍下什么是Github Actions? Github Actions是Github官方提供的一个与Github集成在一起的CI/CD工具,使用Github Actions可以非常容易地自动化你的所有软件工作流程,包括持续集成(CI)和持续发布(CD). 不过要使用Github Actions,你需要将你的项目代码库放在Github上,然后为代码库配置相应的工作流(Workflows).   Actions Runner 使用Github Actions来执行工作流任务,还需要一个可执行的环境,Actions Runner就是提供这样的环境,Github Actions支持两种类型的Runner: Github-Hosted Runner : 由Github官方提供和维护的Runner服务器,不需要用户自己维护和更新,有支持Linnux,Windows,macOS环境的构建 Self-Hosted Runner : 用户自己使用本地机器,云服务器安装Actions应用,用户可以自定义硬件,软件等需求 Actions 在Github Actions中有一个Action的概念

Golang + vscode 开发环境配置

狂风中的少年 提交于 2020-03-02 07:23:50
GOPATH 环境变量的配置 https://my.oschina.net/xinxingegeya/blog/718305 安装vscode go 扩展 下载vscode ,安装go的扩展https://github.com/Microsoft/vscode-go 该扩展对 Golang 支持非常丰富的功能: 代码格式化 保存时代码自动格式化 自动添加 Imports 代码错误提示 引用查询与跳转到定义位置 Go 代码元素搜索 文档查看 支持代码调试等等功能。 安装完vscode,打开.go文件时,vscode会推荐安装go的包,但是vscode中有些go的包总是提示安装fail。这是因为go get 访问的一些包被墙了,虽然开了shadowsocks,但是shadowsocks是基于socks5协议的,go get则是使用http协议进行网络访问,因此开了shadowsocks, go get 依旧不通。同时 go get命令是在命令行里执行的,要给命令行设置代理。 方法1: 在终端中直接运行命令 export http_proxy=http://proxyAddress:port 这个办法的好处是简单直接,并且影响面很小(只对当前终端有效,退出就不行了)。 如果你用的是ss代理,在当前终端运行以下命令,那么 wget curl 这类网络命令都会经过ss代理 export