thinking in website

今天搀和一下 RSS.
这个是显然不能忽略的.
RSS 相关

用过 wordpress / movabletype的同学对 pingomatic 应该不陌生.
各种和rss有关的服务都使用 xmlrpc 建立了自己的ping服务.
pingomatic 能解决国外问题, 而国内更广泛的rss问题就毫无办法了.
Ping-o-Matic!

虽然许多人都说 RSS 有什么好处, 暂时就推荐这一篇.
不过即便如此, RSS 在国内的发展也是相当缓慢的.
What Is RSS: A Guide To Really Simple Syndication Benefits, Best Uses And Applications – Robin Good’s Latest News

RSS 方便了信息的获取, 于是需要过滤.
不过个人认为这个算法仍然有很多问题.
比如许多 feed 并不输出评论数.
Read what matters – AideRSS

一个有意思的神奇的 Flash 做的阅读器.
Voyage – RSS feed reader

上一次的 feed 托管评测, 作为一个wordpress插件,表现应该可以用出色形容了.
my feed stats released – idv2

同样是把 RSS 用 javascript (后者用ajax) 输出到网页.
图方便的用前者, 有一点点脚本基础的就用后面更强大更cool的吧.
Home: Free RSS to JavaScript Service – RSS-to-JavaScript.com: Free RSS/RDF to JavaScript Conversion Tool for Webmasters
Google AJAX Feed API – Google Code

管理feed也是门学问.
偶自己看来把阅读分配到各阅读器里或许也是个不错的主意.
Sink or Swim: Managing RSS Feeds with Better Groups | 43 Folders

ps:
最初没钱的进来搀和 RSS 想捞钱,不过好像 RSS 不是一个好生意.
现在有钱的进来搀和, 只是为了扩大自己的地盘而已.
qq mail 内测的阅读器, 根本就没有突出 RSS 或者 feed 这东西.
还是老老实实提供服务吧.

ps2:
RSS 当然现在也成了一个工具.
聚合你的活动,让其他想关注的人去关注.
可是, 如果你不能够提供别人所喜欢想要的东西,
这个东西的意义就不会有想象中那么大.

ps3:
远处, Semantic Web 在向我们招手.

Flared (Yet Another Memcached) (but disk based). This software provides high-performance, distributed and fault tolerant objectstorage system w/ almost-memcached-compatible I/O interfaces.

当前版本 0.9.0 (2007.12.10) 只是能用而已.
由于暂时不稳定, 仅作记录, 又是日本人的作品 :D

翻译不是件容易事,凑合看吧,charlee 帮了个小忙.

Flared 相对于 memcached 的特性:
1 Disk Based
Flare 在磁盘上保存数据. 由此可把数据目录指向 /dev/shm, 得到和内存几乎同样的效果.
当然一般应该存储在普通硬盘上. (Flare 使用 QDBM 作为后端数据库)
2 Asynchronus Replication
Flare能够将数据复制到任意节点(其他Flare进程——可以在同一台服务器上,也可以在不同的服务器上).
repcached 能够完成. 不过 repcached 是单master,单slave. 这个可以一对多.
3 Fail Over
Flare 在读取写入过程中如果节点发生故障, 就会被下面的节点替换.
– 这一点可以用 repcached
4 Dynamic Reconstruction
Flare 能够记录各个节点的操作, 并可重建节点上的数据.
不仅是单纯的 failback, 追加 replication 节点, 节点容量扩大后甚至可以进行分区(Partitioning)操作.
5 Request Proxy
Flare 的各个节点互相连接. 经过适当配置, 即使只连接一个固定节点(如localhost), 同样可以访问所有的数据.

如果仔细注意代码中的todo,会发现它的目标和amazon s3 惊人相似.
比如 http 取内容等. – 不过 s3 是可以通过多种途径存取.
flare 自称 another memcached, 只是因为自己借用了它的 api.
无需任何修改, 能够访问 memcached 的脚本就可以访问它的节点.

今天就到这里.

ps:
就在不久前(不到一两天?) Amazon 发布了 SimpleDB.

ps2:
关于 memcachedb 的相关信息就写在这里.

Features:
国人出品 – 新浪. 不过没有看到奶瓶同学.
从 memcached 代码上乱改而来…
使用 Berkeley DB 存储.
同样基于 memcached api – 大汗…
支持 replication – single master(r/w). slaves (read only)
fixed length key(代码中写的是32) – session 专用?
使用 libevent – 这和memcached 是一样的.

performance: (Dell PowerEdge 2850 box)
16 bytes key and 10 bytes value.
write: 12000 r/s
read: 10000 r/s (和写同时进行)

