GithubHelp home page GithubHelp logo

jaguililla / sabina Goto Github PK

View Code? Open in Web Editor NEW

This project forked from perwendel/spark

15.0 15.0 2.0 5.01 MB

A Sinatra inspired framework for Java 8

Home Page: http://there4.co/sabina

Shell 0.34% Java 77.62% HTML 0.08% CSS 0.29% Groovy 18.84% FreeMarker 2.83%

sabina's Introduction

Juanjo Aguililla (jaguililla)

I work as a JVM Back-end developer using Kotlin, Java or Groovy.

I maintain the Hexagon Toolkit for writing server applications in Kotlin.

You can also find me in these other sites:

Dev.to | LinkedIn | Reddit | Stack Overflow

GPG (hexagonkt.com)

GPG Key Proof

I hereby claim:

To claim this, I am signing this public key (with the command: gpg --armor --detach-sig hexagonkt_public.key):

-----BEGIN PGP PUBLIC KEY BLOCK-----

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
aoqYg4Q=
=RXeZ
-----END PGP PUBLIC KEY BLOCK-----

With the key 792B D37F F598 91C4 AC6F 8D92 3B26 711D 2AEE 3721, yielding the signature:

-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEeSvTf/WYkcSsb42SOyZxHSruNyEFAl8Sy84ACgkQOyZxHSru
NyEe+g/9EYdPBeuUmWFAnQ5cSmKq0SHIJ03jfNgNISP/2rO/2DBEC+F/CBrtdJAU
r/IZgdRXLTv3YRf1UemSXU2ZczdpridBljYD95x8BgH18p9y+t7Llg78XspYpsU1
jXVVvOgJDomzfHaSd3bXI/1j7+N+E3YfMjuTdt3pVSJC1+0jOyYyAyMR/iG5hIK+
gcHbCZ/w4iqK3hbrHBAssLhcTFIT+TBDXATQXDf5N35Zkc1YPdjC39/bV04YFPv0
VfYMsb+agUfnDOfqJ7TRgNsiAlKKx1/ZfNR3U//nYJg4kVQL+jhaWJxSszudl2mL
l8/qJGZLzE/LKU/az3Xpw8gtoH5Pe94879IE29z8GqgAmgkKhR1UGe+wL2W4LzXI
bYc9wHTdLdvOKhUYvQxFD/rRIjchSg4TljgwEgAOILFdQyExanQ9Lv9OMvb+TaLW
2h+WIg5Gzhq/kF+1WPgYod1VDTmozot0vlFQZ19YwIek4q7YCLOhdjPgnpd8C/6n
rQnf/OF3nFSp/tMCG5U/faut+yhUWZZw+DXCBZXzHA2d1PUjccZWC7ROv+x68+ML
YRHccYH8EZcZy4em8WBFZfvj+TRDpK8ZCMXeOpfkaUozrKH0NSC0LCPy/Ve02QOm
iRwCbmjSEmorzoeNjzov9eLm+DGVXwEdOLhu80kZkH48pVIRhMY=
=9y00
-----END PGP SIGNATURE-----

This can be verified executing: gpg --verify hexagonkt_public.key.asc hexagonkt_public.key

And finally, I am proving ownership of the GitHub account by posting this in my personal repository.

GPG (hexagontk.com)

GPG Key Proof

I hereby claim:

To claim this, I am signing this public key (with the command: gpg --armor --detach-sig project_hexagontk_com_public.key):

-----BEGIN PGP PUBLIC KEY BLOCK-----

mDMEZsmktBYJKwYBBAHaRw8BAQdA+qQWolc0jGotvU2l8WNpAYQxFmXsQ9RcGN6T
Ug0bwR+0TUhleGFnb24gVG9vbGtpdCAoS2V5IHVzZWQgdG8gc2lnbiBwdWJsaXNo
ZWQgYmluYXJpZXMpIDxwcm9qZWN0QGhleGFnb250ay5jb20+iJkEExYKAEEWIQQm
g2PjQTa/oKpsiuYZAvCZDhbhlAUCZsmktAIbAwUJBaOagAULCQgHAgIiAgYVCgkI
CwIEFgIDAQIeBwIXgAAKCRAZAvCZDhbhlCHRAP9A5YWugJIjw5G2vU+nZeSc0lSw
U8GV3THxMNhxHTIbfwEAuDeJaZIV5cOi3dppLJrBk+F2P3Ze2yYhpNddBwPJTgS4
OARmyaS0EgorBgEEAZdVAQUBAQdAjucR51AapG9ku4xtB/0DEYBevtmlKBwy9MLr
CTDoKzADAQgHiH4EGBYKACYWIQQmg2PjQTa/oKpsiuYZAvCZDhbhlAUCZsmktAIb
DAUJBaOagAAKCRAZAvCZDhbhlODNAP0fmkfWC2bzHNggkIQ/WBmJZnD8KPvTpHiQ
GBTirT686QEAicRsPlrCSEZ2VZFwSCFcpp3nh2+6+pKrep4GqILKzg4=
=ETAF
-----END PGP PUBLIC KEY BLOCK-----

