La PyConFr vous manque ? À nous aussi, donc ce mois-ci c'est lightning-talks sur notre BBB : https://discuss.afpy.org/t/atelier-de-fevrier/162
La PyConFr vous manque ? À nous aussi, donc ce mois-ci c'est lightning-talks sur notre BBB : https://discuss.afpy.org/t/atelier-de-fevrier/162
Vendredi dernier j’ai signé une rupture conventionnelle qui mettra fin au contrat qui me lie à Tanker le 24 février 2021.
Ainsi se conclura une aventure de près de 5 années riches en enseignements et en rebondissements. Merci à tous mes collègues, et bon courage pour la suite!
Plusieurs possibilités s’ouvrent à moi.
Dans l’idéal, j’aimerais trouver une activité de professeur à temps plein (toujours dans le domaine de l’informatique) et dans la région parisienne, mais je suis ouvert à toute forme de contrat.
J’ai acquis de nombreuses compétences en tant que développeur professionnel - tant chez Tanker que dans ma dans ma boîte précédente, Softbank Robotics - compétences que je souhaite aujourd’hui transmettre.
Parmi les sujets sur lesquels je me sens prêt à donner des cours dès maintenant:
Il est bien sûr possible que je n’arrive pas à trouver un poste à temps plein tout de suite, et donc j’ai prévu de chercher également un poste dans une coopérative ou similaire.
Je ne me vois pas du tout travailler dans une société de service ou dans une grosse boîte, et après plus de 10 ans passés dans le monde des start- up, j’ai besoin de changement. Je pense que je m’épanouirai davantage dans ce genre de structure, et en tout cas, cela m’intéresse de découvrir une nouvelle forme d’organisation.
J’écris cet article en partie pour clarifier mes objectifs pour l’avenir, mais surtout pour que vous, chers lecteurs, puissiez le partager et m’aider à passer cette nouvelle étape de ma carrière.
Comme d’habitude, ma page de contact est là si vous avez des pistes à me suggérer, des questions à me poser, ou pour toute autre remarque.
À bientôt !
Deux exemples très courts pour vous mettre sur les rails, qui envoient et reçoivent du binaire « pur » = très peu de bande passante, avec une connexion persistante.
Je vous donne deux envois-réception qui devraient vous permettre de faire tous vos envois binaires :
Avec ça, vous avez de quoi comprendre et faire tous les échanges que vous voulez !
import asyncio
import struct
from asyncio import StreamWriter, StreamReader
import pythoncom
import win32com.client as win32_client
HOST = '192.168.1.31'
PORT = 9696
async def handle(reader: StreamReader, writer: StreamWriter):
is_little_endian = False
buffer = bytearray(100)
addr = writer.get_extra_info('peername')
print(f"Connected with {addr!r}")
is_little_endian, = struct.unpack_from(
'?', await reader.read(struct.calcsize('c'))
)
print(f'{is_little_endian=}')
data = await reader.read(4096)
message = data.decode('utf8')
pythoncom.CoInitialize()
speak = win32_client.Dispatch('SAPI.SpVoice')
speak.Speak(message)
print(f"Received {message!r} from {addr!r}")
print(f"Send: {message!r}")
float1 = 1.1
float2 = 2.2
struct.pack_into(
# =: native order, std. size & alignment
# H: unsigned short
# f: float
"=Hff",
buffer, 0, 1, float1, float2)
writer.write(buffer)
await writer.drain()
print("Close the connection")
writer.close()
async def main():
server = await asyncio.start_server(handle, HOST, PORT)
print(f'Serving on {server.sockets[0].getsockname()}')
async with server:
await server.serve_forever()
asyncio.run(main())
using System;
using System.IO;
using System.Net.Sockets;
using UnityEngine;
public class Connexion : MonoBehaviour
{
public string server;
public string message;
public ushort port;
private void Start()
{
// working sample to send text:
byte[] data = System.Text.Encoding.UTF8.GetBytes(message);
byte isLittleEndian = BitConverter.IsLittleEndian ? (byte)1 : (byte)0;
TcpClient client = new TcpClient(server, port);
NetworkStream stream = client.GetStream();
// Send the message to the connected TcpServer.
stream.WriteByte(isLittleEndian);
stream.Write(data, 0, data.Length);
Debug.Log($"Sent: {message}");
// read sample
BinaryReader reader = new BinaryReader(stream);
uint len = reader.ReadUInt16();
var x = reader.ReadSingle();
var y = reader.ReadSingle();
Debug.Log("len=" + len);
Debug.Log($"x={x}, y={y}");
}
}
Pour la note, ces deux exemples paraissent simples, mais ils m’ont pris un temps fou, et je n’ai eu aucune réponse au bout de 3 semaines sur stackoverflow…