Se connecter

Informatique

Création de Jeux

Sujet : [HS] Modération et Blabla.
[-Shana-]
Niveau 10
05 décembre 2017 à 19:50:36

Oh je l'avais oublié le compteur :hap:
Ce sera pour la semaine prochaine :noel:

whiteapplex
Niveau 10
05 décembre 2017 à 20:48:14

Le 05 décembre 2017 à 17:31:39 Godrik a écrit :

Le 03 décembre 2017 à 22:08:36 whiteapplex a écrit :
Quand des gens me disent de sauvegarder des "get" pour optimiser un programme :malade:
ET C'EST DU JAVA BORDEL ! DU JAVA ! OPTIMISER DU JAVA ! :malade: Pourquoi pas optimiser du python tant qu'on y est :malade:
C'est eux qui devraient aller à 42, mais ils vont sortir bac+5 hein :rire:
Bon dites moi honnêtement si je me trompe, je veux savoir, si sauvegarder un "get" c'est vraiment une bonne pratique de programmation en Java. Est-ce qu'on en est là ? Au point où il vaut mieux un

class A { B b; C c; void init(){b=c.getB()} ; void foo(){ b.foo(); } }

à un

class A { C c; void foo { c.getB().foo(); } }

C'est pas des choses qui seront optimisées avec 99% de chance en compilation OU qui valent pas le coup d'être optimisée (on parle d'un programme avec des milliers de lignes de codes et une interface graphique) ?

En general le compilateur ne peut pas optimiser ce genre de chose. Parceque le compilatur ne peut pas forcement savoir si C.b est sucesceptible de changer ou pas entre l'appel a A.init et l'appel a A.foo. Du coup il ne peut pas faire cette optimization. Est ce que l'optimisation est utile? Ca depend de l'implementation de C.getB(); Mais en general, ca sauve un dereferencement de pointeur. Donc potentiellement un lookup en TLB et un cache miss.

Si les structures de donnees de ton application sont tres creuse, tu peux rapidement perdre de la perf, surtout quand tu as des architectures immonde ou C.getB() appelle D.getB() qui appelle E.getB() etc. ce qui est une structure relativement classique en java.

D'accord je vois... Faudra que je fasse de vrais tests pour me sensibiliser à la perte de performance associée, j'ai du mal à me convaincre que ça peut être significatif. Sur une application javafx pour moi t'as des milliers de getters dans ce style directement dans le code de la lib et ce genre d'optimisation est pas important en comparaison. J'essaierai de faire un truc bien moche avec plein de getters imbriqués.

Le 05 décembre 2017 à 17:33:22 Godrik a écrit :

Le 04 décembre 2017 à 17:38:26 whiteapplex a écrit :
Après pour contribuer à la discussion sur l'optimisation et la POO (en dehors de mon cas trivial et des cas de microoptimisation inutiles), j'ai lu ce commentaire récent (sous forme de thread de message twitter, ultra pratique) qui explique pas mal certaines contraintes d'optimisations:
https://twitter.com/etoddodd_/status/936422488787038208

Mais on reste dans les mêmes considérations, si t'en es au point d'optimiser des getters, t'as mal pensé ton application à la base.

Note que le message du mec suppose que le programme ne tiens pas en compte de la memoie.
le POO c'est un modele d'access au donne, pas un modele de representation des donnees.
Tu peux tres bien structurer tes donnees compacte en memoire et sans allocation dynamique, mais avoir une couche d'abstraction objet qui presente des absractions simple a comprendre et a utiliser.

Du coup il se trompe en disant qu'il quitte la POO ? Ce qu'il voulait dire c'est qu'il quittait la représentation des données dans les langages actuels à la C# ? Genre en C++ on peut avoir des données compactes dans une classes si on fait tout statiquement .. je crois ? (honnêtement pour moi C# et Java c'est des boites noires à ce niveau là, même si je mets des membres statiques je sais pas du tout comment c'est représenté vu que ça hérite déjà de pas mal de chose).

whiteapplex
Niveau 10
05 décembre 2017 à 20:51:47

Arkwolf :d) Aie aie aie, je sais pas si je l'avais déjà vu, mais ça fait mal à chaque fois >_<
Ca fait relativiser, on pourra jamais être pire que ça :hap:
C'est une grosse boite ? Si oui il faudra lacher un nom quand tu partiras :hap: Histoire de protéger les générations futures :hap:

