存档在 2010年3月

Ergohuman Plus 新金豪人体工学电脑椅体验报告

2010年3月18日

宅在家里三年半,电脑椅是重要物件。宅之前有把电脑椅,附近家具城买的,好像¥300块左右吧,太久远,记不清了。

但那把椅子靠背低,久坐头颈累,所以后来在同一个家具城又买了一把高靠背的大椅子,杀价到¥350,坐着还算凑合。

但这把椅子质量不好,椅子腿是铁制焊接的,很粗糙,上面扣了木质装饰,问题出在万向轮上,这个万向轮和椅子腿的连接螺母是焊接的,但焊的质量非常差,用了没几天就掉了一个。只好把椅子腿卸下来,拿到家附近的白钢加工点,花了10块钱把螺母焊上。但没过多久,又有一个万向轮掉了。我也懒得再去修,并且万向轮质量很差,滑动时候声音大不说,还非常费劲。

于是我把最开始那把椅子的腿给卸下来,安到这把大椅子上了。虽然看上去不协调,滑动声音也不小,但旧椅子腿滑动情况还凑合。后来椅子两边的扶手都松动了,个别螺丝也掉了,害怕女儿不小心夹到手,干脆就都暴力拆掉了,然后就这么一直凑合用着。

但好景不长,终于连凑合也不能凑合了。

大年初二晚上,我正在CNSW论坛帖P183机箱图,身子向后一靠,我就连人带椅子整个仰过去了。椅子转轮断了一根,电脑桌的键盘托在我倒下去时候被我一脚踢下来了,微软4000键盘也借着电源线悬空了。

春节前,白天我一个人带孩子,我用电脑时候,女儿经常围着椅子转圈圈,想一下真是后怕。倒下去时候到也没什么感觉,椅子很大,椅子底部侧边先着地,内有海绵,很软,而且倒下去后,趟在那里感觉还比较舒服,呵呵。

本来春节前淘宝拍了Ergohuman B01的椅子,但由于举棋不定,所以买晚了,因为物流放假,春节前不能到货,就退款了,想等春节后再买,这回椅子挂了,无论如何都要买椅子了。

这是案发现场,手机拍的,50mm镜头拍不下整个现场,N73焦距5.6mm,够广角

以下是50D拍的,高靠背大椅子+旧椅子腿,旧椅子腿是塑料材质的,估计是年久老化发脆了



由于 Ergohuman 的椅子比较重,37公斤,所以走快递会非常贵,而走物流的话,卖家包物流,我家附近有一个德邦物流营业部,但德邦上班较晚,所以从初二椅子挂掉,等到初十,才拍下 Ergohuman 的椅子。不过因为椅子挂掉的缘故,无形中增加了购买新椅子的愿望,所以就没要 B01 型号的,而是选了新金豪,当然价格高了很多。

拍下的新金豪,本来说要黑色的,但商家说黑色的没有现货,暗灰色的有现货,如果订购的话,大概要20天左右订货期。因为中高端型号一般都是厂家根据卖家订单进行加工,然后由厂家直接发出。想想旧椅子挂掉后,一直坐餐椅,非常之不爽,所以考虑暗灰色就暗灰色吧,早点到货是关键。

但一周过去,淘宝看,卖家还没有发货,联系卖家,卖家说厂家把型号搞错了,现在已经修正了订单,并给我申请了加急,但那也还需要两周左右才能到货。卖家态度还不错,说可以退单,或者再优惠一点,或者送赠品,我最后选了赠品,脚踏和手托,不过卖家前天才发货,还没收到。

于是又开始漫长的等待,终于,3月11日,收到德邦物流发件短信,哈哈,又开始新的一轮等待了。结果运气不好,赶上前两天沈阳下大雪,物流车辆受阻,后来物流车辆从锦州先到的大连,之后才到沈阳,再从物流中心到物流营业部,已经3月17日了,迟到了两天。