今天主要是load balancing. – 今天只讨论对请求的负载均衡.
具体到mysql什么的,还是自己去找吧… 系列的中间会稍微涉及到.

说到它就不得不说我们的网通电信问题, dnspod 看起来是不错的方案.

根据地域分配不同的服务器ip.
有钱做自己的dns的同学应该看看.
GeoDNS: BIND patch to add geographical filters to views

如果买完两台服务器没钱了,就让客户端用随机数给你代劳吧.
客户(javascript/flash)产生一个随机数, mod 服务器数, 然后就这样载入对应服务器上的图片,脚本,CSS…
Digital Web Magazine – Client Side Load Balancing for Web 2.0 Applications

负载均衡, HAProxy, Perlbal, squid, lighttpd, nginx 什么的都有这类的功能…
HAProxy – The Reliable, High Performance TCP/HTTP Load Balancer
Perlbal
Pure Load Balancer – A free high performance software load balancer for Unix
Inlab Software GmbH – Balance
Varnish – Trac

今天就简单写到这里吧.
钱足够烧的可以去买 BigIP…

ps: Day 3 进行了一点点更新.
感谢 tsing 同学推荐 memcachedb.

由于某些原因 scalability days 暂停一次, day 6 继续.

今天讨论一下网页宽度和屏幕宽度的问题.
以下是许多站的网页宽度列表.

数据采集使用 Xray Bookmarklet, 误差应该在3-5px内.

1002: poco.cn
995: people.com.cn
992: zhidao.baidu.com(?)
990: verycd
988: hi.baidu.com
979: post.baidu.com,pchome.net(978)
976: rebang.google.cn
970: it168,xinhuanet,xunlei.com
964: douban(max width)
960: hexun,mop,live.com
950: taobao,cn.yahoo,yahoo.com,alibaba,paipai.
948: qihoo
945: daqi
940: 6.cn,ku6.com,56.com
930: youku,video.google.cn
920: cn.msn.com,caibangzi
900: hao123(大字)
880: pcpop,zol.com.cn
875: youtube
850: tudou
800: xiaonei.com
—– 800 * 600
778: 51.com,cctv,eastmoney.com,hao123(小字),vnet.cn(恨之入骨的一个站 :D),crsky
776: yesky
775: fanfou,jiwai(776)
771: tom.com,onlinedown.net
760: wordpress,sohu,51.la,qq.com,ccidnet,skycn.com
758: 21cn.com,china.com
755: twitter
750: movabletype,sina,163,v.sogou.com(视频)

my blog stat:
1024×768 50.8%
1280×800 13.0% — 12-14寸的笔记本.
1280×1024 12.9%
800×600 7.8%

某网站搞来的 stats:
1024×768 69.6%
800×600 12.7%
1440×900 5.3% — 宽屏液晶 & 14寸+的宽屏本子.

需要什么解释吗?
假设 800*600 的用户约 3-10% 左右 – 谁有更大的报表麻烦给一份 :D

几个数字:
1002: (1024*768) 最大化不会出现横向滚动条的宽度.
778:传说中(800*600) 不出现滚动条宽度.
760:传说中的”网页尺寸”.

几个现象:
用户群最广泛的几个站都在778以下.
– 门户(sina,sohu,163,tom,qq,vnet…)
– 下载网站(skycn,onlinedown,crsky)
– hao123 小字版
– 更不要说只有一个输入框的 google baidu.

阿里公司 950.
taobao,cn.yahoo,alibaba.

视频网站 940. – 可惜没有tudou(850),youtube(885).
6.cn,ku6.com,56.com

大站的子域名 >778:
rebang.google.cn,video.google.cn,zhidao.baidu.com,hi.baidu.com,post.baidu.com

你还发现了什么?
欢迎回复补充.

2ch, 日本最大的社区. 架构简单, 1000贴就自动存档.
可以说 2ch 是御宅族的基地了? :)
日本的otaku文化应该是全体的,即使不是otaku的人,也或多或少地使用otaku的一些语言,真正的otaku还是少数 — thx to charlee.
关于2ch不再过多讨论.

虽然比youtube出现晚很多,但最终后发制人.
增长速度远超youtube, 平均单人播放时间达到了3小时.
上线后一年达到400万会员.
占日本网络流量的十分之一.

nicovideo, 超过 mixi 的成长速度.
论负荷来说, 以文章内容为主的 mixi 就根本无法比拟了.

说到nicovideo,应该再次提起御宅族…
大头贴, 上面通常会有文字,星星图案之类的东西.
就这样的杂合, 成就了nicovideo.

