苹果相关

浏览模式: 标准 | 列表 | 图文

Linux短信平台的搭建

关于linux下发短信,我是找到这篇 文章,但是我想要的只是一点点啦。因为我是用SP接口。

先上他的内容,然后我把我当初做的列出来,原文是在:http://www.cnblogs.com/pipc/archive/2010/07/11/1775007.html:

前段时间为用户提供VPN 和SSH 服务,消息的都是通过电子邮件发送的。没有短信的快捷和实时性,决定搭建自己的短信平台。

在此之前我也用过其他服务商提供的短信平台,都有各种各样的问题。

其中短信平台存在的问题:

1、发送短信有时段限制,有些短信通道只能在 上午8点 到晚上8点发送,如果遇到夜间的紧急时间需要发送短信就无能为力了,比如服务器当机、MSSQL数据库日志满了、系统盘空间不足。 在Linux 下磁盘空间不足会照成MySQL启动失败。

2、通过通道发送短信限制十分严格,相对于个人手机,进行关键词屏蔽非常厉害, 比如 “发票”、“还钱”、“你妈”有些常用词都不能发。 句子里包含关键词都发送失败, “我中午去打印手机话费发票”、“听说你妈住院了,现在身体好吗?”, 通过个人手机限制的就不严格。

3、通道拥挤的情况,因为这些通道一般都是提供批量发送广告的, 一次发送1万条,10万条都很正常。 如果这个时候你发送短信,只能排在消息队列的最后。 通常延时20分钟到4小时。

4、通道设备故障,因为各种情况照成的消息队列内的短信丢失。 你调用API接口发送短信,短信状态时成功的,由于平台的故障照成短信没有发送成功,而且你得不到错误的状态,费用照扣。

5、扣量,各个短信平台情况不一样, 价格比较低的扣量比较严重, 比如你群发 10万条, 前 5000条100%发送, 5000 -1万条 发送 95%, 1万-2万条 发送 90%, 到10万条的时候55% 甚至更低。

发送短信一般有2种方法, 一种是通过短信通道发送, 还有就是自己购买设备发送短信。

申请单独的短信通道要求比较高,一般在10-30万费用,比较大型的公司才会申请,比如银行、证劵等, 发送的号码都是95555 ,96000等, 还有就是106557**** 这样的通道。 申请的费用较少,一般几千元就可以申请到。 通道提供商业一般提供2种接口, 一种是API接口,通过API发送短信,比如http://www.pipc.net/sms/send.aspx?id=130130****& amp;msg=测试短信 ,还有一种数据库接口,你可以连接到数据库直接把消息插入相关的表中。

--EOF--

