Category: 编程、软件、技术

  • 重构狗屎皮:第四天

    今天进入狗屎皮重构的第四天。有件事要纪念一下:从今天晚间开始,我的虚拟主机上站点:BSpMq.com以及rsywx.net无法正常访问,必须翻墙。我实在不能明白的是,这样一个纯粹是打P扯谈的站点,一个以藏书、温和时事评论的站点怎么会被封?GFW真的是不可理喻了!

    进入妓术专题。

    今天进入狗屎皮重构的第四天。我主要解决了分页的问题。

    (more…)

  • 重构狗屎皮:第三天

    今天进入了狗屎皮重构的第三天。今天要解决一个很关键的问题:如何让用户贴出评论?

    先看界面:

    ui-master-detail

    这时一个标准的主从表界面:帖子内容、已经有了的评论内容再加上一个表单方便用户提交评论。

    我本来认为要完成用户提交评论,在Symfony下是很简单的——简单到你可以不用写任何额外的代码,但实际情况并不如此。

    主要的一些修改如下。

    首先,要修改article的action.class.php文件中的executeShow函数:

    class articleActions extends sfActions
    {
        public function executeShow(sfWebRequest $request)
        {
            $article=$this->getRoute()->getObject();
            $this->article = $article;
            $this->comments=Doctrine_Core::getTable('g4pcomment')->getComments($article->getId());
            $this->form=new G4pCommentForm();
        }
        ......
    }

    上述代码中必须人肉创建了一个comment的表单,并传递到模板中进行进一步处理。

    在showSuccess.php模板中,通过include_partial来显示comment表单:

    include_partial('comment/form', array('form'=>$form, 'article_id'=>$article->getId()));

    注意,我还额外传递了一个article_id参数进去,这是为了后续的处理。

    修改comment表单文件如下,让它带一个article_id的参数:

    <?php echo form_tag_for($form, '@comment') ?>

    最后,修改comment的create以及processForm函数:

    public function executeCreate(sfWebRequest $request)
        {
            $this->forward404Unless($request->isMethod(sfRequest::POST));
            $aid=$request->getParameter('aid');
            $nc=new G4pComment();
            $nc->set('article_id', $aid);
            $nc->set('created_at', date('Y-m-d H:i:s'));
            $this->form = new G4pCommentForm($nc);
            $this->processForm($request, $this->form);
            //$this->setTemplate('article/show');
        }
    
    protected function processForm(sfWebRequest $request, sfForm $form)
        {
            $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
            if ($form->isValid())
            {
                $comment = $form->save();
                $article=$comment->getG4pArticle();
                //var_dump($article);
                $this->redirect($this->generateUrl('show_article', array('id'=>$article->getId(), 'title_slug'=>$article->getTitleSlug())));
            }
        }

    在executeCreate函数中,设置了一个comment的外键article_id(从前一个页面传递过来),设置了comment创建的时间。

    在processForm函数中,需要修改一下处理完毕后的重定向,回到原来的帖子的页面,显示帖子、评论等。

    最后,我不得不说两句。我认为这个要求是几乎所有WEB程序都会用到的,但是我提问到Symfony的官方论坛后三天没有人回答!最后还是靠自己解决了问题……

    (本文收录于[go4pro.org])

  • 重构狗屎皮:第二天

    今天进入狗屎皮重构的第二天。实践证明,这第二天,确实是非常2的一天。

    首先,Symfony推出了一个新框架:Symfony 2。具体介绍见:http://www.symfony.com/。我刚搭建了Symfony 1.4.9的环境,实在不想在一个全新的框架上进行开发——虽然如此做对熟悉一个东西是很有好处的。

    (more…)

  • 重构狗屎皮:第一天

    今天开始重构狗屎皮。

    基本的框架是:后台机器人采用pMq编写的机器人进行采集,这个机器人是用Python编写的;由于我对Python以及基于Python的框架(我们之前用的是TG2)不是很熟悉,所以决定重新用Symofny改写。

    今天是第一天。主要是进行数据库的构建。

    解决了一个“小”问题,就是:Symfony在缺省时数据库所有文本字段采用的是拉丁编码,必须设置一下强迫其采用UTF8编码,代码如下:

    # File: config/database.yml
    all:
        doctrine:
            class: sfDoctrineDatabase
            param:
                dsn: mysql:host=localhost;dbname=go4pro
                username: root
                password:
                attributes:
                    default_table_charset: utf8
                    default_table_collate: utf8_general_ci

    最后三行紧要。

    今天还对样本数据进行了一些编写。用Symfony内置的机制进行数据填充还是很快很快的。

    比如我们可以这样编写一个comment.yml文件:

    # File data/fixtures/comment.yml
    G4pComment:
        first_comment:
            G4pArticle: first
            username: Dummy
            content: 好文章!
    <?php for($i=1;$i<=15;$i++): ??>;
        comment_<?php echo $i ??>:
            G4pArticle: first
            username: 访客<?php echo $i.n; ??>
            content: 我是路人<?php echo $i.n; ??>
    <?php endfor; ??>

    这样就可以一下子产生1+15个数据。YML文件是非常讲究格式的,必须注意书写时的缩进。

  • 升级到Windows 7

    周四的时候将电脑的操作系统升级到了Windows 7家庭高级版。做个标记。感觉没有什么好,也没什么不好……反正就那样……

    (more…)

  • 重装系统软件列表

    最近突然感觉系统有点不给力。但是在重新安装系统之前,需要做个软件列表,免得自己一旦重装系统后忘记要装些什么回去。

    (more…)

  • 将DRM去掉!去掉!!

    在Kobo上买的电子书都有DRM的保护,你只能在关联了Adobe Digital Edition(ADE)账户的机器上用ADE打开。

    我倒不是想要把它怎么样怎么样。我的问题和需求很简单:我是可以在iPad的Kobo应用程序中看书了,但是我花钱买了的书,我想让肾后在她的iriver story里也能看到。这应该是符合平时我们买书的惯例的。试问:如果我往家里买了一本书并付了钱,难道肾后还需要付钱才能看这本书吗?

    (more…)

  • 【iPad】【软件】修改iTunes的备份目录

    本来呢,我是准备用上篇的“2010总结”作为我2010年的最后一篇博客——是的,我确实是这样想的——但是,今天——2010年最后一天——的下午,我坐在我的电脑前,看着“我的电脑”里Vista很贴心的用红色标出C盘只有5G的剩余空间,我心里实在是非常的纠结了起来……

    好吧,让我先在iPad上删除一些东西……再删除一些东西……Nani???居然没有什么大的变化?C盘还是被用红色标识在“我的电脑”里?!

    于是,我只好用Google大法,开始寻找是不是有什么彻底的解决方法……

    幸好,在这个地方我找到了方案,和大家分享一下:

    1. 首先,你要到这个地方:http://technet.microsoft.com/en-us/sysinternals/bb896768,去下载一个名叫junction的软件。这个是微软的官方站点,但是这个工具……一如既往的没有出现在任何Windows的发行版中……
    2. 这个软件不用安装,只要解压缩放到随便一个什么目录就可以了。
    3. 用管理员身份进入命令提示符状态,转到你解压junction.exe的目录。
    4. 运行如下命令:junction <某个目录名> <真正的目标目录>就可以了。

    iTunes缺省的备份目录在:c:\\Documents and Settings\\<你的用户名>\\AppData\\Roaming\\Apple Computer\\MobileSyncBackup

    1. 我在f:盘创建了一个f:iPad的目录,将上述目录下的所有文件夹统统拷贝到了f:ipad下;
    2. 删除iTunes的缺省备份目录(即上面c:…Backup这个目录);
    3. 运行junction “c:\Documents and Settings\<你的用户名>\AppData\Roaming\Apple Computer\Mobile\SyncBackup” “f:iPad”即可。

    从上面的命令行可以看出,junction就相当于*nix下的ln –s命令。

    经过这么一折腾,我的C盘一下子多出了7G的空间——iTunes,你也真够狠的……——而F盘反正本来就是1T的容量,怎么放都不怕的……

    猪手,你值得拥有!

    p.s. 这个软件当然不是iPad软件,但是确实又和iPad的应用有莫大的关系。所以还是用【iPad】【软件】这样的标题……偶8素标题党……

  • iPad软件推荐:Remote

    推荐这个软件有一个重要的原因:它是由Apple官方放出的应用。

    这个软件的功能很简单:在你的iPad上遥控你的PC或者MAC中的iTunes。 软件设置还是比较简单的,我就不多描述了。程序运行界面如下:

    remote-itunes

    那么这个软件能派什么用处呢?

    (more…)

  • 在iTunes里设置专辑的封面

    粗粗的统计了一下,我的iTunes里大概有1100+首歌曲,容量在9GB+,播放时间超过3天。 这些歌曲大概归纳于70-80个不同的专辑,在用iTunes进行整理的时候发现大部分专辑的封面都无法通过iTunes自动获得,也不知道是什么原因。

    不过不要紧,我还可以手动添加专辑封面。 在iTunes里添加专辑封面有两种方法。

    第一种,先要点击iTunes左下角那个可耻的三角形按钮,于是就会弹出一个专辑封面的框,在Google之类的搜索引擎里可以获得专辑图片,然后直接在浏览器中右键拷贝图片,再到这个框里粘贴即可。

    album-cover

    这种情况可能有一种后遗症:所有属于该专辑的歌曲有可能没有被一起更新。具体原因不明。

    这时可以用肯定能行的第二种方法。 那就是选择需要添加封面的专辑里的所有的歌曲,然后右键选择“显示简介”就可以在接下来弹出的对话框中选择封面图片并粘贴了。

    值得注意的有两点:

    一、如果你不小心粘贴错了图片或者在日后找到更好、更贴切的图片需要更新封面,那么只能用第二种方法。

    二、图片大小至少要在500X500左右才能获得很好的效果,实在不行300X300也可以,但不能再小了。

    现在我的iTunes力用Cover Flow看我的专辑效果就是酱紫的:

    cover-flow

    而添加的封面在同步时也会同步到iPad的音乐库里:

    ipad-ipod

    看着舒服多了……