Chase Down My Dream

Life, Dream

  • Home
  • About
  • Sample Page
Twitter Facebook Sina RSS
Monthly Archives: August 2009

Micolog Tag Cloud Flash版

Posted on August 31, 2009 by stingrey
12 Comments

lux_time

白天偶然翻网页的时候看见Tag Cloud的浮云版本,Flash做成的3D效果,感觉比较好玩(莫非我口味太重了)。上网找了找,发现这个最早是Roy Tanck为WordPress开发的插件,既然是flash的,那么感觉google app engine能扛住,于是就开始yy如何移植到Micolog上。本人对flash一窍不通,只能面对Roy的文档和提示慢慢折腾。幸好网上也有很多关于将这个插件移植到其他博客系统的文章,于是边学边干,一个小时就直接上货了。目前已经改好了中文Tag的显示问题。目前对Tag的更新还有点问题(现在用的是比较邪恶的方法),页面格式也还有待调整。

在侧边栏的显示效果大致就是这样的:

Capture1

Micolog添加Tag Cumulus的大致的方法(这里只是提供比较偷懒的方法,但是效果是一样的):

先去WP-Cumulus上下载Roy做的插件,其实我们只是要其中的flash源代码,所以最好是下载Development Version。

接着开始偷懒的方法,写一个tagcloud.xml文件,格式大致是这样的:

# 添上相应的tag和链接,这里就是偷懒的地方,最终flash就是从这个xml读取tag并显示的。# 好处是不用改太多代码,这样比较方便,坏处是有新的tag的话就要重新修改xml# 但是如果新tag还有中文,那么就可能要重新生成一遍flash了,原因在后面步骤<a style="font-size: 13pt;" title="3 topics" href="../tag/Linux">Linux</a><a style="font-size: 13pt;" title="4 topics" href="../tag/Micolog">Micolog</a>

关键部分,因为Roy原本的cumulus不支持中文,那么我们就要将自己的tag中的中文嵌入到flash中:

参看:3D标签云移植,以及中文版标签云 大致做法就是将前面下载的flash源文件做修改,嵌入自己博客中文tag相关的字体就可以了,这样就有个弊端,就是每次有新的中文tag的话就又可能要重新生成一遍flash。生成flash文件大小最好控制在40K左右,否则页面加载还是很累的。

接着将生成好的tagcloud.swf,tagcloud.xml,swfobject.js三个文件放在tagcloud文件夹中,然后放在micolog文件夹中的static目录中(只要这三个文件就够了,但是也已经很大了。放在micolog下哪里也无所谓)

之后在相应主题文件中修改sidebar.html,注释掉原来的tag输出,在相应位置嵌入flash:

<h2>Tags</h2>

# 按照这样注释掉tag输出就可以	{% comment %}	{% if tags %}	{% for t in tags %}	<!--a title="{{ t.tagcount }} pages" href="/tag/{{t.tag|urlencode}}"              style="font-size:{{ t.tagcount|tagsize }}pt;">{{t.tag}}</a-->        {% endfor %}	{% endif %}	{% endcomment %}

# 在这里添加flash显示,宽度和高度根据主题调整,tspeed是用来调整tag切换速度的,参数参见WP-Cumulus <script type="text/javascript"    src="http://xxxxxx.appspot.com/static/tagcloud/swfobject.js"></script><embed tplayername="SWF" splayername="SWF" type="application/x-shockwave-flash"              src="http://xxxxxx.appspot.com/static/tagcloud/tagcloud.swf?r=8269298"              mediawrapchecked="true" pluginspage="http://www.macromedia.com/go/getflashplayer"              id="tagcloudflash" name="tagcloudflash" bgcolor="#ffffff" quality="high"              wmode="transparent" allowscriptaccess="always"              flashvars="tcolor=0xffffff&tcolor2=0x999999&hicolor=0xffffff&tspeed=100&distr=true"              width="180" height="210"></embed>

到这里就完成了,非常偷懒的方法。

有一种jQuery方法实现起来相当简单,当然也就要稍微朴素一点……

Categories: Micolog | Tags: Flash, Tag Cloud

Micolog 添加评论回复邮件通知功能

Posted on August 30, 2009 by stingrey
14 Comments

usertile23 架了Micolog之后,发现评论功能比较简单,就根据HouKai的文章增加了Reply的功能(没有添加引用的功能,感觉不是很实用,还容易把页面拖的不整洁)。WordPress有个评论回复邮件通知的功能插件,于是想想也该给Micolog加个这个功能。

首先在相应主题的comments.html文件中在添加评论邮件通知的checkbox,位置可以随便定,感觉放在submit按钮之后会比较好:

