存档在 2010年

告别手工发正式版+注册码的日子

2010年8月23日

手工发正式版+注册码的日子有两年了,一直喜欢这种感觉,刷单,然后发正式版控件,如果是二进制版,再制作注册码,一同发出。。。

我感觉我这人责任心太强了,若是用户付款许久,还不能收到控件,我就会过意不去。。。

所以外出的时候,就怕来单,因为穷啊,一直买不起笔记本。。。

去年我女儿出生后不久,就来了一单,当然是我忙活了好几个小时后,才用手机刷单,发现来单的,看时间是女儿出生10分钟后来的单,虽然事先也将各种正式版发到我的Live.com邮箱里,包括注册机,并且这单是源码版,不需要注册码,但是用手机也没办法处理。我手机里收的是Gmail的邮箱,自己域名的邮箱设了转发至Gmail邮箱。

女儿出生10分钟后来单,很是巧啊,当时女儿的名字还没起好,之前想过叫“来丹”或者“丹来”的,哈哈,结果真的来单了!

女儿是下午出生的,出生后的第一个夜晚,一整夜我都没睡,我妈也没睡,两个人轮流抱着女儿,因为孩子刚出生,环境温度远远低于母体内的温度,当时是2月底,虽然有暖气,但室内温度也只是20多度而已。并且小孩刚出生时候,很多情况下可能会吸入羊水,导致肺内或喉咙里或什么地方有痰之类的东西,所以呼吸的时候听起来感觉不正常,但是新生儿父母经验都很少,都担心,于是就抱着女儿去找护士,护士给进行了一下吸痰处理。之后情况好些,但没多久又反复,于是又去找护士,护士还不错,告诉我没关系的,总吸痰对孩子不好的。

就这样,熬过了一整夜,我前后喝了两罐蓝色装红牛,第二天上午,我睡了一小会儿,下午的时候,抽空跑出去找网吧,结果网吧要身份证,而且还需要二代证,我的是一代证,不能用,我说我就用十分钟就好,但是他们说他们也没办法,没二代证,就需要办理一个网吧实名卡,10RMB,我说给你们5RMB,我就上10分钟网,他们说不是钱的问题,这是“龟腚”,没办法,最后办了一张,结果当然这卡就用那么一次就束之高阁了。

因为我记不起我自己网站域名的邮箱密码,所以只好用Gmail的,将正式版从Live.com邮箱转发到Gmail里,然后再发给用户,并告诉用户,这个Gmail是临时使用的,不是官方邮箱。

后来,又出过两次门,都是去年五一前后,一次是参加大学同学毕业十周年聚会,另一次是参加高中同学毕业十五周年聚会。结果这两次都没来单,因为我的单本就很少,走高价路线嘛。

这回因为开发ActiveX版控件,对FFVCL进行了部分重构,注册码部分也进行了简化。以前是用RSA的,注册码超长,而且除了注册码,还有一个额外的4字节校验码,所以无法使用代理商的自动发送预设注册码的服务,自己也懒得做在线生成注册码的脚本,毕竟使用PHP写RSA算法的注册机不是那么容易的事情。这次经过简化,使用简单的注册码形式,就可以使用代理商的自动发送预设注册码的服务了。

控件新版本开发完毕,制作不同版本的控件,以及生成相应的注册码,然后提交到代理商处,万事俱备,就等来单了!

现在可以不用去管是否来单,再有外出,也不用担心用户付完款拿不到正式版,自己可以呼呼睡大觉去啦O(∩_∩)O哈哈~

拖了两年,终于推出 ActiveX 版视频控件

2010年8月18日

两年半前开始接触FFmpeg,两个月内推出Delphi版视频转换控件,一年后推出视频播放控件,而ActiveX版视频控件一直没时间和精力做,最近痛下决心,奋战月余,终于推出了ActiveX版的视频控件,只是迟到了两年,失去了很多机会。

这一个多月的工作内容,主要是使用Delphi开发ActiveX控件、重构原有Delphi控件、以及写VB6的演示程序、还有控件注册、保护环节。其中重构原有Delphi控件没什么问题,但用Delphi开发ActiveX控件耗费了不少时间和精力,主要受限于Automation规范,特别是Int64整型问题,Automation只支持32位整型,并且写VB6演示程序时候,关于Int64这个问题,也破费周折,不过问题都解决了,结果也算满意,最终的ActiveX控件,在VB6下,控件功能基本能和Delphi版媲美。

