Ceci est une ancienne révision du document !
Tools
Recently, I’ve made a number of changes to my approach when it comes to coding or my environment in general. Therefore, I wanted to spend this month’s C&C discussing the tools I use, and some tips that make my life easier. Tools As many of you probably already know - I’m a programmer with a current focus on web development. As such, most of these tools are geared towards that.
J'ai récemment largement changé mon approche du codage ou de mon environnement en général. Ainsi, je voulais profiter du C & C de ce mois-ci pour discuter des outils que j'utilise, et de quelques trucs qui rendent ma vie plus facile.
Outils
Comme beaucoup d'entre vous le savent probablement déjà, je suis un programmeur avec actuellement un intérêt particulier vers le développement web. C'est pour cela que la plupart de ces outils sont orientés dans cette direction.
• Atom (http://atom.io) - Created by the folks from GitHub, it offers a similar feature set as Sublime Text, but is free and open source. It’s built on web technologies, so I have noticed it being slower than Sublime when opening massively huge files. However, it has such a swath of plugins, that there’s not much it can’t do. My key plugins are: emmet, git-plus, project-manager, and terminal-plus. The rest of the plugins are typically syntax highlighting (and one JS linter). • Docker (http://www.docker.com/) - This is a containerization system. What this means, is that you can set up software and environments in a container form, which is a step removed from a virtual machine. The difference here is that Docker requires a Linux Kernel, and then passes direct access of the kernel to the container. This is both more efficient, and faster, than something like Vagrant. Best of all - the containers are moveable. • Caffeine (https://launchpad.net/caffeine) - Most people probably already know this one, but it’s a statusbar application that prevents the display from going to sleep. Extremely useful if you’re trying to read something off a monitor while doing something else (in my case, reading wiring schematics off a PDF while soldering). This avoids the need for the “mouse nudge”.
• Atom (http://atom.io): Créé par les gens de GitHub, il offre des fonctionnalités similaires à Sublime Text, mais il est libre et open source. Il est construit sur les technologies web, j'ai donc remarqué qu'il était plus lent que Sublime Text lors de l'ouverture massive d'énormes fichiers. Cependant, il a une palanquée de modules, qu'il n'y a pas grand-chose qu'il ne puisse faire. Mes modules préférés sont: emmet, git-plus, project-manager, et terminal-plus. Le reste des plugins servent généralement à la coloration syntaxique (et un analyseur de JavaScript).
• Docker (http://www.docker.com/): C'est un système de containers. Cela signifie que vous pouvez configurer des logiciels et des environnements sous forme de containers, ce qui est une sorte de virtualisation. La différence est que ici Docker tourne sur un noyau Linux, et passe ensuite les accès directement du noyau vers le conteneur. C'est à la fois plus efficace et plus rapide, que quelque chose comme Vagrant. Et cerise sur le gâteau, les containers sont déplaçables.
• Caffeine (https://launchpad.net/caffeine): La plupart des gens le connaissent probablement déjà, c'est une barre d'état qui empêche l'écran de passer en veille. Extrêmement utile si vous essayez de lire quelque chose sur un moniteur tout en faisant autre chose (dans mon cas, lire des schémas de câblage sur un PDF tout en soudant). Il évite d'avoir besoin de donner un «coup de pouce à la souris».
• AwesomeWM (https://awesome.naquadah.org/) - My tiling window manager of choice for a long time now. I typically run multiple desktop environments on my NUC, and switch to whichever is most useful for my tasks. However, almost all my productivity time (programming, testing, writing FCM articles, etc) are done in a tiling window manager. The reason for this is simple - when I’m working, I tend to tile my windows manually on any other computer, so being able to have it done automatically makes my life easier. I’ve also tried and used XMonad, DWM, i3, etc. I do tend to prefer the dynamic tiling systems, but the main reason I stick with Awesome is simple: I have my configuration file the way I like it, and it comes integrated with a system tray. If anyone has a recommendation for one that I may also like, feel free to let me know (my email is at the end of the article). • Bittorrent Sync (https://getsync.com/) - This is my primary method of sharing files between computers. Especially for files that I require for work - as Sync is a direct peer-to-peer sync, it avoids the privacy questions of storing it on an external server that I don’t control (such as Dropbox). Instead, I run it on my NUC, laptop, and a NAS that is always on. That way, the synchronisation is always available to me. • MPD (https://www.musicpd.org/) - The Music Player Daemon - it’s essentially a music server that runs in the background, and can be interfaced by a variety of front-end applications (such as mpc, or ncmpcpp). It’s my preference because it will remember playback location after a reboot, can be used from the command-line, and creates a database. My front-end of choice is ncmpcpp.
• AwesomeWM (https://awesome.naquadah.org/): Mon gestionnaire de tuiles préféré depuis longtemps. Je travaille généralement sur de multiples de bureau sur mon ordi et passe vers celui qui est le plus utile pour ma tâche courante. Mais, presque tout mon temps de productivité (programmation, tests, rédaction d'articles du FCM, etc.) est passé dans un gestionnaire de tuiles. La raison en est simple: quand je travaille, j'ai tendance à organiser mes fenêtres manuellement sur un autre écran, donc être capable de le faire automatiquement rend ma vie plus facile. J'ai aussi essayé et utilisé XMonad, DWM, i3, etc. J'ai vraiment tendance à préférer les systèmes de gestions de tuiles dynamiques, mais la principale raison pour laquelle je reste fidèle à Awesome est simple: le fichier de configuration est de la façon dont je l'aime, et il y a aussi l'intégration dans une barre système. Si quelqu'un veut me recommander un autre que je puisse également aimer, qu'il se sente libre de m'en faire part (mon email est à la fin de l'article).
• Bittorrent Sync (https://getsync.com/): C'est ma principale méthode de partage de fichiers entre ordinateurs. Surtout pour les fichiers dont j'ai besoin pour le travail, comme Sync est une synchronisation directe en peer-to-peer, ça évite la question de la confidentialité du stockage sur un serveur externe que je ne contrôle pas (comme Dropbox). Au lieu de cela, je le lance sur mon ordinateur, mon portable, et un NAS qui est toujours actif. De cette façon, la synchronisation est toujours disponible pour moi.
• MPD (https://www.musicpd.org/): Le Music Player Daemon est essentiellement un serveur de musique qui tourne en tâche de fond, et a des interfaces avec un grand nombre d'applications frontales (comme mpc ou ncmpcpp). Il a ma préférence parce qu'il se souvient de l'emplacement de la lecture après un redémarrage, il peut être utilisé à partir de la ligne de commande, et et il crée une base de données. Mon IHM préférée est ncmpcpp.
Tips
Tips • Hack (Font) (http://sourcefoundry.org/hack/) - This is an absolutely superb monospace font for coding. I currently use it on all computers in Atom and in my terminal. I used to use Adobe’s Source Sans Pro, but since discovering Hack, I haven’t got it enabled anywhere anymore. • Markdown (https://daringfireball.net/projects/markdown/) - This is a mark-up language that I use for almost anything that I know will end up on a website. I can combine it with static site generators, or just quickly compile it into an HTML page (and therefore also save it as a PDF). • reStructuredText (http://docutils.sourceforge.net/rst.html) - Similar to Markdown, except I use this for most python-based projects (including a local readthedocs site I run, keeping my work project documentation organized).
Trucs
• Hack (Font) (http://sourcefoundry.org/hack/): C'est est une superbe police à chasse fixe pour le codage. Je l'utilise actuellement sur tous les ordinateurs Atom et sur mon terminal. J'avais l'habitude d'utiliser Source Sans Pro d'Adobe, mais depuis la découverte de Hack, je ne l'ai plus activé nulle part.
• Markdown (https://daringfireball.net/projects/markdown/): C'est est un langage de balisage que j'utilise pour presque tout ce que je sais qui finira sur un site Web. Je peux le combiner avec des générateurs de sites statiques, ou tout simplement rapidement le compiler dans une page HTML (et donc aussi l'enregistrer au format PDF). • reStructuredText (http://docutils.sourceforge.net/rst.html): Semblable à Markdown, sauf que je l'utilise pour la plupart des projets python (y compris un site local de manuels, pour garder ma documentation de projets organisée).
• Git/version control (https://git-scm.com/) - Using a version control system to keep your configuration files up to date and backed up is a pretty common practice. Saving it off-site on a private (or public) repository on Bitbucket or GitHub is a terrific way to make sure you’ve always got your important configuration files available. I also use it for managing my scaffolding for work projects (a scaffold is a bare bones project folder, containing all my task runner setup and folders). • Bash - Learning bash is extremely useful for automating tasks (using cron) or just grouping together a typical workflow (such as using imagemagick to crop an image, and then copying it to a new location). • Shell aliases - For a single command with a set of arguments you usually use, an alias is my preference (over a Bash script). I use this (for example) for keeping my various SSH logins straight.
• Git/version control (https://git-scm.com/): L'utilisation d'un système de contrôle de version pour garder vos fichiers de configuration à jour et sauvegardés est une pratique assez courante. Les sauvegarder hors site sur un dépôt privé (ou public) sur Bitbucket ou GitHub est un excellent moyen de vous assurer que vous avez toujours vos fichiers de configuration importants disponibles. Je l'utilise aussi pour la gestion de mes squelettes de projets (un squelette est une structure de dossier de projet, contenant toute ma configuration de tâches et de dossiers). • Bash: Apprendre bash est extrêmement utile pour automatiser des tâches (en utilisant cron) ou tout simplement pour regrouper un flux de travail typique (comme utiliser ImageMagick pour recadrer une image, puis la copier vers un nouvel emplacement). • les alias du Shell: Pour une commande seule avec un ensemble d'arguments que vous utilisez habituellement, je préfère avoir un alias (sur un script Bash). Je l'utilise, par exemple, pour avoir directement mes différentes connexions SSH.
• Keyboard shortcuts - This is a very generic point, certainly. However, when I’m busy working (especially in a tiling window manager), I hardly ever need to touch my mouse. I find this to be the most efficient way to work for me. When first setting up an environment, it’s not uncommon for me to spend a good hour or two setting up shortcuts and reorganizing default ones so that they don’t conflict, and I can easily reach any important combination as fast as possible. I hope this article proves to be interesting for some readers. If you’ve got your own preferences, you’re of course welcome to stick to those! However, this article is geared towards anyone who is looking for recommendations. If you have any questions (or feel I should look at an alternative), feel free to email me at lswest34+fcm@gmail.com.
• Raccourcis clavier: voilà un sujet bateau. Mais, quand je suis occupé à travailler (en particulier avec un gestionnaire de tuiles), je n'ai jamais besoin de toucher ma souris. Je trouve que c'est la façon la plus efficace de travailler pour moi. Lors de la première mise en place d'un environnement, il n'est pas rare que je passe une bonne heure ou deux à la mise en place des raccourcis et à réorganiser ceux par défaut de sorte qu'ils n'y ait pas de conflit, et je peux facilement atteindre une combinaison importante aussi vite que possible.
J'espère que cet article s'est révélé intéressant pour certains lecteurs. Si vous avez vos propres préférences, vous êtes bien sûr invités à les garder! Toutefois, cet article est destiné à tous ceux qui recherchent des conseils. Si vous avez des questions (ou pensez que je devrais étudier une alternative), n'hésitez pas à me contacter à lswest34+fcm@gmail.com.