msgbartop
用铅笔写日记,记录那最原始的美丽
msgbarbottom

用https代替传统访问

由于一个众所周知的原因,就是为了打击大量非法网站的建设,在清查了一遍全国的IDC后,中国电信(网通不清楚)陆陆续续的封掉了家用ADSL的对外80端口.目的只有一个,就是让动态域名+家用服务器的小型网站从这个星球上消失。

当然,整顿非法网站我不反对。因为据我的经验,这些个站长的素质(或者说是职业道德)普遍不高。他们的网站上大多充斥着恶意脚本和后台木马、病毒等.这些都是为广大网民深恶痛绝的。

所以说,于情于理也都应该清理掉这些互联网的污垢.

可是这也给我带来了困扰,就是我用自己家里的一台Windows Server 08 r2系统搭建的web + ftp 的网络共享平台,也受到了影响,当然只是web方面.

本来想换个端口吧,开始毕竟我的朋友中有些人是不习惯这么奇怪的url的,一定程度上影响他们的使用。
后来又想,要不直接用ftp,因为21、22、23 端口是不受影响的。不过,有些人的电脑没有ftp 客户端,而且还要花时间去教他们怎么用。费事费力,再次搁浅.

面对80端口的时不时的抽风,我忽然想到了用https连接访问的方法.对啊!这是个好办法。因为https默认端口是443.
而且http与https仅有一字之差,很难分辨.

主意一定,我便开始行动了.

因为我的apache是集成了mod_ssl(提供openssl库的接口)的,所以不需要单独去下载openssl套件.
首先进入apache所在的目录,如"c:\program files\apache software foundation\apache2.2\",确保/bin 下存在 openssl.exe 程序.
我所要做的就是生成*.key、*.crt 两个文件,一个证书key和一个自签名证书.
请注意,我生成的是自签名证书(self-signed SSL Certificate).为什么呢?

因为我不可能,也没必要去到什么Verisign、Thawte等机构去申请一个。我启用SSL访问的唯一原因是为了不走80端口,仅此而已.不用那么麻烦,而且需不需要费用和通不通过还说不准.

用官方的话来讲,也可以是测试目的,呵呵
开始动手,
进入命令行,把当前目录定位到apache的/bin 下,

先生成key:
openssl genrsa -des3 -out server.key 1024
记住输入的pass-phrase,启动apache要用到.
如果和我一样是windows系统的话,最好不要加入pass-phrase,因为windows 不支持内置短语.
启动apache会报"Error: SSLPassPhraseDialog built-in is not supported on Win32"错.

如果已经生成,可以用
openssl rsa -in server.key -out srv.key
去除掉pass-phrase.
ps:不要忘了注掉httpd-ssl.conf 下的SSLPassPhraseDialog.

之后生成证书:
openssl req -new -x509 -nodes -sha1 -days 365 -key srv.key -out server.crt -config ..\conf\openssl.cnf
ps:openssl config的路径可能会不一样.

最后,把bin目录下生成的srv.key(最好改下名)和server.crt 复制到别处,如C盘根目录下.

在apache 配置文件httpd-ssl.conf 下定义路径
SSLCertificateFile "C:/server.crt"
SSLCertificateKeyFile "C:/server.key"

再添加好virtuahost,重启apache.即可

如果像我一样,想彻底的抛弃http访问,一律使用https的话,可以考虑利用地址重写达到目的.
编辑httpd.conf文件,加入:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

或者
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://cnserver.homeftp.org/$1 [R,L]

这样都可以了.
现在我就可以对电信的行为表示影响不大了,呵呵

更多SSL/TLS设置,参见:http://httpd.apache.org/docs/2.2/ssl/

关于“某些设置由您的系统管理员管理”

我现在用的是windows 7系统,是去年发布的时候下载刻盘安装的,其实是RTM版,不过和正式版一样.

到现在都没有重装过系统,很稳定 :)

以前我都是关闭自动更新(Windows Update)的,因为我感觉那些东西我根本用不到。而且动不动跳出来很烦人.

当时就进入到组策略里面,把与自动更新的选项 该配置的配置,该禁用的禁用。

这样一来,那个图标彻底的消失在我的系统里。

可是,最近由于微软连续的发布了几个高级别的安全补丁,我便有意重新启用自动更新。

于是,运行"gpedit.msc",依次展开到:计算机配置-管理模板-Windows组件-Windows Update 下,把以前的设置都恢复成默认了.

不过,当我打开控制面板\系统和安全\Windows Update 时,居然显示“某些设置由您的系统管理员管理”,无法自动检查更新。

如图:check lock

但我点击"检查更新"时候,弹出了无法检查的错误.如图:
check fail

真的是很奇怪,我就是用的系统内置管理员身份呀!于是以“某些设置由您的系统管理员管理”关键词搜索了一下,嘿嘿,发现遇到这个问题人还不少呢!!

不过,点看了很多的链接,很让我失望。真是tmd说什么的有。
有的说什么重新注册下两个脚本dll,有说系统里还有个administrator用户的,还有的帖子更是无人问津...

