Sites techniques

  • Hacker News : un excellent site d'agrégation de liens pour la programmation
  • Reddit Programmation : idem ci-dessus
  • MSDN : le centre technique officiel de Microsoft, principalement de la documentation
  • InfoQ : applications d'entreprise, se concentrant sur le domaine du développement logiciel
  • OSChina : communauté technologique open source, excellente dans le domaine de l'open source
  • cnblogs, 51cto, csdn : communautés techniques courantes, chacune avec sa propre expertise
  • StackOverflow : site de questions-réponses techniques en informatique
  • GitHub : la plus grande plateforme de gestion de code source au monde, de nombreux projets open source bien connus s'y trouvent, comme le noyau Linux,
  • OpenStack et autres e-books informatiques gratuits :http://it-ebooks.info/
  • DevStore : boutique de services pour développeurs

Bons livres

  • Peopleware
  • Le Mythe de l'homme-mois
  • Code Complete 2
  • L'Art de la programmation informatique
  • Le perfectionnement personnel des programmeurs
  • Le Programmeur pragmatique
  • La pratique des programmeurs de haute performance (Devenir un programmeur exceptionnel a en fait peu à voir avec l'écriture de code)
  • Systèmes informatiques : perspective d'un programmeur
  • Réflexions sur le logiciel
  • Introduction aux algorithmes (MIT Press)
  • Mathématiques discrètes et leurs applications
  • Patrons de conception
  • La beauté de la programmation
  • Hackers et peintres
  • Perles de programmation
  • C++ Prime
  • C++ efficace
  • TCP/IP illustré
  • L'art de la programmation Unix
  • "Introduction à la psychanalyse" de Freud
  • Getting Things Done : l'art de la productivité sans stress

Outils de plateforme (tous les bonus open source)

  • Redmine/Trac : plateformes de gestion de projet
  • Jenkins/Jira (pas open source) : systèmes d'intégration continue (Apache Continuum, c'est le système d'intégration continue sous Apache, je n'ai pas encore eu le temps de me pencher dessus)
  • Sonar : plateforme de gestion de la qualité du code
  • Git, SVN : systèmes de gestion de versions de code source
  • GitLib/Gitorious : construisez votre propre serveur GitHub
  • gitbook:https://www.gitbook.io/Idéal pour écrire des livres, et bien sûr aussi très bien pour rédiger des documents
  • Travis-ci : essentiel pour l'intégration continue de projets open source, combiné avec GitHub,https://travis-ci.org/
  • Outils et communautés de test open source (Selenium, OpenQA.org)
  • Puppet : un moteur de gestion automatisée qui peut être appliqué aux plateformes Linux, Unix et Windows. Ce qu'on appelle un système de gestion de configuration consiste à gérer des ressources telles que les fichiers, les utilisateurs, les processus et les paquets logiciels sur les machines. Qu'il s'agisse de gérer 1 ou des dizaines de milliers de machines, Puppet peut facilement s'en charger.
  • Nagios : surveillance et alertes de l'état du système, il y a aussi Icinga (entièrement compatible avec tous les plugins Nagios, les principes de fonctionnement, les fichiers de configuration et les méthodes, presque exactement les mêmes. Configuration simple, fonctionnalités puissantes)
  • Ganglia : système de surveillance distribué
  • fleet : système d'init distribué

Lié aux crawlers (outils ludiques)

  • Phantomjs
  • berserkJS (une version améliorée basée sur PhantomJS)
  • SlimerJS
  • CasperJS
  • selenium

