迁移到 Astro
距离上一篇迁移到 Hexo 已经过去六年多了。这次又把 EverET 迁到了 Astro,文章仍然是 Markdown,线上仍然是静态 HTML。
好记性不如烂笔头
距离上一篇迁移到 Hexo 已经过去六年多了。这次又把 EverET 迁到了 Astro,文章仍然是 Markdown,线上仍然是静态 HTML。
Octopress 已经停止维护几年了,换了台 Macbook ,发现连 Octopress 都跑不起来,只能放弃 Octopress 了。 找了一圈,看上去 Hexo 是一个不错的替代品,就决定迁移到 Hexo。回想起,最初用的是 Wordpress,后面迁移到 Octopress,现在又迁移到 Hexo。也是不断在
最近在用 grpc[^1] ,发现 grpc 的 Python server 目前还没有像 Flask 那样的修改后自动 reload ,开发不是很方便。 所以就看看有什么比较好的实现,发现 werkzeug[^2] 已经有个比较好的实现,而且 Flask 用的就是它。就不用重复发明轮子了。 假设我们的启动 serve
最近在对接证券交易所的 Level 1 行情,搜索了一下,感觉民间的资料不是很多,而且交易所的哥们日理万机,回复也不是很及时,所以还是记录一下,避免其他人反复浪费时间。咨询了LDDS的运维,他的建议是上交所和深交所行情「 分开接收 」。 上海证券交易所提供的 LDDS VDE [^1] 是一个纯 Java 的服务,启动
在经历了无法拯救的访问困难后,只能迁到阿里云了。 终于回国了,感觉不错。
介绍一下你自己和所做的工作 程序猿一名,刚毕业就去了广州一家老牌游戏公司呆了些时间,后来出来到创业公司,第一家创业公司倒闭了,现在在第二家。 平时主要开发服务端程序,用Python,有时也写写Android,用Java和C++(反正都是Linux嘛)。 你都在使用哪些硬件? 笔记本是顶配的13寸的Macbook Pro
这篇东西想写很久了,拖延症晚期患者 . ,今天终于下决心把它写了吧。 很久很久之前,在思考如何部署基于Tornado的服务,就和郑纪一起找到了一个Tornado的好伙伴——Supervisor。 Supervisor,简单来说,就是一个Python写的进程管理器。不仅仅可以用来管理进程,还可以用来做开机启动。 我在服务
受各路大神的影响,终于还是入手了传说中的程序员的加血光环HHKB。因为像GNU之父、Emacs之父Richard Stallman[^1],C++之父Bjarne Stroustrup[^2]等大神都在使用。 入手数日,觉得布局是在太赞了,感觉完全为自己量身定做的键盘啊。配合Fn,手基本都不用动,就可以做到其他键盘的功
我的Blog的文章的链接本来是类似 这样的,不过觉得发布的时间戳加到url中,对老文章的SEO不利。所以决定将其去掉,改为 。 另一个是我想缩短下文章url的长度。 不过缩短url会遇到两个大问题,第一个是原来发出去的原来的文章链接会404,第二个是评论系统Disqus是根据文章url来作为评论的标识符。 不过好在是有
By:Stupid ET Emacs在1975年就诞生了,想必比现在绝大多数程序员都要老。现在最新的Emacs已经是24.3.50.7, 为了获取最新的特性,我的Emacs都是自己编译最新的开发版 (在24.3正式版出了后就使用正式版了,正式版更为稳定)。Emacs其实是一个Lisp解释器,有着和Lisp纠缠不清的关系
Emacs中有很多很多快捷键,多到有时候自己都不知道自己有什么快捷键。 例如org mode[^1]就有非常多的快捷键,特别是有时候有的快捷键比较长,按了前面的部分,就忘了后面的,虽然可以按 C h m 来看看当前mode有什么快捷键,不过还是挺麻烦的。 直到遇到了guide key[^2],它可以在我们按快捷键的,给
昨天从Planet Emacsen[^1]发现一个Emacs插件,git timemachine,看名字就和苹果的Timemachine一样,也确实是可以像时光机一样浏览文件。 操作非常简单: 1. M x git timemachine 进入Timemachine 2. p 上一个版本 3. n 下一个版本 4. w
很久以前,就听到许多人说,用Macbook都是从来不关机,平时都是直接合上屏幕塞到包里。于是我也这样了,不过后来突然发现,塞到包里第二天早上起来开机的时候,就发现Macbook已经关机了。重新开机的时候,就提示系统没有正常关机。 晚上有时候回到家里,将Macbook拿出来,就发现温度非常高。看上去合上盖子后,并没有sl
今天智平在群里发了一个signal的考题考大家,就是下面程序是什么输出: 然后执行 tail f /home/logs/nginx/access.log | python a.py , 问输出是 1,2,3,4,5, 1,6,7,8... 这样, 还是1,2,3,4,5, 1,0,1,2... 我们经过测试,是第一种情
很久之前突然linode给发邮件说,CPU使用率超过阈值,然后报警了。登陆上去发现有的Wordpress进程CPU占用率特别高,看了一下access log发现几乎所有请求都在访问 /wp login.php 。也就是有人在暴力破解。 当时在想,暴力破解Wordpress好处多多,只需要破解了一个Wordpress,在
之前1799买个台国行的LG G Pad 8.3(LG V500),对于这个品质的平板,觉得价格还是非常公道。不过发现国行的平板里面居然没有google apps,升级到4.4.2后,发现安装进去的google服务都是运行就闪退,非常恼火,最后决定还是刷个机吧。 首先是找了CyanogenMod的cm11的rom,然后
昨天知道126.am短链接服务下线了,觉得挺可惜的,就决定利用163.gs做一个短链接服务。 于是就这么开搞了。 为了追求最高效地完成想法,语言当然首选Python,框架也直接就用了最喜欢的Tornado。数据库也直接使用了Redis。因为短链接这种业务还是非常适合使用key value数据库来做。 数据存储 对于短链
ssh有个 A 选项可以启用Agent Forwarding,而Agent Forwarding是一个非常有用的功能。让我们通过跳板机连上另一台服务器的时候,可以省去将私钥拷贝上去、省去我们再次在跳板机中输入passphrase的过程。通过Agent Forwarding,我们在server 1登录到server 2的
有时候,用专门的测试机用来测试还是比较方便的,因为上面环境搭好了,而且QA和需求方也可以直接去到测试环境测试。于是就涉及到将代码安装到服务器的这个过程了。 对于代码需要安装在测试机上面,我们有两种方案,一种是直接在服务器写代码,这样写完后,想装的时候就直接运行安装脚本就可以把代码装好了。另一种是在本地写,然后将代码复制
今天在用setup.py安装我们项目代码的时候,发现在安装依赖包的时候,连接一直被墙了。 看到log输出是从https://pypi.python.org/simple/下载包的。 我想修改成douban的源。于是找了一下怎么设置源。 找到最多的是这个例子,首先我是在 /.pip/pip.conf 里面写了 发现用pi
有时候我们在同时写多个不同的项目,这个时候,我们可能会打开多个不同的Emacs实例,然后在不同的Emacs实例中以项目为单位打开文件来编辑。 恢复关闭前的环境 desktop[^2]和session[^1]是Emacs用来保存会话用的,下次打开的时候可以恢复到上次一次关闭状态,还是非常方便的。例如一个项目打开了许多文件
年前终于买了台新电脑,原来的联想Y550也用了4年半了,虽然换了ssd[^7],不过CPU还是有很大的瓶颈,Core P7350 2.0GHz,不知是不是CPU老化了,跑个浏览器都有些卡,虚拟机直接就没法跑了。而且电池之前换过新的,新的也只能用个1个小时,加上15.6寸又大又笨重,背出去十分辛苦,所以就咬咬牙,换了台便
本来在Octopress使用的链接是用markdown方式插入的链接 [EverET.org]() ,这样在看文章的时候点击link就会直接跳转到url那里了,我不想有这样的体验,所以决定给文章里面的url加上 target=" blank" ,让用户点击的时候在新窗口打开链接。 这个在哪个做比较好呢?想了一会还是在前
年底了,部门里面开始了移动端开发的培训,有ios和Android的选,不过我这个屌丝没有mac,而且也挺喜欢Android的,所以就毫不犹豫地选择了Android。 我的一直都在用Ubuntu,Linux菜鸟用户。所以就在Ubuntu上面开发了,不过这个也让我遇到了一个诡异的问题,在后面再说了。 Android SDK
在正正一个月前,11月1日,在和龙哥聊天的时候了解到龙哥他每天都在记录时间,用的是自己写的一个工具Woodpecker,于是晚上回去我又再次去了龙哥github上面的一个项目Woodpecker那里围观,也想开始试用。在readme那里有讲到一本书《奇特的一生》。在和龙哥聊的过程中,龙哥也非常推荐这本书,于是我就去看了
今天好累啊。去以14.4km/h跑了1km后立马就灰常精神了。 今天我们的服务器几乎挂掉了,导致外部基本无法访问,下午得知的是内存爆了。作为新人,暂时只能围观。 俊伟哥开始关闭了一些服务,但是隔了一会还是又过载了。查了许久,最后发现paas平台igor今天切换到了lvs,我们的系统有使用igor里面的服务,又和igor
前段时间有个需求,就是需要在公司连回到家里面的电脑,看看挂机下载的情况。公司是一个局域网,家里面的电脑也在小区局域网里面,看上去无法直接连回去家里面的电脑。这个就需要公网有一个中继服务器来帮助建立连接。 vpn 首先因为有VPN,所以就先尝试了一下两台电脑连上了同一个VPN,这样我们都有一个网段的IP。我在公司直接发起
最近把站点的css和js这些页面包含的静态文件都放到了又拍云[^1]的cdn里面,现在决定把图片也一起放到cdn里面。 这样vps就仅仅需要提供博客文章html的给用户下载,其他所有的资源浏览器都可以从就近的cdn获取。可以一定程度上加快站点的打开速度,而且也可以减少vps的压力(不过都是静态文件,也没啥压力 )。 那
毕业 一眨眼毕业3个月了,终究还是和那地铁里那熟悉的“下一站,大学城南”别了。 初入工作 上班的第一个月首先是到了南昆山素质拓展,住在一个度假村,虽然环境很优雅,但是有没有时间去周围转转就结束回来了。然后就开始了大半个月的Mini项目,与其他绝大多数部门的人不同的是我们的是一个人独立做一个,虽然缺少了团队合作的锻炼,不
What is TT? TT是一个16位的dos打字程序,已经有很久的历史了,现在基本只能在dosbox里面跑起来。 TT的配色非常的鲜艳,艳绿色的背景配上白色文字,直接就要亮瞎我的狗眼。 如果连续对着这种颜色几个小时,眼睛都看不清楚东西了。所以我希望可以修改一下配色。改成不那么刺激的配色。 至于为什么要用TT呢,这是
问题描述 这篇文章描述我犯的一个很2B的错误。在此记录一下。 之前写Mini项目的时候,我都是在本机开发的。在昨天上午我把Mini项目放到Paas平台(igor)上,就出现了非常奇葩的bug,就是一个刚注册的用户在登陆后,在刷新页面的时候,有一定概率会在刷新的时候查询不到这个用户。 查了一下log,发现在一些服务器上跑
引言 虽然使用ssh的时间也不短了,但是其中花去思考的时间并不多。以至于那么长时间过去了,我对ssh的认识也没有什么提高,真是自惭形秽啊。 在以前,我的私钥是没有用passphrase加密的,如果私钥被盗了,那我的github和vps就彻底沦陷了。 今天做的任务是学习ssh,加上导师兼师兄锴哥也增加了一些ssh方面的题
引言 这段时间因为作业原因又用回了Google Code的svn服务,瞬间感觉又倒退了很多年。 想起以前使用Google Code的svn服务,每次提交,查看log都要等上几分钟,都几乎没了Commit的兴致了。以前,我只是怪罪于学校的网络环境实在太恶劣了。 后来,直到我遇上了Git,才发现,这不仅仅是网络的问题,sv
现在有时候会在console里面玩弄一下某些网站,而某些网站可能没有加载jQuery,所以我们就要自己手动加载。 粘贴到Chrome的Console中。 参考
Emacs是最好的Python编辑器之一。Emacs还可以煮咖啡[^1] || Emacs的python mode能够让编辑Python脚本变得非常得舒服。我们来围观一下Emacs自带的Python mode里面的快捷键: 执行Python代码 C c RET imports or reloads the file i
今天在长途车上,收到邮件说服务器挂了,马上手机登上去。发现nginx进程全部死掉了。 看了半个小时的日志,nginx和dmesg的都没有任何有意义的信息。不过估计又是out of memory,因为最近我把php fpm的max children从3调到了4。不过也很纳闷为啥每次nginx挂掉都没有任何日志留下。Ope
明天就要离开学校回家了,也预示着我的大四上学期已经要彻底结束了。借此机会,回顾一下我的2012。 2012是一个耳熟能详的词,估计也是源于电影《2012》。 2012年的第一天 2011年12月31日晚上,我们在爬广东第一峰(在韶关,湖南和广东交界,广东最高峰),希望可以看到2012年的第一缕阳光。于是我们一到山脚下就
用Octopress或者直接用Jekyll都会涉及到Markdown。我们在写Markdown的时候,会遇到插入截图或者本地图片的问题。如果我们自己手工写上图片的标记,会非常的麻烦,于是我在前文 在Emacs中插入截图或者本地图片 中讲述如何自动化插入图片,来解决插入的问题。 今天我们来看一下如何在Emacs中预览Ma
在HTTP/1.1中,如果需要保持连接的话,那么Content Length是必须要提供的。否则就无法确定此次请求的结束位置。 但是,如果我们要在 动态生成的过程中 就想发送数据,是无法预先知道报文的长度的,所以也就不可能使用Content Length来指明body长度。那为啥要边生成边发送呢?假设生成完整数据需要3
我们在Emacs中可以方便地使用GDB,具体操作在emacser.com有详细的快捷键的教程。不过我觉得其实GDB的CLI已经很好用了。 Emacs中默认可以方便打开多窗格模式,看起来就很像平时大家用的IDE了。 我们只需要 M x gdb many windows 就可以打开多窗格了,默认布局如下图: 我们可以看到有
俺在把博客放在Github后,除了发现Github的Web Server将Cache Control设置为max age=86400外,还发现一个有趣的地方。Chrome在对于MP3文件的访问,Github返回的都是 206 Partial Content ,后来发现,原来Chrome在请求MP3的时候,会在请求头带上
大家在浏览器写长篇的东西时,有没觉得那个纯文本编辑框弱爆了?反正我是这么觉得。像Github、stackoverflow、Wiki等都支持Markdown,对于这种有语法的文本,最好就是用个语法高亮自动排版的编辑器编辑。 在Firefox有It's All Text!这个插件,可以调用外部编辑器。 而在Chrome里面
今天[屠文翔][tu]同学问了我一个在PIL中获取像素操作的问题,我想也没想就说道可以使用getpixel和putpixel操作像素,因为我之前一直也是使用这两个API。过了一会,[屠文翔][tu]同学问我是否用过load()这个API,我直接就说这个不是操作像素的。我之前在浏览PIL源码的时候,经常会见到调用这个函数
TT是一个很古老的打字软件,还运行在DOS下,能够存活这么多年实属不易。对于这么一个DOS程序,它的优势也起来了。因为DOSBox的跨平台,于是TT也可以跨平台了。 这多么像以前我们小学的用DOS的电脑里面的东西,突然想起以前的LOGO语言和打的雷电也是这种感觉。好吧,其实我也不是那么怀旧,如果不是去实习,也不会遇到一
Octopress首选博客语言是Markdown。于是又是Emacs大显身手的时候了。 在用Markdown写东西的时候,我想最蛋疼的应该就是插入图片了。 正常的插入截图的步骤可能为: 1. 打开截图程序截图 1. 保存截图到Octopress的制定目录中 1. 然后在Markdown中写上图片的url的地址 这样一次
为什么 为什么离开Wordpress选择Octopress? 在Google中搜索Wordpress+Octopress就会找到整版整版的从Wordpress迁移到Octopress的博文, 其中有介绍各种迁移的理由,例如Wordpress太臃肿,Octopress可以让我们像黑客一样写博客。 这些都太高雅了,我只是不
为什么调试Nginx 为什么要调试Nginx,原因多种多样。如果阅读源码的话,开着进程单步走下去不失为一种很好的源码导读方式。 编译Nginx 当然还要看一下,生成出来的的Makefile是不是有 O优化,如果有的话需要关闭优化,可以看一下根目录下的Makefile以及objs/Makefile。有的话记得需要改成 O
有博客,为什么还需要Wiki呢? 有博客,为什么还需要Wiki呢?对于这个问题,我也思考了许久。博客记录的东西很扁平,而且不太适宜记录一些零碎不完整的东西。如果别人订阅了你的博客,你的博客却经常发布一些不完整的内容,这样会严重影响别人的心情。所以我觉得博客适宜将一些比较完整的内容的写在里面。此外,平时在网上看到什么东西
两年多前买的摩托罗拉的里程碑1代,现在竟然已经无力支撑go桌面这样庞大的软件了。虽然我很喜欢go桌面,但是,现在手机已经无力承担如此重负。确实,什么样的基础就应该过什么样的生活,过高的追求只会让生活变得像一条狗一样,苟延残喘。 里程碑的硬件已经强过以前我家的电脑了,以前我的台式机只有650MHz的CPU,64M的内存,
刚刚切换到风云主机没一个月,而且还是年付的,没想到月底风云主机就倒闭了,A大也跑路了。在收到风云主机的邮件时,风云主机的官网vpswind.com也打不开了,邮件发了也没人回,付款看样子也讨不回来了。不过,好在A大在倒闭前的26号还发了邮件说要倒闭了,言下之意就是要我们自己备份好,然后自己卷卷铺盖走人,也给了几天时间备
趁这段时间有空,换成Xen的VPS,系统装了Ubuntu 12.04。决定重新配置一下服务器,另外将Web Server从Apache换成Nginx。 目标 搭建一个前端为nginx支持多用户的php虚拟主机。每个站点可以跑在不同的权限的用户下,一个站点被黑的时候希望不要影响到另一个站点,或者一个同学也不要可以随意访问
11月了,没想到10月份竟然木有写博客。这几天在迁移服务器,时间不赶,就慢慢弄,顺便记录一下一些技巧。 首先,远程ssh登录到服务器,可能中途会出现网络断掉或者超时,这时候ssh里面就打不了字了,就只能关闭再重新连接。如果我们用vim编辑一个文件到了一半的话,就会蛋疼地多了一个swp。那么如果我们希望在重新连接回去的时
我现在使用的一台电脑的硬盘速度非常慢,Chrome有时也会对硬盘读写也会让机器发生顿卡,真是悲剧。所以我决定将Chrome经常读写的数据放置到内存中以提高响应速度。 Chrome的数据文件主要有用户配置文件以及磁盘缓存文件。在Ubuntu下就分别放置在 /.config/google chrome以及 /.cache/
最近在用Ubuntu的时候,总是发现用着用着整台电脑就卡死了,什么都动不了,然后硬盘灯一直处于常亮状态。几次艰难地打开shell,发现都是gnome settings daemon一直在读写硬盘。这个究竟是什么问题呢? strace一下,看看,这个进程在干啥。 出来的结果就像刷屏一样,全部都是lstat的系统调用,读取
在网易实习时,上班一定要开着泡泡,不过泡泡貌似在Linux会严重地水土不服,所以只能装一个虚拟机来解决这个问题。借助VirtualBox的无缝模式,我们在一定程度上可以缓解这个问题。但是我平时会在多个虚拟桌面。如果恰巧不幸,我长时间没有切换到泡泡所在的虚拟桌面时,那就会有很长时间都不知道有新的泡泡消息。这个无论对人对己
EffectLab也是一个基于PIL的Python的图像库,目的是为了提供更多的特效处理以及更快的测试。 目前EffectLab可以实现的特效可以围观之前的文章:/effectlab.html。 古人云: 选择了脚本语言 就要忍受其速度。 但是,有时脚本语言的速度已经慢到了无法形容的地步时,我们就开始考虑性能优化了。
最近经常用到ASCII码,所以弄一张表过来方便查找。
原文地址: http://eli.thegreenplace.net/2010/06/30/python internals adding a new statement to python/ 译文地址: /add new grammer to python.html 译者: [Stupid ET]() 翻译得比较仓储
Clickcha是一种新型的图像验证码,只需要用鼠标点击即可以通过验证,虽然对于专门的攻击,这种验证码没什么抵挡能力,但是它还是挺有趣。 对于这种验证码的识别,可以用霍夫变换,就可以方便地找到最圆的圆,以及那些正方形。 Clickcha有提供wordpress插件,很容易就可以和自己的wordpress整合在一起。 我
对于验证码叙述,可以见上文我们身边的验证码技术。其中我们得知验证码识别流程如下图 第一个主要步骤是数据预处理。 例子 一般的国内的验证都比较喜欢加上噪点,再加上一些干扰线,来扰乱视线。但是这些噪声,对于计算机识别程序来说,基本上没起到什么干扰。 我们来看看下面的验证码,这个是随机选择的15张验证码。左边为原图,右边的为
EffectLab是使用Python编写的一个快速测试图像处理特效的实验库,EffectLab目前基于PIL。方便测试图像处理算法。 EffectLab正在处于开发过程中(其实几天前才开始),日后会逐渐增加更多的特效。 目前特效处理用纯Python实现,这个运行速度十分地缓慢,所以后期会用C把部分特效重写。 我本人挺喜
验证码大家几乎经常都会碰到,不过很多时候,我们都仅仅只是输入完事,很少去思考验证码其背后的东西。验证码的英文名叫 CAPTCHA ,全称为 Completely Automated Public Turing test to tell Computers and Humans Apart ( 全自动区分计算机和人类的图
这周开始了去实习了,伙食比饭堂好多了,而且还不用米,真幸福啊。不过不好的地方是,公司里要用专用的即时通讯工具,而且要保持工作时间内时时在线。更悲剧的是,它木有Linux版,宇哥说他wine后聊天窗是乱码,这个真是悲剧啊。 无奈,宇哥说vbox有个seamless mode(无缝模式),可以将虚拟机里面的系统的桌面隐藏起
Python中很奇葩的一个地方是它的函数的默认参数的值,仅仅在def语句执行的时候计算一次。这会导致什么问题呢? 奇葩的例子 我们来看一个例子: 这个可以看到packitem的默认参数pkg=[]仅仅计算了一次。而之后的packitem函数调用时,pkg都指向了最初创建的那个列表。 为什么 为什么会这样呢? 我们此时需
想起我们在C++中,要实现一个点积,如果是固定维数的向量,我们或许会通过这么一个成员函数来实现 对于非固定维数的向量,我们或许动用一个循环,然后又变成了一坨代码。 当我们使用Python的时候,就会简单很多很多。
Syntaxhighlighter Evolved是一款Javascript的语法高亮插件,高亮是在用户的浏览器完成,这样可以减轻服务器的压力。而WP Syntax恰恰相反,它是在服务器完成语法高亮。WP Syntax比Syntaxhighlighter Evolved更有优势的地方是支持rss高亮,而且支持的语言众多
有时候我们想看一下Python翻译出来的字节码是怎样的,此时我们可以借助dis模块。 我们在交互式环境iPython下,可以动态地获取我们刚刚创建的函数的字节码。 而对于文件的字节码,我们可以先读取然后编译。 其中,dis的输出为: 对于dis模块的介绍,我们可以围观 http://docs.python.org/li
SyntaxHighlighter Evolved 是wordpress的一个Javascript实现的代码高亮插件,可惜的我的vps网速非常慢,加载一个有代码的页面要等很久才会高亮,这让对读者是非常不友好的,而且不支持rss输出的高亮。于是我想把代码高亮放在服务器这边做好。虽然有人说WP Syntax会造成服务器压力
想必大家自己用VPS的时候,可能对人工备份都不那么勤快。但是备份确实十分的重要,当服务器硬盘彻底废了、数据库被骇客篡改,此时备份就显得格外的重要。 特别是对于还承载着别人的VPS,我们更需要做好备份。像屠文翔同学将自己辛苦翻译《Game Engine Architecture》贴在wordpress博客上,万一哪天服务
吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。登高而招,臂非加长也,而见者远;顺风而呼,声非加疾也,而闻者彰。假舆马者,非利足也,而致千里;假舟楫者,非能水也,而绝江河。君子生非异也,善假于物也。 《劝学》 学而不思则罔,思而不学则殆。 温故而知新,可以为师矣。 《论语·为政第二》 学而时习之,不亦
第一次见到注释中的TODO是在用VS自动生成MFC框架的时候,里面自动生成的函数可能会有一句注释: // TODO Fix this function. 很久以前以为这仅仅是给人看的,原来,它也可以在VS里面开启一个TastList窗口,显示代码中所有的TODO(代办事项)。然后我们就可以方便地在TaskList中看到
在Python,默认的整数是long型的,也就是机器字长,32位的最大有符号整数为0x7fffffff,64位最大有符号整数为0x7fffffffffffffff。 而在Python,支持任意大整数的运算,也就是,当我们的long型整数(在Python对象中type为int)溢出的时候,Python会自动将其变成大整数
Spark简介 Spark 解析器与 EBNF 语法有一些共同之处,但它将解析/处理过程分成了比传统的 EBNF 语法所允许的更小的组件。Spark 的优点在于,它对整个过程中每一步操作的控制都进行了微调,还提供了将定制代码插入到过程中的能力。 Spark的最新版是10年前发布的,真是非常的长寿,可见设计精良。其中的采
LL(1) 何为LL(1)?通俗来说就是向前看一个词法单元的自顶向下解析器。两个L都代表left to right,第一个L表示解析器按“从左到右”的顺序解析输入内容;第二个L表示下降解析时也是按“从左到右”的顺序遍历子节点。而(1)表示它使用一个向前看 词法单元。 我们从一个简单的计算器来看看递归下降的语法器如何构造
不管什么语言应用,识别语言这一步都很重要。 在小学时,大家都学习过如何分辨句子中的不同语言成分,例如动词和名词等。识别计算机语言也是如此(我们称之为语法分析)。 小例子 我们来看一下: return x + 1; 语法图: 解析树: 树上的叶节点是词法单元,分子节点表示推导式中的子结构。 我们来看一下手工编写语言解析器
文法以一种简洁的形式描述着语言的语法。 以下是Python的文法,摘自Python源码目录下的Grammar/Grammar。 Python的编译器的设计:http://www.python.org/dev/peps/pep 0339/ The Zephyr Abstract Syntax Description La
C/C++ 深度搜索C++对象模型 讲述了C++背后许多鲜为人知的东西。看完后或许会对C++的对象模型有所感慨。 STL源码剖析 STL的设计思想非常值得学习。像内存池和各种通用的接口等思想都要细细品味。 C专家编程 有很多好的技巧。 Effective C++ More Effective C++ C++标准程序库
字符画很好玩,我们来看看怎样将一张图片变成字符画。 我们首先将图片变成黑白的,那么每个像素的取值范围为:0 255. 然后我们将0 255映射到0 14的范围上,然后用如下字符代替: color = 'MNHQ$OC?7 !: ;.' 也就是像素为0的点用“M”表示,像素为14的点用“.”表示。 原理非常的简单,我们用
防民之口,甚于防川。 引用自百度百科的对于“防民之口,甚于防川”的启示: 中国历史上有很多统治者荒淫无道,但他们又怕人民议论,就采取了压制社会言论的措施,以为可以高枕无忧、平安无事。实际上这是最愚蠢的作法,它不仅使下情无法上达,错误的政策得不到纠正,加剧社会矛盾。更可怕的在于虽然民众口上不说,但心里却充满了仇恨,只要社
在Windows调试Python解释器还是非常方便的,因为有强大的VS。 不过在Linux下可能有点不那么顺畅。但是稍微设置一下还是可以很方便地调试的。我们来看看在Ubuntu下怎么做。 获取源码 在Ubuntu下获取Python2.7的源码非常方便,只需要使用apt get就可以轻松取得。在Shell下输入 apt
混合语言策略可以汲取各语言之所长,让开发更加敏捷。混合语言策略在在应用得当时可以让程序更加优雅。 在《Unix编程艺术》中,Raymond说道: 混合语言是一种知识密集型(而不是编码密集型)的编程。要让它能够工作,我们不仅应该具备相当数量的多种语言应用知识,并且还需要具备能够判断这些语言在什么地方最适合、以及怎样把他们
每个程序都拥有自己的生命,每个程序都应该拥有自己的帮助文档。一个好的帮助文档可以让一个程序的寿命延长。当然,有了一个好的帮助文档还不够,还需要友好快捷的帮助方式。 Shell 我们在shell下可以使用各种小工具,像ls,ps,grep等,当我们需要查看ls的帮助,可以是键入man ls,至于什么是man,我们可以输入
http://www.pythonchallenge.com/ 又是一个解题过关的网站,不过这次题目是Python的,有兴趣的同学们一起上吧。 豆瓣的介绍: 来玩pythonchallenge吧,理由如下: 0、Tim Peters的理由:"I've been using Python since 1991, and
今天博客主页改版终于告一段落,突然发现很久没有更新博客的文章了,于是想写把一些凌乱的思绪记录到博客中。以前的很多想法都是用笔写下的,今天就当作例外吧。不过发现写在博客里可以搜索,写在本子里,只能人工翻阅查找,不过人工翻阅也会帮助回忆以前做了什么。 我写的字很难看,于是想在写日记的时候练字,想起中小学时被老师逼着练字是一
无意看到一个大神写的《Linear equations solver in 3 lines (Python recipe)》,Python解一元一次方程只需要三行就完成了,确实很强悍啊。 我们来围观一下: 这里的核心是用到了Python的黑暗魔法eval,eval的第一个参数是表达式,第二个参数是命名空间,也就是把 x
偶们都是被QQ截图宠坏的一代,QQ截图确实很好用,不过在Linux下就木有了,于是该怎么办呢。 我们可以使用系统自带的截图,默认按Print Screen全屏截图或者Alt + Print Screen截活动窗口。 那如果我们想截一个区域,就要打开screenshot,然后选中Select area to grab,非
想起初中老师教Pascal的时候,就会有各种打印字符三角形的程序让我们写。 现在发现在Python下竟是如此的容易。可惜当年还不知道世界上有种语言叫Python。
传统数据结构教学中,老师站在讲台上讲课,放着PPT,而学生坐在下面神游。 原因何在?因为学生缺乏实践机会,所以注意力难以集中。 于是UltraDemo诞生了! UltraDemo提供一个自己动手实践的平台,我们可以在UltraDemo中编程,并且可以对数据结构可视化。 这个是一个编程实践平台,可以在上面写代码,编译,执
Clover —— Computer Simulation Origami,计算机模拟折纸。 历经C++、Python加Ogre,最后变成C 加WPF。我们的代码被推翻了一次又一次.... 终于Clover成型了。开发也告一段落了。 clover进度:/clover progress.html
现在很多大网站都有了图片反盗链,于是有时候在某些论坛或者博客就会遇到些“此图片仅限于…用户之间交流与沟通”的图片,这真是无法理喻。 反盗链 引用一段话:来自http://www.ningoo.net/html/2007/get away from photo defense.html 这里忍不住再次提起这茬,是在豆瓣九
图片非常的大,请耐心等候
如下图所示…… / C89/C99 say they're macros. Make them happy. /
原来一直想用Vim来写东西,不过Vim的出生就被定义为做一个编辑器。他的职责就是做好一个编辑器,Vim也不愧为编辑器之神,他确实是非常棒的编辑器。在Unix中,几乎每个工具都是设计为只做一件事,所以我也不想勉为其难将Vim变成一个好用的IDE。 俺曾经尝试使用vim gdb把gdb嵌入vim,不过用户体验是在让人无法接
我的Vim配置,参考了众多大牛的配置。这个配置我用了挺长的一段时间了,觉得用起来还算顺手。 此配置过的Vim非常适合用来写Python、shell和一般的配置文件。 最新的配置文件可以在https://github.com/cedricporter/vim emacs setting获取,我不定时会更新它。 配置效果如
在上文中,我们简要地学习了下FTP协议,链接 /ftp protocol.html。 有兴趣的同学们可以去围观下。 因为最近偶看了下FTP协议,所以决定写个FTP Server玩玩。毕竟一直写的都是应用程序,于是乎想写下服务器端的程序。 结果就有了ftp.py,名字灵感来源于web.py。 ftp.py ftp.py由
记得在上个学期的时候选了徐扬老师的《Web服务与面向服务的体系结构》,讲了SOA之类的一堆东西。然后实验就是要4个下午做完IBM一个星期的培训课程…… 于是偶们便开始无脑地照着下面这本手册来狂做实验。记得要做10多个实验,算一下一个下午要做2 3个实验,所以当场做的话只能无脑操作鸟。不能不说是教育的悲哀啊。 记得在做“
管道是进程间通信的有力的武器.记得初中时在写Windows的后门的时候,也是开了一个匿名的管道和cmd进行交互.今天终于在Linux上写了下管道. 在Linux下,两个程序之间传递数据的最简单的方法就是使用popen和pclose两个函数了。但它们都是需要启动一个shell。这个成本略高啊。 于是我们可以使用底层的pi
今天突然发现,我在中国生存了二十多年,竟然连十二生肖的循序都不知道,于是乎就上网找了下记录一下。 生肖也称属相,是中国和东亚地区的一些民族用来代表年份和人的出生年的十二种动物。生肖的周期为12年。每一人在其出生年都有一种动物作为生肖。十二生肖即鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪,依次分配于十二地支,是中国民
今天小孟师兄要一张贴图做测试,屠文翔同学用Fireworks花了两分钟做了下面的一张图片。但是师兄说要一张颜色相隔的图片,于是Fireworks此时就显得有点力不从心了。于是此时Python就要上场啦。 Fireworks生成的图: 好,下面,我们来用Python的PIL库来敏捷地生成一个颜色相隔的格子图。只需要10行
Evernote Clearly是Chrome的一款插件。Evernote的各种产品我的超喜欢,确实很贴心啊 特别是Evernote的笔记,比有道笔记,Microsoft OneNote都强多了。 它的介绍如下: Clearly makes blog posts, articles and webpages clean
FTP协议以前我用得挺少的,网络课上刘孜文老师曰FTP协议过时也就跳过了。不过现在FTP用得还是挺多的,所以决定围观下FTP。 刘孜文老师的经典名言是:我所学到的东西都不是从课堂上得来的。这点我挺赞同的。 刘孜文老师超强悍,中科院的博士,2个月看完了Linux内核的代码。 记得第一节课他说可以不用去上课,只要自己学就好
作者:Eric Steven Raymond 译者 : 刘海粟 (此文部分内容参考Ken Lee 前辈的译文 ) 本文的PDF文档可以从这里 获得。 为何有此文章? 身为《黑客辞典 》[^1] 和其他一些知名文档的作者, 我常收到热心的网络新人的电子邮件, 问及“如何可以成为一名神奇的黑客?”。 早在1996年我便注意
OGRE(Object Oriented Graphics Rendering Engine,即:面向对象图形渲染引擎)是一个用C++开发的面向场景、非常灵活的3D引擎,它旨在让开发人员更容易、更直接地利用硬件加速的3D图形系统开发应用。这个类库隐藏了底层系统库(如:Direct3D和OpenGL)的所有细节,提供了一
SimpleParse是一款非常简洁的Python解析模板,可以自己定义EBNF文法,然后SimpleParse会输出结构化的。 SimpleParse的介绍可以见,http://www.ibm.com/developerworks/cn/linux/sdk/python/charm 23/index.html,我也是
Clover的数据结构是由面层,边层和点层所组成。 面层 面层是一棵二叉树外加一个面组用于实现重叠的面的拾取和避免Z Buffer失效。当发生折叠的时候,肯定至少有一个面会被分割成为两个面,所以二叉树的叶子增加两个节点,叶子更新,渲染层也需要更新。 边层 边层是二叉树组成的森林, 点层 至于点层,就是十字链表。就是链表
苹果Bret Victor的Inventing on Principle演讲,确实有很大的冲击力。 技术是可以改变人类的思维方式,改变世界的。
一个很2B的求两个List的差集的作为示例 当然地球人会这样写: List beDeletedEdges = currentEdgeList.Except(originEdgeList).ToList(); 好吧,我喜欢把C 当Python写......
Bugzilla是基于Web的通用软件缺陷追踪工具。目前Linux Kernel,Apache,Mozilla,Gnome,KDE,Open Office,Eclipse,Facebook,Nokia,Yahoo! 等等都采用了Bugzilla这个缺陷追踪工具。 这段时间写代码我们的bug list都是写在一个txt里
一直感觉电脑性能的瓶颈在硬盘上,于是就决定加装一个SSD。做法是把光驱卸掉,把硬盘装到硬盘架上插到光驱里面。于是就把最没用的部件从电脑上拆掉了。 我们4个人一起买了镁光的64GB的SSD,里面也只有60GB,又是硬盘厂商经典的计算方法…… 我的主板只支持SATA2的接口,所以读取速度只到250MB/s就没什么变化了。
UltraDemo是一款数据结构的实践与演示的平台,可以在上面编写类C的代码。 通过UltraDemo,我们将可以以图形化的信息观察到我们写的数据结构的变化的过程。 UltraDemo是由编译器、汇编解释器和动画框架加上动画组成的平台。可以单步调试,查看内存变量等之外还可以观看动画形式的数据结构,这样可以方便初学者更快
今天在光驱位装了块硬盘,于是想在弄过几块硬盘看看到了Z盘会发生什么事情。 最后发现到了Z盘后,就识别不了新的硬盘了。Windows果然弱爆了。 今天贡献硬盘的有洪科,晓彬,钦杰,桐文,谢谢他们啊 见证历史的图!!
可能很多初学者对于数据库没有什么概念。 对于MySQL来说,其下可以有很多个数据库,可以使用 CREATE DATABASE database name; 来建数据库。 我们还可以对不同的数据库对不同的用户设置权限。 然后我们可以选择当前操作的数据库,然后在其下建表 CREATE TABLE table name; 举
学完编译原理已经一年了,也有半年被因为学其他东西而没空继续深入学习编译原理。 现在终于有机会继续学习了。 首先回顾下,编译原理考试第一题的答案。就是翻译的步骤。 对于编译,第一步是词法分析。也就是分出一个个Token。 例如,像一行赋值语句:a[index] = 4 + 2 ,我们可以将其拆成一个个基本元素,每种元素都
发现到了现在,我还是除了一些基本的状态码之外, 其他状态码都不是很熟悉,于是找了些状态码过来记录一下,也当做备忘了。 下面的拿Vim把返回码处理成表格还加了颜色,哈哈,果然用Vim就是像刷屏一样。配合宏真是无敌了! 100 Continue 初始的请求已经接受,客户应当继续发送请求的其余部分 101 Switching
最近洪爷要写数据挖掘的论文需要些数据,于是俺又有机会做苦力了。昨天刚刚回到学校,晚上就帮洪爷写了个爬虫来爬数据京东商城的笔记本的参数。 为了快速完成,基本原理就是人工找到笔记本的页面。 然后他有22页(Page),编号规则如下: http://www.360buy.com/products/670 671 672 0
在两台主机间传数据真快啊,不过也说明是100Mb的网,可惜可惜。 2月8日,burst出了优惠码,我决定用优惠码,有个8折,而且以后都是8折,还好。
吃饭完回来看到监控邮件发来我的网站 不可用(403 Forbidden), 有图有真相。 然后一访问,还真的不行了啊,返回一个403。 不过发现挂在服务器的上的其他的4个网站都没有问题.包括同域名的http://spead.everet.org的俊杰的博客都没有问题,唯独我的出了问题,还真是奇葩了。 我从[www.ev
刚刚无聊想了下,还是搭个FTP服务器让别人上传文件方便些,于是就开工了,花了点时间配了下vsftpd,据说还支持ipv6,不过在家没法测试。于是同志们终于可以用FTP直接操控自己网页的文件了,以前直接丢个shell给别人这样用户体验不太好啊 呵呵 有个ftp直接修改文件,这样也方便很多了。 努力
原来的主机是基于Xen的,价格非常的贵,于是现在换了基于OpenVZ的burst.net的主机,性能虽然可能比不上原来的,但是便宜了不少。内存从128MB换成了512MB,不过价格便宜了一半。感觉速度还是 快 了很多很多啊 而且还有原生的 ipv6 的支持,不再需要借助tunnelbreaker,真是校网的救星。 不过
今天家里的米用完了,我爸让我拆米袋,于是想看看怎么正确地拆米袋的先。 以前每次都是非常麻烦地的拿个剪刀慢慢剪,要剪很久才能剪开,今天上网找了下,发现还真有方法,一试就轻松打开了米袋的缝合线。 四句话:双线对着我,须从左边扯,剪断出线头,两边一拉的。 双线对着我:是说面对面袋、米袋封口的双线。 须从左边扯:是说从左边拆。
论文: http://www.om.sist.chukyo u.ac.jp/main/research/origami/journal/jvca.html conclusions
书的示例代码在 http://pix.cs.olemiss.edu/csci561/prg561.1.html 我在Ubuntu 10.10上编译会出现错误如下错误 解决方案是去定义一下OPEN MAX它。 我们在unp.h里面加上 define OPEN MAX 1024 就好了。 设为1024的原因见 http:/
在Android有许多ssh的工具,其中ConnectBot就是一款有趣方便的工具。 我们可以使用它来远程管理我们的主机。 ConnectBot的主界面如下: 我们可以把我们的密钥复制到SD卡根目录,然后在ConnectBot里面导入,然后点击密钥右边的那个锁的图标使其变为绿色就可以了。然后我们就可以无密码登录远程主机
想必大家都使用过Subversion吧,也想必大家都对SVN这种脱离了网络和服务器就寸步难行的工作方式嗤之以鼻吧。使用SVN我们看个log首要联网。 在服务器在因特网的情况下,网速让使用SVN变成一件十分蛋疼的事情。因为SVN事事都要联网,没有网络就无法工作,这个是集中式版本控制器十分大的缺陷。 好在后来Linus在B
自从有/开始以来,我的留言板每天都有几十条来自世界各国的垃圾评论,好在装了Akismet,否则我的博客就就被垃圾评论塞满了。这些都是某些RP低的人用机器自动发的,毫无价值,有俄文,波兰文等等乱七八糟的语言。 仔细看看,垃圾评论都集中到留言板。我的留言板的url曾经是 /guestbook ,然后我改成了 /guestb
消息记录 消息分组:讨论组 消息对象:我怎么听见喘息声。。 日期: 2012 01 30 XellOs 15:09:13 XellOs 15:10:46 额 XellOs 15:10:56 好吧 15:11:04 15:11:04 杨旭瑜 中止了语音通话。 XellOs 15:11:08 那个顶点是做图单位 XellO
Gitweb是Git提供的一个基于web的版本查看工具,可以在网页浏览我们的版本库,挺像Google Code上面的网页浏览版本库。我们可以使用cgi方式,让gitweb运行在apache中,如果在nginx上,我们还需要一个包装才可以运行cgi。 使用Gitweb很方便,但是如果是一些私有的项目,谁都可以访问想必大家
Imagination Factory是一款轻巧美观的图像浏览和图像处理软件。这是我们大一时的C++大作业。写下来记录一下以前做了些什么。 我们小组除了俺之外有陈可昕和康磊,两人都是天才少年。陈可昕同学巾帼不让须眉,交给她的几本数千页的WPF英文书籍她都很快就可以消化。康磊同学理科高人,复杂的数学问题他都可以轻松搞定然
2012 3 30: 今天我们把视频提交了。也上传了一份。 http://v.youku.com/v show/id XMzc0MTAyMDg0.html 2012 3 19: 前几天各种生病,今天好多了,又要准备开工了... 2012 3 13: 现在是凌晨1点18分,在FoldingUp的group排序似乎可以用了
首先,我们创建好公钥和密钥,如何创建可以参考 /management remote host.html 。 然后把公钥id rsa.pub发给Git版本库的管理员。 因为TortoiseGit使用ppk,所以我们需要用自己密钥重新创建一个ppk的密钥 我们首先打开 TortoiseGit 下的 puttygen,然后点
更详细的教程请见 《Pro Git》http://progit.org/book/zh/ch4 7.html。 安装必备工具 apt get install git gitweb gitosis 用自己的公钥来初始化Gitosis 对该仓库中的 post update 脚本加上可执行权限 root@everet:/ho
OGRE是什么?百度百科给的解释是:“OGRE(Object Oriented Graphics Rendering Engine,即:面向对象图形渲染引擎)是一个用C++开发的面向场景、非常灵活的3D引擎,它旨在让开发人员更容易、更直接地利用硬件加速的3D图形系统开发应用。这个类库隐藏了底层系统库(如:Direct3
PIL中包括Image,ImageEnhance,ImageGrab等。 Image Image模块仅用一个类来表示PIL中的图像,并提供了许多工厂函数,不同类型的图像可以使用统一的接口进行处理。 http://www.pythonware.com/library/pil/handbook/image.htm 主要函数
Python是一个非常简洁优雅的语言,库非常的丰富。在图像处理方面,有个PIL(Python Imaging Library ),这个是一个应用上手非常简单的Python的图像处理库。 PIL的下载地址可以在 http://pypi.python.org/pypi/PIL 找到。 手册在 http://www.pyth
好吧,最近又被人骂说我用筷子没文化没传统,于是记录一下用筷子有什么禁忌。学习一下中国的传统文化。 中国人使用筷子用餐是从远古流传下来的,古时又称其为“箸”,日常生活当中对筷子的运用是非常有讲究的。一般我们在使用筷子时,正确的使用方法讲究得是用右手执筷,大拇指和食指捏住筷子的上端,另外三个手指自然弯曲扶住筷子,并且筷子的
有人说,最矛盾的两句话是: 父债子偿。 人死账消。 有人说, 三百六十行,行行出状元。 万般皆下品,惟有读书高! 有人说, 退一步海阔天空。 狭路相逢逢勇者胜。 有人说, 己所不欲,勿施于人。 顺我者昌,逆我者亡。 有人说, 天下兴亡,匹夫有责。 不在其位,不谋其政。
1.Always be a first rate version of yourself, instead of a second rate version of somebody else. Judy Garland 永远做自己的一流版本,永不做他人的二流版本。——朱迪·嘉兰(Judy Garland,美国30 50
Scar,中文名:伤疤,是我们的 《计算机图形学》 和 《IT项目管理》 的大作业。虽然不想做的很大,但是最后我们写了4万多行代码。发现也是挺大的。 简介 我们花费的时间:4个月(9.14 – 12.14),这个是由屠文翔同学辛劳得出的粗略统计。 验证准备阶段:9月14日 – 9月21日 设计阶段:9月22日 – 10
对于管理远程主机,我想大家都一般使用ssh吧,在本地是Linux的环境下,那么都是挺方便的,什么都不需要弄就可以用 ssh l username hostname 来登录远程主机。而在Windows上,虽然有专门的ssh客户端,不过在cygwin里面还是挺亲切的。对于cygwin,我们可以设置在安装的时候选上OpenS
十几天前和隔壁宿舍的伟大的晓彬同学一起低价购置了一台二手电脑摆在宿舍做服务器,处理器虽然只有1.6Ghz,不过至少也有1G的内存可用。装了Ubuntu Server 11.10,机箱后面只是插了电源和网线,因为木有钱,所有就不买显示器,不过买了也占位置。另外,因为学校是华南地区教育网的接入点,所以我们每人端口都有一个公
周六回到家,今天是周三了,天天坐在电脑前日子过得好快啊,还想出去走走的,家里的天气比广州不知好多少,好想出去闲逛去拍照啊 想想寒假有什么东西要做先 1. Clover的文档和骨架 2. 搭建Git 3. 完善Scar 4. 转移QQ空间的相册过来 5. 看书 6. 完善一下UltraDemo的语法解释,增强健壮性,改为
回家了,因为电信太贵,所以家里换成了铁通。铁通首先很悲剧地就是没有公网IP,这样我就很难让别人直接连接到我的电脑了。 其次,我终于见识到了铁通断网的威力了,今晚就经常断网,一次断个几分钟,唉,真是悲剧,害得我还以为我的网站崩溃了。
很久很久以前写的自动抓取自己人人相册的python代码,从我的其他的博客复制过来,作为开篇。用途貌似只有备份一下自己和好友的相册。最新的代码请参见https://github.com/cedricporter/renren。 于是今天修改了专门针对人人网的备份工具,增加了自动抓取所有好友的功能,然后去他们的空间,把他(