nicovideo

动画评语(command)随时间轴前进而播放. – 移动的时间约4秒.
简单的动画评语背后也有算法.
简短的评语移动速度会减慢, 冗长的评语移动速度会加快.
如此, 简洁,有要点的评论增加, 冗长的评语被这样的算法淘汰.
投稿后被播放的时候,评语会重新生成,与动画一起被播放,
给人的感觉就象所有人都能看到你发的评语.

大致架构:

1 数据库.
2 Web 服务器: 向客户端提供动画和动画评语的URL地址.
3 Message(command) 服务器: 将动画评语转化成 Actionscript command.
4 动画服务器(SMILEVIDEO): 和常见的视频网站没有区别,通过CDN将动画(flv)本身传送给客户端.
5 动画客户端: Flash 应用程序进行播放.

由于动画评语没有必要完全按时播放,
所以使用 xmlsocket 进行通信, 基于http的xml实现,
使得在防火墙后也能够轻松使用.

详情(至2007.12):

PV 60 M / 日, 20 亿 / 月
(Alexa 130…)

Web Server 16台,
linux 2.6,apache 2(mod_deflate),php 5.

Database 10台, mysql 5.
1 Master + 6(2007.4) Slaves. 同步复制(Replication).
Message Server:
C++ 实现, 使用以前做网络游戏时候的服务器(如果没翻译错,这个也太省了?)
硬件:
HP DL360 十多台.
(小声说: tudou的许多服务器是 HP DL385)

======

负载均衡:
带宽(2007.4): 430Mbps
Web Server 50M * 7, Message Server 15M * 6.

Web Server 使用 Apache (Prefork),
进程数 2000, 内存增加 4Gb.
MPM 没有使用 Worker (php5 非线程安全).

PHP 加速使用 APC(Alternative PHP Cache), 原先使用过eAccelerator

数据缓存:
pear/Cache_Lite 到 Memcached

Apache 访问日志: 突破 6Gb/day.
awstats – Google Analytics(现在) – Urchin(讨论中)

消息服务器负载均衡:
数据库更新查询有最大9秒的缓存.

Mysql 集群构成:
Master 1,Slaves 6.

全文查询使用 Senna(日本产的mysql 全文搜索引擎)

避免复杂的跨表 join (没翻错?)
非正规化逻辑对应. (待修改…)

更新频繁的表使用 InnoDB.
数量(log?)类的和更新不频繁的表使用MyISAM.

评语使用 CSV 数据保存
1000行以上的CSV数据进行索引.

Message server 通信方式:
1. XMLSocket
2. HTTP
a. 双向 chunked content-transfer-encoding
b. 向下 chunked
c. polling
– 这样的做法是由于 Flash Player 的某些问题…

