阿里巴巴-淘宝-新制造-高级技术专家,PostgreSQL、Clojure、FreeBSD等技术爱好者
暂时未有相关通用技术能力~
阿里云技能认证
详细说明回家真好 前段时间忙着找工作、项目结题、写报告……反正是总有做不完的事情,哈哈。好在暂时告一段落了,应老妈强烈要求回家休息几天。这次回家除了这身衣服,只带了一本《sed与awk 》,我觉得这种小册子最适合茶余饭后休闲之用。如果你也有兴趣学 sed ,推荐你一起看《sed与awk 》(可以在谷歌图书 在线阅读英文版:D)。 花了两天时间,看完了前面 sed 的部分。要掌握一个工具就要熟
由于我的精力和水平都有限,写的文章中难免存在一些错误。所幸得到热心网友的指正,才能不断修改、完善。我无法像 Knuth 一样为每个错误的头一个发现者支付奖金,故在此罗列各位网友的贡献,让他们收获属于他们的荣誉! 2010-01-25:网友黄海提供在 Linux 下通过 nc 来实现 DuplexPipe 的方法,详见《Linux下用nc实现DuplexPipe》。 网友Kusk在评论中指出,
好玩的问题 今早帮老师去答疑,一位同学跑来问:“使用 printf 输出 %d、%c 时,后面传的参数都是变量的值,为什么 %s 看起来和它们不一样,要传一个地址?”我说:“小伙子很有前途,一般人不问这样的问题,哈哈!” 这个问题类似 Java 中基础类型传递值、对象传递引用,这么设计是为了提高效率。对于还没学完C语言的初学者来说,如果我给他扯一堆“底层设计”或“效率”等显然不合适,还极有
神奇的吉普赛读心术 闲着无聊窜寝室,看到一个同学在玩一个 flash 游戏:吉普赛读心术。规则如下: 任意选择一个两位数(或者说,从10~99之间任意选择一个数),把这个数的十位与个位相加,再把任意选择的数减去这个和。例如:你选的数是23,然后2+3=5,然后23-5=18在图表中找出与最后得出的数所相应的图形,并把这个图形牢记心中,然后点击水晶球。你会发现,水晶球所显示出来的图形就是你刚
写完解释器之后 这一篇文章我只想和大家侃侃编程语言的事情,不会被放到书中。因此可以天南地北地扯淡,不用像前几篇一样畏首畏尾的了。 经过前面几篇文章的讨论,已经把用纯 C 语言来实现一个解释器的方法介绍完了。但那些是写给我校 C 语言初学者看的,并不只是你,我得也觉得很不过瘾 ^_^。因此准备继续深入学习编译原理等课程,希望有志同道合的朋友和我一起交流! 富饶的语言(工具) 在前几篇文章中一直在
声明 为提高教学质量,我所在的学院正在筹划编写C语言教材。《用C语言写解释器》系列文章经整理后将收入书中“综合实验”一章。因此该系列的文章主要阅读对象定为刚学完C语言的学生(不要求有数据结构等其他知识),所以行文比较罗嗦,请勿见怪。本人水平有限,如有描述不恰当或错误之处请不吝赐教!特此声明。 语句 在前面的章节中已经成功实现了内存管理和表达式求值模块。之所以称表达式求值是解释器的核心部分
声明 为提高教学质量,我所在的学院正在筹划编写C语言教材。《用C语言写解释器》系列文章经整理后将收入书中“综合实验”一章。因此该系列的文章主要阅读对象定为刚学完C语言的学生(不要求有数据结构等其他知识),所以行文比较罗嗦,请勿见怪。本人水平有限,如有描述不恰当或错误之处请不吝赐教!特此声明。 操作符排序 如果你忘记了后缀表达式的概念,赶紧翻回上一篇《用C语言写解释器(二)》回顾一下。简单
声明 为提高教学质量,我所在的学院正在筹划编写C语言教材。《用C语言写解释器》系列文章经整理后将收入书中“综合实验”一章。因此该系列的文章主要阅读对象定为刚学完C语言的学生(不要求有数据结构等其他知识),所以行文比较罗嗦,请勿见怪。本人水平有限,如有描述不恰当或错误之处请不吝赐教!特此声明。 内存管理 既然是表达式求值,自然需要在内存中保存计算结果以及中间值。在《用C语言写解释器(一)》
声明 为提高教学质量,我所在的学院正在筹划编写C语言教材。《用C语言写解释器》系列文章经整理后将收入书中“综合实验”一章。因此该系列的文章主要阅读对象定为刚学完C语言的学生(不要求有数据结构等其他知识),所以行文比较罗嗦,请勿见怪。本人水平有限,如有描述不恰当或错误之处请不吝赐教!特此声明。 起因 最近,我们学院老师联系我,希望我能提供一段用 C 语言编写的 BASIC 解释器,用于 C 语言
我比较喜欢使用 Google Docs 来编辑在线文档。直到最近我才有了一台属于自己的计算机,但大部分时间我依然使用实验室的机器,那儿环境各异(有好多种不同的 Windows 和 Linux 发行版本),并不存在一种通用的可编辑格式文档(即便是最简单的文本文档也存在字符编码、换行等问题);另一个原因就是我们的老师也普遍拥有 Google 帐号,我每写完一篇文章就可以直接 Share 给他们,方
完善了部分内容,主要有以下几点: 采用系统钩子技术,解决了离开主窗口不能控制贪吃蛇的问题。 去掉主程序窗口,还原整个桌面。 为方便大家使用,去掉 Deskicon.dll 和 danger.bmp,仅留一个 Snake.exe 文件。程序全部采用 VB 编写。 去掉修改桌面背景功能,以免给大家引起不便。 最新版程序的源码依然是到 Google Sites 上下载,地址:http:
到处都有好玩的玩意儿 计算机的世界里离散的:内存从 0 -> 2n 编号;整个屏幕的画面也是由许多颗像素点组成……如果你不介意的话,把脸尽量地贴近显示器(或者电视屏幕),你会看到整个屏幕是由一颗颗显示不同颜色的小颗粒拼成的。如果这样感受还不深,那你还记得小时候玩过的最初型掌上游戏机吗?如下图: 其中经典的飞机、坦克、俄罗斯方块等都是由一个个正方形的黑色方块拼成的。 放眼周边的
中秋节宅寝室,想玩玩游戏~都说玩电脑,其实最好玩的当然就是操作系统啦。那就用桌面图标来玩贪吃蛇好了!^_^ 程序是用 VB 6.0 开发的,原理非常简单,就是通过 SendMessage 发送移动图标的消息。不过前提是桌面没有启动“自动排列”。程序的源代码可以到我的 Google Sites 下载(登入http://sites.google.com/site/redraiment/sunsh
今天是中华人民共和国建国六十周年,普天同庆!作为一个程序员,当然是努力工作报效祖国啦~特地抽空完善 DuplexPipe,主要更新如下: 实现了 UDP 通信模式; 增加了对多语言的支持,Download 中提供中文版,你还可以通过源码自行编译英文版; 修正了一些 v0.1.0 中的小错误。 最新版的源码以及 JAR 包请到项目主页(http://code.google.com/p
在《内网IP自动获取》的评论中,有个网友希望能帮忙写一个批处理来批量检测域名的可用性。但前两天都在赶文档,刚刚接到老师电话说推迟到10月08日交,心头大石终于落地^_^。所以就马上开工帮那位朋友实现这个批处理! 原理很简单,就是找一个域名注册网站(比如我这里找的中国域名为 http://www.chinadomain.com.cn/),这类网站一般都提供了域名查询功能,我们只要用 curl
为解决上内网问题,我需要找一个 DHCP 未分配的 IP 地址来使用,在《内网IP自动获取》一文中的批处理能成功实现自动搜索。原理是逐个尝试地址是否可用,测试方法就是将本地地址设置成指定的静态 IP,然后去 ping 网关,直到找到一个成功的地址。但这种方法有些美中不足: 通过 netsh 设置本地静态 IP 比较耗时间; 如果 IP 已经被分配就会弹出一个消息框需要手工确认,因此并不算
在寝室上内网真的是很闹心呀~稍微迟点开机,IP 地址就被别人抢去了。昨晚九点放学后,一直等到十点半才连上,实在忍无可忍了! IP 被抢后解决方法无非就是找一个没被占用的地址,但手工去测试 256 个地址太折磨人了,早些时候我们班的两个同学就分别用 Java 和 C# 来实现过类似的小工具。但解决这样的小问题有点杀鸡用牛刀的感觉,不符合我的性格^_^,我当然还是用批处理来解决。 批处理中核心
经过两个月的假期,寝室里蒙上了厚厚的一层灰。擦桌子、拖地、刷马桶……忙得不亦乐乎!回到实验室,第一件事就是“aptitude update && aptitude upgrade ”。 经过一段不算漫长的等待,Debian 以崭新的面貌展现在我面前。但想输入密码的时候发现小键盘没反应了:按“Num Lock ”指示灯还会改变,回车也依然有效,按数字却就“没反应”。再仔细观
原文:http://maketecheasier.com/8-useful-and-interesting-bash-prompts/2009/09/04 很多人并不关心命令提示符,觉得它没用。刚从互联网上搜罗了几个有趣且实用的 Bash 提示符。好的提示符或许能改善你的工作方式~ 注:要使用下面的效果,只需将“PS1=”部分复制粘贴到终端执行即可。如果要保持修改,可以将它追加到“~/.b
我的设想 在着手编写 DuplexPipe 之前,我规划过我的需求:我想要一个最通用的通信工具,换言之就是能让所有具有输入/输出的程序都可以相互通信。DuplexPipe 本身远没达到这个设想,至少还得具备以下几中模式: -f file # 通过读写文件获得数据 -s # 从 stdio 中获得数据 -e exefile # 从本地程序的输入
穿越防火墙 你是否曾经尝试过去连接一台远程计算机,却因为被防火墙拦截或路由器没有转发而造成无法通信?这是主动式连接的一个弊端:它依赖服务器的状态,而对服务器有生杀大权的只有管理员。如果能让服务器主动尝试连接我们的计算机,那就没问题了!因为防火墙、路由等一般不会过滤向外的连接(反弹式木马就是利用这一原理)。 但以往的服务端程序都是采用监听本地端口的方式(比如 Windows 远程桌面程序监听
连接方式 在《DuplexPipe二三事(一)》中提到建立连接有两种方式:监听本地端口,等待其他程序来连接(以下简称“监听方式”);或者主动连接其他程序(以下简称“连接方式”)。排列组合一下,会得到三种结果:监听-连接、监听-监听、连接-连接。其中只有“监听-连接”方式能正确地建立连接,《DuplexPipe二三事(三)》中介绍的 FPipe 只是在其中添加了一节“监听-连接-监听-连接”,
端口映射 在《DuplexPipe二三事(二)》中介绍了瑞士军刀 nc 的用法:nc 就像给程序一张飞机票,让原本只能在本地执行的程序也能运行在网络上!但网络和现实交通一样,很多地方需要中转才能到达(比如外网计算机无法直接访问公司内部 Web 服务器)。 为实现公网对内部网络的访问,需要对数据进行转发(即端口映射)。比如内网“主机A”开启了 Web(port 80)服务,需要在“服务器的网
瑞士军刀NC nc(NetCat)是我很喜欢的一个小工具。在我常用的网络小工具中使用频率仅次于 cURL 。nc 属于传输层的工具(TCP/IP 四层模型请看这里),它能保证准确无误地发送和接收数据,但并不关心数据的具体含义(这些工作交给应用层的软件)。难怪说 nc 是网络的瑞士军刀,因为所有应用层的软件都是通过各自的网络协议来解析来自传输层的数据。所以,只要你了解应用层协议(比如HTTP、
写 DuplexPipe 是因为“无聊”!真的,那天很无聊,想起小时候用扑克牌和姐姐比赛算24,就随手写了一个 Shell 脚本重温一下: #!/bin/sh for ((i=0;i<4;i++)) do ((n=$RANDOM%10+1)) echo -n "$n " done echo i=0 while read exp do ((i+
项目主页:http://code.google.com/p/duplexpipe/ DuplexPipe 是我开发的一个开源网络小工具——双向管道,目的是让网络上的两个程序能进行自动化交流。当初写这个小工具的原因是为了能在外网远程控制内网计算机。 传统的管道只能从一端输入、一端输出。双向管道不仅可以让进程 A 的输出作为进程 B 的输入,也会让进程 B 的输出作为进程 A 的输入。这样就可
前几天刚刚向 CSDN 报告了一个文章置顶后引起部分文章不能在首页上显示的BUG,今天闲逛 CSDN 博客首页,打开 .NET 频道再次大跌眼镜!今天是2009-08-29,第一篇文章的发表日期却是“2009-8-30 1:17:00”?? 版权声明 请尊重原创作品。转载请保持文章完整性,并以超链接形式注明原始作者“redraiment”和主站点地址,方便其他朋友提问和指正。
不久前,我们软件工程系举行了全系大会。我在大会上做了简短的报告,主题是“学以致用、动手实践”。报告期间我说了一个亲身经历:以前校园内U盘病毒肆虐,病毒会把U盘里所有的文本文件加上系统属性和隐藏属性,并添加“.tmp”扩展名(例如原文件名为“a.txt”,病毒修改为“a.txt.tmp”),然后生成一个和原文件同名的病毒文件。我不幸中招,于是用我所学的知识写了一个小程序,几秒钟就解决了。 原以
最近上网冲浪习惯用 Google Chrome,无意间打开 CSDN 博客首页却弹出警告: 根据提示信息是说 Live.csdn.net 上有恶意软件,估计是博客首页嵌入了 Live.csdn.net 上的视频。到 Google 首页里搜索 live.csdn.net,出来以下结果: 看来 CSDN 的视频频道真的出问题了,不晓得管理员发现没有。 后记 博客首页已经恢复,但罪魁
一个文件分割成多个文件 有时需要提取文件中的一个或多个列元素生成新的文件,这一操作在 Shell 里很容易实现。比如有一个数据文件 data,有三列信息:姓名、学号、班级。 redraiment 0612800134 0601 christine 0612800136 0601 zb 0612800229 0602 现在需要这个文件的第一列和第二列信息分别存到文件 f1 和 f
飞信是个不错的业务,可以通过PC端免费发短信,如果以后能一直免费下去那就是非常不错啦(奸笑ing)。为了能在 Linux 下使用,已经有不少人分析出了飞信的通信协议,比如开源的 libfection。还有一些是网页版的工具,比如“https://fetionapi.appspot.com/”。有了这些前辈们的贡献,我们就可以很轻松地写一个 Shell 脚本来实现在命令行下发送短信了。 #!/
原文 原文地址:http://www.davidflanagan.com/2009/08/string-multipli.html 原作者:David Flanagan In Ruby, the "*" operator used with a string on the left and a number on the right does string repetition. "Ru
前段时间看了一个视频——《科学家证明轮回的事实》。视频中疑点甚多,姑且就当科幻片看好了。很多宗教里都有生命轮回的概念,但真伪难证。今撰此文来扯扯“永生轮回”的淡,本文是在一本正经地讲一段屁话,仅供消遣切莫认真。 从物理学的波开始 “波”蕴含能量:在真空中没有任何阻碍,因此能力可以毫无损失地传播到任意远处;在空气或其他介质中传播,能量不断地被其他物质吸收直至耗尽。 “波”储存信息:不同的频
声明 此文的读者定为C语言初学者。此文介绍的技巧适用于开发迷你型项目或自娱自乐的玩具程序,正规的项目中可能不会采用。读者可以抱着茶余饭后休闲娱乐的心态来围观,至于CLI、GUI等名词解释请参看百度百科。转载请保留此声明和原作者redraiment,谢谢! 正文 诱人的GUI程序 程序的作用就是化繁为简,让计算机高效地帮我们完成枯燥的工作。写程序最大的动力就是你精心设计的程序能获得大家的
前言:这是自醒文,不是自省文,是来提醒自己的。我还没铸成什么大错,用不着自我反省。 前几天好像又回到了小时候,同情心有点泛滥,觉得可恨之人也有可怜之处。但我这人一有同情心就容易犯贱!现在的我更加坚定当初的立场:可怜之人,必有可恨之处!! “可怜”是对自己的态度,是对自我的否定。如果一个人对自己的生活很知足,又如何会给人可怜的感觉?落水的人就会狼狈?穷人就不快乐?倒是有些人,生活在温馨的家庭里抱
时代发展真是快,像我这么迟钝的人总是跟不上节奏。我没事的时候还是会把看了几十遍的TVB版金庸武侠剧、周星驰等喜剧电影,还有喜爱的卡通翻出来回味。 看了这么些卡通漫画、电影电视剧,发现个蛮好玩的现象:早些年,人们的事业由国家统一分配,经常张冠李戴,搞科研的分配去开船等;后来80、90年代时人们可以自己选择职业,那时比起现在还算很穷,没所谓哪个行业赚钱不赚钱,都是为社会主义现代化做贡献,因此大家
前几天读了沈公的《也谈写写编译器》,很认同其观点。我也赞同“编译原理”就像数据结构一样是很基础、很实用的课程:“unix/linux 下随便哪个项目为了方便都可能随手做一个, 这是 unix 程序员的基本功”。但很可惜我们学校软件工程专业不开设编译原理,理由是学了没用。 我们都知道“程序=数据结构+算法”,我们姑且通俗地说是程序由“数据”和处理数据的“行为”组成。根据程序对数据和行为的控制,
我觉得“编程”的概念相当宽泛,程序早在计算机出现之前就存在。我们现在进机关办事,仍不时会听到“做事要按程序/规矩/规 章制度来”。比如我们学生项目基金报销,要按先后顺序依次执行“填报销单、交团总支审核、院长助理签字、财务处复查”等步骤。而这些就是所谓的“程序”。 因此,程序就是为达到某个目标而需要执行的步骤;而如何把这些步骤有意义地组合起来,这个过程就是“编程”。 用这个定义去匹配,会发现周
一个好玩的现象 这学期上了一门叫“软件工程实践”的课程。目的在于从需求分析、概要设计一直到验收结题,全程模拟真是的软件项目开发过程。让我们这些象牙塔里的本科生也有机会体验一下实战经历。 一个学期做下来,对我来说印象最深的就是文档写作。相信很多程序员对写文档这档子事都是深恶痛绝。我们的需求频繁地更改(估计是老师们为了体现真实感而故意前后说得不一致),导致每次洽谈结果都是要修改大堆文档。但是我
前言:我最近对语言挺着迷的,很想学习一下《编译原理》。询问了老师才知道我们已经取消了这么课程(他们觉得学了没用) ,一时间也没找到什么好的教材,如果有好心的朋友可以推荐几本关于编译原理的经典书籍,感激不尽! 图灵机是由输入、输出和状态转移函数三要素组成的,广义上的自动机模型。理论上讲任何任何完备图灵机语言都可用于通用编程,并且和其他完备图灵机语言一样有效。但实际上有些此类语言作用在其特定领域
我们本学期学了数字图像处理,上机实验使用C语言,内容都相对比较简单。唯一复杂一点的也就是如何从BMP文件里读取图像信息,反倒是真正与课程相关的算法处理却像做加减法一样很简单。我觉得我们的课程安排上有很多不合理的地方,往往在学一门课程时需要很多前置知识。比如以前学“计算机图形学”是要求上机用C++&OpenGL,结果很多同学上机不成功不是因为课堂内容不理解,纯粹是因为OpenGL不晓得怎
我不得不像个怨妇一样再次声明:我讨厌坐车!!!非常非常非常非常的讨厌!现在是极度憎恶!每次坐车都跟打仗一样,今天要不是强忍着,3个塑料袋已经不够我用了。 今天在车上又吐成软体动物,突然灵光一闪,犹如醍醐灌顶,领悟到——我的反应真的很迟钝,总会慢半拍。这一点体现在很多方面:比如有惊喜的事情发生时,总是不能及时地给出一个合适的表情,以至于让人家误会我天生就一副嘴脸;再比如我每次学一门课,都不能按
摘自《代码大全2》,有删减,希望和大家共勉。 “宗教信仰”在软件开发中有着多种表现形式——非要坚持某种设计方法,笃信特定的布局或注释风格,激励避免全局数据。不管是那种情况,都是不合适的。 软件先知 糟糕的是,一些专业优秀人员往往更容易偏执。革新方法需要公开,才能让别人尝试。尝试这些方法后才能充分证实或反驳之。研究结果向实践者的传播称为“技术转移”,对于推动软件开发的时间水平有重
这是我们本学期一门课程——软件工程实践(全程模拟软件开发的过程,关需求分析就做了一个月,后面还有概要设计、详细设计、编码测试、验收等)——的作业,旨在开发一款校园内部使用的基于B/S模式的在线棋牌类游戏对弈平台。目标是能开发出一套框架,其他同学能在这个框架的基础上轻松地开发出自己的游戏。 现在已经开始编码几天,实现得还很粗糙,做了一个简单的“五子棋游戏”来做示范。 系统前台是纯HTML+J
学弟学妹们经常问我一个类似的问题:一道编程题自己怎么想也写不出来,转而看看其他人的解答,感觉代码里没有用什么奇技淫巧,所有语句都能看明白,为什么换成自己就写不出来呢?换个说法就是:关键词、语法等我都熟悉了,这样我是不是就学会C语言了?如果是,为什么我写不出代码?如果不是,那到底学到什么程度才算学会? 我想大部分同学应该都看过金大侠的武侠小说,《笑傲江湖》中,华山派的基本招式是“白云出岫-&g
新春佳节来临之际,redraiment祝大家在新的一年里身体健康,合家欢乐,牛年大吉! #include <stdio.h> long x[]={1, 3,6,8,0,0,0,0, 32,32, 4,32, 1022,32,1020,36 ,32,1022, 34,508
一个多月前,我就宣布退出学校的ACM集训队。现在学院的ACM服务器要转接给下一批新人了,呵呵。以后那台服务器我就没有使用权了。而我自己也没那个金钱和实力去租借服务器和购买域名。因此我只能很遗憾地宣告大家,校内网好友买卖在线挂机站点将于11月06日00时正式关闭。多谢各位这些天的热心支持! 后记:挂机客户端程序的源代码已经放到我的Google Sites上,大家可以去下载。https:/
今天偶然遇到一个情况,我想用curl登入一个网页,无意间发现要post的数据里带空格。比如用户名为"abcdef",密码为"abc def",其中有一个空格,按照我以前的方式提交: curl -D cookie -d "username=abcdef&password=abc def" http://login.xxx.com/ 提示登入失败。 于是查看curl手册man cur
偶然间在网上找到了一百张美图~都是自然风景画。据说能养眼哦~地址请看这里 我的桌面背景也是该换换了,不过手工换这一百张可不好玩。windows下有桌面随心换这个现成的软件;kde下也自带这个功能。但我用的是gnome,找了半天还是没找到自带的功能。所以写了一个python脚本,让它隔10分钟换一张桌面背景。感觉好炫哈~ #!/usr/bin/env python BAC
校内网,自动好友买卖机(外挂)...现在还是预览版本,功能还很不稳定,所以推荐大家还是在线挂机吧。 我向来是一个很懒的人,一天拖一天,一直拖到现在,还是很多地方不满意。让我很意外的是,居然有网友非常关注我的开发进度,每天过来好多趟,看发布了没有。所以现在赶出一个预览版本。让大家体验体验。 因为是java开发的,所有可以跨平台,目前测试在fedora和win XP下都能正常工作。JRE要求1