3月17日,即昨天,刚好二月二,从大年初二旧椅子挂掉算起,整整坐了一个月餐椅,真是痛苦啊。等待物流的时候,每天要到物流网站查询N次物流车辆行进情况,期盼之情溢于言表啊,刷椅子比刷单还勤快N倍。但上午按例睡觉,中午才起,考虑到物流查询说货物重37公斤,恐不好搞回来,老婆就找了两个同事帮忙,下午4点,我的新椅子终于搬回家了!

像上次P183机箱一样,女儿照例扑过来先看个究竟

估计安装过程会受女儿严重干扰,老婆刚好也想抱女儿下楼转转,等女儿下楼后,我就开始动工了。

椅子拿回来的时候,外包装已经拆开,扔在物流营业部了,否则无法弄回来。拆开外包装后,除了上面那两个纸箱外,还有下面两个部件。

椅子靠背

椅子腿

拆开小纸箱,里面是安装用螺丝,带一个外六角扳手,最下面的2颗螺丝是备用的

小纸箱里的主要部件,即椅子扶手,宣称4D扶手,上下、左右、前后、旋转,四个维度可调

拆开大纸箱,是椅子底座,以及气杆和万向轮

拆开底座包装,底座背面那个产品光盘和说明书,光盘和说明书都是英文的

椅子底座正面,气杆和万向轮

拆去椅子腿的包装,新金豪一个明显的外观变化,旧的是直线型的腿,新的是弧形

把椅子腿翻过来,椅子的支撑部件都是铝合金的,做工非常好,这个腿不会断了吧

近拍一张翻过来的椅子腿

拆去椅子靠背的包装

椅子靠背正面

万向轮近拍,质量不错,滑动无声,而且非常容易滑动

安装才刚刚开始,把万向轮安装到椅子腿上,用力一按即可安装上

把气杆装入椅子腿,轻轻放入即可

气杆近拍

关于气杆,总有人排斥,举例说网上的爆菊事件,其实这样完全是因噎废食,那个事件中的椅子,是非常普通的那种电脑转椅,估计质量也不怎么样。换个角度来说,网上看到过的车祸照片多了去了,尤其是很多日系车,还有各种交通工具,包括飞机,每天发生的各种交通事故不计其数,但是我们谁也没有因此而拒绝乘坐各种交通工具吧。

底座低杆安装孔,搬起底座,对准气杆,轻轻放入即可

安装扶手,每个扶手只需要一颗螺丝即可

最后,安装靠背,需要四颗螺丝固定到底座上,安装完毕,女儿已回,第一时间体验爸爸的新椅子:-)

经过一天的熟悉,调整,体验,最后简单总结如下,仅供各位参考。

1、滑

电脑转椅的主要一点,就是滑动,这款椅子所配的PU万向轮,质量不错,滑动无声,且非常顺畅,脚轻轻一用力,椅子随即就到位。

2、静

除了万向轮安静外,因整体做工、材质都比较好,所以身体动的时候,椅子几乎没有什么声音,包括后仰的时候,也是一样安静,不像我以前的椅子,稍一动弹,吱呀作响,像我这样习惯深夜工作的,安静的椅子非常重要,不会影响到他人。

3、高度

椅子气杆降到最低,感觉坐着还是稍稍有点高,但基本还可以,我身高165,不过商家赠送脚踏,可以解决此问题,所以如果身高低的,购买这把椅子时候最好弄个脚踏。

4、网布

网布的好处是夏天的时候透气,不热,但冬天,室温低的时候,就没皮面的有优势了,像我家暖气,在三月份的时候,供暖就不好了,且我家在顶楼,加上据说楼下没有开栓采暖,所以温度也要低一些,这样半夜的时候,背部感觉凉嗖嗖的,在靠背上搭了一条浴巾,情况好些。但从触感、舒适度方便,皮面的肯定比网布的好些,但我感觉网布的也还可以。尤其是网布的在室温低时候,可以想办法改进,比如我这样搭浴巾,或者多穿件衣服。而皮面的在夏天室温高的时候,就没有好办法解决热的问题了,当然有空调固然无此问题。另外,全皮面的大概比全网布的贵500块左右。

5、调节