Outils de test de performance/de stress pour serveurs Web/répartiteurs de charge

  • http_load : Le programme est très petit, moins de 100K après décompression
  • webbench : C'est un outil de test de stress de site web sous Linux, il peut simuler jusqu'à 30 000 connexions simultanées pour tester la capacité de charge d'un site web
  • ab : ab est un outil de test puissant fourni avec Apache
  • Siege : Un outil de test de stress open source qui peut effectuer des accès concurrents multi-utilisateurs à un site web selon la configuration, enregistrer le temps de réponse de tous les processus de requête pour chaque utilisateur, et répéter sous un certain nombre d'accès concurrents.
  • squid (cache frontal), nginx (charge), nodejs (c'est vrai, il peut aussi, vous pouvez écrire un peu de code pour implémenter un répartiteur de charge haute performance) : répartiteurs de charge courants
  • Piwik : Système open source de statistiques de trafic de site web
  • ClickHeat : carte de chaleur des clics de site web open source
  • HAProxy : répartiteur de charge TCP/HTTP haute performance
  • ElasticSearch : moteur de recherche basé sur Lucene
  • Page Speed SDK et YSLOW
  • HAR Viewer : outil d'analyse HAR
  • Protractor : outil de test automatisé E2E (de bout en bout)

En lien avec le front-end web

  • GRUNT : exécuteur de tâches js
  • Sea.js : modularisation JS
  • Knockout.js : développement front-end MVVM, technologie de liaison
  • Angular.js : utilisez du HTML et du JS super dynamiques pour développer des applications web !
  • Highcharts.js, Flot : plugins de graphiques web courants
  • Raw : un très bon outil avancé de visualisation de données
  • Rickshaw : bibliothèque de graphiques de séries temporelles, peut être utilisée pour créer des graphiques en temps réel
  • JavaScript InfoVis Toolkit : un autre plugin de visualisation de données web
  • Pdf.js, afficher des PDF en HTML
  • ACE, CodeMirror : éditeurs de code HTML (ACE est vraiment excellent)
  • NProcess : magnifique barre de progression de chargement
  • impress.js : vous permet de créer des effets de présentation de contenu éblouissants (des similaires incluent reveal)
  • Three.js : bibliothèque Web 3D
  • Hightopo : bibliothèque d'UI de visualisation 2D et 3D basée sur HTML5
  • jQuery.dataTables.js : plugin de tableau extrêmement flexible
  • Raphaël : bibliothèque de dessin canvas en JS ; découvert plus tard que les graphiques de Baidu Index étaient dessinés avec elle
  • director.js : module de routage JS, routage front-end, routage back-end Node.js, etc., adapté à la création d'applications monopages
  • pace.js : Barre de progression de chargement de page
  • Bower : Gestionnaire de paquets web
  • jsnice : Outil de décompilation JS intéressant qui devine les noms de variables après compressionhttp://www.jsnice.org/
  • D3.js : est une bibliothèque de visualisation de données basée sur JavaScript (des bibliothèques similaires incluent P5.js)
  • Zepto.js : Un outil pour mobile qui remplace jQuery ; bien sûr, vous pouvez aussi utiliser jQuery Mobile.

Frameworks d'interface utilisateur : Foundation, Bootstrap, Pure, EasyUI, Polymer

Plusieurs sites web que les designers d'interface front-end doivent visiter : Dribbble, awwwards, unmatchedstyle, UIMaker

Mozilla Developer Center :https://developer.mozilla.org/en-US/

Ressources d'icônes : IcoMoon (mon préféré), Themify Icons, FreePik, Glyphiconsart

  • Dialog : Très belle boîte de dialogue
  • AdminLTE : Un projet open source sur GitHub, un framework de page d'administration back-end basé sur Bootstrap 3
  • Respond.js : Permet à IE6-8, qui ne comprennent pas l'amour, de prendre en charge le design responsive
  • require.js : bibliothèque de chargement de modules JS
  • select2 : une bibliothèque de remplacement de liste déroulante avec plus de fonctionnalités que chosen
  • AngularUI : bibliothèque d'interface utilisateur intégrée à Angular.js
  • normalize.css : une bibliothèque qui utilise des standards modernes pour que le HTML rendu par les différents navigateurs reste cohérent
  • CreateJS : moteur de jeu HTML5. Less, Compass : Simplifiez le développement CSS
  • emojify.js : utilisé pour reconnaître automatiquement le texte Emoji sur les pages web et l'afficher sous forme d'images
  • Simditor : un éditeur HTML open source agréable, simple et efficace
  • Sencha : un framework de développement mobile basé sur HTML5
  • SuperScrollorama+TweenMax+skrollr : Créez d'incroyables animations de défilement parallaxe pour pages web
  • jquery-smooth-scroll : comme ci-dessus, plugin de défilement fluide
  • Animate.css : une bibliothèque CSS qui implémente divers effets d'animation
  • Emmet : indispensable pour les développeurs front-end, prédécesseur de ZenCode
  • MagicDraw : outil de diagramme UML

Traitement de big data / analyse de données / outils distribués

  • Hadoop : un système de fichiers distribué. Combiné à son modèle de programmation MapReduce, il peut être utilisé pour le traitement par lots de données massives (sans parler de Hive, Pig, HBase, etc.). Il convient de mentionner la distribution Hadoop de Cloudera, CDH5, qui est basée sur YARN MRv2 et intègre Spark, directement utilisable en environnement de production. Elle est très utile pour que les entreprises construisent rapidement des entrepôts de données.

  • Ceph : système de fichiers distribué Linux (particularité : aucun nœud central)

  • Storm : traitement de données en flux en temps réel. Vous pouvez consulter une introduction d'IBM. (Il y a aussi S4 de Yahoo, qui fait également du traitement de données en flux.)

  • Spark : traitement de données en flux à grande échelle (peut gérer trois scénarios courants de traitement de données en entreprise : traitement par lots complexe ; requête interactive basée sur des données historiques ; traitement de données en flux basé sur des flux de données en temps réel). CSDN a un bon article qui le présente.

  • Spark Streaming : framework de calcul en temps réel basé sur Spark

  • Tachyon : système de fichiers distribué en mémoire

  • Mesos : un gestionnaire de cluster pour frameworks de calcul, offrant une isolation et un partage efficaces des ressources entre applications ou frameworks distribués. Impala : un moteur d'analyse de big data open source de nouvelle génération qui fournit une sémantique SQL et est plus rapide que Hive.

  • SNAPPY : système de compression de données rapide, adapté à une utilisation dans l'écosystème Hadoop

  • Kafka : système de files d'attente de messages distribué à haut débit

  • ActiveMQ : produit par Apache, le bus de messages open source le plus populaire et le plus puissant

  • MQTT : Message Queuing Telemetry Transport, un protocole de messagerie instantanée développé par IBM, qui pourrait devenir un composant important de l'Internet des objets

  • RabbitMQ : Je me rappelle qu'OpenStack utilise ceci, non ?

  • ZeroMQ : Prétend simplifier le calcul distribué ; c'est une file de messages distribuée. Vous pouvez consulter un article de Yunfeng qui le présente. Systèmes de collecte de journaux open source : scribe, chukwa, kafka, flume. Voici un article de comparaison.

  • Zookeeper : Projet open source fiable pour la coordination distribuée

  • Databus : Système de capture de données en temps réel et à faible latence de LinkedIn

Acquisition de sources de données : Flume, Google Refine, Needlebase, ScraperWiki, BloomReach

Technologies de sérialisation : JSON, BSON, Thrift, Avro, Google Protocol Buffers

NoSql : Apache Hadoop, Apache Casandra, MongoDB, Apache CouchDB, Redis, BigTable, HBase, Hypertable, Voldemort, Neo4j

Liés à MapReduce : Hive, Pig, Cascading, Cascalog, mrjob, Caffeine, S4, MapR, Acunu, Flume, Kafka, Azkaban, Oozie, Greenplum

Traitement des données : R, Yahoo! Pipes, Mechanical Turk, Solr/Lucene, ElasticSearch, Datameer, Bigsheets, Tinkerpop. NLP (traitement du langage naturel) : Natural Language Toolkit, Apache OpenNLP, Boilerpipe, OpenCalais

Apprentissage automatique : WEKA, Mahout, scikits.learn, SkyTree

Technologies de visualisation : GraphViz, Processing, Protovis, Google Fusion Tables, Tableau, Highcharts, ECharts (celui de Baidu est plutôt bon), Raphaël.js

  • Kettle : outil ETL open source
  • Pentaho : système BI open source avec les workflows au cœur
  • Mondrian : serveur ROLAP open source
  • Oozie : moteur d'ordonnancement de workflows open source pour Hadoop

Outils open source d'analyse et de visualisation de données : Weka, Orange, KNIME

Cobar : middleware MySQL distribué d'Alibaba

C & C++

Thrift : utilisé pour développer des services évolutifs et inter-langages. (Parmi les similaires, on trouve Avro, Google Protocol Buffers.)

libevent : une bibliothèque réseau événementielle, prend en charge Windows, Linux, BSD et d'autres plateformes. Utilise en interne des appels système tels que select, epoll et kqueue pour gérer le mécanisme d'événements. (Au passage, il existe aussi libev.)

Boost : tout est dit, quasi-bibliothèque standard C++

Ptmalloc\Valgrind\Purify

Architecture de NetworkServer : acceptor -> dispatcher -> worker (ce n'est pas un outil, au passage)

breakpad : module de vidage et d'analyse de crash, utilisé dans de nombreux rapports de crash

Lié à l'interface utilisateur : Sans parler de MFC, BCG et Qt. Parmi les plus avancés, on trouve les technologies HTML et DirectUI : libcef (basé sur le noyau Chrome ; penser à utiliser HTML5 pour développer des pages est un peu excitant), HtmlLayout, Duilib, Bolt. Pour les non-C++, il y a aussi node-webkit, qui est plutôt bien, intégrant les noyaux Node.js et WebKit.

Lié au développement de jeux

MINA : Utiliser Java pour développer des serveurs de jeux mobiles et de jeux web. (Au fait, il y a aussi Netty, qui est également puissant. Les deux sont basés sur NIO.)

HP-Socket : J'ai vu des serveurs de jeux web construits avec ça

Le blog technique de Yunfeng :http://blog.codingnow.com/

OGRE : Le célèbre moteur de rendu graphique 3D

OpenVDB : La bibliothèque d'effets C++ open source de DreamWorks

cocos2d : Moteur de jeu 2D multiplateforme

unity3d : Moteur de jeu 3D multiplateforme, très populaire

Node.js : Beaucoup l'utilisent aussi pour développer des jeux mobiles et des serveurs. (Le Pomelo de NetEase en est un exemple.)

Agrégation de journaux, collecte distribuée de journaux

Scribe : (nodejs + scribe + inotify de Facebook pour la synchronisation des journaux)

logstash : Système puissant de collecte de journaux ; vous pouvez construire une plateforme puissante d'analyse de journaux basée sur logstash + kibana + elasticsearch + redis

log.io : Système de collecte de journaux en temps réel développé avec Node.js

RTP, protocole de transport en temps réel et audio/vidéo

RTP, RTCP, RTSP -> librtp, JRTPLIB (suivant la norme RFC1889)

Tampon circulaire, utilisé pour la transmission de données en temps réel

SDL,ffmpeg,live555,Speex

Red5 : Serveur de streaming multimédia Flash open source développé en Java. Il prend en charge : la conversion de l'audio (MP3) et de la vidéo (FLV) en flux de lecture ; l'enregistrement des flux de lecture des clients (FLV uniquement) ; les objets partagés ; la publication de flux en direct ; les appels distants.

Python

Eric, Eclipse+pydev, un assez bon IDE Python

PyWin : bibliothèque de programmation pour l'API Win32

numpy : bibliothèque de calcul scientifique, principalement utilisée pour le calcul matriciel à grande échelle, etc. De plus, il y a SciPy et Matplotlib.

Lié à l'interface graphique : PyQt, PyQwt

supervisor : outil de surveillance des processus

Lié à Java

IDE courants : IntelliJ IDEA, Eclipse, NetBeans

Lié au développement web : Tomcat, Resin, Jetty, WebLogic, etc. Composants courants : Struts, Spring

Hibernate. Netty : framework de programmation d'applications réseau asynchrone piloté par événements, adapté à la programmation réseau à forte concurrence (framework NIO)

MINA : Permet de développer facilement des applications réseau hautes performances et haute fiabilité (également un framework NIO). De nombreux serveurs de jeux mobiles sont développés avec.

jOOQ : framework ORM Java. Activiti : moteur de workflow. Des solutions similaires incluent jBPM, Snaker.

Perfuse : un package d'interface utilisateur utilisé pour afficher des données structurées et non structurées dans des graphes visuels interactifs

Gephi : logiciel d'analyse de réseaux complexes, principalement utilisé pour la visualisation et l'exploration interactives de divers réseaux et systèmes complexes, graphes dynamiques et hiérarchiques en tant qu'outil open source

Nutch : projet de crawler bien connu ; Hadoop a été développé à partir de ce projet

web-harvest : outil d'extraction de données web

Outils POM : Maven + Artifactory. Netflix

Curator : bibliothèque cliente Zookeeper open source de Netflix, utilisée pour simplifier la programmation du client Zookeeper

Akka : un framework de traitement de la concurrence basé sur le modèle d'acteurs

EclEmma : outil de test de couverture

En rapport avec .NET

Xilium.CefGlue : wrapper .NET basé sur le framework CEF, pour développer des navigateurs à noyau Chrome sur .NET

CefSharp : comme ci-dessus, il y a un wrapper WebKit, ce qui facilite l'interaction entre C# et JS.

netz : outil gratuit de compression d'exécutables .NET

SmartAssembly : un outil démentiel d'optimisation et d'obfuscation de code .NET

NETDeob0 : outil de désobfuscation .NET, véritablement « le diable est haut d'un pied, le Tao est haut de dix pieds » (il y a aussi de4dot sur GitHub, tous deux open source)

ILMerge : regrouper toutes les DLL et tous les fichiers exe référencés dans un seul fichier exe

ILSpy : outil de décompilation .NET open source

Javascript.NET : un très bon moteur d'exécution JS, encapsulant V8

NPOI : opérations Excel

DotRAS : module de service d'accès distant

WinHtmlEditor : éditeur HTML pour WinForms

SmartThreadPool : un pool de threads avec des fonctionnalités avancées implémenté en C#

Snoop : utilitaire d'espionnage WPF

Autofac : framework IoC léger

HtmlAgilityPack : un outil puissant pour analyser du HTML

Quartz.NET : planification de tâches

HttpLib : @CodePlex, simplifie les requêtes HTTP

SuperSocket : simplifie les opérations de Socket. Sur cette base, il existe également SuperWebSocket, qui peut être utilisé pour développer des serveurs WebSocket autonomes.

DocX : manipuler des fichiers Word sans installer Office

Dapper : ORM léger avec de bonnes performances

HubbleDotNet : système de recherche en texte intégral qui peut se connecter à des bases de données

fastJSON : @CodeProject, classe de sérialisation JSON haute performance

ZXing.NET : @CodePlex, lié aux codes QR et aux codes-barres

Nancy : serveur HTTP léger. Vous pouvez vous affranchir d’IIS pour les petites applications web (Nancy.Viewengines.Razor peut ajouter le moteur Razor).

AntiXSS : bibliothèque de défense contre les XSS de Microsoft, Microsoft Web Protection

LibraryJint : interpréteur JavaScript

CS-Script : exécuter des fichiers de code C# comme des scripts

Jexus : serveur ASP.NET gratuit, facile à utiliser et hautes performances sous Linux

Clay : rend le type dynamic encore plus flexible, en vous permettant d’écrire du C# comme du JavaScript

DynamicJSON : obtenir des données JSON sans définir de modèles de données

Antlr : générateur d’analyseur syntaxique open source (pas vraiment spécifique à C#, également disponible pour d’autres langages)

SharpPcap : wrapper C# pour WinPcap, une formidable bibliothèque d’analyse de paquets réseau (inclut PacketNotNet pour l’analyse des protocoles de paquets)

Roslyn : compilateur C# et VB

ImageResizer : Contrôlez librement la taille des images côté serveur. Un véritable outil magique. Il est pratique pour un CMS de téléverser de petites images sur mobile et de grandes images sur PC.

Lié à l'interface utilisateur : DevExpress, Fluent (style Office 07), mui (Modern UI for WPF)

NetSparkle : composant de mise à jour automatique d'application

ConfuserEx : outil d'obfuscation .NET open source

ServiceStack : framework de services Web open source haute performance, peut être utilisé pour construire des services REST haute performance. Expression

Evaluator : Eval pour C#, gère les expressions sous forme de chaînes

http://nugetmusthaves.com/

Outils courants

  • Fiddler : un outil de débogage front-end Web très utile, bien sûr pour le protocole HTTP sous-jacent. Normalement, les outils de débogage intégrés aux navigateurs comme Chrome suffisent, mais dans des cas particuliers, vous devez encore l'utiliser.
  • Wireshark : outil bien connu d'analyse de paquets réseau
  • PowerCmd : un remplacement puissant pour Windows Cmd
  • RegexBuddy : puissant outil de test d'expressions régulières
  • Soure Insight : un outil magique pour lire le code source
  • SublimeText : l'éditeur préféré des programmeurs
  • Database.NET : un client de base de données relationnelle générique basé sur .NET 4.0. Il est très pratique pour des tâches simples.
  • Navicat Premium : prend en charge MySql, PostgreSQL, Oracle, Sqlite et SQL Server. Il n'est pas aussi polyvalent que Database.NET, mais il offre de bien meilleures performances. Il dispose également d'une fonctionnalité de sauvegarde intégrée pour les sauvegardes planifiées de bases de données.
  • Synergy : un clavier et une souris pour contrôler plusieurs ordinateurs sur un réseau local
  • DameWare : ensemble d'outils d'assistance à distance (je l'utilise principalement au travail pour contrôler le grand écran)
  • Radmin : outil de contrôle à distance. Je l'ai utilisé pendant un certain temps.
  • DameWare, qui nécessite aussi d'être cracké et ne prend pas bien en charge Win7 ; à la place, j'ai trouvé que celui-ci fonctionne bien.
  • Listary : un "outil super magique" qui peut grandement améliorer la vitesse et l'efficacité de la navigation et de la recherche de fichiers dans Windows.
  • Clover : ajoute des onglets à l'Explorateur Windows
  • WinLaunch : un outil de lancement qui simule Mac OS
  • Fritzing : dessin de schémas de circuits
  • LICEcap : création de tutoriels GIF, git,
  • svn : Système de gestion de versions. Enigma Virtual Box (encapsule exe, dll, etc. dans un seul programme exécutable).
  • Open DBDiff (pour SqlServer) synchronisation de base de données
  • SymmetricDS : synchronisation de base de données
  • BIEE, Infomatica, SPSS, weka, langage R : analyse de données
  • CodeSmith, LightSwitch : génération de code
  • Pandoc : un outil de conversion Markdown pour publier des livres. J'ai joué avec Docbook, mais maintenant Markdown est plus populaire.
  • Window Magnet [Mac] : améliore la gestion des fenêtres Mac, avec la possibilité, comme sous Win7, de faire glisser les fenêtres vers les bords de l'écran pour les redimensionner automatiquement.
  • log explorer : consulter les journaux SqlServer. dépendance
  • walker : interroger les dépendances DLL des applications Windows
  • Shairport4w : transmettre l'audio depuis iPhone, iPad, iPod vers un PC via le protocole AirPlay
  • ngrok : outil de pénétration d'intranet. Axure : outil de prototypage rapide. Il existe aussi un outil de dessin en ligne créé par une équipe de startup locale, qui fonctionne très bien.http://www.processon.com
  • tinyproxy : (Linux) un petit serveur proxy prenant en charge les protocoles HTTP et HTTPS. EaseUS Partition
  • Master : un outil de redimensionnement de partition super simple, et plutôt rapide. Si votre lecteur C manque d'espace, utilisez-le pour récupérer un peu d'espace sur le lecteur D — pas besoin de réinstaller le système.
  • CheatEngine : un outil indispensable pour modifier les valeurs de mémoire lorsque vous jouez à des jeux (je me souviens l'avoir utilisé en jouant à Xuan-Yuan Sword 6, c'était super pratique).
  • ApkIDE : artefact de décompilation Android. Outils de contournement (Free Gate, Tianxing Browser)

Outils de design : Sketch, OmniGraffle

MindManger : cartographie mentale