Una aplicación desarrollada con Flutter que ofrece acceso completo a la plataforma CNBlogs desde dispositivos Android e iOS. La interfaz prioriza la simplicidad sin sacrificar funcionalidad.
Características principales
- Navegación por el feed principal de blogs
- Sección de noticias tecnológicas
- Foro de preguntas y respuestas (博问)
- Microblogging mediante publicaciones efímeras (闪存)
- Gestión personal de contenidos publicados
- Acceso al repositorio de conocimiento
- Panel de seguimiento de seguidores
Configuración inicial
Antes de compilar el proyecto, crear un archivo .env en la raíz con las credenciales de la API:
clientId={{cnblog_client_id}}
clientSecret={{cnblog_secret_id}}
notRobotCookie=CfDJ8EOBBtWq0dNFoDS-ZHPSe51ATHuFFilG3imii1Hj5WZ-TAK98xT4mJquvSMlYdkzfVCmpAWdt1VyGSpqZ5Q8GulXT3q-Essgs3ttLCLRTzIqo0Klt-nZCkblG6ST2zI2Og
Los binarios compilados están disponibles en la sección Releases del repositorio en GitHub.
DFrame: Framework de pruebas de carga distribuidas para .NET
DFrame es una solución para ejecutar pruebas de estrés en arquitecturas distribuidas, compatible con .NET y Unity. Permite definir escenarios de carga mediante código C# puro, eliminando dependencias de interfaces gráficas complejas o formatos de configuración externos como XML, JSON o YAML.
Además de HTTP/1, es posible evaluar rendimiento sobre HTTP/2 y gRPC programando directamente en C#.
Arquitectura
El sistema se divide en dos componentes:
- DFrame.Controller: Interfaz web construida con Blazor Server
- DFrame.Worker: Scripts de escenarios de prueba en C#
Implementación básica
// dotnet add package DFrame
using DFrame;
// Puerto WebUI: 7312, Puerto Worker: 7313
DFrameApp.Run(7312, 7313);
public class EjemploCarga : Workload
{
public override async Task ExecuteAsync(WorkloadContext ctx)
{
Console.WriteLine($"Procesando unidad de trabajo: {ctx.WorkloadId}");
}
}
Tras iniciar la aplicación, acceder a http://localhost:7312 para configurar y lanzar las pruebas.
Escenarios con inyección de dependencias
using DFrame;
using Microsoft.Extensions.DependencyInjection;
var app = DFrameApp.CreateBuilder(7312, 7313);
app.ConfigureServices(servicios =>
{
servicios.AddSingleton<HttpClient>();
});
await app.RunAsync();
public class PeticionHttpGet : Workload
{
private readonly HttpClient _cliente;
private readonly string _ruta;
public PeticionHttpGet(HttpClient cliente, string ruta)
{
_cliente = cliente;
_ruta = ruta;
}
public override async Task ExecuteAsync(WorkloadContext ctx)
{
await _cliente.GetStringAsync(_ruta, ctx.CancellationToken);
}
}
Configuración simplificada para métodos HTTP
using DFrame;
var app = DFrameApp.CreateBuilder(7312, 7313);
app.ConfigureWorker(config =>
{
config.IncludesDefaultHttpWorkload = true;
});
app.Run();
Esta opción habilita endpoints genéricos para GET, POST, PUT y DELETE recibiendo url y body como parámetros.
Despliegue en clúster
Para conectar nodos Worker a un Controller centralizado:
using DFrame;
using Microsoft.Extensions.Hosting;
await Host.CreateDefaultBuilder(args)
.RunDFrameWorkerAsync("http://localhost:7313");
Modalidades de ejecución
| Modo | Descripción |
|---|---|
| Request | Total fijo de peticiones con concurrencia definida |
| Repeat | Escalado progresivo similar a Ramp-Up |
| Duration | Ventana temporal fija para la prueba |
| Infinite | Ejecución continua hasta intervención manual |
Rhea: Sistema de gestión de tareas y proyectos
Rhea es una plataforma de administración de tareas desarrollada con C# y .NET 6, orientada a equipos de desarrollo y profesionales individuales. Ofrece funcionalidades comparables a herramientas como Jira, Redmine o Trello.
Stack tecnológico
- Backend: C# / .NET 6
- Frontend: Angular con Angular CDK
- Base de datos: SQL Server con Entity Framework Core
- Caché: Redis
- Comunicación en tiempo real: SignalR
Organización jerárquica
La información se estructura en niveles: Workspace → Space → Folder → List, permitiendo adaptar la herramienta a flujos de trabajo diversos.
Vistas disponibles
- Lista: Vista tabular con filtros y ordenamiento
- Tablero Kanban: Columnas configurables con arrastrar y soltar
- Calendario: Visualización temporal de hitos y deadlines
- Línea temporal: Perspectiva cronológica de actividades
Personalización
La interfaz permite alternar entre múltiples temas y paletas de colores sin restricciones.
Acceso: https://rhea.cc