前面说过了,扶手4D调节,感觉还不错。坐垫可以前后调节,坐垫角度(前倾后倾)也可调节,不过角度调节仅限新金豪,旧款不能调节。靠背(或说背靠)可调节高度、角度、后仰软硬度。腰靠和背靠铰接,随背靠高度调节。头靠可调节高度、角度,但高度调节需要用点力气,并且个人感觉头靠还不够前倾,很多时候,会把头凑向显示器,头靠就不起作用了。此外就是气杆调节坐垫高度了。

6、做工

没的说,一个字:好。

7、颜色

个人觉得还是黑色的好,像我这把,网布颜色没问题,但扶手的话,容易显脏。

8、值不值

这个问题大家比较关心,而这个问题是比较主观的一个问题,每个人的视角都不一样,所以每个人的答案也都不尽相同。就像我的FFVCL控件一样,不少人觉得便宜、划算,而一些人则认为较贵,个别人还会说,我用你这个控件好长时间才收回成本、转换产品不好卖云云。其实呢,FFVCL给每个客户提供的东西都完全一样,就像我这把椅子,厂家生产出来,排除次品率问题,也都是一样的,有些人可能一辈子都会因为觉得价格太贵而不会购买,有些人可能眼睛眨都不眨就买了,就像CNSW的某牛,本来是帮别人去看车,结果自己买了部Z4当玩具玩,然后又是911 Turbo Cabriolet,再然后又是Benz AMG。帮我去提货的,我老婆的两同事说,看样子几百块肯定是值的,言外之意是不值几千大毛了,但我问我老婆,说你同事刚买了件外套,花了4k块,你说我的椅子值还是她的外套值,老婆回答:那当然是椅子值了。

CNSW不少人说我这椅子太贵了,但我不这么认为。我宅男三年半,一件外套都没买,主要穿睡衣,因为不需要外套,冬天半个月都不一定下一次楼。但是椅子每天要坐10 几个小时,价格虽高,但物有所值。还有像微软4000人体工学键盘这样的东西,每天都在用,超值。一把新金豪椅子,基本可以说就是一平米的房子而已。而房 子大几平,小几平,你基本是感觉不到的。而一把人体工学椅子,对长期坐在电脑前的人来说,是非常必要的。如果万一运气差,患上腰椎间盘突出,那你就知道人 体工学椅子是否贵了。

9、新款OR旧款

这个问题也是主观问题,我想大多数人可能倾向于新款,商家也善于用利于这一点适时推出新产品,就像众多CNSWer一样,产品总要时不时的升级一下,更有甚者可能只是改一下版本号而已。很不幸,我是倾向于追新的,所以我最终买了新款。经过一天体验,感觉应该还是旧款实惠很多,如果上天给我再来一次的机会的话,嘿嘿,我还是会选择新款:-)

(椅子是在淘宝买的,网店地址 http://shop35910590.taobao.com

写了两周多的PHP邮件一对一群发系统

2010年3月13日

由于我的控件给客户升级的时候是发送邮件,最开始时候是手工使用BCC暗送模式群发,结果有一次疏忽,把邮件列表粘贴到To里面了,结果那组客户互相都知道了邮件地址,很是抱歉。好在客户比较少,影响不大,大家也比较不错,也没追究我责任啥的:-)

刚开始只一个Converter控件,还好说,后来多了Player控件,然后二者组合,加上二进制版、源码版,以及国内和海外需要分开发送,3 * 2 * 2 = 12 组!

手工发送麻烦不说,费时费力还容易出错,所以找了个一对一群发软件,即GroupMail来发升级,感觉还可以,但有两个小问题:1、是要发12组,要创建12个邮件,也挺麻烦的;2、由于二进制控件包比较大(最大的一个组合有2.2M),所以在本机上发送也比较慢。

于是于是乎,我大概三周前,开始着手尝试自己写一个Web方式的邮件一对一群发系统。自己写的原因也有二:1、是网上看了几个Mailing系统,都比较庞杂,不喜欢,个人风格喜欢简约的;2、程序员的毛病,代码苦力的命,喜欢自己写代码玩。