<p><input name="submit" type="submit" id="submit" tabindex="6" value="Submit Comment" /><input name="reply_notify_mail" id="reply_notify_mail" tabindex="5" checked="checked"        style="width: auto;" type="checkbox" /><label for="reply_notify_mail">Notify me if there is a reply</label></p>

接着在blog.py中Post_comment类中添加处理客户端POST数据中的邮件定制信息:

# 大概在248行的位置,添加reply_notify_mail的几行        key=self.param('key')        content=self.param('comment')        replynotify=self.param('reply_notify_mail')        reply_notify_mail=True        if replynotify != 'on':            reply_notify_mail=False

# 大概在295行的位置,添加reply_notify_mail的一行        else:            comment=Comment(author=name,                            content=content.replace('^~',                            "<img src="../static/images/emotions/icon_" alt="" />'),                            email=email,                            reply_notify_mail=reply_notify_mail,                            entry=Entry.get(key))

然后在model.py中添加评论回复通知功能:

if g_blog.comment_notify_mail and g_blog.owner:#and not users.is_current_user_admin()            sbody=sbody%(self.entry.title,self.author,self.email,self.weburl,self.content,            g_blog.baseurl+"/"+self.entry.link+"#comment-"+str(self.key().id()))            mail.send_mail_to_admins(g_blog.owner.email(),'Comments on:'                                                  +self.entry.title, sbody,reply_to=self.email)            logging.info('send %s . entry: %s'%(g_blog.owner.email(),self.entry.title))

 # 大概在515行的位置,从这里开始添加功能        replyComments = re.findall(r'@[S]+[:]', self.content)        if len(replyComments)!=0:            originAuthor=[a[1:-1] for a in replyComments]            commentQuery=Comment.all().filter('entry =', self.entry)                                       .filter('author =', originAuthor[0]).order('-date')                     commentGet=commentQuery.get()                   emailInfo=commentGet.email            notifyEnable=commentGet.reply_notify_mail

            if notifyEnable and g_blog.comment_notify_mail                              and g_blog.owner and mail.is_email_valid(emailInfo):                emailBody=ebody%(originAuthor[0],self.entry.title,self.author,self.weburl,                                 self.content,g_blog.baseurl+"/"                                +self.entry.link+"#comment-"+str(self.key().id()))                message=mail.EmailMessage(sender=g_blog.owner.email(),                                            subject="Reply on your post:"+self.entry.title)                message.to=emailInfo                message.body=emailBody                message.send()

# 大概在460行的位置添加数据库中表示是否定制邮件通知的数据元:    author=db.StringProperty()    email=db.EmailProperty()    reply_notify_mail=db.BooleanProperty(default=True) <---添加这一句    weburl=db.URLProperty()

之后在index.yaml添加查询用的index,这个比较关键,当时前面order(‘-date’) gae总是报错,就是没有index的缘故:

# 重新添加一个Comment的查询index- kind: Comment  properties:  - name: entry  - name: author  - name: date    direction: desc

添加完毕后,博客程序便会根据被回复人在当前文章最新的回复状态来判断是否发送邮件通知。

参考:Email notification enhancement for micolog

Categories: Google App Engine | Tags: Micolog

Micolog 导入文章评论时间的问题

Posted on August 30, 2009 by stingrey
2 Comments

Cloud 前段时间把百度空间的文章导了过来,导的过程发现不论格式如何,文章评论时间都会变成Google App Engine的系统时间。感到有些悲壮了,评论的排序都乱了……

先是在导入文章格式上找原因,之后才开始在各个模块中找。查到admin.py才发现导入文章xml的模块根本就没有用到评论时间。

# 大概在215行的地方
for com in next['comments']:     comment=Comment(date=com['date'], <---添加date项                                    author=com['author'],                                    content=com['content'],                                    entry=entry)     try:          comment.email=com['email']          comment.weburl=com['weburl']     except:          pass          comment.save()     self.write(simplejson.dumps(('entry',next['title'],True)))
# 大概在375行的地方comment=dict(date=datetime.strptime(com.findtext(wpns+'comment_date'),                                                            "%Y-%m-%d %H:%M:%S"),<---添加date项                      author=com.findtext(wpns+'comment_author'),                      content=com.findtext(wpns+'comment_content'),                      email=com.findtext(wpns+'comment_author_email'),                      weburl=com.findtext(wpns+'comment_author_url')                 )

修改之后,只要文章评论时间格式”%Y-%m-%d %H:%M:%S”这样的,就能正常导入了。

Categories: Google App Engine | Tags: Micolog

Micolog 文章摘要(more…)链接的bug

Posted on August 30, 2009 by stingrey
No Comments

more

