代码发芽网 - 无需插件支持百度空间代码高亮
百度空间 | 百度首页 
 
文章列表
 
2009年05月17日 星期日 12:46
//三维立体画的关键代码
//文章参见:http://www.cnblogs.com/realfun/archive/2005/07/21/197219.html
//是我以前写的代码,下面这个是更新过的版本

class StereoImageBuilder
{
    private static readonly int RESULT_WIDTH = 800;
    private static readonly int NO_BIT = -1;
    private static readonly int RESULT_HEIGHT = 600;
    private static readonly int BACK_WIDTH = 100;
    private static readonly int EYE_SPACE = 128;

    public static Image Build(Image front, Image back, byte depthCount)
    {
        if (front == null || back == null) return null;

        Bitmap bmpBack = ResizeBitmap(back, BACK_WIDTH, RESULT_HEIGHT);
        Bitmap bmpFront = ResizeBitmap(front, RESULT_WIDTH, RESULT_HEIGHT);
        Bitmap bmpResult = new Bitmap(RESULT_WIDTH, RESULT_HEIGHT);
        byte[][] depthVector = new byte[RESULT_HEIGHT][];
        for (int i=0; i<RESULT_HEIGHT; i++)
        {
            depthVector[i] = new byte[RESULT_WIDTH];
        }
        CalcDepthVector(depthVector, bmpFront, depthCount);
        StereoBit[] bits= new StereoBit[RESULT_WIDTH];
        for (int i=0; i<RESULT_HEIGHT; i++)
        {
            CalcEqualColorLine(depthVector[i], bits, depthCount);
            ColorUpResult(bits, bmpResult, bmpBack, i);
        }
        return Image.FromHbitmap(bmpResult.GetHbitmap());
    }

    private static Bitmap ResizeBitmap(Image image, int width, int height)
    {
        return new Bitmap(image, width, height);
    }

    private static void CalcDepthVector(byte[][] depthVector, Bitmap bmpFront, byte depthCount)
    {
        for (int i=0; i<RESULT_HEIGHT; i++)
        {
            for (int j=0; j<RESULT_WIDTH; j++)
            {
                //depthVector[i][j] = (byte)(CalcGray(bmpFront.GetPixel(j, i)) * depthCount / 255);
                depthVector[i][j] = (byte)(CalcGray(bmpFront.GetPixel(j, i)) * depthCount / 255);
            }
        }
    }

    private static void CalcEqualColorLine(byte[] depthVector, StereoBit[] bits, byte depthCount)
    {
        for (int i=0; i<bits.Length; i++)
        {
            bits[i].prev = NO_BIT;
            bits[i].next = NO_BIT;
            if (i + BACK_WIDTH < bits.Length)
                bits[i].next = i + BACK_WIDTH;
            if (i - BACK_WIDTH >= 0)
                bits[i].prev = i - BACK_WIDTH;
        }

        for (int layer=0; layer<depthCount; layer++)
        {
            for (int x=0; x<RESULT_WIDTH; x++)
            {
                int left_x = x - EYE_SPACE/2 + layer/2;
                int right_x = x + EYE_SPACE/2 - (layer+1)/2;
                //fill in if it's the proper layer
                if(depthVector[x]==layer && left_x>=0 && right_x<RESULT_WIDTH)
                {
                    //@@@@why let it be NO_BIT?
                    if (bits[left_x].next != NO_BIT) bits[bits[left_x].next].prev = NO_BIT;
                    bits[left_x].next = right_x;
                    if (bits[right_x].prev != NO_BIT) bits[bits[right_x].prev].next = NO_BIT;
                    bits[right_x].prev = left_x;
                }
            }
        }
    }

    private static void ColorUpResult(StereoBit[] bits, Bitmap bmpResult, Bitmap bmpBack, int y)
    {
        for (int x=0; x<RESULT_WIDTH; x++)
        {
            if(bits[x].prev == NO_BIT)
            {
                bmpResult.SetPixel(x, y, bmpBack.GetPixel(x % BACK_WIDTH, y));
                int temp = x;
                while( bits[temp].next != NO_BIT)
                {
                    temp = bits[temp].next;
                    bmpResult.SetPixel(temp, y, bmpBack.GetPixel(x % BACK_WIDTH, y));
                }
            }
        }
    }

    private static byte CalcGray(Color c)
    {
        return (byte)(0.299 * c.R + 0.587 * c.G + 0.114 * c.B);
    }
}
 
2008年11月17日 星期一 16:32
 
2008年09月04日 星期四 15:52

在线华容道 - 游戏发芽网

游戏特点
* 界面古朴典雅
* 50多种开局(横刀立马、守口如瓶、层层设防等…)
* 操作简单、可回退
* 过关结果可动态回放

