Code Monkey home page Code Monkey logo

swarch's Introduction

Requirements

  • Python 2.7
  • Pygame 1.9.1 or 1.9.2: Windows installer on pygame.org, or sudo apt-get install python-pygame on Ubuntu
  • network.py is in the directory above the code of the examples. You may have to add the project directory to your python path to be able to import network.py.

How to

Run python whale.py for the solo version.

Run python server.py in one terminal and python client.py in another for client-server (the server listens on port 8888).

Run python directory.py in one terminal and python peer.py in another for peer-to-peer (the directory server listens on 8888, the peers listen on a random port between 20k and 30k).

Similar works

  • 99 literary styles in Exercises in Style, Queneau
  • 207 interpretations and appearances of Catalan Numbers, Stanley, http://www-math.mit.edu/~rstan/ec/
  • Exercises in Programming Styles, Lopes

Software architecture works with surveys of architectural styles:

  • Design and use of software architectures, by Jan Bosch. Looks at pipe and filter, layers, blackboard, OO, and implicit invocation. Framework: performance, maintainability, reliability, safety, and security.
  • Software architecture, by Taylor et al. Same as Bosch + call and return (main and subroutines), virtual machines, client-server, batch, rule-based, interpreter, mobile code, and pub-sub. Framework: summary, components, connectors, data elements, topology, additional constraints imposed, qualities yielded, typical uses, cautions, and relations to programming languages or environments.
  • Software architecture, by Shaw and Garlan.

Backlog

  • turn-based (A's turn, sends his move, then B's turn, then C joins and is added to the end of the player list after B, then B sends his move, then C's turn, then A's turn, ...)
  • p2p with lockstep (sync vs async)
  • p2p with one pellet owner, others have copies: one "host"
  • p2p with rollback
  • p2p a la Chord
  • p2p with vector clocks/Lamport
  • p2p with mesh/arbitrary graph
  • p2p with NAT punching/surrogate, like Semigod
  • p2p with superpeers, like Skype
  • pubsub without broker: each node maintains a list of subscriptions (DSG sort of does that)
  • timewarp
  • spatial pubsubs: static, dynamic BSP, dynamic Voronoi (Pikko), DSG (operational partitioning: physics vs script vs client manager)
  • RPC
  • one server for live actions, one server for storage, like Realm of the Mad God (or like DSG's persistence actor vs script actor, except in DSG, clients connect to a client manager, whereas in RotMG, they send messages directly to both servers)
  • SOA: game vs chat service?
  • operational transform (between N clients and 1 server, or p2p)
  • reverse proxy to load-balance
  • redirect asset requests to CDN (intermediaries are easy to add in REST)
  • stream assets vs fat client
  • clients pull updates vs server pushes updates
  • plugin
  • blackboard
  • sense compute control (avionics)
  • replication of data vs computation, Paxos, virtual synchrony
  • CAP, NOSQL, ACID, BASE
  • shared disk (ie servers share same DB) vs shared nothing (each server has its own DB)
  • SOA vs service bus vs central repository vs linked data
  • grid vs cloud
  • CRUD (easy to add in RPC?)

AI (make whale bots?)

  • sense plan act
  • subsumption
  • hFSM
  • robotic architectures

Security

  • authentication
  • access control
  • injections
  • impersonation

Messaging/MEP

  • fire and forget
  • asynchronous
  • request-response
  • context-free

References

inf123 https://github.com/gentimouton/swarch http://en.wikipedia.org/wiki/Distributed_data_flow http://en.wikipedia.org/wiki/Software_architecture_styles_and_patterns http://en.wikipedia.org/wiki/Architectural_pattern_(computer_science) http://en.wikipedia.org/wiki/Architectural_style#Examples_of_styles http://en.wikipedia.org/wiki/Category:Distributed_computing_architecture https://github.com/crista/exercises-in-programming-style https://grape.ics.uci.edu/wiki/asterix/wiki/cs222-2014-winter http://www.ics.uci.edu/~lopes/teaching/inf123S10/ https://github.com/gentimouton/swarch/wiki/todo http://www.pygame.org/project-bitSnake-2158-.html http://code.google.com/p/podsixnet/source/browse/podsixnet/examples/ChatServer.py http://stackoverflow.com/questions/18196745/how-to-re-establish-asyncore-connection-with-server-solved http://stackoverflow.com/questions/18280571/python-asyncore-not-keeping-up-with-high-data-rates?rq=1 http://stackoverflow.com/questions/3701646/how-to-add-to-the-pythonpath-in-windows-7 http://www.softwarearchitecturebook.com/svn/main/slides/ppt/ http://sourceforge.net/p/pyrogue/code/HEAD/tree/trunk/ http://sourceforge.net/projects/pyunicurses/files/unicurses-1.2/ http://effbot.org/zone/console-handbook.htm http://urwid.org/ http://www.npcole.com/npyscreen/ https://github.com/gentimouton/INF123-example-repo-for-assignments http://www.cs.berkeley.edu/~brewer/cs262/ http://pcsupport.about.com/od/commandlinereference/p/netstat-command.htm https://eee.uci.edu/toolbox/messageboard/m15623/ http://www.pygame.org/wiki/CookBook https://docs.python.org/2/library/sqlite3.html#sqlite3.Cursor http://www.ferg.org/thinking_in_tkinter/all_programs.html http://se.inf.ethz.ch/courses/2011a_spring/soft_arch/ http://roy.gbiv.com/talks/webarch_9805/sld011.htm http://www.ics.uci.edu/~fielding/pubs/dissertation/net_arch_styles.htm REST http://blueprintforge.com/blog/2012/01/01/a-short-explanation-of-hypermedia-controls-in-restful-services/ http://www.slideshare.net/alan.dean/separating-rest-facts-from-fallacies-presentation http://tools.ietf.org/wg/httpbis/ http://www.looah.com/source/view/2284 http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven http://roy.gbiv.com/talks/200804_REST_ApacheCon.pdf http://restcookbook.com/HTTP%20Methods/put-vs-post/ http://stackoverflow.com/questions/671118/what-exactly-is-restful-programming?rq=1 https://github.com/kevinswiber/siren http://stateless.co/hal_specification.html http://stackoverflow.com/questions/16066987/why-do-we-need-a-custom-media-type-when-using-hypermedia-links http://www.w3schools.com/html/tryit.asp?filename=tryhtml_form_submit http://www.ianbicking.org/blog/2008/10/hypertext-driven-urls.html https://kenai.com/projects/suncloudapis/pages/Home https://blogs.oracle.com/craigmcc/entry/why_hateoas http://ruben.verborgh.org/phd/hypermedia/ http://thisweekinrest.wordpress.com/ http://ivanzuzak.info/2010/04/03/why-understanding-rest-is-hard-and-what-we-should-do-about-it-systematization-models-and-terminology-for-rest.html#par28 http://www.bjoernrochel.de/2012/10/16/the-pain-of-a-non-hypermedia-http-api/ https://www.mnot.net/blog/2011/11/25/linking_in_json http://stateless.co/hal_specification.html http://amundsen.com/media-types/collection/examples/#ex-item

swarch's People

Contributors

crista avatar gentimouton avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.