经过连续奋战,感到有些疲惫,应该休息几天了。最近也没怎么哄女儿玩,单反相机也坏了,要尽快送去检修,都快一个月没给女儿拍照了。

用批处理自动搞定MinGW+MSYS环境

2010年7月14日

个人习惯,有事没事喜欢升级各种软件,对于MinGW+MSYS环境也一样。

虽然MinGW提供了自动安装工具,不过自己不喜欢,感觉不透明,所以以前都是自己手工下载各个文件包,然后手工进行安装的,所谓安装,其实就是解压各种*.gz和*.lzma的压缩文件包而已。

但这个过程是纯手工的,要到sf.net上一个一个压缩包进行下载,还要找对版本,然后一个一个解压等操作,比较繁琐。

两个月前,在VPS上折腾LNMP环境时候,也是写了一堆Bash脚本,来自动进行源码下载、编译、制作安装包等。Bash脚本比较强大,其中之一就是可以写自定义函数,而DOS批处理文件则相对弱的多,不支持自定义函数这一点,就使得写批处理程序时候,麻烦多多。不过经过这次研究,感觉DOS批处理也还凑合,至少经过折腾,最终还是写出了一套批处理文件,可以自动下载相应文件包并解压安装,从而实现一键搞定MinGW+MSYS环境,也还是比较惬意的。

目前是以wiki形式,专门搞了个网站,来公开这些批处理文件。后续会慢慢增加自动下载、编译FFmpeg的Bash脚本,包括自动下载、编译、安装尽可能多的第三方编码解码库。

这个wiki的网站地址暂不打算公开,没有加外链,只提交给了Google,然后等着看用户都是怎么找到这个wiki的。

2011年3月29日 更新:公开wiki网址 http://www.ffmpegwindows.org

批处理文件下载页面 http://www.ffmpegwindows.org/batchs

我的一天

2010年6月4日

看看我最近每天的大概内容

早上7、8点起床

自己吃早饭、给孩子做早饭,大概就9点了。

喂孩子吃饭,顺利的话半小时,不顺利可能1小时。

给孩子换衣服,准备下楼带的东西,食物、水等。

抱孩子下楼,大概10点左右。

在楼下小区内或附近的小公园带孩子活动,会背着相机,给孩子和其他小朋友拍照。一般要等到12点多,孩子妈下班回来,然后一起回家。

回家吃午饭,这阵子是孩子姥姥帮做饭、室内哄孩子,前一段时间是孩子奶奶。

大概下午1点开电脑,CNSW、989(两个共享软件从业者论坛)逛逛、灌灌水,看看新闻等,大概持续1、2小时。

下午3、4点左右,孩子睡醒。

给孩子做饭、喂饭、准备下楼带的物品。

大概下午5点左右,抱孩子下楼。

这个时段一般就在小区内活动,等孩子妈下班回来,有时候6点多,有时候7点多,然后上楼。(今天孩子妈晚上9点多才回来,最近在单位做什么6S现场管理的杂役工作,忙的要死。)

吃完晚饭,大概晚上8点,给孩子写写博客,CNSW、989逛逛、灌灌水,看看新闻等,偶尔班级同学录、开心网等,其他一些与共享软件无关的网上活动,或者一些家务等等,这样大概就半夜12点了,还有其他一些事情,比如淘米放电饭锅里预约,晾晒孩子衣物(洗衣机已经洗好),小个或大个便、洗个漱什么的,所以往往躺床上时候就半夜1、2点多了。(主要是孩子博客、CNSW、989论坛等耗费时间比较多,989是最近一段时间才访问比较频繁。)

唉,一天时间就这样过去了,基本没时间干什么有利于经济发展的事情啊。。。

折腾了一个多月 Slackware 下的 LNMP(或称 LEMP)环境

2010年5月22日

一个半月前开始使用 Linode VPS,由于对 Slackware 比较感冒,所以选了 Slackware 的发行版,环境是 LAMP。

因为 LAMP 环境在 Slackware 的发行版中有对应的安装包,所以搭建 Web 服务器就比较容易了,找一个 Slackware 的 Mirror,然后就是一些列的 wget 和 intallpkg 相应的安装包。