最大的优点就是最后一条,过关结果可回放,呵呵。
一般讨论华容道游戏的时候大家描述方法不通,结果很混乱,但是如果能够看到整个解题过程就不会有这个问题了。
你可以到打开下面两个结果试试看:
横刀立马81步解法
小燕出巢137步解法

华容道游戏简介(以后写个全资料篇):

你知道智力游戏界的三大不可思议吗?它指的是中国的“华容道”, 法国的“独立钻石”和匈牙利的“魔方”。
华容道,古老的中国游戏,以其变化多端、百玩不厌的特点与七巧板、九连环合称“中国的难题”。

华容道游戏取自著名的三国故事,曹操在赤壁大战中被刘备和孙权的“苦肉计”、“火烧连营”打败,被迫退逃到华容道,又遇上诸葛亮的伏兵,关羽为了报 答曹操对他的恩情,明逼实让,终于帮助曹操逃出了华容道。游戏就是依照“曹瞒兵败走华容,正与关公狭路逢。只为当初恩义重,放开金锁走蛟龙”这一故事情 节。

说明与规则
1. “华容道”有一个带二十个小方格的棋盘,代表华容道。棋盘下方有一个两方格边长的出口,是供曹操逃走的。
2. 棋盘上共摆有十个大小不一样的棋子,它们分别代表曹操、张飞、赵云、马超、黄忠和关羽,还有四个卒。
3. 通过移动各个棋子,不允许跨越棋子,帮助曹操从初始位置移到棋盘最下方中部,从出口逃走。
4. 一个棋子的多次连续移动只计一次移动次数

“华容道”有几十种布阵方法,如“横刀立马 ”、“近在咫尺”、“过五关”、“水泄不通”、“小燕出巢”等等玩法。棋盘上仅有两个小方格空着,玩法就是通过这两个空格移动棋子,用最少的步数把曹操移 出华容道。这个玩具引起过许多人的兴趣,大家都力图把移动的步数减到最少。

大多数在100步以内搞定都是很困难的,最简单的是第44关(iPhone关卡1)。
这关我玩了两遍(动态回放记录),最快用了50步,感觉应该可以在40步左右搞定的。

呵呵,点击这里挑战一下不可思议的华容道吧。