对PHP还算比较熟,从刚开始接触PHP算起,也有10个年头了。而且机缘巧合,两年多前刚开始共享没收入时候,接了两次对日外包的活,用的是 CakePHP,一个源自RoR的PHP框架,感觉这个框架还不错,配合MySQL使用相当方便,只是CakePHP框架比较大,运行起来比较慢,当然,很小的访问量肯定是没问题的。而发送邮件采用了PHPMailer类库,支持多种发送方式,包括SMTP,并且支持TLS安全链接,可以使用Gmail账户发送邮件。

但我着手开始写的时候,定位就是自用,所以索性没使用MySQL来做数据存储,而是自己建立了一个文件级的数据接口,采用INI格式,这样也方便手工修改数据。但自己写数据存储接口,增加了一些工作量,加上自己比较追求简洁,虽然代码量不大,但反复修改完善,也花了不少时间,怎么也有两周多吧。其中独立函数约300行,Model不到2000行,Controller约2200行,View算代码行就更没意义了,大约600行吧。

PHP这种脚本类的语言,写起来比较容易,加上使用CakePHP框架,就更加简单了,按照MVC的模式,也利于思考,只是PHP一段时间不用,API都忘光,好多都是用到时候Google之,CakePHP以前使用也没深入了解,代码达到预期效果,就“妥了”,这次一边写代码,一边查看CakePHP在线手册,或者直接看框架源码,多少比以前能多利于了一些框架提供的便利处,但貌似也只是仅仅利用了一少部分而已,感觉CakePHP还有很多的封装好的便利性没用到。

现在系统还很简陋,比如不支持HTML格式邮件,不支持Ajax方式,虽然这些都不难实现,但逻辑层面已经完善,并且目前来说PHP或说CakePHP也不是主业,还是不要过多耗费时间为好。

目前系统基本可以正常工作,并且满足了自己的初始需求,即:1、方便性,Web方式比GUI桌面方式灵活,无需多言;2、快速性,因为系统运行在网络主机上,发邮件时候直接使用主机自己的邮件服务,所以不存在网络传输瓶颈,发邮件的过程几乎不需要时间。目前系统工作方式是刷新一次页面,发送一封邮件,可以手动刷新,也可以自动刷新。如果是刷新一次页面,发送多封邮件,那就更快了。

下面贴张本系统“处女发”的截图

在Windows下编译FFmpeg详细说明

2010年3月11日

【前言】

本文参考网上大量资料,经整理而成,并经实践验证,最后更新日期2010年3月11日。另外本人使用开发工具为Delphi,不会VC,所以没有编译VC相关的lib库部分。

本文搭建MinGW+MSYS环境路径分别假设为C:\MinGWC:\MSYS,并且为纯手工安装,即下载相应的压缩包,直接解压到相应目录。

本文链接——http://www.codecoolie.com/ffmpeg/compile-ffmpeg-under-windows/

本文作者——CodeCoolie

【简介】

■FFmpeg

http://www.ffmpeg.org

FFmpeg是一套用于录制、转换和流化音频、视频的完整解决方案,其中包含一组叫做libavcodec的领先的音频、视频编码解码库。FFmpeg虽然是在Linux平台下开发的,但可以在包括Windows在内的大多数操作系统下进行编译。

■MinGW

http://www.mingw.org

在Windows下编译FFmpeg所需编译环境是MinGW,是Minimalist GNU for Windows的缩写。MinGW包含Windows平台头文件、GCC、以及一些GNU工具。

■MSYS

http://www.mingw.org/wiki/msys

MSYS是MinGW的Shell环境,是Minimal SYStem的缩写。MSYS提供了一些开发工具,如make等。

【编译环境】

■MinGW

http://sourceforge.net/projects/mingw/files/

下载如下压缩包:

GNU Binutils:binutils-2.20.1-2-mingw32-bin.tar.gz
MinGW Runtime:mingwrt-3.18-mingw32-dev.tar.gz
MinGW API for MS-Windows:w32api-3.14-mingw32-dev.tar.gz
GCC Version 4:gcc-core-4.2.1-sjlj-2.tar.gz(GCC 4.4有bug,将x264、xvid等与ffmpeg一起编译时候GCC会崩溃)

