“programming”目录存档

关于音乐的元数据挖掘

2009年11月6日,星期五

近一段时间发现,对于artist、album、genre的挖掘都不如直接对 composer,包括填词和谱曲的挖掘有效。前者其实是后者的商业化揉合和performing,表面看似具有连续性,但是后者才是 spirit 所在啊。

所以推荐网站 http://www.allmusic.com/。以后找这些杂七杂八信息就不用到处乱翻了。哈哈。比如我刚发现的Savan Kotecha。他的音乐就很不错。

想在音乐元数据挖掘上做点epic的东西,两点是少不了的,一个是music decompilation,就是类似autotune那种快速傅立叶变换分析乐器、音阶、节奏和 vocal 的,一个是works reverse engineering,包括对创作的团队、时间、人物分析。这个不仅对音乐有效,对文学、影视也一样的。其实还是满期待open source的艺术品呢~~~HO HO

数学家也玩quine?

2009年10月26日,星期一

上次提到小日本太变半夜凉初透态了:11门语言的quine接力,这次数学家Jeff Tuppe也来掺和,搞了个Tupper's self-referential formula,最初发布在SIGGRAPH 2001上。

{1\over 2} < \left\lfloor \mathrm{mod}\left(\left\lfloor {y \over 17} \right\rfloor 2^{-17 \lfloor x \rfloor - \mathrm{mod}(\lfloor y\rfloor, 17)},2\right)\right\rfloor

其中:

表示高斯符号,向负无穷大取整,mod表示求余,K 是一个常数,等于

9609393799189588849716729621278527547150043396601293066515
0551927170280239526642468964284217435071812126715378277062
3355993237280874144307891325963941337723487857735749823926
6297155171737169951652328905382216124032388558661840132355
8513604882869333790249145422928866708109618449609170518345
4067827731551705405381627380967602565625016981482083418783
1638491155902256100036523513703438744618483787372381982248
4986346503315941005497470059313833922649724946175154572836
6702369745461014655997933798537483143786841806593422227898
388722980000748404719

然后,在 0≤ x ≤ 106 和 k ≤ y ≤ k+17 的 (x, y) 平面上绘制函数,得到公式本身。。。

十分强大。。。。其实这个公式不能算严格意义上的quine,秘密主要在 k 这个常数里。这里有个家伙写了个OCaml 程序能够转换任意bitmap到常数 k

via

428字节的Javascript能做出什么?

2009年10月24日,星期六

428字节的Javascript能做出什么?

非IE浏览器点击这里围观

这次是知名Javascript Demoscene网站p01.org上次128Byte一个intro改写

其中这个分形是 Menger sponge

实践证明,在某些极端领域,4倍大小的Javascript几乎能实现和汇编一样的效果。

via

开源图像处理工具选择

2009年10月17日,星期六

根据HN

FreeImage > GraphicsMagick > ImageMagick

当年逐个看Linux下man的时候就特郁闷,ImageMagick不就一图像处理工具么?咋就那么多命令呢?

ImageScience > RMagick

最后,PIL比Ruby的图像库要好。

T大的Photosketch牛逼啊,期待今年的SIGGRAPH Asia 2009

2009年10月6日,星期二

今天ZDNETGizmodoMashable都报道了。T大的服务器很刚健啊,还没被挤垮。。。

Photosketch是个什么东西呢?简单的说就是用鼠标画几个简单的线条,然后电脑自动生成一个非常逼真的照片,例如:

视频:

PhotoSketch: Internet Image Montage from tao chen on Vimeo.

说实话看到 edu.cn 的网站出现我很是激动了一把。期待在今年的SIGGRAPH Asia 2009上出彩啊。

话说这新闻发cnbeta,马上就有人评论,要画一张床,和一个显卡坏了衣服不见了的女人吧?

via 1, 2, 3

小日本太变半夜凉初透态了:11门语言的quine接力

2009年09月29日,星期二

A Neighborhood of Infinity当年的牛逼之作A Third Order Quine in Three Languages可以说已经是惊为天人了。什么东西呢?
q a b c=putStrLn $ b ++ [toEnum 10,'q','('] ++ show b ++ [','] ++ show c ++ [','] ++ show a ++ [')']
main=q "q a b c=putStrLn $ b ++ [toEnum 10,'q','('] ++ show b ++ [','] ++ show c ++ [','] ++ show a ++ [')']" "def q(a,b,c):print b+chr(10)+'q('+repr(b)+','+repr(c)+','+repr(a)+')'" "def e(x) return 34.chr+x+34.chr end;def q(a,b,c) print b+10.chr+'main=q '+e(b)+' '+e(c)+' '+e(a)+' '+10.chr end"

这是一个Haskell程序源码,运行一下可以得到一个Python程序源码,再运行一下这个Python程序,可以得到一个Ruby程序源码,再运行一下这个Ruby程序可以得到最开始的Haskell程序源码。这就是triple quine

今天在proggit上看到更加变半夜凉初透态的:11们语言的quine接力。。。。orz。。。小日本果然变半夜凉初透态。。。

原文在:http://d.hatena.ne.jp/ku-ma-me/20090916/p1