With the key 268363E34136BFA0AA6C8AE61902F0990E16E194, yielding the signature:

-----BEGIN PGP SIGNATURE-----

iHUEABYKAB0WIQQmg2PjQTa/oKpsiuYZAvCZDhbhlAUCZsmrdQAKCRAZAvCZDhbh
lA69AP9akGePyfRzLZK+VqsvuSWw7q8It62csXP5G8H8GC9fygD+O8WJ1hG1PrSa
xzhY+6W4yMG2R4dOIiNCYHCoEHvgCAg=
=pMgH
-----END PGP SIGNATURE-----

This can be verified executing: gpg --verify project_hexagontk_com_public.key.asc project_hexagontk_com_public.key

And finally, I am proving ownership of the GitHub account by posting this in my personal repository.

Stats

GitHub Stats

profile for jamming on Stack Exchange, a network of free, community-driven Q&A sites

sabina's People

Contributors

benwaffle avatar bonifaido avatar buildscientist avatar danieltwagner avatar dreambrother avatar fddayan avatar gobijan avatar heuermh avatar hobbesfnm avatar jaguililla avatar juanjoaguililla avatar juliengaucher avatar littleli avatar lordofthejars avatar mikegolod avatar mwanji avatar nihed avatar perwendel avatar shatsar avatar sslavic avatar stevenewson avatar subdigit avatar thebigb avatar uric avatar wesleycho avatar xavierbourguignon avatar ybonnel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

zyzyis rchukka

sabina's Issues

Add optimize 'profile'

Create a profile to build the project with less debug information in classes and optimizing the bytecode.

Fix coverage report

Generate coverage report in Travis build. Use --info in CI environment to debug problem.

Implement start up banner

Add a banner file loaded as resource (let's call it: banner.txt) filtered by Gradle and with runtime settings.

Improve build and CI process

  • Add optimize 'profile'.
  • Use UMLGraph doclet.
  • Deploy Github Pages in Travis. Ie: after_success: ./gradlew cobertura coveralls site publishGhPages
  • Replace variables (${var}) in documentation
  • Include checkstyle, copy & paste into site's reports

Build handlers at route addition time

Store the list of callbacks to call for a route when all routes have been added. All filters and handlers will be stored in a list for a given route (instead of searching callbacks for each request).

This could save iterating through the list for each request.

Create 'configure' method

Implement configure method with a lambda to be called at server startup receiving the server itself (check Sinatra method with same name).

Can be used to register "plugins" like for example Consul registration.

Refactor backend

Refactor backend to support other frameworks. Take a look to Grizzly backend.

The goal is to add the minimum overhead over target's framework while maintaining the programmer's interface.

Fix stress tests

When application tests and stress tests are ran together there are errors.

Support running stress tests only if specified from command line.

Make a module for each backend

Split backends in modules to ease the dependencies management by clients. Ie:

  • http-undertow
  • http-jetty

Tests will need to be refactored also.

Build an example project

Example project. Some nice goodies would be:

  • A command to fetch code and start.
  • Setup deployment in heroku.
  • Building an executable JAR (with compact JRE profiles).

A good approach would be to port MongoDB course blog application (already made in Spark).

Improve project's site

  • Add social buttons to site (Twitter, Linkedin, Google+, etc.)
  • Add "go to there4.co" button in site
  • Add Travis links, huboard, issues, etc. (in reference documentation)

Extract stress tests

Extract stress tests to a different class. Also change build script to execute stress tests (and the report) only if a given flag is provided from the command line.

Move stress tests to 'http' module instead benchmark module (yeah, I know it sound weird).

Add static code analysis reports

Select a code static analysis tool and include its reports into documentation.

Features should be:

  • Copy & Paste detector
  • Bug patterns report
  • Metrics

The minimum set of the options below:

  • Findbugs
  • PMD
  • JDepend
  • Java NCSS

Refactor integration tests

Avoid the creation of several IT grouping them in only one test that starts/stop the server. The logic and asserts will be included from other classes.

Add servlet containers support

Support 'MatcherFilter' to be extended, override init to add routes, and be used inside a plain web application.

This will support Resin server for Techempower benchmarks.

Refactor benchmark

  • Add servlet configuration (Resin) to TechEmpower benchmark
  • Add listener to measure start / end time

Allow streaming

Stream resources as they are coming instead of blocking client

Implement Swagger support

Modify DSL to support Swagger YAML generation for routes and/or service skeleton creation from Swagger descriptors.

One way is to provide the name of the method in which a route delegates (we can take advantage of Javadoc).

Add settings loading

Load settings from:

  • command line -D parameters
  • ./application.properties file
  • /application.properties resource

In that priority order.

Use System.setProperty internally with a prefix, or Preferences API.

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.