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

2010年8月18日 由 CodeCoolie 4 条评论 »

两年半前开始接触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日 由 CodeCoolie 2 条评论 »

个人习惯,有事没事喜欢升级各种软件,对于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日 由 CodeCoolie 7 条评论 »

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

早上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日 由 CodeCoolie 6 条评论 »

一个半月前开始使用 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

启用CodeCoolie.com域名,同时主机转移到Linode VPS

2010年4月21日 由 CodeCoolie 4 条评论 »

两周前搞到了CodeCoolie.com域名,然后买了Linode的VPS主机,这几天一直在折腾VPS,昨天晚上把博客也迁移过来了。

下面的帖子原文发表在CNSW论坛,此处略有删节。

《两年半前的“梦想”——志在必得的CodeCoolie.com抢注过程》

http://www.cnsw.org/bbs/thread-98500-1-5.html

【缘起】

两年半前,经朋友介绍,在CNSW论坛注册了用户。注册论坛前,在网上各处用过的马甲(不包括临时性马甲)不少,但都不想用在CNSW,于是苦思冥想,想出了CodeCoolie这个ID,遂注册。

【两年半前的手工“抢注”】

注册论坛后,突然想看看马甲同名域名是否能注册,结果发现处于赎回宽限期,遂开始关注,并学习域名以及相关抢注信息,并且由于计算马虎,在域名掉下来前一天就开始熬夜,但熬了两夜,结果当然是没能注册到了。然后这个域名貌似就被加入了那种广告联盟,好像叫域名停靠domain park吧。

虽然当时就知道有专业的域名抢注代理公司,但当时离职一年半,经济紧张,哪里有米找代理公司抢注啊。

【两年半后终于到手】

前几天,即4月1日,查询几个域名,无意中又查了下这个domain,发现状态为pendingDelete,立即产生了一定兴趣,但并没有马上想花钱抢注,只是心里想,要是能注册到多好啊。

YY了几天后,即4月6日上午,突然有欲望想搞到,花钱点钱就花点钱吧,毕竟这个ID自己还是非常喜欢的。于是随手搜了一下,随便找了个抢注代理,下了 backorder单。

下单之后,对这个domain的拥有欲望越来越强,于是继续Google学习抢注,得知我先找的那个代理虽是资历较老的老大,但若志在必得,最好三大家抢注代理商都下backorder单,思考良久,咬咬牙,接连又在其他两家代理商下了单。然后做好打算,若无旁人参与,直接抢得,那是最好,若是有旁人参与bid,则我只加最低一档竞价,最后是否得到就靠天意了。

打定主意之后,就在CNSW论坛灌水,然后睡觉,不过睡的也挺晚,凌晨2点才睡。早上醒来,看手机短信,看到凌晨5:22招行信用卡消费69$的短信,知道已经得手了!吃过早饭,打开电脑,收邮件,收到NameJet发来的Order Confirmation,告知三个工作日后可以拿到,不过通常用不上三天。

【抢注过程简要说明】

关于域名状态,可以参考下面这个图,很不错。在域名pendingDelete 5天期限到了之后,域名才最终被删除,貌似国内称为“掉下来”,即drop。不同的域名类型具体删除时间不同。在域名掉下来那一瞬间,如果是好米(搞域名的管domain叫米),将有很多很多的抢注者(代理),所以好米,凭手工抢注到几乎是不可能的。其实代理商并不是自己抢注,好像都是和域名注册商结成的联盟,由域名原所在注册商负责搞到,然后再转给抢注代理商,最后交给成功抢注者。如果抢到米的代理商处,抢注者多余一个,则开始竞拍,价高者得。

我前后在三个比较大的代理商处下单。

1、Pool.com 注册账号即扣掉60$,网上查询到,说是预授权,类似住酒店时候的房费押金,到时候如果抢注不到,会退回信用卡内。
2、SnapNames.com 注册账号扣掉1$,这个不清楚是验证信用卡,还是注册费。backorder费用是59$。
3、NameJet.com (eNom旗下)注册账号扣掉1$,同上,也不清楚是否验证信用卡,还是注册费。backorder费用是69$。

最后由NameJet抢注得到。1$+69$=70$哇咧哇咧

域名生命周期图
域名生命周期图