自由软件社区
C#写的定时关机程序及一些感想
5前几天老婆想要一个自动关机的软件,这种小软件网上下载不是有广告就可能有病毒,或者觉得不好用。这么简单的软件,自己应该很容易写一个吧。首先用几分钟写出一个bat脚本。(脚本卖萌的地方,不要见笑哦)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | @echo off echo 自动关机程序,献给我亲爱的老婆! echo 请输入需要关机的延迟时间。 echo 请先保存、关闭重要的程序,到时候会强制关机,不能后悔哦。 :again echo 关机时间(秒)= set /p SHUTDELAY= echo 将在 %SHUTDELAY%秒后关机,确认输入ok然后回车,取消请关闭本窗口。 echo 如果要重新输入关机时间,请按回车。 set /p AGREE= if "%AGREE%"=="ok" shutdown -f -s -t %SHUTDELAY% if not "%AGREE%"=="ok" goto again echo 老婆的命令已经生效了。请关闭本窗口。 pause>nul |
当然这样的脚本并不能充分显示老公的“手艺”,于是动手写一个窗体程序。本来可以用C++ MFC,但是想想也太没有挑战性了,顺便想体验一下高生产率的语言带来的好处(参考此文),所以用C#写了一个小工具。大家可以到我的公开SVN上下载代码。代码基于GPL协议发布。
SVN地址: http://svn.zhu.im/just-for-fun/CsharpProjs/ShutdownMyPC/
代码中依然有卖萌的地方,切勿拿来交作业什么的。:)
以下是运行界面:最小化后可以隐藏在系统托盘哦
————————————————————–
但是,这样一个东西在发布给用户(嗯,我老婆一个人)时,遇到了麻烦。原来她办公的电脑时很久很久没有更新的Windows XP,有没有.Net Framework不知道,但肯定没有.net framework 4. 于是想要制作一个安装程序,把framework集成到安装包里。结果,我没有找到任何可用的解决方法。如果按照微软标准做法,使用联机下载方式,那不联网的电脑怎么办?如果使用本地安装包,我本来数k字节的软件,瞬间变成数十M,size可是钱啊。不论时网络传输还是介质拷贝,文件一大什么方法都不优雅了。这简直就是悲剧。幸好,家里的Windows 7在我的悉心呵护下,长期保持自动更新,终于能用来给“客户”演示了。
另外一个感想就是,程序员真的需要坚持不懈的克服“程序员情结”。我写软件为了好玩,加入倒计时声音警告功能、加入了几种色彩警告,不仅没有得到“用户”好评,反而被批“弄那么麻烦干嘛”。是啊,KISS吧,你懂的。(不过我老婆会领会为另外一种意思,两者都很好)
附上exe程序,电脑中已经安装了.Net framework 4.0已经自己愿意且会安装的人可以下载来玩玩:
下次我会用C++实现尽可能少依赖性的软件了。
转载:理查德·斯托曼一直是对的
0作者: 阮一峰
日期: 2012年1月19日
所有反对SOPA的文章之中,有一篇的题目是《理查德·斯托曼一直是对的》,我印象最深。
它指出,最近几个月,美国的公民自由严重倒退。先是《国防授权法案》(NDAA)允许政府可以不经任何程序,无限期拘捕具有恐怖活动嫌疑的人;接着是参与”占领华尔街”运动的民众被污蔑成”恐怖分子”;现在又是SOPA,它企图通过控制传播渠道,来抑制信息的流通。

这些对公民自由的侵犯,不禁让人联想到,30年前的1983年,有一个叫做理查德·斯托曼的程序员,声称“软件的自由,关系到人类的自由”。这个观点当时被认为荒唐偏激,但是现在来看,他担心的事情正在变成现实,他其实是对的。

很多人不赞成理查德·斯托曼,一部分原因是觉得他过于极端,是一个狂热的偏执症患者。比如,他仅有的个人电脑是一台龙芯上网本, 因为这是世界唯一的全部使用自由软件(Bios、硬件驱动、操作系统、应用软件)的电脑;他拒绝使用手机,因为手机的硬件和软件太封闭,使用某个品牌的手 机,几乎等同于接受某家公司的控制;甚至他的头发、他的胡子、他的服装,都让人们觉得这是一个怪人,大可不必理会他的观点。