[-Shana-]
Niveau 10
05 décembre 2017 à 22:00:15

Le 05 décembre 2017 à 20:51:47 whiteapplex a écrit :
Arkwolf :d) Aie aie aie, je sais pas si je l'avais déjà vu, mais ça fait mal à chaque fois >_<
Ca fait relativiser, on pourra jamais être pire que ça :hap:
C'est une grosse boite ? Si oui il faudra lacher un nom quand tu partiras :hap: Histoire de protéger les générations futures :hap:

Protéger ou pointer du doigt en rigolant tous autour ? :noel:
https://media.giphy.com/m/media/q8IwLQFwKSw4o/giphy.gif

:hap:

Arkwolf
Niveau 22
05 décembre 2017 à 22:07:14

Le 05 décembre 2017 à 20:51:47 whiteapplex a écrit :
Arkwolf :d) Aie aie aie, je sais pas si je l'avais déjà vu, mais ça fait mal à chaque fois >_<
Ca fait relativiser, on pourra jamais être pire que ça :hap:
C'est une grosse boite ? Si oui il faudra lacher un nom quand tu partiras :hap: Histoire de protéger les générations futures :hap:

Et c'est du code écrit par une personne qui a presque 10 ans d'expérience en dev et qui se croit balèze :oui: Pas par un stagiaire :oui: Mais bon c'est vraiment le pire bout que j'ai jamais vu celui là :noel:
C'est une petite boîte au Luxembourg mais dans un groupe assez grand (mais pas ouf non plus) :hap:
Donc pensez à moi si vous postulez un jour dans ce pays [[sticker:p/1kks]]

Et le pire c'est que ma boite d'avant, en France, spécialisée dans des logiciels médicaux, était tout aussi nulle... Au lieu d'utiliser du versioning comme git ou svn, ils mettaient les sources dans un dossier partagé au réseau, et dedans ils ajoutaient un fichier genre "arkwolf a reservé ce dossier ne pas toucher.txt"
Les logiciels étaient dégueulasses et tout buggés, mais chez les concurrents c'était encore pire. Ils utilisaient une vielle version d'un langage de programmation totalement inconnu (le "gupta") et les sources étaient pas sauvegardées en txt donc t'étais obligé d'ouvrir ça avec leur éditeur propriétaire tout pourri [[sticker:p/1lmc]]
dans cet IDE tu pouvais pas aller à la ligne facilement, entrer ça validait ta ligne, il fallait ensuite faire insert pour ajouter une ligne et là t'avais une chance sur deux pour que ça casse l'indentation ou que ça te mette la ligne d'après n'importe où [[sticker:p/1lmc]] limite le plus simple c'était d'utiliser la souris à chaque fois [[sticker:p/1lmc]] et quand t'avais trop de ligne dans un fichier tu pouvais pas scroller suffisamment bas pour voir le code donc soit tu codais en blind mode soit tu repliais des bouts de code, au pire en mettant des if TRUE pour avoir de quoi replier le code [[sticker:p/1lmc]] y'avait carrément des bugs dans le langage même [[sticker:p/1lmc]] et à l'entretien d'embauche on m'avait dit que je ferais du C# des familles "sauf au tout début"
[[sticker:p/1lmk]]
Bref je digresse... Au moins ces experiences nulles ça fait des anecdotes marrantes à raconter [[sticker:p/1kki]]

whiteapplex
Niveau 10
05 décembre 2017 à 22:38:59

C'est une petite boîte au Luxembourg mais dans un groupe assez grand

Je connais une boite au luxembourg, ça commence par Act .. ?

whiteapplex
Niveau 10
05 décembre 2017 à 22:45:08

Sinon désolé pour toi et toutes ces expériences bien bien moisies.
J'ai pas encore beaucoup d'expérience dans le travail concret, ça va venir :noel: J'imagine que ça ne se passe jamais bien à ce niveau :hap: , Sauf peut-être pour les startups qui partent de 0 avec les possibilités de l'environnement de développement actuel.
Mais perso j'ai eu aucun cours sur les environnements de développement. J'ai même assurément JAMAIS eu de cours sur Git. Faut dire que ces environnements changent tous les 5ans ce qui est plutôt dommage pour l'apprendre en cours du coup.

