pgx
PGX — Lightweight Postgres for AI agents. Written in Rust. Thousands of isolated databases in one runtime. 🐘
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Globo 3D con sismos en tiempo real, placas tectónicas, países y sus divisiones, estadísticas por país o placa y alertas configurables. Gratis, sin claves de API, desplegado en Vercel.
No es un sistema oficial de alerta temprana. Los datos son preliminares y pueden tener retrasos o errores. Ante un sismo, siga las indicaciones de su autoridad local.
| Fuente | Uso | Términos |
|---|---|---|
| USGS Earthquake Hazards Program | Sismos del mundo y estadísticas históricas | Dominio público |
| SGC Colombia (no oficial, opcional) | Sismos de Colombia, últimos 5 días | Feed público no documentado; autorización de republicación pendiente |
| EMSC, testimonios «¿lo sentiste?» (opcional) | Reportes ciudadanos | CC BY 4.0, cite: EMSC |
| EMSC, catálogo sísmico | Respaldo automático si el USGS no responde | Cite: EMSC |
| Bird (2003), modelo PB2002 | Placas tectónicas | Ver github.com/fraxen/tectonicplates |
| Natural Earth (world-atlas) | Países y divisiones | Dominio público |
Cada sismo muestra su fuente en el globo, en el detalle y en las notificaciones.
npm install
npm run dev # http://localhost:3000
npm run typecheck # tipos de la app y de las pruebas
npm test # pruebas unitarias (lectores de datos, respaldo, caché, fusión de reportes)
npm run build # compilación de producción (incluye el paso prebuild)
scripts/fetch-assets.mjs (se ejecuta solo antes de next build) copia a public/data los mapas
que necesita el globo, verificados contra un SHA-256 fijo. Si algo no se puede descargar, no
rompe la compilación: la app pide ese archivo a una CDN pública.
Un sismo cuenta para el país en cuyo territorio ocurre; si ocurre en el mar, para el país más
cercano siempre que su costa esté a 200 km o menos; más lejos (alta mar, dorsales) no pertenece a
ningún país. Así cada sismo tiene como máximo un país y los totales suman con el resto del mundo.
La regla vive en lib/countryAttribution.ts y la usan igual la lista del globo y las estadísticas.
Fronteras: Natural Earth 1:50m (world-atlas), simplificadas, con un margen de unos kilómetros.
Se configuran en el navegador y se guardan solo ahí (localStorage); nada va al servidor. Se puede
elegir una magnitud mínima global, un umbral propio por país (que reemplaza al global, para más o
menos sensibilidad) y un horario sin avisos con hora del dispositivo, que puede cruzar la medianoche
y admite una excepción: «avisar igual si es M6 o más». Los países vigilados se asignan con la misma
regla que las estadísticas (territorio, o costa a 200 km o menos). Si llegan varios sismos a la vez
se avisa del de mayor magnitud. Un sismo sin magnitud publicada solo avisa si el umbral es «todas».
Los ajustes guardados por versiones anteriores se migran sin perder nada (parseAlertSettings en
lib/alerts.ts). Las alertas funcionan solo mientras la pestaña esté abierta: no hay envío en segundo plano.
El globo se dibuja con un motor propio en WebGL2 y TypeScript (engine/), sin three.js ni
react-globe.gl: la cámara, los controles táctiles y de teclado, la triangulación de países, los
rellenos y líneas sobre la superficie, los sismos, los anillos pulsantes y los marcadores HTML son
código del proyecto, con pruebas propias (npm test) y un banco de pruebas en /engine-lab.
engine/adaptive.ts).role="application"): las flechas
lo giran con velocidad mientras se mantienen, +/- acercan y alejan, 0 o Inicio vuelven a
la vista del planeta entero. La vista se anuncia por aria-live (país bajo el centro y altura),
hay anillo de foco visible y con prefers-reduced-motion los vuelos son saltos instantáneos.tests/engineQuakeCull.test.mts lo comprueba con geometría y la imagen resultante es idéntica). El
sombreado de cada cara usa sqrt en lugar de seis (diferencia ≤ 4/255 en color).Peso del JavaScript de la aplicación (producción, gzip): ~225 KB frente a ~779 KB con three.js.
En pantallas estrechas (≤ 720 px) y bajas (móvil en horizontal) la cabecera se compacta: periodo, magnitud
y fuentes opcionales van en una fila que se desliza, las cuatro acciones (Estadísticas, Lista, Cerca de mí,
Alertas) siguen a la vista, la ficha del país es una tarjeta sobre la leyenda y la leyenda se pliega
(el aviso «no es un sistema oficial de alerta temprana» y las fuentes opcionales activas no se pliegan).
Se verificó con un teléfono emulado en Playwright (táctil, pellizco, 390×844 y horizontal); esas pruebas de navegador no están en el repositorio, solo las unitarias de npm test.
Para medir en un teléfono o portátil reales, añade ?diag=1 a la dirección (?diag=0 lo quita; se
recuerda en la pestaña). Aparece un panel con fps, ms por fotograma al moverse, tamaño y resolución del
lienzo (incluida la que baja la resolución adaptable), nivel de detalle de los países y la GPU que informa
el navegador; si es de software lo avisa. Además muestra el suavizado MSAA, si los paneles tienen desenfoque de
fondo y, donde el navegador lo permite (Chrome y derivados de escritorio, EXT_disjoint_timer_query_webgl2), los
milisegundos de GPU por capa (globo, áreas, líneas, sismos, anillos; los de fotogramas con el globo en movimiento, y si todavía no se movió, los de un redibujado en reposo, que lo dice): así se ve si un equipo va lento por el
globo, por los sismos o por algo que no es el dibujo (si el total de GPU es mucho menor que los ms por fotograma, el
cuello de botella está fuera: compositor, desenfoque, suavizado). Tocar el panel copia el texto para pegarlo en un mensaje.
El botón «Medir (25 s)» del panel hace girar el globo solo, a resolución completa, y mide 5 fases de 4 s
(todo normal, sin desenfoque de paneles, sin sismos, sin países ni líneas, solo el globo) con fps, ms por fotograma
(media y p95) y GPU por capa. Deja un único informe bajo el panel, que se copia tocándolo, y al terminar devuelve la
vista, las capas y el desenfoque a como estaban (lib/benchmark.ts, GlobeEngine.startBenchmark).
Para saber cuánto cuestan esos dos efectos en un equipo concreto, ?msaa=0 quita el suavizado MSAA (el búfer
deja de ser multimuestreado) y ?glass=0 quita el desenfoque de fondo de los paneles; =1 los devuelve (también
se recuerdan en la pestaña). El panel dice en qué estado están.
La dirección de la página refleja la vista, así que copiar el enlace comparte lo que se ve:
?periodo=week&mag=4.5&pais=170&lista=1 (placa=SA en lugar de pais= para una placa;
sgc=1 y emsc=1 activan esas fuentes). ?sismo=<id> abre el detalle de un sismo. Todo lo que
llega por la dirección se valida (lib/urlState.ts) y lo inesperado se ignora.
Cada push a main se compila y se publica en Vercel. GitHub Actions (.github/workflows/ci.yml)
corre tipos, pruebas y compilación en cada push y pull request.
powrequestAnimationFrame (engine/frameLoop.ts): antes, desde ese momento corrían dos cadenas en paralelo y los fps y
la resolución adaptable medían huecos de ~0 ms (un portátil de 60 Hz llegó a informar de 206 fps).