聚合文章

汇集全部已收录博客的最新文章,点击标题前往原文阅读。

排序方式:最新发布

InstapaperBookmarklet 及 Safari 扩展推荐

Update 2013-04-20: 原先的名字 InstapaperBookmark 容易误解成只是添加一个书签,现在改名为 InstapaperBookmarklet。 写了个 Safari 扩展 InstapaperBookmarklet,在工具栏添加一个按钮来执行 Instapaper bookmarklet。如果当前标签是空白页面的话点击会访问 Instapaper 网站。 如果你跟我一样使用 SafariTabSwitching 这个基于 SIMBL 的插件(实现 cmd+num 切换标签页),习惯隐藏书签栏,又喜欢官方 bookmarklet 的视觉反馈,那么可以试试看这个扩展。…

www.zyan.cc 2013-03-25

iPhone大小的盒子服务器Cubieboard

在淘宝上350多元,买了个基于ARM平台的超小电脑 cubieboard,配置如下: 1G ARM cortex-A8 processor, NEON, VFPv3, 256KB L2 cache Mali400, OpenGL ES GPU 512M/1GB DDR3 @480MHz HDMI 1080p Output 10/100M Ethernet 4GB Nand Flash 2 USB…

iPhone/iPad 屏幕坏点检测网页

上周去 Apple Store 维修我用了快两年的 iPhone 4,换回来的机器屏幕上有一小块区域有亮点。于是写了个显示单色页面帮助测试坏点的网页,方便下次去维修时检查屏幕。 测试网页链接在此。 其实写这个测试页面更多是尝试下写网页。Twitter Bootstrap 对我这样几乎完全没有前端经验的程序员来说的确是好东西。顺便还尝试了下 CoffeeScript,这语言看起来真不错,融合了 Ruby, Python 很多好的 feature。 P.S. Update: 因为 iPhone 屏幕亮斑昨天再次去 Apple Store 更换,得知现在的电池跟以前的不同,如果拿下来会导致变形,所以…

shun.im shun.im 2013-03-18

Google Reader 将死,Reader 还将继续

Google Reader 将于 7月 1日停止服务。 这几天网络上都是这个噩耗,我也该爬起来和博友们一起吐槽。。。 自 2008年3月28日以来,您一共阅读了 43,553 个条目。 从数据来看,我远算不上是一个重度的用户。不过它对我的重要性不是这个数据能概括的。头几年只是注册了,还没有使用 RSS 的习惯,后面才逐渐成为我关注网络新闻、技术发展,以及博友更新的重要渠道。[......]继续阅读…

疯狂的盒子 疯狂的盒子 2013-03-12

VPS主机被强事件

前几日主机被强,多日没有解封的迹象.于是今天给主机商发Ticket要求更换机房, 从11区迁移到了不列颠帝国客服不到一分钟就回复了我.速度令我十分惊愕.然后便是Power down, Trans...

Memory Consistency Model

Memory consistency model 是个不好想的东西,写并发程序的总有一天会遇到这个坑,如果不知道它的存在连怎么掉坑里的都不知道。我目前自己对此也不是弄得一清二楚,写这篇文章更多是让我自己做个总结,所以只做简单介绍,另外推荐一些我觉得介绍这方面的好文章。 什么是 Memory Consistency Model 并行程序在多个 CPU 上同时执行代码,如果每个 CPU 访问的都是自己私有的数据,那世界将非常美好,我们可以既不需要同步也不需要考虑 memory consistency model 的问题。但实际情况是总会有一些数据需要共享,有些 CPU 修改共享数据,有些读取。 M…

汽车为什么要有刹车

Why do cars have brakes? 这篇文章不错,继续往下读之前可以先想一想这个问题。 没有刹车,意味着不能很快减速,出于安全考虑不得把车开慢些。刹车给了我们减速的能力,因此让我们能够驾驶的更快。 原文作者将此类比到软件开发中,如果将软件构建的过程类比为开车,那测试就好比是刹车。 如果有好的自动化测试,我们可以比较放心地去修改代码,尽早发现 bug,停下 coding 修复 bug 没有测试则要么写代码的时候总是很小心,每次 commit 之前检查很多遍;要么依然全速前进,偶尔发现一堆 bug 之后花更多的时间 fix 我现在的习惯是每次 commit 代码之前先在 Source…

COW 0.5

