Le pub des programmeurs
- 1 927 réponses
- 117 participants
- 123 873 vues
- 130 followers
Anonyme
521410
Sujet de la discussion Posté le 25/08/2005 à 17:21:03Le pub des programmeurs
Salut y a des programeurs sur AF si oui vous bossez sous quoi ?
Rémy M. (chimimic)
14203
Modérateur·trice thématique
Membre depuis 22 ans
1671 Posté le 03/05/2017 à 08:23:44
Cool
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com
darklinux
618
Posteur·euse AFfolé·e
Membre depuis 10 ans
1672 Posté le 03/05/2017 à 08:30:32
A oui , du très lourd JUCE 5
miles1981
8360
Je poste, donc je suis
Membre depuis 20 ans
1673 Posté le 08/05/2017 à 11:25:47
Je remets pour les gens intéressés (il semblait y en avoir) : https://github.com/mbrucher/AudioTK-book/releases
Pour les remarques, merci d'utiliser github directement, plus simple pour centraliser les critiques constructives !
Pour les remarques, merci d'utiliser github directement, plus simple pour centraliser les critiques constructives !
Audio Toolkit: http://www.audio-tk.com/
Wolfen
13903
Rédacteur·trice
Membre depuis 22 ans
1674 Posté le 23/06/2017 à 08:34:16
Salut les gens !
Je suis en train d'organiser les stages de formation accélérés sur JUCE, si jamais ça vous intéresse j'aimerais savoir si vous pourriez répondre à un petit sondage, pour m'aider à cibler le contenu. Ca sera sur Paris après la rentrée scolaire
https://fr.surveymonkey.com/r/QNZVMYH
Je suis en train d'organiser les stages de formation accélérés sur JUCE, si jamais ça vous intéresse j'aimerais savoir si vous pourriez répondre à un petit sondage, pour m'aider à cibler le contenu. Ca sera sur Paris après la rentrée scolaire
https://fr.surveymonkey.com/r/QNZVMYH
Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud
Anonyme
30851
1675 Posté le 27/06/2017 à 20:17:34
Hello à tous ! J'ai une petite question de Python
J'ai un banc de mesure que j'aimerais automatiser un peu et pour ça je voudrais utiliser python. L'aspect communicaiton avec les appareils est assez facile à gérer, à l'aide d'une librairie spéciale, et tous les appareils causent à peu près le même langage (du SCPI pour ceux qui connaissent)
Bref, j'aimerais programmer un truc un peu propre, et surtout facilement réutilisable pour d'autres projets qui utilisent les mêmes appareils. Je pensais donc créer des librairies permettant à mon application de causer très facilement avec mes appareils.
Bref, j'en suis arrivé à faire quelque chose de ce style
mais du coup sur la deuxième définition il me dit qu'il ne connais pas la variable my_SMBV. Ce qui est logique vu que je la définie dans la fonction d'init juste au dessus. Comment est ce que je peux faire pour qu'il fasse bien le lien entre "les deux" ? J'avais pensé à utiliser une variable globale, mais bon, si il y a des solutions plus propres, je suis preneur.
Merci !
J'ai un banc de mesure que j'aimerais automatiser un peu et pour ça je voudrais utiliser python. L'aspect communicaiton avec les appareils est assez facile à gérer, à l'aide d'une librairie spéciale, et tous les appareils causent à peu près le même langage (du SCPI pour ceux qui connaissent)
Bref, j'aimerais programmer un truc un peu propre, et surtout facilement réutilisable pour d'autres projets qui utilisent les mêmes appareils. Je pensais donc créer des librairies permettant à mon application de causer très facilement avec mes appareils.
Bref, j'en suis arrivé à faire quelque chose de ce style
import visa
def smbv100a_init(ip_adress):
rm = visa.ResourceManager()
my_SMBV = rm.get_instrument("TCPIP::"+ip_adress+"::inst0::INSTR")
identity = my_SMBV.query('*IDN?')
identity = identity.split(',') #Séparation des mots le modèle de l'appareil se situe dans la première case du tableau identity
if (identity[1] == 'SMBV100A'):
return 1
else:
return 0
def smbv100a_set_RF_ON():
my_SMBV.write('OUTP ON')
mais du coup sur la deuxième définition il me dit qu'il ne connais pas la variable my_SMBV. Ce qui est logique vu que je la définie dans la fonction d'init juste au dessus. Comment est ce que je peux faire pour qu'il fasse bien le lien entre "les deux" ? J'avais pensé à utiliser une variable globale, mais bon, si il y a des solutions plus propres, je suis preneur.
Merci !
Dr Pouet
52037
Membre d’honneur
Membre depuis 20 ans
1676 Posté le 27/06/2017 à 20:24:49
Citation :
J'avais pensé à utiliser une variable globale
Non. Ça c'est mal, et ce serait étonnant que tu ne finisses pas par le regretter.
Tu peux le faire via une programmation objet. Ou alors, ce qui revient à peu près au même, mais c'est moins élégant, passer sans arrêt en paramètre une structure qui contient les données dont tu as besoin.
Ceci n'est qu'un ´up' déguisé, car je pratique extrêmement peu Python.
[ Dernière édition du message le 27/06/2017 à 20:25:48 ]
Jimbass
11603
Drogué·e à l’AFéine
Membre depuis 18 ans
1677 Posté le 27/06/2017 à 20:43:18
+1 pour la programmation objet dans ce contexte.
En règle générale je ne suis pas fan de l'oo, mais là ca s'applique bien. Tu fais une classe par type d'instrument, avec dedans ta variable qui du coup est globale-mais-pas-trop, et des méthodes qui font ce que tu as à faire : initialiser, lire, changer de mode, etc.
Tu peux même factoriser les trucs communs dans une classe "instrument" dont hériteraient tes classes d'instruments particuliers.
En règle générale je ne suis pas fan de l'oo, mais là ca s'applique bien. Tu fais une classe par type d'instrument, avec dedans ta variable qui du coup est globale-mais-pas-trop, et des méthodes qui font ce que tu as à faire : initialiser, lire, changer de mode, etc.
Tu peux même factoriser les trucs communs dans une classe "instrument" dont hériteraient tes classes d'instruments particuliers.
Musikmesser 2013 - Bullshit Gourous - Tocxic Instruments - festivals Foud'Rock, Metal Sphère et la Tour met les Watts
static volatile
1793
AFicionado·a
Membre depuis 7 ans
1678 Posté le 27/06/2017 à 20:43:52
Une variable globale n'est pas forcément une mauvaise chose en soi.
C'est comme goto, ça peut faire le job et parfois c'est ce qui donnera la solution la plus simple et la plus lisible.
C'est généralement déconseillé mais si la portée de cette variable est limitée à ton fichier, si tu sais qu'il n'y aura jamais qu'une seule instance de cette variable et pas d'effets de bord, ça peut faire du code plus simple à lire (et ça c'est un des critères les plus importants).
Sinon, pour rebondir sur l'idée de Dr Pouet, cherche du côté de **kwargs pour passer un Dict en paramètre à une fonction.
C'est assez élégant et facile à lire une fois qu'on a compris le principe.
EDIT: et rien ne t'empêche de passer par une globale dans un premier temps pour vérifier que ton programme fonctionne, puis d'améliorer le design avec une classe dans le futur.
First make it work, then make it good, finally, make it awesome
EDIT 2: ou alors, ta fonction d'init retourne ta variable ou un tuple avec plusieurs variables, et c'est ça qui sera le paramètre de ta fonction.
C'est comme goto, ça peut faire le job et parfois c'est ce qui donnera la solution la plus simple et la plus lisible.
C'est généralement déconseillé mais si la portée de cette variable est limitée à ton fichier, si tu sais qu'il n'y aura jamais qu'une seule instance de cette variable et pas d'effets de bord, ça peut faire du code plus simple à lire (et ça c'est un des critères les plus importants).
Sinon, pour rebondir sur l'idée de Dr Pouet, cherche du côté de **kwargs pour passer un Dict en paramètre à une fonction.
C'est assez élégant et facile à lire une fois qu'on a compris le principe.
EDIT: et rien ne t'empêche de passer par une globale dans un premier temps pour vérifier que ton programme fonctionne, puis d'améliorer le design avec une classe dans le futur.
First make it work, then make it good, finally, make it awesome
EDIT 2: ou alors, ta fonction d'init retourne ta variable ou un tuple avec plusieurs variables, et c'est ça qui sera le paramètre de ta fonction.
def init():
# initialize stuff
if something_bad_happens():
return None, None
return x, y
def process(x, y):
#do something awesome with x and y
if __name__ == "__main__":
from sys import exit
x, y = init()
if x is None or y is None:
exit("something bad happened")
process(x, y)
Resistance is not futile... it's voltage divided by current
[ Dernière édition du message le 27/06/2017 à 20:56:05 ]
EraTom
2282
AFicionado·a
Membre depuis 13 ans
1679 Posté le 28/06/2017 à 09:32:30
Citation :
Bof... On s'expose à rustiner encore et encore une archi qui aurait dû être pensée dès le début.First make it work, then make it good, finally, make it awesome
En fait, je ne vois pas trop ce que l'on gagne en lisibilité et en simplicité à ne pas partir directement sur une programmation objet.
Anonyme
30851
1680 Posté le 28/06/2017 à 14:36:55
Ok, bon j'ai commencé à faire ça en poo du coup (première fois que j'en fait)
Voici ce que j'ai fait
Lorsque je crée mon instrument ça marche j'arrive à m'y connecter. Mais si par exemple je veux lire sa sortie j'ai un message d'erreur :
Moninstrument instance has nous attribuer 'query'
Ce que j'avais fait
Import visa
Import moninstrument_driver
test = moninstrument_driver.moninstrument("192.168.xx.xx")
test.read_output_state()
Quelqu'un voit ce que c'est ? En gros je pense qu'il ne comprends pas le 'query' dans la méthode read_output_state
Voici ce que j'ai fait
Class monInstrument (object)
Def __init__(self, ip_adress, visa)
#blablablabla
Def read_output_state
Return self._query('OUTP?')
Lorsque je crée mon instrument ça marche j'arrive à m'y connecter. Mais si par exemple je veux lire sa sortie j'ai un message d'erreur :
Moninstrument instance has nous attribuer 'query'
Ce que j'avais fait
Import visa
Import moninstrument_driver
test = moninstrument_driver.moninstrument("192.168.xx.xx")
test.read_output_state()
Quelqu'un voit ce que c'est ? En gros je pense qu'il ne comprends pas le 'query' dans la méthode read_output_state
- < Liste des sujets
- Charte