CSS 实现图片等比缩放

嗯因为客户的站点编辑内容的时候上传的图片部分没有缩放,所以得在 CSS 上处理一下。

直接上代码咯。

1
2
3
4
5
6
.content img.full-width {
max-width: 100%;
max-height: 100%;
width: auto;
height: auto;
}

非 IE6 下工作正常,不过这种老掉牙的浏览器就不要考虑它了。
(不过客户说还是要考虑的 … 望天 … 你在说神马 … 我不知道 IE6 是什么东西诶 …

使用 Reprepro 构建自己的 APT 仓库

最近使用 Puppet 的过程中,发现用 dpkg 做 Package 的 Provider 时总是会在报告里留下 ensure changed 'purged' to 'present' 这样子的日志,即使这个包已经被安装过了还是如此。

于是我的 Foreman 就被这样的日志强暴了三天。。。

Snip20130903_16.png

问了下 Eric 酱,好像只能自建 APT 仓库了,Debian 官方的 Wiki 里有好多种建立 APT 仓库的工具。
这里我使用 reprepro,功能足够,设置简单,嗯,就它了。

安装 Reprepro

1
apt-get install -y reprepro

配置 Reprepro

首先呢,创建一个文件夹来存放你的仓库咯,我放在 /data/repo/ 这个目录。

1
mkdir -p /data/repo/conf

然后需要创建 distributions 这个文件用来标识发行版,我管理的机器主要有三个发行版,以下的内容按自己实际情况修改:

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
Origin: Aveline Swan
Label: aveline
Suite: precise
Codename: precise
Version: 12.04
Architectures: i386 amd64
Components: main
Description: Packages for Aveline Swan

Origin: Aveline Swan
Label: aveline
Suite: squeeze
Codename: squeeze
Version: 6.0
Architectures: i386 amd64
Components: main
Description: Packages for Aveline Swan

Origin: Aveline Swan
Label: aveline
Suite: wheezy
Codename: wheezy
Version: 7.0
Architectures: i386 amd64
Components: main
Description: Packages for Aveline Swan

添加包

/data/repo 这个目录执行 reprepro includedeb 发行版 deb包位置 命令添加既可。

设置 Web 服务

这里我直接使用了 nginx,配置文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
server {
listen 80;
server_name apt.swan.im;

location / {
root /home/apt;
autoindex on;
}

location /conf {
return 403;
}
}

添加 APT 仓库到服务器

在 Puppet Master 上执行 puppet module install puppetlabs/apt 安装 apt 模块。

然后在 site.pp 里添加

1
2
3
4
5
6
7
include apt

apt::source { 'swan':
location => 'http://apt.swan.im',
repos => 'main',
include_src=> false
}

如果你的仓库里不包含源码的话,记得要把 include_src 这个设置为 false,不然会报错。

New DNS Service

一直有感於沒有足夠好用的 DNS 服務,於是自己寫了一個。

DNSPod 免費版限制太多收費版還是不夠好玩兒,Amazon Route53 的 Latency-Based 記錄也如同雞肋,完全起不到 GeoIP 的作用,至於 Dyn … 呃好吧這家比較贊但是我還是喜歡自己折騰一下XD

介紹一下架構:

DNS 基於 PowerDNS + NodeJS + MySQL,一共用了 18 + 2 + 2 台 VPS,DNS 節點內存均爲 1G。

其中 14 台是 AnyCast DNS,對外只用一個 IP,不過從監控來看好像只有幾個節點比較忙其他幾個都好冷清,感覺好浪費 :-( 使用率太低以及服務商響應速度不理想,已經下線

另外 4 台是 UniCast DNS。

  • DigitalOcean San Francisco Datacenter (ns1)
  • 美團開放服務 北京數字北京機房(ns2)
  • Nlayer Los Angeles Datacenter (ns3)
  • ChinaCache 北京順義海航機房 (ns4)

另外還有兩臺跑 Portal 和 API,和數據庫在同一個機房不過爲了保證被攻擊時被誤傷所以沒有放在同一臺機器上嗯。

至於 GeoDNS,我使用的是 MaxMind 的 GeoLite 庫和由魔熊維護的 SinaIP 庫來解析地址。

系統已經上線快一週了,運行正常,求壓力測試。

貼一張狀態照。

QQ20130812-1.png

吖,對了另外提供個小工具,可以通過 dig 來查詢自己的 IP 地址什麼的:
需要注意一下裏面的 TXT 記錄是用 Punycode 編碼過的。

1
2
3
4
5
6
7
8
# 查詢 IP 地址
dig ip.noquery A @ns1.noquery.net
# 查詢 IP 所屬組織
dig organization.geoip.engine.noquery TXT @ns1.noquery.net
# 查詢 IP 所在城市信息
dig city.geoip.engine.noquery TXT @ns1.noquery.net
# 查詢 IP 所在國家信息
dig country.geoip.engine.noquery TXT @ns1.noquery.net