英布

2014-8-23

风入中秋意微凉,

帐外似落九江霜。

青史竹帛文章短,

紫微星斗夜色长。

淮阴血色未黯淡,

彭王肉糜尚温香。

当年舍命容易处,

今日全身费思量。

七夕

2014年七夕

2014-8-4

仿佛生日是七夕,

或是嫦娥或织女。

牛郎总入桂下梦,

吴刚常在河外堤。

越女吴山情脉脉,

楚天湘水人依依。

人间节日尽繁华,

都是天外星斗移。

2012年七夕

2012-08-24

依稀景物依稀梦,

恍惚人事恍惚情。

从前多少悲欢事,

都在今日明月中。

2011年七夕

2011-08-06

神交隔万里,

意会越千年。

今日上弦月,

为谁照窗前?

假日

2009-08-26

夜夜牛郎奉春色,

岁岁银河绕广寒。

七夕云雨逐流下,

追得神女到巫山。

七夕-雕塑园

2007-08-18

熙熙人如织,

淡淡晚云愁。

明日鹊桥会,

银河月似钩。

CentOS下安装git和配置git服务器

在远程仓库一节中,我们讲了远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改。

GitHub就是一个免费托管开源代码的远程仓库。但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用。

搭建Git服务器需要准备一台运行Linux的机器,强烈推荐用Ubuntu或CentOS,这样,通过几条简单的apt或yum命令就可以完成安装。

假设你已经有sudo权限的用户账号,下面,正式开始安装。

第一步,安装git:

yum install curl curl-devel zlib-devel openssl-devel perl cpio expat-devel gettext-devel

下载最新的git包

wget http://www.codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.gz
tar xzvf git-latest.tar.gz
cd git-2011-11-30 #你的目录可能不是这个
autoconf
./configure --prefix=/usr/local/git
make
make install

检查下安装的版本,大功告成

git --version

第二步,创建一个git用户,用来运行git服务:

$ sudo adduser git
$ git config --global user.name "whdsmile"
$ git config --global user.email "whdsmile@gmail.com"

第三步,创建证书登录:

收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。

第四步,初始化Git仓库:

先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:

$ sudo git init --bare sample.git

Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git:

$ sudo chown -R git:git sample.git

第五步,禁用shell登录:

出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:

git:x:1001:1001:,,,:/home/git:/bin/bash
改为:
git:x:1001:1001:,,,:/home/git:/usr/local/git/bin/git-shell

这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。

第六步,在/srv/sample.git目录下,假设有一个test目录:

$ git add test
$ git commit -m "add file"

第七步,在开发机上克隆远程仓库:

现在,可以通过git clone命令克隆远程仓库了,在各自的电脑上运行:

$ git clone git@server:/srv/sample.git

Cloning into 'sample'...
warning: You appear to have cloned an empty repository.

剩下的推送就简单了。

管理公钥

如果团队很小,把每个人的公钥收集起来放到服务器的/home/git/.ssh/authorized_keys文件里就是可行的。如果团队有几百号人,就没法这么玩了,这时,可以用Gitosis来管理公钥。

这里我们不介绍怎么玩Gitosis了,几百号人的团队基本都在500强了,相信找个高水平的Linux管理员问题不大。

参考资料

学习OpenX广告管理与跟踪系统

OpenX Ad Server (简称OpenX )是一个采用PHP开发的广告管理与跟踪系统。

安装和部署

配置要求

  1. 支持PHP
  2. 支持MySql

下载源代码

http://www.openxconsultant.com/blog/2013/08/openx-source-v2-8-11-released-for-download/下载源代码,或者先从http://www.openxconsultant.com/blog/category/featured/检查最新发布。

提示:如果研究学习源代码,可以使用SVN检出,地址:https://svn.openx.org/openx/tags/2.8/openx-2.8.11/