“我们的社会正越来越依赖计算机,我们使用的软件对保证未来社会的自由至关重要。自由软件使我们能够控制我们使用的技术,让技术造福个人和社会,而不是让技术被商业公司或政府控制,用来限制或监视我们。”
(As our society grows more dependent on computers, the software we run is of critical importance to securing the future of a free society. Free software is about having control over the technology we use in our homes, schools and businesses, where computers work for our individual and communal benefit, not for proprietary software companies or governments who might seek to restrict and monitor us.)
很长时间内,我也认为理查德·斯托曼太极端,对他说的”软件=自由”根本没有感觉,只是觉得自由软件可以免费使用,这点很不错。我从没想过,软件与 大公司的垄断、政府的独裁有什么关系,言论自由、公民权力,这些问题怎么会涉及到编程呢?任何时候,只要自由软件能让我不花钱就用上新功能,我就心满意足 了。
但是近几年来,随着《爱国者法案》、国家防火墙、实名制、SOPA这样的事情越来越多,我逐渐意识到,我是错的,理查德·斯托曼是对的。如今,政府控制人民不再需要警察和军队了,他们只需要控制软件和硬件就行了。
电脑和网络技术,在现代社会中占据了至关重要的位置。控制了它们,就可以监视人们的一举一动、一言一行,等同于控制言论、思想、真理和权力。你或许 会说,面对面的交谈,就可以免受控制。错!想一想我们怎么安排见面?再想一想,我们身上的每一台设备都与网络相连,这意味着什么?
假设一个邪恶的政府与大资本家联手,企图剥夺人民的自由。只要自由软件存在,他们就不可能完全成功,因为代码和技术细节都是开放的,他们无法掩人耳 目,自由软件将是人民反抗的武器。反过来,如果没有自由软件,代码、协议、操作系统、硬件驱动、文件格式都是保密的,请问你怎么反抗呢?你拿什么反抗呢? 根本不需要SOPA,你的自由早就在他人的控制之下了。
这就是斯托曼一直重复的警告,可惜大多数人都忽视了他的话,只从经济角度看待代码。直到有一天,代码与我们的自由紧密相关的时候,我们才开始醒悟。自由软件是抵抗邪恶政府、捍卫自由的武器。源码包含着力量,我们必须保证,它控制在自由的人们手里。
最终来说,自由软件与商业无关,它只关系到人类的自由。GPL许可证从来不反对用软件挣钱,它只反对你通过限制他人的自由来挣钱。在理查德·斯托曼看来,专有软件剥夺用户的自由,最终将导致灾难性的后果,高度依赖计算机的社会尤其如此。
如果你想推广你的代码,让更多的人使用,那么BSD许可证效果更好。但是,如果你想保证自由从此再不会消失、而是像雪球那样越滚越大,那么GPL许可证是最好的选择。
理查德·斯托曼在30年前,就意识到这一点。他忍受各种艰难困苦,绝不妥协,到处鼓吹自由软件的合理性和必要性。今天我们已经看清楚了,30年了,他一直是对的!
必须让大家明白,软件代码不仅仅是商业产品,更重要的,它是人类自由的一部分。如果我们要保卫自由,就必须支持自由软件。你可以使用闭源软件,但是你应该支持自由软件,因为没有它,就没有我们的自由,不仅未来如此,而且现在已经如此了。
(完) (更多…)
提供最新,最完整的Android源代码压缩包下载
8我的Blog里,提供了几种Android源码下载的文章是最受欢迎的了。看来真的又很多人需要打包好的Android源码。
所以我会把自己一个服务器300G的硬盘空间中的大部分拿出来存储和分享Android源代码。如果你需要Android源代码,你可以去看看http://d.zhu.im/android/
如果你要链接到我的文件,最好能再页面上放置友情链接、说句谢谢之类的,我就很开心了。
除了再2011年10月24日以前生成的文件,是我手动产生的,所以会长期保留之外,建议你不要静态链接到源码压缩包,因为硬盘空间不够的时候,旧文件会被删除。我提供了符号链接,你查找名字类似 “latest-android-’$VERSION-ID’.tar.gz”这样的文件,链接到他,可以指向最新同步好的文件。
目前提供三个版本的源码包。
如果你需要其他版本,请提供版本号。如何提供版本号?请先读一下我的自动更新脚本。
我的300G服务器是CentOS的,没法容易地repo sync.所以我写了一个脚本运行在一个Ubuntu机器上。现在地想法是每周运行一次。这个周期是否需要调整,也看各位的反馈了。
脚本如下:
(更多…)
Android 2.3 Gingerbread 原版源代码压缩包下载
10此前已经发布过Android在PC平台上的源码压缩包下载(Android-x86-2.2, Android-x86-2.3),原因一样,repo sync的过程是痛苦而漫长的,甚至根本下不完整。我在美国的服务器上获取完整源代码后,压缩为gzip包,这样您就可以用下载工具下载了,可以多线程,可以断点续传,哦耶。
Android 2.3 Gingerbread 源代码 gzip压缩包
大小:3423434541 字节
MD5校验:96c359467e9f19ad0f2bcd5a4f218163
SHA1校验:1a3d1af403c02698d540e2204df095bd27b92199
Android编译加入第三方动态链接库文件的方法
0如果你的代码不想随Android开源发布,或者你的代码用到了闭源的第三方库文件,你可以把需要的库动态链接到自己的程序中,修改Android.mk文件,让Android在打包二进制文件时把指定的.so文件放入系统目录下,以供dlopen使用。
下面是一个通用的示例文件,说明了修改Android.mk的方法。增加
1 | MY_LOCAL_PATH := $(LOCAL_PATH) |
的原因是
1 | LOCAL_PATH := $(call my-dir) |
在一个.mk文件里只能出现一次。
示例文件在编译时,应该把libabc.so放到.mk同一个目录下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | LOCAL_PATH := $(call my-dir) MY_LOCAL_PATH := $(LOCAL_PATH) include $(CLEAR_VARS) LOCAL_PREBUILT_LIBS := libabc.so include $(BUILD_MULTI_PREBUILT) LOCAL_PATH := $(MY_LOCAL_PATH) include $(CLEAR_VARS) LOCAL_SRC_FILES := main.cpp LOCAL_MODULE := mytest LOCAL_SHARED_LIBRARIES := libabc include $(BUILD_EXECUTABLE) |
感谢rktb,参考原文地址
