Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#2351 Le 08/12/2015, à 18:13

Dafyd

Re : /* Topic des codeurs [8] */

Tiens, toi qui fais pas mal de Python, tu connais PyCharm ? C'est un IDE de JetBrainpour le Python, avec vérification du respect de la PEP8 en temps réel, autocomplétion très bien foutue, etc... J'ai codé la dessus cet été (sur Windows ..... ) en stage, et franchement c'est pas mal du tout.. Le retour à Vim a piqué un peu !

Hors ligne

#2352 Le 08/12/2015, à 18:28

Elzen

Re : /* Topic des codeurs [8] */

Nop, jamais entendu parler jusque là.

D'un autre côté, je ne suis pas particulièrement fan d'EDIs… j'utilise Eclipse pour faire du Java, parce que bon, c'est du Java, quoi ; mais pour le reste, je code essentiellement avec un petit éditeur de texte tout simple smile

(Et, soit dit en passant, je ne code pas non plus entièrement PEP8, il y a un paquet de trucs dedans avec lesquels je n'suis pas d'accord, et vu que je code pas mal tout seul dans mon coin (les contribs sont les bienvenues, hein ^^), je fais à ma manière)

Hors ligne

#2353 Le 08/12/2015, à 18:37

Dafyd

Re : /* Topic des codeurs [8] */

Ben pour le C et le C++ je suis passé à Vim + CMake depuis quelques mois et ça le fait bien ! Mais ce qui me manque, c'est l'autocomplétion (même si sous Vim YCM fait le taf, c'est pas au même niveau je trouve) et la gestion des gros projets, ou je me sens un peu perdu parfois quand ya une foule de classes dans tous les sens (pas moi qui ai écrit le code ...) , tu sais plus trop où sont les trucs... La j'apprécie un IDE. Mais pour coder une petite lib perso en C ou C++, vim + cmake c'est nikel.

Du coup vu que je (re) débute en Python, je me renseigne un peu par ici sur les trucs bien tongue

Hors ligne

#2354 Le 08/12/2015, à 21:33

grim7reaper

Re : /* Topic des codeurs [8] */

Oulah, ce topic revient d’entre les morts !
Ça fait plaisir de voir du sang neuf smile

Dafyd a écrit :
fmt.Println("Hello World!")

C’est du Go ça, non ?

Dafyd a écrit :

Je souhaite améliorer mon Python en faisant quelques trucs GUI pour un petit projet, et je voulais avoir votre avis, PyGI ou PyQt ? De base je serai parti sur PyQt parce que j'en ai fait en C++ mais apres je ne connais pas la qualité du binding Python..

Perso je partirai sur du PyQt (Qt est beaucoup plus agréable en Python qu’en C++ : j’ai jamais pu piffrer la surcouche avec leur préprocesseur maison et les fichiers auto-générés…)
Après, PyGI ça se tente aussi (à une époque les perf’ était moisi, mais ça a peut-être changé depuis).

Elzen a écrit :

À côté de la bibliothèque graphique GTK, il y a énormément de trucs aussi. Citons entre autres gstreamer, un énorme machin pour tout ce qui est lecture audio/vidéo ; WNCK, une chouette bibliothèque permettant d'interagir avec X de manière événementielle⁽¹⁾, ou encore les trucs dans la glib qui permettent entre autres de connaître et de lancer le logiciel par défaut associé à un type de fichier, tout ça.

Ça c’est le projet GNOME, non ?
GTK c’est seulement la bibliothèque graphique. Donc Qt n’est pas comparable à GTK.

Elzen a écrit :

(Par contre, chaque composant est installable et gérable séparément, je ne suis pas sûr que ce soit le cas pour Qt)

C’est le cas aussi (à partir de Qt 5, avant je ne suis pas sûr).

Elzen a écrit :

Le truc est que, comme mentionné plus haut, j'aimerais bien passer à une autre bibli graphique qui ne soit ni GTK, ni Qt. Encore faut-il la trouver ^^

EFL ? ^^
En plus il y a un binding Python (ça me rappelle que j’avais un binding Ada en chemin (et qu’en faisant le binding j’avais relevé un bug dans leur implem’ en C big_smile)).

Elzen a écrit :

j'utilise Eclipse pour faire du Java, parce que bon, c'est du Java, quoi

Ouais Java sans IDE c’est…
Le langage est tellement plein de /boilerplate et de trucs chiant à faire à la main (renomme la classe implique de renommer les fichiers qui implique de renommer les imports, …) que sans IDE pour faire ce travail de grunt c’est juste pas possible (déjà qu’avec l’IDE Java c’est pas le pied, alors sans…).

Dafyd a écrit :

la gestion des gros projets, ou je me sens un peu perdu parfois quand ya une foule de classes dans tous les sens (pas moi qui ai écrit le code ...)

Vim + ctags + cscope ça aide déjà pas mal (c’est ce que la plupart des dev’, dont moi, utilisent au boulot et on le vit bien big_smile).

Hors ligne

#2355 Le 08/12/2015, à 22:10

Dafyd

Re : /* Topic des codeurs [8] */

grim7reaper a écrit :

C’est du Go ça, non ?

C'est du Go en effet ! Un langage sympatoche, j'en ai fait pour un projet de robot voilier.

grim7reaper a écrit :

Perso je partirai sur du PyQt (Qt est beaucoup plus agréable en Python qu’en C++ : j’ai jamais pu piffrer la surcouche avec leur préprocesseur maison et les fichiers auto-générés…)
Après, PyGI ça se tente aussi (à une époque les perf’ était moisi, mais ça a peut-être changé depuis).

J'ai été fureter les docs avant de venir poster ici, et celle de PyGI a l'ai vachement plus complète et mieux faite que celle de PyQt. Et le module WNCK de GI m'intéresse pas mal, pour faire de la gestion d'évênement émis par X.. Bon après si il y a l'équivalent chez Qt ça me va ^^.

grim7reaper a écrit :

Vim + ctags + cscope

Connais pas ctags et cstope, m'en vais voir ça tongue. Après pour ma défense je travaillais sur la réorganisation d'un projet C++ dont la base de code fais 2Go, le tout écris avec Visual Studio 2008 x)

