Projets Open Source Ruby

J'ai récemment commencé à étudier Ruby, et au lieu des conseils de Jeff pendant le week-end ...

  1. Arrêter la théorisation.
  2. Écrire beaucoup de logiciels.
  3. Apprenez de vos erreurs.

... J'étais intéressé à affiner mes compétences tout en aidant le processus Open Source Community. Je me suis donc demandé si quelqu'un avait des suggestions pour des projets Open Source cool / intéressants écrits en Ruby, que vous connaissez ou dans lesquels vous êtes impliqué.

0

13 Réponses

Ma propre pensée a tendance à tourner autour d'un sous-ensemble de ce qui suit:

- Trouver une définition combinatoire pour la séquence, et voir si cela a du sens lorsque vous étendez légèrement plus loin.

--Si vous tentez d'effectuer une tâche vide (par exemple, la mise en mosaïque d'une carte vide ou le comptage de fonctions définies sur l'ensemble vide), vous pouvez le faire d'une seule manière. La plupart de vos exemples tombent sous cette classe, y compris un ^ 0 (fonctions définies sur l'ensemble vide), 0! (bijections sur l'ensemble vide), F_1 ​​(paver un tableau vide), et la cardinalité du produit direct d'aucun groupe (en choisissant un objet de chaque classe, le produit direct devrait être l'identité).

- Une somme vide est égale à 0, un produit vide est égal à 1. (encore une fois la cardinalité du produit direct de 0 groupes doit être 1).

Qu'en est-il du déterminant d'une matrice 0x0? Eh bien, c'est une somme sur toutes les permutations d'un élément 0 à lui-même d'un produit vide. Il y a un élément dans la somme (tâche vide), et c'est un produit vide, donc ça devrait être 1.

Je ne sais pas vraiment s'il y a une affirmation rigoureuse, ou s'il n'y a pas moyen de se contredire s'il y a deux façons combinatoires de définir une séquence, mais c'est ce qui semble naturel.

6
ajouté
Poonen a affirmé, et je suis d'accord, que le déterminant d'une matrice 0x0 devrait être égal à 1. Considérez ce qui se passe lorsque vous essayez d'étendre le déterminant d'une matrice 1x1 par des mineurs.
ajouté l'auteur Qiaochu Yuan, source
Oui, je repensais juste celui-là aussi ... voir la ré-explication ci-dessus.
ajouté l'auteur Kevin P. Costello, source

Compte tenu de vos exemples, vous ne semblez pas demander une manière canonique d'étendre à zéro des fonctions arbitraires définies sur des entiers positifs. Au lieu de cela, vous prenez des fonctions dont les entrées sont des ensembles et vous demandez si elles peuvent être définies quand une entrée est l'ensemble vide. Tant que votre séquence définie sur des entiers positifs est équipée de cette structure supplémentaire, vous ne devriez pas avoir trop de mal à l'étendre naturellement. Si vous commencez avec une séquence non structurée, les raisons de favoriser une extension par rapport à une autre deviennent plutôt faibles (par exemple, la complexité de 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.

Incidemment, vous devez choisir un point de base sur votre espace pour définir pi 0 . Une fois que vous avez cela, c'est l'ensemble des classes d'homotopie des cartes pointues de S 0 vers votre espace. De manière équivalente, c'est l'ensemble (pointé) de composants de chemin. Il n'a pas de structure de groupe naturelle (bien que cela puisse arriver si votre espace vient avec une loi de composition).

3
ajouté
@LSpice Cela fait presque six ans que je l'ai écrit, mais je pense que ce que je voulais dire, c'est que les groupes d'homotopie supérieurs nécessitent des espaces pointus comme entrées, donc si vous voulez définir $ \ pi_0 $ en étendant naturellement la définition de $ \ pi_n $ for $ n> 0 $, vous devriez avoir un espace pointé en entrée. Vous êtes bien sûr libre de définir $ \ pi_0 $ comme vous le souhaitez.
ajouté l'auteur ricree, source
Attendez, pourquoi ne peut-on pas définir $ \ pi_0 $ (comme un espace $ \ mathrm T_1 $ "vide", ou quoi que ce soit $ \ mathrm T $ axiom donne des points fermés, pas un ensemble pointu) même en l'absence de point de base ?
ajouté l'auteur LSpice, source
C'est suffisant. Je pensais que vous vouliez dire qu'il y avait un problème avec la définition de "collection de composants (connectés/chemin)".
ajouté l'auteur LSpice, source

Le déterminant d'un endomorphisme f d'un R-module libre de dimension n (R commutatif) est le $ d \ dans R $ tel que $ \ bigwedge ^ n f $ est l'homothétie du rapport d. Notre cas correspond à $ n = 0 $, et $ \ bigwedge ^ 0 f $ est l'identité de R, donc d = 1.

Les raisons, déjà données, pourquoi 0 ^ 0 = 1 (m ^ n est le nombre de fonctions d'un ensemble de cardinalité n à un ensemble de cardinalité m) et 0! = 1 (n! Est le nombre de bijections d'un ensemble de cardinalité n), sont des illustrations des idées de Baez sur le comptage comme décatégorification.

2
ajouté

Pour les trois premiers, vous pouvez définir une récurrence. Exécutez les récurrences en arrière.

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

1
ajouté

