拉登死了,沙县小吃没了

“战争结束了。”沙县小吃的老板叼着一根烟,一屁股坐在我的面前,眼神飘忽。一口烟从他口中爬出来。     我感到不快。     当时我要了一笼包子,一个大份馄饨,吃的很开心,准备再要一只鸡腿,其实我更想吃大排套餐里的大排,但是不知道那个是否能单卖,我正在心中酝酿措辞。这个中年人一屁股坐在我的面前,一个单独吃饭吃的面带笑容的顾客面前,说了一句没头没脑的话,而且抽着烟。     “什么战争?另外,大排套餐里的大排单卖么?”我耐着性子问。     他起身去厨房,端来一口锅,满满全是卤味。蛋,豆干,鸡腿,大排。     “你这是……?”我问。     “随便吃,不要钱,如果你要白饭的话我去添。”他递给我一只大勺,“听我说说话,我心里有话,一切都结束了,我得说一说。”     这很合算。我点头。     “你看,”他手指不远处。一家兰州拉面馆,老板和几个伙计坐在门口的一张桌子上,各自手里捏着一把扑克牌。“他们在干吗?”     “打牌,”我在锅里寻找一颗卤得较久比较入味的卤蛋。     “不,仔细看。”他面带一种讥诮。     我停下筷子,仔细观察。他们手捏一把扑克牌,但好长时间都没有人动一动,表情麻木,彼此之间沉默不语。     “彷徨。”他轻敲桌子,“我理解这种感受。”     我不理会他,夹开一颗卤蛋,汁水四溢。     “你知道么?本·拉登死了。”他好像在告诉我一个秘密一样。     “嗯嗯……。”我口含一颗卤蛋,含糊答应,蛋黄噎住了我的嘴。     “所以,战争结束了。It‘s over。他们输了,我们赢了,”他表情悲戚。“但有一点一样,从明天起,我们同样是是失牧的羔羊了。”     我重新端详这个老板,微黑,沿海五官,有一种潮汕地区人民特有的质朴之气。     “老板你是不是最近生意做得不顺?”我问。你脑子坏了吗?你馄饨包傻了吗?你卤汤中毒了吗?     “你见过工商来这里收钱么?”他问。     “似乎是没有。”     “你见过混混来搅事么?”他问。     “好像是也没有。”     他俯起身子贴近我,在我耳边很深沉的说。“因为我是安全部的。”     我再次端详这个老板,微黑,沿海五官,有一种铁血论坛的伟大使命感。     “哈?”我说。你老母的。     “我不是开小吃店的。我是一名情报人员。”他翘起二郎腿,坚毅,目视远方。    […]

安装debian小型映像,执行包含sudo的命令提示command not found

网络安装的镜像安完的debian是什么都没有的,包括gcc和sudo。 首先你需要切换到root用户,输入root用户的口令。 $ su 然后你需要更新一遍软件源,选择适当的debian镜像,这里以163的镜像为例 # wget http://mirrors.163.com/.help/sources.list.squeeze # mv sources.list.squeeze sources.list 因为配置文件中有一个源已经失效了,所以要修改一个地方,使用vi sources.list打开,把倒数第二个源注释掉。 … deb http://http.us.debian.org/debian squeeze main contrib non-free # deb http://non-us.debian.org/debian-non-US squeeze/non-US main contrib non-free deb http://security.debian.org squeeze/updates main contrib non-free 然后就可以更新了。 # mv sources.list /etc/apt/ # apt-get update 这样把软件源配好之后,你再执行apt-get install才能够正确的安装东西。 sudo默认是没有安装的,需要你在配置好软件源之后,通过apt-get install sudo来安装,然后执行visudo或者vi /etc/sudoers来修改,照着root的写法在下面加上一行就可以了。 … # User privilege specification root ALL=(ALL) […]

linux 权限掩码 umask