Hors ligne

#2356 Le 08/12/2015, à 22:27

Elzen

Re : /* Topic des codeurs [8] */

grim7reaper a écrit :

Ça c’est le projet GNOME, non ?
GTK c’est seulement la bibliothèque graphique. Donc Qt n’est pas comparable à GTK.

Pour moi, GNOME, c'est surtout l'ensemble des applications qui sont basées là-dessus.

La question de Dafyd portait sur PyGI et PyQt, qui à mon avis sont comparables à ce niveau ; et GTK se compare à QtGui.

grim7reaper a écrit :

EFL ? ^^
En plus il y a un binding Python (ça me rappelle que j’avais un binding Ada en chemin (et qu’en faisant le binding j’avais relevé un bug dans leur implem’ en C big_smile)).

Ouaip, vu de loin, ça me tenterait bien ; mais il n'y a pas encore de paquet Debian et j'ai la flemme d'installer autrement pour le moment. Donc j'ai prévu de finir par tester ça au bout d'un moment, mais pas tout de suite smile

(D'ailleurs, ça pourrait être intéressant que je me réinstalle un Enlightenment quelque part pour voir comment ça a évolué ces dernières années, aussi)

En attendant, je vais tenter de faire un script de conversion automatique de mon Touhy en PyGTK vers du Python3 + GI, pour voir ce que ça donne.

(Et il faudra que je me remette à tenter de faire un thème GTK3 correct, pour voir)

Dafyd a écrit :

J'ai été fureter les docs avant de venir poster ici, et celle de PyGI a l'ai vachement plus complète et mieux faite que celle de PyQt. Et le module WNCK de GI m'intéresse pas mal, pour faire de la gestion d'évênement émis par X.. Bon après si il y a l'équivalent chez Qt ça me va ^^.

Je n'en connais pas (encore) en Qt, mais ça doit sans doute exister.

Comme j'ai pas mal joué avec WNCK, si tu as des questions dessus, n'hésite pas à demander smile

Hors ligne

#2357 Le 08/12/2015, à 22:46

Dafyd

Re : /* Topic des codeurs [8] */

D'ailleurs Elzen, Touhy c'est un DE qui accepte plusieurs WM c'est bien ça ??

Elzen a écrit :

Comme j'ai pas mal joué avec WNCK, si tu as des questions dessus, n'hésite pas à demander

Merci ! Car moi, j'aimerai bien écrire un WM justement, extrêmement simple bien entendu, mais qui me permettrai de bosser Python, le fonctionnement de X, un toolkit (Qt ou GTK).. Car jusque là, les petits trucs du style calculette, ça me fait moyen rêver.. Du coup si je me trouve un projet plus motivant (même si c'est plus difficile), j'irai peut-être ENFIN au bout d'un projet perso xD
Le seul que j'ai fais jusqu'au bout (et encore j'ai pas encore fais de doc), c'est une librairie C++ pour faire des widgets en SFML, pour mettre des menus dans mes (très éventuels ..) futurs jeux. J'ai les layouts, les widgets de base utiles pour un menu de jeu basique, la gestion des évênement (merci std::function, std::bind et les lambas du C++11 tongue).

Du coup, je cherche un truc motivant et fun à me mettre sous la dent tongue

Hors ligne

#2358 Le 08/12/2015, à 23:03

Elzen

Re : /* Topic des codeurs [8] */

Bah, pas mal de DE sont capables d'accepter plusieurs WMs, hein smile
Mais Touhy a ceci de particulier qu'il n'a pas de WM à lui, ouais, j'ai eu la flemme de me mettre à coder ça moi-même.

Donc si tu te lances dans ce genre de projet, ça m'intéresse ^^
Mais je ne suis pas sûr que WNCK soit utile, à ce niveau ; c'est plutôt pour faire des applications autour, une fois que le WM fonctionne. Pour lui, il faudra surtout mettre la main dans la Xlib, à mon avis, ce qui est l'une des raisons principales pour laquelle j'ai évité de faire mon propre WM ph34r.gif (Ceci dit, j'ai eu l'occasion de m'y pencher un peu plus ces derniers temps, et en fait, c'est loin d'être aussi atroce que ce dont ça a l'air au premier abord).

Sinon, si tu veux faire un jeu en Python+SFML, on a un embryon de projet dans ce genre-là aussi ph34r.gif

Hors ligne

#2359 Le 08/12/2015, à 23:21

Dafyd

Re : /* Topic des codeurs [8] */

Oui la XLib je connais de réputation, là ou je bosse tous les softs développés sont fait via la XLib directement, en C++, les mecs s'arrachent un peu les cheveux des fois big_smile
Mais la question que je me pose, c'est que si je développe un truc qui tourne que sous X, c'est con avec Wayland qui approche non ?

Elzen a écrit :

Sinon, si tu veux faire un jeu en Python+SFML, on a un embryon de projet dans ce genre-là aussi

Intéressant, je retiens tongue

Hors ligne

#2360 Le 08/12/2015, à 23:24

grim7reaper

Re : /* Topic des codeurs [8] */

Dafyd a écrit :

J'ai été fureter les docs avant de venir poster ici, et celle de PyGI a l'ai vachement plus complète et mieux faite que celle de PyQt.

Ha, y’a une doc PyGI maintenant ? Tant mieux, ça manquait.
Sinon pour Qt en fait y’a 2 binding : PyQt et PySide (ils sont compatible, à 2-3 petites choses il suffit de changer les import pour passer de l’un à l’autre sans toucher au reste du code).
La différence entre les deux c’est la licence il me semble (mais les deux sont libres si je me souviens bien).

Dafyd a écrit :

pour faire de la gestion d'évênement émis par X..

Est-ce que tu as vraiment besoin de descendre aussi bas ? C’est rarement le cas (et rarement une bonne idée avec Wayland en chemin, même si X va pas disparaître d’ici demain c’est sûr big_smile)

Dafyd a écrit :

Connais pas ctags et cstope, m'en vais voir ça tongue. Après pour ma défense je travaillais sur la réorganisation d'un projet C++ dont la base de code fais 2Go, le tout écris avec Visual Studio 2008 x)