今天发现可怜的media temple服务器又被攻击了 :(
于是今天采用了*被墙的* blogger 继续发布内容.
这个new 30 days是不能停的.
busylog.cn 也是偶的 :D

这就是篇纯粹意义上的 notes 了.
想提一下刚卖掉 livejournal 的 Six Apart.
邮件列表上对于他们的 Mogilefs 和 FUSE 在2005年就有讨论,
后来有人给出了 mogilefs_fuse(具体怎么玩,自己搜索).
另外,日本人好像很喜欢 mogilefs 一样…

离大家最近的可能是redhat的 GFS
(别和google的GFS混掉… 这个GFS带着巨大的诡异的光环.)

这或许就是 linux 的好处? :D

Beyond the File System: Designing Large-Scale File Storage and Serving – SlideShare

Kosmos Distributed File System

MogileFS

Parallel Virtual File System, Version 2

Welcome to Hadoop!

Project: OCFS2 – oss.oracle.com

Main Page – Wiki3(lustre)

Gluster – Home

redhat.com | Red Hat Global File System

应用软件
– 代码效率
这种事情只能根据实际情况而定, 只能多看看优化的方法,
phpers 通常缺乏算法基础, 先有基础才能提高效率.
分析这样的原因需要进行性能分析(profiling),
这里推荐 xdebug.

– 缓存应用
缓存主要针对有实时性的数据更新的动态页面.
在这些页面上应用缓存可以使性能有戏剧性的提高.

缓存可以在服务器应用上进行,也可以在客户端浏览器上进行.
服务器端: PEAR::Cache, memcached, mysql query cache(针对非经常更新的数据), …
客户端: HTTP 头输出 Last-Modified.

– 加速器
eAccelerator
xcache
APC

– php 5.1+
php 5.1+ 的 Zend Engine 相对以前版本来说有较大的更新.
不要用 php 4, 不仅缺少后续支持, 性能也一般.

数据库
– SQL 语句
适当索引
避免使用 join

EXPLAIN
log-slow-queries
MySQL Query Profiler(mysql 5.0.37+)

– 表分割
彻底解决问题的方式. – 另外注意完整性问题.

Merge Table
Partitioning
从应用程序方面进行分割

– 长连接 (persistent connection)
mysql_pconnection – 适用于单Web,单DB的方式.
不仅apache, lighttpd fastcgi 也可用.

– 数据库微调
基本还就是那些参数.

– 同步复制(replication)
缓解问题的一种方式.

服务器负载分析
– 向上扩展(scale up)
vmstat, iostat, top …
针对mysql的性能检测工具.

– 横向扩展(scale out)
负载均衡(load balancing)

– I/O 性能
单服务器最佳选择: RAID 10
不推荐 RAID 5.
仍然推荐分割的方式.

– Web 服务器角色划分
使用轻量级服务器负责静态内容.

很cool的管理工具. 上面的wiki的内容看后会有不少启发.
作者的 blog 也值得一看.
mysql-master-master – Google Code

FUSE是万能的,不过你可能不知道fuse 和 mysql 可以这样玩.
如果你考虑到mysql可以做简单的分布式,你想到了什么? 对. 分布式的处理.

不过显而易见的,这个文件系统的性能,读取小文件能力会比较强.
SourceForge.net: FUSE filesystem using MySQL as a storage

Mysql Proxy 可以被简单的用作 load balancing,
MySQL AB :: Getting started with MySQL Proxy 你或许看过了.
不过新鲜出炉的 Combining MySQL Proxy with MySQL Cluster 相信你没看过.
分离simple sql & complex sql, 并且在集群上做 replication.
这样你觉得怎么样呢?

监视 mysql 情况, 和 mytop 可以连用.
具体的监视图或许就不用放上来了 :)
SourceForge.net: mySQL Details Stats Graphed
mytop – a top clone for MySQL

# Utility to compare table definitions in two MySQL databases,
# and output a patch in the format of ALTER TABLE statements
# which converts the first database structure into in the second.
以后数据库结构更新就不着急了.
mysqldiff — a utility for comparing MySQL database structures

没有终端,就用 php 备份吧. 看起来不错的一个导出系统, 显然是适合大批量导出的.
MySQLDumper – smart backup for all your web projects

dbm, 按对存储 主键 – 数据, 使用 hash 进行查找, 效率远超普通关系型数据库.

流行的实现

Berkeley DB: (Sleepycat,现在属于 Oracle :( )
Gdbm: GNU Database Manager
QDBM: Quicker Database Manager
Tokyo Cabinet: 根据 QDBM 再开发, 简称 TC.
CDB: Constant Databases

一份测试数据

(不愿意点的同学:)
1M records, key and values are 8-bytes strings.
name, writetime, readtime, filesize
CDB 0.675 0.628 40,002,048
TC 1.226 2.610 42,583,208
QDBM 2.843 2.419 56,582,932
BDB 6.286 3.526 41,938,944
GDBM 26.116 5.257 84,774,912

day 3 中提到了 flared 和 memcachedb,
其中前者使用 qdbm, 后者使用 bdb 存储.
(再次注意到 memcachedb 的几个缺陷.
不知道memcachedb 能不能做一个qdbm版出来 :) )

用途:
QDBM 能干的 CDB 不一定能干.
(运行时 CDB 不可写,专门的数据结构 crit-bit(critical bit) tree )
谷歌黑板报有一篇讲过布隆过滤器(印象是这样?), DBM 可用于存储少量白名单.
RBL(Real-time Blackhole List) 是 Email 的一种过滤手段, 可用 CDB/QDBM 存储
(对于不经常更新的数据)
作为词典: 分词系统,过滤系统,全文搜索.
(上面那个readtime, 读1M条数据只需要2秒. – 当然放内存里会更好…)
值得一提的是 movabletype 支持 dbm.

ps:
原定还要加关于memcached相关内容,因某些原因放弃.

今天继续 mysql.

国内 mysql (myisam)最经典的应用, 就应该是论坛了.
许多(几乎100% ?)国内开源程序把 GPL 程序部分包含在自己的程序内,
还乱改版权, 本身就不是件什么光彩事.

论坛程序的sql语句质量低下, 更谈不上数据库方面的优化.

innodb方面偶就不想谈了.
key_buffer_size 简单说就是比myi文件的大小总和略大
table_cache: 用表数 * 连接数. 注意这里取的都是最大并发值. 事实上并不需要很大.
thread_cache: 连接数略大.
query_cache_size: dvbbs php开了应用mysql query cache的先河,
不过由于mysql固有缺陷,开了还不如不开.
这方面的cache应该由memcached承担.
What to tune in MySQL Server after installation