安装部署

  1. 将下载的源代码命名为“openx”,上传到WEB服务器的根目录下。
  2. 给var、plugins、www/admin/plugins、/www/images子目录赋予写权限。
  3. 在浏览器中访问http://{yourdomain}/openx,进入到OpenX的安装界面。
  4. 根据提示信息设置数据库配置和管理员配置。

提示:选择中文简体,会出现一些乱码问题,建议采用命名和语言版本均以英文为主。时区可以选择Asia/Shanghai。

基本的操作和使用

基础概念

  1. Advertisers:广告主
  2. Campaigns:广告活动
  3. Banners:广告
  4. Websites:网站
  5. Zones:广告位
  6. Targeting Channels:目标频道

基本操作步骤

  1. 添加广告主。例如:京东商城
  2. 为广告主添加广告活动。例如:节日大促
  3. 添加广告。例如:广告 980 X 90
  4. 添加网站。例如:http://www.uuu.com
  5. 添加广告位。例如:广告位 980 X 90
  6. 链接广告到广告位
  7. 复制广告位代码到网站

添加广告主

登录系统后,进入Inventory > Advertisers。

选择添加新广告主(Add new advertiser),进入添加新广告主界面。

填写广告主的基本信息(Basic information):

  • 名称(Name): 广告主名称必须唯一,广告主名称不能相同。 这里我们写“京东商城”
  • 联系人(Contact): 联系人将被用在所有给广告主的邮件里。
  • 邮箱(Email): 必填项,广告主的邮箱

在广告主报告(Advertiser report)区域,选择什么条件以及什么时间下需要给广告主发邮件:

  • 当广告计划自动生效或者失效的时候发邮件(Email when a campaign is automatically activated/deactivated):OpenX会在广告计划生效或者失效的时候给广告主发邮件提醒。如果你不想发送此提醒,可以不选此框。
  • 广告计划投放报告邮件(Email campaign delivery reports): 当您想日常性的给广告主发送报告的时候选择此选择框。默认的设置是每周发送报告给广告主。如果您想修改发送报告的周期(Number of days between campaign delivery reports),只要简单的修改下周期即可。如果您给广告主提供的访问系统的帐号,则不建议发送邮件报告。

其他(Miscellaneous)区域可以让您设置广告投放的限制选项:

  • 在一个页面只显示此广告主的一个广告(Display only one banner from this advertiser on a web page): 限制广告在一个页面上只显示一次。
  • 备注(Comments): 广告主的备注信息。

添加广告活动

完成广告主(京东商城)创建后,从广告主界面点击添加新广告活动(Add new campaign),系统将会带您到添加新广告活动的界面。

填写基本信息(Basic information):

  • 名称(Name):广告活动名称
  • 广告活动的类型(Campaign type):

下一步是选择广告活动的类型。有三种活动类型可选:

  1. 合约型(排期):Contract: 合约型广告计划将会在预订的时间和显示次数内投放。
  2. 合约型(买断):Contract (Exclusive): 买断式的广告计划将会占用所有的显示资源,并且优先级高于所有其他广告计划。
  3. 剩余抄底:Remnant: 标准的广告计划类型,可以基于特殊的投放限制及时期来进行投放。

选择好广告计划类型后,可以设置一些其他的内容:

  • 日期:Date: 输入广告计划的开始和结束日期。
  • 计费模式:Pricing: 允许您设置广告计划的计费模式(CPM、CPC、APC),费率和展示次数。
  • 广告计划优先级:Priority in relation to other campaigns: 默认的优先级为5. 优先级设置级别在1到10之间(10代表优先级最高),如果需要的话,可以设置每天投放的PV/Click或者转换的限额Set
  • 用户投放频次:Delivery capping per visitor: 此处可以设置总共以及每用户显示的限额次数。
  • 其他:Miscellaneous: 如果希望隐藏与此广告计划关联的广告主和网站,可以进行设置。另外,也可以设置竞争机制,如果设置了竞争机制,则OpenX在显示的时候投放该计划下所有的广告。