Cela peut sembler boiteux, mais je dirais que vous regardez simplement les propriétés de la séquence qui vous intéressent, et si vous pouvez la définir pour que ces propriétés soient toujours présentes (règles d'exposant, récursivité, propriétés universelles ...), alors vous faites . Au moins, je ne peux pas imaginer qu'il y ait une réponse plus générale que celle-ci.

En ce qui concerne 0 ^ 0, je dirais que 0 ^ 0 = 1 fonctionne mieux "algébriquement", puisque vous pouvez toujours écrire 0 ^ 0 = 0 ^ (- 0) = 1/(0 ^ 0), et 0 ^ 0 = 0 ^ (0 + 0) = (0 ^ 0) * (0 ^ 0).

0
ajouté
J'ai une vision utilitariste des définitions: elles sont destinées à raccourcir les arguments. Donc, quelles que soient les propriétés qui vous permettent de raccourcir vos arguments sont les «bonnes». Cela dépend évidemment du type de calcul que vous faites et de la façon dont vous l'avez fait, mais je ne pense pas que cette dépendance soit censée être évitée.
ajouté l'auteur Anonymous User, source
Cela peut aussi sembler boiteux, mais comment savez-vous que vous regardez les bonnes propriétés?
ajouté l'auteur Qiaochu Yuan, source
C'est suffisant. Je fais comme si vous avez mentionné les propriétés universelles, puisque ma propre réponse à cette question est fondamentalement "catégoriser jusqu'à ce qu'il devienne évident quoi faire." Par exemple, le produit de zéro chose dans une catégorie est un objet terminal et le coproduit de zéro choses est un objet initial.
ajouté l'auteur Qiaochu Yuan, source

Je pense que si vous essayez d'apprendre une nouvelle langue, faites quelque chose d'amusant dans cette langue.

J'ai appris le python en écrivant beaucoup d'araignées web et de petits jouets et pour ruby ​​je prendrais exactement le même chemin. Au lieu de trouver un projet qui a besoin d'une contribution, faites quelques petits projets personnels pour avoir une idée de la langue. Vous en apprendrez plus en faisant quelque chose puis en lisant beaucoup d'exemples et le code des autres peuples dans les premiers mois.

Un langage comme ruby est structuré de telle sorte que vous pouvez faire quelque chose de productif dès la sortie de la boîte sans beaucoup de soutien, alors faites des choses amusantes plutôt que de penser que vous devez faire quelque chose pour quelqu'un d'autre au début de votre expérimentation. une nouvelle langue.

Amusez-vous avec Ruby, c'est sur ma courte liste de choses à jouer :)

0
ajouté

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
ajouté
Assez sur!!!!
ajouté l'auteur NotMyself, source
Pas besoin de douceur pour tout groupe simplement topologique $ G $, $ \ pi_0 (G) $ comporte une structure de groupe topologique naturelle.
ajouté l'auteur LSpice, source

Eh bien, vous n'avez pas spécifié Rails, donc je vais lancer des chaussures là-bas. Tout d'abord, la construction d'applications de chaussures est probablement la meilleure façon d'apprendre ruby (Rails est génial, mais je trouve maîtriser ruby beaucoup plus amusant / utile). Deuxièmement, bien que je ne pense pas que la construction de composants d'interface utilisateur plate-forme soit triviale, les chaussures sont relativement nouvelles et relativement petites. Il ne fait aucun doute que d'innombrables ajouts pourraient être faits.

0
ajouté
Le lien vers Shoes dans la réponse est ancien. Essayez ce lien
ajouté l'auteur DL Redden, source

Au lieu de rejoindre un projet open source, trouvez une démangeaison que vous voulez gratter.

Je trouve que ma première année avec une langue est presque toujours jeter le code (ou au moins, il devrait être).

Trouver un problème que vous voulez (personnellement) résoudre. Utilisez du rubis pour le faire. Vous apprendrez beaucoup.

0
ajouté

Les projets actifs sur Rubyforge sont un excellent point de départ. Ce qui serait un bon projet starter est de choisir celui qui est très populaire mais pas beaucoup de développeurs.

Si vous êtes intéressé par ruby on Rails, je travaille actuellement sur Redmine . C'est l'un des projets les plus actifs et il n'y a que 5 développeurs. Open Source Rails a également une bonne collection de projets.

J'ai trouvé faire un Refactotum un excellent moyen de commencer à un projet. Utilisez le fait que vous êtes nouveau à votre avantage, la plupart des gens qui ont été sur un projet oublient des choses simples comme les dépendances de la gemme et de la documentation

0
ajouté

Regardez autour de github pour certains projets open source. Certains des projets les plus populaires sont:

Regardez sur la liste fourchue populaire et vous verrez probablement quelque chose qui vous intéresse.

0
ajouté

Que diriez-vous d'écrire de petits jeux? Prenez un RubyGame et commencez par faire quelques jeux simples. Faire un tetris, un serpent, quelque chose de vraiment simple. C'est très amusant, et vous apprendrez beaucoup de petites choses de base sur la langue.

0
ajouté
Si vous êtes sur Mac OS X 10.8 et compte tenu de RubyGame assurez-vous de lire ici .
ajouté l'auteur Barjavel, source

En considérant a ^ 0 et 0 ^ b, il me semble raisonnable de définir 0 ^ 0 comme étant 0 ou 1 selon ce que vous faites. Bien sûr, vous pourriez argumenter que vous ne devriez pas définir 0 ^ 0 pour cette raison.

Cela pourrait être considéré comme une tricherie comme réponse à la question 2 parce que j'étends vraiment une carte pour N ^ 2 à (0,0) de deux manières différentes.

0
ajouté
Quand est-il réellement utile, en pratique, de mettre 0 ^ 0 non égal à 1?
ajouté l'auteur Grant, source
Je dirais comme suit. Si vous êtes un combinatorialiste qui accepte ce 0! = 1, vous acceptez qu'il y ait une bijection de l'ensemble vide à lui-même, donc vous acceptez qu'il y ait une fonction de l'ensemble vide à lui-même, donc vous devriez accepter que 0 ^ 0 = 1.
ajouté l'auteur Qiaochu Yuan, source