Novetat en el codi!
Ja s'envia als servidors federats l'actualització dels resultats parcials de les enquestes cada vegada que es rep un vot.
https://codeberg.org/spla/appy/commit/62b04ac5371c392c913977ba778539f52bfff2e1
#appy
Novetat en el codi!
Ja s'envia als servidors federats l'actualització dels resultats parcials de les enquestes cada vegada que es rep un vot.
https://codeberg.org/spla/appy/commit/62b04ac5371c392c913977ba778539f52bfff2e1
#appy
La gestió dels vots remots no s'acaba rebent-los i desant-los. Cal enviar activitats Update als servidors federats amb les dades actualitzades de l'enquesta. #appy
Els vots remots a les enquestes locals no es reben en la safata compartida /inbox sinó que arriben a la del usuari local creador de l'enquesta, concretament a /users/usuari_local/inbox. #appy
Hauré de separar el mòdul actual en dos diferents, un per a publicar tuts i l'altre per a enquestes. L'activitat que s'envia al fedivers en el cas dels tuts és del tipus Create i la que s'envia en les enquestes és del tipus "Question'. Millor mòduls separats. #appy
Un altre descobriment en aquest camí ha estat #Pydantic. Com podia viure programàticament parlant sense Pydantic?
Pydantic és una biblioteca de Python que serveix per validar i gestionar dades amb tipus. Et permet definir models (com classes) on s’especifica el tipus de cada camp, i automàticament valida i converteix les dades rebudes. Integrat a la perfecció amb fastAPI.
Totes les aplicacions client per Android funcionen amb #appy i el mateix passa amb les de iOS. Aquesta és la clau, volia aprofitar totes les apps existents per tant l'API havia de ser una copia de la de Mastodon però feta amb fastAPI, que ha resultat una tria excel·lent. fastAPI és brutal, fa tot i més i molt bé. I, a més, et genera automàticament la documentació sense ni preocupar-te per ella. Insisteixo, brutal.
L'estructura tècnica d'#appy funciona gràcies a Python, fastAPI, #Postgresql (base de dades) i #Redis (memòria cau).
Tot de manera asincrona per evitar punts de bloqueig, passen moltes coses en parall·lel, simultàniament, bàsic per a tenir fluïdesa tant en les interaccions amb altres servidors com amb les aplicacions client.
appy funciona bé fins i tot en una #Raspberry 4B, per tant també és una opció vàlida per a tenir el perfil fediversal auto gestionat i a casa.
Quan vaig posar en marxa mastodont.cat no en sabia res de Python i ActivityPub no existia (Mastodon funcionava a les hores amb el protocol Ostatus de GNU Social).
Qui podria pensar que acabaria programant el meu propi servidor? sí, estic content d'haver-ho aconseguit i de compartir el resultat amb la comunitat de programari lliure a https://codeberg.org/spla/appy
Queda feina encara però sí, ja ho considero un èxit
Queden algorismes per polir, afegir funcionalitats com ara bloquejar o silenciar usuaris i servidors i depurar incidències però ja considero que #appy és un èxit.
Des de juny de l'any passat he estat (i estic) molt centrat en desenvolupar el meu propi servidor ActivityPub des de zero, sense copiar res de ningú, per pur plaer personal de superar reptes. He après molt pel camí, no és gens fàcil però he gaudit molt de cada fita.
Va ser tot un encert triar #Python i #fastAPI, van sobrats.
No quedava gens bé que es mostressin les dades json al clicar en un enllaç d'un tut d'un usuari en un servidor #appy.
He creat una plantilla en html i css que mostra una pàgina on es veu en la columna central l'avatar i imatge de fons del usuari, el tut, data de publicació i els comptadors.
La columna de l'esquerra mostra el logo d'appy i el servidor. La de la dreta una breu explicació de què és appy i un enllaç al codi font.
M'agrada l'aspecte de la pàgina
No queda malament oi? no en sé res de html i css, però no queda malament la pàgina del perfil a #appy dels seus usuaris locals.
Les dades necessàries per a mostrar la pàgina es desen en memòria cau per a optimitzar el rendiment.
Les dades necessàries per el renderitzat de les pàgines html dels perfils d'usuaris locals ara també es desen en la memòria cau. https://codeberg.org/spla/appy/commit/b93ed5147b652383c0aaa750d0a2f2ead7881304 #appy
I no es queda aquí el tema, si es demana el perfil d'un usuari local en format json es retorna json però si no és així es retorna html per a mostrar el perfil en el navegador. Brutal: https://appy.cat/@appy #appy
No només els tuts locals s'envien als servidors federats via memòria cau (Redis) quan els demanen, ara també es desen els perfils dels usuaris. Tot son avantatges, no es satura el servidor Postgresql i els servidors son servits instantàniament. https://codeberg.org/spla/appy/commit/6ba96fda00454dde538e609b362e8500d6c7e20e #appy
M'agrada molt el panell de gestió de Hetzner Cloud on hi tinc contractat un Shared vCPU Ampere (Arm).
Hi he instal·lat un servidor #appy per a fer proves de rendiment.
Pot passar que un servidor remot no respon per estar caigut o ja desactivat. #appy ja controla aquests casos quan s'impulsa o es desfà l'impuls. https://codeberg.org/spla/appy/issues/29
He "pydantizat" les següents activitats:
- Like
- Undo Like
- Announce
- Undo Announce
https://codeberg.org/spla/appy/commit/438c2b7cfa27782932e294e94dc9d4f4202e9c62
#appy
He alliberat la primera versió, la v0.1, de #appy, el servidor #ActivityPub escrit en #Python sobre #fastAPI
https://codeberg.org/spla/appy/releases
La majoria d'aplicacions per a Mastodon funcionen amb appy.
Depurant els errors que el log del servidor #appy em mostra. Ja en queden pocs
No es pot negar que el servidor #ActivityPub #appy és el projecte més gran i complex de tots els que he programat en #Python.