最近在项目开发中,由cs开发的exe的程序,需要自动升级,该exe程序放在linux下,自动升级时检测不到该exe程序的版本号信息,但是我们客户端的exe程序需要获取服务器上新程序的版本号信息。...最后由我用java实现linux上exe文件的版本号读取功能。...java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; /** * @see 获取文件信息的工具类...15:01:26 * @version V1.0 * @since tomcat 6.0 , jdk 1.6 */ public class FileUtil { /** * @see 获取版本信息
如下案例 .tests: script: rake test stage: test only: refs: - branches rspec: extends:....tests script: rake rspec only: variables: - $RSPEC 任务rspec 继承了.tests任务,在流水线中.tests是一个隐藏的任务...被rspec继承后,相同的key会以rspec为准,rspec没有的,而.tests有的,则合并到rspec中, 合并后的结果是 rspec: script: rake rspec stage...也可以将几个流水线中相同的配置,提取出来,公用。引入的文件扩展名 必须是.yaml或者.yml两种,其他的不行。...类似 only:changes. exists 根据是否存在特定文件来追加或移除一些任务 if中可以使用CICD的所有预设变量,分支,来源,合并请求,commit,push web,schedule等。
我们可以利用include让.gitlab-ci.yml文件的结构更清晰,同时也可以把一些需要集中管理维护的job写在一个YAML文件中,放在一个公共仓库,让其他项目的CI来引入该文件。....gitlab-ci.yml在variable中定义了同一个变量,则该变量被.gitlab-ci.yml中定义的变量覆盖。...Example: .tests: script: rake test stage: test only: refs: - branches rspec: extends...: .tests script: rake rspec only: variables: - $RSPEC Result: rspec: script: rake rspec...VAR1 = hello VAR2 = world TEST_VAR = A 以上结果表明: 在.gitlab-ci.yml中执行的job,使用的环境变量是.gitlab-ci.yml文件定义的变量,
rspec: extends: .tests script: rake rspec only: variables: - $RSPEC 在上面的示例中,该rspec作业继承自...: - $RSPEC 注意: 请注意 script: rake test 已被覆盖 script: rake rspec 。...以下示例具有两个继承级别: .tests: only: - pushes .rspec: extends: .tests script: rake rspec rspec 1:...: .rspec spinach: extends: .tests script: rake spinach 在GitLab 12.0和更高版本中,还可以对使用多个父对象 extends。...已被覆盖script: ['rake rspec']。可以使用YAML锚点合并数组。 使用extends和include在一起 extends与结合使用时可跨配置文件使用include。
题目部分 如何在Oracle中写操作系统文件,如写日志? 答案部分 可以利用UTL_FILE包,但是,在此之前,要注意设置好UTL_FILE_DIR初始化参数。...image.png 其它常见问题如下表所示: 问题 答案 Oracle中哪个包可以获取环境变量的值? 可以通过DBMS_SYSTEM.GET_ENV来获取环境变量的当前生效值。...在CLIENT_INFO列中存放程序的客户端信息;MODULE列存放主程序名,如包的名称;ACTION列存放程序包中的过程名。该包不仅提供了设置这些列值的过程,还提供了返回这些列值的过程。...如何在存储过程中暂停指定时间? DBMS_LOCK包的SLEEP过程。例如:“DBMS_LOCK.SLEEP(5);”表示暂停5秒。 DBMS_OUTPUT提示缓冲区不够,怎么增加?...如何在Oracle中写操作系统文件,如写日志? 可以利用UTL_FILE包,但是,在此之前,要注意设置好UTL_FILE_DIR初始化参数。
###现有方案 有追求的程序员还是大多数,google之后才发现已经有人尝试解决这个问题,如spork,zeus。...他们的原理都是预先把rails环境启动起来,后面在运行测试,执行rake task时从这个启动好的进程fork一个进程,在这个进程中执行操作。...rvm的global gemset中去,这样就可以在多个project使用spring 安装命令非常简单: gem install spring ###使用 执行测试的命令也非常简单: spring rspec...当第一次使用spring运行测试,rake taks, db migration时,spring会自动在后台load rails 环境,因此执行速度也很慢,但是当再次执行时,spring会从先前的进程中...###已知问题 把 require 'rspec/autorun'从spec_helper中删掉,否则,spec会被执行两次,而且第二次会由于找不到url helper method而失败。
我们可以将构建配置写入到一个被检入到代码库的文件中,并且允许任务有权限访问的人修改。...db:create" sh "rake db:migrate" sh "bundle exec rspec spec" } } } } } } } ``` 这样的文件不仅难以理解,还难以修改。...db:create" sh "rake db:migrate" sh "bundle exec rspec spec" } } } } } } } ``` Groovy 语言足够灵活,能在在运行时创建声明式代码...通过 Jenkins 的共享库技术,将构建逻辑从 Jenkinsfile 中移到了 YAML 文件中。...同样的,我们可以将构建逻辑移动 JSON 文件中,或者任何格式的文件中,只你的共享库能解析它,并将它转换成 Jenkins 能理解的格式。
通常我们能够在 csproj 文件中仅仅使用相对路径就完成大多数的编译任务。但是有些外部命令的执行需要用到绝对路径,或者对此外部工具来说,相对路径具有不同的含义。...本文介绍如何在项目文件 csproj 中将一个相对路径转换为绝对路径。...在 MSBuild 4.0 中,可以在 csproj 中编写调用 PowerShell 脚本的代码,于是获取一个路径的绝对路径就非常简单: 1 [System.IO.Path]::GetFullPath...WalterlvRelativePath))) 这样,就可以使用 $(_WalterlvAbsolutePath) 属性来获取绝对路径...你可以阅读我的其他篇博客了解到 $(OutputPath) 其实最终都会是相对路径: 项目文件中的已知属性(知道了这些,就不会随便在 csproj 中写死常量啦) - walterlv 如何更精准地设置
incloud 关键字 使用 include 在 CI/CD 配置中 import 外部 YAML 文件。...include 目前支持 4 种导入模式: local:导入位于同一仓库中的文件 # example include: - local: '/templates/.gitlab-ci-template.yml...# extend example .tests: script: rake test stage: test only: refs: - branches rspec:...extends: .tests script: rake rspec only: variables: - $RSPEC before_script 与 after_script...我们可以非常方便的在 before_script 定义 Git 操作的预备逻辑,如:clone 代码、配置 email/username 等;而在 after_script 中我们会定义 Git 的 commit
写在前面 Gitlab的CI/CD[1]是通过Gitlab runner执行器实现的,它作为执行器运行我们在.gitlab-ci.yml中定义的一些逻辑行为。...此处,介绍一下通过Gitlab的template实现类似如Jenkins share library[2]的功能。...jobs .tests: script: rake test stage: test only: refs: - branches rspec: extends:....tests script: rake rspec only: variables: - $RSPEC 现在我们准备一个.git仓库作为GitLab Runner的模板仓库....gitlab-ci.yml中传递过来的变量 after_script: # 定义在每个job执行完后要执行的命令 - echo "这是在bash-pipeline.yml模板中的after_script
如果让我们用 Go 设计一个Log Facade,就需要我们自己在门面里获取调用者的函数名、文件位置了,那么在Go里面怎么实现这个功能呢?...参数skip为要上溯的栈帧数,0 表示Caller的调用者(Caller所在的调用栈),1 表示调用 Caller 调用者的调用者,以此类推。...//获取的是 CallerA函数的调用者的调用栈 pc1, file1, lineNo1, ok1 := runtime.Caller(1) } 函数的返回值为调用栈标识符、带路径的完整文件名...、该调用在文件中的行号。...获取调用者的函数名 runtime.Caller 返回值中第一个返回值是一个调用栈标识,通过它我们能拿到调用栈的函数信息 *runtime.Func,再进一步获取到调用者的函数名字,这里面会用到的函数和方法如下
前文提到他给 Ruby 做了一些的关键工具,包括了他给 Ruby 开发的 build 工具Rake。在 Weirich 离世后,Rake 已移交到 Ruby 官方。...一些开源项目是众所周知的,如 Linux 操作系统或 Google 的人工智能框架 TensorFlow。但是这些项目中都依赖于更小的开源代码库。而这些开源代码库又是基于另一个代码库。...这可能会带来很大的问题,如 2014 年在 OpenSSL 中发现了一个被称为“Heartbleed”的安全漏洞,几乎每个处理信用卡或借记卡支付过程的网站都会使用这个开放源代码程序。...在 Heartbleed 安全漏洞被发现后不久,在另一个常见的开源应用程序 Bash 中也发现了一个同样的安全问题,这使得无数的 Web 服务器和其他设备很容易受到攻击。 肯定还有更多未发现的漏洞。...Rspec-Given的代码托管在代码托管和协作站点 GitHub 上,后者目前拥有 6700 万个代码库。
进行慢慢补齐功能 因为涉及到底层框架大版本升级,由于某些 breaking changes 必定会造成之前的某些写法没办法继续使用,趁着端午节假期,在改造模板时,发现没办法通过构造函数注入的形式在 Startup 文件中注入某些我需要的服务了...,因此本篇文章主要介绍如何在 asp.net core 3.x 的 startup 文件中获取注入的服务 二、Step by Step 2.1、问题案例 这个问题的发现源于我需要改造模型验证失败时返回的错误信息...,在接收参数时,一般会将参数包装成一个 dto 对象(data transfer object - 数据传输对象),不管是提交数据,还是查询数据,对于这个 dto 中的某些属性,都会存在一定的卡控,例如...,而服务定位则是我们已经知道存在这个服务了,从容器中获取出来然后由自己手动的创建实例 虽然服务定位是一种反模式,但是在某些情况下,我们又不得不采用 这里对于本篇文章开篇中需要解决的问题,我也是采用服务定位的方式...,通过构建一个 ServiceProvider 之后,手动的从容器中获取需要使用的服务实例,调整后的代码如下 /// /// 添加自定义模型验证失败时返回的错误信息 /// </summary
代码片段 我们在本书中提供了代码片段,展示了如何在实际情况中使用RSpec。 这些示例中的大多数旨在供您在计算机上使用,尤其是第I部分和第II部分中的示例。...我们将一次显示几行代码文件。 如果您需要更多任何给定代码段的上下文,您可以单击文件名标题(在eBook中)或打开书籍的源代码(在本章末尾链接)以立即查看整个文件。...作为一个测试框架,RSpec非常适合BDD工作流程。 RSpec帮助您“正确理解”并准确指出您在测试中的意思。...虽然您将在几个章节中构建Web服务,但我们并不认为您已经是Web开发人员。 很多人使用RSpec来测试命令行应用程序,GUI应用程序等。 我们将在讨论过程中解释一些Web开发概念。...关于版本的注释 我们在本书中使用的库,包括来自RSpec框架的库和其他依赖项(如Sinatra和Sequel),旨在向后兼容小版本升级。
RAKE - Ruby Make Web开发人员,程序员以及任何与科学或计算机打交道的人都应该很好地理解他们使用的工具。在Mina的案例中,RAKE最为关键。 但是,什么是RAKE?...RAKE是一系列与GNU Make类似的组件,工具和定义。Make是最广泛和最受欢迎的实用程序之一,自20世纪70年代末推出以来,它已经内置于Unix系统中。Rake可以称为构建语言。...它因其独立于系统的特性以及将命令和指令组合到单个文件中而提供的能力变得非常流行,这些文件被称为“makefile”。...这些文件和Make作为工具用于构建应用程序(即编译源代码并生成可执行二进制文件)。 Rake可以称为构建语言。 它用于以结构化方式定义任务,以便在命令行中执行。...RAKE可以通过RubyGems获得。 获取Mina 使用Mina时,您需要确保拥有一个稳定的Ruby环境,并且安装了必要的依赖项并且运行正常 - 例如gem。
缓存binaries和.config中的所有文件: rspec: script: test cache: paths: - binaries/ - .config 缓存git...中没有被跟踪的文件: rspec: script: test cache: untracked: true 缓存binaries下没有被git跟踪的文件: rspec: script...job由一列参数来定义jobs的行为。...举个例子: job: script: "bundle exec rspec" 该参数也可以用数组包含多个命令: job: script: - uname -a - bundle...这些参数可以使用任何的CI variables(包括预定义、安全变量和.gitlab-ci.yml中的变量)。
缓存binaries和.config中的所有文件: rspec: script: test cache: paths: - binaries/ - .config 缓存git...中没有被跟踪的文件: rspec: script: test cache: untracked: true 缓存binaries下没有被git跟踪的文件: rspec: script...举个例子: job: script: "bundle exec rspec" 该参数也可以用数组包含多个命令: job: script: - uname -a - bundle...这些参数可以使用任何的CI variables(包括预定义、安全变量和.gitlab-ci.yml中的变量)。...你可以通过设置GIT_STRATEGY用于获取最新的代码,可以再全局variables或者是在单个job的variables模块中设置。如果没有设置,将从项目中使用默认值。
欢迎来到RSpec! 在本书的这一部分中,你将在编写前几个工作测试时熟悉该框架。 首先,你将安装RSpec并编写你的前几个specs - RSpec的测试术语。...您将在本书的课程中撰写的所有内容都将用于其中一种实践。 安装RSpec 首先,要使用RSpec 3,您需要最新版本的Ruby。...如果您使用的是较旧的东西,请转到Ruby下载页面并获取更新的内容 RSpec由三个独立的Ruby宝石组成: •rspec-core是运行规范的整体测试工具。...在«your_project»/ spec中,创建一个名为sandwich_spec.rb的文件,其中包含以下内容: 01-getting-started/01/spec/sandwich_spec.rb...组,示例和期望 此文件定义了您的测试,在RSpec中称为您的规范,是规范的缩写(因为它们指定了代码的所需行为)。 外部RSpec.describe块创建一个示例组。
本文主要介绍如何在另一台电脑上搭建Octopress的环境。 最近换了机子,所以要在新机子上搭建Octopress的环境。...本来因为新机整个系统环境就是和原来的一样可以不用配置的,可是不知道哪里弄错了,导致博客中写好的新内容不能push到remote。于是,又开始了一番折腾。...master的内容放在根目录的_deploy文件夹内,当你push源文件时会忽略,它使用的是rake deploy命令来更新的。...的_deploy文件夹内。...更新master并不是必须的,因为更改源文件之后还是需要rake generate,这个时候会自动进行 master更新。
在job build中定义缓存,将会缓存target目录下的所有.jar文件。...在这里定义了全局的cache,如果文件发生变化则值为 rspec-xxx111111111222222 ,未发生变化为rspec-default。...如果Gemfile.lock未发生变化 ,则将前缀添加default ,因此示例中的键为rspec-default 。...开始第二个作业test,此时会把当前目录中的target目录删除掉(因为做了git 对比)。 ? 获取到第一个作业生成的缓存target目录。 ?...开始第三个作业,同样先删除了target目录,然后获取了第二个作业的缓存。最后生成了当前的缓存。 ? Runner缓存 在做本次实验的时候我现在本地runner清除了项目的工作目录和历史缓存。