Solrex's profileSolrex Shuffling.LifeBlogListsNetwork Tools Help

Blog


    12/25/2008

    无聊的圣诞节

    开题的日期已经定在了 26 号,报告和幻灯做完了,就等着答辩那十五分钟,又无聊了。

    圣诞于我而言是一个貌似没有的节日,除了几条短信外,与平日没有什么不同。大学里每逢这样的日子,晚上基本上都是在图书馆中度过。自从来到中科院这个鬼地方,我越来越怀念南大的图书馆了。尤其是浦平阅览室,虽然是用泡沫板搭成的简易房,但是早晨的太阳透过玻璃窗洒在空荡荡的桌子上那一幕我依然很难忘怀。浦口校区的新图书馆已经建成,不知道浦平阅览室恢复原来运动馆的用途了还是被拆掉了。想这些也无用,随着仙林校区的建成,我以后恐怕得到一个叫做金陵学院的地方去回忆我的大学三年了。

    最近一段过得很累。论文有压力,害怕自己不是科研的材料,报了 GRE,又无法全身心地去投入准备。面临困难不是奋力战斗而总想逃避,深深地陷入到网络、电影当中。看到自己一连串地在豆瓣上 tag 了一堆电影、电视剧,我多希望把这些 tag 打在我那些正在读的书上呀!

    每天对着 17 寸的 CRT 怔怔到两眼发直,也没做多少有意义的事情,我反而开始怀念那些写代码的日子,至少在完成的时候我会觉得由衷地开心。几次想重整自己到好的状态,总是又妥协,想战胜自己的本性好难。

    无聊的时候会想念起大学的一帮哥们,无论做什么平日里好热闹,不似现在这等冷清。越来越能理解为什么一些人宁愿留在差一点儿的本校也不愿来科学院,生活的精彩程度上,研究生院和一般大学真的是不能比。

    时常会挂着聊天软件,Gtalk, MSN, QQ, 飞信,一堆人在却也没有兴趣说话,除了和女友聊聊天,再没有和什么远方的人保持频繁的联系,我觉得自己都有点儿不近人情了。越大越封闭自己,就是在博客里,也是技术技术技术,好像我的生活都是由各种代码堆起来的。

    宿舍里也冷得要命,房间是出奇的大,也是出奇的冷,中央空调一点儿用都没有,我盖两床被子偶尔还觉得凉。想安逸地躲在宿舍看看书,坐着不动超过半小时两腿就会冰凉,唉。

    总之,这半年来是我很低谷的一段时期,我希望能有些变化。
    12/24/2008

    一些关于博客的小变动

    2007 年 2 月 03 日,我的博客从最早的 MSN Space迁移到 Blogspot,看着中文标题导致的类似于"%e8%90%bd%e5%8f%b6"的中文链接感觉特别不爽,就开始试着用使用英文标题。

    2007 年 6 月 18 日,又迁移到 Yo2 的博客托管服务,开始使用 Wordpress 博客和自己的域名。由于对国内的博客托管不是很放心,也一直在同时更新 SpaceBlogspot。为了格式统一,继续使用英文标题。

    转眼间已经一年半,除了关键词过滤,我对 Yo2 的服务还是比较满意的。也越来越喜欢 WP 博客,尤其是发现 WP 能几乎完美地支持整站迁移文章、评论和主题之后。再加上我还可以手动备份数据,就可以随时在别的主机上恢复整个站点,那么另外两个博客就没什么必要了。今 天我把 http://solrex.blogspot.com 给关了,地址会重定向到 http://blog.solrex.cnhttp://solrex.space.live.com 继续保留,但只发一些生活类文章,主要为 MSN 好友共享,技术类文章就不贴过去了。

    既然专注于 WP 博客,WP 有 WP slug translate 插件,可以将中文标题自动翻译或者转成拼音,而且也可以自定义链接地址,那我就不用费尽心机想英文标题了,以后标题就能随便写了。估计一个直接的后果是...牢骚文章增多

    取下装逼 FAQ 中的"为什么你的博客文章总是使用英文标题?"那段,是以为记:

    为什么你的博客文章总是使用英文标题?

    主要原因是为了使链接好看。

    刚开始写博客的时候,用的是微软的 MSN Space,Space 不区分中文和英文标题,所有产生的链接都是处理过的乱码串。后来我的博客迁移到 Google 的 Blogspot,Blogspot 在文章的链接中不对标题进行处理,所以如果使用中文标题,文章链接中就会出现成串的%XX%XX用来代替汉字的转义字符串,非常不利于将链接贴到其它地 方,也不利于网站流量的监控,所以从那时起我就采用全英文的标题了。

    而且我发现使用全英文的标题还有一个好处,使我每次写文章的时候都要仔细考虑标题和内容的关系,避免了我写一些垃圾文章。

    12/17/2008

    The Gold Old Tools: Pic and Chem

    我本来只想写一下 pic 这个小工具,因为很少有中文资料介绍其用法。但是写下来没想到一个小软件联系到那么多典故,更让我对当年的贝尔实验室高山仰止。The gold old days never come again.

    目录
    1. Pic 的作者
    2. 一个 Pic 的简单例子
    3. 一个复杂的例子
    4. 关于 chem 的典故
    5. 在 LaTeX 中使用 pic

    1. Pic 的作者

    Pic,我敢打赌大部分读者没有听说过这个软件(或者说语言),但是我也敢打赌大部分读者听说过它的作者。

    所以我只好从它的作者 Brian W. Kernighan 开始介绍了。不过也许用不着我介绍,假如你学过 C 语言,并且碰巧读过那本经典的 The C Programming Language(K&R);假如你使用 Linux,并且碰巧用过 AWK;或者你不小心学了一门编程语言,并且碰巧你学会写的第一个程序叫做"Hello, world",那么你都应该感谢 Kernighan。没错, K&R 和 AWK 中的 K 都是代表 Kernighan,而且 Kernighan 是第一个使用 "Hello, world" 的人

    2. 一个 Pic 的简单例子

    Pic, 是 Kernighan 写的一个图像排版软件,它主要用来作为 troff 中图片的预处理工具。简单点儿来说,pic 就是用来画特定一类图的工具,比如流程图、状态图、Petri~网、化学分子式等等。就像可以用写代码的方式写文档一样(TeX),我们也可以用写代码的 方式画图,pic 就是这样一种语言。我们来看一个简单的例子(来自 More Programming Pearls):

    .PS
    ellipse "Source" "Code"
    arrow
    box "Compiler"
    arrow
    ellipse "Object" "Code"
    .PE

    将上面代码保存成一个 compiler.pic 文件,然后执行下面命令:

    $ pic compiler.pic | groff | ps2eps > compiler.eps

    我们就能得到名为 compiler.eps 的图像,下面这张图是使用 convert 命令从 compiler.eps 转换成的 png 图像:

    Compiler(无法看到此图,可能因为您无法连接国外网站)

    其实 Linux 下的 pic 是 GNU 版本的 gpic,groff 也是 GNU 版本的 troff,它们是都是被 GNU 重写了的自由软件版本的 pic 和 troff。

    上面编译的步骤是,先用 gpic 将 compiler.pic 预处理为 troff 文档,然后用 groff 生成 ps 文件,然后用 ps2eps 将 ps 文件转化为 eps 图片。由于它们都是从标准输出打印文件,所以我们就用管道将这三个命令连接了起来,并且最后将标准输出重定向到 eps 文件。

    3. 一个复杂的例子

    看到这些,可能有人就怀疑说,这图很简单嘛,用 Photoshop 或者 GIMP 也花费不了多长时间,我干吗要再去学一门语言呢!那么,你尝试用 Photoshop 画一下下面这张图片。

    Chemical Structure(无法看到此图,可能因为您无法连接国外网站)

    画这张图的代码如下:

    .cstart
    R: benzene pointing right
    bond left from R.V4 ; HO
    bond -150 from R.V3 ; CH3O
    bond right from R.V1 ; C
    double bond up from C ; O
    bond right from C ; N
    bond 45 ; C2H5
    bond 135 from N ; C2H5
    .cend

    看到这,可能有人感叹说,哇,pic 真厉害!错(or 半错?),上面这段代码不是 pic 语言,而是 chem 语言。pic 是 troff 的预处理器,而 chem 又是 pic 的预处理器。所以上面这段代码的编译命令是:

    $ chem.pl chem.chem | pic | groff | ps2eps > chem.eps

    chem.pl 先把上面代码转换成 pic 语言,然后再用 pic 进行处理。

    4. 关于 chem 的典故

    关于 chem,还有一段典故:

    话说当年(别问我,我不知道是哪一年)一个星期一的下午,Kernighan、 Jon Bentley 和一个同在贝尔实验室的化学家 Lynn Jelinski 闲扯了一会儿,Lynn 就向他俩抱怨在文档中插入化学结构式实在太麻烦了。正好 Kernighan 刚写了 pic,就想,咦,这不可以用 pic 画吗?于是那天晚上 K&B 就写了一个简单的前端。Lynn 一看,哎,不错!他们仨花了一个星期时间完成了 chem 语言,还在 Computers & Chemistry 杂志上发了篇 paper,名字叫做:Chem - a program for phototypesetting chemical structure diagrams。

    别着急,还没完。话说当年(1990) GNU 要搞自由软件版本的 troff,开始重写 troff,把前端中的 pic, tbl, soelim 和 eqn 都重写了,就剩下画数学公式的 ideal 和 chem 没有重写。到现在你看你自己 Linux 中的 info groff,在 Introduction->Preprocessor 的最后还能找到:"There are other preprocessors in existence, but, unfortunately, no free implementations are available. Among them are preprocessors for drawing mathematical pictures (`ideal') and chemical structures (`chem')."

    时间慢慢到了 2006 年 10 月 19 号,一个叫 Bernd Warken 的小子在 groff 的邮件列表中吼了一嗓子:哈哈,我用 Perl 重写了 chem!然后维护者 Werner LEMBERG 大叔就说:Great! 才有了我上文中的 chem.pl,原始的 chem 是用 AWK 语言写的。但是 chem.pl 到现在还没有到 groff 的正式发行版中,原因很囧,groff 在 2006 年 10 月 16 号以后还没有 release 新版本。所以如果你想使用 chem.pl,只能到 groff 的 cvs 仓库下载:http://cvs.savannah.gnu.org/viewvc/groff/contrib/chem/?root=groff

    5. 在 LaTeX 中使用 pic

    上面只是简单介绍了一下用 pic 做 eps 图片的过程,但是 pic 还可以用到 LaTeX 中,这样简单的图片就直接在 TeX 里写了。比如我们的第一个图片,就可以这样在 TeX 中使用:

    \documentstyle{article}
    \begin{document}
    \newenvironment{centergpic}{}{\begin{center}~\box\graph~\end{center}}
    \begin{centergpic}
    .PS
    ellipse "Source" "Code"
    arrow
    box "Compiler"
    arrow
    ellipse "Object" "Code"
    .PE
    \end{centergpic}
    \end{document}

    .PS 和 .PE 一定要在行首。将上面文件保存成 compiler.tex,用 pic 预处理一下,再用 latex 编译:

    $ pic -t compiler.tex > compiler1.tex
    $ latex compiler1.tex
    $ dvipdfmx compiler1.dvi

    就能生成含有该图的 pdf 文件。

    12/15/2008

    Aspell: The Ideal Spell Checker for Programmers

    Aspell: 程序员的拼写检查利器

    作为一个程序员,尤其是非英语母语国家(ESL or EFL)的程序员,写出漂亮的注释要比漂亮的代码难许多。就比如 Eric 的"来自英语母语国家的"女友就有 "Programmers are English-challenged." 的评论。

    那么如何在程序的注释中避免犯一些低级语法或者拼写错误呢?Eric 也在 Some useful tools for you to write English articles on Linux 中推荐了几个小工具。我这里算拾人牙慧,稍微写一点儿我非常欣赏的 Aspell 拼写检查工具。

    Aspell 是一个强大的拼写检查工具,尤其是对于程序员来说。在 Linux 下,大部分程序员应该是用 Vim 或者 Emacs 写代码,它们有内建拼写检查功能,比如 vim 可以用 :setlocal spell spelllang=en_us 开启对美式英语的拼写检查。不过很少人会安装或者使用拼写检查功能,不是每个人都喜欢写代码时面对一堆高亮的词组(当它们不仅检查注释时,哦,天那!)。 幸运的是,我们有 Aspell。

    Aspell 使用方法非常简单,比如只想检查 C 或者 C++ 风格的注释和字符串中的拼写错误,就可以用这样的命令:

    $ aspell --mode=ccpp -c test.cpp

    终端里就会列出一个一个注释中的错误,并给出修改意见。接下来的工作就很简单了,按照窗口下面每个键对应的功能,选择更换单词或者忽略该单词。如下图所示:

    Aspell 拼写检查工具(无法看到此图,可能因为您无法连接国外网站)

    Aspell 还有更多模式,比如检查 HTML, TeX, XML, Perl 等等一些文档或程序中的拼写,更多内容就请看 Aspell 的帮助吧。

    Aspell 的用户习惯保存在 ~/.aspell.en.prepl 和 ~/.aspell.en.pws 两个用户自定义替换和忽略单词列表里,可以通过备份或者修改这两个列表来改变 aspell 对某些单词拼写检查的策略。

    12/12/2008

    Get Feedburner Feedcount Icon Bypassing GFW

    Feedburner 订阅数图标显示解决办法

    很多人以前都用过 Feedburner 烧制自己的 rss feed,但是由于众所周知的原因,Feedburner 的 rss 输出在中国网,封天下无法访问了(不信您可以点击一下我博客右侧的 Feedburner 图标)。虽然用 Google Reader 订阅 Feedburner 的 feed 仍然不受影响,但是博客订阅数图标无法正常显示,所以很多人好奇我是如何让 Feedburner 订阅数图标仍然显示在博客侧栏的

    其实我以前是用的这篇博客里的方法。这个方法要求你有个国外主机空间,碰巧我能使用师兄的空间,把那篇文章中的 feedburner.php 上传到空间里就可以使用了。

    但是使用过程中我发现这个方法有个很严重的问题:不支持并发访问。这是由于它的方法太生硬,先读取自己文件的内容,如果文件中写的时间比当前时间早 4 个小时,就下载新的订阅数图标,重写自身文件(修改更新时间那一行),并将订阅数图标附在文件最后。注意到这里,它会重写自身文件,一个 php 文件读取自己,改一行再重新写入自己,那么如果多个用户同时访问该文件,那不就乱套了?

    所以我对它进行了修改,改为一个相对干净的方法:抓取订阅数统计图标保存为一个 gif 文件,每次访问 php 文件时,php 去判断当前时间与该 gif 文件最后修改时间的差,如果大于过期时间,就重新抓取订阅数统计图标更新 gif 文件,最后将访问重定向到 gif 文件。点击这里 http://www0.solrex.cn/feedburner.php 查看效果。

    具体 php 代码如下(其实我本想用 file_get_contents 函数的,但发现不好用,只好还用这个原来的 httpSocketConnection 函数了,显得冗长了些):

    <?php
    $username = "username"// Feedburner account name.
    $expire_time = 3600;   // Expire time(in second, 3600s = 1 hour).

    $fb_url = "feeds.feedburner.com";
    $gif_path = "/~fc/".$username."?bg=99CCFF&fg=444444&anim=0";
    $localfile = "fb_".$username.".gif";

    if(!function_exists('httpSocketConnection')){
      function httpSocketConnection($host, $method, $path, $data)
      {
        $method = strtoupper($method);
        if ($method == "GET") {
          $path.= '?'.$data;
        }
        $filePointer = fsockopen($host, 80, $errorNumber, $errorString);
        if (!$filePointer) {
          return false;
        }
        $requestHeader = $method." ".$path."  HTTP/1.1\r\n";
        $requestHeader.= "Host: ".$host."\r\n";
        $requestHeader.= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\r\n";
        $requestHeader.= "Content-Type: application/x-www-form-urlencoded\r\n";
        if ($method == "POST") {
          $requestHeader.= "Content-Length: ".strlen($data)."\r\n";
        }
        $requestHeader.= "Connection: close\r\n\r\n";
        if ($method == "POST") {
          $requestHeader.= $data;
        }          
        fwrite($filePointer, $requestHeader);
        $responseHeader = '';
        $responseContent = '';
        do {
          $responseHeader.= fread($filePointer, 1);
        }
        while (!preg_match('/\\r\\n\\r\\n$/', $responseHeader));
        if (!strstr($responseHeader, "Transfer-Encoding: chunked")) {
          while (!feof($filePointer)) {
            $responseContent.= fgets($filePointer, 128);
          }
        } else {
          while ($chunk_length = hexdec(fgets($filePointer))) {
            $responseContentChunk = '';
            $read_length = 0;
            while ($read_length < $chunk_length) {
              $responseContentChunk .= fread($filePointer, $chunk_length - $read_length);
              $read_length = strlen($responseContentChunk);
            }
            $responseContent.= $responseContentChunk;
            fgets($filePointer);
          }
        }
        return chop($responseContent);
      }
    }

    function get_fbcount($host, $path, $file)
    {
      $content = httpSocketConnection($host, 'GET', $path, NULL);
      $fp = fopen( $file,"w" );
      fwrite($fp, $content);
      fclose($fp);
    }

    if (file_exists($localfile)) {
      $last_modified = filemtime($localfile);
      if ( date('U') - $last_modified > $expire_time) {
        get_fbcount($fb_url, $gif_path, $localfile);
      }
    } else {
      get_fbcount($fb_url, $gif_path, $localfile);
    }
    Header("Location: $localfile");
    ?>

    将上述代码保存为一个 php 文件,比如 fb_username.php,修改用户名和过期时间,上载到国外或者港台能正常访问 Feedburner 的主机空间中,您就可以在网页中用:

    <img src="http://your.host.domain/fb_username.php" style="border: 0pt none ;" alt="Feedburner">

    来引用 Feedburner 订阅计数图标了。由于这个 php 脚本按照用户名保存 gif 图标,您可以在一个服务器上为多人提供引用,只需修改 php 文件的 usrname 一项,并上传为另一个 php 文件,您也可以将这两个变量改为 php 文件的参数(不建议这样做,因为会被别人利用)。

    您也可以在这里下载到 feedburner.txt,要记得将其后缀改为 php 哦。

    12/11/2008

    Book: Legends of the Enigma

    不想睡觉,就写一个小书评吧。

    《密码传奇》

    上次在国家科学图书馆借一本密码学教材的时候,碰巧看到了这本书:《密码传奇》,赵燕枫著,科学出版社。在一堆散发着枯黄的时代气息的小破书中间它 显得格外醒目。出于好奇就拿起来翻了翻,看到大致内容是讲二战时期 Enigma 密码机的故事。关于这个密码机的历史资料并不少,但是系统性的中文演绎还没有看到过,所以我就捎带着把它借了回来。

    从标题中可以明显看出,这不是本教科书式的历史书。作者的行文风格和写《明朝那些事儿》的当年明月颇为相似,整本书的成书过程与其也是如出一辙:先 是在论坛上写了些相关的文章,赚了些人捧场,然后就萌发了系统性写下去的想法,开始认真地搜集资料撰写,并在论坛上讨论,最后被出版社看上出版实体书。有 了论坛、博客,每个有心人都可以成一家之言,这是计算机网络带给我们实实在在的好处。

    Enigma 大概是历史上最有名的密码机了,由于它在二战中被纳粹德国和轴心国大量部署,并且耗费了同盟国大量的物质和智力资源去研究它,再加上其最终被"计算机科学 之父"阿兰·图灵破解,恐怕没有任何密码机制比它更出风头了。从 Enigma 的发展中,任何一段拎出来都是一个跌宕起伏的历史故事。比如电影 Enigma(拦截密码战) 和 U-571(猎杀U-571) 讲述的都是 Enigma 相关的故事。

    《密码传奇》这本书系统地呈现了 Enigma 密码机的产生和发展的过程,同盟国中的波兰和英国分别在破解 Enigma 中起的作用,以及不同类型 Enigma 的结构和加密机制,是了解这段历史和 Enigma 结构非常好并且有趣的读物。在这本书里,作者特别强调了三个历史英雄人物:发明 Enigma 的亚瑟·谢尔比乌斯,初步破解 Enigma 的马里安·雷耶夫斯基和终结 Enigma 传奇的阿兰·图灵。在介绍群论在破解 Enigma 中的应用时,还穿插讲述了群论之父伽罗瓦的故事。

    为了更准确地讲述历史,作者做了许多非常细致的考证工作,在文中也附加了大量的实物和历史照片,比如布莱奇利庄园的原貌和现状,各种型号的 Enigma 密码机和零部件实物照片。总的来说,这是一本非常有意思的科普读物,我是捧着这本书一口气把它读完的。

    12/6/2008

    Strange Things Happened to Me

    我不得不承认,这两天在我身上发生的事情很灵异。

    昨天晚饭时间,我收到一条工行发来的消息,说您的信用卡网银收入 25 元。我就非常纳闷,我又没在网上开店,又没人给我汇款,基本上都是支出,哪儿来的收入呀?就算是工行给的积分奖励,也不该是通过网银支付呀?

    纳闷了半天,决定回来查一查到底怎么回事,打开钱包,忽然发现信用卡不见了。真是见鬼了,钱包里一堆破卡都在,唯独不见了信用卡。上次用卡是两天前 在第三极买了本书,清楚地记得把卡放回钱包里了,很有可能是出来后在公交车站掏公交卡的时候不小心掉了,但是只掉了一张卡也太奇怪了。回去找了找也没找 见,于是就去挂失呗,我仍然用着南京的手机号,漫游费太贵,只好跑工行取款机那打免费的 95588 电话,谁知道过去一看,取款机室锁得结结实实,放机器的地方被掏了个大洞。我都怀疑是不是老天和我过不去,只能回来找同学手机挂了个失。

    今天到工行问了下,才知道人家取款机早就扒出来了,可能要装修。又打了次电话给 95588,搞定了寄新卡的事情。工行的国际卡还是比较赞的,口头挂失就算正式挂失,挂失费是 20,还给免费换新卡,不像交行那样黑心,挂个失都要 50 块。

    但我现在仍然不明白的是,那 25 块收入到底算怎么回事,怎么就正好在我丢了卡打进来?说实话,要不是这莫名奇妙的收入,我至少还得几天发现不了自己卡丢了。

    PS: 我的自行车也跟我过不去,才俩星期没骑,今儿一看,车座皮给冻裂了几个大口子。北京这天儿呀!

    12/3/2008

    Questions About The Incidence of Fuel Tax

    以前副修金融学的时候曾经学习过南大商学院编的宏观和微观经济学,萨缪尔森的《经济学》也曾读过一半,最近在选择床头读物的时候又开始翻起曼昆的《经济学原理》。

    人对经济学的喜好程度,大概跟他对现实的接受程度有关。那些对现实社会中的规则抱着宽容的理解态度的人,往往更能接受经济学中对"理性"的假定而不至于对一些经济行为和规则产生反感。比如"多收了三五斗"并不能代表农民总收益会增加这一经济事实,叶圣陶可能就未必能理解。

    昨天晚上我看到一节内容,有关税收归宿的问题,联想到当前的形势,产生了一些疑问。

    曼昆在书中一个小节讨论了税收归宿与弹性的关系。当对某一种物品进行征税时,无论税收的直接对象是谁,该物品的买者和卖者总是会分担税收负担。因为税收总可以通过价格的调整转嫁到另外一方身上,只是税收归宿的比例会有所不同。他指出一个关于税收负担划分的一般结论:税收负担更多地落在缺乏弹性的市场一方身上。当对某商品征税时,弹性小就意味着该方当条件不利时不能轻易而举地离开市场,从而必须承担更多的税收负担。曼昆在书中举了一个例子有关奢侈品税的例子:

    在 1990 年美国国会开始针对游艇、私人飞机、皮衣、珠宝和豪华轿车这类物品征收奢侈品税,其目的是增加那些承担税收负担最轻松的人的税收。由于只有富人能买得起这类奢华物品,所以这看似是向富人征税的一种合理方式。

    但是考虑到游艇市场,游艇的需求是极其富有弹性的,百万富翁不买游艇是很容易的,他可以选择花钱去买更大的房子,去度假等等。但是对于游艇的供给在 短期中却是非常缺乏弹性的,因为游艇工厂不能轻易而举地转为它用,游艇工人也不好去更换其它职业。根据上面的理论,由于富有弹性的需求和缺乏弹性的供给, 税收负担必然大部分落在供给者身上,进而大部分落在游艇工厂主和工人身上。因此,奢侈品税的负担落在中产阶级身上的部分比落在富人身上的部分多。最终,美国国会认识到了这一困境,在 1993 年免除了大部分奢侈品税。

    我的疑问是,当前政府要考虑开征燃油税,那么税收负担的划分可能会是什么样子?如果是按照弹性决定的话,那么到底是需求的弹性大还是供给的弹性大?经济学中讨论的是自由竞争的市场,那么当市场是一个垄断市场的时候,税收负担的划分又会是什么样子?

    我还不明白的是为什么某些无车族仅仅因为对有车富人的不满心理对燃油税的征收叫好。我觉得从需求的弹性来讲,私 家车主对燃油的需求弹性明显要高于出租车司机、长途汽车主和公共汽车公司,当燃油税高时私家车主可以很轻松地选择少开车;相反出租车司机、长途汽车主和公 共汽车公司对燃油的需求是缺乏弹性的,当燃油税高时他们不能把车闲置到一边不开了。再加上他们有比较大的需求量,那么他们就会承担更多的燃油税。当他们承 担更多的燃油税时,势必会将部分税收转嫁到消费者身上,也就是我们这些无车的民众了。公共汽车可能有国家补贴不至于涨价,但长途汽车和出租车票价上涨可能 是必然的结果。对于一个小老百姓来讲,需求弹性就更低了,我们总不能因为票价上涨就不出门了吧,很可能是我们比以前要承担更重的税收负担。因此我觉得燃油税不是和我们没关系,而是有很大关系。但是这个问题可能还需与环境等其它社会问题同时考虑。

    古人都说"学以致用",以上是一个经济学的门外汉对当前社会一个经济问题产生的一些疑问和不成熟看法,如果读者中有哪位兄台能够指点迷津,请不吝赐教。