设置完成后,点击保存。

添加广告

  1. 点击添加广告(Add new banner)链接。
  2. 选择广告的类型(Please choose the type of the banner)。默认为上传本地广告物料文件到Web服务器(Upload a local banner to the webserver)。
  3. 填写广告名字(如广告 980 X 90)
  4. 上传图片

广告类型

  1. 使用Web服务器的本地广告 这是使用最广泛的广告类型。它用于图像广告包括JPG,GIF和PNG文件。广告上传到OpenX的广告服务器并存储在文件系统中的一个文件夹。安装系统时,默认图片文件上传到www/images/,并生生一个随机字符串文件名的文件。
  2. 使用SQL的本地广告 是把广告图保存在,在数据库中的二进制数据,而不是存储在一个文件夹。
  3. 通用的HTML广告 这可能是一个HTML网页的形式,多张图片,表格,JavaScript文件。
  4. 通用文本横幅 适用于任何拟作为纯文本显示。简单的文本链接是受欢迎的用法。此外,也可以写长段的文本作为广告。
  5. 外部广告(即url图片地址)

添加网站

进入Inventory > Websites,在网站管理界面,在右上方选择添加新网站(Add new website),您将可以看到添加新网站界面。

创建新网站:

  • 网站URL(Website URL): 输入您网站的URL。
  • 网站名(Name):输入网站名称。此名称将会显示在网站列表界面,注意网站名必须唯一。
  • 联系人(Contact):输入网站联系人。
  • Email: 输入网站管理员的Email地址。
  • 类目(Category):在下拉列表里选择网站的类目。
  • 国家/语言(Country/Language): 在下拉列表中选择相关的国家和语言。

完成以上操作后点击保存,添加网站成功。

添加广告位

进入Inventory > Zones,点击添加新广告位(Add new zone)选项,到达添加新广告位页面。

添加新广告位:

  • 名称(Name): 广告位名称必须唯一。如果此项为空,OpenX默认会设置一个名称,默认的是网站名称后面加上“-default”。
  • 描述(Description):输入广告位的相关信息。如广告位 980 X 90
  • 行业分类(Category):
  • 类型(Zone type):选择广告位类型(本指南有专门的页面解释各种广告位类型)
  • 尺寸(Size):必须为每个广告位选择尺寸(除了文字广告位之外),只有符合尺寸的广告创意才会在此广告位显示。下拉列表里面的尺寸都是IAB定义的标准尺寸,也可以设置自定义的尺寸。
  • 备注(Comments):广告位备注

一旦完成操作点击保存,完成添加广告位。

广告位类型

  1. 旗帜,按钮,或矩形:这是使用最广泛的广告位类型,可以显示包括图像在内的任何有创意的类型 JAVASCRIPT,HTML,等等。
  2. 浮动广告 此广告位类型是用来显示浮动或弹出的横幅上,如出现网络浏览器的动态行为 消失了一段时间后,移动光标,等等。
  3. 文字广告 你想要您的网站上卖文本连接,你应该使用这种类型
  4. 电子邮件/邮件列表版位 如果你想给你的网站用户发送电子邮件和简讯,使用此广告位,可以在电子邮件中嵌入广告横幅。

链接广告到广告位

在广告位列表中,点击链接广告(Linked Banners),选择一个广告主和广告活动。

或者在广告的详细页面的链接广告位(Linked Zones)标签中,选择一个广告位。

复制代码到网站

在广告位列表中,点击获取代码(Invocation Code)

Openx 账户类型

用户有一个用户名和密码,与至少一个OpenX帐户,并可以与任意数量的账户挂钩。一个用户可以有不同的连结多种帐户的多个角色。每个角色都有其自己的设置权限,定义用户可以执行相关联的帐户上的行动。

角色和权限

系统安装后的初始用户即是管理员,又是经理。

进入广告主,或网站的详情编辑页面,点击用户访问(User Access)标签,在操作(Actions)下拉菜单中,可以创建或关联使用该账户访问的用户。

