跳至正文

yaml格式检验,yaml格式检验 java

如何查看perl安装了哪些模块

如何查看perl安装了哪些模块

1. perllocal

# perldoc perllocal

改指令可以列出每个安装的模块的信息,如安装的时间、安装的位置、版本信息等。

# perldoc -t perllocal | grep “Module”

Tue Apr 16 15:19:06 2013: “Module” String::CRC32

Tue Apr 16 15:19:26 2013: “Module” Cache::Memcached

Mon May 6 09:19:21 2013: “Module” Test::Nginx

Thu Aug 1 00:46:54 2013: “Module” version

Thu Aug 1 00:46:55 2013: “Module” Module::Metadata

Thu Aug 1 00:47:10 2013: “Module” CPAN::Meta::YAML

Thu Aug 1 00:47:16 2013: “Module” JSON::PP

Thu Aug 1 00:47:16 2013: “Module” Parse::CPAN::Meta

Thu Aug 1 00:47:28 2013: “Module” Test::Simple

Thu Aug 1 00:47:31 2013: “Module” CPAN::Meta::Requirements

Thu Aug 1 00:47:36 2013: “Module” File::Path

Thu Aug 1 00:47:49 2013: “Module” File::Temp

2. instmodsh

该指令是由ExtUtils::Installed模块提供的一个可执行脚本, 用来查看当前安装的模块信息。

对输出内容稍作处理下:

如何利用Spring Cloud构建起自我修复型分布式系统

如何利用Spring Cloud构建起自我修复型分布式系统

Spring Cloud项目的既定目标在于为Spring开发人员提供一整套易于使用的工具集,从而保证其轻松构建起自己需要的分布式系统方案。为了实现这一目标,Spring Cloud以Netflix OSS堆栈为基础将大量实现堆栈加以整合并打包。这些堆栈而后可以通过大家所熟知的各类基于注释的配置工具、Java配置工具以及基于模板的编程工具实现交付。下面就让我们一起了解Spring Cloud当中的几类常见组件。

Spring Cloud Config Server

Spring Cloud Config Server能够提供一项具备横向扩展能力的集中式配置服务。它所使用的数据被保存在一套可插拔库层当中,后者目前能够支持本地存储、Git以及Subversion。通过利用一套版本控制系统作为配置存储方案,开发人员能够轻松实现版本与审计配置的内容调整。

配置内容会以Java属性或者YAML文件的形式体现。该Config Server会将这些文件合并为环境对象,其中包含易于理解的Spring属性模型以及作为REST API存在的配置文件。任何应用程序都能够直接调用该REST API当中所包含的配置数据,但我们也可以将智能客户端绑定方案添加到Spring Boot应用程序当中,并由后者自动将接收自Config Server的配置信息分配至任意本地配置当中。

Spring Cloud Bus

Spring Cloud Config Server是一套强大的配置分发机制,能够在保障一致性的前提下将配置内容分发到多个应用程序实例当中。然而根据其设计思路的限定,我们目前只能在应用程序启动时对其配置进行更新。在向Git中的某一属性发送新值时,我们需要以手动方式重启每个应用程序进程,从而保证该值被切实纳入应用当中。很明显,大家需要能够在无需重启的前提下完成对应用程序配置内容的更新工作。

Spring Cloud Bus的任务正是为应用程序实例添加一套管理背板。它目前依靠将一套客户端绑定至一组AMQP交换与队列当中来实现,但这一后端在设计上也实现了可插拔特性。Spring Cloud Bus为我们的应用程序带来了更多管理端点。在图二中,我们可以看到一个面向greeting属性的值被发送至Git当中,而后一条请求被发送至应用A中的/bus/refresh端点。该请求会触发以下三个事件:

应用A从Config Server处请求获取最新版本的配置内容。任意注明了@RefreshScope的Spring Bean都会被重新初始化并载入新的配置内容。

应用A向AMQP交换机制发送一条消息,表明其已经收到更新指示。

通过监听AMQP队列而被纳入Cloud Bus的应用B与应用C会获取到上述消息,并以与应用A同样的方式实现配置更新。

