Neat
Le site https://www.glowscript.org permet de se faire un petit espace et développer en python des scènes statiques ou dynamiques via visual-python.
Une fois le code prêt, on peut l'exporter directement en HTML et le servir en ligne.
Il y a beaucoup de modèles et simulations que je voulais présenter fut un temps, qu'en reste-t-il ?
Skyfield computes positions for the stars, planets, and satellites in orbit around the Earth. Its results should agree with the positions generated by the United States Naval Observatory and their Astronomical Almanac to within 0.0005 arcseconds (half a “mas” or milliarcsecond).
https://rhodesmill.org/skyfield/toc.html
https://rhodesmill.org/skyfield/earth-satellites.html
via Oros
Y'a un onglet Java ;)
Quelqu'un connaît cette plateforme ? Je découvre, j'ai pas testé encore.
😍 🤓
\o/ happy pirthday python, you pig boy.
Kudos to the community and contributors!
poke Guido van Rossum ;) many thanks
json_data = json.dumps(team.__dict__, lambda o: o.__dict__, indent=4)
json_data = json.dumps(team.__dict__, default=lambda o: o.__dict__, indent=4)
Oui très léger aussi !
Il est de base sur les Raspberry pi maintenant.
Un modèle d'objet que j'utilise depuis longtemps pour du prototypage :
class Character:
index = 1 # Index de classe (compte les instances, cf plus bas)
def __init__(self, name, **kargs): # Tous les mot-clés key=value seront intégrés
self.name = str(name.upper()) # On force le format du nom
for k,v in kargs.items(): # Pour tous les couples k=v passés en arguments
self.__dict__.update({k:v}) # On intègre le champ dans la définition de l'instance
self.index = Character.index # On affect l'indexe de classe en cours
Character.index += 1 # On incrémente l'indexe de classe
def __str__(self):
return json.dumps( self.__dict__, indent=2 )
C'est tout bête comme objet mais ça me sert toujours autant :).
Typiquement :
hero = Character("Toto", life=100, speed=20, force=4, observation=10)
print( hero )
{
"name": "TOTO",
"life": 100,
"speed": 20,
"force": 4,
"observation": 10,
"index": 1
}
via bearstech
Ah c'est ouf, l'option anchors fonctionne po... pasque bien pratique le système. Du coup on recadre un texte à la main :
from PIL import Image, ImageDraw
W, H = (300,200)
msg = "hello"
im = Image.new("RGBA",(W,H),"yellow")
draw = ImageDraw.Draw(im)
w, h = draw.textsize(msg) # évaluer la taille
draw.text(((W-w)/2,(H-h)/2), msg, fill="black") # recentrer
im.save("hello.png", "PNG")
Rigolo, une enième façon d'écrire la multiplication des éléments d'une liste:
>>> p = lambda x: 1 if len(x)==0 else x.pop()*p(x)
Et j'en vois arriver : han du coup tu consommes obligatoirement la cible :
>>> x = [1,2,3]
>>> p(x)
6
>>> x
[]
Pas forcément :
>>> x = [1,2,3]
>>> p(x[:])
6
>>> x
[1,2,3]
Merci le slicing ;-).
Oh bien vu, ça me dit rien. Le coup de fourrer une valeur par défaut je ne l'utilise que pour des valeurs "scalaires" du coup pas de souci :
>>> alist = [0]*3
>>> alist[1] = "POOP"
>>> alist
[0, 'POOP', 0]
>>> alist = [ "test" ]*3
>>> alist[1] = "POOP"
>>> alist
['test', 'POOP', 'test']
Cool
Une appli pour se faire une base de flims et séries (Imdb/Omdb), un peu les jeux, etc..
Backend endpoints:
https://dukeart.netlib.re/api/movies
https://dukeart.netlib.re/api/movies/id
https://dukeart.netlib.re/api/movies/id/tt0213338
Frontend views:
https://dukeart.netlib.re/api/movies/home
https://dukeart.netlib.re/api/movies/view
https://dukeart.netlib.re/api/movies/view/id/tt0213338
Je le remets à jour car il fonctionnait sur 2 serveurs et la je mix les 2 (Flask permet quand même de rester un peu propre en séparant les routes de l'application serveur et celles de nos interfaces API, bien que swagger ne documente pas par défaut les routes de l'appli).
Je remettrai un endpoint pour requêter sur l'API Omdb directement et je mettrai la source à dispo (on peut le réutiliser pour implémenter une autre interface, comics, livres, etc..).
Si pas déjà installé :
$ sudo pip3 install httpx[http2] dnspython