因为我是采用的购买的SP的服务。因此,发送短信就相当于类似上面的方法了。不过我也想过接收短信,是采用原文中下面的方式(http://www.cnblogs.com/pipc/archive/2010/07/11/1775007.html)【我这里不一一介绍】

我具体是在linux下面跑一个cron任务,这样可以一直从队列里进行发送短信。大多数情况下我们是即时发送的,只是有时候会有堵塞,这时候我们就扔到队列里(当然,是需要返回结果不是手机号码不正确的原因才会扔到队列里,如果手机号码都不对了,扔到队列里也发送不了。)

接收短信,只要在任何一台机器上搞一个移动猫,用任何程序都可以定时读取信息。如果是接收到相应的代码就触发一些操作。有这种功能就免得你买一些需要接收固定号码的SP了,那样的价格高很多呢。

Google爬虫:不仅索引链接,还可以运行js代码

让人意外的是这个标题:【Google爬虫:不仅索引链接,还可以运行js代码】,真的没想过,看看cnbeta怎么说的?

一直以来Google的搜索爬虫就具有阅读JavaScript代码的功能,但是多年以来我们一直都不清楚Google的爬虫是否真正理解了其正在抓取的 东西或者说它仅仅只是在易于理解的数据结构中对各种链接进行呆板的检索。本周五,一位Google的发言人向《福布斯》确认Google所作的远远超过对 js代码的简单分析。这位发言人表示:“Google能够分析并理解某些JavaScript”。

Google的表述让我们意识到其爬虫所作的工作也许不仅仅只是获得对页面的相关链接,还能够像人一样与各类程序发生互动——发现Bing这类搜索引擎所 不能发现的网络世界。而这意味着,Google重新定义了搜索引擎。在Google的搜索结果里面只有很少的js代码,而且Google也将这种js代码 的解释功能做了很多保留。比如在Google站点搜索(Google's Site Search)的文档显示其不能够索引带有js代码的内容。一本关于索引的入门教材这样写道:它(Google爬虫)“不能够处理带有富媒体的内容或者是 动态网页”。仔细检查服务器日志中的记录我们便可以发现Google现在索引那些并不是直接包含在js代码里面的链接,Google的爬虫只有确定自己能够运行部分代码的时候才能明白整段代码到底是什么意思。

Mark Drummond,一家独立搜索引擎公司Wowd的首席执行官(我们在今年之前的杂志中采访过他)在一封邮件中告诉我们理解js代码“是一个非常深刻、难度极大和一场经典的计算科学难题。”他解释道Google的努力在于它能够发现js代码在网页中是否存在停止运行的情况。 他表示“停止运行的问题是无法判定的”,他说迄今为止还没有已知的算法能够在任何程序的任何时间点告诉我们该程序是否陷入了死循环,而且数学上已经证明了 这一点。Drummond自己的公司通过人工的方式检索其索引并标明是否有可能简化这个复杂的问题,同时判断一个网络程序是否向另外的程序发起了数据请 求。也许,这正是Google现在在做的事情。

另一位同Google接近的搜索引擎人士也认同Drummond关于理解js代码复杂性的看法。他认为用一个程序去分析另一个程序是很困难的事情,执行js代码几乎是现阶段能够做到的极限了。

而Google在六月发布的改进版搜索算法(即Caffeine)似乎开始能够理解部分js代码了。如果这是真的,那么Google的工程师已经教会了其爬虫如何执行部分js代码。这真是一大突破!

cnBeta.com编译自Forbes

--EOF--

额。这样就比较有意思了。。JS也能够被解析?确实有点恐怖,未来会怎么样?真的是象浏览器一样的访问吗?他们也会兼容所有的浏览器吗?会。。。模拟登录吗?这才是我关心的,会识别验证码吗?

Nginx针对IP和目录限速

Nginx针对IP和目录限速

一般来说,限速这东西仅限于FTP,可以给FTP用户进行限速,但,如果你没有FTP,仅有HTTP的情况下如何呢?上次vampire演示过一段,同时还根据URL来读取文件的区块。事实上我们的需要没有那么复杂,向tom zheng博客上的这段就够我们用了。不是吗?再者,现在用nginx的机器应该很多了吧(我没有用,因为,我不可能为线上每个用户都去设置一遍他们的rewrite规则。只能将就一下了。)

原文来自:http://zys.8800.org/index.php/archives/322

nginx可以通过HTTPLimitZoneModule和HTTPCoreModule两个目录来限速。

示例:

limit_zone one $binary_remote_addr 10m;

location / {
limit_conn one 1;
limit_rate 100k;
}

说明:

limit_zone,是针对每个IP定义一个存储session状态的容器。这个示例中定义了一个10m的容器,按照32bytes/session,可以处理320000个session。

然后针对 /目录进行设定。

limit_conn one 1; 是限制每个IP只能发起一个连接。

limit_rate 100k; 是对每个连接限速100k. 注意,这里是对连接限速,而不是对IP限速。如果一个IP允许两个并发连接,那么这个IP就是限速limit_rate x 2。

关于limit_zone的原始文档,请见 http://wiki.nginx.org/NginxHttpLimitZoneModule

关于limit_rate和limit_conn的原始文档,请见 http://wiki.nginx.org/NginxHttpCoreModule

Facebook图片管理架构(转帖学习一下)

Facebook图片管理架构(转帖学习一下)

Facebook 的照片分享很受欢迎,迄今,Facebook 用户已经上传了150亿张照片,加上缩略图,总容量超过1.5PB,而每周新增的照片为2亿2000万张,约25TB,高峰期,Facebook 每秒处理55万张照片,这些数字让如何管理这些数据成为一个巨大的挑战。本文由 Facebook 工程师撰写,讲述了他们是如何管理这些照片的。

旧的 NFS 照片架构
老的照片系统架构分以下几个层:
# 上传层接收用户上传的照片并保存在 NFS 存储层。
# 照片服务层接收 HTTP 请求并从 NFS 存储层输出照片。
# NFS存储层建立在商业存储系统之上。

因为每张照片都以文件形式单独存储,这样庞大的照片量导致非常庞大的元数据规模,超过了 NFS 存储层的缓存上限,导致每次招聘请求会上传都包含多次I/O操作。庞大的元数据成为整个照片架构的瓶颈。这就是为什么 Facebook 主要依赖 CDN 的原因。为了解决这些问题,他们做了两项优化:
# Cachr: 一个缓存服务器,缓存 Facebook 的小尺寸用户资料照片。
# NFS文件句柄缓存:部署在照片输出层,以降低 NFS 存储层的元数据开销。

新的 Haystack 照片架构
新的照片架构将输出层和存储层合并为一个物理层,建立在一个基于 HTTP 的照片服务器上,照片存储在一个叫做 haystack 的对象库,以消除照片读取操作中不必要的元数据开销。新架构中,I/O 操作只针对真正的照片数据(而不是文件系统元数据)。haystack 可以细分为以下几个功能层:
# HTTP 服务器
# 照片存储
# Haystack 对象存储
# 文件系统
# 存储空间

存储
Haystack 部署在商业存储刀片服务器上,典型配置为一个2U的服务器,包含:
# 两个4核CPU
# 16GB – 32GB 内存
# 硬件 RAID,含256-512M NVRAM 高速缓存
# 超过12个1TB SATA 硬盘

每个刀片服务器提供大约10TB的存储能力,使用了硬件 RAID-6, RAID 6在保持低成本的基础上实现了很好的性能和冗余。不佳的写性能可以通过高速缓存解决,硬盘缓存被禁用以防止断电损失。
文件系统
Haystack 对象库是建立在10TB容量的单一文件系统之上。文件系统中的每个文件都在一张区块表中对应具体的物理位置,目前使用的文件系统为 XFS。
Haystack 对象库
Haystack 是一个简单的日志结构,存储着其内部数据对象的指针。一个 Haystack 包括两个文件,包括指针和索引文件:

32083941cbd686a90e93fddd3ac80c8c

Haystack 对象存储结构

48e61ae54908465dff3af2ad6af39f17

f283625af14fa7f8aaff01e9693c10d5

指针和索引文件结构

Haystack 写操作
Haystack 写操作同步将指针追加到 haystack 存储文件,当指针积累到一定程度,就会生成索引写到索引文件。为了降低硬件故障带来的损失,索引文件还会定期写道存储空间中。

Haystack 读操作
传到 haystack 读操作的参数包括指针的偏移量,key,代用Key,Cookie 以及数据尺寸。Haystack 于是根据数据尺寸从文件中读取整个指针。

Haystack 删除操作
删除比较简单,只是在 Haystack 存储的指针上设置一个已删除标志。已经删除的指针和索引的空间并不回收。

照片存储服务器
照片存储服务器负责接受 HTTP 请求,并转换成相应的 Haystack 操作。为了降低I/O操作,该服务器维护着全部 Haystack 中文件索引的缓存。服务器启动时,系统就会将这些索引读到缓存中。由于每个节点都有数百万张照片,必须保证索引的容量不会超过服务器的物理内存。

对于用户上传的图片,系统分配一个64位的独立ID,照片接着被缩放成4种不同尺寸,每种尺寸的图拥有相同的随机 Cookie 和 ID,图片尺寸描述(大,中,小,缩略图)被存在代用key 中。接着上传服务器通知照片存储服务器将这些资料联通图片存储到 haystack 中。

每张图片的索引缓存包含以下数据

6e338a0b8bbafeeb71ed769024d5a6fb

Haystack 使用 Google 的开源 sparse hash data 结构以保证内存中的索引缓存尽可能小。
照片存储的写/修改操作
写操作将照片数据写到 Haystack 存储并更新内存中的索引。如果索引中已经包含相同的 Key,说明是修改操作。

照片存储的读操作
传递到 Haystack 的参数包括 Haystack ID,照片的 Key, 尺寸以及 Cookie,服务器从缓存中查找并到 Haystack 中读取真正的数据。

照片存储的删除操作
通知 Haystack 执行删除操作之后,内存中的索引缓存会被更新,将便宜量设置为0,表示照片已被删除。

重新捆扎
重新捆扎会复制并建立新的 Haystack,期间,略过那些已经删除的照片的数据,并重新建立内存中的索引缓存。

HTTP 服务器
Http 框架使用的是简单的 evhttp 服务器。使用多线程,每个线程都可以单独处理一个 HTTP 请求。

结束语
Haystack 是一个基于 HTTP 的对象存储,包含指向实体数据的指针,该架构消除了文件系统元数据的开销,并实现将全部索引直接存储到缓存,以最小的 I/O 操作实现对照片的存储和读取。

本文国际来源:http://www.facebook.com/FacebookEngineering#/note.php?note_id=76191543919&ref=mf

中文翻译来源:COMSHARP CMS 官方网站

我的来源:http://zys.8800.org/index.php/archives/334

利用.htaccess绑定域名到子目录

利用.htaccess绑定域名到子目录

rewrite规则说白了,其实并不难,只要你了解了正则规范后,你就会发现,其实,写这东西,比写PHP的正则要容易的多。毕竟PHP的正则你要考虑很多东西。而用在URL上的,不可能太多。
下面的这篇文章是08年的,不过仍然可以作为参考。以前的uchome下面,好象也是支持三级域名的。也可以参考一下官方的配置,但。。。好象是找不到官方的rewrite规则?
二级域名。如果你真的不会设置,手头又没有啥资料,你可以安装一下wordpress多用户版,安装完毕后生成的.htaccess文件,你就可以拿来作为参考了。

前提
首先得把域名绑定绑定了,比如把dev.ccvita.com解析到211.136.108.190这个IP
其次是在网站管理面板里,为网站绑定dev.ccvita.com
最后编辑配置.htaccess文件,就可以了。如果没有开启.htaccess请访问下面的内容,《Apache之AllowOverride参数详解》:http://www.ccvita.com/281.html

.htaccess文件内容
RewriteEngine on
# 把 ccvita.com 改为你要绑定的域名.
RewriteCond %{HTTP_HOST} ^(www.)?ccvita.com$

# 把 subfolder 改为要绑定的目录.
RewriteCond %{REQUEST_URI} !^/subfolder/

# 不要改以下两行.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# 把 dev 改为要绑定的目录.
RewriteRule ^(.*)$ /dev/$1

# 把 ccvita.com 改为你要绑定的域名
# 把 dev 改为要绑定的目录.
# dev/ 后面是首页文件index.php, index.html
RewriteCond %{HTTP_HOST} ^(www.)?ccvita.com$
RewriteRule ^(/)?$ dev/index.php [L]

文中所涉及的域名,我没有更改过哦。原文来自:http://www.ccvita.com/362.html。
同样,如果你是typecho,如果你在后台打开rewrite规则后,你也可以参考一下(不过,这个只适合单用户,哪天要是typecho开发多用户版,估计现在这个.htaccess也是可以被拿来使用的,谁知道呢?)

最精确硬盘分区的算法

想知道磁盘空间有多大,其实还是有算法的,下面的就是从网络搜索而来,当然我是从http://xinsync.xju.edu.cn/index.php/archives/5137COPY过来的。仅仅作为一个资料查看一下

硬盘一般有255磁头,63扇区,故每柱面大小为:512byte x 255 x 63=8225280bytes =7.84423828125 MB

如果要分40GB,那么要40×1024MB=40960MB
需要柱面数为40960÷7.84423828125=5221.66
取整数既为5222个柱面,应分M数为5222×7.84423828125=40962.6123046875MB

不管小数点后面几位都进1,也就是40963MB,windows就认为是40GB了。
这个方法NTFS和FAT32通用。

下面附10GB到200GB整10GB递增的精确计算结果:
10GB = 10245MB
20GB = 20482MB
30GB = 30726MB
40GB = 40963MB
50GB = 51208MB
60GB = 61444MB
70GB = 71681MB
80GB = 81926MB
90GB = 92162MB
100GB = 102407MB
110GB = 112644MB
120GB = 122888MB
130GB = 133125MB
140GB = 143362MB
150GB = 153606MB
160GB = 163843MB
170GB = 174088MB
180GB = 184324MB
190GB = 194561MB

此精确分区结果,在管理工具-磁盘管理界面,和Windows资源管理器里面显示的是整数,10G就是10.00GB,20G就是 20.00GB,40G就是40.00GB。

福珑2E电脑硬盘重装系统、系统Ghost以及简单配置

福珑2E电脑硬盘重装系统、系统Ghost以及简单配置

前两天,突然接到一个电话,看来源是江苏的,接起来后感觉到意外,原来是龙芯那边打来的,问我福珑2E用的怎么样。这才让我想起,原来我的福珑2E已经扔在抽屉里2年多了。买福珑本身是一个小意外,当初的想法是利用这样的小盒子连软件一起打包卖的,但最后,接单的项目结束了,被人忽悠了一下,但是电脑也买了回来,于是就自己折腾了一段时间。但后来还是没有正式使用。

如今我又想使用了,想用它来代替电视的机顶盒,看电影啥的。可是却发现原来我的机器不能启动了,而且,还不会安装。这不,网上找了点资料,先备份一下,然后过两天慢慢折腾(主要是没有显示器了。。。)

原文很长。。。不过也得转呀。来源是:http://hi.baidu.com/busybox/blog/item/19aa3f8b69ccadd5fc1f104d.html

--START--

我的条件是有了台能上网的X86电脑,装有XP,软硬齐全。
一、硬盘重装系统

1.把随机附送的光盘在XP下做成debian.iso镜像文件,也可以重网上直接下载http://www.lemote.com/debian/iso/里 面直接下载,重命名为debian.iso,重命名的好处是以后输入命令后方便。

2.先介绍下我的盒子的分区:
/根分区挂载的是/dev/hda1
/home分区挂载的是/dev/hda2
/swap分区挂载的是/dev/hda3
/opt分区挂载的是/dev/hda4
把debian.iso文件拷到盒子里的/home分区,在终端输入如下命令:
su
mount -o loop /home/debian /cdrom
cd /cdrom/boot
cp setup /

3.重启电脑按DEL键进入BIOS,进入BIOS后在PMON下输入如下命令:
PMON>load /dev/fs/ext2@wd0a/setup
PMON>g console=tty
开始硬盘重装系统。

4.根据提示依次选择"语言"->"简体中文","国家"->"中国","键盘"->"美式英语"。

5.在Debian安装程序主菜单出现后,按"Alt+F2",然后再按"Enter"。出现命令提示符,输入如下命令:
cd /mnt
mkdir home iso
mount /dev/hda2 /home
mount home/debian.iso iso
输入完成后,按"Alt+F1"返回Debian安装程序主菜单。

6.选择“探测并挂载CD-ROM”,根据提示依次选择:
"从驱动软盘中加载光盘驱动器的驱动吗?"->"否"
"手动选择光盘驱动器设备及其模式吗?"->"是"
"使用此光盘驱动器所需要加载的模块"->"none"
"光盘驱动器所对应的设备文件"->"键入/dev/loop0"
最后选择"继续"。

7.然后依次选择"配置网络"、"探测网络设备"
"使用DHCP进行网络自动配置"->"是"
"网络自动设置失效"(因为我的盒子没有联网)->"继续"
"网络配置方式"->"现在不进行网络配置"
"主机名"->"debian"
"Debian归档镜像"->"www.lemote.com"
"HTTP代理信息"(留空)->"继续"
"无效的归档镜像"(因为没联网)->"继续"
又返回到"选择归档镜像"->"返回"。

8.选择"探测磁盘"->"继续进行分区吗?"->"是"->"手动"分区。我的分区如下:
/根目录挂载/dev/hda1-----格式化成ext3
/home挂载/dev/hda2------不格式化,保持现有数据
/swap挂载/dev/hda3-------格式化成swap格式
/opt挂载/dev/hda4---------不格式化,保持现有数据
最后,选择"分区设定结束并将修改写入磁盘"->"将改动写入磁盘吗?"->"是"。

9.系统时间设置。提示"您的系统时间设置为UTC?"->"是"。

10.用户设置:
"Root用户密码"->"输入密码"
"请再次输入以验证其正确性"->"重复输入"
"请输入用户名"->"loongson"
"您的帐号用户名"->"loongson"
"请为新用户选择一个密码"->"输入密码"
"请再次输入以验证其正确性"->"重复输入"。

11.开始安装......

12.出现提示:
"要安装的内核"->"linux-image-2.6.18-godson2e"
"使用网络镜像吗?"->"否"
"被释放掉的有关security.debian.org的条目已被加到/etc/opt/soures.list文件中"->"继续"
"您要参加软件包流行度调查吗?"->"否"
"选择要安装的软件“-”桌面环境+标准系统"(按空格键选择)->"继续"。

13.等待......出现提示:
"X服务器所使用的视频模式"-"1024*768+800*600+640*480"(按空格选择)->"继续"。

14.一段时间后,出现提示:
"您将需要手动启动/dev/hda1分区上的内核并添加内核参数root=/dev/hda1"->"继续"。

15."安装完成"-"继续",重启系统,按DEL键进入BIOS,在PMON下输入如下命令(设置系统启动内核):
PMON>load /dev/fs/ext2@wd0a/boot/vmlinux-2.6.18-godson2e
PMON>g console=tty root=/dev/hda1


二、系统Ghost(官方版本)

1.在www.lemote.com/debian-testing/for-2e/目 录下载hda1.tar.gz和hda2.tar.gz。

2.福珑的预装系统打了有两个包:hda1.tar.gz,hda2.tar.gz。只要把这两个包分别解压到hda1和hda2上就可以了。如果 你安装了两个系统,可以在第二个系统中挂载和解压操作就可以了,如果你只有一个系统,那就可以启动一个rescue内核来操作,不过这都是在字符界面下完 成。

3.下面介绍一下具体做法:
假设我把这两个包拷贝在系统的第四个分区(hda4)根目录(/),在第一个分区(hda1)的boot目录下有rescue内核(预装的系统中都带了这 个内核,如果你的系统中没有,可以到http://www.lemote.com/debian/boot/) 下载。开机按住空格键(或者其他键,只要不是enter就行)进入PMON界面,输入如下命令:
PMON>load /dev/fs/ext2@wd0/boot/rescue
PMON>g console=tty video=radeonfb:800x600@60
然后rescue内核就开始启动,内核启动完成后会提示:
Please press Enter to activate this console
按回车就可以激活这个控制台,这时可以用mkfs.ext3 /dev/hda1和mkfs.ext3 /dev/hda2命令将hda1和hda2格式化。
然后cd /mnt进入mnt目录下创建三个子目录hda1,hda2和hda4(创建目录用mkdir 目录名称,例如创建hda1目录可以用命令mkdir hda1)。
然后将三个分区(hda1,hda2,hda3)分别挂载到/mnt/hda1,/mnt/hda2,/mnt/hda4(挂载可以用mount命令,例 如挂载hda1到/mnt/hda1,可以用命令mount /dev/hda1 /mnt/hda1)。
挂载好以后用cd /mnt/hda4进入hda4目录,然后开始将两个包分别解压到两个分区中,解压命令是:
tar xvzf hda1.tar.gz -C /mnt/hda1/(注意这个C是大写的)。
这是将第一个分区的内容解压到hda1中,这个过程时间可能比较长,等这个过程结束后就可以解压第二个分区的内容了,命令是:
tar xvzf hda2.tar.gz -C /mnt/hda2/
这个过程是比较快的。
解压完成后系统就安装好了。
系统中有2.6.21和2.6.18两个内核,你可以在PMON中设置你想启动的内核。


三、简单配置

1.内核更新。
刚装的系统内核vmlinux-2.6.18-godson2e没有ppp模块所以不能上网。在http://www.lemote.com/download/downloads_27.html下 载福珑迷你电脑64位内核2.6.22.9(kernel_2.6.22_9_lm64.tar.gz)64位的到U盘。U盘插入盒子,自动识别出来后, 输入如下命令:
cd /media/usbdisk
cp kernel_2.6.22.9_lm64.tar.gz /home
cd /home
tar xvfz kernel_2.6.22.9_lm64.tar.gz
cd boot
mv vmlinux vmlinux-2.6.22.9-64
cp vmlinux-2.6.22.9-64 /boot
cd ..
cd lib/modules
cp -r 2.6.22.9lm64 /lib/modules
重启机器,按DEL键进入BIOS,在PMON下输入如下命令:
PMON>set al /dev/fs/ext2@wd0a/boot/vmlinux-2.6.22.9-64
PMON>set karg "console=tty root=/dev/hda1"
PMON>reboot
这样以后进入系统使用的就是64位的2.6.22.9内核了。

2.字体设置。
在http://wqy.sourceforge.net或http://wenq.org可下载最新的文泉驿字体。不过这两个网站我上不去,于是在http://www.codeput.com/soft/view-software-12667.html下 载了最新的文泉驿字体-文泉驿字体之“祈祷”的压缩包zenhei.rar。把zenhei.rar中的wqy-zenhei-0.6.26-0.deb 解压到U盘中。U盘插入盒子,执行如下命令:
cd /media/usbdisk
dpkg -i wqy-zenhei-0.6.26-0.deb
字体安装成功后,下面就可以直接在子弟设置里设置使用文泉驿字体了。

3.输入法安装
因为debian的镜像文件在/dev/hda2也就是/home分区,故可以直接用它安装。
打开终端输入如下命令:
mount -o loop /home/debian.iso /cdrom
apt-get install scim
SCIM随系统启动:
在/etc/X11/Xsession.d目录下新建一个名叫95xinput的文件,内容如下:
/usr/bin/scim -d
XMODIFIERS="@im=SCIM"
export XMODIFIERS
可以通过输入如下命令完成:
cd /etc/X11/Xsession.d
vim 95xinput
然后按键“A”开始输入:
/usr/bin/scim -d
XMODIFIERS="@im=SCIM"
export XMODIFIERS
输入完成后,按Esc键,再按:wq后,按"Enter"键后保存退出。
这样,输入法安装完成,并随系统开机启动。

4.宽带上网设置
首先从http://www.roaringpengwin.com/products/pppoe下 载rp-pppoe-3.10.tar.gz并拷入U盘。
不过我在安装rp-pppoe之前还安装了pppoeconf,因为使用pppoeconf会经常掉线,经过设置后仍然如此,故事用rp-pppoe。
先介绍pppoeconf的安装,因为debian的镜像文件在/dev/hda2也就是/home分区,故可以直接用它安装,打开终端输入如下命令:
mount -o loop /home/debian.iso /cdrom
apt-get install pppoeconf
如果用apt-get install不能安装成功,可以用以下方法:
cd /cdrom/pool/p/pppoeconf
ls
然后用dpkg -i命令安装其文件夹下的文件,一般会提示缺少的依赖,可以在/cdrom/pool目录下依次寻找并安装,然后返回安装pppoeconf就可以了。
下面介绍rp-pppoe的安装,把已经拷有rp-pppoe-3.10.tar.gz的U盘插入盒子,在终端输入如下命令:
cd /media/usbdisk
cp rp-pppoe-3.10.tar.gz /opt
cd /opt
tar xvfz rp-pppoe-3.10.tar.gz
cd rp-pppoe-3.10
./go
知道安装完成,安装完成后可以直接进行配置,也可以以后用pppoe-stup来进行配置。如果之前没安装pppoeconf,此处安装时会提示安装 ppp,所以,最好先安装pppoeconf再安装rp-pppoe。
以下是rp-pppoe的配置过程:
//以下是屏幕显示:
Welcome to the Roaring Penguin ADSL client setup. First, I will run some checks on your system to make sure the PPPoE client is installed properly...
Looks good! Now, please enter some information:
USER NAME
>>> Enter your PPPoE user name :
输入连入宽带网的账号,值得注意的是,如果接入ADSL,使用中国电信的服务可直接输入账号,而如果是接入中国网通的以太网,要紧跟着账号后面输入! Internet(I要大写)。
INTERFACE
>>> Enter the Ethernet interface connected to the ADSL modem
For Solaris, this is likely to be something like /dev/hme0.
For Linux, it will be ethn, where 'n' is a number.
(default eth0):
输入准备接入互联网的网卡名,如果是缺省的就直接敲回车键。
>>> Enter the demand value (default no):
直接回车。
DNS
>>> Enter the DNS information here:
输入有服务商提供的域名服务器地址,或输入server,由服务商自动提供(我家是自动分配IP的,所以输入的是server)。
PASSWORD
>>> Please enter your PPPoE password:
>>> Please re-enter your PPPoE password:
输入上网密码。
FIREWALLING
The firewall choices are:
0 - NONE: This script will not set any firewall rules. You are responsible for ensuring the security of your machine. You are STRONGLY recommended to use some kind of firewall rules.
1 - STANDALONE: Appropriate for a basic stand-alone web-surfing workstation
2 - MASQUERADE: Appropriate for a machine acting as an Internet gateway for a LAN
>>> Choose a type of firewall (0-2):
选择防火墙,选0。
** Summary of what you entered **
Ethernet Interface: eth0
User name: ddtthz! Internet
Activate-on-demand: No
DNS: server
Firewalling: NONE
>>> Accept these settings and adjust configuration files (y/n)?
选y。
最后,对上述配置进行确认。确认后的配置系统会写入/etc/ppp/pppoe.conf文件,熟练的用户可直接对其进行修改。
配置完成后,就可以进行拨号了。
输入以下命令进行拨号:
#pppoe-start
如果屏幕上出现:“... Connected!”就说明拨号成功了。一般而言做到这一步是没什么问题的。这时可以用ifconfig命令查看你的信息(可以使用命 令#ifconfig -a来查看)。
最后可以Ping一下互联网中的某个主机名看下是否能上网,命令如下:
#ping www.sina.com
如果出现以下信息:
PING jupiter.sina.com.cn (218.30.66.101) 56(84) bytes of data.
64 bytes from 218.30.66.101: icnp_seq=1 ttI=128 time=91.6 ms
64 bytes from 218.30.66.101: icnp_seq=2 ttI=128 time=163 ms
64 bytes from 218.30.66.101: icnp_seq=3 ttI=128 time=178 ms
......
则表明已经连上Ineternet了。
如果想开机自动连上宽带,可以按如下操作:
首先,用pppoeconf配置在/etc/ppp/peers/生成一个dsl-provider用户文件。
配置过程只要大家输入正确宽带上网的帐号密码就可以了,在最后有个提示问你是否在系统启动的时候启动pppoeconf,选择"否",因为我们配置它的目 的只是生成一个用户配置文件。
然后在终端输入如下命令:
cd /etc/network
vim interfaces
按A键开始输入,输入以下字符:
iface eth0 inet ppp
provider dsl-provider
按Esc键后,再按:wq,按Enter键后保存退出。
cd /etc
vim rc.local
按A键开始输入,输入以下字符:
/usr/sbin/pppoe-start
按Esc键后,再按:wq,按Enter键后保存退出。
这样,以后在系统启动后就能自动连上宽带了。

linux命令行抓取网页快照 -(xvfb+CutyCapt)

linux命令行抓取网页快照 -(xvfb+CutyCapt)

一直以来对于网页缩图,我都是想着用网上现成的工具来解决,网上也有很多网站提供类似服务,其实我也想做这样的功能,但PHP默认的功能只在windows下面才有,系统有一个默认的函数支持网页缩图的。
网上找了找资料,发现linux server下也可以达到这个效果。嗯,是利用xvfb模拟x server,然后利用cutycapt(一款利用qt框架开发的截屏程序)截图,可以存成PNG和JPG等多种格式的图片。

方法有点简单,我是说在ubuntu下面。直接:

apt-get update
apt-get install xvfb
apt-get install subversion libqt4-webkit libqt4-dev g++
svn co https://cutycapt.svn.sourceforge.net/svnroot/cutycapt
cd cutycapt/CutyCapt
qmake
make

操作完后就可以调用命令行截图了。

xvfb-run --server-args="-screen 0, 1024x768x24" ./CutyCapt --url=http://www.zol.com.cn --out=test.png

截下来你会发现,图片中的中文是乱码,就象这张<<-点击看大图
然后安装中文字体,最简单的办法就是从windows拷一些ttf的文字到/usr/share/fonts/truetype/目录下。
然后再截图就是现在这样了

参考:http://blog.saymoon.com/2009/11/take-snapshot-in-linux-command-line/

PS:过段时间可以尝试考虑用接口+队列,生成相应的命令,然后用shell调用命令行。逐步运行,生成缩图,只是生成的缩图都较大,不敢自己做这样服务,硬盘估计很容易就会满了。

我在VPS上面无法运行xvfb,可能是虚拟机不支持x-server模拟?妖了。。。

为什么Linux现在无法吸引年轻开发者

为什么Linux现在无法吸引年轻开发者

发这个新闻,主要不在新闻的内容,而是在回复。仿佛当年的项庄舞剑,意在沛公差不多。

新闻原文是这样的:

Linux基金会执行董事Jim Zemlin声称Linux的市场地位十分稳固,尽管几位Linux内核的关键维护者已经头发花白。Linux Weekly News的主编Jonathan Corbet在上周举行的Linux基金会协作峰会上挑 明了这一问题,他指出Linux内核团队的年龄一年比一年长,而年轻一代的开发者没有参与进来。为 什么Linux现在无法吸引年轻开发者?

著名的内核开发者Andrew Morton也承认,他们越来越老,越来越累,而且没有看到其他人像他们过去那样充满激情的投入到一件事上。他同时指出,这个问题比较复 杂,因为随着内核代码越来越复杂,进入这个领域的门槛也越来越高,参与内核开发的开发者需要有丰富的经验和知识。他表示Linux内核 团队鼓励年轻一代的热心参与。

也有人评论认为,这种状况和学校的计算机教育也有关系,现在的计算机科学教育不再和1980年代和90年代那样关注底层开发和硬件交互,而 是主要学习高级语言如python、.Net、java等等。

编译/solidot

回复是这一条:

匿名人士 发表于 2010-04-19 13:33:05
因为年轻人要买车买房娶老婆……
极有同感,大家可以去为什么Linux现在无法吸引年轻开发者围观
a2enmod简介

a2enmod简介

在ubuntu下面,在偷懒的时候大家都会用apt-get install apache来搞。但搞完之后如何配置却是头疼的问题。

当然如果纯粹是用apt的话,是很方便。比如apt-get install php5 php5-mysql php5-sqlite一下子就可以解决很多问题。

所以a2enmod的话,可以解决apache中的一些配置问题。比如a2enmod rewrite就可以打开rewrite。当然在配置文件里加loadmodule rewrite.so的话也是可以的,只是a2enmod 会更方便一点。

参考那么多资料,但如果不知道a2enmod怎么用,还可以运行一下。会了解很多可以提供的资料。之所以用a2enmod,是因为他这样可以解决很多关联。不用担心那些文件关联。

运行a2enmod,就可以看到。

Your choices are: actions alias asis auth_basic auth_digest authn_alias authn_anon authn_dbd authn_dbm authn_default authn_file authnz_ldap authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cern_meta cgi cgid charset_lite dav dav_fs dav_lock dbd deflate dir disk_cache dump_io env expires ext_filter file_cache filter headers ident imagemap include info ldap log_forensic mem_cache mime mime_magic negotiation php5 proxy proxy_ajp proxy_balancer proxy_connect proxy_ftp proxy_http rewrite setenvif speling ssl status substitute suexec unique_id userdir usertrack version vhost_alias

有的时候看名字还是可以看出一些问题的。比如你需要缓存图片,就需要headerset,这时候就需要a2enmod headers,就OK了。。

看看:用.htaccess缓存图片 提高博客运行效率

这时候就需要enmod headers了