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
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