管理员(Administrator)####

  • 创建经理帐户
  • 将用户添加到经理帐户
  • 可以作为一个经理
  • 创建其他管理员用户
  • 查看主页和用户日志页
  • 管理全球和维护设置
  • 直接选择

经理(Manager)

  • 创建和管理广告商和网站
  • 添加其他的经理帐户
  • 将用户添加到广告商和网站
  • 查看主页和用户日志页
  • 管理帐户偏好
  • 渠道管理

网站(Website)

  • 创建区域
  • 横幅链接到区域
  • 生成调用代码
  • 链接此帐户的其他用户

广告主(Advertiser)

  • 查看广告活动
  • 修改广告信息
  • 激活广告活动
  • 停用广告活动
  • 链接此帐户的其他用户

参考资料

GitLab和TortoiseGit、msysGit的配合使用

软件安装

下载和安装windows下Git环境:

  1. TortoiseGit(https://tortoisegit.org/),是 TortoiseSVN 的 Git 变种,主要用于图形化显示。
  2. msysGit(https://gitforwindows.org/),windows 下的Git 版本,是 TortoiseGit 所必须依赖的。

下载完两个软件之后,首先安装 TortoiseGit,安装完 TortoiseGit 之后先别急着用,接着安装 msysGit,安装过程中的一些选项都可以默认!

SSH密钥和Git Bash

本节介绍在 Git 命令行(Git Bash)中 SSH 密钥的生成,以及在 Gitlab 上的使用。

使用命令行进行 Git 操作,显得高端、大气、上档次。如果你不慕虚名,只想生活简单而美好,就像使用 SVN 小乌龟(TortoiseSVN)那样工作,可以直接跳过本节。

生成SSH密钥

  1. 检查当前用户目录中有没有 .ssh 目录。如果没有的话,在命令行中使用 mkdir .ssh 创建。
  2. 安装 Git 后,进入某个目录,使用右键菜单打开 “Git Bash”。
  3. 键入命令:ssh-keygen -t rsa -C "your email"。邮件地址可以不写,默认是 本机用户名@本机机器名 。最好是填写一些标识自己的记号。
  4. 提醒你输入 key 的名称,输入 id_rsa。注意: id_rsa 名字是固定的,因为 GitLab 只认识这个。
  5. 提醒你输入 key 的密码,空白即可。
  6. 在当前目录下产生两个密钥文件:id_rsa 和 id_rsa.pub
  7. 把生成的密钥文件复制到当前用户的 .ssh 目录下。

在 Gitlab 上添加公钥

用记事本打开、复制 id_rsa.pub 文件的内容,在 Gitlab 网站 My Porfile 页面右下角,点击 Add Public Key ,粘贴刚才复制的内容到 Key 的大文本框,提交即可。

注意:在复制内容的时候,文本的两端都不要有空格和换行。

在命令行中进行Git操作

从程序目录打开 “Git Bash”(或使用右键菜单),在命令行中git clone一个项目。

提示是否把项目Git库的域名设置为可信任的已知域名,直接回答yes就可以了。

其他命令,一样的用法。不清楚的话,可以查阅《史上最浅显易懂的Git教程》。

TortoiseGit中的密钥

本节介绍在Git小乌龟(TortoiseGit)中生成密钥,以及在Gitlab上的使用。

生成密钥

  1. 在开始菜单->TortoiseGit->Puttygen。这是一个用于TortoiseGit的Putty密钥生成器。
  2. 点击 generate 按钮。让鼠标在 generate 按钮以上、进度条以下的空白区域随机晃动,直到密钥生成完毕。
  3. 复制粘贴空白区域生成的SSH密钥文本(ssh-rsa。。。),在Gitlab网站My Porfile页面右下角,点击 Add Public Key ,粘贴刚才复制的内容到Key的大文本框,提交即可。注意:在复制内容的时候,文本的两端都不要有空格和换行。Title文本框随便写一些内容就可以,主要是区别不同的Key,没有特别的用途。
  4. 点击 save private key 按钮,把文件生成在当前用户目录下的.ssh目录中(生成的文件后缀是.ppk)。

使用右键菜单

  1. 在打算git clone项目的目录中,右键选择Git克隆
  2. 勾选 加载putty密钥 ,并选择上面生成的后缀是.ppk的私钥文件。
  3. 后续的操作,及除git clone以外的工作,就不需赘述了。

参考资料

Yeoman的安装和使用

安装步骤

本教程的内容较少原创,多从其他文档上摘录。

Yeoman 1.0 包含以下三套工具,分別說明如下:

  • yo - the scaffolding tool from Yeoman ( 用來自動產生網站骨架或程式碼的工具 )
  • bower - the package management tool ( 用來管理特定網站下所使用的各式前端套件,如: jQuery )
  • grunt - the build tool ( 用來執行一些網站的自動化工作,例如單元測試、最小化、執行批次命令 )

要安裝這三套工具之前,還有許多相依的工具必須事先安裝,否則工具指令會無法正確執行,以下包括 node.js , Git for Windows 與 RubyInstaller 這三套工具的安裝注意事項:

安裝 node.js for Windows

请选择正確的 Windows 安裝包,注意 CPU 架構有区分 32-bit 与 64-bit 两种:

node安装包

安裝时要确保 Add to PATH 項目有被安装进去:

node安装

安裝 Git for Windows 工具

安裝到 Adjusting your PATH environment 步骤時,选择 Run Git from the Windows Command Prompt 的相容性比较高,问题也会少很多:

git安装

其他保留预设值即可。

安装 Ruby 执行环境

由於前端开发作业经常会用到 Compass 工具撰写 CSS,而且在使用 Yeoman 的時候,有些产生器所产生的 grunt 定义包也会用到 Compass 来执行,所以可以预先安装好。

安裝 Compass 工具会需要先安裝 Ruby 才能安装与使用。建议通过 RubyInstaller (Windows) 提供的 MSI 安装包进行安裝,但安裝的过程中有一個步驟非常重要,你必須在 Installation Destination and Optional Tasks 步驟時,勾选 Add Ruby executables to your PATH 选项才行,如下图示:

ruby安装

安裝好这些工具之后,就可以开始准备安裝 Yeoman 相关工具了:

  1. 打开命令行。

  2. 使用npm 安裝 yo , bower 與 grunt 工具。

     npm install -g yo grunt-cli bower
    

    其中 -g 代表要把 yo , grunt-cli , bower 這三个套件安裝到全域 (global)

    yo安装

  3. 安裝 yo 相关的 程序码产生器 (generator) 套件

    因為 yo 這套工具主要就是用來自動產生網站骨架或程式碼,在執行 yo 之前,你必須預先安裝好這些程式碼產生器範本,這些被稱為 YEOMAN GENERATORS,你可以在 YEOMAN GENERATORS 找到許多現成的產生器範本,並且一樣透過 npm 進行安裝。

    例如你在 YEOMAN GENERATORS 頁面找到一個 webapp 產生器,那麼你可以用以下指令進行安裝:

     npm install -g generator-webapp
    

    如果想安裝 angular 產生器,那麼你可以用以下指令進行安裝:

     npm install -g generator-angular
    

    以此類推!

  4. 如果你要順道安裝 Compass 的話,也可以輸入以下指令進行安裝

     gem update --system
     gem install compass
    

    Yeoman 與 Compass 安裝完成!

Yeoman 的使用

  1. 先创建一个网站目录,例如webapp。

  2. 在这个目录下,命令行执行命令,产生网站骨架:

  3. yo angular

    这是一個交互的过程,yo安装哪些模块:

    创建网站
    安装完成后可能会遇到一些问题,如:
    创建网站
    表示依赖的模块需要手动bower install & npm install安装。