1. Bash里使用getopts解析非选项参数

    getopts是一个Bash built-in,可以用它来实现与getopt(3)一致的参数解析功能。

    注意它和getopt(1)的区别。getopt是一个单独的命令,而getopts是bash内置命令。

    关于option与argument的区别,我这里实在给不出准确的定义,只能根据自己的理解试着解释一下。

    argument是通常所说的命令行参数,在C语言里就是argv数组,根据参数出现的顺序从argv[1]开始依次递增(argv[0]里是被执行的程序本身的程序名)。在Bash里,$0表示脚本的名称,$1开始往后是各个argument。

    option有点混乱。我的理解是:一个Option是以-(hyphen-minus character)或--开头的字符串,它后面有可选的argument,如果有则只有一个。也就是说,一个option由一个或两个argument组成

    根据上面的描述命令行参数(Arguments)可以分为3类(抱歉我这里会用比较山寨的方法来描述这三类,如果有对应的标准名称,请留言指出)

    • Option with an ...
    read more

    There are comments.

  2. Partially blocked by GFW

    yegle.net及其子域名被DNS污染,发生时间北京时间2011年2月20日14时30分左右

    184.105.128.93 yegle.net
    

    Congrats for your being listed as "a good service provider", certified.

    R.I.P. yegle.net & *.yegle.net

    read more

    There are comments.

  3. Mac字幕自动下载器

    射手影音最近做了一件很有争议的事情:将SPlayerX摆上了Mac AppStore。SPlayerX是一个Fork自MPleryX的影音播放器。这次射手为了完全规避GPL协议的限制,将字幕下载部分功能用二进制可执行程序方式释出,以fork运行的方式调用这个名为sscl的二进制文件下载字幕。

    姑且不论其将二进制文件与GPL协议软件捆绑发行是否违反GPL协议以及GPL协议软件与Mac AppStore的协议是否有冲突via。射手这次的做法恰好为所有Mac用户送上了sscl这个大礼,可以使用这个工具自动匹配本地硬盘的视频文件。

    原来的设想是用AppleScript写一个脚本,并在Finder里自动监控特定目录,这样每当某目录下有新视频文件添加时就会自动下载字幕。但是我对AppleScript实在不熟悉,加上相关参考资料太少,遂作罢用bash写了一个脚本。如果有AppleScript高手,请改写之:-)

    果然抛砖引玉,请参考利用Hazel让Mac自动下载电影字幕更加自动化进行字幕下载操作:-)

    sscl的字幕下载目的目录是固定的,所以脚本里就直接Hardcode进去了。

    注意: 射手影音并没有为sscl单独设置一个license,我只能根据SPlayerX本身免费下载认为它是freeware。提取该文件单独运行引起的版权上的争议不在本文讨论范围内。 本文中提到的find、mktemp为GNU findutils和GNU coreutils里的版本,请通过MacPort或其他Port系统安装之后再执行

    功能描述 执行脚本时,在预设的目录内查找mkv和avi文件,过滤掉某些0day release里的sample文件。 对于每个文件,如果不存在对应的.chn.srt字幕文件,就调用sscl进行下载并复制到电影文件所在文件夹。

    使用方法

    1. 下载sscl文件。该文件可以从SPlayer Mercurial源里获取,地址是 ...
    read more

    There are comments.

  4. 在Mac OSX上安装gentoo-prefix

    不想看废话的同学们可以直接跳转到安装步骤

    什么是Ports系统?

    众所周知Mac OSX是一个UNIX操作系统。UNIX操作系统的认证是Open Group给的,只有经过他们认证之后才能自称自己是UNIX操作系统并使用UNIX的商标(毕竟人家这是注册商标,不能随便用)。

    得益于UNIX标准的建立,越来越多在Linux上开发的开源软件已经可以直接在UNIX下编译安装而不需要考虑跨平台问题,这意味着在Mac OSX上也可以享受绝大多数Linux下开源软件的最新版本。

    注意到,我这里提到的是“编译安装”。即使你是一个对编译安装感觉很平常的Linuxer,在Mac下编译安装也不是一件简单的事情,因为你需要自行解决一大堆依赖。有多复杂,你可以尝试安装一次LFS。虽然Linux下常见的包管理系统Mac下没有,但是Mac上有相对于包管理系统来说更加强大的Ports系统(IMO),让这些软件包的安装过程自动化了。

    Ports系统的历史还真不好找,从wiki获得的信息是,这是早期BSD系统就开始有的一套比较“原始”的包管理系统:自动从官方网站下载源码包、解压、打补丁、编译安装,并维护各个软件包之间的依赖关系。使用Ports系统,可以通过自动化方式从源码安装软件,而无需考虑其背后的繁琐操作。

    除了BSD系统上的Ports系统之外,Linux下常见的Ports系统有:Gentoo Portage和ArchLinux ABS。在Mac OSX上也有多个Ports系统可以选择,比较有名的有MacPortsHomeBrew ...

    read more

    There are comments.

  5. 多大个事?-记人人网泄密事件

    有一种逻辑很可怕。在做一些事情的时候,总有人跳出来问:这多大个事?至于吗?

    就像当年举报射手播放器没有遵守GPL,就像人肉某知名“女”推友doublechou其实是个男的。这样的事情,有人总会发问:多大个事?至于吗?你这是什么目的?你怎么又拿出来说事?

    为什么又拿出来说事?因为事情根本没有正面解决,不了了之。同样,这次人人网泄露用户资料事件,目前也处于不了了之的状态,我不希望这件事情不了了之,在这里回放一遍完整版本。

    我这人习惯不好,Gmail里的spam邮件也会一个一个去看标题。9月3日打开邮箱spam的时候发现一封标题为《仅98元!畅想价值1088元一线明星御用摄影艺术总监萧瑶的全程拍摄服务,让你成为第二个性感小S!仅此一次,不容错过!》的垃圾邮件邮件。邮件的抬头是”请使用真实姓名“。

    这个名字很特殊,第一时间让我联想起我某个被人人网封禁的帐号。这个帐号在封禁14天解封后,名字被管理员由原来的yegle修改为”请使用真实姓名“了。至于为什么被封禁,原因很有趣,需要另起一段。

    我自己写了个脚本,用于将twitter发的推自动同步到人人网。众所周知twitter上发的推很多是敏感话题,时不时就会被管理员删除掉 ...

    read more

    There are comments.

  6. 廉价OTP解决方案:yubikey

    @ohsc那里了解到yubikey这个东西。作为信息安全的学生,我的第一反应是:两眼发亮。为什么两眼发亮呢?慢慢解释。

    首先要从什么是OTP说起。

    OTP是One-Time Password的简称,中文对应的准确翻译应该叫"一次一密"。根据香农(这个人…信息论、现代密码学,以及其他乱七八糟东西的发明者,牛逼至极的人物啊!)创立的现代密码学理论,一次一密是不可能被破解的,除此之外所有的其他加密方案都至少能被暴力破解,虽然破解的难度是指数级的。(当然,香农说的一次一密不可破解是有前提条件的,具体参考维基百科上的"一次性密码本"词条)。具体来说,一次一密就是在每次加密会话过程中,对传送的明文使用不同的密钥进行加密,每次使用的密钥是随机、不可预测、不重复使用的,从而保证了加密是绝对不可破解的。

    当然,我说的是简单化的一次一密的实现,实际操作过程中,密钥的长度必须大于等于明文长度,而且密钥必须是可验证的(所以也可以看成是可预测的)。真正的一次一密,等于需要一个安全信道来传送不少于明文长度的密钥,几乎是没有意义的。

    其实生活中已经有很多一次一密的例子,例如中国银行的E-TOKEN、魔兽世界安全令牌、中国建设银行的动态口令卡(纸制),这些都是一次一密的 ...

    read more

    There are comments.

  7. 使用PHP进行HTTP重定向

    在Google里搜"PHP 重定向",这篇日志的排名在第四。但是这篇写得实在太烂了…重写一篇…

    什么是HTTP重定向? 当你访问http://www.yegle.net时,地址栏的地址会自动变成http://yegle.net。当你访问http://ye.gl的时候,地址栏的地址会变成http://yegle.net。这就是HTTP重定向

    一个HTTP请求,返回的HTTP Response Header里,第一行是HTTP的状态码。正常情况下,HTTP请求返回的状态码是200 OK

    正常的HTTP请求,返回200 OK:

    < HTTP/1.1 200 OK
    < Date: Fri, 16 Jul 2010 11 ...
    read more

    There are comments.

  8. Windows下编译OpenVPN 2.1.1

    为什么要编译OpenVPN

    1. OpenVPN官方提供的Windows二进制文件默认是不包含从文件读取用户名密码功能的。
    2. 作为OpenVPN卖家,可以在自己编译的OpenVPN安装包里提供自己的logo等信息

    安装步骤

    注意:以下提到的安装路径皆为示例,如无特殊说明,皆可根据实际情况作更改。

    安装NSIS

    下载链接:http://sourceforge.net/projects/nsis/files/NSIS 2/2.46/nsis-2.46-setup.exe/download

    正常安装即可。如无必要,请选择完整安装。

    安装MinGW

    下载链接:http://sourceforge.net/projects/mingw/files/Automated MinGW Installer

    选择文件列表里的MinGW-5.1.6.exe下载。选择完整安装,安装到D:\MinGW下。

    安装MSYS

    下载链接 ...

    read more

    There are comments.

  9. 简单脚本检查portage安装的包是否有文件丢失

    昨天开机fsck报错,正常fsck修复后丢了好多文件,导致现在系统各种不正常,ssh登录不上

    写了个脚本检查丢失的文件:

    #!/bin/bash
    for package in `eix -cI --only-names`
    do
        for file in `equery f $package`
        do
            FILE=`basename $file`
            if [ ! -e $file ] && [ "x${FILE:0:6}" != "x.keep_" ]
            then
                echo $package;
                break;
            fi
        done
    done
    

    嗯,希望能帮助到其他人.

    read more

    There are comments.

« Page 2 / 3 »

blogroll

social