欢迎任何意见和建议。

 
2008年07月24日 星期四 13:18
a { color:#0000CC; text-decoration:none; }
a:visited { color:#0000CC; text-decoration:none; }
a:hover { text-decoration:underline; }
a img { padding: 0px; margin: 0px auto; border-style:none; }
img { padding: 0px; margin: 0px auto; border-style:none; }
input:focus, select:focus, textarea:focus {
border: 1px solid #ff00ff;
background:#FFFFBB;
}
thead { background: #ccff99; }
input, textarea { border: 1px solid #c0c0c0; }
ul { padding:0px; margin:0px auto; list-style:none; }
.submit { background:#ccff99; font-size:x-large; }
.error_text, .errorlist { color:#F80098; }
.error { border: 3px solid red; }
.clear { clear:both; }
body {
font-family:"Verdana", "Tahoma", "Georgia", "Arial", "微软雅黑", "宋体";
padding: 0px;
margin:0px auto;
}
table, ul { font-family: "微软雅黑", "宋体"; }
form { padding-left:3px; }
 
2008年07月24日 星期四 13:11

接上篇:代码发芽网 - 代码高亮 - 添加了22个流行的vim配色主题
继续增强内功。

代码发芽网( http://www.fayaa.com/code/ )简介:
1. 无需插件支持blog代码高亮
2. 近百种编程语言,30多个流行的高亮主题
3. 稳定支持各种blog、论坛、邮箱

最新更新
1. 界面更新:一改原来的混乱方案,采用更加清晰的表格、布局来帮助你更高效的完成代码高亮、收藏、评论等操作

2. 支持论坛:论坛中一般为了安全考虑采用BBcode,最近更新的功能(显示代码页点击”复制BBcode”)对Discuz!等论坛有非常棒的支持。

3. 点击复制:有不少网友试用的是HTML简单编辑器,提出需要简单的复制HTML代码的功能,现在提供的只需要点击一个链接即可完成。同样也提供了对BBcode和源代码的复制功能。

4. 搜索功能:提供了搜索所有代码标题的功能

5. 一些bug fix和边角功能的更新,使得生成的代码体积下降了50%!(据我实验,虽不算最优,可改进空间已经很小了)

BTW: 刚刚试了一下CSDN的blog,居然已经可以支持了,看来CSDN暗自在更新。

 
2008年07月11日 星期五 12:31

许多朋友说代码发芽网需要增强内功,呵呵,这两天在搞颜色主题。
本来想搞可定制的,想想目前应该没人会去用,先搁一搁

不能定制,就只能自己搞了,但是这个也可以取巧,对于没有什么颜色美感的人来说,用现成比自己从头做要好
因为我最喜欢用vim,所以首先想到的就是流行的vim主题。
先从vim的网站上搞了22个最流行的主题(top downloads and top votes),包括desert / wombat / midnight2等等。
整个过程挺烦的,写了五六个python脚本才勉强搞定,这还是在有现成的vim2pygments脚本(不是直接转成css)的帮助下。

不说其中的艰难,随便打开一篇改改配色看看效果吧:http://www.fayaa.com/code/view/157/

另外,选择配色方案的同时也选择了它的默认背景色,可以通过选择背景色来调节,由于这两种选择存在冲突,最终的背景色以最后的那次选择为准。

另外一个看不见的更新是:从这一版开始使用jQuery。
一直对jQuery垂涎三尺,但是总是因为其体积而感到犹豫,后来搞定了css/js压缩传递以后就立马投入了jQuery的怀抱。
用了jQuery主要是方便以后做一些小的效果的时候比较方便,也不用过多担心浏览器兼容问题了。

BTW: 现在我最喜欢的vim主题是wombat,曾经最喜欢desert.
更加BT的W: 不知不觉间,内部提交序号已经达到了200,每晚checkin一次也需要六个月啊,靠,居然这么长时间过去了。

------------------------------------------------------------------------------------------------------------------------
贴一个我在vim里最喜欢的wombat主题看看效果
------------------------------------------------------------------------------------------------------------------------

Wombat主题:
Python代码: Python - 人性化的时间(比如:两分钟以前)
01 #人性化的时间:2008-01-27 08:37:29
02 #发芽网使用此函数来显示人性化的时间:比如1分钟以前,三天前,等等
03 def time_span(ts):
04    delta = datetime.now() - ts
05    if delta.days >= 365:
06        return '%d年前' % (delta.days / 365)
07    elif delta.days >= 30:
08        return '%d个月前' % (delta.days / 30)
09    elif delta.days > 0:
10        return '%d天前' % delta.days
11    elif delta.seconds < 60:
12        return "%d秒前" % delta.seconds
13    elif delta.seconds < 60 * 60:
14        return "%d分钟前" % (delta.seconds / 60)
15    else:
16        return "%d小时前" % (delta.seconds / 60 / 60)
 
2008年07月02日 星期三 20:31
Wordpress / Bo-blog / Z-Blog等程序支持度很好,这里就不说了。

经过验证,支持下列网站,基本涵盖了中国主流的blog提供商:
(连接点进去可以看到发的blog代码高亮样例)
Blogbus, 百度空间,
51CTO希赛网
网易163博客,天极博客,新浪博客,
MSN空间,校内网,
牛博网,博客(bokee)网,
中国博客(blogcn)网,
歪酷网,yahoo博客

QQ和CSDN发blog很慢,还去除了所有的换行,没办法只好放弃。Donews帐号和mop帐号冲突,试了建立不起blog,放弃。
搞笑的是51CTO把fayaa.com列入了违禁词表,实在是高看我了。不过我很大度的,链接照加不误 :D

01 #coding=utf-8
02
03 from django.db import models
04 from django.contrib.auth.models import User
05
06 # Create your models here.
07 class UserProfile(models.Model):
08     user = models.ForeignKey(User, unique=True)
09
10     #used for key activation
11     activation_key = models.CharField(max_length=40)
12     key_expires = models.DateTimeField()
13     #a url is needed for web2.0
14     url = models.URLField()
15     #TODO@@@@not used for now
16     phone_numer = models.CharField(default="13800138000", max_length=20)
17     home_address = models.CharField(default="发芽网", max_length=100)
18
19     class Admin:
20         pass
21
22 #user preference recorder :)
23 class UserSettings(models.Model):
24     user = models.ForeignKey(User, unique=True)
25     key = models.CharField(max_length=40)
26     value = models.CharField(max_length=40)
 
2008年06月27日 星期五 02:25
代码发芽网:无需插件支持blog代码高亮, http://www.fayaa.com/code/
已知支持百度空间, 网易邮箱、网易博客, 新浪博客, 牛博网, CSDN, 基于Wordpress的Blog, Google Gmail
网站架构Django + Pygments,架在shared host上面(bluehost的主机)

感谢各位在反馈页面以及邮件组给出的建议,这段时间都在更新
,纯兴趣的东西,时间不够啊...
最近主要更新如下:
1. 界面进行了更多的调整,让字体配色显得更加舒服,把表情图片改小了一些,看起来更加协调
2. 加入了方便复制代码的按钮
3. 加入了"给用户发信"功能
4. 发自己用的临时贴不需要填标题了
5. 可以选择字体了,会枚举这些字体(机器上没有则不显示):'Consolas', 'Lucida Console', 'Courier New', 'Bitstream Vera Sans Mono', 'monospace', 'Fixedsys', 'Monaco'
(目前复制粘贴以后字体还在,但是发blog / email以后字体消失,还没有搞清楚是哪里的问题...)

贴一个例子吧,看起来可能改变不大,到网站上可以看到更大的改变。
Python代码: Python - 人性化的时间(比如:两分钟以前)
01 #人性化的时间:2008-01-27 08:37:29
02 #发芽网使用此函数来显示人性化的时间:比如1分钟以前,三天前,等等
03 def time_span(ts):
04    delta = datetime.now() - ts
05    if delta.days >= 365:
06        return '%d年前' % (delta.days / 365)
07    elif delta.days >= 30:
08        return '%d个月前' % (delta.days / 30)
09    elif delta.days > 0:
10        return '%d天前' % delta.days
11    elif delta.seconds < 60:
12        return "%d秒前" % delta.seconds
13    elif delta.seconds < 60 * 60:
14        return "%d分钟前" % (delta.seconds / 60)
15    else:
16        return "%d小时前" % (delta.seconds / 60 / 60)
 
2008年06月26日 星期四 02:08
贴一个例子试试看:
Python代码: Python - 人性化的时间(比如:两分钟以前)
01 #人性化的时间:2008-01-27 08:37:29
02 #发芽网使用此函数来显示人性化的时间:比如1分钟以前,三天前,等等
03 def time_span(ts):
04    delta = datetime.now() - ts
05    if delta.days >= 365:
06        return '%d年前' % (delta.days / 365)
07    elif delta.days >= 30:
08        return '%d个月前' % (delta.days / 30)
09    elif delta.days > 0:
10        return '%d天前' % delta.days
11    elif delta.seconds < 60:
12        return "%d秒前" % delta.seconds
13    elif delta.seconds < 60 * 60:
14        return "%d分钟前" % (delta.seconds / 60)
15    else:
16        return "%d小时前" % (delta.seconds / 60 / 60)
 
2008年06月01日 星期日 18:31
1. 直接打开http://www.fayaa.com/code/new/,然后把你的代码贴上去,选语言,着色,好了高亮的代码出来了
2. 把着色结果选中,复制(Ctrl+C),在选择并复制之前可以用“切换行号”把行号关掉
3. 到blog里面粘贴,发blog

其实你可以拥有更多选择,比如:
1. 在复制粘贴之前换换代码的配色主题,以便粘贴的时候获取更好更协调的效果
2. 到代码发芽网首页(http://www.fayaa.com/code/)注册一个帐号,然后贴上去,这样你就可以继续管理这份代码,从而拥有版本管理以及代码收藏、评论等功能,您贴上的代码也可以被长久保存。

举个例子:抓取糗事百科前100页的Python脚本
原地址: http://www.fayaa.com/code/view/15/

01 #coding=utf-8
02 #需要BeautifulSoup(美丽的汤)支持:http://crummy.com/software/BeautifulSoup
03
04 import urllib
05 import urllib2
06 from xml.sax.saxutils import unescape
07 from BeautifulSoup import BeautifulSoup          # For processing HTML
08
09 def formalize(text):
10     result = ''
11     lines = text.split(u'\n')
12     for line in lines:
13         line = line.strip()
14         if len(line) == 0:
15             continue
16         result += line + u'\n\n'
17     return result
18
19 outfile = open("qiushi.txt", "w")
20 count = 0
21 for i in range(1, 101):
22     url = "http://qiushibaike.com/qiushi/best/all/page/%d" % i
23     data = urllib2.urlopen(url).readlines()
24     soup = BeautifulSoup("".join(data))
25     contents = soup.findAll('div', "content")
26     stories = [str(text) for text in contents]
27     for story in stories:
28         count += 1
29         print "processing page %d, %d items added" % (i, count)
30         minisoup = BeautifulSoup(story)
31         text = ''.join([e for e in minisoup.recursiveChildGenerator() if isinstance(e, unicode)])
32         text = urllib.unquote(unescape(text, {'&quot;':'"'}))
33         text = formalize(text).encode("utf-8")
34         print >> outfile, '-' * 20 + " %05d " % count + '-' * 20 + "\n"
35         print >> outfile, text + "\r\n"
36 outfile.close()

 
     
 
 
个人档案
 
2maomao

上次登录:
17小时前
加为好友
 
   
 
最新照片
 
   
 
订阅我的空间
 
已有人次访问本空间
 
订阅RSS  什么是RSS?

您也想拥有这样的空间?请点此申请。
     
 
最近访客
 
 

tenysw

JohnTech

hnxlhyl

luoleicn

hanqiu23

gnaggnoyil

bdtky

lxsbupt
     


©2009 Baidu