Le repo’ sur lequel je bosse (presque que du C, mais pas que) fait 3.5G (dont 2.2G de .git big_smile) et ça passe comme une lettre à la poste.

Brrrr, bosser sur Windows je ne pourrais pas.
Je me sentirais trop handicapé. J’ai jamais utilisé leur outils à part à de rares occasions, aussi bien pendant mes études que dans mes boulots.

Elzen a écrit :

Pour moi, GNOME, c'est surtout l'ensemble des applications qui sont basées là-dessus.

Pas seulement :

https://en.wikipedia.org/wiki/The_GNOME_Project a écrit :

The GNOME Project is a community behind the GNOME desktop environment and the software platform upon which it is based.

Elzen a écrit :

La question de Dafyd portait sur PyGI et PyQt, qui à mon avis sont comparables à ce niveau ; et GTK se compare à QtGui.

En effet, PyGI est comparable à Qt. J’avais lu un peu vite (vu que ça parlais aussi de PyGTK).

Pour les WM, Qtile est en Python.
XMonad à un code très lisible est c’est cool pour étudier comment ça fonctionne (à condition de savoir lire Haskell par contre big_smile)
dwm est un WM avec un code petit (donc relativement simple à appréhender, leur but était de rester sous 2000 lignes (ils ont dépassés depuis je crois, mais ça reste pas énorme)) et écrit en C (donc plus facile à lire que du Haskell pour pas mal de gens je pense).

