7月 212016
 

最近好几个朋友在给网站开启 HTTP/2 后,都遇到了无法访问的问题。其中有的网站只是 Firefox 无法访问,通过控制台网络面板可以看到请求被 Abort;有的网站不但 Firefox 无法访问,连 Chrome 也会跳到错误页,错误代码是「ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY」。诡异的是,只要去掉对 HTTP/2 的支持(例如去掉 Nginx listen 配置中的 http2)就一切正常。也就是说无法访问的现象只存在于 HTTPS + HTTP/2 的组合,单独提供 HTTPS 服务时就是好的。

这个问题比较有趣,本文除了告诉大家如何解决它之外,还会帮助大家弄清问题的来龙去脉。如果你只关心结论,直接看最后的小结即可。 Continue reading »

3月 052011
 

有不少不喜歡網頁上有 Flash(尤其是那些動畫),所以 Firefox 上也有一個很出名的 add-on Flashblock。我個人也不喜歡網頁用上 Flash,但也不至於原教旨般的逢 Flash 必反 – 只要用得其所便可。

在我的印象中,香港政府的網站常有濫用 Flash 的情況,隨便在 Google 找一下,也找到五個值得批評的例子。

第五位

區議會
http://www.districtcouncils.gov.hk/front.html

我十分反對 Flash Intro Page ,但現在幾乎每個政府網站都有,也只好接受 – 至少它們還有一個 skip button。不過我要特別針對區議會以前用的這個 Flash Intro,不止是因為它很醜,最重要是它在 Firefox 中不懂得 resize,畫面小到字也看不到(在 1024×768 下就是上圖的樣子),其實就算到了 IE,那段轉簡體中文的文字也不清楚。 Continue reading »

10月 132010
 

数据中心管理是IT管理人员的主要工作之一,但是很多人会犯一些数据中心管理错误,本文把常见的四个数据中心管理错误列出来,供您参考。

根据IDC的数据显示,在2008年,创建的信息总数超过了硬盘驱动器、磁带、CD、DVD和固态存储设备有史以来创建的可用空间的总额。同时,还伴随着数据法规的爆炸性增长,这些主要是由于电子发现(e-discovery)的要求,以及民事诉讼程序的修订而扩展的。

由于缺乏对法规和IT之间法律义务的认识和沟通,导致公司一直沿着“节省所有”的方向走。甚至数据量成倍增长,70%的公司没有对信息处理采取措施。结果,数据管理和诉讼费用总数达到了以百万计,甚至上亿,成本控制因此也就变得至关重要。

有一个巨大的机会让企业认识到处理数据的重要性,并可以极大的降低存储成本。在这篇文章中,我们将会揭露一些对数据不做处理的错误行为,让公司重新思考这个问题。

数据中心管理错误1:我们需要保留所有的东西

事实是:没有任何法律规定要保留所有的信息

很多时候,IT给人的印象是他们需要保存所有的东西,因为“法律需要”。事实上,公司没有任何的法律务来保留每条信息。但是公司的确有保留与他们诉讼相关数据的义务,以及为某种政府机构保存特定记录的义务。但是由于许多公司通过表格和电子邮件来管理这些进程,他们和IT部门缺乏有效沟通的能力,不知道应该保留什么数据。为了法律要求以及与法规相关实施谨慎、集成进程的公司能够更高效的管理数据,并打破了过度保留数据的惯例。 Continue reading »

10月 132010
 

作者:Cara Garretson 原文题目:Stupid data center tricks  翻译:吕欣

在导致数据中心故障的所有罪魁祸首中,技术问题所占比例很小,而人为错误却占据了大约70%的份额。由于某员工无意中把两条网线连接到一台错误的网络集线器上,整个校园网络陷入瘫痪状态;一名员工在进入一数据中心时由于路径不熟竟掉入“陷阱”而受伤;在数据中心的温控器设置被人从华氏温度改为摄氏温度后,系统由于过热而宕机。类似情况举不胜举,大多数据中心灾难并非缘自技术问题或自然灾害,而是人为失。

根据数据中心性能研究机构纽约正常运行时间学会(UPTIMEINSTITUTE)所提供的数据,目前人为失误引发了大约70%的数据中心故障。该机构副总裁朱利安·库德里斯基(JulianKudritzki)表示,他们分析了4500起数据中心事故,其中包含400次完全宕机事件,最后得出如上结论。库德里斯基最近还发布了保持数据中心可持续性运营的一套指南。

库德里斯基称,该结论并不令人感到意外,“运营管理是你最大的弱点,但它也是避免宕机的最大机遇。好在你可以对数据中心人员进行重新教育。”

