Nothing special yet: Readme updates and gofmt -s -w . (including vendor)

Former-commit-id: b275e55b7cd90392772c49f72e8ecd644bf0634c
This commit is contained in:
Gerasimos (Makis) Maropoulos 2017-03-03 04:54:18 +02:00
parent 97b9d56e56
commit 1f5a274cae
3 changed files with 18 additions and 23 deletions

View File

@ -27,7 +27,7 @@ Iris is an efficient and well-designed toolbox with robust set of features.<br/>
</p> </p>
<p> <p>
<h2>Hashtag #Not_Just_YAWF<!-- hashtag, no title. --></h2> <h2>#Not_Just_A_Web_Framework<!-- hashtag, no title. --></h2>
<a href="https://github.com/kataras/iris/blob/v6/HISTORY.md"><img src="https://img.shields.io/badge/codename-√Νεxτ%20-blue.svg?style=flat-square" alt="CHANGELOG/HISTORY"></a> <a href="https://github.com/kataras/iris/blob/v6/HISTORY.md"><img src="https://img.shields.io/badge/codename-√Νεxτ%20-blue.svg?style=flat-square" alt="CHANGELOG/HISTORY"></a>
@ -39,37 +39,33 @@ Iris is an efficient and well-designed toolbox with robust set of features.<br/>
</p> </p>
New web developers are so enthusiastic about the idea of `serverless` and `AWS`. Most of the experienced developers we already know that we shouldn't use these things for our critical parts of our application.
> Q: First of all, why I have to choose server-based web framework instead of AWS-based(or `serverless`) frameworks?
> A: `Serverless and AWS` Are Wonderful—Until They Go Wrong. Today the 'internet has been broken' and most of the sites **`Serverless and AWS` Are Wonderful—Until They Go Wrong.** There was a flash-point (at 28 February of 2017) where the 'internet was offline' and most of the sites, including isitdownrightnow.com, were down or operated very slow! Why? Because of `serverless` and `AmazonS3`.
, including isitdownrightnow.com, are down or operating very slow! Why? Because of AmazonS3. Please think twice before moving your code into `serverless`, **instead, use web frameworks that are created for servers that you control**.
Many articles have been written about this sad fact:
- WashingtonPost: https://www.washingtonpost.com/news/the-switch/wp/2017/02/28/why-a-whole-slew-of-websites-are-suddenly-down-or-working-slowly/?tid=sm_fb&utm_term=.583d2ca0921b Proof of concept:
- CNN: http://money.cnn.com/2017/02/28/technology/amazon-web-services-outages/index.html
- CNET: https://www.cnet.com/news/no-the-internet-is-not-broken-amazon-web-services-is-just-having-issues/?ftag=COS-05-10-aa0a&linkId=34980800
- MIT Technology Review: https://www.technologyreview.com/s/603738/centralized-web-services-are-wonderful-until-they-go-wrong/?_ga=1.82562070.1263144274.1488319022
> I will not reveal which one I wrote:) - [Washington Post](https://www.washingtonpost.com/news/the-switch/wp/2017/02/28/why-a-whole-slew-of-websites-are-suddenly-down-or-working-slowly)
- [CNN](http://money.cnn.com/2017/02/28/technology/amazon-web-services-outages/index.html)
- [CNET](https://www.cnet.com/news/no-the-internet-is-not-broken-amazon-web-services-is-just-having-issues/?ftag=COS-05-10-aa0a&linkId=34980800)
- [MIT Technology Review](https://www.technologyreview.com/s/603738/centralized-web-services-are-wonderful-until-they-go-wrong/?_ga=1.82562070.1263144274.1488319022)
- [GolangNews](https://golangnews.com/stories/1835-serverless-is-wonderfuluntil-they-go-wrong.)
**Continue to read about Iris' advantages over other go web frameworks**
Iris is fully vendored. That means it is independent of any API changes in the used libraries and **will work seamlessly in the future**! Iris is fully vendored. That means it is independent of any API changes in the used libraries and **will work seamlessly in the future**!
The size of the executable file is a critical part of the Application Deployment Process, The size of the executable file is a critical part of the Application Deployment Process.
I made two very simple identical applications, the first written with a famous mini web framework named `gin`(=a Router, with logger, recover and pure Context out-of-the-box support) and the second in `iris` Two very simple identical applications, the first was written with `iris` and the second with a simple golang router.
(=every feature that you will need at the first place is bundled when you install Iris. Including sessions, websockets, typescript support, a cloud-editor, the view engine with 5 different template parsers, two Routers to select from, an end-to-end framework to test your API, more than 60 handy helpers via Context, complete rest API implementation, and cors, basicauth, internalization i18n, logger and recover middleware out-of-the-box).
I ran `go build` for both of them, - _iris_ had `8.505 KB` overall file size
- _gin_ had `9.029 KB` overall file size
- _gin_ had `9.029 KB` overall file size,
- _iris_ had `8.505 KB` overall file size!
- _net/http_ had produced an executable file with `5.380 KB` size. - _net/http_ had produced an executable file with `5.380 KB` size.
> The app didn't used any third-party library. If you test the same thing I test and adapt other features like sessions and websockets then the size of `gin` and `net/http` could be doubled while `iris`' overall file size will remain almost the same. > Iris has built'n support for the most of the features that you will use to craft your perfect web application, while the golang router(gin & httprouter alone) doesn't. Imagine what would happened if the simple app we created would use `sessions`, `websockets`, `view engine`... I tested that too, `gin` and `net/http` had produced the x3 of their original size, **while `iris application`' overall executable filesize remained stable**!
**Applications that are written using Iris produce smaller file size even if they use more features** than a simple router library! **Applications that are written using Iris produce smaller file size even if they use more features** than a simple router library!

View File

@ -462,7 +462,6 @@ func (s *Framework) Boot() (firstTime bool) {
// right before the Listen, all methods have been setted // right before the Listen, all methods have been setted
// usually is used to adapt third-party servers or proxies or load balancer(s) // usually is used to adapt third-party servers or proxies or load balancer(s)
s.policies.EventPolicy.Fire(s.policies.EventPolicy.Build, s) s.policies.EventPolicy.Fire(s.policies.EventPolicy.Build, s)
firstTime = true firstTime = true
}) })
return return

View File

@ -196,8 +196,8 @@ func (e *ErrorHandlers) GetOrRegister(statusCode int) Handler {
} }
ctx.SetStatusCode(statusCode) ctx.SetStatusCode(statusCode)
if _, err := ctx.WriteString(statusText[statusCode]); err != nil { if _, err := ctx.WriteString(statusText[statusCode]); err != nil {
ctx.Log(DevMode, "error from a pre-defined error handler while trying to send an http error: %s", ctx.Log(DevMode, "(status code: %d) %s",
err.Error()) err.Error(), statusCode)
} }
}) })
e.mu.Lock() e.mu.Lock()