Giter Site home page Giter Site logo

euclid's Introduction

 E(u)clid

 Version: Apr 2014
 Author:  Eldar Gaynetdinov
 License: ISC

 DESCRIPTION:
 ------------

 E(u)clid (further in text called Euclid) is the minimalist style framework 
 which provides the following features:

 * event-driven engine based on epoll (SSL connections also supported)
 * client and limited server behaviour
 * buffering network IO
 * global and connection based timers
 * modularity
 * logging
 * limited support of HTTP 1.1 (permanent connections also supported)
 * fixed point arithmetic
 * YAML based config parser
 * linked lists, hash tables etc

 PHILOSOPHY:
 -----------

 Keep it thin. Don't use a lot of libraries except glibc.
 At the moment there are only three exeptions (OpenSSL, zlib, crc32).
 Provide enough functionality and scalability but stay in the minimalist style.

 WHY IT EXISTS?
 -------------

 This is the public part of my personal project which I will use 
 for algorithmic trading at NYSE, NASDAQ, CME etc.
 I don't like huge libraries and frameworks.
 That's why I decided to write this lightweight framework.
 I share it because somebody may find this framework interesting and useful.
 The name Euclid is inspired by Darren Aronofsky's film Pi.
 After I wrote event-driven engine I noticed similarity between 
 (Eu)clid and (Ev)ent. That's why I call it E(u)clid.

 BUILD:
 ------

 You need a Linux environment with installed OpenSSL and zlib dev packages.

 1) To build debug version:

 $ make

 2) To build release version:

 $ make release

 3) To build debug version which is intended for proxy module:

 $ make test_many_conns

 NOTE: http proxy module is intended for testing this framework.
 But I still didn't implement support for many connections.
 That means it's needed O(n) to traverse all the connections.
 That's why in normal mode, I don't support many connections.

 4) To cleanup:

 $ make clean

 GETTING STARTED
 ---------------

 1) $ make test_many_conns

 2) point out your browser to: localhost:1111

 NOTE: http proxy supports SSL connections and HTTP method CONNECT.
 So it's possible to use this proxy for another protocols 
 (try to use Pidgin IM through this proxy).

 3) $ ./euclid module:proxy no_debug_log

 4) Enjoy!

 To move logging to file. Invoke this before running ./euclid

 $ ./core/make_tmpfs_logging_dir.sh

 It creates a temporary directory in tmpfs. It's useful with debug logging.

 SECURITY WARNING:
 -----------------

 Please, generate and add your own private key and cert to 
 core/core.cfg by adding:

 #######
 net_cert_file: [path to cert file].crt

 net_key_file: [path to key file].key
 #######

 Otherwise, a throwaway key is used for tests. See core/core.cfg :

 #######
 net_cert_test_file: core/server_test.crt

 net_key_test_file: core/server_test.key
 #######

 Also, you will get a warning message when Euclid started.

euclid's People

Contributors

hal9000xp avatar

Watchers

James Cloos avatar Jacob Johansen 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.