将上述压缩包按顺序解压到同一个目录下即可,例如解压到C:\MinGW

复制或重命名如下文件,其实就是去掉sjlj后缀:

从C:\MinGW\bin\gcc-sjlj.exe到gcc.exe

NOTICE:libiberty.a使用GNU Binutils包里较新的,而不是GCC Core包里的

■MSYS

http://sourceforge.net/projects/mingw/files/

下载如下压缩包:

msysCORE-1.0.11-bin.tar.gz
msysCORE-1.0.13-2-msys-1.0.13-bin.tar.lzma
make-3.81-2-msys-1.0.11-bin.tar.lzma
coreutils-5.97-2-msys-1.0.11-ext.tar.lzma(只需要pr.exe,configure ffmpeg时候用到)
vim-7.2-1-msys-1.0.11-bin.tar.lzma(不打算使用vi可以不装)

将上述压缩包按顺序解压到同一个目录下即可,例如解压到C:\MSYS

■MinGW+MSYS

编辑C:\MSYS\etc\fstab文本,指定MinGW在MSYS下的挂接目录

C:/MinGW /mingw

■yasm

编译x264时候需要

http://www.tortall.net/projects/yasm/

下载:http://www.tortall.net/projects/yasm/releases/yasm-0.8.0.tar.gz

解压,编译安装:

./configure –prefix=/mingw
make
make install

【基本库】

■zlib

http://sourceforge.net/projects/mingw/files/

下载如下压缩包:

MinGW zlib:libz-1.2.3-1-mingw32-dev.tar.gz

将其解压到C:\MinGW

删除C:\MinGW\lib\libz.dll.a(否则会使用动态链接,需要libz.dll)

■bzip2

http://sourceforge.net/projects/mingw/files/

下载如下压缩包:

MinGW bzip2:bzip2-1.0.5-2-mingw32-dev.tar.gz

将其解压到C:\MinGW

删除C:\MinGW\lib\libbz2.dll.a(否则会使用动态链接,需要libbz-2.dll)

■SDL

http://www.libsdl.org/

编译ffplay时候需要

下载:http://www.libsdl.org/release/SDL-devel-1.2.13-mingw32.tar.gz

解压,修改Makefile:CROSS_PATH := /mingw

编译安装:make cross

【FFmpeg基本编译】

源码取得:svn://svn.mplayerhq.hu/ffmpeg/trunk

配置编译:假设安装路径为/FFmpeg/Release

./configure –prefix=/FFmpeg/Release –enable-memalign-hack
make
make install

【编解码库】

假设第三方库安装路径为/olibs

■libgsm

GSM support via libgsm

GSM 06.10 lossy speech compression

http://user.cs.tu-berlin.de/~jutta/toast.html

下载gsm-1.0.12.tar.gz

解压,修改Makefile中的CC = gcc -ansi -pedantic为CC = gcc

编译安装:

make

编译到后来会出错,但库已经编译完成,用如下命令拷贝即可

cp lib/libgsm.a /olibs/lib/
cp inc/gsm.h /olibs/include/gsm/

ffmpeg编译参数:–enable-libgsm

■libmp3lame

MP3 encoding via libmp3lame

http://sourceforge.net/projects/lame/files/

下载lame-3.98.3.tar.gz

解压,修改lame-3.98-3/libmp3lame/i386/Makefile.in中下面这行

$(ECHO) “non_pic_object=’$*.o'” >>$@

$(ECHO) “non_pic_object=’ .libs/$*.o'” >>$@

编译安装:

./configure –prefix=/olibs –disable-shared –enable-static –disable-frontend
make
make install

ffmpeg编译参数:–enable-libmp3lame

■opencore-amr

AMR-NB de/encoding、AMR-WB decoding via libopencore-amrnb

http://sourceforge.net/projects/opencore-amr/

