bookmark_borderargparse

读完Python官方教程modules一章之后,我以为我可以开始写script了。然而我不知道怎么给script传参数。同事写的例子里面,是拿了一个config module把参数从另一个文件里读出来。可是我想何必呢,处理命令行参数的技能总是要的,我很惊讶基本教程里没有。搜索了一下才知道,argparse是后来进入canon的module。

argparse的官方教程的时候我很糊涂。介绍了positional argment之后介绍了optional argument,然后就没了。难道positional argument对应的不是named argument吗?我搜了一会儿才发现,官方虽然把optional argument都当作named argument来操作,甚至可以加一个required=true的限制,但是在打印帮助的时候required=true的参数还是打印在了optional argument里

我们到底有没有理解错Python设计者的原意啊。。。(大概不是为在命令行调用设计的,我经验太少不知道script语言除了命令行调用还可以怎么用。Python号称可以和别的程序语言结合用很灵活的。

bookmark_borderThinking in Dimensions – MDX Solutions 初学笔记

SQL出现于1970年代,而MDX出现于1997年,最初是微软推出规范的,如今有多家商业应用,规范也改由国际xml组织维护。MDX是为了数据仓库和报表查询设计的。

我的理解和问题:

它不是一个代替SQL的东西。表面上,它比SQL更贴近reporting。第一次听说MDX,并且略微使用后,我以为(到目前我也不确定)SSAS做的事情是,把数据预先聚合好,应对实时的报表查询。这样,对cube的设计就很关键,要反应实际的查询需求。相当于SQL写的data mart之类的应用,只不过内部的很多东西不需要自己用SQL写。

在进入cube处理这种backend的问题之前,先读MDX Solutions这本书的前几章,学习如何用MDX对SSAS的cube进行查询。

我的印象是:thinking in dimensions。所有的概念都是围绕多维数据集展开。而一个查询,也就是指明你需要的(多维)数据(tuple)放在哪个axis上。

基本概念:

Tuple:一个列举的维度排列。每个tuple都有自己的dimensionality。

Set:同样dimensionality的tuple的集合。所以你不能写{([time].[July],[Product].[toys]),([Product].[food],[time].[July])}这样的set。

这是大方向。接下去就要想办法弄明白细节概念:dimension里的hierarchy;hierarchy level下的member;measure也是一个dimension……

bookmark_border无穷集合

继续听那课程(我速度够慢的啊。。)

经典的“自然数的集合与偶数的集合谁比较大”的问题(原来是伽里略第一个提出来的呀)。之前略有耳闻。但这个课程把它讲得特别清楚。

前提1: 若A是B的真子集(A的所有成员都属于B,且B内有不属于A的成员),则B的size比A大
前提2: 若A和B各自的成员能一一对应,则A和B的size一样大
前提3: 假设A是偶数的集合,B是自然数的集合
前提4: A的成员可以与B的成员这样对应:a=2b
结论:由1和3得出B比A size大;由2和4得出A和B size一样

这个互相矛盾的组合,说明前提里有需要丢掉的东西。那么你会废掉哪个前提呢?

因为之前读到过并且印象很深刻,觉得用映射来反映集合的大小是很有意义的做法,所以选了废掉1。课程里的解释非常到位。

伽里略对这个悖论最终的解决方法是,对于无穷集合,不要去讲size,没意义。后来有人说,是不是1和2里的大小,是两种大小?我们可以说A is less1 than B, A is equal2 to B。再后来,康托发现,2的比较方法能自圆其说,并且更illuminating.

这里讲到一个概念之前从来没有听说过。实际上,可以这样定义无穷集合:X是无穷集合当且仅当X的size和自己的某个子集一样大。

所以无穷集合有这种“跟自身相似”的性质——这和分形相似。

当初在图灵传里读到康托的对角线方法。我貌似已经忘记在图灵传里对角线方法是干啥用的了。但对角线方法的这种能造出一个不属于原列表的成员的过程,让人想起哥德尔定理。(我也忘记《哥德尔的证明》里有没有提到对角线原理了。。。)

Anyway,对角线方法证明了实数的集合大于自然数的集合。假如说我做了一个自然数和实数的一对一mapping,那通过对角线方法就一定能造出一个不属于你哪个mapping过的实数列表里的有理数,这就说明实数的集合大于自然数。

康托还说,无穷集合的大小,也是无穷的。他发明了一种数叫做transfinite cardinal numbers,用来标记无穷集合的size。

希尔伯特说,康托的天堂就是什么都能容纳的。(这让我穿越到了graceland的歌词啊。)

第一章(第一周的课程)是关于无穷这个概念,它结束了。这方面给我的感觉是,人类几千年的文明,怎么才开始研究无穷呢。。。

这个课程真心讲得非常的好。下一章要讲到GEB里我没读明白的Taski了。拭目以待。

bookmark_border之诺悖论

秀无知的来了。。

我知道之诺悖论,但从没有想到解决方法是微积分。

飞矢不动和乌龟与阿基里斯赛跑,两者的原理是一样的:飞矢要从0到1,必须经过1/2;要到达1/2必须经过1/4,等等。结论就是这么切分成无穷份以后,所需的时间也是无穷大的了。

解决这个悖论的方法:假设飞矢的速度是1,那么它按照那样切了以后所需的时间是:1/2+1/4+1/8+…这个数列趋于1 。

一种证明这个数列趋于1的方法是:

T=1/2+1/4+1/8+…,则T/2=1/4+1/8+…=T-1/2,从而T=1.

为什么以前从来没有意识到这一点。

结论1:我没有主动去想悖论意味着什么。我的确有那种容易接受权威思想的倾向,思维不够独立。而以前看的书可能只是说了就是有这样的悖论,滑稽吧~?

结论2:微积分的思想,我嘴里一直说我一窍不通。其实比我说的一窍不通还要一窍不通。

结论3:知识要消化到哲学层面才算理解。。。

对了这是我最近在听的Coursera课程Introduction to Mathematical Philosophy.