Scratz's profileScratz 的小果园PhotosBlogListsMore Tools Help

Blog


    5/29/2007

    南京虐狗

      有“通缉”烧狗人的,他们认为虐杀动物(一小部分,也许不包括人)是很残忍的行为,烧狗的人该判死刑;有为他们辩护的,指责那些“极端动物保护主义者”山西矿难无辜死了那么多人都舍不得放一个屁,烤熟了区区一条流浪狗怎么就激发了他们的“义愤”呢?
      当然,他们在夏天都一掌拍死了不少苍蝇蚊子,一年四季整翻的老鼠蟑螂恐怕也不在少数,猪牛羊鸡鸭鹅什么的肉也吃得不少了。之所以有人要维护“狗权”而不顾什么“苍蝇蚊子老鼠蟑螂猪牛羊鸡鸭鹅权”,甚至不顾人权,一是因为此事件确实恶劣,但更重要的是现在人命好像就不怎么值钱了。
      自古以来,就有“人命关天”这种说法,但是最近发生的一些事件,例如交通肇事二次碾压,北京的“死亡指标”等等,似乎已经有些把人架空了。如果真的有哪位疯子杀了那几个烧狗的,我等着看有多少人要辩护其是“精神病患者”,毕竟还没有“杀狗偿命”的法律。
      那我们从更高一个层次来看看——地球上弱肉强食的生物界。很多人去动物园看过老虎吃活兔子吧?兔子可爱不亚于狗吧?有没有人通缉动物园“养虎为患”的人呢?生物界中同类自相残杀的很多,而人类站在顶处,拥有最强的智慧和力量,自相残杀的惨剧恐怕不输给其他任何生物。扬言要干掉烧狗人的人,还想继续推波助澜这些惨剧吗?
      每年都有无数人死于非命,却无法引起足够的重视,这已经说明现在的有些人已经对死人很麻木了,习以为常了。偶然弄死了一条狗,虽然其恶劣行为值得指责,但又往往有一大帮人趁机起哄,为了什么呢?是真的要为狗申冤报仇还是为了释放压抑的神经?
      这不是什么“一切生物平等”的问题,这是人自己的悲哀:不能施虐于人则施于物,若能施虐于人则倍施之。
    5/27/2007

    说说张纪中的金庸戏

      现在骂张纪中似乎已经成了一种潮流和时尚。我以为张纪中很冤枉的,至少绝没有某些偏执狂说的那么垃圾。
      俗话说“万事开头难”,张纪中坏就坏在开了一个烂头,把一部多少还有些寓意的《笑傲江湖》改编得一塌糊涂。老版本的《笑傲江湖》我没看过,但是原著我看了,张纪中的确做了亵渎的事。另外剧中的武打场面短镜头太多,像我这种喜欢看闹热的就很不满意。被骂是活该。
      接着是 03 版《射雕英雄传》。原著、83 版、95 版我也都看过,最新的 07 版看了些图片觉着不爽,略过。我最先看的是 95 版,和老爸一样最喜欢朱茵演的黄蓉,但画面很昏暗模糊,场面很小。接着在学校看完了 03 版,场面真的很大,武打也比 95 版和上一部《笑傲江湖》好了很多,但大主角郭靖和黄蓉竟然被李亚鹏和周迅搞成那副模样,其他角色表演再到位也无可弥补,从而造成了整部戏的失败。放假回去的时候,某电视台也正好在播,我到表姐家去,她说新版的看了一点而太难看了,就租了“经典”的 83 版来放。但是,那哪能看啊!场面非常粗糙,武打动作也是“有板有眼一招一式”的。特别是降龙十八掌,洪七公有个黑背景的分身特写,开始的时候表姐看得很来劲,但多这么几次就低估了:“怎么又是这个动作?”最后我跟她说,03 版打架很好看的,于是换到电视台去,没看完的碟子也还了。
      然后是《天龙八部》。我认为,全面超越黄日华版本,不再多说;说也没用,我的观点不会变。
      然后是《神雕侠侣》和现在的《碧血剑》。总的说来,已经没有了《笑傲江湖》和《射雕英雄传》的败笔。
      有人老是嚷嚷张纪中不把金庸的作品“糟蹋”完不收手。但金庸本人一直支持张纪中啊,所以更有甚者把金庸也一起骂了。此类人,一定喜欢港版,且基本上都喜欢那种港式的“吃醋”和“调情”;说破了,就是一群“肥皂剧”的粉丝。港版的金庸剧全面注重“情”,在原著的基础上添油加醋,一对男女在一起边开始唠叨个没完;对“侠”和“义”着墨很少,理由很简单,没钱,拍不出那种大场面。现在有钱了,就变成王晶的新版《雪山飞狐》那种“恶搞”。武侠不是情圣,所以港版的金庸戏偏离了原著,张纪中则越来越忠实原著了。
    5/25/2007

    NetBeans 5.5.1 Now Available!

    NetBeans.org announced the final realease of NetBeans 5.5.1 yesterday. Version 5.5.1 is a bug-fix of version 5.5. Although version 6.0 M9 can be download now and will soon goes to beta test, developers expecting stability should use this 5.5.1 release.
        NetBeans is now definitely a tailer-made platform for Java development, and supports C/C++ and even more languages. I have been used it since my first fly to Java. I won't compare it with Eclipse, JBuilder, or any other Java IDE. There are enough many articles on this topic. To find it out, try it.
     
        My boss had noticed me that I should use C/C++ for seamless and comfortable integration with other C/C++ developers who program on something like DSP. To prove he's wrong, I sucessfully developed an application with NetBeans to interact with them very friendly. Now boss always says tome, "Good job! The GUI is very pretty."
        Today boss said that we might migrate our projects to non-Windows OS, such as Linux. I'm glad my Java code is platform independent. Maybe I don't need to change anything, but my colleagues who write PC programs in C/C++ may be going to face a lot of troubles.
        Thanks Java and thanks NetBeans! They ease my work.
    5/20/2007

    1982 年第三届金酸梅电影奖

     
    最差影片:《仁川!》(一部演绎文鲜明的 MGM-UA/A 片面性作品),制片人三泽一心。
    最差男主角劳伦斯·奥利弗,《仁川!》。
    最差女主角皮亚·佐多拉,《蝴蝶》。
    最差男配角埃德·麦克马洪,《蝴蝶》。
    最差女配角艾琳·奎恩,《安妮》。
    最差导演肯·安纳金,《海盗的故事》;泰伦斯·杨,《仁川!》。
    最差剧本:《仁川!》,罗宾·摩尔和莱尔德·科尼格编剧。
    最差新人皮亚·佐多拉,《蝴蝶》。
    最差“原创”歌曲:《海盗的故事》中的《抽水和吹风》,特里·布里顿、B.A.·罗伯逊和苏·许弗林写作。
    最差配乐:《海盗的故事》,吉特·海因作曲。
     
    大赢家
    仁川!》- 5 项提名,4 项“获奖”(一个并列);
    蝴蝶》- 10 项提名,3 项“获奖”;
    海盗的故事》- 9 项提名,3 项“获奖”(一个并列);
    安妮》- 5 项提名,1 项“获奖”;
    雷电神兵》、《挑情劫》和《卿卿佳人》- 各 5 项提名,没有“获奖”。

    《李小龙传奇》开拍了

      50 集电视剧《李小龙传奇》已经开拍了,预定 2008 年上映。因为是“传奇”不是“传记”,所以剧中除了李小龙的亲人外,其它全部用假名。这其实是一件很矛盾的设定:如果拍好了,可以让更多不了解或误解李小龙的人认识他,但也许会造成过多假象,就像《三国志》和《三国演义》的关系一样;如果拍砸了,这也不算什么意外,因为李小龙本身就不可复制,但愿不要因为银幕形象的缺陷加深某些人的误会。李小龙作为一代武学宗师和国际功夫巨星,希望该片能把这两方面都反映好。
      另外据说还有一部电影《李小龙》也要拍摄了。
    5/10/2007

    新上海滩

      “上海滩”的大名我早有耳闻,但却从来没看过原版。这次五一回家正好赶上《新上海滩》的播放。虽然只看到了最后十多集,但已经觉得这部电视剧是相当优秀的,人物塑造得极好,估计当年的吕良伟和周润发也不过如此。下面是我对一些主角的看法。
     
      许文强是一个文武双全、重情重义、相当夸张的角色。文,可以写文章发表养家糊口;武,没见着有人打得过他;情,和冯程程、阿娣的悲剧爱情催人泪下;义,即使互相对立也不忘生死兄弟丁力。说他夸张,最突出的两点是:单挑轻取精武门大师兄的武林高手山口香子,在带着一伙喽罗且挟持人质方艳芸的情况下对许文强偷袭不成,反而被全部秒杀;许文强最后独自一人在丁力和冯程程结婚的教堂前当着众人一枪干掉了冯敬尧,如果真的可以这么简单还投靠聂人王非要把老冯弄得个倾家荡产干什么?好阴……
      丁力是一个十分可爱的角色。本来像丁力这种斗大字不认得半筐,在刀口枪眼上拼杀的斗士,一般都有匹夫之勇的形象;但这个丁力不同,主要是那说话的语气,总是一板一眼、字字咬紧,特别是用这种语气对冯程程说:“我最关心的人是你!”……好搞笑……丁力渴望出人头地,却只能无可奈何地徘徊在许文强和冯敬尧之间,并最终向许文强开枪,也就是所谓“人在江湖身不由己”了。
      冯敬尧是一个绝对阴狠的角色。他咧着嘴骂“王八蛋”的时候、倒了霉还发笑的时候、不动声色的时候……不论看哪一眼都能知道这个人有多深。能把一个大坏蛋演得如此的入木三分,也许只有当年舞台上向“杨白劳”逼债而惹得观众义愤填膺的“黄世仁”能与之媲美了。
      冯程程是一个悲剧性的受害者。她和丁力一样,终于伤心绝望地夹在许文强和冯敬尧之间,看着自己最关心的两个男人反目成仇却无法调解。
      陈翰林后期帮了许文强不少忙,但他的“亲冯”上司马总探长上哪儿兜风去了?
      精武门在霍元甲和陈真之后后继无人了吗?一伙人武力不够又行事莽撞,幸亏有许文强指挥他们。
     
      说到结局,许文强和冯敬尧同归于尽,并没有丝毫有情人终成眷属的迹象。这是一个突破性的设计,尽管仍然有“良性化”的成分。在当时的乱世中,像许文强这种有志青年其实几乎不可能扳倒冯敬尧,更别说杀他了。
     
      最后说说国内电视剧的重拍。从金庸的《笑傲江湖》开始,每一部都会引发大争议,往往看过老版本的人死守“经典”。我只能说,时代在进步,至少在技术、场景和动作上新版本几乎都能完美胜出;最具有可比性的是剧本的改变、演员的人选和演技。确实有几部作品因为改编和主角的问题砸了锅,但其他都是很有看头的,不输给老版本。长江后浪推前浪,即使老版本“经典”,就不可超越吗?
    5/9/2007

    如今的历史题材影视

      如今的历史题材影视,找不到尊重史实的作品了,清一色的戏说,在选材上一定要找记载或传说有美女的时代,并且几乎全都存在“三角恋”这种老掉牙的噱头。这类作品,只有演绎崇祯皇帝灭亡史的《江山风雨情》稍微合理,因为历史上本来就有陈圆圆这回事。
      帝王将相的英明神武或贪婪堕落都不重要了,制片人们都偏爱几个男人和一个女人之间的纠缠不休——据说这叫做“嬲”。比如最近一连拍了三部关于吴越争霸的电视剧:《争霸传奇》、《越王勾践》和《卧薪尝胆》,孙武被忽略了,伍员被淡化了,甚至连主角勾践的韬晦之计都只是范蠡与西施缠缠绵绵的陪衬。又听说老吴要拍电影《赤壁》,号称以《三国志》为蓝本,但他老把子虚乌有的孙尚香弄出来做啥?
      我真的很想有人能拍春秋五霸、战国七雄、楚汉争锋……可是没有美女记载的时代不会拍,有美女的时代又注定拍得乌烟瘴气。几千年的历史就这么被“戏说”了?
    5/8/2007

    Replay Audio Bytes with Java Sound

    Opppppp... I made a big mistake yesterday. Today I tested some code in my company's project, and found that we only need a few lines of code to play sound which is stored in a byte array. Below is the trick, and you'll notice that audio input stream is not necessary.
     
    First, there is a byte array (called audioData) which is ready to be played, and do the following initializations:
    AudioFormat af = new AudioFormat(sampleRate, sampleSizeInBits, channels, signed, bigEndian);
    SourceDataLine.Info info = new DataLine.Info(SourceDataLine.class, af, bufferSize);
    SourceDataLine sdl = (SourceDataLine) AudioSystem.getLine(info);
    sdl.open(af);
    sdl.start();
    Then just continously write bytes to mixer with sdl until:
    int offset = 0;
    while (offset < audioData.length) {
        offset += sdl.write(audioData, offset, bufferSize);
    }
    If the length of audioData is small, you can make bufferSize equal to audioData.length, and the code is simpler. Since audioData is filled and played, on and on, it's best to put the code above in a thread. When the playing is over, stop sdl like this:
    sdl.drain();
    sdl.stop();
    My friend also programmed an application with Windows API to do the same task, but we found that my Java implementation sounded better and had less noise.

    Playing in-memery Sound Data with Java Sound

    We may need to play sound in an application. Usually we have sound files, and we can use Java Sound technology to easily play them. And Java Media Framework (JMF) supports more audio formats. But if we are programming a multimedia application such as an Internet phone, and we must play sound in real time, or even must record sound. In this case, there aren't any sound files, and we are going to deal with bytes in memery.
     
    Fortunately, there's no more trick in playing bytes than an audio file. First, we would like a byte array to buffer a chunk of audio data.
    byte[] audioData = new byte[length];
    Each time we save received sound data in this array. Sometimes we receive short (16 bit) samples, just convert them as below (in little endian byte order):
    short temp = ...;
    audioData[offset] = (byte) ((temp >> 8) & 0xff);
    audioData[offset + 1] = (byte) (temp & 0xff);
    Now we have the in-memery audio data. It's not a complete audio file, so we must supply the audio format:
    AudioFormat af = new AudioFormat(sampleRate, sampleSizeInBits, channels, signed, bigEndian);
    Then construct the audio input stream:
    AudioInputStream ais = new AudioInputStream(stream, format, length / af.getFrameSize());
    The first parameter stream is acturally a byte array input stream, which is simply a wrap of audioData.The last parameter is the number of sample frames. For PCM (Pulse Code Modulation), the frame size is the number of bytes for one sample, multiplied with the number of channels. Now everything is ready and use the following code to play it:
    SourceDataLine.Info info = new DataLine.Info(SourceDataLine.class, ais.getFormat(), ((int) ais.getFrameLength() * af.getFrameSize()));
    SourceDataLine line = (SourceDataLine) AudioSystem.getLine(info);
    line.open(ais.getFormat());
    line.start();

    int numRead = 0;
    byte[] buf = new byte[line.getBufferSize()];
    while ((numRead = ais.read(buf, 0, buf.length)) >= 0) {
        int offset = 0;
        while (offset < numRead) {
            offset += line.write(buf, offset, numRead - offset);
        }
    }
    line.drain();
    line.stop();