用 Nginx 来做私有 docker registry 的安全控制

  categories:资料  author:

docker registry 就是管理 docker 镜像的服务, Docker 公司维护的 registry 就是 http://hub.docker.com ,它可以让我们方便的下载预先做好的镜像。这篇博客把作者做的一些实验分享给大家,让你也能在docker环境下起这些服务体会一下,再简单解释一下是如何用nginx来怎么这些问题。

AD:51CTO 网+ 第十二期沙龙:大话数据之美_如何用数据驱动用户体验

docker registry 介绍

docker registry 就是管理 docker 镜像的服务, Docker 公司维护的 registry 就是 http://hub.docker.com ,它可以让我们方便的下载预先做好的镜像。

  1. $ docker pull ubuntu

上面的命令就是缺省的从这个Docker官方源下载。在国内为了加快访问,你也可以使用docker.cn 的服务,他们同步了常用的镜像,使用也非常方便,如:

  1. $ docker pull docker.cn/docker/ubuntu

大部分公司在推广使用 docker

阅读全文

WordPress 条件判断标签及用法大全

  categories:资料  author:
在 WordPress 主题和插件开发中,条件判断标签(Conditional Tags)是非常重要的,通过条件判断标签,我们可以判断各种情况,从而使用对应的代码等。例如在顶部导航条中有一个“首页”选项,在首页的时候需要设置成高亮,我们可以在头部导航模板文件(header.php)中使用条件判断标签 is_home() 来判断当前页面是不是首页,然后再输出高亮的 class。

这类的条件判断标签一般会返回一个布尔值,这样我们就可以使用 if 语句判断不同的页面不同的情况而分别使用不同的代码。

为了大家更加方便使用 WordPress 条件判断标签,我爱水煮鱼博客翻译了 WordPress 的官方文档 Conditional Tags,欢迎收藏本文以备用。

所有的条件判断标签

所有的条件判断标签都会判断某个条件是否成立,然后返回 True 或者 False 。此外有些条件判断标签还可以使用一些参数进一步的判断,下面是所有的 WordPress 条件判断标签:

主页面(Main)

is_home()

判断当前页面是否是博客主页面。主页面通常是显示博客内容列表的首页,但是如果你在“后台”->“设置”->“阅读”中设置了静态首页和文章索引页面的话,当访问文章索引页面是返回 True。

首页(Front)

is_front_page()

判断当前页面是否是博客首页。首页和上面的主页面不同,首页可以是文章索引页面,也可以是你在“后台”->“设置”->“阅读”中设置的静态首页。

后台控制面板(Administration Panels)