代码是:
# ruby
l=92.chr;eval s="s=s.dump[r=1..-2].gsub(/("+l*4+"){4,}(?!\")/){|t|'\"+l*%d+\"'%(t.size/2)};5.times{s=s.dump[r]};puts\"# python\\nprint(\\\"# perl\\\\nprint(\\\\\\\"# lua"+l*4+"nprint("+l*7+"\"(* ocaml *)"+l*8+"nprint_endline"+l*15+"\"-- haskell"+l*16+"nimport Data.List;import Data.Bits;import Data.Char;main=putStrLn("+l*31+"\"/* C */"+l*32+"n#include<stdio.h>"+l*32+"nint main(void){char*s[501]={"+l*31+"\"++intercalate"+l*31+"\","+l*31+"\"(c(tail(init(show("+l*31+"\"/* Java */"+l*32+"npublic class QuineRelay{public static void main(String[]a){String[]s={"+l*31+"\"++intercalate"+l*31+"\","+l*31+"\"(c("+l*31+"\"brainfuck"+l*64+"n++++++++[>++++<-]+++++++++>>++++++++++"+l*31+"\"++(concat(snd(mapAccumL h 2("+l*31+"\"110"+l*31+"\"++g(length s)++"+l*31+"\"22111211100111112021111102011112120012"+l*31+"\"++concatMap("+l*32+"c->let d=ord c in if d<11then"+l*31+"\"21002"+l*31+"\"else"+l*31+"\"111"+l*31+"\"++g d++"+l*31+"\"22102"+l*31+"\")s++"+l*31+"\"21002111010120211222211211101000120211021120221102111000110120211202"+l*31+"\"))))))++"+l*31+"\","+l*63+"\""+l*64+"n"+l*63+"\"};int i=0;for(;i<94;i++)System.out.print(s[i]);}}"+l*31+"\")))))++"+l*31+"\",0};int i=0;for(;s[i];i++)printf("+l*63+"\"%s"+l*63+"\",s[i]);puts("+l*63+"\""+l*63+"\");return 0;}"+l*31+"\");c s=map("+l*32+"s->"+l*31+"\""+l*63+"\""+l*31+"\"++s++"+l*31+"\""+l*63+"\""+l*31+"\")(unfoldr t s);t[]=Nothing;t s=Just(splitAt(if length s>w&&s!!w=='"+l*31+"\"'then 501else w)s);w=500;f 0=Nothing;f x=Just((if x`mod`2>0then '0'else '1'),x`div`2);g x= reverse (unfoldr f x);h p c=let d=ord c-48in(d,replicate(abs(p-d))(if d<p then '<'else '>')++"+l*31+"\"."+l*31+"\");s="+l*31+"\"# ruby"+l*32+"n"+l*31+"\"++"+l*31+"\"l=92.chr;eval s=\"+(z=l*31)+\"\\\"\"+s+z+\"\\\""+l*31+"\"++"+l*31+"\""+l*32+"n"+l*31+"\""+l*15+"\""+l*7+"\")"+l*4+"n\\\\\\\")\\\")\"########### (c) Yusuke Endoh, 2009 ###########\n"

当然自己试的时候需要处理好缩进和换行问题。

是这11门语言的quine:

  1. ruby 1.8.7-p72
  2. Python 2.5.2
  3. perl v5.10.0
  4. Lua 5.0.3
  5. OCaml 3.10.2
  6. ghc-6.8.2
  7. gcc 4.3.2
  8. java "1.5.0_17"
  9. beef 0.0.6-2
  10. whitespace 0.3-2
  11. unlambda 2.0.0-5

卧槽。。。。HOLYFUCK!

reddit XSS 蠕虫

2009年09月28日,星期一

作者是##proggit里的tolkad。牛逼啊牛逼。Markdown这么严格的语法都能被XSS。不过起源好像是来自一个讨论javascript的帖子(via HN

在IRC里的说的补丁是在 markdown.py 里注释掉 text = self.r_DoAnchors1.sub(handler1, text)

看reddit新的评论几乎全部被这个蠕虫占领了。。。hoho。。。4chan发来贺电。。。。

代码在这里

记得那个4k的地形生成demoscene吗?有讲解slides了

2009年09月26日,星期六

记得那个4k的地形生成demoscene吗?有讲解slides

似乎fake shadows特别有趣

via

又一个牛逼的循环自我解压的zip文件(ZIP file quine)

2009年09月23日,星期三

quine这个单词最早我是在自我打印的程序代码里学到的。例如下面的C代码,运行可以打印自己:

main() { char *s="main() { char *s=%c%s%c; printf(s,34,s,34); }"; printf(s,34,s,34); }

今天发现reddit上一个很火星的东西:A ZIP file quine,有人把zip格式也quine了。我前面发过gzip解压得到自己的一个gzip文件,这次The LZ77 quine还要高级一点,因为这个droste.zip解压得到 droste.jpg 和 另一个一模一样的droste.zip,再解压仍然得到 droste.jpg 和 一个droste.zip,再解压。。。。。。

这个zip还可能导致杀毒软件出错。无穷解压嘛。哈哈。。。可惜墙只会解压一次。。否则嘛。哼哼。。。。

不说了。自己下载玩吧。

4D Quaternion Julia Set Ray Tracer

2009年09月22日,星期二

Quartz Composer Quaternion Julia GPU Ray Tracer with AO from subBlue on Vimeo.

via