docker 入门与安装

Docker的概念

什么是Docker

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。

Docker的优势

对于开发和运维来说,把程序部署到生产的时候,最常见的问题是环境问题,由于服务器单机的差异,可能会导致问题比较众多烦杂。对于这个问题,docker的优势就可以体现出来了。我们假设一个系统有四个要素组成:应用app,app依赖的类库,配置文件和系统环境。

  • 对于传统的部署

    我们需要对以上个因素进行单独的考虑和配置,如果集群则面临了大量的工作量,如果使用虚拟机的快照,也过于庞大

  • docker部署 docker本身是跨平台,镜像中包含应用程序中所需要的类库和环境,一次生成多处运行。即使不跨平台的语言,只要能够运行在docker容器中,就能够实现跨平台。

Docker 安装与使用

Docker的安装

对于docker的安装可以使用以下命令:

1
2
3

$ sudo apt-get install docker

阅读更多

js如何操作本地程序

背景

假设有这样一个产品,一个web和一个winform客户端,在客户在web的网页上面点击启动客户端来处理,这个时候开始调用本地的客户端,来完成指定的工作。这种场景在日常的上网中也比较常见,如使用迅雷下载。当然实现的方式也有很多种,今天我来演示一种用监控Http请求来实现这个功能,思路如下:

jsApp

HttpListener

对于上面的分析,最重要的功能虽实现对Http的监控,而.net中已经封装了我们的需求,下面看下如何具体的实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
static void Main(string[] args)
{
HttpListener listerner = new HttpListener();

try
{
listerner.AuthenticationSchemes = AuthenticationSchemes.Anonymous;//指定身份验证 Anonymous匿名访问
listerner.Prefixes.Add("http://localhost:8080/Service/");
listerner.Start();
}
catch (Exception ex)
{
Console.WriteLine("无法启动监视:" + ex.Message);
}

Task.Factory.StartNew(() => //使用一个线程对监听
{
while (true)
{
HttpListenerContext ctx = listerner.GetContext();
Task.Factory.StartNew(TaskProc, ctx);//回调函数,开启新线程进行调用,不影响下次监听
}
});

Console.ReadKey();
}


实现请求的响应

现在我们可以拿到请求的上下文的信息ctx,先定义一个参数的格式,简单的定义如下:

1
2
3
4
5
6
7
8
public class ReciveInfo
{
public string path { get; set; }//应用程序所在的路径

public string name { get; set; }//应用程序名称
}


下面对ctx的Response数据进行填写.

阅读更多

win10移除Hyper

win10碰到的问题

win10 自带的Hyper与Vmare冲突,使用控制面板去除Hyper之后,win10会自动更新把Hyper又重新安装上了。。。经历几次折腾最终还是不行。原因:Hyper-V后VMware都要独占基于CPU等底层硬件的 Hypervisor才能运行,所以二者不能在同一台电脑中同时运行

修改启动项

  1. 以管理员身份运行命令提示符

  2. 在命令提示符窗口中输入以下命令

    
        bcdedit /copy {current} /d "Windows 10 (关闭 Hyper-V)"
    

运行后会提示你已经创建了另外一个启动菜单项,记下 { } 中的那串代码。

  1. 然后继续输入并运行以下命令

    
       bcdedit /set {你记下的那串代码} hypervisorlaunchtype OFF
    

在启动的时候选择”Windows 10 (关闭 Hyper-V)” 这个启动选项就可以使用Vmare了

阅读更多

爬取菜鸟裹裹的数据

菜鸟裹裹{:target=”_blank”}是阿里旗下的一个物流数据的整合平台,数据准确、及时.前几天在关注菜鸟和顺丰的争端,因为在前一天我刚刚爬到菜鸟上面的快递数据,第二天看到二者出现了摩擦,在菜鸟上面已经查不到顺丰的信息了,还好有国家邮政局出面了解决,不得不为我们是社会主义点个赞。这次爬数据经历点波折,个人觉得阿里做的安全性还是很专业的。下面开始介绍如何找到突破口把数据拿到的。



​ 声明:此文只做技术交流,请不要恶意攻击,当然我也相信阿里的技术,不可能轻意被攻破的。


本文Demo下载:

菜鸟裹裹Demo(可能已经不能用)
快递100数据Demo

监控Ajax请求

  • 打开Chrome的控制台中的NetWork后,点击上面的查询按钮,查看请求记录,如下使用一个顺丰的物流号查询出对应的信息和请求:

    shufeng

    对应的请求为:

NetWorkInfo

阅读更多

推荐一个jekyll博客模板

本人用的模板是基于Codeboy的博客模板改造模板{:target=”_blank”},(由于本人可能会有很多样式修改,所以不再将修改pullrequst到原项目,在此对codeboy模板表示感谢)。功能改造如下:

添加微信支付宝打赏

这里也是一个开源的项目,项目地址,使用很方便,直接引用到项目中,配置下就可了:

1
2
3
4
5
6
7
8
9
10
11
12
13
<script>
window.tctipConfig = {
staticPrefix: "http://static.tctip.com",
buttonImageId: 1,
buttonTip: "zanzhu",
list:{
alipay: {qrimg: "http://blog.laofu.online/img/assets/o_zhifubao.png"},
weixin:{qrimg: "http://blog.laofu.online/img/assets/o_weixin.png"},
}
};
</script>

<script src="http://static.tctip.com/js/tctip.min.js"></script>

weixin

百度流量监控

为了查看个人的博客的人气,添加了百度的统计模块,可以方便的看到博客的pv/uv.注册地址{:target=”_blank”}

static

