Sitios técnicos
- Hacker News: excelente sitio de agregación de enlaces sobre programación
- Programming reddit: igual que el anterior
- MSDN: centro técnico oficial de Microsoft, principalmente documentación
- InfoQ: aplicaciones a nivel empresarial, enfocado en el ámbito del desarrollo de software
- OSChina: comunidad técnica de código abierto, hace un buen trabajo en lo que respecta a código abierto
- cnblogs, 51cto, csdn: comunidades técnicas comunes, cada una con sus especialidades
- StackOverflow: sitio de preguntas y respuestas sobre tecnología de la información
- GitHub: la plataforma de gestión de código fuente más grande del mundo, muchos proyectos de código abierto conocidos están allí, como el kernel de Linux,
- OpenStack, etc. Libros electrónicos gratuitos de TI:http://it-ebooks.info/
- DevStore: tienda de servicios para desarrolladores
Buenos libros
- Peopleware
- The Mythical Man-Month
- Code Complete 2
- The Art of Computer Programming
- La autocultivación del programador
- The Pragmatic Programmer
- La práctica del programador de alta eficiencia (convertirse en un programador destacado no tiene mucho que ver con escribir código)
- Computer Systems: A Programmer's Perspective
- Joel on Software
- Introduction to Algorithms (MIT Press)
- Matemáticas discretas y sus aplicaciones
- Design Patterns
- Beauty of Programming
- Hackers & Painters
- Programming Pearls
- C++ Prime
- Effective C++
- TCP/IP Illustrated
- The Art of Unix Programming
- Introducción al psicoanálisis, Freud
- Getting Things Done: The Art of Stress-Free Productivity
Herramientas de plataforma (todas son excelentes herramientas de código abierto)
- Redmine/Trac: plataforma de gestión de proyectos
- Jenkins/Jira (no es de código abierto): sistema de integración continua (Apache Continuum, este es un sistema de CI bajo Apache, aún no he tenido tiempo de investigarlo)
- Sonar: plataforma de gestión de calidad de código
- Git, SVN: sistemas de control de versiones de código fuente
- GitLib/Gitorious: construye tu propio servidor GitHub
- gitbook:https://www.gitbook.io/Excelente herramienta para escribir libros, por supuesto también es muy buena para escribir documentación
- Travis CI: esencial para la integración continua de proyectos de código abierto, se combina con GitHubhttps://travis-ci.org/
- Herramientas y comunidades de pruebas de código abierto (Selenium, OpenQA.org)
- Puppet: un motor de gestión automática, aplicable a plataformas Linux, Unix y Windows. El llamado sistema de gestión de configuraciones gestiona recursos como archivos, usuarios, procesos, paquetes de software en las máquinas. Ya sea gestionando una o decenas de miles de máquinas, Puppet puede manejarlo fácilmente.
- Nagios: monitoreo y alertas de estado del sistema. También está Icinga (totalmente compatible con todos los plugins de Nagios, principios de funcionamiento, archivos de configuración y métodos, casi idénticos. Configuración simple, potente)
- Ganglia: sistema de monitoreo distribuido
- Fleet: sistema init distribuido
Relacionado con rastreadores web (herramientas divertidas)
- Phantomjs
- berserkJS (versión mejorada basada en PhantomJS)
- SlimerJS
- CasperJS
- selenium
Herramientas de rendimiento/pruebas de esfuerzo para servidores web / equilibradores de carga
- http_load: el programa es muy pequeño, no llega ni a 100K después de descomprimir
- webbench: es una herramienta de pruebas de esfuerzo para sitios web en Linux, puede simular hasta 30,000 conexiones concurrentes para probar la capacidad de carga del sitio
- ab: ab es una potente herramienta de pruebas que viene con Apache
- Siege: una herramienta de pruebas de esfuerzo de código abierto que puede realizar accesos concurrentes de múltiples usuarios a un sitio web según la configuración, registra el tiempo de respuesta de todos los procesos de solicitud de cada usuario y se repite bajo un cierto número de accesos concurrentes
- Squid (caché de front-end), Nginx (balanceo de carga), Node.js (sí, también puede, con un poco de código se puede implementar un equilibrador de carga de alto rendimiento): equilibradores de carga de uso común
- Piwik: sistema de estadísticas de visitas a sitios web de código abierto
- ClickHeat: mapa de calor de clics en sitios web de código abierto
- HAProxy: equilibrador de carga de alto rendimiento TCP/HTTP
- ElasticSearch: motor de búsqueda basado en Lucene
- Page Speed SDK y YSlow
- HAR Viewer: herramienta de análisis HAR
- Protractor: herramienta de pruebas automatizadas E2E (de extremo a extremo)
Relacionado con el front-end web
- GRUNT: js task runner
- Sea.js: modularización de JS
- Knockout.js: desarrollo de front-end con MVVM, tecnología de enlace de datos
- Angular.js: ¡Desarrolla aplicaciones web con HTML y JS súper dinámicos!
- Highcharts.js, Flot: complementos de gráficos web de uso común
- Raw: una excelente herramienta avanzada de visualización de datos
- Rickshaw: biblioteca de gráficos de series temporales, se puede usar para construir gráficos en tiempo real
- JavaScript InfoVis Toolkit: otro complemento de visualización de datos web
- Pdf.js, muestra PDF en HTML
- ACE, CodeMirror: editores de código HTML (¡ACE es excelente!)
- NProcess: hermosa barra de progreso de carga
- impress.js: te permite crear efectos de presentación de contenido deslumbrantes (también existe reveal, similar)
- Three.js: biblioteca web 3D
- Hightopo: biblioteca de interfaz de usuario de visualización 2D y 3D basada en HTML5
- jQuery.dataTables.js: complemento de tabla altamente flexible
- Raphaël: biblioteca de dibujo con JavaScript y canvas; luego descubrí que los gráficos de Baidu Index están dibujados con ella
- director.js: módulo de enrutamiento JS, enrutamiento de front-end, enrutamiento de back-end con Node.js, etc., adecuado para construir aplicaciones de una sola página
- pace.js: barra de progreso de carga de página
- Bower: gestor de paquetes web
- jsnice: interesante herramienta de descompilación de JS, adivina nombres de variables comprimidashttp://www.jsnice.org/
- D3.js: es una biblioteca de visualización de datos basada en JavaScript (también hay similares como P5.js)
- Zepto.js: algo que reemplaza a jQuery en el lado móvil, por supuesto también se puede usar jquery-mobile
Frameworks de UI: Foundation, Bootstrap, Pure, EasyUI, Polymer
Varios sitios web imprescindibles para diseñadores de UI front-end: Dribbble, awwwards, unmatchedstyle, UIMaker
Centro de desarrolladores de Mozilla:https://developer.mozilla.org/en-US/
Recursos de iconos: IcoMoon (mi favorito), Themify Icons, FreePik, Glyphiconsart
- Dialog: un cuadro de diálogo muy bonito
- AdminLTE: un proyecto de código abierto en GitHub, un framework de páginas de administración basado en Bootstrap 3
- Respond.js: hace que IE6-8, que no entienden de amor, admitan diseño responsivo
- require.js: biblioteca de carga de módulos JS
- select2: una biblioteca de reemplazo para cuadros de selección con más funciones que chosen
- AngularUI: biblioteca de UI que integra Angular.js
- normalize.css: una biblioteca que adopta estándares modernos para que el HTML renderizado por varios navegadores se mantenga consistente
- CreateJS: motor de juegos HTML5. Less, Compass: simplifican el desarrollo de CSS
- emojify.js: se utiliza para reconocer automáticamente texto Emoji en páginas web y mostrarlo como imágenes
- Simditor: un buen editor de HTML de código abierto, simple y eficiente
- Sencha: framework de desarrollo móvil basado en HTML5
- SuperScrollorama + TweenMax + skrollr: crean animaciones web con efectos de desplazamiento de paralaje súper geniales
- jquery-smooth-scroll: igual que el anterior, complemento de desplazamiento suave
- Animate.css: biblioteca CSS que implementa varios efectos de animación
- Emmet: imprescindible para ingenieros frontend, predecesor de ZenCode.
- MagicDraw: herramienta de diagramas UML.
Procesamiento de big data / análisis de datos / herramientas distribuidas
Hadoop: sistema de archivos distribuido; junto con su modelo de programación MapReduce se puede usar para el procesamiento por lotes de datos masivos (Hive, Pig, HBase, etc., ya no los menciono). Cabe destacar la rama de Hadoop de Cloudera, CDH5, que basada en YARN MRv2 integra Spark y es un Hadoop directamente utilizable en entornos de producción; es muy útil para que las empresas construyan rápidamente data warehouses.
Ceph: sistema de archivos distribuido para Linux (característica: sin centro).
Storm: procesamiento de datos en flujo (streaming) en tiempo real; se puede ver una introducción de IBM (también está S4 de Yahoo, que también hace procesamiento de datos en streaming).
Spark: procesamiento de datos en streaming a gran escala (puede manejar los tres escenarios comunes de procesamiento de datos en las empresas: procesamiento complejo de datos por lotes (batch data processing); consultas interactivas basadas en datos históricos (interactive query); procesamiento de datos basado en flujos de datos en tiempo real (streaming data processing)). Hay un artículo bastante bueno en CSND al respecto.
Spark Streaming: framework de computación en tiempo real basado en Spark.
Tachyon: sistema de archivos distribuido en memoria.
Mesos: un administrador de clústeres para frameworks de computación; proporciona aislamiento y compartición eficiente de recursos entre aplicaciones o frameworks distribuidos. Impala: motor de análisis de big data de código abierto de nueva generación, proporciona semántica SQL, más rápido que Hive.
SNAPPY: sistema rápido de compresión de datos, adecuado para el ecosistema Hadoop.
Kafka: sistema de cola de mensajes distribuido de alto rendimiento (throughput).
ActiveMQ: producido por Apache, el bus de mensajes de código abierto más popular y potente.
MQTT: Message Queuing Telemetry Transport (transporte de telemetría de colas de mensajes) es un protocolo de mensajería instantánea desarrollado por IBM, que podría convertirse en un componente importante del Internet de las Cosas (IoT).
RabbitMQ: recuerdo que OpenStack usaba esto.
ZeroMQ: se dice que hace la computación distribuida más simple; es una cola de mensajes distribuida. Se puede ver un artículo de Yunfeng. Sistemas de recolección de logs de código abierto: scribe, chukwa, kafka, flume. Hay un artículo comparativo.
Zookeeper: proyecto de código abierto de coordinación distribuida confiable.
Databus: sistema de captura de datos en tiempo real y baja latencia de LinkedIn.
Obtención de fuentes de datos: Flume, Google Refine, Needlebase, ScraperWiki, BloomReach.
Técnicas de serialización: JSON, BSON, Thrift, Avro, Google Protocol Buffers.
NoSql:Apache Hadoop、Apache Casandra、MongoDB、Apache CouchDB、Redis、BigTable、HBase、Hypertable、Voldemort、Neo4j
Relacionados con MapReduce: Hive, Pig, Cascading, Cascalog, mrjob, Caffeine, S4, MapR, Acunu, Flume, Kafka, Azkaban, Oozie, Greenplum.
Procesamiento de datos: R, Yahoo! Pipes, Mechanical Turk, Solr/Lucene, ElasticSearch, Datameer, Bigsheets, Tinkerpop. NLP (procesamiento de lenguaje natural): Natural Language Toolkit, Apache OpenNLP, Boilerpipe, OpenCalais.
Aprendizaje automático: WEKA, Mahout, scikits.learn, SkyTree.
Técnicas de visualización: GraphViz, Processing, Protovis, Google Fusion Tables, Tableau, Highcharts, EChats (el de Baidu es bastante bueno), Raphaël.js.
- Kettle: herramienta ETL de código abierto.
- Pentaho: sistema de BI de código abierto centrado en flujos de trabajo (workflow).
- Mondrian: servidor ROLAP de código abierto.
- Oozie: motor de programación de flujos de trabajo de código abierto para Hadoop.
Herramientas de análisis y visualización de datos de código abierto: Weka, Orange, KNIME.
Cobar: middleware distribuido de MySQL de Alibaba.
C & C++
Thrift: se utiliza para desarrollar servicios escalables y en múltiples lenguajes (algo similar son Avro y Google protobuf).
libevent: es una biblioteca de red basada en eventos, compatible con varias plataformas como Windows, Linux, BSD; internamente usa llamadas al sistema como select, epoll, kqueue para gestionar el mecanismo de eventos. (Ah, también hay libev.)
Boost: no hace falta decir mucho, biblioteca casi estándar de C++.
Ptmalloc\Valgrind\Purify
Arquitectura de NetworkServer: acceptor->dispatcher->worker (esto no es una herramienta).
breakpad: módulo de volcado y análisis de fallos (crash dump), utilizado en muchos informes de errores (crash reports).
Relacionado con interfaces de usuario: MFC, BCG y QT no los mencionaré; en un nivel más avanzado están las tecnologías HTML y DirectUI: libcef (basado en el núcleo de Chrome; pensar en desarrollar páginas con HTML5 da un poco de emoción), HtmlLayout, Duilib, Bolt. Fuera de C++, también node-webkit es bueno, integra los núcleos de Node y WebKit.
Relacionado con el desarrollo de juegos
MINA: para desarrollar servidores de juegos móviles y juegos web en Java (también está Netty, que es muy potente; ambos se basan en NIO).
HP-Socket: he visto que algunos servidores de juegos web están construidos con esto.
Blog técnico de Yunfeng:http://blog.codingnow.com/
OGRE: el famoso motor de renderizado de gráficos 3D.
OpenVDB: biblioteca de efectos especiales de DreamWorks en C++, de código abierto.
cocos2d: motor de juegos 2D multiplataforma.
unity3d: motor de juegos 3D multiplataforma, muy popular.
Nodejs: también hay muchos que lo usan para desarrollar juegos móviles y servidores (el Pomelo de NetEase es un ejemplo).
Agregación de registros, recopilación distribuida de registros
Scribe: el de Facebook (nodejs + scribe + inotify para sincronizar logs).
logstash: potente sistema de recolección de logs; se puede desarrollar una potente plataforma de análisis de logs basada en logstash + kibana + elasticsearch + redis.
log.io: sistema de recolección de logs en tiempo real desarrollado con nodejs.
RTP, protocolo de transporte en tiempo real y audio/video.
RTP, RTCP, RTSP -> librtp, JRTPLIB (sigue el estándar RFC1889).
Buffer circular (ring buffer), para transmisión de datos en tiempo real.
SDL,ffmpeg,live555,Speex
Red5: servidor de streaming Flash de código abierto desarrollado en Java. Soporta: convertir audio (MP3) y video (FLV) en flujos de reproducción; grabar flujos de reproducción del cliente (solo FLV); objetos compartidos; publicación de flujos en vivo; invocación remota.
Python
Eric, Eclipse+pydev, IDE de Python bastante buenos.
PyWin: paquete de programación de la API Win32.
numpy: paquete de cálculo científico, principalmente para manejar cálculos de matrices grandes; además están SciPy y Matplotlib.
Relacionado con GUI: PyQt, PyQwt.
supervisor: herramienta de monitoreo de procesos.
Relacionado con Java
IDE de uso común: IntelliJ IDEA, Eclipse, Netbeans.
Relacionado con desarrollo web: Tomcat, Resin, Jetty, WebLogic, etc. Componentes de uso común: Struts, Spring.
Hibernate, Netty: framework de programación de aplicaciones de red asíncrono, controlado por eventos, bueno para programación de red de alta concurrencia (framework NIO).
MINA: permite desarrollar fácilmente aplicaciones de red de alto rendimiento y alta confiabilidad (también es un framework NIO); muchos servidores de juegos móviles se desarrollan con él.
jOOQ: framework ORM para Java. Activiti: motor de flujo de trabajo; similares son jBPM y Snaker.
Perfuse: es un paquete de interfaz de usuario para mostrar datos estructurados y no estructurados mediante gráficos visuales interactivos.
Gephi: software de análisis de redes complejas; se utiliza principalmente para la visualización interactiva y exploración de varios tipos de redes y sistemas complejos, gráficos dinámicos y jerárquicos; herramienta de código abierto.
Nutch: conocido proyecto de rastreador (crawler); Hadoop surgió de este proyecto.
web-harvest: herramienta de extracción de datos web.
Herramientas POM: Maven+Artifactory. Netflix
Curator: una librería cliente de Zookeeper de código abierto de Netflix, utilizada para simplificar la programación del cliente de Zookeeper.
Akka: un framework de procesamiento concurrente implementado basado en el modelo de actores.
EclEmma: herramienta de cobertura de pruebas.
Relacionado con .NET
Xilium.CefGlue: envoltura .NET basada en el framework CEF; permite desarrollar navegadores con núcleo Chrome en .NET.
CefSharp: igual que el anterior, es un envoltorio de WebKit, la interacción entre C# y JS es más sencilla.
netz: herramienta gratuita de compresión de archivos ejecutables .NET.
SmartAssembly: increíble herramienta de optimización y ofuscación de código .NET.
NETDeob0: herramienta de desofuscación .NET. ¡De verdad, siempre hay un truco mejor! (también está de4dot, en GitHub, ambos de código abierto).
ILMerge: combina todos los DLL y EXE referenciados en un solo archivo EXE.
ILSpy: herramienta de código abierto para descompilar programas .NET.
Javascript.NET: muy buen motor de ejecución de JS, envuelve V8.
NPOI: operaciones con Excel.
DotRAS: módulo de servicios de acceso remoto.
WinHtmlEditor: editor HTML para WinForms.
SmartThreadPool: grupo de subprocesos implementado en C# con funciones avanzadas.
Snoop: WPF Spy Utility
Autofac: framework IoC ligero.
HtmlAgilityPack: potente herramienta de análisis de HTML.
Quartz.NET: programación de tareas (jobs).
HttpLib: @CodePlex, simplifica las solicitudes HTTP.
SuperSocket: simplifica las operaciones de socket; basado en él también está SuperWebSocket, con el que se puede desarrollar un servidor WebSocket independiente.
DocX: manipula archivos de Word sin tener Office instalado.
Dapper: ORM ligero con buen rendimiento.
HubbleDotNet: sistema de búsqueda de texto completo que admite conexión a bases de datos.
fastJSON: @CodeProject, clase de serialización JSON de alto rendimiento.
ZXing.NET: @CodePlex, relacionado con códigos QR y códigos de barras.
Nancy: servidor HTTP ligero; para hacer una aplicación web pequeña puedes deshacerte de IIS (Nancy.Viewengines.Razor, se puede añadir el motor Razor).
AntiXSS: biblioteca de defensa contra XSS de Microsoft, Microsoft Web Protection.
LibraryJint: intérprete de JavaScript.
CS-Script: ejecuta archivos de código C# como scripts.
Jexus: servidor ASP.NET de alto rendimiento, fácil de usar y gratuito para Linux.
Clay: hace que dynamic sea más flexible, escribe C# como si fuera JS.
DynamicJSON: obtén datos JSON sin necesidad de definir modelos de datos.
Antlr: analizador sintáctico de código abierto (no es muy apropiado clasificarlo en C#, otros lenguajes también pueden usarlo).
SharpPcap: versión C# del cliente WinPcap, una librería de análisis de paquetes de red impresionante (incluye PacketNotNet para el análisis de protocolos de paquetes).
Roslyn: compilador de C# y VB.
ImageResizer: controla libremente el tamaño de las imágenes en el servidor, es realmente una herramienta mágica; para que el móvil suba imágenes pequeñas y el PC suba imágenes grandes, es muy práctico usarlo con un CMS.
Relacionados con UI: DevExpress, Fluent (estilo Office 07), mui (Modern UI for WPF).
NetSparkle: componente de actualización automática de aplicaciones.
ConfuserEx: herramienta de ofuscación .NET de código abierto.
ServiceStack: framework de servicios web de código abierto y alto rendimiento, utilizado para construir servicios REST de alto rendimiento.
Expression Evaluator: Eval para C#, maneja expresiones de cadena.
Herramientas de uso común
- Fiddler: herramienta de depuración de front-end web muy útil, por supuesto orientada al protocolo HTTP subyacente; en general, las herramientas de depuración integradas de Chrome y otros son suficientes, pero en casos especiales hay que recurrir a ella.
- Wireshark: conocida herramienta de análisis de paquetes de red.
- PowerCmd: excelente herramienta para reemplazar el Cmd de Windows.
- RegexBuddy: potente herramienta de prueba de expresiones regulares.
- Source Insight: herramienta imprescindible para leer código fuente.
- Sublime Text: el editor favorito de los programadores.
- Database.NET: un cliente universal de bases de datos relacionales, desarrollado sobre .NET 4.0, bastante práctico para tareas sencillas.
- Navicat Premium: cliente que admite MySQL, PostgreSQL, Oracle, SQLite y SQL Server; en universalidad no supera a Database.NET, pero su rendimiento es mucho mejor, y trae función de copia de seguridad que se usa también para la copia de seguridad programada de bases de datos.
- Synergy: un solo teclado y ratón para controlar varios equipos en la red de área local.
- DameWare: conjunto de herramientas de asistencia remota (en la empresa la uso principalmente para controlar la pantalla grande).
- Radmin: herramienta de control remoto, la he usado durante un tiempo.
- DameWare, además requiere crack, tiene mal soporte para Win7; al final descubrí que esta es la buena.
- Listary: una «herramienta súper mágica» que mejora enormemente la velocidad y eficiencia de navegación y búsqueda de archivos en Windows.
- Clover: añade pestañas al Explorador de archivos.
- WinLaunch: simula la herramienta Launch de Mac OS.
- Fritzing: dibujo de esquemas de circuitos.
- LICEcap: creación de tutoriales GIF.
- SVN: sistema de control de versiones. Enigma Virtual Box (empaqueta exe, dll, etc. en un único programa ejecutable).
- Open DBDiff: sincronización de bases de datos (para SQL Server).
- SymmetricDS: sincronización de bases de datos.
- BIEE, Informatica, SPSS, Weka, R: análisis de datos.
- CodeSmith, LightSwitch: generación de código.
- Pandoc: herramienta de conversión de Markdown, utilizada para publicar libros. Antes jugaba con DocBook, pero ahora lo que manda es Markdown.
- Window Magnet [Mac]: mejora la gestión de ventanas de Mac, con la función de arrastrar ventanas al borde de la pantalla para ajustarlas automáticamente, como Win7.
- Log Explorer: ver los registros de SQL Server.
- Dependency Walker: consulta las dependencias DLL de las aplicaciones de Windows.
- Shairport4w: transmite el audio de iPhone, iPad y iPod al PC mediante el protocolo AirPlay.
- ngrok: herramienta de penetración en la red interna. Axure: herramienta de creación rápida de prototipos; también hay una herramienta de dibujo en línea creada por un equipo emprendedor nacional que funciona muy bien.http://www.processon.com
- tinyproxy: (Linux) pequeño servidor proxy que admite los protocolos HTTP y HTTPS.
- EaseUS Partition Master: herramienta súper simple de ajuste de particiones, bastante rápida; si el disco C no tiene espacio, úsala para quitar espacio del disco D, sin necesidad de reinstalar el sistema.
- Cheat Engine: herramienta imprescindible para modificar valores de memoria jugando (recuerdo que la usé jugando a Xuan-Yuan Sword 6, súper cómoda).
- ApkIDE: herramienta imprescindible para descompilar Android. Herramienta para evadir el cortafuegos (Free Gate, Tianxing Browser).
Herramientas de diseño: Sketch, OmniGraffle.
MindManager: mapas mentales.