开源的Ruby项目

我最近刚刚开始学习Ruby,并在周末取代了Jeff的建议......

  1. 停止理论化。
  2. 写很多软件。
  3. 从错误中学习。

......我有兴趣在帮助开源社区的过程中提高自己的技能,所以我想问问任何人是否有任何关于您熟悉或参与的用Ruby编写的有趣/有趣的开源项目的建议。

0
额外 编辑
意见: 1

13 答案

我自己的想法倾向于围绕以下的一些子集:

- 找出序列的组合定义,并且当你稍微延伸时,看看它是否有意义。

- 如果你正在尝试执行一个真空任务(例如平铺一个空白板或计算在空集上定义的函数),你可以用一种方法完成。你的大多数例子属于这个类,包括一个^ 0(在空集上定义的函数),0! (空集上的双射),F_1(平铺空板)以及没有组的直接产品的基数(从每个类中选择一个对象,因此直接产品应该是标识)。

- 空数等于0,空产品等于1.(再次,0组的直积的基数应为1)。

那么0x0矩阵的行列式呢?那么,它是从0元素到空产品本身的所有排列的总和。总和中有一个元素(真空任务),它是一个空的产品,所以应该是1。

我不知道这是否有一个严格的陈述,或者如果有两种组合方式来定义一个序列,它可能会自相矛盾,但这似乎是很自然的事情。

6
额外
Poonen声称,我同意,0x0矩阵的行列式应该等于1.考虑当你试图扩大未成年人1x1矩阵的行列式时会发生什么。
额外 作者 Qiaochu Yuan,
是的,我只是在重新思考这个问题...请参阅上面的重新解释。
额外 作者 Kevin P. Costello,

给出你的例子,你似乎没有要求一种规范的方法来将正整数上定义的任意函数扩展为零。相反,你正在使用输入为set的函数,并询问当某些输入是空集时是否可以定义它们。只要您在正整数上定义的序列配备了这种额外的结构,您就不应该在自然扩展时遇到太多麻烦。如果从非结构化序列开始,赞成一个扩展而不是另一个扩展的原因变得相当薄弱(例如Kolmogorov复杂性)。

Here's the standard example of a sequence that extends to zero in different ways: the sequence that is identically zero on the positive integers. One extension is the zero function. Other extensions interpret the sequence as n -> k 0n for some nonzero k.

顺便提一句,你需要在你的空间中选择一个基点来定义pi 0 。一旦你有了它,它就是从S 0 到你的空间的一组尖角映射的同伦类。等价地,它是(指出的)一组路径组件。它没有一个自然的组织结构(尽管如果你的空间带有某种组合法)。

3
额外
@LSpice我写这篇文章已经快六年了,但我认为我的意思是说较高的同伦群需要指向空格作为输入,所以如果你想通过自然扩展$ \ pi_n的定义来定义$ \ pi_0 $ $ for $ n> 0 $,你应该有一个尖锐的空间作为输入。你当然可以自由定义$ \ pi_0 $,只要你喜欢。
额外 作者 ricree,
等等,为什么不能定义$ \ pi_0 $(作为'裸'$ \ mathrm T_1 $空格,或者任何$ \ mathrm T $公理都给出了闭点,而不是一个指向集),即使没有基点?
额外 作者 LSpice,
很公平。我以为你的意思是“收集(连接/路径)组件”定义有问题。
额外 作者 LSpice,

维数n(R可交换)的自由R模的自同态函数f的行列式是R $中的$ d \,这样$ \ bigwedge ^ n f $就是比率d的同余。 我们的情况对应于$ n = 0 $,并且$ \ bigwedge ^ 0 f $是R的标识,所以d = 1。

已经给出的原因,为什么0 ^ 0 = 1(m ^ n是从一组基数n到一组基数m的函数的数量)和0!= 1(n!是一组基数n)是Baez关于计数作为分类的想法的例证。

2
额外

前三个,你可以定义一个循环。向后运行重复。

Also, 0! = Γ(1) = int_0^\infty e^(-t) = 1 ; here there's nothing special about 0. (But Γ isn't defined for nonpositive integers.)

1
额外

这听起来可能听起来很蹩脚,但我会说你只是看看你关心的序列的属性,并且如果你可以定义它以使这些属性仍然存在(指数规则,递归,通用属性...),那么你可以。至少我无法想象有比这更普遍的答案。

关于0 ^ 0,我会说0 ^ 0 = 1“代数地”更好,因为那样你仍然可以写0 ^ 0 = 0 ^( - 0)= 1 /(0 ^ 0),0 ^ 0 = 0 ^(0 + 0)=(0 ^ 0)*(0 ^ 0)。

