Qu’est-ce qu’un bon projet adapté aux forces d’apprentissage d’Unix / Linux

Je développe des applications Microsoft Windows (de bureau et Web) depuis plusieurs années en utilisant C #, .net et Visual Studio avec une pointe de C / C ++ et WIN32. Je veux élargir mes horizons et essayer de développer dans un environnement * NIX, par exemple en utilisant Vim & C ++. J’ai limité l’expérience UNIX de quelques projets scolaires.

J’ai du mal à penser à un bon projet à mettre en œuvre qui pourrait révéler certaines des forces de UNIX et pourquoi certains projets / champs préfèrent utiliser UNIX. Je peux penser à plusieurs choses intéressantes que j’aimerais construire, mais je ne vois pas de raisons convaincantes pour lesquelles leur implémentation dans UNIX serait autre chose qu’un exercice d’utilisation de l’environnement UNIX.

Quel projet / application pourrait aider un développeur à apprendre les points forts d’UNIX?

Idéalement, à un moment donné pendant que je coderai ce projet, une ampoule apparaîtra flottant au-dessus de ma tête, s’allumera d’elle-même et je dirai “AHA!” J’ai déjà fait dans Windows.

Pour être clair, je ne doute pas qu’UNIX a ses atouts, je cherche juste un sharepoint départ intéressant pour le développement Unix.

Dans UNIX / Linux, “tout” est constitué de fichiers. Qu’en est-il de l’écriture d’un logiciel qui lit le périphérique de disque, comprend les tables de partition et le système de fichiers?

Une autre possibilité est d’écrire un module de kernel Linux qui fait “quelque chose”. Cela vous permettra certainement de mieux comprendre le fonctionnement du kernel Linux. Comme un avantage supplémentaire, il semble plus hardcore qu’il ne l’est vraiment;)

Un bon sharepoint départ serait Kernel Newbies .

Une idée en particulier: écrivez un jeu (simple) et conservez une «liste des meilleurs scores» dans certains répertoires publics de manière à ce que les utilisateurs ordinaires puissent voir les scores, mais pas les modifier directement (uniquement via le programme du jeu).

Faire cela vous montrera comment les permissions de fichier Unix et le setgid fonctionnent. Cela vaut la peine de réfléchir à la manière dont vous pourriez implémenter les mêmes fonctionnalités dans Windows.

Vous pourriez écrire des applications serveur en utilisant des E / S non bloquantes et des mécanismes tels que epoll, kqueue ou / dev / epoll pour pouvoir gérer un trafic à haut volume sans utiliser de threads.

C’est plus comme ça que tu travailles qui te influencera plus que tout. Une belle application multithread de quelque sorte va montrer les performances de threading généralement meilleures, cependant.

Vous pourriez envisager un projet impliquant l’parsing de grandes quantités de texte.

EDIT: Dans ce cas, vous devriez choisir une langue (comme Perl) plus appropriée pour le traitement de texte .

Bien sûr, cela pourrait être fait avec les outils MS, mais comme la plupart des applications MS utilisent des formats de fichiers binarys propriétaires (je suis en train de généraliser ici), l’accent est mis sur les applications qui manipulent les propres formats de MS.

Un projet qui vous a obligé à considérer les capacités de traitement de texte des outils Unix pourrait être très utile pour révéler les points forts d’Unix.