最近都在折腾Micolog,确实很好用。导入文章后,由于一些文章有点长,如果不用摘要显示的话浏览器拖起来会很不舒服。于是就挑选了几篇添加摘要,这样如果想要看全文的话只要点击(more…)就可以了。但是后来测试(more…)的时候发现,在第二页开始点击(more…)就会找不到文章。稍微看一下就会发现,其实是(more…)指向的链接和文章对应的entry的链接不一样,第二页开始链接(more…)就会引用相对地址从而添加上了一段/page/的地址,而真实文章是不含有page段的。找到原因就好办了,主要的方法就是在生成(more…)链接的时候添加绝对地址就可以了。

在model.py文件中,为代码添加g_blog.baseurl就可以。

# 大概在240行的地方def get_content_excerpt(self,more='(more...)'):        if g_blog.show_excerpt:            if self.excerpt:         ----> return self.excerpt                         +' <p><a href="%s/%s">%s</a></p>'%(g_blog.baseurl,self.link,more)

有时候写文章,如果带有图片的话,有些情况也会出现在index页面显示和文章页面显示图片链接错误的问题(或者说找不到图),也可以用类似的方法改成绝对地址就可以。当然这样对博客文章迁移非常不友好……(貌似如果用了slug,会添加/year/month链接段,于是可能要改代码)

顺便说一下Tag Cloud的问题。关于添加Tag Cloud功能,可以参看HouKai的文章。我这里提到的问题也是个人喜好而已,可能口味比较重,针对Micolog default的主题。在default主题下,Tag Cloud会按列表显示,这样tag一多,等于在刷侧边栏,感觉非常难看,cloud就应该有cloud的样子。显然这是css的问题,找到default主题的style.css。其中sidebar最后一句样式就是针对侧边栏ul-li的,很不幸Tag Cloud就是被它蒙的,改成如下即可:

.sidebar ul li ul li a { background:url(images/bullet.gif) no-repeat 0 3px;                          padding-left:15px; display:block;}

多了两层过滤cloud就来了,再顺便,一下子显示这么多tag也会比较臃肿,在base.py文件中找到类似于下面的,对tag输出进行过滤:

# 大概在265行的地方blogroll=Link.all().filter('linktype =','blogroll')filteredTags=Tag.all().order('-tagcount').fetch(16) <--- 这里的数字可以填自己希望显示的tag数量

如果准备让Tag Cloud显示更加有意思一点,可以添加一个Django得过滤器:

# 在filter.py中添加一段:@register.filterdef tagsize(value):    return 9+value*1.3 <--- 1.3可以换成其他系数,只要大于1就行

# 在sidebar.html中修改font-size样式:<a style="font-size:{{t.tagcount|tagsize}}px;" title="{{t.tagcount}} pages"    href="../tag/{{t.tag|urlencode}}">{{t.tag}}</a>
Categories: Google App Engine | Tags: Micolog

另一个自己

Posted on August 25, 2009 by stingrey
2 Comments

usertile21 上周末,晚上自己独自一人躺在毛像草坪前,貌似老天对我很好,把夜晚的天空擦得锃亮,那一夜星星很多很多。以前在紫金港时就喜欢夜晚独自在阳台欣赏夜色,很宁静,可以想很多很多事,搬到玉泉就不常有这样的情调了。暑假,学校显得安静许多,夜里躺在草坪也绝不会有人来打扰。不敢想太多事情,因为怕浪费了这难得的星空。静静地躺着,却感觉到了另一个自己,以前从来没有这种感觉。发现另一个自己比当时的我要执着,告诉过自己:“如果将来没有回忆,今天我还有什么可珍惜。”想起了胡彦斌的《另一个自己》,哼着调子的时候才发现和《Breaking Free》的曲子是一样的,自己当初找了这么久都没有找到,今天却意外收获了。嗯,是自己把风筝的线割断的,那么就让风筝自在地飞吧。Breaking free,继续接触另一个自己,打造自己。躺了一夜,也很幸运的看到了日出,天空真是干净。

今天整理迁移过来的文章,看着一年前写的文章,似乎是一年前的自己在向我诉说。“下雨了,那么就期待彩虹吧!”,找到节奏,一切疑惑都让命运来回答吧。以前好多的事情都还没有完成,当初的列表:

最近想玩的东西又布满了一个list:山地车(美利达or捷安特)/n 单反(原本准备Nikon的,C语言比赛的时候惊奇地被Canon 400D的成像能力征服,于是决定弄台1000D 18-55IS的玩玩先)/n 手机(索爱X1,看了who am i的广告,这部机子还是蛮期待的)/n 吉他(小学时候学的,不知道现在还记得多少,看了海角七号,于是期待好音乐)……

现在必须更新一下列表了:山地车(美利达or捷安特) 相机(先入个GRD III或者EP1 M4/3) 手机(X1玩过了,继续准备入。然后Nokia 3720必须的) 吉他(小学时候学的,不知道现在还记得多少,看了海角七号,于是期待好音乐) 非洲……

十分期待《Bandslam》,快在神网上出现吧~