0
额外
我对定义有一种功利主义观点:它们旨在缩短论据。所以无论哪种属性都可以缩短您的论点是“正确的”。这显然取决于你正在做的数学的种类,以及你如何一直这样做,但我不认为这种依赖是要避免的。
额外 作者 Anonymous User,
这听起来也许蹩脚,但你怎么知道你正在寻找合适的房产?
额外 作者 Qiaochu Yuan,
很公平。我喜欢你提到的通用属性,因为我对这个问题的回应基本上是“分类,直到它变得明显该做什么”。例如,一个类别中零事物的产品是一个终端对象,零事物的副产品是一个初始对象。
额外 作者 Qiaochu Yuan,

我认为如果你正在尝试学习一门新语言,那么在这种语言中做一些有趣的事情。

我通过编写大量的网络蜘蛛和小玩具学习了python,对于ruby我会采用完全相同的路径。与其找到需要输入的项目,不如做一些个人项目来感受语言。在最初的几个月里,通过阅读大量的例子和其他人的代码,你可以学到更多东西。

像Ruby这样的语言是这样构建的,你可以在没有太多支持的情况下做一些有成效的事情,这样就可以直接进入并做一些有趣的事情,而不是认为在实验开始时你必须为别人做点什么一种新的语言。

与Ruby玩得开心,这是我玩的东西的小清单:)

0
额外

For a pointed space (X,p), the nth homotopy group πn(X,p) is usually defined as the group of maps of the n-sphere which take (1,0,...,0) to p, modulo homotopy-rel-basepoint. What's potentially weird is that S0 is disconnected, whereas Sn is connected for n>0. But then π0(X) just counts the number of path components of X. Of course, it doesn't have a group structure because S0 isn't a cube with its boundary identified; this is anomalous.

On the other hand, this corresponds perfectly with the other characterization of homotopy groups I've seen, where π0(X,p) is defined to be the set of path components of X, and then πn(X,p) is inductively defined as the "loop space" of πn-1(X,p), i.e. the group of homotopy classes of loops starting and ending at the basepoint (rel basepoint, of course), with composition defined simply as composition of loops.

So, while in neither setup is π0(X,p) a group, I think this is as well-defined as it's going to get. As far as I know, only in the setting of Lie groups is there a natural way to put a group structure on the path components (just take G/G0, where G is the Lie group and G0 is the path component of the identity).

0
额外
果然!!!!
额外 作者 NotMyself,
无需光滑;对于任何仅仅拓扑群$ G $,$ \ pi_0(G)$都有自然的拓扑群结构。
额外 作者 LSpice,

那么,你没有指定Rails,所以我会把放在那里。首先,构建鞋子应用程序可能是学习Ruby的最佳方式(Rails非常棒,但我发现掌握Ruby更有趣/有用)。其次,虽然我当然不认为构建跨平台UI组件是微不足道的,但鞋子相对较新,而且相对较小。毫无疑问,可以做出无数的补充。

0
额外
答案中的鞋子链接是旧的。 尝试此链接
额外 作者 DL Redden,

而不是加入一个开源项目,找到你想要从头开始的痒。

我发现我的第一年用语言几乎总是抛弃代码(或者至少,它应该是)。

发现你(个人)想要解决的问题。使用红宝石来做到这一点。你会学到很多。

0
额外

Rubyforge 上的活动项目是一个很好的开始。什么是一个好的入门项目是挑一个非常受欢迎但不是很多开发者的项目。

如果您对Ruby on Rails感兴趣,我现在正在 Redmine 上工作。它是最活跃的项目之一,只有5个开发人员。 开源Rails 也有很多项目。

我发现了一个很好的开始使用 Refactotum 的方法一个专案。使用事实上你是新来的优点,大多数在项目中的人忘记了简单的事情,如宝石依赖和文档

0
额外

浏览一些开源项目的 github 。一些比较受欢迎的项目是:

查看热门分岔列表,您可能会看到一些您感兴趣的内容。

0
额外

如何写小游戏?抓住一个 RubyGame 并开始制作一些简单的游戏。制作一个俄罗斯方块,一条蛇,非常简单。这很有趣,你会学到很多有关这门语言的基本知识。

0
额外
如果您使用的是Mac OS X 10.8,并且考虑到RubyGame,请务必先阅读此处
额外 作者 Barjavel,

通过考虑一个^ 0和0 ^ b,我认为根据你的意愿定义0 ^ 0为0或1似乎是合理的。当然,你可以争辩说,你不应该为此定义0 ^ 0。

这可能被认为是作为对问题2的答案作弊,因为我真的用两种不同的方式将N ^ 2的地图扩展到(0,0)。

0
额外
什么时候它实际上是有用的,在实践中,设置0 ^ 0不等于1?
额外 作者 Grant,
我会争辩如下。如果你是一个接受0的组合主义者! = 1,你接受从空集到它自身的一个双射,所以你接受从空集到它自己有一个函数,所以你应该接受0 ^ 0 = 1。
额外 作者 Qiaochu Yuan,