市场研究公司Pund-ITResearch分析师查尔斯·金(CharlesKing)表示,不管是因为大意,还是因为培训不够、最终用户干涉、资金紧张或简单的错误,人为失误是不可避免的。由于当今IT系统日益复杂,数据中心工作人员工作时间过长,一些本来可以避免的小故障却时有发生。而且随着企业越来越依赖于技术来达到自己的商业目标,这些错误已经变得更加危险,让企业付出的代价也越来越高。 Continue reading »

10月 232008
 

CSS+DIV是网站标准(或称“WEB标准”)中常用的术语之一,通常为了说明与 HTML网页设计语言中的表格(table)定位方式的区别,因为XHTML网站设计标准中,不再使用表格定位技术,而是采用css+div的方式实现各种定位。应用应用DIV+CSS编码时很容易犯一些错误。本文列举了一些常见的错误:

1. 检查HTML元素是否有拼写错误、是否忘记结束标记

即使是老手也经常会弄错div的嵌套关系。可以用dreamweaver的验证功能检查一下有无错误。

2. 检查CSS是否正确

检查一下有无拼写错误、是否忘记结尾的 } 等。可以利用CleanCSS来检查 CSS的拼写错误。CleanCSS本是为CSS减肥的工具,但也能检查出拼写错误。

3. 确定错误发生的位置

如果错误影响了整体布局,则可以逐个删除div块,直到删除某个div块后显示恢复正常,即可确定错误发生的位置。

4. 利用border属性确定出错元素的布局特性

使用float属性布局一不小心就会出错。这时为元素添加border属性确定元素边界,错误原因即水落石出。

5. float元素的父元素不能指定clear属性

MacIE下如果对float的元素的父元素使用clear属性,周的float元素布局就会混乱。这是MacIE的著名的bug,倘若不知道就会走弯路。

6. float元素务必指定width属性

很多浏览器在显示未指定width的float元素时会有bug。所以不管float元素的内容如何,一定要为其指定width属性。

另外指定元素时尽量使用em而不是px做单位。 Continue reading »

10月 012008
 

对于PHP开发人员来说,一旦某个产品投入使用,那么第一件事就是应该将display_errors选项关闭,以免因为这些错误所透露的路径、数据库连接、数据表等信息而遭到黑客攻击。

某个产品投入使用后,难免会有错误信息,那么如何记录这些对开发人员非常有用的信息呢?

将PHP的log_errors开启即可,默认是记录到WEB服务器的日志文件里,比如Apache的error.log文件。

当然也可以记录错误日志到指定的文件中。

# vim /etc/php.ini
display_errors = Off
log_errors = On
error_log = /var/log/php-error.log

另外也可以设定error_log = syslog,使这些错误信息记录到操作系统的日志里。

7月 252008
 

2008-07-24 来源:中国站长站 作者:老周 梁铁欣

核心提示:短视,急躁,对自己和对手无知,用数量取代质量等互联网人容易发生的弊病。喜欢做人民的代言人很喜欢用“肯定”、“当然”、“一定”、“自然”这样的肯定词,却根本没有实际的数据支持作者做了详细的解释和挑刺。

中国站长站(chinaz)编辑评述:短视,急躁,对自己和对手无知,用数量取代质量等互联网人容易发生的弊病。喜欢做人民的代言人很喜欢用“肯定”、“当然”、“一定”、“自然”这样的肯定词,却根本没有实际的数据支持作者做了详细的解释和挑刺。如何成为强者,首先认清自己,尊重对手,用理性的思考和抱着如履薄冰的心态才是避免犯大错误的要领。

梁铁欣的一篇博客关于:互联网工作者最容易犯的十个错误

1.总是看不起对手

2.从不使用对手的产品

3.从不关心行业动态

4.在纷繁复杂的行业信息中迷失

5.将个人习惯作为广大用户的习惯

6.缺乏激情

7.缺乏创新精神与勇气

8.不考虑赢利

9.不关心细节

10.只关心互联网 Continue reading »

2月 132008
 

MySql数据库修复
                                      

今天早上发现因为磁盘满造成了Mysql服务没法正常运行,首先腾硬盘空间,再停止 mysqld服务,还用了下kill杀掉了mysqld进程,后来发现数据库虽然启动了,但是数据表损坏了,google搜索了下,用myisamchk 修复了下数据表文件,成功。特摘录下文。

检查和修复MySQL数据文件

由于临时断电,使用kill -9中止MySQL服务进程,或者是Jessica的朋友idiot@%.host.net又犯了一个错误,所有的这些都可能会毁坏MySQL的数据文件。如果在被干扰时,服务正在改变文件,文件可能会留下错误的或不一致的状态。因为这样的毁坏有时是不容易被发现的,当你发现这个错误时可能是很久以后的事了。于是,当你发现这个问题时,也许所有的备份都有同样的错误。