下载opencore-amr-0.1.1.tar.gz(0.1.2编译需要g++、libstdc++.dll.a

解压,注释掉以下Makefile中的几行

./opencore-amr/amrnb/Makefile
install: libopencore-amrnb.a $(SHLIB)
install -d $(DESTDIR)$(PREFIX)/lib
install -m 644 libopencore-amrnb.a $(DESTDIR)$(PREFIX)/lib
# install $(SHLIB) $(DESTDIR)$(PREFIX)/lib
ifneq ($(shell uname), Darwin)
# ln -sf $(SHLIB) $(DESTDIR)$(PREFIX)/lib/$(SONAME)
# ln -sf $(SONAME) $(DESTDIR)$(PREFIX)/lib/libopencore-amrnb.so
endif

./opencore-amr/amrwb/Makefile
install: libopencore-amrwb.a $(SHLIB)
install -d $(DESTDIR)$(PREFIX)/lib
install -m 644 libopencore-amrwb.a $(DESTDIR)$(PREFIX)/lib
# install $(SHLIB) $(DESTDIR)$(PREFIX)/lib
ifneq ($(shell uname), Darwin)
# ln -sf $(SHLIB) $(DESTDIR)$(PREFIX)/lib/$(SONAME)
# ln -sf $(SONAME) $(DESTDIR)$(PREFIX)/lib/libopencore-amrwb.so
endif

编译安装:

make CC=gcc
make install PREFIX=/olibs

ffmpeg编译参数:–enable-version3 –enable-libopencore-amrnb –enable-libopencore-amrwb

■libogg

供libvorbis和libtheora用

http://www.xiph.org/downloads/

下载libogg-1.1.4.tar.gz

解压,编译安装:

./configure –prefix=/olibs –disable-shared
make
make install

■libvorbis

Vorbis encoding via libvorbis

http://www.xiph.org/downloads/

下载libvorbis-1.2.3.tar.gz

解压,编译安装:

./configure –prefix=/olibs –disable-shared –with-ogg=/olibs
make
make install

ffmpeg编译参数:–enable-libvorbis

■libtheora

Theora encoding via libtheora

http://www.xiph.org/downloads/

下载libtheora-1.1.1.zip

解压,编译安装:

./configure –prefix=/olibs –disable-shared –with-ogg=/olibs
make
make install

ffmpeg编译参数:–enable-libtheora

■libx264

H.264 encoding via x264

http://www.videolan.org/developers/x264.html

ftp://ftp.videolan.org/pub/videolan/x264/snapshots/

下载最新的源码包

解压,编译安装:

./configure –prefix=/olibs
make
make install

ffmpeg编译参数:–enable-gpl –enable-libx264

■libxvid

Xvid encoding via xvidcore

http://www.xvid.org/

下载xvidcore-1.2.2.tar.gz

解压,修改:

./build/generic/configure: “libxvidcore. <- “xvidcore.

编译安装:

cd xvidcore/build/generic
./configure –prefix=/olibs –disable-shared
make
make install

删除/olibs/lib/libxvidcore.dll

ffmpeg编译参数:–enable-gpl –enable-libxvid

■libfaac、libfaad

ffmpeg内置已经支持aac编码、解码,不需要libfaac、libfaad了,而且libfaac是nonfree的,nonfree是unredistributable即禁止发布

【FFmpeg高级编译】

假设安装路径为/FFmpeg/Release,假设第三方库所在路径为/olibs

配置编译:

./configure \
–prefix=/FFmpeg/Release \
–disable-debug \
–disable-static \
–enable-shared \
–enable-gpl \
–enable-version3 \
–enable-avfilter \
–enable-avfilter-lavf \
–enable-memalign-hack \
–enable-avisynth \
–enable-libgsm \
–enable-libmp3lame \
–enable-libopencore-amrnb \
–enable-libopencore-amrwb \
–enable-libtheora \
–enable-libvorbis \
–enable-libx264 \
–enable-libxvid \
–extra-cflags=-I/olibs/include \
–extra-ldflags=-L/olibs/lib
make
make install