Arkwolf
Niveau 22
06 décembre 2017 à 08:18:29

Le 05 décembre 2017 à 22:38:59 whiteapplex a écrit :

C'est une petite boîte au Luxembourg mais dans un groupe assez grand

Je connais une boite au luxembourg, ça commence par Act .. ?

Actimage ? J'ai connu des gens qui y ont travaillé, apparemment c'est pas très bien aussi. :hap:

Le 05 décembre 2017 à 22:45:08 whiteapplex a écrit :
Mais perso j'ai eu aucun cours sur les environnements de développement. J'ai même assurément JAMAIS eu de cours sur Git. Faut dire que ces environnements changent tous les 5ans ce qui est plutôt dommage pour l'apprendre en cours du coup.

Dommage parce que le versioning c'est super important et même si l'environnement change, le concept bouge pas trop normalement. Rien que pour travailler avec des gens par groupes pour les projets, je vois pas comment tu peux faire ça proprement sans versioning :doute: Moi j'avais appris SVN par exemple.

whiteapplex
Niveau 10
06 décembre 2017 à 12:53:35

Oui je pensais à Actimage :ok:
Travailler en groupe ça tient à pas grand chose dans la théorie:
1) Savoir bien découper les concepts (méthodes, classes..)
2) Savoir bien gérer les interfaces entre les concepts
Que tu fasses du versioning ou pas, dans tous les cas tu galères sur ces niveaux. Dans les outils à la git ça devient des conflits, qui sont de toute façon toujours galère à résoudre.
Tu as aussi des outils pour modifier du code en direct en même temps que d'autres personnes, mais ça pose d'autres problématiques même si ça "résoud" celle des conflits de fusion de code. Je sais pas si beaucoup de monde travaille encore à améliorer ce genre d'outils de travail collaboratif. Je trouve que git pourrait être plus intuitif, on est bientôt en 2018 et on doit encore résoudre des conflits et tapper des lignes de commandes à la main (j'ai pas essayé kraken cela dit, mais les gui que je connais n'apportent que peu de chose).
On pourrait peut-être avoir des concepts de "code fantome" où on verrait le code des branches des autres sur notre branche en direct, sans que celui-çi ne soit compilable (peut-être en affichant le code en commenté ou définissant des normes entre les IDE). Déjà tous les IDE sont pas ultra compatibles avec git, avec netbeans une fois sur deux je dois fermer et réouvrir le projet à chaque checkout.
Des fois il y a aussi des conflits sur des nouvelles lignes, ou sur des commentaires qui changent :malade: , et quand tu commences à merge et rebase sur des gros projets c'est régulièrement la fin du monde.

Le concept des branches de git, c'est pareil dans SVN ?

Arkwolf
Niveau 22
06 décembre 2017 à 14:15:05

Les problèmes de conflits sur git je les gère directement dans l'IDE et c'est intuitif je trouve. En fait le seul moment où j'utilise les lignes de commandes c'est pour faire un set upstream pour certains push, le reste tout est déjà bien géré par l'IDE, mais j'ai pas utilisé NetBeans depuis des lustres, j'utilise que des forks d'intellij maintenant :hap:

J'ai jamais trop de soucis de conflits et quand j'en ai c'est pas particulièrement l'enfer :( après c'est sûr que si t'as un lutin qui change toute la structure du projet pendant que tu travail sur un truc ça risque de faire mal :rire:

Le concept des branches de git, c'est pareil dans SVN ?

ça fait tellement longtemps que j'ai pas utilisé SVN que je sais plus trop, je crois que sur le principe c'est pareil mais y'a une grosse différence vu que SVN c'est pas décentralisé, du coup je crois que tu peux pas avoir des branches en local rien qu'à toi mais je suis pas sûr, je l'avais utilisé qu'à l'école SVN :hap:

Après dans l'idéal, au dela du simple versioning pour les appli web le mieux c'est faire aussi de l'intégration continue et là t'es en haut du panier :bave: Avec des bots qui vérifient si ton code est standard et qui lance automatiquement les tests unitaires avant d'accepter une pull request sur la master et balancer automatiquement ça en ligne une fois que tout passe bien :bave: mais c'est chiant à mettre en place quand même [[sticker:p/1lmk]]

whiteapplex
Niveau 10
06 décembre 2017 à 14:24:50

Ouais, pour mon site je comptais passer à git mais un peu la flemme honnêtement.
Si jamais j'ai besoin je le ferai en passant en même temps sur un VPS (je sais même pas si c'est faisable facilement de push sur un serveur, tout en ftp)
L'avantage des sites webs dans des environnements propres c'est que tu peux tester leur fonctionnement global en théorie. T'as la liste des pages web, suffit d'envoyer les requêtes GET/POST nécessaire. T'as les formulaires, si ils sont bien codés tu sais ce qu'ils prennent en entrée donc tu peux faire tourner des tests automatiquement.
Mais tout ça c'est difficilement accessible aux freelances. Et puis de toute façon je suis déjà pas assez courageux pour faire des tests unitaires en entreprise alors seul :hap: , faudrait vraiment un projet à bétonner pour que ça me motive.