is_admin(
阅读全文

Java 字符终端上获取输入三种方式

  categories:资料  author:

在Java 字符终端上获取输入有三种方式:

1、java.lang.System.in (目前JDK版本均支持)

2、java.util.Scanner (JDK版本>=1.5)

3、java.io.Console(JDK版本>=1.6),特色:能不回显密码字符

参考:

这里记录Java中从控制台读入信息的几种方式

(1)JDK 1.4(JDK 1.5和JDK 1.6也都兼容这种方法)

package cn.iigrowing.utils.pan.console;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class TestConsole1 {
    public static void main(String[] args) {
        String str = readDataFromConsole("Please input string:");
        System.out.println("The information from 
阅读全文

xpath路径表达式笔记

  categories:资料  author:

简单说,xpath就是选择XML文件中节点的方法。

所谓节点(node),就是XML文件的最小构成单位,一共分成7种。

– element(元素节点)
– attribute(属性节点)
– text (文本节点)
– namespace (名称空间节点)
– processing-instruction (处理命令节点)
– comment (注释节点)
– root (根节点)

xpath可以用来选择这7种节点。不过,下面的笔记只涉及最常用的第一种element(元素节点),因此可以将下文中的节点和元素视为同义词。一、xpath表达式的基本格式

xpath通过”路径表达式”(Path Expression)来选择节点。在形式上,”路径表达式”与传统的文件系统非常类似。

# 斜杠(/)作为路径内部的分割符。

# 同一个节点有绝对路径和相对路径两种写法。

# 绝对路径(absolute path)必须用”/”起首,后面紧跟根节点,比如/step/step/…。

# 相对路径(relative path)则是除了绝对路径以外的其他写法,比如 step/step,也就是不使用”/”起首。

# “.”表示当前节点。

# “..”表示当前节点的父节点

阅读全文

Selenium WebDriver 中鼠标和键盘事件分析及扩展

  categories:资料  author:

在使用 Selenium WebDriver 做自动化测试的时候,会经常模拟鼠标和键盘的一些行为。比如使用鼠标单击、双击、右击、拖拽等动作;或者键盘输入、快捷键使用、组合键使用等模拟键盘的操作。在 WebDeriver 中,有一个专门的类来负责实现这些测试场景,那就是 Actions 类,在使用该类的过程中会配合使用到 Keys 枚举以及 Mouse、 Keyboard、CompositeAction 等类。

其次,在实际测试过程中,可能会遇到某些按键没办法使用 Actions、Keys 等类来实现的情况。 比如通过使用 Alt+PrtSc 组合键来实现截取屏幕当前活动窗口的图像,在 Keys 枚举中,因为没有枚举出 PrtSc 键,所以没办法通过 Action 的 KeyDown(Keys) 来模拟按下这个动作。

再次是在自动化测试中,可能会遇到一些附件、文件上传的场景,或者是多文件上传,这些在 Selenium2.0 之后,可以直接使用 WebElement 类的 sendKeys() 方法来实现。

下面就分别介绍这些情况的具体使用。

鼠标点击操作

鼠标点击事件有以下几种类型:

阅读全文

XPath函数——字符串函数

  categories:资料  author:

      字符串函数主要用来处理字符串。字符串函数主要包括以下:concat(),contains(),normalize-space(),substing(),substring-before(),subsring-after(),translate().

1、concat()

concat()函数用于串连多个字符串。

简单示例:

xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
    <root>
       <e id="1">st</e>
       <e id="2">nd</e>
       <e id="3">rd</e>
    </root>

xslt:

  1. <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output method="text" version="1.0" encoding="gb2312" indent="yes"/>    
        <xsl:template match="/root">
           <xsl:for-each select="e">
                <xsl:value-of select="concat(@id,.,'&#x000A;')"/>       
           </xsl:for-each>
        </xsl:template>
    </xsl:stylesheet>

结果:

阅读全文

jstack简单使用,定位死循环、线程阻塞、死锁等问题

  categories:资料  author:

当我们运行java程序时,发现程序不动,但又不知道是哪里出问题时,可以使用JDK自带的jstack工具去定位;

废话不说,直接上例子吧,在window平台上的;

死循环

写个死循环的程序如下:

package concurrency;

public class Test {

    public static void main(String[] args) throws InterruptedException {
        while (true) {

        }
    }
}

先运行以上程序,程序进入死循环;

打开cmd,输入jps命令,jps很简单可以直接显示java进程的pid,如下为7588:

或者输入tasklist,找到javaw.exe的PID,如下为7588:

输入jstack 7588命令,找到跟我们自己代码相关的线程,如下为main线程,处于runnable状态,在main方法的第八行,也就是我们死循环的位置:

Object.wait()情况

写个小程序,调用wait使其中一线程等待,如下:

package concurrency;

import java.util.concurrent.ExecutorService;
阅读全文

Java 程序死锁问题原理及解决方案

  categories:资料  author:

本文首先介绍了死锁发生的原因,并通过一个示例解释了死锁发生的前提情况。然后通过 JVM 的 jstack 工具演示了如何确定一个死锁的发生。最后对死锁的预防、恢复等方式进行了解释。

 

Java 语言通过 synchronized 关键字来保证原子性,这是因为每一个 Object 都有一个隐含的锁,这个也称作监视器对象。在进入 synchronized 之前自动获取此内部锁,而一旦离开此方式,无论是完成或者中断都会自动释放锁。显然这是一个独占锁,每个锁请求之间是互斥的。相对于众多高级锁 (Lock/ReadWriteLock 等),synchronized 的代价都比后者要高。但是 synchronzied 的语法比较简单,而且也比较容易使用和理解。Lock 一旦调用了 lock() 方法获取到锁而未正确释放的话很有可能造成死锁,所以 Lock 的释放操作总是跟在 finally 代码块里面,这在代码结构上也是一次调整和冗余。Lock 的实现已经将硬件资源用到了极致,所以未来可优化的空间不大,除非硬件有了更高的性能,但是 synchronized 只是规范的一种实现,这在不同的平台不同的硬件还有很高的提升空间,未来 Java 锁上的优化也会主要在这上面。既然 synchronzied 都不可能避免死锁产生,那么死锁情况会是经常容易出现的错误,下面具体描述死锁发生的原因及解决方法。

死锁描述

死锁是操作系统层面的一个错误,是进程死锁的简称,最早在 1965 年由 Dijkstra 在研究银行家算法时提出的,它是计算机操作系统乃至整个并发程序设计领域最难处理的问题之一。

事实上,计算机世界有很多事情需要多线程方式去解决,因为这样才能最大程度上利用资源,才能体现出计算的高效。但是,实际上来说,计算机系统中有很多一次只能由一个进程使用的资源的情况,例如打印机,同时只能有一个进程控制它。在多通道程序设计环境中,若干进程往往要共享这类资源,而且一个进程所需要的资源还很有可能不止一个。因此,就会出现若干进程竞争有限资源,又推进顺序不当,从而构成无限期循环等待的局面。我们称这种状态为死锁。简单一点描述,死锁是指多个进程循环等待它方占有的资源而无限期地僵持下去的局面。很显然,如果没有外力的作用,那么死锁涉及到的各个进程都将永远处于封锁状态。

阅读全文

持续集成JenkinsAPI常见用法

  categories:资料  author:
摘要: jenkins(持续集成开源工具)提供了丰富的api接口,基本上所有的操作都可以使用curl来从后台调度,包括:创建项目,禁用项目,启用项目,获取项目描述,获取配置文件,普通触发,scm触发,带参数触发,带补丁触发。同时也可以使用python 库 jenkinsapi https://pypi.python.org/pypi/jenkinsapi

【背景】:部门在搞持续集成,使用jenkins作为核心调度,要再其基础上进行二次封装,所以需要研究下jenkins的api。笔者主要负责搭建平台,在研究用法也花费了些时间,本文主要做个简要的记录,希望能为各位朋友节省时间。

【环境】:(默认读者已经具备了基本的持续集成经验和jenkins用法)

1. Jenkins1.455

2. 系统Suse

3. Tomcat 6.0.37

4. Java 1.6.0_26

5. patch-parameter

【API介绍】

Jenkins提供了html、json、python API,实质都是以http get/post方式调用的。查看http://www.xxx.xxx/jenkins/api/ 即可得到相应的说明,如图:

【API实践】

1.创建

curl -X POST http://www.xxx.xxx/jenkins/createItem?name=JavaStd  –user peterguo:peterguo –data-binary “@javastd.config.xml” -H “Content-Type: text/xml”

2.禁用

curl -X

阅读全文

为什么8岁儿童就应该开始学习编程

  categories:资料  author:

有很多学校根本就没有技术或计算机科学方面的预算。

为什么8岁儿童就应该开始学习编程

腾讯科技讯(乐学)北京时间4月14日消息,据国外媒体报道,如今“学习编程”创业公司如雨后春笋般涌现,但是有一家创业公司开始专注于培训儿童,并在全美小学中取得了一定的成功。该公司甚至为那些没有STEM(科学、技术、工程和数学)预算但急需更好工具的学校提供服务。这家创业公司名为Tynker,它为12年级的教师和儿童开发了一个网络学习平台和一种可视化编程语言。在与该公司联合创始人克里斯纳-魏达提(Krishna Vedati)交流的过程中,我们发现了为何教会儿童编程很重要。

培养孩子们的编程思维

在1991年,克里斯纳-魏达提从印度毕业来到美国。他获得了计算机科学硕士学位,然后在众多创业公司中经历了互联网浪潮,包括他自己创建的一家公司。在经历过上市、收购和最终倒闭等一系列事件后,他发现自己成熟了十岁,变得聪明了很多。但是,他仍然希望利用技术来解决更重要的问题。

“我有两个孩子,一个九岁,一个六岁;一个是男孩,一个是女孩。他们接触到了大量的技术。”他昨日在一次电话聊天中说,“但是,他们的学校50年不变。他们总是以各种不同的方式来教授相同的东西。”

尤其是在预算较低的学校,一些学习工具按照现代的标准来说早已过时了。魏达提在Code.org网站的同行指出,有很多学校根本就没有技术或计算机科学方面的预算。

魏达提决定,解决的办法必须是为他们提供免费服务——也就是基于网络的服务,从而让孩子们可以在家里自己练习,而不必劳烦老师们来进行大量的下载工作。与其他课程不同,它必须以孩子们喜欢的东西为基础。

“如果你到中学看看,你就会发现孩子们都喜爱游戏;他们都希望自己开发游戏。”他说,“在高中,他们喜欢上了社交互动。因此,在Tynker公司,他们会学到很多有趣的东西,但是他们需要学习编程。”

需要澄清的是,这些孩子需要学习编程的逻辑。Tynker公司开发了一种可视化的编程语言;它使用了电脑程序算法的基本元素,而不包含开发者的编程技巧,其中包括花括号和分号等这些看起来无关紧要的东西,但是一旦错位或遗漏,就可能会导致数天或数月的功夫白费。

“编程规则并不重要。”魏达提说,“这是你可以挑选的东西。可视化编程语言会迫使孩子们思考如何解决问题,如何编写程序。随着时间的推移,他们就会学会编程规则,并慢慢地学会使用PHP或Python语言。”

因此,为了让孩子们起步,Tynker公司专注于所有编程语言共有的更为重要的、更为基础的概念,例如如何进行循环,如何解决计算问题以及如何向电脑指派任务。

总体而言,他说,这完全符合孩子们已被要求学习的STEM内容。

“电脑科学源于数学。如果他们学习数学,他们也应该学习逻辑学,而这就是学习逻辑的一种方式。我们希望培养孩子们的编程思维,而让编程仅成为一种副产品。”… 阅读全文



快乐成长 每天进步一点点