具体的添加方式如下 :

  1. 在_incluides文件夹下添加一个baidu_analyze.html的文件,内容如下

     
    	{%if site.baidu_analyze %}
    	
    
    	{% endif %}
    	
    

    {{site.baidu_analyze}} 是一个变量,可以把你申请的baidu的key值作为_config.yml的配置值存储下来。

阅读更多

使用Sublime+MarkDown快速写博客

前端的开发人员应该都知道sublime的神器,今天就说说如何使用sublime结合markdown快速写博客。

添加Snippets

在使用jekyll写博客的时候开篇都需要去写一个头部,内容如下:

 layout: post 
 title:xxxxx     
 date:xxxxxxx 
 author:xxxx

对于这个固定格式我们可以定义一个Snippets,具体的步骤如下:

  1. 在sublime中的 Tools—>Developer—>New Snippets..

    <snippet>
    <content><![CDATA[
    Hello, ${1:this} is a ${2:snippet}.
    ]]></content>
    <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
    <!-- <tabTrigger>hello</tabTrigger> -->
    <!-- Optional: Set a scope to limit where the snippet will trigger -->
    <!-- <scope>source.python</scope> -->
    </snippet>
    

    上面代码片段包含了sublime在什么时候插入什么内,详细参考官方文档Snippets{:target=”_blank”}

content

  • Hello, ${1:this} is a ${2:snippet}. 要的显示的文本

    其中的${}符号是tab索引占位,${1:time},说明此处是tab第一个占位,默认值是time

tabTrigger

  • \hello\</tabTrigger> 要触发的版本

    scope

  • \source.python</scope> 在那个类型文件触发

阅读更多

github Pages绑定域名

网站已经有了,需要对网站来绑定一个自己的个性域名,本人是买了一个阿里云的域名,也就是现在正在使用的laofu.online。当然这个是主域名,我们需要是是一个带有含义的二级域名,这里我添加一个blog.laofu.online的域名。

映射记录的添加

买了域名后,阿里云会有一个后台,这里我们需要把现在的域名转发到我们github-pages所生成的网站。这里我们只需要添加一个CName的记录就可以了,设置如下:

domain

github添加CName文件

域名的跳转是双向的,我可以转发给你,你也要在服务器上面绑定打指定的域名才行,这个就可以在github的gh-pages的根目录下添加一个CName的文件,文件是你的二级域名,github会自动绑定CName中的域名。

domain

domain

阅读更多

如何搭建免费博客

对于经常写博客的人,都很想拥有一个属于自己的独立博客,但一个独立的博客可能需要以下几个东西:

  1. 域名
  2. 一个前端的模板
  3. 一个后台的管理
  4. 一个数据库
  5. 部分的统计和其它模块

这样的话,我们的精力可能都了要放到博客的管理上面,而不是博客的内容。 随着github的出现,这样问题出现了改观,使用gitbub提供的github pages功能可以提供一个独立的站点供我们使用。结合相关的域名配置,我们就可以很方便的搭建属于自己的博客平台。

github Pages的使用

概述

对于开发者来说github是很熟悉的,是一个托管代码和开源的网站.如果你想找一个开源的项目,首先看到的可能是一个源码的列表,这样对于项目的展示不够直观,github pages就是为也解决这个问题而出现,允许开发者自定义一个展示页面,来替代原有的代码列表。

具体的规则

在github的项目中,创建一个gh-pages的分支,分支创建完成后就可以使用http://{userName}.github.io/{projectName}来进行访问。更详细参见:[github Pages](https://pages.github.com/){:target="_blank"}

一个实例

  1. 创建一个项目,并对项目进行初始化,运行以下命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
       
    mkdir gitDemo #创建一个目录

    cd gitDemo

    git init #git 初始化

    git checkout --orphan gh-pages # 创建gh-pages分支。

    ```
    2. 进行gitDemo文件夹,添加一个html文件,index.html,添加如下内容:

    ``` html
    <h1>Hello github Pages!!</h1>
阅读更多

IIS执行原理

服务器的监听(IIS6.0+版本)

  1. 当请求到达服务器时,请求最终会到达TCPIP.SYS驱动程序,TCPIP.SYS将请求转发给HTTP.SYS网络驱动程序的请求队列中(可以理解为专门处理http请求的进程),当然在处理请求的过程中,HTTP.SYS进程会维护一个配置表用缓存请求的url和和应用程序池对应的关系。

  2. 当一个http请求被捕获到,HTTP.SYS会读取配置表,如果对应的应用程序没有启动,则HTTP.SYS会启动IIS相对应的应用程序。具体运行机制可以理解成为:

HTTP.SYS

HTTP.SYS是TCP之上的一个网络驱动程序,因此,HTTP.SYS不再属于IIS(这里说的IIS都是IIS6.0+版本,下文如果不特殊指明,默认为IIS6.0+版本),它已经从IIS中独立了出来。 Http.Sys独立有以下几个优点:

  • 可靠性: HTTP.SYS运行在内核模式下,作为操作系统的驱动程序运行。因此,HTTP.SYS不会受到用户代码的影响,它始终处于稳定运行状态,对用户的http请求进行监听,并及时作出反应。

  • 高性能: 从用户发送http请求到系统返回响应结果的这一过程都是HTTP.SYS在内核模式下完成的。不需要在内核模式和用户模式下进行切换,这样就极大地节省了系统资源,提高了请求的响应速度。

IIS处理

W3SVC

  1. W3SVC服务是一个独立运行的程序,寄宿在svchost.exe进程中,负责用户的参数监视和重新启动应用池的工作。 当一个请求进入HTTP.SYS的队列中,会通知W3SVC服务根据IIS中的配置去创建对应的应用进程,进行处理。

W3WP.exe

阅读更多