set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
set diffexpr=MyDiff()
function MyDiff()
let opt = '-a --binary '
if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
let arg1 = v:fname_in
if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
let arg2 = v:fname_new
if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
let arg3 = v:fname_out
if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
let eq = ''
if $VIMRUNTIME =~ ' '
if &sh =~ '\ ' . arg3 . eq
endfunction
"" exec "!e: && cd E:\\PortableApps\\flake8-1.3 && C:\\Python27\\python.exe E:\\PortableApps\\flake8-1.3\\setup.py build"
"" exec "!e: && cd E:\\PortableApps\\flake8-1.3 && C:\\Python27\\python.exe E:\\PortableApps\\flake8-1.3\\setup.py install"
set autoindent " same level indent
set smartindent " next level indent
set expandtab
set tabstop=4
set shiftwidth=4
set softtabstop=4
set tags=tags;
set autochdir
call pathogen#infect()
filetype plugin on
filetype plugin indent on
autocmd FileType python setlocal et sta sw=4 sts=4
let Tlist_Ctags_Cmd = 'E:\PortableApps\ctags58\ctags'
let g:pydiction_location = 'E:\PortableApps\gVimPortable\App\vim\vim73\ftplugin\pydiction\complete-dict'
set encoding=utf-8
set langmenu=zh_CN.UTF-8
language message zh_CN.UTF-8
let Tlist_Inc_Winwidth=0
let Tlist_Use_Right_Window=1
let Tlist_File_Fold_Auto_Close=1
func! Run()
exec "w! temp.py"
if &filetype == "python"
exec '!C:\Python27\Python E:\PortableApps\stu\temp.py'
endif
endfunc
map :call Run()
set mouse=a
set nu
func! Run16en()
exec "%!xxd"
endfunc
func! Run16de()
exec "%!xxd -r"
endfunc
map :call Run16en()
map :call Run16de()
set guifont=Courier_new:h11
"解决菜单乱码
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
"解决consle输出乱码
language messages zh_CN.utf-8
分类: IT生活
VB6.0中“取消 Pentium(tm) FDIV 安全性检查”是什么意思
最近比尔盖子在用VB6.0编写一个小型程序。在高级编译优化选项中,有一项:“取消 Pentium(tm) FDIV 安全性检查”,这是什么意思呢?在查阅了资料以后,终于明白了,我们就来了解一下吧。
1994年10月,美国弗吉尼亚州Lynchburg College数学系教授Thomas Nicely发现用电脑处理长除法时一直出错。他用一个数字去除以824,633,702,441时,答案一直是错误的。事后才知道,这位教授使用的60-100MHz P5版本奔腾处理器在浮点运算单元有一个问题,原因是英特尔为了加速运算,将整个乘法表烧录在处理器上面,但是2048个乘法数字中,有5个输入错误。在极少数情况下,会导致除法运算的精确度降低甚至出错。这就是后来臭名昭著的Pentium FDIV bug。
因此,为了避免由于处理器bug导致的运算错误,很多编译器都增加了一个编译选项,可以让程序通过间接运算的方法绕过这个FDIV bug,避免在有 FDIV bug的奔腾处理器上运算错误。但是,由于如今几乎已经不可能有人使用这种老奔腾处理器了,因此可以在VB6.0或其它的编译器中(如果有的话),安全的“取消 Pentium(tm) FDIV 安全性检查”,可以轻微提高性能,同时不会导致任何异常。
最后送上十几年前的那个笑话:英特尔有新格言了
United We Stand, Divided We Fall.
注:这句话原出自《伊索寓言》,翻译过来即是
合即立,分即跨。
但是Divided在这里是“除法”的意思。于是就有了翻译过来大概是
加法我们对了,除法我们错了。
“mysql-bin.000001″占用超大空间
最近几个月服务器总是频繁当机,导致比尔盖子的可用性得不到保证。但说也奇怪,当机的时候,服务器可以正常连接,Nginx也看似正常,但就是PHP-FPM失去响应。后来无意中df -h一下,发现:
rootfs 7.7G 7.7G 0 100% /
根目录满了!便认为是日志太多,清理了下日志。但基本每个一个星期日志就会满。弄得比尔盖子不得安宁。后来就把/var独立分区了,但依然不奏效,有多少占多少。也清理过/var/tmp和/var/cache,但效果依然有限。
今天,耐着性子du -ah,发现/var/lib/mysql占用空间异常,cd到这里ls -lh后发现:
-rw-rw---- 1 mysql mysql 5242880 Feb 27 14:49 ib_logfile0
-rw-rw---- 1 mysql mysql 5242880 Dec 27 17:55 ib_logfile1
-rw-rw---- 1 mysql mysql 588M Mar 12 02:03 maria_log.00000003
-rw-rw---- 1 mysql mysql 52 Mar 12 01:54 maria_log_control
drwx------ 2 mysql root 4.0K Jan 15 14:28 mysql
-rw-rw---- 1 mysql mysql 20K Dec 27 17:54 mysqld-bin.000001
-rw-rw---- 1 mysql mysql 715K Dec 27 17:54 mysqld-bin.000002
-rw-rw---- 1 mysql mysql 625 Dec 28 11:46 mysqld-bin.000003
-rw-rw---- 1 mysql mysql 125 Dec 27 18:20 mysqld-bin.000004
-rw-rw---- 1 mysql mysql 125 Dec 27 18:20 mysqld-bin.000005
-rw-rw---- 1 mysql mysql 125 Dec 27 18:21 mysqld-bin.000006
-rw-rw---- 1 mysql mysql 125 Dec 27 18:21 mysqld-bin.000007
-rw-rw---- 1 mysql mysql 125 Dec 27 18:22 mysqld-bin.000008
-rw-rw---- 1 mysql mysql 125 Dec 27 18:22 mysqld-bin.000009
-rw-rw---- 1 mysql mysql 20K Dec 27 18:22 mysqld-bin.000010
-rw-rw---- 1 mysql mysql 715K Dec 27 18:22 mysqld-bin.000011
-rw-rw---- 1 mysql mysql 125 Dec 27 18:24 mysqld-bin.000012
-rw-rw---- 1 mysql mysql 125 Dec 27 18:25 mysqld-bin.000013
-rw-rw---- 1 mysql mysql 125 Dec 27 18:27 mysqld-bin.000014
-rw-rw---- 1 mysql mysql 125 Dec 28 09:55 mysqld-bin.000015
-rw-rw---- 1 mysql mysql 125 Dec 28 11:41 mysqld-bin.000016
-rw-rw---- 1 mysql mysql 125 Dec 28 11:42 mysqld-bin.000017
-rw-rw---- 1 mysql mysql 125 Dec 28 12:07 mysqld-bin.000018
-rw-rw---- 1 mysql mysql 1.4K Dec 28 12:49 mysqld-bin.000019
-rw-rw---- 1 mysql mysql 125 Dec 28 16:31 mysqld-bin.000020
-rw-rw---- 1 mysql mysql 107M Dec 28 18:30 mysqld-bin.000021
-rw-rw---- 1 mysql mysql 1.2M Dec 30 09:22 mysqld-bin.000022
-rw-rw---- 1 mysql mysql 125 Dec 30 09:26 mysqld-bin.000023
-rw-rw---- 1 mysql mysql 3.8K Dec 30 12:29 mysqld-bin.000024
-rw-rw---- 1 mysql mysql 59M Jan 11 21:34 mysqld-bin.000025
-rw-rw---- 1 mysql mysql 10M Jan 14 15:16 mysqld-bin.000026
-rw-rw---- 1 mysql mysql 186K Jan 15 05:16 mysqld-bin.000027
-rw-rw---- 1 mysql mysql 21K Jan 15 14:46 mysqld-bin.000028
-rw-rw---- 1 mysql mysql 13K Jan 15 15:12 mysqld-bin.000029
-rw-rw---- 1 mysql mysql 62M Jan 17 16:36 mysqld-bin.000030
-rw-rw---- 1 mysql mysql 63M Jan 18 17:10 mysqld-bin.000031
-rw-rw---- 1 mysql mysql 125 Jan 18 17:16 mysqld-bin.000032
-rw-rw---- 1 mysql mysql 21K Jan 18 17:23 mysqld-bin.000033
-rw-rw---- 1 mysql mysql 118M Jan 22 12:41 mysqld-bin.000034
-rw-rw---- 1 mysql mysql 209K Jan 22 12:59 mysqld-bin.000035
-rw-rw---- 1 mysql mysql 117M Jan 28 11:59 mysqld-bin.000036
-rw-rw---- 1 mysql mysql 125 Jan 28 13:46 mysqld-bin.000037
-rw-rw---- 1 mysql mysql 24M Jan 28 16:01 mysqld-bin.000038
-rw-rw---- 1 mysql mysql 460K Jan 28 16:10 mysqld-bin.000039
-rw-rw---- 1 mysql mysql 7.0M Jan 28 16:52 mysqld-bin.000040
-rw-rw---- 1 mysql mysql 2.3M Jan 28 17:12 mysqld-bin.000041
-rw-rw---- 1 mysql mysql 2.1M Jan 28 17:27 mysqld-bin.000042
-rw-rw---- 1 mysql mysql 173K Jan 28 17:37 mysqld-bin.000043
-rw-rw---- 1 mysql mysql 378K Jan 28 17:44 mysqld-bin.000044
-rw-rw---- 1 mysql mysql 79K Jan 28 17:50 mysqld-bin.000045
-rw-rw---- 1 mysql mysql 272K Jan 28 18:12 mysqld-bin.000046
-rw-rw---- 1 mysql mysql 156K Jan 28 18:15 mysqld-bin.000047
-rw-rw---- 1 mysql mysql 962K Jan 28 18:33 mysqld-bin.000048
-rw-rw---- 1 mysql mysql 43K Jan 28 18:40 mysqld-bin.000049
-rw-rw---- 1 mysql mysql 28M Jan 29 11:43 mysqld-bin.000050
-rw-rw---- 1 mysql mysql 125 Jan 29 11:46 mysqld-bin.000051
-rw-rw---- 1 mysql mysql 139K Jan 29 12:37 mysqld-bin.000052
-rw-rw---- 1 mysql mysql 135K Jan 29 12:44 mysqld-bin.000053
-rw-rw---- 1 mysql mysql 409M Feb 9 23:18 mysqld-bin.000054
-rw-rw---- 1 mysql mysql 482M Feb 17 09:37 mysqld-bin.000055
-rw-rw---- 1 mysql mysql 542M Feb 27 12:30 mysqld-bin.000056
-rw-rw---- 1 mysql mysql 125 Feb 27 12:31 mysqld-bin.000057
-rw-rw---- 1 mysql mysql 125 Feb 27 14:48 mysqld-bin.000058
-rw-rw---- 1 mysql mysql 854M Mar 13 12:08 mysqld-bin.000059
-rw-rw---- 1 mysql mysql 1.1K Feb 27 14:49 mysqld-bin.index
上帝老天爷,这些log和bin都是什么玩意儿?!最后找到资料:
mysql-bin.000001、mysql-bin.000002等文件是数据库的操作日志,例如UPDATE一个表,或者DELETE一些数据,即使该语句没有匹配的数据,这个命令也会存储到日志文件中,还包括每个语句执行的时间,也会记录进去的。这主要是用于操作审查和多数据库同步的。ib_logfile则是用来记录InnoDB的表一致性的,只有在当机后才能发挥作用。maria_log.00000003则是比尔盖子使用的MariaDB特有的文件,作用也差不多。
但是对比尔盖子来说,没有主从数据库,也不用审查操作,这些文件完全没有任何用处!因此,首先清理一下这些文件。然后编辑mysql配置文件,组织其再记录这些日志,铲草除根。Gentoo的MySQL日志在/etc/mysql/my.cnf。把里面的log-bin这一行注释掉。
然后重启MySQL服务器,问题搞定!可用空间瞬间增加数GB!
一个不好的冒泡排序算法实现
最近在研究在研究Python,先是做了一个凯撒加密,现在则实现了冒泡排序算法。在实现这个算法时,坚决没有看现成的例子,完全是冒泡排序的文字叙述实现的。
因此,这个算法实现有很多没用的循环和判断,只是练习,在产品中使用肯定是不行的。另外代码中还包括性能统计swap和whiletime,分别计算的是数字的交换次数和循环的进入次数,通过此统计可以看出这个实现多么低效。
#!/usr/bin/python3
times=0
times2=0
swap=0
whiletime=0
list=[858282,4252,5825725,8752,-2825245,8725,-82257465]
while times2 < len(list) -1:
whiletime+=1
while times < len(list)-1:
whiletime+=1
times+=1
if list[times-1] > list[times]:
swap+=1
a=list[times-1]
b=list[times]
list[times-1]=b
list[times]=a
times2+=1
times=0
print(list)
print('Swap times:',swap)
print('While times:',whiletime)
Python实现移位密码(凯撒密码)加密
实现移位密码,就是将字母从字母表中向左移动或向右移动。比尔盖子首先想到了ANSI码,但由于不知道怎么处理出界,因此又用列表解决问题。等修改完列表,突然又想到ANSI的解决方案。因此,才写了两个版本。大家根据需求用吧。如果有bug务必提出!
这里有两段代码可以实现,一个是用ANSI码实现;另一个是用列表实现。
但是这些代码一点都不“美”,还需修改。经过修改,已经有些完美了。
更新1:列表版的代码不但不美,而且还有bug,比尔盖子已经做了修改!
更新2:ANSI版的代码虽然实现简单,但是没有注释,而且有两个严重bug,比尔盖子也已经修改!
更新3:使用取余数来代替while循环减去26,在明文、密钥超长的情况下提速至少100倍;化简了ANSI版出界对折的公式。
更新4:重新实现了list版本的加密算法,性能又至少提升2倍。
注:无论代码里是否有声明, 这里的声明将覆盖掉其中的声明。
代码使用GPL v3或更高版本发布。
ANSI版:
这里的代码已经修改了,有了详细注释,而且修正了bug。
很抱歉,代码太多了,因此请去我的Github:https://github.com/biergaizi/caesar-encrypt/tree/查看各个版本,ANSI版的文件名叫”ansi.py”。
列表版:
这里的代码已经修改了,更加美,而且修正了bug。
新版
很抱歉,代码太多了,因此请去我的Github:https://github.com/biergaizi/caesar-encrypt/tree/查看各个版本,列表版的文件名叫”list.py”。
U盘缩水?不存在的事实!(LaTeX排版)
又根据《U盘缩水?不存在的事实》修改成了这篇文章,使用LaTeX排版。
PDF在这里:U盘缩水?不存在的事实!
它的LaTeX代码如下:
\documentclass{article}
\usepackage{CJK,indentfirst}
\usepackage{hyperref}
\hypersetup{CJKbookmarks,%
bookmarksnumbered,%
colorlinks,%
linkcolor=blue,%
citecolor=blue,%
urlcolor=blue,%
plainpages=false,%
pdfstartview=FitH}
\begin{document}
\begin{CJK}{GBK}{song}
\title{U盘缩水?不存在的事实!}
\author{比尔·盖子}
\date{2012年1月29日}
\maketitle
\renewcommand\contentsname{\textbf{目录}}
\tableofcontents
\section{惊天新闻}
最近,中国消费者协会的一篇文章指出:
\begin{quote}
北京市消协4日公布USB闪存盘比较试验结果。结果显示,消费者经常使用的金士顿、索尼等30种USB闪存盘普遍存在虚标容量问题,所有样品均未达到产品包装明示的容量,同时USB闪存盘产品的性能差异大,拷贝速度快慢差距悬殊。据北京市消协介绍,本次比较试验的样品由北京市消费者协会工作人员以普通消费者身份随机购买。样品来源涵盖北京市电器商场、超市、电子市场以及网络购物渠道,样品涉及30家企业生产或经销的标示存储容量为8GB和16GB的USB闪存盘产品。
北京市消协比较试验表明,在30个样品中,所有样品标称容量均与实际可使用容量不符,大部分样品的可使用容量在标称容量的93\%以下。且企业未在产品包装或说明书中明示可使用容量,剥夺了消费者的知情权,消费者无法根据标称确定实际可使用的容量。
出处:\url{http://tech.sina.com.cn/it/2012-01-05/01096600702.shtml}
\end{quote}
照这样说,市场上的所有U盘厂商都在虚报U盘容量,而且达数年之久?!同时,也引发了微博上的一场大讨论。但比尔盖子认为这就是一场闹剧。
\section{词头}
\subsection{国际单位制词头}
在十进制,也就是日常生活中与一般的数学领域中,使用\textbf{国际单位制词头}来表示单位的倍数和分数。目前有20个词头。大多数是\textbf{千的倍数或分数},也就是1000(103)。简单地说,国际单位制词头就是数字的简便写法。
比如说:我月薪1k元和我月薪1M元。首先,1k元读作1 kilo元;1M的读作1 Mega元,分别表示月薪1000元和月薪1000000元。
国际单位制词头由\textbf{国际度量衡大会}管理。每4-6年,都会与50多个成员国代表开会讨论有关问题。
\subsection{二进制乘数词头}
而在二进制领域,有一套完全不同的计数标准,叫做\textbf{二进制乘数词头}。它采用2的乘幂而不是用10的乘幂。所有乘数词头都是1024(210)相乘而不是在国际单位制词头采用的1000(103)。
\subsubsection{容易引起混淆的版本}
起初的二进制乘数词头与国际单位制词头的读法与写法完全相同,而且,尽管有了避免混淆的版本,但是这个版本仍在生活中广泛使用着。比如说,二进制中的1k表示1024而不是1000;1M表示1048576(1024×1024)而不是1000000(1000×1000)。就是由于这点,因此经常出现“是1000呢?还是1024?”的严重混淆,只能通过上下文来推断出其含义。
\subsubsection{规范的版本——IEC标准}
为了防止混淆,1999年,IEC\footnote{International Electrotechnical Commission, 国际电工委员会。}公布了新的二进制乘数词头版本,在这一版本中,二进制乘数词头与国际单位制词头的读法与写法开始不同。在二进制中1k、1M混淆的说法,变成了1Ki、1Mi,读法也变成了1 kibi、1 mebi,而不是1 kilo;1 Mega。
EU\footnote{European Union, 欧盟。}和IEEE\footnote{Institute of Electrical and Electronics Engineers, 美国电气电子工程师协会。}都使用此标准作为官方标准
\section{度量}
在计算机中,有一套完整的度量系统来度量数据的多少,以及储存设备能储存多少数据。但度量不同储存设备的容量时,有时使用国际单位制词头,有时使用二进制乘数词头,因此容易引起误解。
\section{容量的度量}
在计算机中,容量的最小单位是比特(bit)。但是由于bit是在太小,甚至一个英文字母(最简单的一份数据)要用掉8bit的空间,汉字更甚,要用16bit的空间。如果用这个单位来表示文件大小,实在不便。由于保存一份最简单的数据要用8bit,那好,那就定义一种新的单位吧:Byte。一Byte就等于8bit——一份最简单的信息所占的空间,而且可以缩写成b。但是byte也实在太小,因此总得有更高级的单位吧!
怎么办呢?凭空创造新的单位实在是难以让人接受。有了!把它与国际单位制词头结合在起来是个不错的主意。组合之后,就有了1kb、1MB这样的组合,分别代表1000bytes和1000000bytes\footnote{在英文语法中,表示多个物体时,通常要在该物体的名词后面加s。}。
但是这样做,后来出现的软件工程师们不干了!你是把byte和十进制的词头组合到一起的,但是对于软件使用的是二进制啊!难道我们天天做换算不成??!!不可能啊!因此,人们就又将二进制乘数词头和byte组合而成,又成了新的1kb、1MB这样的组合,分别代表1024byes和1048576bytes。
\section{度量单位的使用}
好了,现在两种组合方式总算定出来了?什么情况下用十进制版本,什么情况下用二进制版本呢?由于大部分生产硬件的,都是在和电路板、电子管、晶体管这样的看得见的电子设备打交道,这些电子设备的容量、速度原则上不能使用二进制度量,因此使用的也就是十进制的版本;但是做软件的,成天和什么十六进制、八进制、二进制打交道,而且软件中的容量原则上也不能使用十进制度量,因此自然使用二进制版本。
而这些硬件、软件在出售时,自然也使用两套标准。因为这时候IEC的规范标准离出台还远着呢,十进制和二进制的写法读法根本没区别,如果你不研究研究,谁也不知道你用的是哪个标准。
\subsection{什么硬件可以用二进制度量,什么硬件用十进制度量?}
\begin{itemize}
\item 硬盘只能用十进制度量,因为硬盘的最小物理单位为512bytes,最小的组成单位为扇区(sector), 通常硬盘容量的计算采用“多少个sector”,所以才会使用十进制来处理。这种十进制度量的方式历史悠久,世界上第一块硬盘就是用的是这种度量方式,那时候,国际单位制词头甚至还不存在!
\item 闪存盘,同时包括各种储存卡、手机内部储存、固态硬盘与固态储存器,都是用十进制度量。虽然是这样,但是由于它们的性质,十进制容量一般是2的倍数。
\item CD、DVD的度量方法不同,CD使用二进制度量,而DVD使用十进制度量,可能有什么鲜为人知的原因才会这样。
\item 内存条、各种储存芯片,例如ROM、RAM,包括BIOS芯片等,只能使用二进制度量,因为它们天生就用这种计算方法。你买的512MB内存,电脑肯定会照样这么显示,永远不会“缩水”。
\item 网速用十进制表示。但是,虽然网速都用十进制表示,却还有两种形式:第一种形式是几kb一秒,比如:100kb/秒、1MB/秒,下载文件时通常用这种方式来表示速度。
但是第二种形式就玄乎了,首先它居然是用前面提到的,计算机中最小的单位bit来计算,而不是用Byte(b)来计算。而且,它还使用十进制来计算,把bit和国际单位制词头又结合在一起。看来,除了有将国际单位制词头和byte结合在起来;将二进制乘数词头和byte组合,还有把bit和国际单位制词头又结合在一起。
乖乖,正如我前面所说的,8bit才等于1byte。因此,换算成以byte计算的速度,需要除以8。如果“我家是8M宽带”,那么软件显示的下载速度就是$8M/8=1M/s$\footnote{s, 代表second,秒。}。 如果“我家是1M 宽带”,那么下载速度只有500k/秒。
\end{itemize}
\subsection{操作系统的容量的显示}
不管能不能用二进制来度量,操作系统在多数情况下都会一律将它显示成二进制的形式,因为它是软件嘛,善于用二进制。例如说:8GB U盘改用二进制度量就变成了7GB多一些;1TB硬盘变成了约900GB;但是内存由于是二进制买的是多少还是多少。而网速呢?其实网速计算一般只用玄乎的第二种,第一种也是操作系统显示出来的。而Linux和Mac OS X有时则会使用十进制的度量法。
\section{U盘到底能用多少空间?}
2GB的U盘,能够使用的容量究竟有多少?由于U盘使用的是十进制的计算方式,操作系统愣是把它转换成了二进制,就已将有一些损失了,再加上格式化之后(不格式化怎么用),文件系统本身也要占用一些空间,包括扇区大小等都会影响其可用容量。因此,2GB U盘最终能使用的容量就只有约1.8GB左右了。
\section{结论}
通过上面漫长而啰嗦的描述,我们得知,消协的“U盘缩水”完全不是欺骗消费者。
\section{一些思考}
有一天,消协的人缺U盘用了,便去各大电子市场进行考察,用公费购买了各种品牌、各种样式的U盘,并对其进行性能测试和容量测试。结果发现都不合格,于是写了一文章谴责,并将这些“不合格”的U盘分了。
\section{后记}
写这篇文章,实在是费时费力。其实本文依然没有完成。因为正如同文中所说,影响容量的因素除了词头,还有文件系统本身也要占用一些空间,包括扇区大小等都会影响其可用容量。而文件系统是在是晦涩难懂,比如无序的 fat32、有序的ext2,、带日志的ext3、高性能的ext4还有NTFS等等,而这些文件系统影响容量的原因也不同。因此,这部分内容还是等今后再写吧。
Powered by \LaTeX.
\end{CJK}
\end{document}
为什么要打倒IE6(LaTeX排版)
这是我的第一篇用LaTeX排版而成的文章,由比尔盖子去年所写的《淘汰IE6——如何升级过时的IE6》修改而成,具体请看PDF。
第二版
第二版修正了第一版中LaTeX排版方面的错误,与一些文章内容。
PDF在这里:为什么要打倒IE6(第二版)
它的LaTeX代码如下:
\documentclass{article}
\usepackage{CJK}
\usepackage{indentfirst}
\begin{document}
\begin{CJK}{GBK}{song}
\title{为什么要打倒IE6(第二版)}
\author{比尔·盖子}
\date{2011年8月12日}
\maketitle
\renewcommand\contentsname{\textbf{目录}}
\tableofcontents
\section{浏览器简介}
到底什么是浏览器呢?\textbf{其实上网看网页,也是需要一个软件的}。因为\textbf{ 是浏览网页用的,就叫“浏览器”了。}
浏览器\textbf{不止一种}:谷歌出品的 Chrome\footnote{它的开源版本 Chromium 也广为人知。};Moliza 出品的 Firefox,\textbf{都是}很好的浏览器。但是使用率\textbf{最高的},要数微软公司出品的\textbf{IE}\footnote{全称 Internet Explorer,互联网探索者。},因为它是系统自带的嘛,所以是使用最广泛的。
\textbf{浏览器和其它软件一样,也会升级换代},比如IE 就从最初的IE6,一直到IE7、IE8。\textbf{作为浏览器,当然是越新越好,但是IE 使用率最高的居然是10 年前过时的IE6},因为它是系统自带的嘛!
\section{过时浏览器}
网站的设计是有规范的,而浏览器正是按照这个规范打开网页,而这个规范也随着互联网的发展随之升级。但是,如果一款浏览器依然使用旧的规范,就会出现异常。比如IE6 发布后的几年,互联网规范升级了,因此微软公司就迅速发布的新版的IE7,跟进了新的规范。但是,IE6作为系统自带的浏览器,很多人都不知道升级,因此IE7没有被普及,IE8同样如此。
慢慢,使用过时浏览器,特别是IE6的危害显露出来:
\begin{enumerate}
\item 严重的页面错误——因为HTML\footnote{HTML(HyperText Markup Language,超文本标记语言)是为“网页创建和其它可在网页浏览器中看到的信息”设计的一种标记语言。HTML被用来结构化信息——例如标题、段落和列表等等,也可用来在一定程度上描述文档的外观和语义。没有HTML,就没有网页。}、CSS\footnote{CSS(Cascading Style Sheets, 层叠样式表)专门用于控制网页的字体大小、格式、间距、配色等,与HTML协同工作,大幅度简化了网站格式设计的负担。}、JavaScript\footnote{对于更高级的网页功能,HTML就力不从心了,因此,出现了 JavaScript 这种脚本编程语言,经常来给HTML网页添加动态功能。大多数浏览器都具备解析JavaScript的能力。}出现了新的版本,
IE6 无法兼容,打开网站或多或少会不正常:文字错位,图片错位等,这是真是痛苦不堪\footnote{比尔盖子博客在IE6 就会出现浏览器无响应、内容错位的严重问题。}啊!
\item 严重的安全问题——由于十年前,互联网的安全问题还没有如今这么严峻,且当时IE6也是比较安全的浏览器。但后来互联网安全形势日益严峻,IE6的城墙已经无法抵御火炮的攻击了。
\item 严重的性能问题——为什么我的四核心电脑在打开网页时还是经常“卡机”?IE6 在当时是性能较高的浏览器,但新的网络技术,如新版本CSS出现之后,由于IE6对其无法进行优化;IE6陈旧的JavaScript解析器也对新版本的JavaScript力不从心,从而导致性能严重低下。
\item 严重的开发挑战——最痛苦的还是网站工程师,虽然有着新规范,但是因为按照10 年前规范设计的浏览器IE6仍然普及,为了能让IE6不出现文字错位,图片错位等,工程师就要按照旧规范再设计一边网站!导致了严重的重复劳动,但是没办法,IE6 不懂得遵守新规范啊!因此网站工程师的工作量增加了不止一倍!以至于IE6成了互联网公敌!
\item 本身也会有问题,比如上网时,存在着浏览器突然死掉,没有反应的问题。
\end{enumerate}
\section{升级IE6}
现在,由于西方已经大力打击互联网公敌IE6,因此在西方的使用率大大减少,甚至降至1\%到5\%。
但是在中国,有无数的盗版 Windows XP 仍在使用,而这些系统都自带IE6,因此互联网公敌IE6 在中国的使用率仍居高不下,达30.5\%,IE6甚至成为中国互联网的绊脚石。为了推动中国互联网的进步,和让你更加高效的浏览网页,请升级IE6。
另外要说的是,盗版系统也可以升级\footnote{微软起初在IE的升级程序中加入了正版验证,导致大量的盗版系统无法升级。后来由于消灭IE6势在必行,微软便去除了任何验证。}不会出现正版验证提示,这点请放心!
\newpage
\section{后记}
使用\LaTeX 这一伟大的排版系统排版,实在是一件令人愉快的事情。使用它,无需关注具体的格式,就能自动排出精美的版面、公式、目录。以后,比尔盖子会大量的使用这一排版系统。另外,根据 Views63 的指点,对本文进行了一些修改,其中之一就是使用空行分段,而不是\textbackslash\textbackslash 换行,经过试用,果然消除了所有的Bad Boxes,十分感谢。
另外,\LaTeX 换行的问题实在是有些头疼,我习惯空行分段,但\LaTeX ,编译出来的是行首空两格分段,而且第一行无法空格。后来发现只要导入 Indentfirst 宏包就行了,空行分段就以后再研究吧。
\end{CJK}
\end{document}
第一版
它的LaTeX代码如下:
\documentclass{article}
\usepackage{CJK}
\begin{document}
\begin{CJK}{GBK}{song}
\title{为什么要打倒IE6}
\author{比尔·盖子}
\date{2011年8月12日}
\maketitle
\renewcommand\contentsname{\textbf{目录}}
\tableofcontents
\section{浏览器简介}
到底什么是浏览器呢?\textbf{其实上网看网页,也是需要一个软件的}。因为\textbf{ 是浏览网页用的,就叫“浏览器”了。}\\\\浏览器\textbf{不止一种}:谷歌出品的Chrome\footnote{它的开源版本Chromium也广为人知。};Moliza出品的Firefox,\textbf{都是}很好的浏览器。但是使用率\textbf{最高的},要数微软公司出品的\textbf{IE}\footnote{全称Internet Explorer,互联网探索者。},因为它是系统自带的嘛,所以是使用最广泛的。\\\\\textbf{浏览器和其它软件一样,也会升级换代},比如IE 就从最初的IE6,一直到IE7、IE8。\textbf{作为浏览器,当然是越新越好,但是IE 使用率最高的居然是10 年前过时的IE6},因为它是系统自带的嘛!
\section{过时浏览器}
网站的设计是有规范的,而浏览器正是按照这个规范打开网页,而这个规范也随着互联网的发展随之升级。但是,如果一款浏览器依然使用旧的规范,就会出现异常。比如IE6发布后的几年,互联网规范升级了,因此微软公司就迅速发布的新版的IE7,跟进了新的规范。但是,IE6作为系统自带的浏览器,很多人都不知道升级,因此IE7没有被普及,IE8同样如此。\\\\慢慢,使用过时浏览器,特别是IE6的危害显露出来:
\begin{enumerate}
\item 严重的页面错误——因为HTML\footnote{HTML(HyperText Markup Language,超文本标记语言)是为“网页创建和其它可在网页浏览器中看到的信息”设计的一种标记语言。HTML被用来结构化信息——例如标题、段落和列表等等,也可用来在一定程度上描述文档的外观和语义。没有HTML,就没有网页。}、CSS\footnote{CSS(Cascading Style Sheets, 层叠样式表)专门用于控制网页的字体大小、格式、间距、配色等,与HTML协同工作,大幅度简化了网站格式设计的负担。}、JavaScript{对于更高级的网页功能,HTML就力不从心了,因此,出现了JavaScript这种脚本编程语言,经常来给HTML网页添加动态功能。大多数浏览器都具备解析JavaScript的能力。}出现了新的版本,IE6 无法兼容,打开网站或多或少会不正常:文字错位,图片错位等,这是真是痛苦不堪啊!\footnote{比尔盖子博客在IE6 就会出现浏览器无响应、内容错位的严重问题。}
\item 严重的安全问题——由于十年前,互联网的安全问题还没有如今这么严峻,且当时IE6也是比较安全的浏览器。但后来互联网安全形势日益严峻,IE6的城墙已经无法抵御火炮的攻击了。
\item 严重的性能问题——为什么我的四核心电脑在打开网页时还是经常“卡机”?IE6 在当时是性能较高的浏览器,但新的网络技术,如新版本CSS出现之后,由于IE6对这些东西无法进行优化;IE6陈旧的JavaScript解析器也对新版本的JavaScript力不从心,从而导致性能严重低下。
\item 严重的开发挑战——最痛苦的还是网站工程师,虽然有着新规范,但是因为按照10 年前规范设计的浏览器IE6仍然普及,为了能让IE6不出现文字错位,图片错位等,工程师就要按照旧规范再设计一边网站!导致了严重的重复劳动,但是没办法,IE6 不懂得遵守新规范啊!因此网站工程师的工作量增加了不止一倍!以至于IE6成了互联网公敌!
\item 本身也会有问题,比如上网时,存在着浏览器突然死掉,没有反应的问题。
\end{enumerate}
\section{升级IE6}
现在,由于西方已经大力打击互联网公敌IE6,因此在西方的使用率大大减少,甚至降至1\%到5\%。\\\\但是在中国,有无数的盗版XP仍在使用,而这些系统都自带IE6,因此互联网公敌IE6在中国的使用率仍居高不下,达30.5\%,IE6甚至成为中国互联网的绊脚石。为了推动中国互联网的进步,和让你更加高效的浏览网页,请升级IE6。\\\\另外要说的是,盗版系统也可以升级\footnote{微软起初在IE的升级程序中加入了正版验证,导致大量的盗版系统无法升级。后来由于消灭IE6势在必行,微软便去除了任何验证}不会出现正版验证提示,这点请放心!
\newpage
\section{后记}
使用\LaTeX这一伟大的排版系统排版,实在是一件令人愉快的事情。使用它,无需关注具体的格式,就能自动排出精美的版面、公式、目录。以后,比尔盖子会大量的使用这一排版系统。
\end{CJK}
\end{document}
方舟子、休假式治疗别烦我——使用weiboFilter根据关键词过滤微博
最近先是演员方舟子和赛车手韩寒大战,又有领导压力过大,去享受休假式治疗,弄得微博乌烟瘴气。因此,有人特为此编写浏览器脚本weiboFilter,以来救灾。
此脚本仅可在Firefox和Chrome下运行,IE就算了吧,让比尔盖子怎么说呢……
另外,Chrome的安装显然比Firefox少一个步骤,因为Firefox必须要Greasemonkey才能进行过滤,顺便说一句,Greasemonkey可是神器,神器啊!
Firefox安装
1.安装最新版Firefox(废话啊).
2.前往https://addons.mozilla.org/zh-CN/firefox/addon/greasemonkey ,点击“添加到Firefox”.
3.若上方提示被阻止安全,请点击“允许”
4.在弹出的确认窗口中点击“立即安装”
5.需要关闭并重新打开Firefox.
6.这时会弹出Greasemonkey的欢迎页面,并且浏览器出现一个“猴头”图标。这时,前往http://userscripts.org/scripts/show/124330,点击右上角的绿色Install按钮。
7.在弹出的窗口中选择“安装”
8.不用看别的,直接看“配置”部分 (务必要看啊,不然没用)
Chrome安装
1.安装最新版Chrome(废话啊).
2.前往http://userscripts.org/scripts/show/124330,点击右上角的绿色Install按钮。
3.在页面下方弹出的警告中选择“继续”
4.在弹出的警告窗口中选择“继续”
5.不用看别的,直接看“配置”部分 (务必要看啊,不然没用)
配置
1.关掉所有网页,输入weibo.com,前往微博。在内容发布框下面(也可能是在发布框下面的广告下面),你会发现“过滤设置(如图)”,猛击吧!
2.在弹出的窗口中的“关键词列表”文本框中填写要过滤的关键词,比如默认的“韩寒,方舟子”(比尔盖子增加了“领事馆”一词,有效屏蔽某领导休假式治疗)并用英文逗号分隔,一定是英文逗号哦。下面还可以设置生效时间。填写完后,直接点“X”关闭窗口。
3.享受清静微博吧!
解决Gentoo能识别非iOS的ipod但不能识别iOS设备的问题
今天想用Gentoo给iPhone同步一些音乐,却发现播放器没有识别。通过dmesg得知:
usb 1-3: New USB device found, idVendor=05ac, idProduct=1297
usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-3: Product: iPhone
usb 1-3: Manufacturer: Apple Inc.
usb 1-3: SerialNumber: <You mustn't know>
但是系统没有给其分配设备文件,导致无法挂载。重新配置内核,增加GUID分区表等驱动,未果。最后经过搜索,安装了libimobiledevice,但仍未果。
经过实验,发现比尔盖子的iPod不是iOS系统,可以挂载;但其它iOS设备:iPad、iPhone都无法挂载。经过搜索,发现原来需要增加一个USE:ios,然后再深度编译emerge -avuDN world即可。
原来,USE:ipod是给非iOS的iPod使用的,而iOS的iPod touch、iPhone、iPad则需要使用USE:ios。
最后安装ifuse即可。
iOS 5
但若是用此方法,无法使用iOS 5 的设备。那是因为iOS 5太新了,libimobiledevice和ifuse不支持。需要编译安装git版本。
git clone git://git.sukimashita.com/libimobiledevice.git
cd libimobiledevice/
./autogen.sh
make -j2
su -c 'make install'
git clone git://git.sukimashita.com/ifuse.git
cd ifuse/
./autogen.sh
make -j2
su -c 'make install'
#这样系统就会认为你的这两个包已经安装了,就不会再装一次了,但是当这两个包升级以后就需要自己维护了
su -c 'emerge -C ifuse libimobiledevice'
su -c 'mkdir /etc/portage/profile/'
su -c 'echo "app-pda/ifuse-1.1.1" >> /etc/portage/profile/package.provided'
su -c 'echo "app-pda/libimobiledevice-1.1.1" >> /etc/portage/profile/package.provided'
U盘缩水?不存在的事实!
最近,中国消费者协会的一篇文章指出:
北京市消协4日公布USB闪存盘比较试验结果。结果显示,消费者经常使用的金士顿、索尼等30种USB闪存盘普遍存在虚标容量问题,所有样品均未达到产品包装明示的容量,同时USB闪存盘产品的性能差异大,拷贝速度快慢差距悬殊。据北京市消协介绍,本次比较试验的样品由北京市消费者协会工作人员以普通消费者身份随机购买。样品来源涵盖北京市电器商场、超市、电子市场以及网络购物渠道,样品涉及30家企业生产或经销的标示存储容量为8GB和16GB的USB闪存盘产品。
北京市消协比较试验表明,在30个样品中,所有样品标称容量均与实际可使用容量不符,大部分样品的可使用容量在标称容量的93%以下。且企业未在产品包装或说明书中明示可使用容量,剥夺了消费者的知情权,消费者无法根据标称确定实际可使用的容量。
URL:http://tech.sina.com.cn/it/2012-01-05/01096600702.shtml
此新闻公布后,U盘厂商遭到大量消费者的声讨,声称U盘厂商没有道德,误导消费者。但是,事实真是如此吗?让我们通过一系列实例来揭开U盘容量之谜。
词头
国际单位制词头
在十进制,也就是日常生活中与一般的数学领域中,使用国际单位制词头来表示单位的倍数和分数。目前有20个词头。大多数是千的倍数或分数,也就是1000(103)。简单地说,国际单位制词头就是数字的简便写法。
比如说:我月薪1k元和我月薪1M元。首先,1k元读作1 kilo元;1M的读作1 Mega元,分别表示月薪1000元和月薪1000000元。
国际单位制词头由国际度量衡大会管理。每4-6年,都会与50多个成员国代表开会讨论有关问题。
二进制乘数词头
混淆的版本
而在二进制领域,有一套完全不同的计数标准,叫做二进制乘数词头。它采用2的乘幂而不是用10的乘幂。所有乘数词头都是1024(210)相乘而不是在国际单位制词头采用的1000(103)。
二进制乘数词头与国际单位制词头的读法与写法完全相同,
比如说,二进制中的1k表示1024而不是1000;1M表示1048576(1024×1024)而不是1000000(1000×1000)。就是由于这点,因此经常出现“是1000呢?还是1024?”的严重混淆,只能通过上下文来推断出其含义。
规范的版本(IEC版)
为了防止混淆,1999年,国际电工委员会(IEC)公布了新的二进制乘数词头版本,在这一版本中,二进制乘数词头与国际单位制词头的读法与写法开始不同。在二进制中1k、1M混淆的说法,变成了1Ki、1Mi,读法也变成了1 kibi、1 mebi,而不是1 kilo;1 Mega。
欧盟和美国电气电子工程师协会(IEEE)都使用此标准作为官方标准。
度量
在计算机中,容量的最小单位是比特(bit)。但是由于bit是在太小,甚至一个英文字母(最简单的一份数据)要用掉8bit的空间,汉字更甚,要用16bit的空间。如果用这个单位来表示文件大小,实在不便。由于保存一份最简单的数据要用8bit,那好,那就定义一种新的单位吧:Byte。一Byte就等于8bit——一份最简单的信息所占的空间,而且可以缩写成b。但是byte也实在太小,因此总得有更高级的单位吧!
怎么办呢?凭空创造新的单位实在是难以让人接受。有了!把它与国际单位制词头结合在起来是个不错的主意。组合之后,就有了1kb、1MB这样的组合,分别代表1000byes和1000000bytes(为什么多了个s?英文复数要加s哦)。
但是这样做,后来出现的软件工程师们不干了!你是把byte和十进制的词头组合到一起的,但是对于软件使用的是二进制啊!难道我们天天做换算不成??!!不可能啊!因此,人们就又将二进制乘数词头和byte组合而成,又成了新的1kb、1MB这样的组合,分别代表1024byes和1048576bytes。
使用
好了,现在两种组合方式总算定出来了?什么情况下用十进制版本,什么情况下用二进制版本呢?由于大部分生产硬件的,都是在和电路板、电子管、晶体管这样的看得见的电子设备打交道,这些电子设备的容量、速度原则上不能使用二进制度量,因此使用的也就是十进制的版本;但是做软件的,成天和什么十六进制、八进制、二进制打交道,而且软件中的容量原则上也不能使用十进制度量,因此自然使用二进制版本。
而这些硬件、软件在出售时,自然也使用各自的两套标准。因为这时候IEC的规范标准离出台还远着呢?十进制和二进制的写法读法根本没区别,如果你不研究研究,谁也不知道你用的是哪个标准。
什么硬件可以用二进制度量,什么硬件可以用十进制度量?
1.硬盘只能用十进制度量,因为硬盘的最小物理单位为512bytes,最小的组成单位为扇区(sector), 通常硬盘容量的计算采用“多少个sector”,所以才会使用十进制来处理。这种十进制度量的方式历史悠久,世界上第一块硬盘就是用的是这种度量方式,那时候,国际单位制词头甚至还不存在!
2.闪存盘,同时包括各种储存卡、手机内部储存、固态硬盘与固态储存器,都是用十进制度量。虽然是这样,但是由于它们的性质,十进制容量一般是2的倍数。
3.CD、DVD的度量方法不同,CD使用二进制度量,而DVD使用十进制度量,可能有什么鲜为人知的原因才会这样。
4.内存条、各种储存芯片,例如ROM、RAM,包括BIOS芯片等,只能使用二进制度量,因为它们天生就用这种计算方法。你买的512MB内存,电脑肯定会照样这么显示,永远不会“缩水”。
5.网速用十进制表示。但是,虽然网速都用十进制表示,却还有两种形式:第一种形式是几kb一秒,比如:100kb/秒、1MB/秒,下载文件时通常用这种方式来表示速度。
但是第二种形式就玄乎了,首先它居然是用前面提到的,计算机中最小的单位bit来计算,而不是用Byte(b)来计算。而且,它还使用十进制来计算,把bit和国际单位制词头又结合在一起。看来,除了有将国际单位制词头和byte结合在起来;将二进制乘数词头和byte组合,还有把bit和国际单位制词头又结合在一起。
乖乖,正如我前面所说的,8bit才等于1byte。因此,换算成以byte计算的速度,需要除以8。如果“我家是8M宽带”,那么下载速度就是8M÷8=1M/秒。如果“我家是1M宽带”,那么下载速度只有500k/秒。
系统怎么办?
不管能不能用二进制来度量,操作系统在多数情况下都会一律将它显示成二进制的形式,因为它是软件嘛,善于用二进制。例如说:8GB U盘改用二进制度量就变成了7GB多一些;1TB硬盘变成了约900GB;但是内存由于是二进制买的是多少还是多少。而网速呢?其实网速计算一般只用玄乎的第二种,第一种也是操作系统显示出来的。而Linux和Mac OS X有时则会使用十进制的度量法。
6.U盘到底能用多少空间?
2GB的U盘,能够使用的容量究竟有多少?由于U盘使用的是十进制的计算方式,操作系统愣是把它转换成了二进制,就已将有一些损失了,再加上格式化之后(不格式化怎么用),文件系统本身也要占用一些空间,包括扇区大小等都会影响其可用容量。因此,2GB U盘最终能使用的容量就只有约1.8GB左右了。
因此,消协的“U盘缩水”完全不是欺骗消费者。