lokilok
Niveau 11
06 décembre 2017 à 14:51:54

Git kraken c'est plutôt sympa je trouve, c'est plus propre pour visualiser les modifications que de passer par la console et tu peux ajouter uniquement des blocs ou des lignes de code à ton commit, t'es pas obligé d'ajouter le fichier en entier (je sais pas si c'est faisable via la console mais en tout cas c'est certainement moins intuitif). C'est pratique quand tu veux changer un truc rapidement qui a pas trop de rapport avec ce que t'es entrain de faire sans perdre du temps à faire un Stash je trouve :oui:

EDIT: et git kraken propose un outil pour résoudre les conflits mais j'ai pas pu tester parce que c'est dans la version payante.

Arkwolf
Niveau 22
06 décembre 2017 à 17:34:19

Si jamais j'ai besoin je le ferai en passant en même temps sur un VPS (je sais même pas si c'est faisable facilement de push sur un serveur, tout en ftp)

Pour le PHP en gros j'utilise 3 solution pour déployer les sites

1) Faire de l'intégration continue comme je parlais avant, le mieux
2) Utiliser un système comme deployer.org https://deployer.org qui s'occupera de faire le déploiement quand tu lui demande (ça sous entend qu'il faut quand même faire gaffe à avoir un git propre et faire attention aux migrations de base de données entre autres), c'est un bon mix :oui:
3) Envoyer directement en FTP lors du commit / push et resynchroniser des trucs à la main si nécessaire (PHPStorm te permet de synchroniser tes fichiers avec un FTP distant, tu peux choisir d'envoyer les fichiers qui ont été modifié lors d'un comit ou alors de les envoyer à la main), le moins bien mais ça fait le taf quand même

Git Kraken il est joli mais bon ça apporte pas tant de trucs que ça quand intellij gère déjà tellement de choses je trouve :hap: Après pour ceux qui utilisent un IDE / éditeur plus simple ouais c'est quand même grave cool d'avoir une interface graphique avec les petites branches qui font genre t'as fait un truc super compliqué alors qu'en fait t'as juste fait une branche et un merge :bave: :noel:

tu peux ajouter uniquement des blocs ou des lignes de code à ton commit, t'es pas obligé d'ajouter le fichier en entier

Ajouter uniquement des bouts de code et pas le fichier en entier ? :doute:
C'est bizarre ça, ça fait quoi concrètement, c'est quoi la différence ? :doute:

lokilok
Niveau 11
06 décembre 2017 à 19:10:15

tu peux ajouter uniquement des blocs ou des lignes de code à ton commit, t'es pas obligé d'ajouter le fichier en entier

Ajouter uniquement des bouts de code et pas le fichier en entier ? :doute:

C'est bizarre ça, ça fait quoi concrètement, c'est quoi la différence ? :doute:

À quoi ça sert ? Bah perso j'ai déjà utilisé cette fonctionnalité pour corriger un bug sur un fichier que j'avais déjà modifié pour un autre commit, ça m'a permit de faire facilement deux commits séparés plutôt qu'un seul qui contient plusieurs modifications :oui:

C'est pas une fonctionnalité super utile et indispensable j'en conviens, mais de temps en temps ça peut faire gagner un peu de temps.

EDIT: et évidemment je me suis rendu compte du bug seulement pendant que j'étais entrain de faire les modifications pour le commit que j'avais prévu de faire à la base.

