1 Востаннє редагувалося Smolenkov_BN (05.11.2017 11:55:36)

Тема: Деякі результати досліджень безкоштовних CMS

ДЕЯКІ РЕЗУЛЬТАТИ ДОСЛІДЖЕНЬ БЕЗКОШТОВНИХ CMS

З кінця 2010 року у вільний від основної і домашньої роботи час я почав досліджувати особливості безкоштовних CMS на мові PHP. В результаті було отримано наступні дані.

1. Головними причинами припинення підтримки версій CMS співтовариством Інтернет являються:
а) наявність шкідливих кодів (наприклад, Gres за повідомленням декількох антивірусів);
б) наявність множинних уязвимостей в програмних кодах (наприклад, Bitweaver);
в) наявність візуально неконтрольованих програмних кодів (наприклад, Eleanor);
г) виявлення в пакеті файлів по шаблонах
*.7z *.bat *.bin *.bz *.cmd *.com *.dll *.gz *.exe *.git *.github *.idea *.lnk *.rar *.scripts *.svn *.tar *.tx *.zip *_macos* *ds_store* cvs desktop.ini thumbs.db
Яскравим свідоцтвом останнього прикладу стали дві версії phpBB:
- 3.1.10 з файлом
vendor/symfony/console/Symfony/Component/Console/Resources/bin/hiddeninput.exe
- 3.2.0 з файлом
vendor/symfony/console/Resources/bin/hiddeninput.exe

2. CMS по суті є сукупністю об'єктів типу Каталог (Розділ):
Блоги, Веблинки, Галереї, Групи, Документи, Завантаження, Карти, Книги, Контакти, Налаштування, Новини, Опитування, Підписки, Користувачі, Ознаки, Довідки, Статті, Сторінки, Товари, Файли, Форуми і т.д.
Об'єктом типу Каталог (Розділ) є сукупність об'єктів типу Рубрика (Категорія):
Блог (персональний, подієвий, тематичний і т.п.), Веблинк (зовнішній, внутрішній, редирективний і т.п.), Галерея (аудіо, відео, фото і т.п.), Група (адміністратори, редактори, автори і т.п.), Документ (інструкція, ліцензія, сертифікат і т.п.), Завантаження (драйвер, програма, креслення і т.п.), Карта (місця розташування, папок і файлів, сайту і т.п.), Книга (анотація, реферат, текст і т.п.), Контакт (автор, видавництво, редактор і т.п.),  Налаштування (відображення, обслуговування, зберігання і т.п.), Новина (наукова, політична, технологічна і т.п.), Опитування (регуляція, тематичний, технічний і т.п.), Підписка (внутрішня, зовнішня, поштова і т.п.), Користувач (ім'я, логін, пароль і т.п.), Ознака (ключ, тег, ярлик і т.п.), Довідка (питання-відповідь, підтримка, допомога і т.п.), Стаття (автор, рубрика, текст і т.п.), Сторінка (титул, рубрика, текст і т.п.), Товар (назва, виробник, вартість і т.п.), Файл (власник, дата, розмір і т.п.), Форум (автор, дата, тема і т.п.) і т.д.
Об'єктом типу Рубрика ("Категорія") є сукупність об'єктів типу Публікація (Повідомлення). Наприклад, Блок (Таблиця) з графічним і текстовим наповненням.
Меню сайту також відповідає вищезгаданій структурі:
CMS_МЕНЮ -> КАТАЛОГ_ВЕБЛИНКІВ -> БЛОК_МЕНЮ (ТАБЛИЦА_МЕНЮ)
Отже, для нормальної роботи CMS досить мати всього 3 функціональні процесори:
а) каталогів (розділів) - Каталогізатор;
б) рубрик (категорій) - Рубрикатор;
в) публікацій (повідомлень) - Публікатор, який можна реалізувати безпосередньо в HTML/CSS на базі блоків (таблиць) з графічним і текстовим наповненням в скинах, темах і шаблонах.
Подібний підхід дозволяє формувати потрібні розширення безпосередньо усередині самої CMS.

3. Необгрунтоване застосування допоміжних "контейнерів" і "шаблонизаторів" для об'єктів, що згадуються в попередньому пункті, завжди призводить до значних втрат продуктивності CMS. Наприклад, розробники Opencart ще в 2006 році показали, що при читанні динамічних сторінок в "шаблонизаторах" за рахунок додаткових перетворень втрачається не менше 40 % швидкодії, а спроби його відновлення за рахунок кешування статичних сторінок тягне за собою багатократне зростання вимог до об'ємів дискового простору і буферів оперативної пам'яті. На жаль, не усі розробники CMS ознайомилися з результатами цих досліджень, але ще можна заглянути в коди експериментальних релизів:
https://sourceforge.net/projects/php-opencart/files/
Відсутність "контейнерів" і "шаблонизаторов" дозволяє реалізувати прості логічні і математичні операції прямо в скинах, темах і шаблонах без втручання в коди движка CMS, наприклад:
- "Free announcements, articles, blogs, news and more in Opencart 2.3.x"
http://forum.opencart.com/viewtopic.php … p;t=166508

