Search Results

Search found 189 results on 8 pages for 'critique'.

Page 1/8 | 1 2 3 4 5 6 7 8  | Next Page >

  • Scala n00b: Critique my code

    - by Peter
    G'day everyone, I'm a Scala n00b (but am experienced with other languages) and am learning the language as I find time - very much enjoying it so far! Usually when learning a new language the first thing I do is implement Conway's Game of Life, since it's just complex enough to give a good sense of the language, but small enough in scope to be able to whip up in a couple of hours (most of which is spent wrestling with syntax). Anyhoo, having gone through this exercise with Scala I was hoping the Scala gurus out there might take a look at the code I've ended up with and provide feedback on it. I'm after anything - algorithmic improvements (particularly concurrent solutions!), stylistic improvements, alternative APIs or language constructs, disgust at the length of my function names - whatever feedback you've got, I'm keen to hear it! You should be able to run the following script via "scala GameOfLife.scala" - by default it will run a 20x20 board with a single glider on it - please feel free to experiment. // CONWAY'S GAME OF LIFE (SCALA) abstract class GameOfLifeBoard(val aliveCells : Set[Tuple2[Int, Int]]) { // Executes a "time tick" - returns a new board containing the next generation def tick : GameOfLifeBoard // Is the board empty? def empty : Boolean = aliveCells.size == 0 // Is the given cell alive? protected def alive(cell : Tuple2[Int, Int]) : Boolean = aliveCells contains cell // Is the given cell dead? protected def dead(cell : Tuple2[Int, Int]) : Boolean = !alive(cell) } class InfiniteGameOfLifeBoard(aliveCells : Set[Tuple2[Int, Int]]) extends GameOfLifeBoard(aliveCells) { // Executes a "time tick" - returns a new board containing the next generation override def tick : GameOfLifeBoard = new InfiniteGameOfLifeBoard(nextGeneration) // The next generation of this board protected def nextGeneration : Set[Tuple2[Int, Int]] = aliveCells flatMap neighbours filter shouldCellLiveInNextGeneration // Should the given cell should live in the next generation? protected def shouldCellLiveInNextGeneration(cell : Tuple2[Int, Int]) : Boolean = (alive(cell) && (numberOfAliveNeighbours(cell) == 2 || numberOfAliveNeighbours(cell) == 3)) || (dead(cell) && numberOfAliveNeighbours(cell) == 3) // The number of alive neighbours for the given cell protected def numberOfAliveNeighbours(cell : Tuple2[Int, Int]) : Int = aliveNeighbours(cell) size // Returns the alive neighbours for the given cell protected def aliveNeighbours(cell : Tuple2[Int, Int]) : Set[Tuple2[Int, Int]] = aliveCells intersect neighbours(cell) // Returns all neighbours (whether dead or alive) for the given cell protected def neighbours(cell : Tuple2[Int, Int]) : Set[Tuple2[Int, Int]] = Set((cell._1-1, cell._2-1), (cell._1, cell._2-1), (cell._1+1, cell._2-1), (cell._1-1, cell._2), (cell._1+1, cell._2), (cell._1-1, cell._2+1), (cell._1, cell._2+1), (cell._1+1, cell._2+1)) // Information on where the currently live cells are protected def xVals = aliveCells map { cell => cell._1 } protected def xMin = (xVals reduceLeft (_ min _)) - 1 protected def xMax = (xVals reduceLeft (_ max _)) + 1 protected def xRange = xMin until xMax + 1 protected def yVals = aliveCells map { cell => cell._2 } protected def yMin = (yVals reduceLeft (_ min _)) - 1 protected def yMax = (yVals reduceLeft (_ max _)) + 1 protected def yRange = yMin until yMax + 1 // Returns a simple graphical representation of this board override def toString : String = { var result = "" for (y <- yRange) { for (x <- xRange) { if (alive (x,y)) result += "# " else result += ". " } result += "\n" } result } // Equality stuff override def equals(other : Any) : Boolean = { other match { case that : InfiniteGameOfLifeBoard => (that canEqual this) && that.aliveCells == this.aliveCells case _ => false } } def canEqual(other : Any) : Boolean = other.isInstanceOf[InfiniteGameOfLifeBoard] override def hashCode = aliveCells.hashCode } class FiniteGameOfLifeBoard(val boardWidth : Int, val boardHeight : Int, aliveCells : Set[Tuple2[Int, Int]]) extends InfiniteGameOfLifeBoard(aliveCells) { override def tick : GameOfLifeBoard = new FiniteGameOfLifeBoard(boardWidth, boardHeight, nextGeneration) // Determines the coordinates of all of the neighbours of the given cell override protected def neighbours(cell : Tuple2[Int, Int]) : Set[Tuple2[Int, Int]] = super.neighbours(cell) filter { cell => cell._1 >= 0 && cell._1 < boardWidth && cell._2 >= 0 && cell._2 < boardHeight } // Information on where the currently live cells are override protected def xRange = 0 until boardWidth override protected def yRange = 0 until boardHeight // Equality stuff override def equals(other : Any) : Boolean = { other match { case that : FiniteGameOfLifeBoard => (that canEqual this) && that.boardWidth == this.boardWidth && that.boardHeight == this.boardHeight && that.aliveCells == this.aliveCells case _ => false } } override def canEqual(other : Any) : Boolean = other.isInstanceOf[FiniteGameOfLifeBoard] override def hashCode : Int = { 41 * ( 41 * ( 41 + super.hashCode ) + boardHeight.hashCode ) + boardWidth.hashCode } } class GameOfLife(initialBoard: GameOfLifeBoard) { // Run the game of life until the board is empty or the exact same board is seen twice // Important note: this method does NOT necessarily terminate!! def go : Unit = { var currentBoard = initialBoard var previousBoards = List[GameOfLifeBoard]() while (!currentBoard.empty && !(previousBoards contains currentBoard)) { print(27.toChar + "[2J") // ANSI: clear screen print(27.toChar + "[;H") // ANSI: move cursor to top left corner of screen println(currentBoard.toString) Thread.sleep(75) // Warning: unbounded list concatenation can result in OutOfMemoryExceptions ####TODO: replace with LRU bounded list previousBoards = List(currentBoard) ::: previousBoards currentBoard = currentBoard tick } // Print the final board print(27.toChar + "[2J") // ANSI: clear screen print(27.toChar + "[;H") // ANSI: move cursor to top left corner of screen println(currentBoard.toString) } } // Script starts here val simple = Set((1,1)) val square = Set((4,4), (4,5), (5,4), (5,5)) val glider = Set((2,1), (3,2), (1,3), (2,3), (3,3)) val initialBoard = glider (new GameOfLife(new FiniteGameOfLifeBoard(20, 20, initialBoard))).go //(new GameOfLife(new InfiniteGameOfLifeBoard(initialBoard))).go // COPYRIGHT PETER MONKS 2010 Thanks! Peter

    Read the article

  • Une société française spécialisée dans la sécurité critique violemment Microsoft, un ingénieur de Google la soutient

    Une société française spécialisée dans la sécurité critique violemment Microsoft Un ingénieur de Google la soutient Mise à jour du 18/02/11 Travis Ormandy semble passer beaucoup de temps à scruter tout ce qui touche à la sécurité de Microsoft. L'ingénieur de Google avait suscité la colère des responsables de Microsoft en publiant une preuve de faisabilité (PoC) seulement 5 jours après avoir découvert une faille critique dans Windows (lire par ailleurs) Après cette polémique et les critiques contre Ormandy,

    Read the article

  • Flash Player et Acrobat Reader : vulnérabilité critique zero-day confirmée par Adobe, elle serait déjà exploitée

    Flash Player et Acrobat Reader : vulnérabilité critique zero-day confirmée Des pirates l'auraient déjà exploitée Adobe tire la sonnette d'alarme. Une faille critique non corrigée dans son lecteur Flash Player serait déjà exploitée par des pirates. Selon un avis de sécurité qui vient d'être publié par l'éditeur, la vulnérabilité pourrait être exploitée par des pirates distants pour provoquer un crash de l'application ou, plus préoccupant, pour prendre le contrôle du système affecté en intégrant des fichiers Flash infectés dans un document Microsoft Excel envoyé en pièce jointe. La vulnérabilité aurait déjà été utilisée pour des attaques ciblées. La vulnérabilité touche égale...

    Read the article

  • Le codec VP8 de Google déjà critiqué, il serait instable et lent

    Mise à jour du 21.05.2010 par Katleen Le codec VP8 de Google déjà critiqué, il serait instable et lent Nous vous parlions avant hier du VP8, le nouveau codec vidéo de Google. Mais, selon certains experts en la matière, il ne serait pas aussi incontournable que le dit son créateur... Jason Garett-Glaser, spécialiste en vidéo digitale, en livre une analyse bien peu flatteuse : "Ses spécifications consistent majoritairement en du code C copié-collé du code source de son noyau." Se faisant plus critique, il continue : "La spécification VP8 est imprécise et non claire. Trop courte, elle laisse de larges portions du format trop vaguement expliquées. Certaines parties refusent même explicitem...

    Read the article

  • Découverte d'une faille de sécurité critique dans iOS, une application malveillante se retrouve sur l'App Store

    Découverte d'une faille de sécurité critique dans iOS une application malveillante se retrouve sur l'App Store Charlie Miller, un ancien analyste de la NSA, reconnu pour avoir déjà trouvé plusieurs vulnérabilités dans les systèmes d'Apple, vient de révéler une nouvelle faille critique dans les terminaux iOS. La faille se situe au niveau du moteur JavaScript du navigateur Safari dans la politique de restriction de la signature de code, qui permet d'exécuter des commandes non autorisées dans un espace de la mémoire du dispositif. La vulnérabilité peut-être exploitée par des pirates pour exécuter du code distant, voler ou détruire les données des utilisateurs et envoy...

    Read the article

  • Une faille critique découverte dans Flash Player et Acrobat, Adobe émet un bulletin d'alerte et prép

    Une faille critique découverte dans Flash Player et Acrobat, Adobe émet un bulletin d'alerte et prépare un correctif Adobe vint d'emmetre ce jour un bulletin d'alerte concernant une faille de sécurité critique qui vient d'être découverte dans deux de ses produits. En effet, certaines versions de Flash Player (10.0.45.2, 9.0.262 et versions antérieures 10.0.x et 9.0.x pour Windows, Macintosh, Linux et Solaris) ; et dans la authplay.dll d'Adobe Reader et Acrobat (9.3.2 et versions antérieures 9.x pour Windows, Macintosh et UNIX), présnteraient une vulnérabilité qui pourrait permettre à un pirate informatique de prendre le contrôle d'un ordinateur à distance. Aucun patch officiel ne permet actuellement de corriger cette...

    Read the article

  • XML : Cours et exercices, d'Alexandre Brillant, critique par Benwit

    Benwit vous propose une critique pour le livre XML : Cours et exercices d'Alexandre Brillant [IMG]http://images-eu.amazon.com/images/P/2212126913.08.LZZZZZZZ.jpg[/IMG] Citation: Avec 12 ans d'expérience dans le développement, l'architecture et la gestion de projets informatiques variés (télévision numérique, modélisation applicative, intranets...), Alexandre Brillant utilise ...

    Read the article

  • Guide de création numérique de Jason Simmons, critique par Cyril Doillon

    Bonjour à tous, Je viens de terminer la lecture du Guide de création numérique de Jason Simmons qui présente de nombreuses techniques et astuces destinées aux débutants dans l'univers de l'infographie. Vous pouvez en retrouver la critique ici : http://jeux.developpez.com/livres/#L9782100518777 Avez vous eu l'occasion de lire ce livre ? Qu'en avez vous pensez ? Avez vous d'autres ...

    Read the article

  • Responsive Web design d'Ethan Marcotte, critique par Ihèb BEN ROMDHANE

    Bonjour, Je vous propose la critique du Livre Responsive Web design de Ethan Marcotte. Citation: Encore un très bon ouvrage dans l'excellente collection A book Apart, dans lequel Ethan Marcotte aborde, de manière très claire et argumentée, les différents aspects qui mènent à la création d'une mise en page fluide et responsive. Les exemples présentés s'appuient sur le principe des grilles de m...

    Read the article

  • Ruby Best Practices, de Gregory T Brown, critique par Idelways

    Idelways vous propose la critique du livre "Ruby Best Practices Increase Your Productivity - Write Better Code" [IMG]http://images-eu.amazon.com/images/P/0596523009.01.LZZZZZZZ.jpg[/IMG] Citation: Ruby Best Practices is for programmers who want to use Ruby the way Rubyists do. Written by the developer of the Ruby project Prawn (prawn.majesticseacreature.com), this concise book explains how to design beautiful APIs and domain-specific languages, w...

    Read the article

  • The Art of Agile Development de J.Shore et S.Warden, critique par Pierre Chauvin

    Bonjour, Je viens de terminer la lecture de "The Art of Agile Development" de James Shore, Shane Warden, publié chey O'Reilly, dont vous trouverez ma critique ici. [IMG]http://images-eu.amazon.com/images/P/0596527675.01.LZZZZZZZ.jpg[/IMG] Mes impressions sont plutôt bonnes. Et vous, que pensez-vous de ce livre ? vous a t-il aidé à guider vos projets sur des préceptes agiles ?, promouvoir XP ou Scrum dans vos équipes ?...

    Read the article

  • UML 2, de l'apprentissage à la pratique de Laurent Audibert, critique par Fleur-Anne Blain

    Comme le précise la 4ème de couverture, ce livre est destiné à un public large : du débutant aux professionnels qui souhaitent rester à la page. L'auteur met à notre disposition 10 chapitres d'une introduction à UML en passant par les différents diagrammes à leurs mise en oeuvre. Chaque chapitre est introduit très clairement à travers son sommaire détaillé et surtout des objectfs clairs. Retrouvez la critique complète en ligne.

    Read the article

  • Réseaux multiplexés pour systèmes embarqués de Dominique Paret, critique par Nicolas Vallée

    Voici la critique de la seconde édition du livre Réseaux multiplexés pour systèmes embarqués [IMG]http://images-eu.amazon.com/images/P/2100052675.08.LZZZZZZZ.jpg[/IMG] Citation: Cet ouvrage décrit les différents types de réseaux multiplexés, aujourd'hui présents dans de multiples domaines industriels (commande de machine-outils, de ligne de production, automobile, avionique, etc.). Il se compose de deux parties : La premi...

    Read the article

  • Programming Interactivity de Joshua Noble, critique par verdavaine yan

    Bonjour, Voici ma critique du livre de Joshua Noble Programming Interactivity A Designer's Guide to Processing, Arduino, and openFrameworks Citation: Au travers de son livre Programming Interactivity, Joshua Noble propose un guide pour comprendre et développer différentes interactions avec une machine, que ce soit visuel ou physique. Le public visé est tous niveaux. Pour cela, le guide se repose sur trois frameworks :Processing : basé sur...

    Read the article

  • Java EE 5, d'Antonio Goncalves, critique par Philippe Vialatte

    Je vous propose une critique pour le livre Java EE5 : EJB 3.0 - JPA - JSP - JSF - Web services - JMS - GlassFish 3 - Maven 3: Amazon.fr: Antonio Goncalves: Livres [IMG]http://images-eu.amazon.com/images/P/2212126581.08.LZZZZZZZ.jpg[/IMG] Citation: Ce cahier détaille la conception d'un site de e-commerce avec UML et Java Enterprise Edition 5. Inspirée du Java Petstore, l'étude de cas se construit au fil des chapitres en appliq...

    Read the article

  • Windows Phone 7 - Développez avec Visual Studio, Silverlight et XNA, critique par Jérôme Lambert

    Bonjour, La rédaction de Developpez.com a lu pour vous l'ouvrage suivant : Windows Phone 7 - Développez avec Visual Studio, Silverlight et XNA de Julien CORIOLAND, Léonard LABAT et Florent SANTIN paru aux Editions ENI. [IMG]http://images-eu.amazon.com/images/P/2746061317.08.MZZZZZZZ.jpg[/IMG] Lire la critique entière L'avez-vous lu ? Comptez-vous le lire bientôt ? Quel est votre avis ?...

    Read the article

  • Slide:ologie, l'art de réaliser des présentations efficaces de Nancy Duarte, critique par Youghourta Benali

    Bonjour, Je viens de terminer la lecture du livre "Slide:ologie" de Nancy Duarte dont vous trouverez ma critique ici [IMG]http://images-eu.amazon.com/images/P/2744024090.08.LZZZZZZZ.jpg[/IMG] Citation: Slide:ologie s'adresse à tous ceux qui un jour ou l'autre ont besoin de créer une présentation. Dans les entreprises, les associations, pendant les études, etc., il y a tous les jours des occasions de faire des présentations. Il faut ...

    Read the article

  • Linux: Administration système et réseau de Supinfo, critique par idelways

    Idelways vous propose la critique du livre "Linux Administration système et réseau" [IMG]http://images-eu.amazon.com/images/P/2100518275.08.LZZZZZZZ.jpg[/IMG] Citation: Conçu comme un support de formation sur l'administration des systèmes Linux et des services réseaux associés, cet ouvrage est organisé en deux parties : La première explique comment utiliser un système GNU/Linux puis détaille la configuration du système : ligne de com...

    Read the article

  • Le marketing participatif, de Ronand Divard, critique par Youghourta Benali

    Bonjour, Je vous propose une critique pour le livre Le marketing participatif de Ronand Divard [IMG]http://images-eu.amazon.com/images/P/2100540858.08.LZZZZZZZ.jpg[/IMG] Citation: Le marketing participatif (ou collaboratif) peut être défini comme un ensemble de techniques marketing visant à impliquer directement le client dans la définition de l'offre de l'entreprise. C'est une évolution majeure du marketing, qui modifie en profondeur les r...

    Read the article

1 2 3 4 5 6 7 8  | Next Page >