一 权限掩码umask   umask是chmod配套的,总共为4位(gid/uid,属主,组权,其它用户的权限),不过通常用到的是后3个,例如你用chmod 755 file(此时这文件的权限是属主读(4)+写(2)+执行(1),同组的和其它用户有读写权限)   二 umask的作用    默认情况下的umask值是022(可以用umask命令查看),此时你建立的文件默认权限是644(6-0,6-2,6-2),建立的目录的默认权限是755(7-0,7-2,7-2),可以用ls -l验证一下哦 现在应该知道umask的用途了吧,它是为了控制默认权限,不要使默认的文件和目录具有全权而设的。   三 如何计算umask值 umask命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字。对于文件来说,这一数字的最大值分别是6。系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限。目录则允许设置执行权限,这样针对目录来说,umask中各个数字最大可以到 7。 计算u m a s k值的方法:我们只要记住u m a s k是从权限中“拿走”相应的位即可。                                            umask值与权限表 Umask中的某位 文件 目录 0 6 7 1 6 6 2 4 5 3 4 4 4 2 3 5 2 2 6 0 1 7 0 0 如果umask为023,则对于文件所有者,不拿去任何权限,而新建的文件默认没有执行权限,故对文件所有者的权限位rw-(6);对组所有者,拿去写权限,原本没有执行权限,故为r–(4);对其他用户,拿去写和执行权限,原本没有执行权限,故为r–(4); 如果umask为023,因为没有新建目录没有执行权限的限制。则对于目录所有者,不拿去任何权限,故对目录所有者的权限为rwx(7);对组所有者,拿去写权限,故为r-x(5);对其他用户,拿去写和执行权限,故为r–(4);   四 常用的u m […]

Linux下zip加密压缩

zip -q -r -P password zipfile.zip sourcefiles.txt password 是加密密码 zipfile.zip 是生成的压缩文件 sourcefiles.txt 是被压缩的文件 zip [参数] 使用zip格式打包文件 -r 递归,将指定目录下的所有文件和子目录一并处理 -S 包含系统和隐藏文件 -y 直接保存符号连接,而非该连接所指向的文件 -X 不保存额外的文件属性 -m 将文件压缩并加入压缩文件后,删除源文件 – 1~9,数字越大,压缩率越高 -F 尝试修复已损坏的压缩文件 -T 检查备份文件内的每个文件是否正确无误 -q 不显示指令执行过程 -g 将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件 -u 更新压缩包内文件 -f 更新压缩包内文件。如果符合条件的文件没有包含在压缩包中,则压缩后添加 -$ 保存第一个被压缩文件所在磁盘的卷标 -j 只保存文件名称及其内容 -D 压缩文件内不建立目录名称 -i 压缩目录时,只压缩符合条件的文件 -x 排除符合条件的文件 -n 排除指定文件名后缀的文件 -b 指定临时文件目录 -d […]

高性能JavaScript DOM编程以及重排与重绘

我们知道,DOM是用于操作XML 和HTML文档的应用程序接口,用脚本进行DOM操作的代价很昂贵。有个贴切的比喻,把DOM和JavaScript(这里指ECMScript)各自想 象为一个岛屿,它们之间用收费桥梁连接,ECMAScript每次访问DOM,都要途径这座桥,并交纳“过桥费”,访问DOM的次数越多,费用也就越高。 因此,推荐的做法是尽量减少过桥的次数,努力待在ECMAScript岛上。我们不可能不用DOM的接口,那么,怎样才能提高程序的效率? 1、DOM访问与修改 访问DOM元素是有代价的(“过桥费”你懂的),修改元素代价更是昂贵,因为它会导致浏览器重新计算页面的几何变化(重排和重绘)。 当然最坏的情况是在循环中访问或者修改元素,看下面两段代码: var times = 15000; // code1 console.time(1); for(var i = 0; i < times; i++) { document.getElementById(‘myDiv1’).innerHTML += ‘a’; } console.timeEnd(1); // code2 console.time(2); var str = ”; for(var i = 0; i < times; i++) { str += ‘a’; } document.getElementById(‘myDiv2’).innerHTML = str; console.timeEnd(2); 结果第一次运行的时间居然是第二次的千倍!(chrome 版本 44.0.2403.130 […]

virtualbox 挂载共享文件夹

若想开机自动挂载,可以在 /etc/fstab 文件末添加一项 sharing /mnt/share vboxsf defaults 0 0 或 sharing /mnt/share vboxsf rw,gid=100,uid=1000,auto 0 0 以上是百度出来的答案~~,下面是我自己做得设置, 我采用的是阿里云一键安装包,安装的是 nginx1.4.4+php5.6+mysql5.6,共享文件夹的设置为: php-fpm.conf里面指定的启动用户为www: , www用户的uid=1004,gid=1004,  , 然后在/etc/fstab文件里面添加如下内容: #vboxsf  work  /mnt/www  vboxsf  uid=1004,gid=1004,rw,exec 0 0  python3 /alidata/www/python3  vboxsf  uid=1004,gid=1004,rw,exec 0 0 , 为确保万无一失,reboot ~haha~

Mac OS X取消Apache(httpd)开机启动