Arkwolf
Niveau 22
06 décembre 2017 à 20:04:55

À quoi ça sert ? Bah perso j'ai déjà utilisé cette fonctionnalité pour corriger un bug sur un fichier que j'avais déjà modifié pour un autre commit, ça m'a permit de faire facilement deux commits séparés plutôt qu'un seul qui contient plusieurs modifications :oui:

Ah ouais, pourquoi pas :hap: faut vraiment vouloir un historique de commits super propre alors :oui:

godrik
Niveau 27
06 décembre 2017 à 21:48:26

D'accord je vois... Faudra que je fasse de vrais tests pour me sensibiliser à la perte de performance associée, j'ai du mal à me convaincre que ça peut être significatif. Sur une application javafx pour moi t'as des milliers de getters dans ce style directement dans le code de la lib et ce genre d'optimisation est pas important en comparaison. J'essaierai de faire un truc bien moche avec plein de getters imbriqués.

en effet, si tu es dans la boule awt, c'est tellement lent pour commencer qu'il y a peu d'espoir.

Note que le message du mec suppose que le programme ne tiens pas en compte de la memoie.
le POO c'est un modele d'access au donne, pas un modele de representation des donnees.
Tu peux tres bien structurer tes donnees compacte en memoire et sans allocation dynamique, mais avoir une couche d'abstraction objet qui presente des absractions simple a comprendre et a utiliser.

Du coup il se trompe en disant qu'il quitte la POO ? Ce qu'il voulait dire c'est qu'il quittait la représentation des données dans les langages actuels à la C# ? Genre en C++ on peut avoir des données compactes dans une classes si on fait tout statiquement .. je crois ? (honnêtement pour moi C# et Java c'est des boites noires à ce niveau là, même si je mets des membres statiques je sais pas du tout comment c'est représenté vu que ça hérite déjà de pas mal de chose).

Meme en java ou en C# tu peux faire ca.
Suppose que tu veux stocker une image. Tu peux avoir une "class pixel {char r,g,b; char getR(){return r;}};" ou une "class pixel {int x,y; Image* i; char getR(){i->r[x][y]}};"

Et les deux notations te permettent d'avoir une fonction getPixel(x,y) dans Image.

TERMlNAT0R
Niveau 7
07 décembre 2017 à 01:38:38

Johnny est dead, c'est la beaufitude qui en prend un coup, là. :peur:

BeerDuff
Niveau 47
07 décembre 2017 à 03:53:29

Le 07 décembre 2017 à 01:38:38 TERMlNAT0R a écrit :
Johnny est dead, c'est la beaufitude qui en prend un coup, là. :peur:

https://image.noelshack.com/fichiers/2017/49/3/1512549348-ripjony.png

TERMlNAT0R
Niveau 7
07 décembre 2017 à 07:29:27

Marrant, on va avoir droit à une déferlante de bobos pseudos-intellectuels (mais qui sont en réalité atrophiés du bulbe) se revendiquant de Johnny alors que de son vivant ces mêmes bobos le considéraient has-been (ce qu'il était) et lui crachaient à la tronche, les mêmes qui ont prétendument pleuré Michael Jackson et qui l'ont traîné dans la boue avant sa mort (à juste titre). :rire: :peur:

Merde, si t'aimes pas un artiste, fais le jusqu'au bout, ne fais pas l'hypocrite en retournant ta veste à sa mort. :rire:

En tout cas je prévois une explosion des visionnages des vidéos de sa chaîne Youtube et du nombre d'abonnés. :oui: :peur:

[-Shana-]
Niveau 10
07 décembre 2017 à 14:56:53

Le pire c'est la télé en ce moment. Déjà que c'était pas intéressant avant, là sur toutes les chaînes c'est du Johnny alors que tout le monde s'en fichait totalement de son vivant sauf les quelques kékés du pas de Calais :hap:
Puis bon, 9 chaînes dédiant leurs programmes à Johnny alors qu'ils avaient déjà préparés leurs reportage sur sa mort en été :rire:

Sujet : [HS] Modération et Blabla.
News événement
Jouez et tentez de remporter des places de cinéma ainsi que des goodies du film Kraven The Hunter
   Retour haut de page
Consulter la version web de cette page