放寒假之后花一周多的时间改进 COW,修复了些 bug,增加了一些新功能。改动比较大,所以跳过 0.4 版直接发布 0.5。使用说明和配置样例的注释都改成了中文,配置文件选项有些变化,请参考 github 上的说明修改;二进制文件下载还是在 Google Code。(发布之后才想起来 Google Code 貌似也被墙,使用安装脚本的话需要配置代理环境变量。) 感谢 glacjay 的建议,让我把 COW 做的更加自动化一些。0.5 版本最大的变化也在此。 由于没法准确判断超时是由于被墙还是连接状况差导致,被墙网站的判断没法做到非常准确。COW 现在的做法是: 统计访问的 host 被墙和直连…

反汇编 x86 指令

Update on 2013-01-16: 在 Dawson Engler 的主页上看到一篇论文,Reverse-Engineering Instruction Encodings,利用系统的汇编器自动生成指令 encoding 信息。有了这个信息就可以写 code generator, disassembler 了。Dawson 在这篇 paper 的说明里写道: It’s genesis was the fact that writing a binary encoder for the x86 is an unredeemably disgusting experience. 我想说,写…

Valgrind 中用 pipe 实现的 GIL

读 Valgrind: A Framework for Heavyweight Dynamic Binary Instrumentation 这篇论文时看到了一种实现 GIL 的方式。 先介绍一下为什么 Valgrind 需要 GIL。Valgrind instrument 二进制文件并且执行采用的方式叫做 Disassemble-and-resynthesise (D&R)。其大概过程如下: 将原二进制代码反汇编到中间代码 Valgrind 插件对得到的中间代码插入做检查的中间代码 对中间代码做优化之后,生成 native 代码 由于中间代码是 RISC like 的,一条 CISC 的读写…

pthread mutex,其实它飞快

Update on 2012-12-27: 知道 xchg 实现的 spinlock 竞争严重时变慢的原因后可以对它做一点优化。拿锁失败,发现锁还没有释放时应该尝试等待一段时间而不是不停的去检查,这样就可以避免同时有太多的核进行拿锁操作。优化之后的 xchg spinlock 性能在单个 CPU chip 上明显超过 pthread mutex,核数变多时也还是会胜过一些。加入 exponential backoff 的 spinlock 实现也放在 github 上了。实现简单 spinlock 时 waiter 一定要加 wait backoff,这个技术对 spinlock 的伸缩性影响…

基于 mmap 的二进制 log 库

之前的项目里写过一个用 mmap 实现的二进制日志库,把代码放到了 github。使用的例子代码可以看这个目录下的测试文件。 用 mmap 写日志的麻烦之处是 log 内容超过文件大小时必须要把文件变大才能继续往后写。这个库主要做的事情除了创建文件,调用 mmap 完成初始化之外就是增大日志文件了。 增大文件现在的处理方式是当文件不够大时通过 truncate 将文件变大,然后将扩大的部分 mmap 上来,同时归还之前 map 的内存。 其实 bprint 就是在写完这个 log 库之后写的。或许有同学会觉得有用。

说说SVM的基础知识(1) - 飞林沙

1. 导言在机器学习和模式识别领域,SVM绝对是除了Boosting之外的又一项重大突破,在一般的应用中,我们都用LibSVM这样已经成熟的库,但是对于内部机理和一些基础知识我们可能很多时候并不清楚,那么我们就把一些基础的知识一点点说清。2. 关于维度首先,我们来说下维度。维度这个概念我们都并不陌生,维度在数学中也称作维数,代表的是参数的数目。我们说零维是点,一维是线,二维是面,三维是立体。我们跳…

时间无爱 时间无爱 2012-12-19

笑忘书。

那些曾经你伤的最痛的地方,会变成你最坚强的。 大三的生活,没有想象中的那样悠闲,无止境的考试和时而触不及防的落Continue Reading

时间无爱 时间无爱 2012-09-15

浮生小记。

? 如果有一天,我老无所依 请把我留在,在那时光里 如果有一天,我悄然离去 ? ? 请把我埋在,在这春天里。 Continue Reading

shun.im shun.im 2012-09-15

壳中少女:燃烧

壳中少女 三部曲之二:燃烧,这 BD 在 7月底就出来了。 前段时间补番无力啊,终于今天把它看掉了。 (话说之前居然还有人向我剧透,哼,对小说早就看完的毫无杀伤力。) 没有看过前作的可以到 壳中少女:压缩 了解一下。[......]继续阅读:壳中少女:燃烧

时间无爱 时间无爱 2012-09-05

奠念。