4. Особливий попит мають CMS з респонсивними скинами, темами і шаблонами, які дозволяють виконувати автоматичне масштабування і розміщення елементів зображення сторінки сайту на екрані дисплея. Хочу особливо відмітити, що надмірне впровадження JS для відображення сторінок сайту дуже часто призводить до неприємних спотворень зображення в різних браузерах і мобільних пристроях. Слід обов'язково перевіряти якість зображення сторінок сайту при відключених JS. Крім того, для CMS з респонсивними скинами, темами і шаблонами просто потрібний WYSIWYG редактор.

5. Деякі CMS містять вбудовані коди скриптів для виводу аудіо, відео, фото, а також графічної і текстової інформації з медіафайлів за допомогою серверів сторонніх провайдерів послуг типу Google, YouTube і т.п. Але не забуватимемо, що подібні CMS можуть стати базою для проведення масованих спамерных атак на ті ж сервери сторонніх провайдерів послуг. Тому завжди вибирають CMS з кодами скриптів для автономного відтворення аудіо, відео, фото, графічної і текстової інформації з медіафайлів. З цією метою можна використати наступні безкоштовні продукти:
а) AudioJS - форк VideoJS (див. нижче) для відтворення аудіо з усіма темами з VideoJS
https://github.com/kolber/audiojs/archive/master.zip
http://kolber.github.io/audiojs/
http://jedfoster.com/AudioJS/
https://github.com/jedfoster/audiojs
б) VideoJS - HTML5 і Flash відео програвач з відкритим початковим кодом
http://videojs.com/
http://docs.videojs.com/
https://github.com/videojs/video.js/releases
https://github.com/videojs/video-js-swf/releases
в) ViewerJS - компонент для читання документів у форматі PDF і ODF
http://viewerjs.org/getit/
http://viewerjs.org/examples/
https://github.com/kogmbh/ViewerJS
https://github.com/kogmbh/ViewerJS/releases
https://github.com/kogmbh/ViewerJS_release
https://github.com/kogmbh/ViewerJS_release/releases
https://github.com/Ryusei217/ViewerJS
на базі PDF.js і WebODF
http://mozilla.github.io/pdf.js/
http://webodf.org/download/
Для відтворення медіафайлів можна застосувати Flash програвачі, але майже усі з них з потрібними характеристиками є платними.
Любителям торгівлі буде цікаво ознайомитися з SimplecartJS:
http://simplecartjs.org/
https://github.com/wojodesign/simplecar … all/master
Як пишуть розробники, там немає баз даних, ніякого програмування і головного болю. Хоча в це віриться важко.

6. Більшість CMS мають серйозні проблеми з нумерацією сторінок у багатосторінкових публікаціях (повідомленнях), тобто неможливо відразу потрапити на сторінку з потрібним номером. З метою мінімізації рекомендується меню вибору сторінок виконувати за наступним шаблоном (наприклад, для 255 сторінок з поточною 127):
1 < [127] > 255
де
"1" і "255" - веблинки на першу і останню сторінки;
"<" і ">" - веблинки на попередню і подальшу сторінки;
[127] - редаговане поле з виведенням номера поточної сторінки за умовчанням для переходу на сторінку з потрібним номером.

7. Слід подумати про розподіл інформації між базою даних і файлами. Наприклад, у базі даних зберігати параметри налаштування сайту за умовчанням, дані користувачів, доступ груп, інформацію SEO і тому подібне, а у файлах - блоки (таблиці) з графічним і текстовим наповненням. Автоматичний розподіл файлів по окремих папах каталогів (розділів), рубрик (категорій) і публікацій (повідомлень) як мінімум виключить вірогідність появи багатотисячних груп файлів.

8. Деякі CMS (наприклад, Serendipity) реалізують багатомовність за допомогою кодів інтернаціоналізації (ISO 639-1, ISO 639-2, ISO 639-3):
https://en.wikipedia.org/wiki/Language_code
https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes
https://en.wikipedia.org/wiki/ISO_639-3
Наприклад, запис за допомогою BB-кодів типу
Ukr CMS - [en]the best in the world content management system[/en][uk]краща у світі система управління контентом[/uk]
відтворюватиметься як
Ukr CMS - the best in the world content management system
при виборі англійської мови і як
Ukr CMS - краща у світі система управління контентом
при виборі української мови. Не забудьте врахувати мову сайту за умовчанням, якщо буде відсутній переклад мовою браузеру відвідувача.