Categories: 另一个自己 | Tags: 心情

折腾到这里了

Posted on August 25, 2009 by stingrey
2 Comments

白天复习,下午就在实验室折腾迁移博客这个事情,晚上接着看paper。1三天把博客搬完了,脚本加人肉的生活。

用micolog架在google app engine上,非常方便,参考了一些文章,在micolog v0.5基础上加了一些功能,自己改了一些bug,现在基本上有我想要的功能了。micolog支持WordPress的文章导出导入,能够用Windows Live Writer发表文章,WLW不是一般的好用。代码可以用<pre>标签格式高亮,插图插音乐都没有啥问题。

修改的一些bug,比如评论时间导入修正,有空的话会慢慢写出来,都快一年没有碰Python了,还有如何从百度空间搬家的方法抽空也会挂出来。

和代码或者格式不是很有关系的文章百度空间会继续更新: http://hi.baidu.com/stingrey

Categories: 另一个自己 | Tags: 博客搬迁

C# 关闭显示器

Posted on August 21, 2009 by stingrey
10 Comments

午休期间无聊刷代码写的软件,程序大小101K,其中ico文件100K。。。
下载:CloseMonitor.zip
放在桌面,双击使用即可,实际上是使屏幕进入节能模式,鼠标或者键盘按键产生位移就会恢复。
就几行代码:

using System;using System.Collections.Generic;using System.Text;using System.Runtime.InteropServices;

namespace CloseMonitor{    class CloseMonitor    {        static void Main(string[] args)        {            CloseMonitor CM = new CloseMonitor();            CM.CloseMonitorMethod();        }

        #region SendMessage        private const uint WM_SYSCOMMAND = 0x0112;        private const uint SC_MONITORPOWER = 0xF170;        static readonly IntPtr HWND_HANDLE = new IntPtr(0xffff);        [DllImport("user32")]        public static extern IntPtr SendMessage(IntPtr hWnd, uint wMsg, uint wParam, int lParam);        #endregion

        public void CloseMonitorMethod()        {            SendMessage(HWND_HANDLE, WM_SYSCOMMAND, SC_MONITORPOWER, 2);        }    }}

百度空间的缩进是点点点啊点点点~

Categories: C# | Tags: C#, Monitor

HiBaidu Editor 百度空间编辑器

Posted on August 17, 2009 by stingrey
5 Comments

使用百度空间有一段时间了,一直想写个类似live writer这样的软件来简化在百度空间编辑和发布博客的流程。暑假时看到Freeze_soul写的BaiduHelper,便拿来源码看了一下,C#写的,利用在实验室的空余时间照着改了一下。目前只有基本的编辑功能,能发图。发音乐、视频暂时不能,等有空慢慢改,现在着手弄代码高亮,希望能弄出类似live writer那样的一些功能。
2009.08.20 更新了一下,现在可以离线保存文章(html等格式),可以直接在html源码模式下编辑。
下载:HiBaidu.zip

Categories: C# | Tags: C#, 百度空间

Where Are You Now

Posted on August 16, 2009 by stingrey
1 Comment

Vanessa的新电影《Bandslam》终于上映了,不知道国内什么时候能够看到。看预告片的时候,突然听到了《Where Are You Now》,貌似是Honor Society的歌,第一次听,感觉很特别,自己竟然能用平静的心去回忆,去憧憬。

Cause I’m thinking of you

You showed me how

How to live like I do

If it wasn’t for you

I would never be who I am

怀揣梦想,继续做我该做的事,where are you now

Categories: 另一个自己 | Tags: Bandslam, Honor Society, Vanessa Hudgens
  • Recent Posts

    • 一年了,我回来了
    • Un Senso Di Te
    • 好雨时节
    • 虎年来在追昔时
    • 无题
  • Recent Comments

    • hzqtc on 一年了,我回来了
    • aaahexing on Un Senso Di Te
    • RainFlying on 好雨时节
    • Stingrey on 秦时明月,侠骨柔情
    • hzqtc on 被拒了~
  • Archives

    • November 2011
    • June 2010
    • April 2010
    • February 2010
    • December 2009
    • November 2009
    • October 2009
    • September 2009
    • August 2009
    • July 2009
    • June 2009
    • May 2009
    • March 2009
    • February 2009
    • January 2009
    • December 2008
    • November 2008
    • October 2008
    • September 2008
    • July 2008
  • Categories

    • C#
    • Google App Engine
    • Hello Program
    • Linux
    • Linux and Windows
    • Micolog
    • Misc
    • Mojo
    • Music and Movie
    • Windows
    • 另一个自己
    • 玩意儿
    • 生活
  • Meta

    • Log in
    • Entries RSS
    • Comments RSS
    • WordPress.org
© Chase Down My Dream. Proudly Powered by WordPress | Nest Theme by YChong