稍微有点的靠谱的是微软旗下的Windows Client 论坛里的说法,说什么启用“删除使用所有Windows Update功能的访问权限”选项.位于 用户配置-管理模板-Windows组件-Windows Update 下.

不过很遗憾,依然没能解决我的问题.囧rz

我真的挺无语的,这么简单的问题,居然没能搜到一个解决方案..这些所谓的大站,比如远景论坛、百度知道、CSDN、搜狗问问到底是干什么吃得?难道里面充斥的都是一些悬而未决的问题?

这么搜下去,估计翻几百页也未必有什么结果了,于是我打开组策略,一个个选项的看下去.
终于让我找到了问题的所在.
就是它,如图:
删除到Windows Update的链接和访问

删除到“Windows Update”的链接和访问 选项,位于 用户配置-管理模板-Windows组件-"开始"菜单和任务栏 下.

把它禁用掉就ok了,也不知道我什么时候启用它的.. 囧rz

现在退出组策略,点击开始菜单里的 Windows Update,果然可以了.看图:
正常检查

ps:希望本篇文章可以帮助那些还在为此问题迷茫的人们。

最后,衷心希望那些活跃在各大论坛高手们,回答别人的问题,不要只是一味的复制和粘贴,多点原创.
我就不信你们如此的心有灵犀,说出的话和思路如出一辙。

初识git

最近看到git这个年轻的SCM(版本控制系统)逐渐流行起来了,很多知名的开源项目都纷纷转移到它的怀抱里,如我们熟知的著名linux桌面环境gnome,还有我最爱的播放器vlc等

而且网上对git的好评也是如潮水一般呀。那么,作为喜好尝鲜的我,情绪自然不会稳定了。

总想去尝试一下,看看究竟如何的好?

由于googecode不支持git,而以git著名的github,我也没有帐号.所以只能在sourceforge上小试牛刀了

以sf为例,首先进入项目页面,找到admin菜单下的feature manage下面,启用git(SourceCode Version Control),就是在它前面打个钩。其实这个时候git repository 就已经初始化好了.

这个时候,如果不想再用其他的SCM的话,把它们前面的钩去掉就可以了(前提是你已经check out了)。

接下来,就是进入members菜单,点击用户名,勾选 "Allow access to Git repository (developer access)"选项,授一下权。

ps:以上操作需要project administrator 身份.

现在,就是导入版本库了。

git 要求用户本地也要有一个版本库,然后再push到远程服务器。这一点让我很不习惯,因为我一般都是直接commit到远程repo的.

因为我在windows 平台,所以还得安装git 的win 版 --msysgit.如果IDE是visual studio 的话,可以直接下载 Git Extensions 的完整版安装,里面包含了MSysGit 和 KDiff3.

之后,进入 git bash,其实就是个MinGW环境.
现在开始初始化本地git repo.

mkdir temp cd temp git init (初始化空版本库 temp) git config user.name "temp NAME" (设置名字) git config user.email "[email protected]" (设置邮箱)

#(添加远程repo 地址.sf 是以 ssh 开头,默认repo 名字是项目unix名,可以改)
git remote add sf ssh://[email protected]/gitroot/TEMP-PRO/TEMP-PRO
git config branch.master.remote sf
git config branch.master.merge refs/heads/master

至此,本地git库建立完毕,并映射好了远程git 库.且merge以本地为主.
当然,这一切均可以通过git extension的菜单完成.

接下来,创建一个hello.c文件,push到远程repo上.

vim hello.c git add hello.c git add . git commit -a -m "this is hello.c" git push sf master #(需要输入密码,如果报 fatal: The remote end hung up unexpectedly 错,可能是ssh地址输入错误. #也有可能是没有生成对应ssh的公钥和私钥到服务器导致的.)

到这步,我已经成功向远程版本库提交了源码.

不过我很快就发现了git的一个毛病,就是无法删除以前提交的文件.
这个真是个问题,万一程序员不小心提交了一下一些私密文件(如密码、艳照之类),哪岂不是糟了!!?
尽管可以 git rm hello.c ,不过在仓库里只是标识了 "deleted",还是可以打开.
谷歌一下,终于找到了一个方案,见 git: forever remove files or folders from history,提供了个shell 脚本.
保存为 del.sh,运行 del.sh hello.c ,嘿还真删除了.
不过 push 的时候,出错了!提示

! [rejected] master -> master (non-fast forward)
error: failed to push some refs to '/path/to/'

说需要先从服务器上pull 一下,oh ,my god...囧rz

好在我有shell权限,直接登录,定位到 /home/scm_git/t/tm/temp-pro/temp-pro,直接删除.草~

最后,给个链接《Git 中文教程》,我还是继续SVN吧.

告别共享上网时代

这是一件值得庆祝的事情,因为我终于摆脱了那些日子,那些每天只有18kb/s的日子,那些登qq都tmd要超时的日子.
想到这里,我心里就开心.