MySQL参考手册的第十五章讲述了MySQL自带的myisamchk的功能,以及如何使用它检查和修复你的MySQL数据文件。虽然这一章对于每个想要搭建一个强壮的MySQL服务的人都是推荐阅读的,我们还是有必要在这里对其中的要点进行讨论。

在我们继续之前,你必须意识到myisamchk程序对用来检查和修改的MySQL数据文件的访问应该是唯一的。如果MySQL服务正在使用某一文件,并对myisamchk正在检查的文件进行修改,myisamchk会误以为发生了错误,并会试图进行修复–这将导致MySQL服务的崩溃!这样,要避免这种情况的发生,通常我们需要在工作时关闭MySQL服务。作为选择,你也可以暂时关闭服务以制作一个文件的拷贝,然后在这个拷贝上工作。当你做完了以后,重新关闭服务并使用新的文件取代原来的文件(也许你还需要使用期间的变更日志)。

MySQL数据目录不是太难理解的。每一个数据库对应一个子目录,每个子目录中包含了对应于这个数据库中的数据表的文件。每一个数据表对应三个文件,它们和表名相同,但是具有不同的扩展名。tblName.frm文件是表的定义,它保存了表中包含的数据列的内容和类型。tblName.MYD文件包含了表中的数据。tblName.MYI文件包含了表的索引(例如,它可能包含lookup表以帮助提高对表的主键列的查询)。

要检查一个表的错误,只需要运行myisamchk(在MySQL的bin目录下)并提供文件的位置和表名,或者是表的索引文件名:

% myisamchk /usr/local/mysql/var/dbName/tblName
% myisamchk /usr/local/mysql/var/dbName/tblName.MYI

上面的两个命令都可以执行对指定表的检查。要检查数据库中所有的表,可以使用通配符:

% myisamchk /usr/local/mysql/var/dbName/*.MYI

要检查所有数据库中的所有表,可以使用两个通配符:

% myisamchk /usr/local/mysql/var/*/*.MYI

如果不带任何选项,myisamchk将对表文件执行普通的检查。如果你对一个表有怀疑,但是普通的检查不能发现任何错误,你可以执行更彻底的检查(但是也更慢!),这需要使用–extend-check选项:

% myisamchk –extend-check /path/to/tblName
对错误的检查是没有破坏性的,这意味着你不必担心执行对你的数据文件的检查会使已经存在的问题变得更糟。另一方面,修复选项,虽然通常也是安全的,但是它对你的数据文件的更改是无法撤消的。因为这个原因,我们强烈推荐你试图修复一个被破坏的表文件时首先做个备份,并确保在制作这个备份之前你的MySQL服务是关闭的。

当你试图修复一个被破坏的表的问题时,有三种修复类型。如果你得到一个错误信息指出一个临时文件不能建立,删除信息所指出的文件并再试一次–这通常是上一次修复操作遗留下来的。

这三种修复方法如下所示:

% myisamchk –recover –quick /path/to/tblName
% myisamchk –recover /path/to/tblName
% myisamchk –safe-recover /path/to/tblName

第一种是最快的,用来修复最普通的问题;而最后一种是最慢的,用来修复一些其它方法所不能修复的问题。

检查和修复MySQL数据文件

如果上面的方法无法修复一个被损坏的表,在你放弃之前,你还可以试试下面这两个技巧:

如果你怀疑表的索引文件(*.MYI)发生了不可修复的错误,甚至是丢失了这个文件,你可以使用数据文件(*.MYD)和数据格式文件(*.frm)重新生成它。首先制作一个数据文件(tblName.MYD)的拷贝。重启你的MySQL服务并连接到这个服务上,使用下面的命令删除表的内容:

mysql> DELETE FROM tblName;

在删除表的内容的同时,会建立一个新的索引文件。退出登录并重新关闭服务,然后用你刚才保存的数据文件(tblName.MYD)覆盖新的(空)数据文件。最后,使用myisamchk执行标准的修复(上面的第二种方法),根据表的数据的内容和表的格式文件重新生成索引数据。

如果你的表的格式文件(tblName.frm)丢失了或者是发生了不可修复的错误,但是你清楚如何使用相应的CREATE TABLE语句来重新生成这张表,你可以重新生成一个新的.frm文件并和你的数据文件和索引文件(如果索引文件有问题,使用上面的方法重建一个新的)一起使用。首先制作一个数据和索引文件的拷贝,然后删除原来的文件(删除数据目录下有关这个表的所有记录)。

启动MySQL服务并使用当初的CREATE TABLE文件建立一个新的表。新的.frm文件应该可以正常工作了,但是最好你还是执行一下标准的修复(上面的第二种方法)。