现在我们已经有能力在无需重启的情况下对应用程序配置进行更新了。

Spring Cloud Netflix

Spring Cloud Netflix针对多种Netflix组件提供打包方案,其中包括Eureka、Ribbon、Hystrix以及Zuul。接下来我将分别对它们作出讲解。

Eureka是一套弹性服务注册实现方案。其中服务注册属于服务发现模式的一种实现机制

Spring Cloud Netflix通过直接将spring-cloud-starter-eureka-server关联性添加到Spring Boot应用程序、随后将该应用程序的配置类与@EnableEurekaServer相整合的方式病嵌入式Eureka服务器的部署工作。

应用程序能够通过添加spring-cloud-starter-eureka关联性并将其配置类与@EnableDiscoveryClient相整合的方式加入到服务发现流程当中。通过整合,我们能够将经过配置的适合DiscoveryClient实例注入至任意Spring Bean内。在我们所列举的实例中,DiscoveryClient作为服务发现的一种抽象机制恰好可以通过Eureka实现,不过大家也可以将其与Consul等其它备选堆栈相集成。DiscoveryClient能够通过服务的逻辑标识符提供位置信息(例如网络地址)以及其它与已注册至Eureka的服务实例相关的元数据。

Eureka提供的负载均衡机制仅支持单循环条件。而Ribbon提供的客户端IPC库则更为精巧,其同时具备可配置负载均衡机制与故障容错能力。Ribbon能够通过获取自Eureka服务器的动态服务器列表进行内容填充。Spring Cloud Netflix通过将spring-cloud-starter-ribbon关联性添加至Spring Boot应用程序的方式实现与Ribbon的集成。这套额外库允许用户将经过适当配置的LoadBalancerClient实例注入至Spring Bean当中,从而实现客户端负载均衡(如图四所示)。

在此类任务当中,我们可以利用Ribbon实现额外负载均衡算法,包括可用性过滤、加权响应时间以及可用域亲和等。

Spring Cloud Netflix还通过自动创建能够被注入至任意Spring Bean的Ribbon强化型RestTemplate实例的方式进一步改进了Spring开发者的Ribbon使用方式。在此之后,开发人员能够轻松将URL所提供的逻辑服务名称递交至RestTemplate:

@Autowired @LoadBalanced private RestTemplate restTemplate; @RequestMapping(“/”) public String consume() { ProducerResponse response = restTemplate.getForObject(“http://producer”, ProducerResponse.class); return String.format(“{\”value\”: %s}”, response.getValue()); }

Hystrix能够为断路器以及密闭闸门等分布式系统提供一套通用型故障容错实现模式。断路器通常会被作为一台状态机使用,具体如图五所示。

断路器能够介于服务及其远程关联性之间。如果该电路处于闭合状态,则所有指向该关联性的调用通常将直接通过。如果某一调用失败,则故障将被计入计数。而一旦失败次数达到可配置时间区间内的阈值,该电路将被跳闸至断开。在处于断开状态时,调用将不再被发往该关联,而由此产生的结果将可自行定制(包括报告异常、返回虚假数据或者调用其它关联等等)。

该状态机会定期进入所谓“半开”状态,旨在检测关联性是否处于健康运作状态。在这种状态下,请求一般仍将继续得以通过。当请求成功通过时,该设备会重新回归闭合状态。而如果请求失败,则该设备会重新回归断开状态。

Spring Cloud应用程序能够通过添加spring-cloud-starter-hystrix关联性并将其配置类与@EnableCircuitBreaker相整合的方式利用Hystrix。在此之后,大家可以通过与@HystrixCommand整合的方式将断路器机制纳入到任意Spring Bean方法内:

@HystrixCommand(fallbackMethod = “getProducerFallback”) public ProducerResponse getValue() { return restTemplate.getForObject(“http://producer”, ProducerResponse.class); } 以上实例中指定了一个名为getProducerFallback的备用方法。当该断路器处于断开状态时,此方法将替代getValue接受调用: private ProducerResponse getProducerFallback() { return new ProducerResponse(42); }

除了实现状态机机制之外,Hystrix还能够提供来自各断路机制的重要遥测指标流,具体包括请求计量、响应时间直方图以及成功、失败与短路请求数量等(如图六所示)。

Zuul能够处理全部指向Netflix边缘服务的输入请求。它能够与Ribbon以及Hystrix等其它Netflix组件相结合,从而提供一个灵活且具有弹性的Netflix服务路由层。

Netflix公司在Zuul当中加载动态过滤机制,从而实现以下各项功能:

验证与安全保障: 识别面向各类资源的验证要求并拒绝那些与要求不符的请求。

审查与监控: 在边缘位置追踪有意义数据及统计结果,从而为我们带来准确的生产状态结论。

动态路由: 以动态方式根据需要将请求路由至不同后端集群处。

压力测试: 逐渐增加指向集群的负载流量,从而计算性能水平。

负载分配: 为每一种负载类型分配对应容量,并弃用超出限定值的请求。

静态响应处理: 在边缘位置直接建立部分响应,从而避免其流入内部集群。

多区域弹性: 跨越AWS区域进行请求路由,旨在实现ELB使用多样化并保证边缘位置与使用者尽可能接近。

除此之外,Netflix公司还利用Zuul的功能通过金丝雀版本实现精确路由与压力测试。

Spring Cloud已经建立起一套嵌入式Zuul代理机制,从而简化常见用例当中UI应用需要将调用代理至一项或者多项后端服务处的对应开发流程。这项功能对于要求将用户界面代理至后端服务的用例而言极为便捷,其避免了管理CORS(即跨域资源共享)以及为全部后端进行独立验证等复杂流程。Zuul代理机制的一类重要应用在于实现API网关模式(如图七所示)。

Spring Cloud对嵌入式Zuul代理进行了强化,从而使其能够自动实现文件上传处理。而与Spring Cloud Security配合之后,其能够轻松实现OAuth2 SSO以及将令牌传递至下游服务等工作。Zuul利用Ribbon作为其客户端与全部出站请求的负载均衡机制。Ribbon的动态服务器列表内容通常由Eureka负责填充,但Spring Cloud也能够通过其它来源填充该列表。Spring Cloud Lattice项目就已经能够通过轮询Cloud Foundry Diego的Receptor API填充Ribbon的服务器列表。

跨入微服务领域的决定意味着我们将正式迎接分布式系统所带来的诸多挑战,而分布式系统绝不是那种能够“凑合使用”的方案。因此,我们必须假设系统内各组件的行为及位置始终处于不断变化当中,甚至经常表现出不可预知状态。在今天的文章中,我们已经谈到了几种能够帮助大家解决此类挑战的现成模式,而且这些模式已经在Netflix OSS与Spring Cloud得到切实验证。我个人建议大家在着手建立理想中的“永远运行、自我修复且具备可扩展能力”的系统方案之前,首先对它们进行一番尝试与体验。

如何在vim中快速格式化这个代码

如何在vim中快速格式化这个代码

vi 下格式化代码: 全部代码格式化: 命令行模式下 按下 gg (回到开头) 按下 = (格式化命令) 按下 G (代码尾部) 部分代码格式化: 命令行下 选中你要格式化的代码 按下 =

Ubuntu 安装gitlab后,css文件不能被加载

:#安装所有的依赖包 sudo apt-get install -y build-essential git-core sudo apt-get install -y zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server redis-server checkinstall

如何在JetBrain的IDE里依据.eslintrc中的规则对代码进行自动格式化

ESLint 由 JavaScript 红宝书 作者 Nicholas C. Zakas 编写, 2013 年发布第一个版本。 NCZ 的初衷不是重复造一个轮子,而是在实际需求得不到 JSHint 团队响应 的情况下做出的选择:以可扩展、每条规则独立、不内置编码风格为理念编写一个 lint 工具。

ESLint 主要有以下特点:

默认规则包含所有 JSLint、JSHint 中存在的规则,易迁移;

规则可配置性高:可设置「警告」、「错误」两个 error 等级,或者直接禁用;

包含代码风格检测的规则(可以丢掉 JSCS 了);

支持插件扩展、自定义规则。

ESLint 已经 宣布支持 JSX ,不过目前为 alpha 版本,正式版发布之前可以先使用eslint-plugin-react 替代。

使用 ESLint

ESLint 详尽使用参见 官方文档 ,下面罗列的是由 JSHint 迁移到 ESLint 的一些要点。

配置

可以通过以下三种方式配置 ESLint:

使用 .eslintrc 文件(支持 JSON 和 YAML 两种语法);

在 package.json 中添加 eslintConfig 配置块;

直接在代码文件中定义。

.eslintrc 文件示例:

{

“env”: {

“browser”: true,

},

“globals”: {

“angular”: true,

},

“rules”: {

“camelcase”: 2,

“curly”: 2,

“brace-style”: [2, “1tbs”],

“quotes”: [2, “single”],

“semi”: [2, “always”],

“space-in-brackets”: [2, “never”],

“space-infix-ops”: 2,

}

}

.eslintrc 放在项目根目录,则会应用到整个项目;如果子目录中也包含.eslintrc 文件,则子目录会忽略根目录的配置文件,应用该目录中的配置文件。这样可以方便地对不同环境的代码应用不同的规则。

如何使用cobbler实现批量自动部署Linux

Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows。该工具使用python开发,小巧轻便,使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP,DNS,以及yum包镜像。下面一步步来实现吧.

实验平台:rhel 6.3 x86_64

cobbler.laoguang.me 192.168.1.23

一.环境准备

1.1 安装dhcp

yum -y install dhcp 1.2 安装其它所需服务如:tftp xinetd httpd ##靠tftp传输文件,tftp依赖xinetd,httpd这个我暂时不清楚

yum -y install tftp xinetd httpd 1.3 关闭selinux iptables

setenforce 0 service iptables stop

二.安装cobbler

2.1 下载安装cobbler与依赖的包python-yaml

下载地址:http://www.kuaipan.cn/file/id_33139203151758501.html ,其它平台的可以去 http://rpm.pbone.net/找,这个网站你一定不能忘记

yum -y –nogpgcheck localinstall cobbler-2.2.2-1.el6.rf.noarch.rpm \python-yaml-3.09-3.el6.rf.x86_64.rpm

2.2 启动cobbler

service cobblerd start

2.3 启动httpd

service httpd start

2.4 启用xinetd

service xinetd start

2.4 cobbler 检查配置

cobbler check

2.5 重启cobbler

service cobblerd restart

三.cobbler的配置

3.1 导入欲安装的系统的镜像文件

将redhat 6.3 x86_64 的ISO挂载/cdrom

mount /dev/cdrom /cdrom

导入需要的安装文件到cobbler的/var/www/cobbler/ks_mirrors下,并生成一profile,此过程需要一段时间,耐心等待

cobbler import –path=/cdrom –name=RedHat-6.3-x86_64 3.2

配置dhcp服务,让cobbler来管理

vi /etc/cobbler/settings

manage_dhcp: 1

3.3 修改/etc/cobbler/dhcp.template模板文件中的配置,其它的默认即可

3.4 同步cobbler配置

cobbler sync cobbler会自动进行初始化工作,移除已经存在的启动项,然后根据模板拷贝loader文件。之后再生成pxe的配置文件,生成dhcp的配置文件,最后再重启dhcp服务。关键查看dhcp,tftp有没有启动成功。

四.测试安装系统

4.1 新建个虚拟机,网络记的是brige哦,新建的虚拟机网络默认是nat的,我就因为这个怎么都安装不上,启动虚拟机,调整启动顺序从网络启动(我用的是vmware,如果你没有挂cd的iso,也虚拟机是新建的直接启动应该是可以的)

五.定制自己的kickstart文件

定制自己的kickstart文件而不是使用默认的,kickstart文件cobbler放在了/var/lib/cobbler/kickstarts/中,查看cobbler默认使用的哪个

vi /etc/cobbler/settings

  default_kickstart: /var/lib/cobbler/kickstarts/default.ks ##看到了吧,用的是default.ks

5.1 自定义kickstart文件。

如果你对kickstart文件理解透彻,直接修改或新建即可,如果还是很精通就用gui工具吧

yum -y install system-config-kickstart

安装完毕后打开软件。

system-config-kickstart

根据自己的需要修改即可,修改完毕后保存,修改settings中的设置,重启cobbler即可

原文出处:http://laoguang.blog.51cto.com/6013350/1097874/

请教如何在phpStorm中配置eslint

展开全部

  • 使用ESlint
    一、ESLint跟JSLint和JSHint类似,但有以下区别:
      1.使用Espree进行js解析(parse)
      2.用AST抽象语法树去识别(evaluate)代码中的模式3.每个规则都是独立的插件
      二、安装
      全局安装:
      npm install -g eslint
      三、使用
      如果是第一次使用,eslint –init 命令帮你完成初始化,生成.eslintrc文件然后eslint test.js test2.js
      四、配置
      {
      "rules": {
      "semi": ["error", "always"],
      "quotes": ["error", "double"]
      }
      }
      提示有三个level:
      "off" or 0 – 关闭这个规则校验
      "warn" or 1 – 开启这个规则校验,但只是提醒,不会退出"error" or 2 – 开启这个规则校验,并退出
      五、常见问题
      1.为什么不用jslint
      创建eslint是因为急需插件化的校验工具
      2.ESLint跟JSHint、JSCS的比较
      ESLint比JSlint要慢2~3倍,因为ESLint在识别代码前需要用Espress构建AST,而JSHint在解析的时候就会识别代码。虽然慢些,但不至于成为痛点。
      ESLint比JSCS快,(as ESLint uses a single-pass traversal for analysis whereas JSCS using a querying model.)3.ESLint仅仅是校验还是也检查代码风格
      都有。ESLint does both traditional linting (looking for problematic patterns) and style checking (enforcement of conventions). You can use it for both.
      4.支持es6吗?
      支持。参考配置eslint.org/docs/user-guide/configuring5.支持JSX?
      支持,但并不表示支持React。(Yes, ESLint natively supports parsing JSX syntax (this must be enabled in configuration.). Please note that supporting JSX syntax is not the same as supporting React. React applies specific semantics to JSX syntax that ESLint doesn’t recognize. We recommend using eslint-plugin-react if you are using React and want React semantics.)5.支持es7吗?
      本身不支持,可以使用babel-eslint
      六、下面详细介绍下配置,地址eslint.org/docs/user-guide/configuring1.配置ESLint
      主要有两种方法配置
      (1)配置注释,直接嵌入到js文件中
      (2)配置文件,使用js、json或者yaml文件来为整个目录及其子目录配置。形式有:.eslintrc.*文件,或者在package.json中配置eslintConfig字段,或者在命令行里配置。
      配置分几个方面:
      (1)环境(env):设置你的脚本的目标运行环境,如browser,amd,es6,commonjs等,每种环境有预设的全局变量(2)全局变量:增加的全局变量供运行时使用(3)规则(rules):设定的规则及该规则对应的报错level2.配置解析器选项(Specifying Parser Options)默认仅支持ES5语法,可以设置为es6 es7 jsx等。
      复制代码
      {
      "parserOptions": {
      "ecmaVersion": 6, // 可选 3 5(默认) 6 7"sourceType": "module", // 可选script(默认) module"ecmaFeatures": {
      "jsx": true
      },
      },
      "rules": {
      "semi": 2
      }
      }
      复制代码
      3.配置解析器(Specifying Parser),需要本地npm模块{
      "parser": "esprima", // Espree(默认) Esprima Babel-ESLint"rules": { "semi": "error" } }
      4.配置环境(Specifying Environments),可以多选复制代码
      browser – browser global variables.
      node – Node.js global variables and Node.js scoping.
      commonjs – CommonJS global variables and CommonJS scoping (use this for browser-only code that uses Browserify/WebPack).
      shared-node-browser – Globals common to both Node and Browser.
      es6 – enable all ECMAScript 6 features except for modules.
      worker – web workers global variables.
      amd – defines require() and define() as global variables as per the amd spec.
      mocha – adds all of the Mocha testing global variables.
      jasmine – adds all of the Jasmine testing global variables for version 1.3 and 2.0.
      jest – Jest global variables.
      phantomjs – PhantomJS global variables.
      protractor – Protractor global variables.
      qunit – QUnit global variables.
      jquery – jQuery global variables.
      prototypejs – Prototype.js global variables.
      shelljs – ShellJS global variables.
      meteor – Meteor global variables.
      mongo – MongoDB global variables.
      applescript – AppleScript global variables.
      nashorn – Java 8 Nashorn global variables.
      serviceworker – Service Worker global variables.
      atomtest – Atom test helper globals.
      embertest – Ember test helper globals.
      webextensions – WebExtensions globals.
      greasemonkey – GreaseMonkey globals.
      复制代码
      如果要在待校验文件里面配置可以这样配置:
      /*eslint-env node, mocha */
      如果要在配置文件中配置:
      {
      "env": {
      "browser": true,
      "node": true
      }
      }
      如果在package.json中配置:
      复制代码
      {
      "name": "mypackage",
      "version": "0.0.1",
      "eslintConfig": {
      "env": {
      "browser": true,
      "node": true
      }
      }
      }
      复制代码
      如果在YAML中配置:
      —
      env:
      browser: true
      node: true
      也可以用插件
      {
      "plugins": ["example"],
      "env": {
      "example/custom": true
      }
      }
      5.配置全局变量(Specifying Globals)
      定义了全局变量以后,使用他们,ESLint不会发出警告。
      在js文件中定义:
      /*global var1, var2*/
      设置read only
      /*global var1:false, var2:false*/
      在配置文件中:
      {
      "globals": {
      "var1": true,
      "var2": false
      }
      }
      6.配置插件(Configuring Plugins)
      使用npm安装第三方插件
      {
      "plugins": [
      "plugin1",
      "eslint-plugin-plugin2"
      ]
      }
      7.配置规则(Configuring Rules)
      js中配置:
      /*eslint eqeqeq: "off", curly: "error"*/
      或者:
      /*eslint eqeqeq: 0, curly: 2*/
      如果规则有多个选项:
      /*eslint quotes: ["error", "double"], curly: 2*/在配置文件中设置:
      复制代码
      {
      "rules": {
      "eqeqeq": "off",
      "curly": "error",
      "quotes": ["error", "double"]
      }
      }
      复制代码
      使用插件:
      复制代码
      {
      "plugins": [
      "plugin1"
      ],
      "rules": {
      "eqeqeq": "off",
      "curly": "error",
      "quotes": ["error", "double"],
      "plugin1/rule1": "error"
      }
      }
      复制代码
      /*eslint "plugin1/rule1": "error" */
      临时关闭eslint校验:
      /*eslint-disable */
      //Disable all rules between comments
      alert(‘foo’);
      /*eslint-enable */
      /*eslint-disable no-alert, no-console */
      alert(‘foo’);
      console.log(‘bar’);
      /*eslint-enable no-alert */
      在js特定行关闭校验:
      alert(‘foo’); // eslint-disable-line
      // eslint-disable-next-line
      alert(‘foo’);
      alert(‘foo’); // eslint-disable-line no-alert, quotes, semi// eslint-disable-next-line no-alert, quotes, semialert(‘foo’);
      8.增加共享设置(Adding Shared Settings)
      {
      "settings": {
      "sharedData": "Hello"
      }
      }
      9.使用配置文件
      eslint -c myconfig.json myfiletotest.js
      10.继承配置文件(Extending Configuration Files)复制代码
      {
      "extends": [
      "./node_modules/coding-standard/eslintDefaults.js",// Override eslintDefaults.js
      "./node_modules/coding-standard/.eslintrc-es6",// Override .eslintrc-es6
      "./node_modules/coding-standard/.eslintrc-jsx",],
      "rules": {
      // Override any settings from the "parent" configuration"eqeqeq": "warn"
      }
      }
      复制代码
      11.忽略文件或目录(Ignoring Files and Directories)建立.eslintignore文件
      复制代码
      # /node_modules and /bower_components ignored by default# Ignore files compiled from TypeScript and CoffeeScript**/*.{ts,coffee}.js
      # Ignore built files except build/index.jsbuild/
      !build/index.js