不过最近流行 LNMP(或称 LEMP)环境,即使用 nginx 替代 Apache 作为 http 服务器,相同环境下 nginx 性能强于 Apache 很多,占用资源也少。其中 PHP 使用 PHP-FPM 即 FastCGI 模块。

网上关于搭建 LNMP 环境的参考资料绝大多数都是在 CentOS 系统下的,并且有一键安装包,出于对 Slackware 的忠诚,开始研究在 Slackware 下搭建 LNMP 环境。MySQL 决定使用 Slackware 自带的安装包,所以主要是研究 nginx 和 PHP 的编译。

不爽的是网上关于 Slackware 下的 LNMP 环境搭建的资料非常少,只找到一个 Slackware 13.0 的英文资料,但 Linode VPS 只有 12.2 版本的,多少有一些出入。此外还有版本选择问题,PHP-FPM 有多个版本,主要是对应 PHP 5.2.x 和 5.3.x,这两个版本的 PHP 编译参数有一些差异。

重要的一点是,我不想在 configure、make 之后直接 make install 来安装,这会搞乱系统,即不能卸载,这不符合我的风格,所以决定研究制作 Slackware 安装包。

此外,这个过程我不想纯手工操作,而是要写成自动化脚本,便于以后重新制作安装包。

由于以前对 Bash 脚本编程了解不多,这次折腾 LNMP 安装包,耗费时间的地方,除了研究 nginx 和 PHP 编译参数外,就是编写脚本了。前前后后写了一堆脚本,除了 LNMP 相关的脚本外,还有工作环境的初始化脚本(如 dir_colors、vim 等)、OpenVPN 自动配置脚本(自动生成服务器端密钥、服务器端配置、客户端密钥、客户端配置等)。

折腾 PHP-FPM 编译参数时候,由于 make 需要比较长的时间,一度走了弯路,即在本地使用 VMware 装了一个 Slackware 12.2 系统,除内核外与 Linode VPS 的 Slackware 配置均相同。结果经过对比,发现我在本地编译 PHP 时候比 Linode VPS 上要慢不少,我机器的 CPU 是 E8300,配置还不算低,可见 Linode VPS 配置还是非常强的,4 核 Xeon 2.5G,Linode 官方在对 CPU 描述的时候,大概意思说你的 VPS 可以使用空闲的 CPU 资源,不晓得我在 make 的时候,同一个服务器上其他的 VPS 会受多大影响。还好,我只是直接 make 来编译,而不是 make -j2、或3、或4,哈哈。

不爽的是,等我基本写好了各种脚本,重新部署一个 Slackware 系统时,发现 Linode 新近提供了 Slackware 13.0 发行版,既然有新版,就不打算用旧版了。于是又折腾了两天,修改脚本,使其适应 Slackware 13.0 的系统。

搞好 LNMP 安装包后,主要工作就是研究 nginx 的配置了,至于 PHP 的配置,比较简单,而 MySQL 优化等以后慢慢研究了。目前 nginx 已经配置好了普通虚拟主机、根目录下的 WordPress 虚拟主机,子目录下的 WordPress 还有一点点不完美,以后再研究。另外 Discuz! 的虚拟主机还没配。

截至目前,我的 FFVCL 主站、FFVCL 博客、自己博客、女儿博客都已经迁移到 Linode VPS 的 LNMP 环境下,还有一个 Discuz! 站尚待研究 nginx 配置。此外,FFVCL 的邮件使用 Google Apps 进行托管。现在可以大声对 LP 说白白了,哈哈。(LP -> Lunarpages 虚拟主机,到期时间是明天,即5月23日。)

P.S. 由于在开始研究 LNMP 时候,Linode VPS 已经启用,为了不影响正在跑的网站,额外又买了一个 Linode 节点,等环境全部搞定后,可以随时 cancel 掉,费用将按天计算,余额退回 Linode 账户内。

题外话,昨天修改域名指向时候,才发现 name.com 的 Private Whois 服务一个月前就开始收费了,标价 7.99 刀每年,现在优惠价 1.99 刀,这着实不爽啊。后来网络搜索相关资讯时,找到一个域名续费时对 Private Whois 免费的优惠码,于是把一堆域名都多续了两年费,现在域名到期时间是三年后了,至于三年后是否还需要 Private Whois 服务,到时候再说了。不过还有三个域名没续费,正在纠结是否还继续养着。