安装MAMP后,启动服务时提示Apache启动失败,80端口被占用.查看进程发现存在几个httpd. OS X自带Apache,可是默认是没有启动的.我也没有开启Web共享,怎么就开机启动了呢? 不知道是不是因为安装了别的什么软件导致的.一般的开机启动项可以在System Preferences–Users&Groups–Login Items中添加或删除.可是在这里也没有发现Apache相关的启动项.于是谷歌到了下面一个可行的方法,打开终端,执行下面的命令. sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 如果哪天你想让它开机启动了,则将unload 改为 load: sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist launchd是Mac OS下,用于初始化系统环境的关键进程。类似Linux下的init, rc.此方法同样也适用于禁用系统的一些服务,比如打印机,蓝牙等.

国内开源镜像汇总

一. 企业篇 网易: http://mirrors.163.com/ 搜狐: http://mirrors.sohu.com/ LUPA: http://mirror.lupaworld.com/ bitcomm(cn99): http://centos.bitcomm.cn/ 阿里云: http://mirrors.aliyun.com/ 开源中国: http://mirrors.oschina.net/ 二. 企业 Pypi 篇: 豆瓣: http://pypi.douban.com/ v2ex: http://pypi.v2ex.com/simple/ 三. 企业 RubyGems 篇 淘宝: http://ruby.taobao.org/ 二. 大学篇 清华大学: http://mirrors.tuna.tsinghua.edu.cn/ (IPv4+IPv6) http://mirrors.6.tuna.tsinghua.edu.cn/ (IPv6 only) http://mirrors.4.tuna.tsinghua.edu.cn/ (IPv4 only) 中国科学技术大学 http://mirrors.ustc.edu.cn/ (IPv4+IPv6) http://mirrors4.ustc.edu.cn/ http://mirrors6.ustc.edu.cn/ 北京交通大学 http://mirror.bjtu.edu.cn (IPv4 only) http://mirror6.bjtu.edu.cn (IPv6 only) http://debian.bjtu.edu.cn (IPv4+IPv6) 上海交大: http://ftp.sjtu.edu.cn/ […]

MAC OS 10.10 转发80(HTTP)端口的方法

MAC OS 本质上还是 Unix 系统, Unix 系统大多默认情况下非root用户是无法使用小于1024的常用端口的.这时候如果你开发中需要在普通用户下用到80端口, 比如 tomcat, 比如 vitualbox 下构建了一个 http 服务, 若你想直接通过 浏览器的 localhost 访问的话(比用加上莫名其妙的”:端口”的话)你就需要做一些系统端口转发的工作. MAC OS 10.10 上 pfctl 就可以做这一件事情, 详情请参见 man pfctl 或者 man pf.conf 具体操作如下: 首先在 /etc/pf.anchors/ 新建一个 http 文件内容如下: rdr pass on lo0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080 rdr pass […]

js浮点数精度问题

大多数语言在处理浮点数的时候都会遇到精度问题,但是在JS里似乎特别严重,来看一个例子 alert(45.6*13); 结果居然是592.800000000001,当然加法之类的也会有这个问题 那这是js的错误吗? 当然不是,你的电脑做着正确的二进制浮点运算,但问题是你输入的是十进制的数,电脑以二进制运算,这两者并不是总是转化那么好的,有时候会得到正确的结果,但有时候就不那么幸运了 alert(0.7+0.1);//输出0.7999999999999999 alert(0.6+0.2);//输出0.8 你输入两个十进制数,转化为二进制运算过后再转化回来,在转化过程中自然会有损失了 但一般的损失往往在乘除运算中比较多,而JS在简单的加减法里也会出现这类问题,你也看到了,这个误差也是非常小的,但是却是不该出现的 那该怎么解决呢,ECMA4似乎给了解决方法,但是现在倒不是那么实用的 一种方法,比如0.7+0.1,先把0.1和0.7都乘10,加完之后再除10 另外可以自己写点函数来解决这个问题,自己百度谷歌一下应该有很多,但是最好还是不要用JS做一些复杂的浮点运算,毕竟JS更多的作用不在于此 <script type=“text/javascript”> // 两个浮点数求和 function accAdd(num1,num2){ var r1,r2,m; try{ r1 = num1.toString().split(‘.’)[1].length; }catch(e){ r1 = 0; } try{ r2=num2.toString().split(“.”)[1].length; }catch(e){ r2=0; } m=Math.pow(10,Math.max(r1,r2)); // return (num1*m+num2*m)/m; return Math.round(num1*m+num2*m)/m; } // 两个浮点数相减 function accSub(num1,num2){ var r1,r2,m; try{ r1 = num1.toString().split(‘.’)[1].length; }catch(e){ r1 = 0; } try{ r2=num2.toString().split(“.”)[1].length; }catch(e){ r2=0; } m=Math.pow(10,Math.max(r1,r2)); n=(r1>=r2)?r1:r2; return (Math.round(num1*m–num2*m)/m).toFixed(n); } // 两数相除 function accDiv(num1,num2){ […]