9. Хорошою підмогою в просуванні безкоштовної CMS може служити її застосування в учбових процесах середньої і вищої шкіл, для чого потрібний хороший "мануал". Особисто мені дуже сподобалися описи:
- Yellow
https://developers.datenstrom.se/help/
- UliCMS
http://en.ulicms.de/

10. Практично усі сучасні CMS можна знайти тут:

Прихований текст

http://2web-master.ru/bolee-50-besplatn … shali.html
http://www.alternative-zu.de/q/webedition
http://alternativeto.net/software/xon-cms/
http://incubator.apache.org/projects/
https://www.apachefriends.org/add-ons.h … d=noscript
https://www.autosectools.com/Advisory/Index
http://bestfreecms.ru/
https://bitnami.com/stacks
http://bloggerspath.com/open-source-php-cms/
http://bns-od.com/article/539-spisok-izvestnyh-cms.html
http://www.capterra.com/content-management-software/
http://cms-soft.org/
https://cms2cms.com/cms/supported-cms/
http://www.cms4school.com/
https://cmscafe.ru/novosti/721-2015-peo … -golosovat
http://cmslist.ru/catalogue/
http://www.cmscrawler.com/
http://www.cmscritic.com/
http://www.cmsmagazine.ru/catalogue/
http://www.cmsmatrix.org/
http://www.cmsobserver.com/
http://www.cmsreview.com/OpenSource/directory.html
http://www.cmssystemen.nl/cms-software
http://joo3.cmsvshtml.ru/catalog.html
http://www.cmswire.com/d/
http://creng.ru/interesno/rejting-cms-top-250-2011/
http://www.dodownload.com/web-building/cms/
http://www.downloadatlas.com/software-w … /rank.html
http://www.downloadcollection.com/category/scripts.htm
http://www.downscripts.com/down-php-scripts/
http://blog.dreamcss.com/category/conte … nt-system/
http://edutechwiki.unige.ch/en/Portalware
http://fedobe.com/the-ultimate-collecti … t-website/
http://www.filetransit.com/category.php?id=932
http://www.filetransit.com/category.php?id=962
http://www.findbestopensource.com/tagged/cms?fq=PHP
https://www.flatfilecmslist.com/cms/
http://www.freedownload3.com/downloads/ … forms.html
https://github.com/search?&q=CMS
https://glowhost.com/php-script-hosting … ripts.html
https://code.google.com/hosting/search?q=label:PHP
http://habrahabr.ru/post/193168/
http://www.hlrnet.com/intcms.htm
http://www.hotscripts.com/category/scri … -programs/
http://infofree.ru/forum/showthread.php?t=943
http://la.by/forum/internet-i-set/bespl … iya-saytom
http://www.la-grange.net/cms
http://www.linuxlinks.com/Web/
https://webgallery.microsoft.com/gallery
http://www.osphp.com.cn/go.php/category/0/1/1/
http://support.ongetc.com/
http://www.opensourcecms.com/
http://www.opensourcescripts.com/dir/php.html
http://pageaffairs.com/notebook/choosing-a-cms
http://www.phpkode.com/projects/
http://phptrends.com/
http://www.readerspark.com/non-database … t-systems/
http://www.script-php.ru/
http://www.scriptcopy.com/
http://www.scriptdungeon.com/php_scripts.php
http://www.scriptol.com/cms/list.php
http://www.scriptol.fr/cms/liste.php
http://www.softaculous.com/apps/
http://webscripts.softpedia.com/cat/Con … 1-0-0.html
http://m.softportal.com/dlcategory-361-1-win.html
http://tracking.softul.ro/misc/content- … -php-mysql
https://sourceforge.net/directory/language:php/
http://sourcexref.com/
http://cms.start.bg/
https://www.staticgen.com/
https://staticsitegenerators.net/
https://suse.me/search2?keys=CMS
http://tecfa.unige.ch/guides/portals/pointers.html
https://techno-co.ru/
http://www.translationdirectory.com/article622.htm
http://soft.x-iweb.ru/dvizhki_saitov-cd117
http://www.vanta.ru/script/php.php
http://vip-template.ru/cms-listing/
http://visavi.net/
https://wappalyzer.com/applications
http://webmagazine.kz/cms
http://webmagazine.kz/katalogcms-free
http://www.wikimatrix.org/
http://en.wikipedia.org/wiki/Comparison … nt_systems
http://en.wikipedia.org/wiki/Comparison … networking
http://en.wikipedia.org/wiki/Content_ma … _framework
https://en.wikipedia.org/wiki/List_of_c … nt_systems

Подякували: 0xDADA11C7, leofun012