一篇很详细的文章. 从数方面进行了讨论.
这里说说RAID. 记住越大的集群越没有 RAID. 对于简单扩充的话推荐 RAID 10.
或者如果有钱买 SSD 是个不错的选择?
MySQL AB :: High Performance MySQL Chapter 6: Server Performance Tuning

tips 不只10条… EXPLAIN & slow_queries
(Slow Queries::Microslow patch 你可以去找来试一试.)

除此之外你也应该用一下 slow query log parser
Top10SQLPerformanceTips – MySQLForge Wiki

比 EXPLAIN 更为深入的就是 profiling 了.
Using the New MySQL Query Profiler

上面偶忽略掉了 innodb. 这里再提一次.
关于 innodb_buffer_pool_size 的问题, 取决于数据库外的 “其余应用”.
内存的 80% 是推荐值,在这基础上上下浮动还是没有问题的.
现在内存好像是不贵了…
Innodb Performance Optimization Basics

非常神奇的 tuning script. 自动找出 mysql 服务器的问题, 并提出优化方案.
Racker Hacker – MySQLTuner

sql 语句的优化很是重要.
对于文字搜索当然要用全文搜索的工具, 所以Word/Contains Searching部分你可以忽略.
The Spanner – PHP Mysql tips

许多没有注意到的tips.
从技术层面上又发现了国内多数程序的问题,
偶不想告诉你在什么地方, 仔细看的话你应该也能从文中找出来.
MySQL AB :: MySQL 5.0 Reference Manual :: 6.2.20 Other Optimization Tips

EXPLAIN, profiling 都是调优的手段(参见 day 11)
MySQL AB :: MySQL 5.0 Reference Manual :: 6.2.1 Optimizing Queries with EXPLAIN

这篇是比较高级的调优.
Read Buffers, mmap, malloc and MySQL Performance | MySQL Performance Blog

读缓存只需要调大 read_buffer_size,
linux下, malloc 问题应该使用 TCMalloc : Thread-Caching Malloc
而 freebsd-7.0 的全新调度器会给人留下深刻的印象,
freebsd 跑 mysql 不快的历史结束了.

freebsd with mysql

(一直以来)非常奇怪的是为什么使用了 CFS 调度器之后就能部分解决这类问题?
困惑得到了一定的解决, 不过仍然不彻底

曾经写过的 example(charlee 有解释版本), 还有 简单的总结.

一本甚好的书. 对得起这个名字.
许多部分只适合 Mac 开发者阅读, 不过这些段落的数量并不多.
Shell Scripting Primer

bash, essential utilties, awk …
Linux Shell Scripting Tutorial – A Beginner’s handbook

awk 的用法在众多样例得到了充分的体现.
HANDY ONE-LINERS FOR AWK

非常非常非常多的用法… 不看不知道… (有中文版本)
Linux Command Line Tips

看起来这个不适合初学者, 而且偶个人认为不少例子可以考虑使用 awk, xargs, wc 等…
BashPitfalls – Greg’s Wiki

ps:
稍微减减量, 在此祝大家圣诞快乐.

ps2: (2008.1.27)
Bash的陷阱

在 30days 的前些天(day 6, day 8) 都提到了join 很慢这个问题.

重复部分字段有助于查询速度的提高
– 数据量很大 & 并且查询比较复杂的时候非常有效.
(以下都基于这一个前提,
如果查询并不复杂, 且写入次数多, 那么减少字段重复有利于写入速度的提高.)

join 在分布式系统中比较难做到.
– amazon simpledb 想必到最后也不会提供 join.


怎么讨论都没用… 还是根据自己情况, 选择适合自己的方案.
本期不提供任何对文章的说明.

Software Development in the Real World: To Normalize, or Not To Normalize

Scaling Secret #2: Denormalizing Your Way to Speed and Profit | High Scalability

The Denormalization Survival Guide – Part I

InfoQ: Data normalization, is it really that good?

Dare Obasanjo aka Carnage4Life – When Not to Normalize your SQL Database

ps:
如果有一个 id, 需要获取这个 id 下的所有资料你会怎么做? join?

今天讨论一下表单设计.

眼球的运动越少越好. (好像眼球上下转比较轻松, 左右转比较困难 :D).
你能从 eBay 新的注册表单发现什么呢?
Digital Web Magazine – Better Web Forms: Redesigning eBay’s Registration

