程序员的Rose
非常适合这个时间程序员来送给心中的TA,如果有的话。看图上代码
<!doctype html> <html> <head> <title>Love</title> <meta charset="utf-8" /> </head> <body> <h1> Honey, Happy Valentine's Day ! </h1> <canvas id="c"></canvas> <script> var b = document.body; var c = document.getElementsByTagName('canvas')[0]; var a = c.getContext('2d'); document.body.clientWidth; </script> <script> // start of submission // with (m = Math) C = cos, S = sin, P = pow, R = random; c.width = c.height = f = 500; h = -250; function p(a, b, c) { if (c > 60) return [S(a * 7) * (13 + 5 / (.2 + P(b * 4, 4))) - S(b) * 50, b * f + 50, 625 + C(a * 7) * (13 + 5 / (.2 + P(b * 4, 4))) + b * 400, a * 1 - b / 2, a]; A = a * 2 - 1; B = b * 2 - 1; if (A * A + B * B < 1) { if (c > 37) { n = (j = c & 1) ? 6 : 4; o = .5 / (a + .01) + C(b * 125) * 3 - a * 300; w = b * h; return [o * C(n) + w * S(n) + j * 610 - 390, o * S(n) - w * C(n) + 550 - j * 350, 1180 + C(B + A) * 99 - j * 300, .4 - a * .1 + P(1 - B * B, -h * 6) * .15 - a * b * .4 + C(a + b) / 5 + P(C((o * (a + 1) + (B > 0 ? w : -w)) / 25), 30) * .1 * (1 - B * B), o / 1e3 + .7 - o * w * 3e-6] } if (c > 32) { c = c * 1.16 - .15; o = a * 45 - 20; w = b * b * h; z = o * S(c) + w * C(c) + 620; return [o * C(c) - w * S(c), 28 + C(B * .5) * 99 - b * b * b * 60 - z / 2 - h, z, (b * b * .3 + P((1 - (A * A)), 7) * .15 + .3) * b, b * .7] } o = A * (2 - b) * (80 - c * 2); w = 99 - C(A) * 120 - C(b) * (-h - c * 4.9) + C(P(1 - b, 7)) * 50 + c * 2; z = o * S(c) + w * C(c) + 700; return [o * C(c) - w * S(c), B * 99 - C(P(b, 7)) * 50 - c / 3 - z / 1.35 + 450, z, (1 - b / 1.2) * .9 + a * .1, P((1 - b), 20) / 4 + .05] } } setInterval('for(i=0;i<1e4;i++)if(s=p(R(),R(),i%46/.74)){z=s[2];x=~~(s[0]*f/z-h);y=~~(s[1]*f/z-h);if(!m[q=y*f+x]|m[q]>z)m[q]=z,a.fillStyle="rgb("+~(s[3]*h)+","+~(s[4]*h)+","+~(s[3]*s[3]*-80)+")",a.fillRect(x,y,1,1)}', 0) // end of submission // </script> </body> </html>
计算两个日期的差值
记得今年早些时候看到百度员工出的那个视频,中间有一幕女主角在计算自己自出生以来已经生活了多少天,只见她熟练的打开excel,在A1中输入生日,在B1中输入当天日期,在C1中输入=B1-A1,立刻得到自己来到这个世上的时间,眼看过去了这么多天,自己当初的梦想实现了多少呢,……,剧情自此展开,不再追踪。
我看到这个的时候,想着cli控们有没有什么方法能实现同样的功能呢,无所不能的shell(我记得有人说过shell是完备的)啊,需要你的力量。
想了一下,使用了coreutils中的date命令,写成了如下shell脚本:
[LFS]安装完成
吼吼,经过两天的努力,LFS的构建工作终于完成了。
先mark一下这个时间,2009.10.17 20:03
于是,从2009.10.15 19:00-2009.10.17 20:03 近50小时的时间,生产出来一linux。
哈哈哈,以前对编译内核是无比的恐怖,没想到这次编居然快了很多,真的不错,都说LFS就编译速度最爽了,果然不假。
介绍一下LFS:
全名是Linux From Scratch,意思是从零开始构建linux系统,整个系统中的工具都是通过现场编译出来的,是真正量身定做的操作系统,不过制作它还是需要一个可以编译程序的linux操作系统,livecd是一个很好的选择,当然正在使用的发行版也可以,不过livecd本身带好了所有的软件包,比较方便。
这个适合对linux有一定了解的人来做,适合想提高运行效率的人来做,适合想深入了解linux的人来做,想研究linux的人,建议都来做一次LFS来加深对linux的理解。
一些资源:
官方网站:http://www.linuxfromscratch.org/
linuxsir:手把手教你如何建立自己的Linux系统(LFS速成手册) (这个是6.3的文档,我是看这个和官方文档结合做出来的)
当前最新版本6.5,这里是官方文档:http://www.linuxfromscratch.org/lfs/view/stable/
ps:刚刚发现貌似编译的内核有点问题,有个驱动模块没有好,隔一段时间提示个错误信息。得去解决一下,然后考虑BLFS,毕竟操作系统是要用的,这个刚做好的LFS还缺很多应用呢!
[LFS]安装进行时
自从今年寒假就想着要做一次LFS的实验,当时信心满满地下好livecd,结果寒假净看电视了,一直没有动手,现在终于下定决心搞一次了,下好了LFS6.3的livecd,因为第一次做,livecd的成功率比较高,而且包含了所有的源码包,不用再去网上下了,比较方便。工作从2009.10.15号晚上7点开始进行,这里大概记录下进程。
从硬盘分了10G出来给LFS用,分好区,挂上去,建好LFS的基地,正式开始LFS之旅。
看别人的说法都是先在虚拟机上做一次,然后有经验了再在真实机器上布署,我觉得还是真实机器效率高些,就直接划个分区给它,就在这开始了,说实话,我以前没有看过LFS的文档,但是据说文档是很详细的,只要你有一定的linux基础,能明白每条命令是干什么用的,然后就照着手册上的命令一路打下去,那也成了,是不是和windows的一路回车法有点像呢!
ps:这篇日志是在livecd自带的桌面环境的SeaMonkey中写的,这也是我在linux下的第一篇日志,而且现在机器的状态是没有windows。
好了,开始记录LFS中的一些杂碎。
2009.10.15 20:10
由于当时做符号链接时ln -sv $LFS/tools / 时少打了后面那个/,把符号链接生成在root目录里面了,导致后面用lfs用户编译时出现Permision denied。重启修改后正常进行。
由于寝室晚上要断电熄灯,故做完第一次生成工具链后就关机了。
2009.10.16
首先调整工具链,没有问题,然后编译安装各种工具,一点问题都没有,只是中间把数字1和字母l搞混过一次,不过很容易就发现错误了。
第一次遇到错误是构建目标系统(第6章)生成glibc时,test出现两个错误,以为哪里命令打错了,就重做了一遍,由于这里的make和make check时间都比较长,花了不少时间,同时也在查资料,文档说其中一个可以ignore,但是另外一个文档上只说是常见错误,没说怎么办,上网google一下,看好几篇都说可以直接ignore,只要后面工具链调整的时候没出现问题,就证明前面的都是正确的。
2009.10.17
接着昨天工作调整工具链,这是最后 一次调整工具链,然后以后编译生成的都是目标系统的组成部分,果然是good luck,没有问题,测试通过,于是开始一项项的编译utilities,好多的啊!
写这篇日志时,正在编译autoconf……
分享代码的好地方
介绍一个分享以及在线运行代码的好地方,codepad,在线运行支持语言种类也很多,当然那个PlainText就免谈了(其实是分享用)。
Language:
界面很简洁,一看就知道怎么用,注意到下面那个Private选项了吗?这里其实可以分享代码,是个geek的好地方,有的人甚至写出了VIM上 用的插件,可以直接在vim里面写代码,然后发布到这里来分享。
程序员用的东西一向以简洁高效著称,这里的注册就很简单,只要你打个用户名和密码就成,密码也让你只打一遍,请保证正确,不过geek一般都自信不会打错。
想看最近都有哪些代码提交,点击那个Recent Pastes就可以看到一大串的列表了,还有提交时间。