以前我是和几个邻居一起拉得一根2M的宽带,一年一千多,平摊下来大家一起分担.这样算起来,每年每人就都少交了不少.

本来都是出于省钱的目的,认为没什么。可是我错了,和我同一个内网的是两个看电影、电视剧狂人...
他们整天也没什么别的事,就是整天宅在家里(当然,宅 本身我不反对)看片,他们的宗旨就是看遍世界上所有的影视作品.

在我多次的劝告和抗议下,他们无动于衷。我无语.

当然,我也想过要保卫自己的权益,我开始研究路由器等网络硬件的相关知识,知道了什么是MAC地址,端口号上限是65534,还成功的升级过一次路由.
就是因为他们,让我接触了p2p终结者、网络执法官 等这些工具.

我是不是应该感谢他们呢? 囧rz

当然,这些行为只是螳臂当车,无法从根本上改变网速一天天变慢的事实,最后我败了.我退出了.

老子自己出来单拉一根,虽然只有1M带宽,不过较以前的龟速已经是进入天堂了.
现在老子再打开gmail邮箱再也不用使用 “基本HTML视图模式” 了 :)

为了庆祝这个盛事,本人决定这几天从18p2p上挑一些无码的种子,down下来 犒劳犒劳自己.



PS:在本人决定单拉网线之前,曾经还考虑过蹭附近的WLAN,后因种种原因未果.不过,在寻觅的这段期间偶然发现了一款破解AP密码的软件,我试了一下,效果很不错.现提取出来共享给需要的朋友.

地址:http://java-coding.cn/files/wifispoonfeeder.7z

我也来说说射手播放器

最近射手播放器被炒的很火呀,这是不可否认的事实。几乎网上到处是关于它的新闻.
先是什么“在官方博客发表声明谴责QQ player不尊重开源”,后又被细心网友举报自身不遵守开源协议.这次乌龙事件真的搞得射手很没有面子。自己刚刚在大家心目中树立起来的国内开源先行者的高大形象被瞬间击得粉碎.

这也引起了广大的网友的唇枪舌战,很是热闹。
本来我是不打算蹚这趟浑水的,不过心里有些话真的是不吐不快。本人虽说没有对开源事业做过太大贡献,不过也算是一名开源爱好者,对开源的热情也是很高的.

在我看来,这次事件射手的确是不太地道,在自己还没有做到尽善尽美的情况下,还去高调抨击别人。
这种做事手段真的是让明眼人看不过去.

毫无疑问,射手播放器是建立在FFmpeg基础上的,用FFmpeg issue 上某位网友的话来讲,离开了FFmpeg,射手播放器就是一个空壳.而FFmpeg源码本身是基于GPL 和 LGPL 发放的,它要求任何基于它的项目都得按照自身情况,以上述的两个LICENSE中的一个开放项目源码.

网友们发现,射手播放器是遵循前者的,也就是GPL.这点在射手项目的SVN上也是可以看到的。
http://trac.splayer.org/browser/svplayer/License.txt (为此,我还特地的去读了读,为的是看看射手到底是不是被冤枉,还是怎么的.
附 中文译本的地址: http://www.thebigfly.com/gnu/gpl/ )

并且同时发现射手在代码库里面没有提供全部的源码,在某些分支下只提供了编译好的类库.

这个显然是违背GPL协议的(详见第三点的a小点,以及关于源码的定义),当然射手对此也有解释,一堆一堆。
不过纵然你射手有千万个理由,有什么苦衷,你也不能因此不彻底开放源代码。要么你就不要声称自己遵循GPL,你可以去选择更加宽松的LGPL呀,又没人逼你. 古来鱼和熊掌不可兼得. 我认为cnbeta某位仁兄比喻的很恰当,"既想当婊子,又要立牌坊".

为什么人人都能严格遵循(比如大名鼎鼎的Mplayer),而你射手就要搞特殊呢?看到你在FFmpeg issue 上极力的为自己争辩,你要知道你代表是整个中国的开源脸面.我可不希望你也被钉在FFmpeg 的耻辱柱上面。

我认为,作为一个开源爱好者,必须要严格遵循开源协议。如果都像臭名昭著的暴风影音那样,那么开源也就没人再去热衷.

就拿java里面的Spring 框架来讲,如果它是基于GPL发放的话,那么世界上所有的用到它的J2EE项目,都得遵循它,开放所有代码,哪怕没钱赚了也必须得开放源码。
没有为什么,要么你就不要用该框架. 当然也有一些肆意践踏开源协议的,抱着一副死猪不怕开水烫的态度,“我就用了,怎么的吧”.对于这种未开化的野蛮人,我们还能说什么?

当然这只是一个假设,Spring 实际上是基于Apache License Version 2.0 发放的,见下图:

[caption id="" align="alignnone" width="578" caption="spring in frme"]spring in frme[/caption]

这个可比GPL宽松多咯. :)

最后,对射手播放器今后的方向进行观望,不可否认的是,我的情绪已经开始不太稳定了 囧rz