从 CSS 角度修正表单的设计.
Tips For Creating Great Web Forms – CSS-Tricks

一些不错的表单设计. 吸收它们的长处或许是个不错的主意.
CSS-Based Forms: Modern Solutions | CSS | Smashing Magazine

把专门针对表单的操作封装在一起. 如添加删除,表单验证等.
webforms2 – Google Code

看了就知道, 无须多言…
Forms that Work

虽然这个不属于设计类. – 把 html 表单快速变成 php 代码.
Web Form Factory (v0.1.6 beta) – Open Source Web Form Generator

accessibility 虽然不能提的太高, 不过在这 30 days 中还是搀和搀和好.

用词正确是 accessibility, 甚至有助于 seo… 用词不当会赶走不少人.
常见的比如提示语的人称等等…
Use Words on Your Site Correctly: The Complete Guide | Improve the Web

10 个常见的问题. 个人认为下拉菜单问题最多.
10 Usability Nightmares You Should Be Aware Of | Developer’s Toolbox

WAI: Strategies, guidelines, resources to make the Web accessible to people with disabilities
Web Accessibility Initiative (WAI) – home page

许多不错的文章, 虽然很多看起来不容易找. 推荐看一看 HTML Accessibility.
WebAIM: Web Accessibility in Mind

体验一下色盲眼中的网络世界.
Colorblind Web Page Filter

体验完了他们的世界, 就要考虑一下应该为他们做些什么.
10 colour contrast checking tools to improve the accessibility of your design | 456 Berea Street

刚才提到了用词的问题, 这里说一说错误信息.
Accessibility: Make error messages more effective – leechael.org

经常用 css hacks 的同学应该不需要看这些东西… :D
这些同学知道什么平台下能用什么, 不能用什么.
CSS – Contents and compatibility

什么样的 HTML 代码是漂亮的? 许多值得一看的注意事项.
What Beautiful HTML Code Looks Like – CSS-Tricks

当前大家使用的各种浏览器或多或少都有 bug.
看看这些 bug 都有什么效果, 应该如何去解决.
/* Position Is Everything */ — Modern browser bugs explained in detail!

尽量要用 em 而不是百分比作为文字尺寸单位.
Code Soil – Difference between IE and Firefox when using percent as font-size unit
这一篇从更深层次上说明了这个问题.
satzansatz — CSS: 1px rounding error in Gecko

为什么对 IE 设计的时候加上 width/height 就能解决问题? 这里详细对这个问题做出了解释.
On having layout — the concept of hasLayout in IE/Win

不推荐使用的 HTML tags 可以用 CSS 屏蔽. 不过最好的方法还是从根源入手.
Disabling Deprecated HTML Using CSS | David’s kitchen

一篇人人都能看明白的日文文章.
Tag Cloud(标签云)应该有怎样的样式, 大小, 明暗, 色调, 色彩, 甚至垂直突出都会有不同的效果.
Tag Cloudのスタイル

偶并不推荐所有的单位都用 em, 不过这是一次有意思的尝试.
The Incredible Em & Elastic Layouts with CSS — Jon Tan 陳

你想到曾经论坛上标记积分所用的 bar 了没有? 转眼数年过去, 现在已经是 CSS 的世界了.
CSS For Bar Graphs

这些建议应该去看看.
70 Expert Ideas For Better CSS Coding | CSS

应该没有人怀疑 CSS 了吧…
CSS 不重要, 那还有什么重要呢? 难道是表格? :D
A List Apart: Articles: CSS @ Ten: The Next Big Thing

这是一个系列文章. 在框架当道的今天, 也还是应该了解如何用更一般的代码实现同样的功能.
ONLamp.com — Writing Advanced JavaScript
Part 2 Part 3

关于 Prototype 和 jQuery 的代码比较. 评论好像更有意思一些.
Ajaxian – Prototype and jQuery: A code comparison

Ajax 加速的方法非常简单, 类似
getXHR = function() { return new XMLHttpRequest; };
后面的几天中还会有类似的神奇方法.
Making Ajax Elegantly Fast

单个请求的流量看似不大, 而巨大访问量的背后当然也需要不少流量钱.
Ajax 请求的流量是可以降下来的, 使用什么方法呢? HTTP Header, 304.
InfoQ: Reducing Server Load and Network Traffic in REST/Ajax Architectures

Session 也是会过期的, 如果 Session 过期了, 又应该怎样去处理呢?
同样, 还是用 HTTP Header, 这里用的就是 403 了.
dans.blog: Expiring Session via AJAX using HTTP Response Headers

