Web++: A C++ Web Framework
131 subscribers
440 photos
36 videos
20 files
177 links
Web++ Framework (A C++ web framework to ease the pain of web development)

Using modern C++20/23.
GitHub: https://github.com/the-moisrex/webpp

I've been working on this project since 2019...
Download Telegram
Channel photo updated
LiveCoding-webpp-2020-Feb-23.7z
831 KB
Feb 23th Live coding session.
Part 1/2
LiveCoding-webpp-2020-Feb-23-2th-round.7z
549.6 KB
Feb 23th Live coding session.
Part 2/2

Converting the example into a GoogleTest
This media is not supported in your browser
VIEW IN TELEGRAM
Feb 23th timelapse of the live coding.
GDB really helps when you know what to do in it.
In today's live coding session, you'll find me typing this:

git commit -am 'tests added; so I have purpose in life now'
Look what I found 😘
Tests give me super powers! There's no other good way to find bugs.
LiveCoding-webpp-2020-Feb-25.7z
728.1 KB
Feb 25th Live coding session.

I have definitely messed up something along the way!
Got my first run! Yay!
Simple "Hello world" CGI benchmark on my machine:


ab -n 50000 -c 1000 http://localhost/cgi-bin/two
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Completed 45000 requests
Completed 50000 requests
Finished 50000 requests


Server Software: Apache/2.4.41
Server Hostname: localhost
Server Port: 80

Document Path: /cgi-bin/two
Document Length: 12 bytes

Concurrency Level: 1000
Time taken for tests: 59.675 seconds
Complete requests: 50000
Failed requests: 250
(Connect: 0, Receive: 0, Length: 250, Exceptions: 0)
Total transferred: 8074530 bytes
HTML transferred: 597000 bytes
Requests per second: 837.87 [#/sec] (mean)
Time per request: 1193.506 [ms] (mean)
Time per request: 1.194 [ms] (mean, across all concurrent requests)
Transfer rate: 132.14 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 2 30.0 0 1026
Processing: 40 670 4131.5 335 59629
Waiting: 0 381 1911.9 302 59583
Total: 40 672 4134.3 335 59668

Percentage of the requests served within a certain time (ms)
50% 335
66% 365
75% 388
80% 404
90% 453
95% 507
98% 584
99% 670
100% 59668 (longest request)
Simple "Hello World" CGI benchmark of the @webpp framework:

 ab -n 50000 -c 1000 http://localhost/cgi-bin/webpp_helloworld
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Completed 45000 requests
Completed 50000 requests
Finished 50000 requests


Server Software: Apache/2.4.41
Server Hostname: localhost
Server Port: 80

Document Path: /cgi-bin/webpp_helloworld
Document Length: 19 bytes

Concurrency Level: 1000
Time taken for tests: 53.139 seconds
Complete requests: 50000
Failed requests: 218
(Connect: 0, Receive: 0, Length: 218, Exceptions: 0)
Total transferred: 9906618 bytes
HTML transferred: 945858 bytes
Requests per second: 940.93 [#/sec] (mean)
Time per request: 1062.781 [ms] (mean)
Time per request: 1.063 [ms] (mean, across all concurrent requests)
Transfer rate: 182.06 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 8 86.4 0 3200
Processing: 19 699 3602.3 385 53114
Waiting: 0 442 973.2 350 26850
Total: 24 707 3604.3 386 53134

Percentage of the requests served within a certain time (ms)
50% 386
66% 438
75% 476
80% 503
90% 612
95% 818
98% 1334
99% 1702
100% 53134 (longest request)
Generating config.h file in cmake. I'll be doing much much more here later though!
I don't like to code for others; because those whom I worked for so far, didn't get how much time and effort I put into the code. They never understood how much it worth. That's why I stopped working for others, and now, I'm coding the foundation of my own dreams. The one single building block that will hold almost all of my ideas together; a framework in a language that can glue everything I'll write together.
I have so many ideas, but if I spend coding one of them, it'll take so much out of me because those ideas need updates; and other frameworks gets updated frequently. At least now, when I update my framework, I know I'll get all the cool things I want for all of those ideas all together.
I'm designing it in a way that I don't have to do it again for another project. I just have to re-use it.
.
.
Oh bwt, the blue light on the picture is natural, guess how I did it?! 😊
.
.
#coding #code #programming #idea #development #developer #dev #tech #technology #techie #cpp #web #webdev #devlife #techlife #job
https://www.instagram.com/p/B9KeI6EAFZ8/?igshid=8lzj57keiocy
I'm learning these days if you wonder; implemented an async daytime porotocol with help of Boost.Asio library.
It sure will help to implement the FCGI protocol in the project.
It might even be the base of the Self-Hosted interface too; but before implementing that, I have to make sure I understand HTTP 2.0 before implementing something that would require even more change when I felt the need for implementing HTTP 2.0 protocol.

But of course, you sure can use FCGI and CGI protocol to have Nginx or apache do the hard work of doing all the HTTP 2.0 protocol stuff.