Hors ligne

#2361 Le 08/12/2015, à 23:37

Dafyd

Re : /* Topic des codeurs [8] */

grim7reaper a écrit :

Est-ce que tu as vraiment besoin de descendre aussi bas ? C’est rarement le cas (et rarement une bonne idée avec Wayland en chemin, même si X va pas disparaître d’ici demain c’est sûr big_smile)

Ben pour faire un WM, pas trop le choix .. Après je me dis que c'est pas franchement la peine de commencer un projet aussi long sur une base amenée prochainement à être dépréciée..

Hors ligne

#2362 Le 08/12/2015, à 23:41

Dafyd

Re : /* Topic des codeurs [8] */

grim7reaper a écrit :

Brrrr, bosser sur Windows je ne pourrais pas.

La joie d'être stagiaire, j'avais pas trop le choix xD

Hors ligne

#2363 Le 08/12/2015, à 23:43

Dafyd

Re : /* Topic des codeurs [8] */

Elzen, j'aimerai bien regarder le code de Touhy, c'est dispo quelque part ?? J'ai pas trouvé sur ton site..

EDIT : J'ai trouvé c'est bon x)

Dernière modification par Dafyd (Le 08/12/2015, à 23:48)

Hors ligne

#2364 Le 09/12/2015, à 14:13

Elzen

Re : /* Topic des codeurs [8] */

N'hésite pas à faire des retours dessus smile

Hors ligne

#2365 Le 30/12/2015, à 12:38

Dafyd

Re : /* Topic des codeurs [8] */

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    puts("Hello les codeurs !!");

    return EXIT_SUCCESS;
}

Bon alors, je me lance, je vais tenter d'écrire un petit DE en PyQt ! Pour l'instant j'ai un début de panel, mais c'est que le début xD.
J'ai décidé de ne pas m'inspirer de Touhy, car le code est dégueulasse !! Non je déconne bien sûr... big_smile
Je ne vais pas m'en inspirer afin de galérer comme un cochon, et donc faire des erreurs, et donc apprendre.

Au plaisir de vous causer prochainement !

PS : attention, mon taux d'alcoolémie varie fortement en ces temps anisés, je serai le plus à même de passer ici le matin tongue

Hors ligne

#2366 Le 31/12/2015, à 15:18

grim7reaper

Re : /* Topic des codeurs [8] */

Yeah, il va y avoir de l’activité sur ce topic \o/
Bon courage Dafyd !

Dafyd a écrit :

je vais tenter d'écrire un petit DE en PyQt !

En Python 3 j’espère :]

Hors ligne

#2367 Le 01/01/2016, à 17:32

Dafyd

Re : /* Topic des codeurs [8] */

grim7reaper a écrit :

Yeah, il va y avoir de l’activité sur ce topic \o/
Bon courage Dafyd !

Dafyd a écrit :

je vais tenter d'écrire un petit DE en PyQt !

En Python 3 j’espère :]

Merci Grimm ! Oui bien sur en Python 3 !

Après la fête, la défaite !! Go pythoner tranquillement.
Bonne année les codeurs !

Hors ligne

#2368 Le 01/01/2016, à 20:58

PPdM

Re : /* Topic des codeurs [8] */

Vous voulez ecrire du code?
PRENEZ EN DE LA GRAINE: tongue

Margaret Hamilton, l’ingénieur qui a conçu le logiciel grâce auquel la mission Apollo a pu se poser sur la Lune. Elle pose à côté du code qu’elle a écrit à la main – 1969

Margaret-Hamilton-code-lune.jpg?d8484b


La critique est facile, mais l'art est difficile !
L'humanité étant ce qu'elle est, la liberté ne sera jamais un acquit, mais toujours un droit à défendre !
Pour résoudre un problème commence par poser les bonnes questions, la bonne solution en découlera

Hors ligne

#2369 Le 01/01/2016, à 22:09

Dafyd

Re : /* Topic des codeurs [8] */

Quand on dit que le Java est verbeux ... lol

Sinon les XLibeux, comment est-ce que je pourrai récupérer les touches enfoncée sur le clavier alors que mon appli (en Qt) n'est pas "focusée" ?
Pour l'instant j'utilise ça : (Attention, code crade, utilisé uniquement à des fins de tests)