拖动一个 box 到指定位置, 能够防止 spam.
(推荐你自己去试试, 理论意义上很有意思的东西, 虽然实践上偶并不看好, 易用性一般.)
Prevent comment SPAM with jQuery

Javascript 也有可用性问题, 如何针对所有的浏览器(关闭或者不支持JS)设计脚本呢?
chromaSYNTHETIC Journal – Blog Archive – Unobtrusive JavaScript — Use It!

动态加载 Javascript 类库. 能够减少页面的下载量, 不要为没有用到的代码支付流量钱..
JSLoader – JavaScript Libraries On Demand

顺便,这里就有一个免费的 framework hosting.
– 当然,流量过大的网站还是要捐助他们一下,现在的流量不便宜.
CacheFile.net – The Internet’s Common Cache

题目就是最好的说明. 来自 Yahoo.
High Performance Ajax Applications – SlideShare

基本上这些篇都是函数的对比.但同样是对比,或多或少都还是有不同的.

1 call_user_func 慢.
2 类的magic method全都慢.
3 通过类的读取慢
4 Iterators 慢
Benchmarking magic | GarfieldTech

这个就更清晰了.
自己去慢慢比较,偶并不想说什么.
BlueShoes: PHP Benchmark

虽然许多hacks并不常用,还是看一看?
40 Tips for optimizing your php Code

事实上这是篇再老不过的东西了. 个人认为不如上一篇,虽然这是从 presentation 中提取的.
12 PHP optimization tips – alex.moskalyuk

一组幻灯片, 有点包罗万象的感觉, 不过真正实际做的时候还是有区别的.
Accelerating PHP Applications

函数比较, 这些和上面的某些一样就像是细节性的东西.
开发完了没bug了再去试试吧.
比较列表:
sizeof vs count
is_int vs is_integer
chop vs rtrim
doubleval vs floatval
fwrite vs fputs
implode vs join
ini_alter vs ini_set
7 tips for lightning fast PHP sites
Updated: Better Benchmarks

写好代码的同时还要短一点, 当然并不是越短越好,
短不一定好读,但好读的一定会短.
优良的算法也应该是短代码的保证吧.
6 PHP coding tips to write less code

各式各样的代码规范见多了. 你遵守了多少? 违反了多少?
PHP coding guidelines

根据c++ coding standard 写成的php coding standard.
php5 的 OOP 方面有了很大进步, 这一点文章中没有提到, 因为长期没有更新了…
还有关于HTTP_*_VARS也没更新,仍不失为好材料..
PHP Coding Standard

写出什么样的代码,就应该得到相应的报酬.
毋庸置疑,同时注意到安全,性能,扩展,易读… 的代码肯定是好代码.
前期的付出,后面的维护就会轻松许多吧.
SitePoint Blogs – Good and Bad PHP Code

许多有意思的东西已经有无数人做过了,
不要重新制造轮子, 多数情况下都能在这里找到.
偶自己最成功的利用就是一个(无须extension的) zip 解压器,
也因为有这样一个地方,许多项目(比如论坛)公然违反GPL,
当然了,开源对他们只是一个推进商业的行为.
Welcome to the PHP Classes Repository – PHP Classes

关于 window.load 的一些研究和讨论.
Peter’s Blog – The window.onload problem (still)

另外补一句, DOM 当然是解决 onload 问题的最佳方案.
Geek Daily – Blog Archive – JavaScript – window.onload Is Bad M’kay

day 19 的时候有说一行的神奇优化, 今天又是一个.
看不明白不要紧, 简单一句话:

/*@cc_on _d=document;eval('var document=_d')@*/

一行で IE の JavaScript を高速化する方法

又是一个通过几行代码解决效率问题的范例, 这个主要对 Firefox 有效.
判断仍然基于 @cc_on.
When innerHTML isn’t Fast Enough

又是一堆又一堆的 Tips. 相信多数人没达到 Guru 的水平 :D
JavaScript Tips for Novices, Acolytes, and Gurus

Unobtrusive Javascript, ajax, html … 做到,益处会很多.
The seven rules of unobtrusive JavaScript

旁边还有这样一篇东西: Unobtrusive JavaScript: To Be or Not To Be

检测键盘事件是比较有用的. 这里有一个总结.
对于中文的输入法问题, 偶这里就不想提了, 只能推荐去抄现成的? :D
JavaScript Madness: Keyboard Events

以下是 3 篇来自于 quirksmode.org 的总结.
JavaScript – Cookies
中间插一句, doctype 的不同, 至少在 firefox 下是会有区别的.
Javascript – document.body and doctype switching
JavaScript – Cross window scripting