附 nginx 和 PHP 编译参数(PHP编译了尽量多的模块,呵呵)

nginx version: nginx/0.7.65
TLS SNI support enabled
configure arguments:
–user=nginx \
–group=nginx \
–with-pcre \
–prefix=/var/www \
–sbin-path=/usr/sbin/nginx \
–conf-path=/etc/nginx/nginx.conf \
–error-log-path=/var/log/nginx/error.log \
–pid-path=/var/run/nginx.pid \
–lock-path=/var/lock/nginx \
–with-rtsig_module \
–with-select_module \
–with-poll_module \
–with-http_ssl_module \
–with-http_realip_module \
–with-http_addition_module \
–with-http_xslt_module \
–with-http_sub_module \
–with-http_dav_module \
–with-http_flv_module \
–with-http_gzip_static_module \
–with-http_random_index_module \
–with-http_secure_link_module \
–with-http_stub_status_module \
–with-http_perl_module \
–http-log-path=/var/log/nginx/access.log \
–http-client-body-temp-path=/var/tmp/nginx/client_body_temp \
–http-proxy-temp-path=/var/tmp/nginx/proxy_temp \
–http-fastcgi-temp-path=/dev/shm \
–without-mail_pop3_module \
–without-mail_imap_module \
–without-mail_smtp_module

PHP Version => 5.2.13
Build Date => May 20 2010 16:31:02
Configure Command =>
./configure \
–enable-fpm \
–enable-force-cgi-redirect \
–enable-pcntl \
–enable-sigchild \
–enable-fastcgi \
–enable-pcntl \
–enable-sigchild \
–enable-discard-path \
–with-xmlrpc \
–disable-ipv6 \
–enable-inline-optimization \
–prefix=/usr \
–libdir=/usr/lib \
–with-libdir=lib \
–sysconfdir=/etc \
–disable-safe-mode \
–disable-magic-quotes \
–enable-zend-multibyte \
–enable-mbregex \
–enable-tokenizer=shared \
–with-config-file-scan-dir=/etc/php \
–with-config-file-path=/etc/nginx \
–enable-mod_charset \
–with-layout=PHP \
–enable-sigchild \
–enable-xml \
–with-libxml-dir=/usr \
–enable-simplexml \
–enable-spl \
–enable-filter \
–disable-debug \
–with-openssl=shared \
–with-pcre-regex=/usr \
–with-zlib=shared,/usr \
–enable-bcmath=shared \
–with-bz2=shared,/usr \
–enable-calendar=shared \
–enable-ctype=shared \
–with-curl=shared \
–with-curlwrappers \
–with-mcrypt=shared,/usr/bin \
–enable-dba=shared \
–with-gdbm=/usr \
–with-db4=/usr \
–enable-dbase=shared \
–enable-exif=shared \
–enable-ftp=shared \
–with-gd=shared \
–with-jpeg-dir=/usr \
–with-png-dir=/usr \
–with-zlib-dir=/usr \
–with-xpm-dir=/usr \
–with-freetype-dir=/usr \
–with-t1lib=/usr \
–enable-gd-native-ttf \
–enable-gd-jis-conv \
–with-gettext=shared,/usr \
–with-gmp=shared,/usr \
–with-iconv=shared \
–with-ldap=shared \
–enable-mbstring=shared \
–enable-hash \
–with-mhash=shared,/usr \
–with-mysql=shared,/usr \
–with-mysqli=shared,/usr/bin/mysql_config \
–enable-pdo=shared \
–with-pdo-mysql=shared,/usr \
–with-pdo-sqlite=shared,/usr \
–with-pspell=shared,/usr \
–with-mm=/usr \
–enable-shmop=shared \
–with-snmp=shared,/usr \
–enable-soap=shared \
–enable-sockets \
–with-sqlite=shared \
–enable-sqlite-utf8 \
–with-regex=php \
–enable-sysvmsg \
–enable-sysvsem \
–enable-sysvshm \
–enable-wddx=shared \
–with-xsl=shared,/usr \
–enable-zip=shared \
–with-tsrm-pthreads \
–enable-shared=yes \
–enable-static=no \
–with-gnu-ld \
–with-pic \
–with-fpm-conf=/etc/nginx/php-fpm.conf \
–with-fpm-log=/var/log/php-fpm.log \
–with-fpm-pid=/var/run/php-fpm.pid \
–build=i486-slackware-linux