很多年后,我们都垂垂老矣,而你还活在最美好的年纪。 你的微笑,就这样停在了18岁那年的冬天。 对Continue Reading

时间无爱 时间无爱 2012-09-03

Coffee time.

我们看错了世界,却说世界欺骗了我们。 单方咖啡比想象中的还要苦。 听从服务生的推荐,选了味道温和些的巴西咖啡,Continue Reading

从零开始打造完整评分系统 - 飞林沙

1. 概述 大多数的网站都需要一个评分系统,来考量该网站条目的质量,例如时光网: 那么在本文中,我们就来学着如何打造一个可用的评分系统。 2. 构建简单的评分系统 其实最初做一个评分系统很简单,我们首先先设计评分系统所需要的数据表,即用户评分表(user_rating): CREATE TABLE `user_rating` ( `id` int(11) unsigned NOT NULL AUT…

shun.im shun.im 2012-09-02

匿了好久,现状报告

这次匿了好久~ 居然有两个多月没有更新,惭愧。 例行的现状报告证明我还活着。 这几个月也没有太多值得一提的事情。 去过的地方倒是不少,在不变的大环境下换了许多小环境。[......]继续阅读:匿了好久,现状报告

LvWind Blog LvWind Blog 2012-07-18

强制更新戴Dell Inspiron双显卡驱动

去年六月份买的 Dell Inspiron N4110,看中的就是能在 Intel HD 3000 和 AMD HD6630M 之间随意切换的双显卡,之后经常有莫名其妙蓝屏的问题,我也没怎么在意,这是Windows经常有的问题(?)。上学期写作业经常用 C-free 敲代码,十次编译有六次蓝屏,没办法只好装上臃肿的 Visual Studio 2010,也没去深究。后来有次在家用HDMI连电视,用Windows的“扩展”方式双屏显示,上bilibili看动画,结果就卡死了有时候甚至会蓝屏(又来了),实验了好多次都是这样。 分析 mini dump,确定是 igdpmd32.sys 导致,这个是…

LvWind Blog LvWind Blog 2012-07-17

无题

今天扫Google Reader的时候,看到@wzyboy的博客更新了,本站不幸中枪。知错要改嘛,打算把这个高危警告修复掉,打开自己博客,发现距离上次更新一年多了,都长草了。。 小修小补是很快就弄好了,然后想登录后台看看,结果密码忘了(什么烂记性),重置掉密码后总算是进来了,看到有几十条被Akismet屏蔽的spam,真是长草了。。

shun.im shun.im 2012-06-18

姗姗来迟的 Opera 12.00

代号为 Wahoo 的 Opera 12.00 在前几天终于迎来正式版,详细更新内容请见 Opera IM。 可以说这一代经过了相当漫长的开发和测试周期,更新的内容相当的多,版本号依然有意义。 现在让我们来看看,这条近一年时间才养肥的大鱼是否可口。 当然,这也是一篇姗姗来迟的博客更新,惭愧啊。[......]继续阅读:姗姗来迟的 Opera 12.00

shun.im shun.im 2012-06-04

在不存在的日子更新一下刷存在感

在很久以前,其实也没那么久嘛(还好意思说 ←_←) 。 这个博客走过了三周年的里程碑,然后一直就这个样子,沉默。这是有多方面的原因的。 但我从未真正离开,只是躲在角落里观望这网络上的事物。 好吧,进入正题,本文其实也可以叫做“又一篇现状报告”。[......]继续阅读:在不存在的日子更新一下刷存在感

说说Python程序的执行过程 - 飞林沙

1. Python是一门解释型语言? 我初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存在。如果是解释型语言,那么生成的*.pyc文件是什么呢?c应该是compiled的缩写才对啊! 为了防止其他学习Python的人也被这句话误解,那么我们就在文中来澄清下这个问题,并且把一些基础概念给理清。 2. 解释型语言…

关于排行榜的算法经验谈 - 飞林沙

好久不来博客园了,前几天更新个人状态时,也把“技术博客”四个字改成了“荒废已久的博客”。好久不总结自己的工作和学习了,怎么说也过不去,就来这写一篇浅显的文章,没什么新鲜的内容,算是一篇经验的汇总把。1. 关于排行榜各大网站一般来说都少不了排行榜这个东西,一者是提供给商业合作方的数据排行榜,另一者是提供给用户的榜单。例如豆瓣的新书榜:2. 打造一个最简单的排行榜我们先用豆瓣的新书榜为例,看看我们如何…

ShadowMov's Blog 2012-04-22

成功编译Wine1.4

看着Ubuntu PPA源里的Wine很久没升级了,于是跑到Wine官网瞧了瞧,发觉Wine Stable到了1.4,Wine Unstable到1.5.2了。 早就不满意Wine1.3.X后期版本的效率了,果断sudo aptitude remove wine1.3,然后从官网下了1.4和1.5.2的源码包。 由于是编译安装,编译以后将较难变动,我选择了Wine Stable,也就是Wine1.4

鬼仔's Blog 鬼仔's Blog 2012-04-20

鬼仔Robot(Wi-Fi小车)

先上图,左边的是一代,2010年做的,右边的是二代,去年年底做的。一直想发一下,希望能够跟有相同爱好的同学做一些交流,但是拖延症太厉害了,我实在斗不过他,一直拖到现在才发。

shun.im shun.im 2012-04-15

博客三周年,我依然在

A.shun Blog 走到了今天,已经三周年了。撒花~ 虽然去年底开始脱宅,从事的工作也用不到计算机,各方面的原因导致了博客的更新频率大幅度下降。(话说本来就是文囧星人嘛) 但即使如此,我也有信心让博客延续下去,因此出现这篇日志是毫无疑问的。[......]继续阅读:博客三周年,我依然在

shun.im shun.im 2012-03-25

又一篇现状报告 @济南

更新一下博客刷点存在感- -。 时间过得真快哪! 在济南已经待了接近一个半月,从各种困扰到逐步适应。 还在去年的那家公司,但今年的工作地比较远。第一站是济南。[......]继续阅读:又一篇现状报告 @济南

virtualenv搭建虚拟环境 - 飞林沙

Python的背后有着庞大的开源社区支持,但是有一个缺点就是每个包的质量都参差不齐,如果我们在工作服务器上去测试安装每个包,就会造成整个的服务器形成庞大复杂的第三方包依赖。 virtualenv就是为了解决这个问题而生,他可以在我们的目录上生成若干个独立的虚拟环境,这些虚拟环境和正式环境一样。 安装virtualenv非常简单: 首先安装virtualenv: 然后我们就可以创建一个虚拟的环境了:…

鬼仔's Blog 鬼仔's Blog 2011-11-23

Proxmark3 & Teensy团购活动

#鬼仔:详细信息可看: http://radiowar.org/hardware/proxmark3.html Proxmark3主要是作为RFID开发以及研究之用,是国外称之为“神器”的研究平台! 第四期的Proxmark3团购结束之际,Proxmark3第五期团购开始了,这一次和每次团购一样,都是需要大家支付设备的订金,从而再从海外购入相关的设备的,耗时大概是两个星期到三个星期,因为临近国内农…

《浪潮之巅》读书笔记汇总 - 飞林沙

其实我是没有做读书笔记的习惯的,但是这本书只是借来看的,而且这种杂谈性的书,也比较容易扯开去,就随便写了一些东西,大多是自己的一些乱七八糟的想法。现在给汇总一下发出来把。。1. 第一章AT&T的兴起感谢于美国的反垄断法不断地强迫公司做着技术革新,帮助公司修枝剪叶以删除掉那些无用的业务,而衰败同样是由于反垄断法使公司不得不做着不理智的拆分从而使一个巨型帝国迅速的滑落。当一个公司到后期被投行以及他人所…

R对MongoDB的性能测试——RMongo - 飞林沙

在九月初的时候,RMongoDB正式发布了修订版本,这也就意味着,从事数值计算的语言也可以于Nosql产品相接轨了,但是鉴于我身边并没有公司真的在使用R和MongoDB的结合,所以在效率问题上,我们也不敢掉以轻心,所以就做了一个这样的测试。测试环境是8核,64位机。 用于测试的库是一个未经Sharding,大概30G左右的Collection。用于存储用户的喜好信息,标签信息等数据。 1libra…

鬼仔's Blog 鬼仔's Blog 2011-08-01

新浪招聘安全工程师(长期有效)

一直在招人,这次增加了新的职位。 此信息求各种转载,:)。 联系方式(邮箱&Gtalk):[email protected] 欢迎有兴趣的同学!欢迎各种简历! 工作地点:北京 安全检测工程师 职位描述: 负责公司产品和业务的安全检测和安全加固,引导开发人员修复安全问题 负责各类安全问题和安全事件的跟踪和分析,支持公司各部门日常安全工作 负责公司定期的安全风险评估和检测 负责WEB代码检查,WEB…