今天玩玩工具栏上的 bookmarklet, 因为阅读器限制等原因还是移步观看吧.
firefox 2 测试通过.

给网页做透视.
Xray

强大的设计相关 bookmarklet
Design

偶用的收藏 bookmarklet.
del.icio.us

多少人收藏了这一页?
del.icio.us backlinks

清理不需要的垃圾, 比如 iframe :D
zap plugins

这是一个地址 http://www.fcicq.net/wp/
linkify

微格式
Microformats

apache 没有集中在优化上.
想要更快的早就用nginx或者lighty了.
反而一大堆人不会写htaccess,也不会玩mod_rewrite.

这个偶已经写过了简化你的配置文件: apache module mod_macro.
相当简单有效的 module. 不过如果要无配置扩展,这个东西还是不行.
Apache 2.2 module mod_macro

用 htaccess 开启 mod_expires, mod_headers, 还有关于文件缓存的知识.
Speed Up Sites with htaccess Caching

如果要自己写, 可以参考这两个.
用 htaccess 实现许多有意思的功能.
the jackol’s den – htaccess Cheatsheet – Mikhail Esteves

不会写 htaccess, mod_rewrite 的要看过来.
实际例子
Learn Apache mod_rewrite: 13 Real-world Examples [Apache & IIS Configuration]
一个神奇的生成器
htaccess Generator
还有 cheatsheet.
mod_rewrite Cheat Sheet – Apache – ILoveJackDaniels.com

数据过滤,过滤,再过滤,防止XSS 和 sql 注入,session也是个问题.
PHP Security Consortium: PHP Security Guide

检测php安全性的函数,类似phpinfo,提供安全的配置建议.
PHP Security Consortium: PHPSecInfo

不知道这个地方怎么行… 原来的hardening-php patch,现在的suhosin.
牺牲10%的性能,加倍的安全性能,你觉得值还是不值呢?
另外值得一提的就是 Month of PHP Bugs.
Hardened-PHP Project – PHP Security – Home

PHPSecInfo, PHP Security Guide的出处…
PHP Security Consortium

永远不要相信用户输入.
第6条, 可以考虑用file命令去检验一个文件,虽然很多时候不准.
第9条, 应该去使用socket去链接. 这样数据库的性能会进一步提高.
PHP MySQL Web Development Security Tips – 14 tips you should know about – PHP Forum

文章虽然没什么可说的, 底下的Further Reading可以看看.
Top 7 PHP Security Blunders

网络和系统安全, 是一个无尽的话题.

在Windows下经常有插件,弹窗,恶意软件什么的东西.
(不过偶知道,能看见这篇文章的你,是不会遇上这类事情的…)

ARP 病毒也经常流行. dawnh 同学前端时间分析了 瑞星ARP防火墙

p2p 使宽带运营商的利益受损,
而通过限制一户多机,推送广告的方式赚取更多的利润.

不过如果小型局域网限制一下 p2p 偶还是不太反对的.
ipp2p 甚至能够一定程度控制 bitcomet (0.63 开始有协议加密)
Official IPP2P homepage

更为强大的过滤器, 如果你会抓包分析, 你可以写出详细的过滤条件.
Application Layer Packet Classifier for Linux

一份非常详细的Manual. 值得一看.
个人认为容易忽视的地方:
核心配置 – 关闭 modules.
文件系统权限
文件完整性检测
(freebsd mtree, gentoo equery check,
个人建议使用mtree对 chroot 目录, 及重要配置,可执行文件进行定期扫描.)
Securing Debian Manual

防治 ssh 攻击, 可以和官方站点共享攻击者数据, 防止其它机器被攻击.
对于经常攻击别人的黑客来说, 站点上还有状态展示, 可惜的是中国人有点多…
Welcome to DenyHosts

防止垃圾邮件. 早先讨论过相关问题.
The Spamhaus Project – SBL

iptables 不会怎么能行 :)
Iptables Tutorial 1.2.2

Cross Site Scripting. 简称 XSS, 可是为什么不是 CSS(Cascading Style Sheets)? :D
Cross Site Scripting (XSS) questions and answers

预防为主… 事实上,仅仅禁用 Javascript 仍然是不够的.
Greg Murray’s Blog: Preventing Cross Site Scripting Attacks

最值得去看的地方了…
XSS (Cross Site Scripting) Cheat Sheet

倒霉的受害者… 不过, 个人认为最受关注的程序的漏洞最容易被发现…
XSSed – XSS (cross-site scripting) information and vulnerable websites archive

什么浏览器会出什么样的 XSS 问题?
Cross site scripting support

Tell others about me!

Leave a Reply

Your email address will not be published. Required fields are marked *