Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2918 connectés 

 

Sujet(s) à lire :
    - Who's who@Programmation
 

 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  21854  21855  21856  ..  27247  27248  27249  27250  27251  27252
Auteur Sujet :

[blabla@olympe] Le topic du modo, dieu de la fibre et du monde

n°2273863
nraynaud
lol
Posté le 19-01-2016 à 23:37:36  profilanswer
 

Reprise du message précédent :
et sinon, beaucoup plus dramatique que la thune que je laisse sur la table, je me suis pris une épine d'acacia aujourd'hui (après l'épine de cactus hier). C'est sauvage comme pays.


---------------
trainoo.com, c'est fini
mood
Publicité
Posté le 19-01-2016 à 23:37:36  profilanswer
 

n°2273864
Hermes le ​Messager
Breton Quiétiste
Posté le 19-01-2016 à 23:44:48  profilanswer
 


 
J'adore le "we have an urgent need"  [:rofl]

n°2273865
ratibus
Posté le 19-01-2016 à 23:46:04  profilanswer
 

vapeur_cochonne a écrit :

un ^pari :D²²²
ici qui embaucherai ou coopterai nraynaud ?  
imagine il arrive au boulot et son mac est déballé ?
 
franchement a 45K€ moi je dit chapeau


Je l'ai vu en entretien il y a quelques années nray, il est très bien :o

n°2273866
Youmoussa
Ecrou-vis
Posté le 20-01-2016 à 00:04:48  profilanswer
 

uriel a écrit :


ben non. si c'est très bas par rapport au salaire precedent, c'est normal.  
 il a pas de credit, ni de gamins a charge donc la pression est pas la meme que la tienne :O


 
Il a aussi pas de boulot depuis 2 ans :o

n°2273867
uriel
blood pt.2
Posté le 20-01-2016 à 00:33:55  profilanswer
 

nraynaud a écrit :


mais dans un salaire on parie rien, un départ provoque automatiquement l'arrêt de la dépense, et un départ en période d'essai, ça se fait très rapidement. Tout ce qui compte c'est quand le mec reste.
 
Le seul pari du salaire, c'est sur le long terme.


 
euh non, tu bloques le poste d'un mec qui va peut etre rester. En plus, tu vas etre la pendant une periode critique et puis tu te casses, il faut qu'ils trouvent quelqu'un d'autre: perte de temps, et tout l'investissement sur toi est perdu. La depense operationelle s'arrete mais pas le reste.


---------------
IVG en france
n°2273868
nraynaud
lol
Posté le 20-01-2016 à 00:57:23  profilanswer
 

uriel a écrit :

euh non, tu bloques le poste d'un mec qui va peut etre rester. En plus, tu vas etre la pendant une periode critique et puis tu te casses, il faut qu'ils trouvent quelqu'un d'autre: perte de temps, et tout l'investissement sur toi est perdu. La depense operationelle s'arrete mais pas le reste.


étant donné que le mec prépare tout pour me virer en quelques mois avant même de m'avoir recruté et que l'annonce a été mise en ligne 102 jours avant mon entretien, j'ai du mal adhérer à ton point de vue.


---------------
trainoo.com, c'est fini
n°2273869
nraynaud
lol
Posté le 20-01-2016 à 01:01:00  profilanswer
 

et sinon, je décerne le titre de pire API du monde à JAI (http://www2.informatik.uni-halle.de/lehre/java-jai-1.1/jai-apidocs/ ).
 
Y'a peut-être des trucs bien dedans, mais c'est imbitable, et y'a pas beaucoup d'exemples en ligne.


---------------
trainoo.com, c'est fini
n°2273870
uriel
blood pt.2
Posté le 20-01-2016 à 01:30:30  profilanswer
 

nraynaud a écrit :

l'annonce a été mise en ligne 102 jours avant mon entretien


:sweat: 'tain....


---------------
IVG en france
n°2273871
nraynaud
lol
Posté le 20-01-2016 à 01:48:24  profilanswer
 

uriel a écrit :


:sweat: 'tain....


Donc tu sens bien que camper un peu sur l'offre, c'est pas exactement le bout du monde. J'ai d'ailleurs un peu peur qu'on soit loin du move fast, break things (avant que vous n'enfonciez des portes ouvertes à votre habitude, on a strictement aucune connexion au système de contrôle de l'éolienne, l'événement redouté de plus haut niveau c'est faire déplacer l'équipe qui s'occupe de l'équilibrage du rotor pour rien)


---------------
trainoo.com, c'est fini
n°2273872
Youmoussa
Ecrou-vis
Posté le 20-01-2016 à 02:17:48  profilanswer
 

nraynaud a écrit :


 
edit: et 6 mois de période d'essai.


 
Si tu es prêt à bosser aux US, tu devrais t'en foutre de critères comme celui la.

mood
Publicité
Posté le 20-01-2016 à 02:17:48  profilanswer
 

n°2273873
nraynaud
lol
Posté le 20-01-2016 à 02:37:02  profilanswer
 

Youmoussa a écrit :

Si tu es prêt à bosser aux US, tu devrais t'en foutre de critères comme celui la.


Aux US y'a de la thune en contrepartie.
Mais surtout là je sais très bien que je vais être sous haute surveillance, donc si je passe un test très dur, je veux une rémunération conséquente, parce que la valeur de mon boulot aura été objectivée. Pour décoincer un peu la situation avec le mec, je lui ai proposé des mettre de la thune sur les objectifs. Comme ça, il a le fixe, le variable, les bspce, les actions et la thune par objectif pour trouver un compromis. Je fais pas le mur non plus.


---------------
trainoo.com, c'est fini
n°2273875
nraynaud
lol
Posté le 20-01-2016 à 04:49:47  profilanswer
 

quelqu'un a un CHIP ou un raspberry Pi Zero ?


---------------
trainoo.com, c'est fini
n°2273876
gfive
Posté le 20-01-2016 à 06:48:54  profilanswer
 

nraynaud a écrit :


Aux US y'a de la thune en contrepartie.


possible mais pas sur que ça coûte beaucoup plus cher à la boite.
Et aux us en cas de plantage t'es comme un con après pour payer tes factures et ton psy.


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
n°2273877
el muchach​o
Comfortably Numb
Posté le 20-01-2016 à 08:03:17  profilanswer
 

Bon sinon, pour ceux que ça intéresse, une implémentation du BehaviourTree en C++11 (amélioration d'une implémentation trouvée sur le net).
WIP vaguement débogué, à utiliser à vos risques et périls :

 

BehaviourTree.h

Code :
  1. #pragma once
  2. #include <iostream>
  3. #include <list>
  4. #include <vector>
  5. #include <stack>
  6. #include <initializer_list>
  7. #include <string>
  8. #include <cstdlib>
  9. #include <chrono>
  10. #include <algorithm>
  11. #include <sstream>
  12. #include <future>
  13. /// Implementation of the Behavior Tree design pattern
  14. ///
  15. /// cf http://www.gamasutra.com/blogs/Chr [...] y_work.php
  16. /// and http://guineashots.com/2014/07/25/ [...] es-part-1/
  17. class BehaviourTree {
  18. public:
  19. enum Status {
  20.  ERROR = -1,
  21.  FAILURE = 0,
  22.  SUCCESS = 1,
  23.  RUNNING = 2 // not used yet
  24. };
  25. // This class represents each node in the behaviour tree.
  26. class Node {
  27. public:
  28.  Node() {}
  29.  Node(const std::string name) : _name(name) {}
  30.  virtual Status run() = 0;
  31.  const std::string getName() const { return _name; }
  32. protected:
  33.  const std::string _name;
  34. };
  35. //  This type of Node follows the Composite Pattern, containing a list of other Nodes.
  36. class CompositeNode : public Node {
  37. private:
  38.  std::vector<Node*> children;
  39. public:
  40.  const std::vector<Node*>& getChildren() const {
  41.   return children;
  42.  }
  43.  void addChild(Node* child) {
  44.   children.emplace_back(child);
  45.  }
  46.  void addChildren(std::initializer_list<Node*>&& newChildren) {
  47.   for (Node* child : newChildren) addChild(child);
  48.  }
  49.  template <typename CONTAINER>
  50.  void addChildren(const CONTAINER& newChildren) {
  51.   for (Node* child : newChildren) addChild(child);
  52.  }
  53. };
  54. // The generic Selector implementation
  55. // If one child succeeds, the Select succeeds and quits immediately.
  56. // FAILURE only if all children fail. Equivalent of a logical OR
  57. class Select : public CompositeNode {
  58. public:
  59.  virtual Status run() override {
  60.   for (Node* child : getChildren()) {
  61.    // If one child succeeds, the entire operation run() succeeds.  Failure only if all children fail.
  62.    const Status s = child->run();
  63.    if (s != FAILURE) {
  64.     return s;
  65.    }
  66.   }
  67.   return FAILURE;  // All children failed so the entire run() operation fails.
  68.  }
  69. };
  70. // The generic Sequence implementation.
  71. // If one child fails, then the entire sequence fails and quits immediately. 
  72. // SUCCESS only if all children succeed. Equivalent of a logical AND.
  73. class Sequence : public CompositeNode {
  74. public:
  75.  virtual Status run() override {
  76.   for (Node* child : getChildren()) {
  77.    // If one child fails, then enter operation run() fails.  Success only if all children succeed.
  78.    const Status s = child->run();
  79.    if (s != SUCCESS) {
  80.     return s;
  81.    }
  82.   }
  83.   return SUCCESS;  // All children suceeded, so the entire run() operation succeeds.
  84.  }
  85. };
  86. // A Decorator adds a functionality to its child node.
  87. // Function is either to transform the Status it receives from the child,
  88. // to terminate the child, or repeat the processing of the child, depending on the type of decorator node.
  89. class DecoratorNode : public Node { 
  90. private:
  91.  Node* child;  // Only one child allowed
  92. protected:
  93.  Node* getChild() const { return child; }
  94. public:
  95.  void setChild(Node* newChild) { child = newChild; }
  96. };
  97. // Root of a BehaviourTree
  98. class Root : public DecoratorNode {
  99. private:
  100.  friend class BehaviourTree;
  101.  virtual Status run() override {
  102.   Status s = getChild()->run();
  103.   while (s == RUNNING)
  104.    s = getChild()->run();
  105.   return s;
  106.  }
  107. };
  108. // Negates the Status of the child.
  109. // A child fails and it will return SUCCESS to its parent, or a child succeeds and it will return FAILURE to the parent.
  110. class Invert : public DecoratorNode { 
  111. private:
  112.  virtual Status run() override {
  113.   Status s = getChild()->run();
  114.   switch (s)
  115.   {
  116.    case SUCCESS: return FAILURE;
  117.    case FAILURE: return SUCCESS;
  118.    default: return s;
  119.   }
  120.  }
  121. };
  122. // A succeeder will always return SUCCESS, irrespective of what the child node actually returned.
  123. // These are useful in cases where you want to process a branch of a tree where a failure is expected or anticipated,
  124. // but you don’t want to abandon processing of a sequence that branch sits on.
  125. class Succeed : public DecoratorNode { 
  126. private:
  127.  virtual Status run() override {
  128.   Status s = getChild()->run();
  129.   if (s == ERROR || s == RUNNING)
  130.    return s;
  131.   return SUCCESS;
  132.  }
  133. };
  134. // The opposite of a Succeeder, always returning fail. 
  135. // Note that this can be achieved also by using an Inverter and setting its child to a Succeeder.
  136. class Fail : public DecoratorNode { 
  137. private:
  138.  virtual Status run() override {
  139.   Status s = getChild()->run();
  140.   if (s == ERROR || s == RUNNING)
  141.    return s;
  142.   return FAILURE;
  143.  }
  144. };
  145. // A repeater will reprocess its child node each time its child returns a Status.
  146. // These are often used at the very base of the tree, to make the tree to run continuously.
  147. // Repeaters may optionally run their children a set number of times before returning to their parent.
  148. class Repeat : public DecoratorNode {
  149. public:
  150.  Repeat(int num = NOT_FOUND) : numRepeats(num) {}  // By default, never terminate.
  151. private:
  152.  int numRepeats;
  153.  static const int NOT_FOUND = -1;
  154.  virtual Status run() override {
  155.   if (numRepeats == NOT_FOUND)
  156.    while (true) getChild()->run();
  157.   else {
  158.    for (int i = 0; i < numRepeats - 1; i++)
  159.     getChild()->run();
  160.    return getChild()->run();
  161.   }
  162.  }
  163. };
  164. // Execute its child in asynchronously (in a separate thread),
  165. // regularly yielding RUNNNING until it reaches its final Status
  166. class Async : public DecoratorNode {
  167. public:
  168.  Async(std::chrono::milliseconds poolTime = std::chrono::milliseconds(10)) : _statusPoolTime(poolTime) {}
  169. private:
  170.  std::chrono::milliseconds _statusPoolTime;
  171.  virtual Status run() override {
  172.   std::future<Status> fut = std::async(std::launch::async, [&] {
  173.    return getChild()->run();
  174.   });
  175.   // if no answer within time delay
  176.   if (fut.wait_for(_statusPoolTime) == std::future_status::timeout)
  177.    return RUNNING;
  178.   return fut.get();
  179.  }
  180. };
  181. // Insert a delay in msec and return SUCCESS
  182. class Sleep : public DecoratorNode {
  183.  Sleep(const std::chrono::milliseconds msec = std::chrono::milliseconds(0)) : _msec(msec) {}
  184. private:
  185.  std::chrono::milliseconds _msec;
  186.  virtual Status run() override {
  187.   std::this_thread::sleep_for(_msec);
  188.   return SUCCESS;
  189.  }
  190. };
  191. // Like a repeater, these decorators will continue to reprocess their child.
  192. // That is until the child finally returns the expected status, at which point the repeater will return the status to its parent.
  193. // The expected status must be either SUCCESS or FAILURE.
  194. class RepeatUntil : public DecoratorNode { 
  195. public:
  196.  RepeatUntil(Status s) : _exitStatus(s) {}
  197. private:
  198.  Status _exitStatus;
  199.  virtual Status run() override {
  200.   Status s = getChild()->run();
  201.   while (s != _exitStatus && s != ERROR && s != RUNNING) {
  202.    s = getChild()->run();
  203.   }
  204.   return s;
  205.  }
  206. };
  207. /// The following are useful nodes
  208. // Stack nodes
  209. template <typename T>
  210. class StackNode : public Node {
  211. protected:
  212.  std::stack<T*>& stack;  // Must be reference to a stack to work.
  213.  StackNode(std::stack<T*>& s) : stack(s) {}
  214. };
  215. // Specific type of leaf (hence has no child).
  216. template <typename T>
  217. class PushToStack : public StackNode<T> {
  218. private:
  219.  T*& item;
  220. public:
  221.  PushToStack(T*& t, std::stack<T*>& s) : StackNode<T>(s), item(t) {}
  222. private:
  223.  virtual Status run() override {
  224.   this->stack.push(item);
  225.   return SUCCESS;
  226.  }
  227. };
  228. // Specific type of leaf (hence has no child).
  229. template <typename T>
  230. class GetStack : public StackNode<T> {
  231. private:
  232.  const std::stack<T*>& obtainedStack;
  233.  T* object;
  234. public:
  235.  GetStack(std::stack<T*>& s, const std::stack<T*>& o, T* t = nullptr) : StackNode<T>(s), obtainedStack(o), object(t) {}
  236. private:
  237.  virtual Status run() override {
  238.   this->stack = obtainedStack;
  239.   if (object)
  240.    this->stack.push(object);
  241.   return SUCCESS;
  242.  }
  243. };
  244. // Specific type of leaf (hence has no child).
  245. template <typename T>
  246. class PopFromStack : public StackNode<T> {
  247. private:
  248.  T*& item;
  249. public:
  250.  PopFromStack(T*& t, std::stack<T*>& s) : StackNode<T>(s), item(t) {}
  251. private:
  252.  virtual Status run() override {
  253.   if (this->stack.empty())
  254.    return FAILURE;
  255.   item = this->stack.top();
  256.   // template specialization with T = Door needed for this line actually
  257.   std::cout << "Trying to get through door #" << item->doorNumber << "." << std::endl;
  258.   this->stack.pop();
  259.   return SUCCESS;
  260.  }
  261. };
  262. // Specific type of leaf (hence has no child).
  263. template <typename T>
  264. class StackIsEmpty : public StackNode<T> {
  265. public:
  266.  StackIsEmpty(std::stack<T*>& s) : StackNode<T>(s) {}
  267. private:
  268.  virtual Status run() override {
  269.   if (this->stack.empty())
  270.    return SUCCESS;
  271.   else
  272.    return FAILURE;
  273.  }
  274. };
  275. // Specific type of leaf (hence has no child).
  276. template <typename T>
  277. class SetVariable : public BehaviourTree::Node {
  278. private:
  279.  T*& variable, *& object;  // Must use reference to pointer to work correctly.
  280. public:
  281.  SetVariable(T*& t, T*& obj) : variable(t), object(obj) {}
  282.  virtual Status run() override {
  283.   variable = object;
  284.   // template specialization with T = Door needed for this line actually
  285.   std::cout << "The door that was used to get in is door #" << variable->doorNumber << "." << std::endl;
  286.   return SUCCESS;
  287.  };
  288. };
  289. // Specific type of leaf (hence has no child).
  290. template <typename T>
  291. class IsNull : public BehaviourTree::Node {
  292. private:
  293.  T*& object;  // Must use reference to pointer to work correctly.
  294. public:
  295.  IsNull(T*& t) : object(t) {}
  296.  virtual Status run() override {
  297.   if (object == nullptr)
  298.    return SUCCESS;
  299.   else
  300.    return FAILURE;
  301.  }
  302. };
  303. public:
  304. BehaviourTree() : root(new Root) {}
  305. void setRootChild(Node* rootChild) const { root->setChild(rootChild); }
  306. Status run() const { return root->run(); }
  307. private:
  308. Root* root;
  309. };
 

BehaviourTree.cpp

Code :
  1. // BehaviorTree_test.cpp : Defines the entry point for the console application.
  2. //
  3. #include "stdafx.h"
  4. #include "BehaviourTree.h"
  5. #include <iostream>
  6. #include <list>
  7. #include <vector>
  8. #include <stack>
  9. #include <initializer_list>
  10. #include <string>
  11. #include <cstdlib>
  12. #include <ctime>
  13. #include <algorithm>
  14. #include <sstream>
  15. //
  16. // http://www.gamasutra.com/blogs/Chr [...] y_work.php
  17. struct Door {
  18. int doorNumber;
  19. };
  20. class Building {
  21. private:
  22. std::stack<Door*> doors;
  23. public:
  24. Building(int numDoors) { initializeBuilding(numDoors); }
  25. const std::stack<Door*>& getDoors() const { return doors; }
  26. private:
  27. void initializeBuilding(int numDoors) {
  28.  for (int i = 0; i < numDoors; i++)
  29.   doors.push(new Door{ numDoors - i });
  30. }
  31. };
  32. struct DataContext {  // Acts as a storage for arbitrary variables that are interpreted and altered by the nodes.
  33. std::stack<Door*> doors;
  34. Door* currentDoor;
  35. Door* usedDoor = nullptr;
  36. };
  37. class DoorAction : public BehaviourTree::Node {
  38. private:
  39. std::string name;
  40. int probabilityOfSuccess;
  41. public:
  42. DoorAction(const std::string newName, int prob) : name(newName), probabilityOfSuccess(prob) {}
  43. private:
  44. virtual BehaviourTree::Status run() override {
  45.  std::this_thread::sleep_for(std::chrono::milliseconds(500));
  46.  if (std::rand() % 100 < probabilityOfSuccess) {
  47.   std::cout << name << " succeeded." << std::endl;
  48.   return BehaviourTree::SUCCESS;
  49.  }
  50.  std::cout << name << " failed." << std::endl;
  51.  return BehaviourTree::FAILURE;
  52. }
  53. };
  54. int main() {
  55. std::srand(std::time(nullptr));
  56. BehaviourTree behaviorTree;
  57. DataContext data;
  58. Building building(5);  // Building with 5 doors to get in.
  59. BehaviourTree::Sequence sequence[3];
  60. BehaviourTree::Select selector;
  61. BehaviourTree::Invert inverter[2];
  62. BehaviourTree::Succeed succeeder;
  63. BehaviourTree::RepeatUntil untilFail(BehaviourTree::FAILURE);
  64. BehaviourTree::GetStack<Door> getDoorStackFromBuilding(data.doors, building.getDoors());
  65. BehaviourTree::PopFromStack<Door> popFromStack(data.currentDoor, data.doors);
  66. BehaviourTree::SetVariable<Door> setVariable(data.usedDoor, data.currentDoor);
  67. BehaviourTree::IsNull<Door> isNull(data.usedDoor);
  68. BehaviourTree::Async async;
  69. // Probabilities of success
  70. DoorAction walkToDoor("Walk to door", 99),
  71.  openDoor("Open door", 12),
  72.  unlockDoor("Unlock door", 25),
  73.  smashDoor("Smash door", 60),
  74.  walkThroughDoor("Walk through door", 85),
  75.  closeDoor("Close door", 100);
  76. // Build the tree (last diagram of
  77. // http://www.gamasutra.com/blogs/Chr [...] y_work.php )
  78. behaviorTree.setRootChild(&sequence[0]);
  79. sequence[0].addChildren({ &getDoorStackFromBuilding, &untilFail, &inverter[0] });
  80. untilFail.setChild(&sequence[1]);
  81. inverter[0].setChild(&isNull);
  82. sequence[1].addChildren({ &popFromStack, &inverter[1] });
  83. inverter[1].setChild(&async);
  84. async.setChild(&sequence[2]);
  85. sequence[2].addChildren({ &walkToDoor, &selector, &walkThroughDoor, &succeeder, &setVariable });
  86. selector.addChildren({ &openDoor, &unlockDoor, &smashDoor });
  87. succeeder.setChild(&closeDoor);
  88. if (behaviorTree.run() == BehaviourTree::SUCCESS)
  89.  std::cout << "Congratulations!  You made it into the building!" << std::endl;
  90. else
  91.  std::cout << "Sorry.  You have failed to enter the building." << std::endl;
  92. }
 

edit: j'ai un bug avec l'asynchronisme, le programme devrait s'arrêter avec "Congratulations" une fois qu'on a fermé la porte, et pas continuer... ça devrait pas être trop difficile à deboguer


Message édité par el muchacho le 20-01-2016 à 08:14:19

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2273878
ratibus
Posté le 20-01-2016 à 09:19:40  profilanswer
 

El muchacho : en 2016 on utilise plutôt des gist pour partager du code :o

n°2273881
masklinn
í dag viðrar vel til loftárása
Posté le 20-01-2016 à 09:39:15  profilanswer
 

Puis on utilise des smart pointers au lieu d'être un gros dégoutant avec des pointeurs C bruts :fou:

Message cité 2 fois
Message édité par masklinn le 20-01-2016 à 09:39:48

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2273883
___alt
Posté le 20-01-2016 à 10:04:28  profilanswer
 

Je viens de voir passer le terme : craft(wo)manship. [:sadnoir]


---------------
TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW
n°2273884
erulio
Posté le 20-01-2016 à 10:06:24  profilanswer
 

masklinn a écrit :

Puis on utilise des smart pointers au lieu d'être un gros dégoutant avec des pointeurs C bruts :fou:


Y a 2 "new" pour 0 "delete", pour situer le niveau :o

n°2273885
___alt
Posté le 20-01-2016 à 10:11:19  profilanswer
 

erulio a écrit :


Y a 2 "new" pour 0 "delete", pour situer le niveau :o


 
Faut que le jeu sorte avant Thanksgiving [:cosmoschtroumpf]


---------------
TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW
n°2273886
vapeur_coc​honne
Stig de Loisir
Posté le 20-01-2016 à 10:11:46  profilanswer
 

ratibus a écrit :


Je l'ai vu en entretien il y a quelques années nray, il est très bien :o



---------------
marilou repose sous la neige
n°2273887
kadreg
profil: Utilisateur
Posté le 20-01-2016 à 10:41:27  profilanswer
 

nraynaud a écrit :

et sinon, beaucoup plus dramatique que la thune que je laisse sur la table, je me suis pris une épine d'acacia aujourd'hui (après l'épine de cactus hier). C'est sauvage comme pays.


 
fait gaffe au sumac, c'est traitre cette saloperie
 

Spoiler :

chaque années, des gens veulent faire un khakha nature, bah ça pique


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°2273890
drasche
Posté le 20-01-2016 à 10:57:21  profilanswer
 

http://i.imgur.com/4NDZ1Pv.jpg


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°2273891
BenO
Profil: Chercheur
Posté le 20-01-2016 à 11:17:30  profilanswer
 

nraynaud a écrit :

quelqu'un a un CHIP ou un raspberry Pi Zero ?


 
J'ai un zero qui traine qqpart :o


---------------
Python Python Python
n°2273892
erulio
Posté le 20-01-2016 à 12:23:57  profilanswer
 

Nouveau taff :

$ find . -iname '*.cpp' -exec wc -l {} \; | sort -nr
    15931 ./trunk/src/CreateLayers/NameLayer.cpp
    15606 ./trunk/src/CreateLayers/RoutingLayer.cpp
    14141 ./trunk/src/CreateLayers/BMDLayer.cpp
    12535 ./trunk/src/CreateLayers/PoiLayer.cpp
    [...]


 [:arank'thnar:2]  
 
 [:buggy]

n°2273893
theShockWa​ve
I work at a firm named Koslow
Posté le 20-01-2016 à 12:36:36  profilanswer
 

erulio a écrit :

Nouveau taff :

$ find . -iname '*.cpp' -exec wc -l {} \; | sort -nr
    15931 ./trunk/src/CreateLayers/NameLayer.cpp
    15606 ./trunk/src/CreateLayers/RoutingLayer.cpp
    14141 ./trunk/src/CreateLayers/BMDLayer.cpp
    12535 ./trunk/src/CreateLayers/PoiLayer.cpp
    [...]


 [:arank'thnar:2]  
 
 [:buggy]


 [:pingouino]  
et j'étais choqué avec notre plus gros fichier qui est à 11000 ici


---------------
last.fm
n°2273894
masklinn
í dag viðrar vel til loftárása
Posté le 20-01-2016 à 12:42:15  profilanswer
 

erulio a écrit :

Nouveau taff :

$ find . -iname '*.cpp' -exec wc -l {} \; | sort -nr
    15931 ./trunk/src/CreateLayers/NameLayer.cpp
    15606 ./trunk/src/CreateLayers/RoutingLayer.cpp
    14141 ./trunk/src/CreateLayers/BMDLayer.cpp
    12535 ./trunk/src/CreateLayers/PoiLayer.cpp
    [...]


 [:arank'thnar:2]  
 
 [:buggy]


On dépasse pas 6kLOC [:jar jar]
 
Mais c'est du Python  [:velasquez:5]


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2273895
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 20-01-2016 à 13:08:30  profilanswer
 

masklinn a écrit :

Puis on utilise des smart pointers au lieu d'être un gros dégoutant avec des pointeurs C bruts :fou:


Et quand on prétend écrire du C++11 on fait pas des enum sans classe...

n°2273896
sligor
Posté le 20-01-2016 à 13:11:51  profilanswer
 

ce massacre collectif [:double deuce:3]


---------------
qwerty-fr
n°2273897
drasche
Posté le 20-01-2016 à 13:36:32  profilanswer
 

Je viens de regarder la taille des classes de mon projet VB et euh... non rien [:joce]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°2273898
el muchach​o
Comfortably Numb
Posté le 20-01-2016 à 13:38:59  profilanswer
 

erulio a écrit :


Y a 2 "new" pour 0 "delete", pour situer le niveau :o


:D
Je sais, mais comme de toute façon en automatique les noeuds sont créés au démarrage et jamais détruits (et il n'y en a pas des centaines), je me suis pas pris la tête dans un premier temps. Mais je vais quand même gérer la mémoire correctement parce qu'on passe valgrind. C'est qu'un prototype.

 

Par contre, après réflexion, le bug que j'ai noté ce matin est plus ennuyeux parce qu'il révèle un problème conceptuel dans mon implémentation de l'asynchronisme dans ce design pattern. Le noeud Async ne peut pas fonctionner parce qu'il engendre des incohérences entre le noeud et le reste du système. Le système est par nature synchrone, et le seul asynchronisme acceptable ne peut être que local, et non pas global. Donc il faut virer le noeud Async et le remplacer par un noeud Parallel qui va faire un join. Le noeud parallel ne rend pas la main tant que ses enfants n'ont pas terminé leurs traitements.

 

Ah et j'ai rajouté un if... tehn... else :o

Message cité 1 fois
Message édité par el muchacho le 20-01-2016 à 13:44:10

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2273899
erulio
Posté le 20-01-2016 à 13:41:09  profilanswer
 

theShockWave a écrit :

[:pingouino]  
et j'étais choqué avec notre plus gros fichier qui est à 11000 ici


masklinn a écrit :

On dépasse pas 6kLOC [:jar jar]  
 
Mais c'est du Python  [:velasquez:5]


C'est meme pas le pire :

  • Il y a des scripts bash qui s'appellent 'blablaUnitTest' ... qui testent le worflow complet
  • Il n'y a pas de tests unitaires
  • Les pages wiki de support pour les devs datent de 2012 pour les plus récentes
  • Le directeur technique gagne plus que moi


http://reho.st/iscreamsundae.com/wp-content/uploads/2014/09/tensedatwork.gif
 
 

n°2273900
el muchach​o
Comfortably Numb
Posté le 20-01-2016 à 13:42:54  profilanswer
 

hephaestos a écrit :


Et quand on prétend écrire du C++11 on fait pas des enum sans classe...


La raison pour laquelle j'ai pas mis d'enum class est que je voulais faire un truc dégueu [:petrus75]:
le choix des valeurs de l'enum ne sont pas par hasard. Le 0 et le 1 permettent de faire du cast dégueu vers les booléens. [:petrus75]
Ceci étant j'ai décidé contre parce que ceux qui vont maintenir derrière vont se planter, donc ça finira en enum classes.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2273901
theShockWa​ve
I work at a firm named Koslow
Posté le 20-01-2016 à 13:43:02  profilanswer
 

el muchacho a écrit :


:D
Je sais, mais comme de toute façon en automatique les noeuds sont créés au démarrage et jamais détruits (et il n'y en a pas des centaines), je me suis pas pris la tête dans un premier temps. Mais je vais quand même gérer la mémoire correctement parce qu'on passe valgrind. C'est qu'un prototype.
 
Par contre, après réflexion, le bug que j'ai noté ce matin est plus ennuyeux parce qu'il révèle un problème conceptuel dans mon implémentation de l'asynchronisme dans ce design pattern. Le noeud Async ne peut pas fonctionner parce qu'il engendre des incohérences entre le noeud et le reste du système. Le système est par nature synchrone, et le seul asynchronisme acceptable ne peut être que local, et non pas global. Donc il faut virer le noeud Async et le remplacer par un noeud Parallel qui va faire un join. Le noeud parallel ne rend pas la main tant que ses enfants n'ont pas terminé leurs traitements.


 
Pure curiosité, c'est pour quelle application que tu fais ca ?


---------------
last.fm
n°2273902
el muchach​o
Comfortably Numb
Posté le 20-01-2016 à 13:45:06  profilanswer
 

theShockWave a écrit :

 

Pure curiosité, c'est pour quelle application que tu fais ca ?


Automatique/robotique
A la place d'une machine d'état qui risque d'e^tre imbitable/inmaintenable


Message édité par el muchacho le 20-01-2016 à 13:51:13

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2273903
R3g
fonctionnaire certifié ITIL
Posté le 20-01-2016 à 13:48:58  profilanswer
 

erulio a écrit :


C'est meme pas le pire :

  • Il y a des scripts bash qui s'appellent 'blablaUnitTest' ... qui testent le worflow complet
  • Il n'y a pas de tests unitaires
  • Les pages wiki de support pour les devs datent de 2012 pour les plus récentes
  • Le directeur technique gagne plus que moi


http://reho.st/http://iscreamsunda [...] atwork.gif
 
 


C'est dans le secteur de l'énergie ?

Message cité 3 fois
Message édité par R3g le 20-01-2016 à 13:49:55

---------------
Au royaume des sourds, les borgnes sont sourds.
n°2273905
gelatine_v​elue
Posté le 20-01-2016 à 14:16:35  profilanswer
 

R3g a écrit :


C'est dans le secteur de l'énergie ?


 
 :D

n°2273906
masklinn
í dag viðrar vel til loftárása
Posté le 20-01-2016 à 14:28:47  profilanswer
 

el muchacho a écrit :


La raison pour laquelle j'ai pas mis d'enum class est que je voulais faire un truc dégueu [:petrus75]:
le choix des valeurs de l'enum ne sont pas par hasard. Le 0 et le 1 permettent de faire du cast dégueu vers les booléens. [:petrus75]
Ceci étant j'ai décidé contre parce que ceux qui vont maintenir derrière vont se planter, donc ça finira en enum classes.


Et quand bien même, tu peux static_cast<bool>(enum_value) :o

Code :
  1. #include <iostream>
  2.  
  3. enum class Status :char {
  4.  ERROR = -1,
  5.  FAILURE = 0,
  6.  SUCCESS = 1,
  7.  RUNNING = 2
  8. };
  9.  
  10. void thing(Status s) {
  11.  if (static_cast<bool>(s)) {
  12.    std::cout << "hasn't failed!";
  13.  } else {
  14.    std::cout << "has failed";
  15.  }
  16.  std::cout << std::endl;
  17. }
  18.  
  19. int main() {
  20.  thing(Status::ERROR);
  21.  thing(Status::FAILURE);
  22.  thing(Status::SUCCESS);
  23. }



Message édité par masklinn le 20-01-2016 à 15:22:36

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2273907
Shinuza
This is unexecpected
Posté le 20-01-2016 à 14:36:07  profilanswer
 

gatsu35 a écrit :


TU n'as que ça en fixe ? Vu ton level tu devrais toucher plus

Sans anciennete en CDI c'est complique. C'est surtout parce que j'avais envie de rester, sinon j'aurais pu avoir 65/70.


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°2273908
vapeur_coc​honne
Stig de Loisir
Posté le 20-01-2016 à 14:56:11  profilanswer
 

R3g a écrit :


C'est dans le secteur de l'énergie ?


:D


---------------
marilou repose sous la neige
n°2273909
gatsu35
Blablaté par Harko
Posté le 20-01-2016 à 14:56:43  profilanswer
 

Bon les filles, je cherche à savoir s'il est possible d'avoir un deuxième écran sur un macbook air mid2013
Actuellement mon setup chez moi est ainsi :  
- 32 pouces en 2160x1440 en displayport
- Un dock thunderbolt qui a une sortie displayport.
 
Et je cherche à savoir si je peux brancher un deuxième écran, mais impossible de trouver une bonne info.

n°2273910
Hermes le ​Messager
Breton Quiétiste
Posté le 20-01-2016 à 15:00:20  profilanswer
 

gatsu35 a écrit :

Bon les filles, je cherche à savoir s'il est possible d'avoir un deuxième écran sur un macbook air mid2013
Actuellement mon setup chez moi est ainsi :  
- 32 pouces en 2160x1440 en displayport
- Un dock thunderbolt qui a une sortie displayport.
 
Et je cherche à savoir si je peux brancher un deuxième écran, mais impossible de trouver une bonne info.


 
chez nous, on a un macbook air 2011 11 pouces (celui de ma femme) et il supporte sans broncher un écran de 2560x1440 en 27 pouces en display port.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  21854  21855  21856  ..  27247  27248  27249  27250  27251  27252

Aller à :
Ajouter une réponse
 

Sujets relatifs
Plus de sujets relatifs à : [blabla@olympe] Le topic du modo, dieu de la fibre et du monde


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)