event = self.x_root.display.next_event()
        keycode = event.detail
        if event.type == X.KeyPress:
            if keycode == self.keymap.get('LCTL'):
                event = self.x_root.display.next_event()
                if event.detail == self.keymap.get('LFSH'):
                    print('LCTL + LFSH pressed')
            elif keycode == self.keymap.get('LFSH'):
                event = self.x_root.display.next_event()
                if event.detail == self.keymap.get('LCTL'):
                    print('LCTL + LFSH pressed')

Mais x_root.display.next_event() est bloquant, ce qui ne m'arrange pas, et en plus, ça capture les événements complètement, les autres fenêtres ne les recoivent plus..
Je sais que c'est possible de lire l'état du clavier via SDL ou SFML, mais bon, j'ai pas envie d'avoir une telle dépendance pour un DE... Et j'ai vérifié, en Qt c'est pas possible..
Des idées ?

Hors ligne

#2370 Le 02/01/2016, à 02:29

Elzen

Re : /* Topic des codeurs [8] */

C'est un point sur lequel je bloque depuis un bail (il faut dire que je ne cherche pas activement du tout ^^)

C'est la raison pour laquelle j'utilise xbindkeys plutôt que d'avoir réécrit un outil spécifique pour Touhy.

Hors ligne

#2371 Le 02/01/2016, à 11:48

Dafyd

Re : /* Topic des codeurs [8] */

Bon j'ai trouvé une solution pour remédier au côté bloquant :

def handle_event(self):
        event_number = self.x_root.display.pending_events()
        i = 0
        while i < event_number:
            event = self.x_root.display.next_event()
            keycode = event.detail
            if event.type == X.KeyPress:
                if keycode == self.keymap.get('LCTL'):
                    event = self.x_root.display.next_event()
                    if event.detail == self.keymap.get('LFSH'):
                        print('LCTL + LFSH pressed')
                elif keycode == self.keymap.get('LFSH'):
                    event = self.x_root.display.next_event()
                    if event.detail == self.keymap.get('LCTL'):
                        print('LCTL + LFSH pressed')
            i += 1

Maintenant ça ne bloque plus, mais ça capture toujours les touches.

Dernière modification par Dafyd (Le 02/01/2016, à 13:58)

Hors ligne

#2372 Le 02/01/2016, à 13:25

grim7reaper

Re : /* Topic des codeurs [8] */

@Dafyd : Tu devrais jeter un œil du côté de XGrabKey (c’est avec ça qu’on implémente les hotkeys je crois) et/ou XSelectInput.

Sinon pour le problème de l’appel bloquant, il y a peut-être moyen de le faire dans un thread à part.
Pour le problème de consommer l’événement, tu peux peut-être utiliser XSendEvent pour le forwarder.

Des sujets liés :
Listening to keyboard events without consuming them in X11 - Keyboard hooking
Linux X11 - Global Keyboard Hook

Sinon d’autres des pistes de recherches tu peux taper « keylogger X11 » parce qu’un truc qui attrape tout les événements clavier c’est un keylogger big_smile

Hors ligne

#2373 Le 02/01/2016, à 14:04

Dafyd

Re : /* Topic des codeurs [8] */

Merci Grimm, dès que j'ai un peu de temps je vois ça !
En fait la méthode que j'ai postée est appelée toutes les 100ms par un QThread à part effectivement, sinon je n'ai aucun moyen de l'appeler régulièrement dans la boucle principale de Qt. Le problème est que next_event fait bloquer tout le programme quand il n'y a plus d'événements dans sa file, même quand elle est appelée dans un thread à part, pour une raison que je ne comprend pas. Du coup j'utilise pending_events pour contourner le problème.

Hors ligne

#2374 Le 03/01/2016, à 22:14

Dafyd

Re : /* Topic des codeurs [8] */

Problème résolut, en reprenant ça : https://gist.github.com/whym/402801#file-keylogger-py
Merci Grim pour le tuyau !
Plus qu'a comprendre comment ça marche ..

Hors ligne

#2375 Le 04/01/2016, à 09:59

grim7reaper

Re : /* Topic des codeurs [8] */

Dafyd a écrit :

Merci Grim pour le tuyau !

De rien smile

Dafyd a écrit :

Plus qu'a comprendre comment ça marche ..

Apparement c'est basé sur l'extension Record de X11, je sais pas a quel point cette extension est déployée.

Hors ligne