19th Jully. Finaly developers of Chromium browser provide me some considerations about a bug in browser. Error was occured with bounce effect thats cause infinite loop in Chromium. Now it fixed and front-end components used by RevolveR CMS not affected this bug.
So. I have also small digest about RevolveR CMS compability. This system is not designed for old browsers and old linux servers. It's a try of innovation and minimalistics revolution with happy end because I have many time and big dreams. For now from April(3.5 Month) I was release all system functionality without any problems. Threre are not a lot of time should be spent to design forum and ecommerce modules. Most problem is a theme developers thats I did not look at horizont.
Actually I think to devel some color switches for base theme and one single page skin for RevolveR CMS. Thats all. Another thing are payment requred because I'd like beer and girls to.
Version 1.2.7 also includes improved search with snippets like a Google search but more simple in logic plan.
Today I have a time to upgrade DBX engine thats is a part of RevolveR CMS to version 1.1.1. All changes I was integrate to CMS core are ported to different and independednt version of Data Base X.
By default for now DBX allows you not only execute DB queries from structure based arrays, for now it is allows you use files based on hash tables cache. Added new and more simple queries like Inject with witch you can use one instruction for intellectual INSERT or auto UPDATE.
For examples please see revolver core or distro index.php page contains examples and unit test info. All of it very simple to learn.
DBX v.1.1.1 availible from github here: https://github.com/xShiftx/Revolver_DBX.
In this update RevolveR CMS v1.2.6 added query box and search route. For now visiotors and users of sites thats used RevolveR CMS can did search in nodes contents. Added new core DBX queries types(RR CMS goes to be a framework slowly).
In next releases query box should be upgraded to allow you search not only in nodes. Will be added parametrized search of comments, nodes and forum topics with options of finding in headlines and contents. Also I've develop an extra highligting of keywords in text.
v.1.2.6 avalible on github: https://github.com/xShiftx/RevolveR_CMS
As I promised, a little earlier than planned, I was release RevolveR CMS version 1.2.5 with Turbo Cache based on static files and new way optimized queries by DBX engine.
It's a big changes because now cached by default and under cache updated state by default CMS eats only 2 queries when visitors just watch contents(one query for check cache hash and one for writing statistics). Only two queries and we have 100% working site ability.
Next changes thats released is an INJECT queries for DBX engine. Before RevolveR CMS needs to execute for every field update new UPDATE query, for now all fields UPDATE goes once by query.
Now I can say about it's a time when I should to release forum functionality. Many ideas are collected and it's time to create new system module.
Download RevolveR CMS v.1.2.5.
There are some interesting things in world of SQL thats you can like to use. For example we can look at the statement thats works like INSERT MySQL query when you define auto increment field value of zero and work like an UPDATE MySQL query when it's defined as existing auto increment id.
INSERT INTO `revolver__comments` (`field_id`, `field_content`) VALUES ('0', 'TEST LAST INSERT') ON DUPLICATE KEY UPDATE `field_id`='0', `field_content`='TEST LAST INSERT';
Look at this statement. If field_id=0 it works like INSERT query but we can use it for UPDATE query also in one instruction:
INSERT INTO `revolver__comments` (`field_id`, `field_content`) VALUES ('5', 'TEST UPDATE') ON DUPLICATE KEY UPDATE `field_id`='5', `field_content`='TEST UPDATE';
With code bellow MySQL do something like update but it's not need to write WHERE instruction and into field_id having index 5 row fields will putted new data.
Where to use it? For example it can be used when you programming own DataBase engine. For example, my DataBase based on structures instead of queries and I can write something like that:
$STRUCT_COMMENTS = [ 'field_id' => [ 'type' => 'num', // int 'auto' => true, // auto increment 'length' => 255, 'value' => 0 ], 'field_node_id' => [ 'type' => 'num', 'length' => 50, 'fill' => true ], 'field_user_id' => [ 'type' => 'num', 'length' => 50, 'fill' => true ], 'field_user_name' => [ 'type' => 'text', 'length' => 100, 'fill' => true ], 'field_content' => [ 'type' => 'text', // varchar 'length' => 30000, 'fill' => true ], 'field_time' => [ 'type' => 'text', 'length' => 100, 'fill' => true ], 'field_published' => [ 'type' => 'num', 'length' => 1, 'fill' => false ] ];
It's an example of table in data base thats created fast and simple with:
// create comments $dbx::query('c', 'revolver__comments', $STRUCT_COMMENTS);
And next I can insert or update comments data using following structure:
// create comments $STRUCT = [ 'field_id' => [ 'value' => 0 ], 'field_node_id' => [ 'value' => 2334 ], 'field_user_id' => [ 'value' => 1 ], 'field_user_name' => [ 'value' => 'CyberX' ], 'field_content' => [ 'value' => 'Comment text' ], 'field_time' => [ 'value' => '11/07/2018' ], 'field_published' => [ 'value' => 1 ] ]; $dbx::query('in', 'revolver__comments', $STRUCT);
Code bellow does an INSERT because field_id value is 0. If this value have an index of existing comment in database this instruction will work like UPDATE. Simple.
Next time I should simplify DELETE query because I do not like WHERE statement.
Good news! In next week I've release a new RevolveR CMS version with big changes in performance plan. For now released and under testing a file cache system thats improves system performance in several times.
Revolve Cache system based on MD5 hashing of MySQL tables contains site data. Every change runs rehashing mechanism and automatic dump of fresh datas to files for every table. If hashes equals engine nothin to do and just use cache files to render a site. Cache files to be updated automatically at every UPDATE, INSERT or DELETE queries. Simple.
Next change is an INSERT and UPDATE queries merge mechanism. Yes, it's real to use only inject query for update and insert queries. It's based on 'ON DUPLICATE KEY UPDATE' feature and does a simplify all that we want do with database.
v.1.2.5 under testing for now. Release in plans in 20th July.
I don't know how long it is have an affect on my sytes because I found it accidentally. Usually I work and surf in Safari and do not need any other browser because it is most advanced and stable application for Web.
One day I open my site used front end library RevolveR and found a chrome tab crashed. All other browsers can execute my code perfectly without any problems. Long time I spent to find real Chrome browser developers and write about this issue on Chrome developers forum. There I hear a lot of recommendations without any argumented opinion from not very competent support team. And then I realized about this guys and girls is not real developers of most popular browser ... Apparently the only take icon and make repainted icon for Chrome. The same shit applies to Opera, Yandex browser and a lot of southens.
In the end I was given something like a link on Chromium bugs tracker where I write about problem with my code.
We have to wait for July 19th to resolve this bug thats marked as RB-Stable. I Don't want to do anything for this time. Hope it can be fixed.
There are many services for testing and benchmarking site load average in the web but many of them is require a payments. Fortunately in Mac OS and Linux we have Apache service utility named Apache Benchmark thats can do test with one line command input.
For example I test random site with ab using one IP address via WIFI -> 4G network with concurrency 200 and 1000 requests per time:
ab -c 200 -n 1000 https://yandex.ru/images/
CyberXs-MBP:~ cyberx$ ab -c 200 -n 1000 http://cyberx.pro/revolver_cms_v.1.0.9/ This is ApacheBench, Version 2.3 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking cyberx.pro (be patient) Completed 100 requests Completed 200 requests Completed 300 requests Completed 400 requests Completed 500 requests Completed 600 requests Completed 700 requests Completed 800 requests Completed 900 requests Completed 1000 requests Finished 1000 requests Server Software: openresty Server Hostname: cyberx.pro Server Port: 80 Document Path: /revolver_cms_v.1.0.9/ Document Length: 16984 bytes Concurrency Level: 200 Time taken for tests: 16.783 seconds Complete requests: 1000 Failed requests: 894 (Connect: 0, Receive: 0, Length: 894, Exceptions: 0) Non-2xx responses: 894 Total transferred: 10029004 bytes HTML transferred: 9855404 bytes Requests per second: 59.58 [#/sec] (mean) Time per request: 3356.659 [ms] (mean) Time per request: 16.783 [ms] (mean, across all concurrent requests) Transfer rate: 583.55 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 69 437 287.1 431 1247 Processing: 113 1663 2268.0 729 9685 Waiting: 96 1565 2237.5 686 9598 Total: 195 2100 2286.3 1167 10625 Percentage of the requests served within a certain time (ms) 50% 1167 66% 1519 75% 1660 80% 1926 90% 7105 95% 8116 98% 8728 99% 8965 100% 10625 (longest request)
One small problem with it is a server side blocking requests from one IP when limit are achieved to prevent flood. It is not replaces cloud testing because many servers can generate more IP addresses and can do real overloading picture but Apache Benchmark fast and simple.
With 106 successful request of 1000 defined over ~3s for one of 200 threads we can look at overload graph placed in server side statistics. So, RevolveR CMS was eat only 2 of 10 available by hosting plan points.