Самый простой способ создать сайт

Хотелось бы поделится собственным велосипедом.

image

Залогом успеха в любой профессии в наше время является максимальная оптимизация производственного процесса. Но есть вещи которые стали стандартом в определенной сфере. Работа с ними требует долгого изучения и продолжительной практики. Одной из таких слабых мест веб разработки является база данных. Сопровождение и администрирование вносит огромные накладные расходы тем временем в подавляющем большенстве проектов функционал баз данных остается не востребованным. Как привлекательно совместить простоту работы с файлами, гибкость и функционал реляционных баз данных. Как хочется свести создание резервной копии базы данных к простому копированию одного единственного файла.



В момент установки сайта время для него замирает. Большая часть сайтов никогда не обновится. Обновление программного обеспечения становится нетривиальным делом которое легче каждый раз откладывать, чем запустить обновление и неделю потратить на поиск ошибок обновления и обяснения заказчику причин простоя. Если код ядра или часть файлов были модифицированны в процессе работы обновление становится невозможным.

Простота установки, сопровождения и обновления сайта стала задачей нашей дальнейшей разработки. Сделать процесс запуска сайта простым даже для человека ничего не знающих о базах данных, портах подключения и паролей доступа. Свести обновление к копированию одного файла и созданию резервной копии до нажатиу кнопок копи паст.

Для решения поставленной задачи отлично подошли два решения. В качестве хранения данных была выбрана бд sqlite. Данная бд совмещает максимальную простоту эксплуатации и все плюсы полноценной базы данных.

Работу с файлами портальной системы удалось упростить посредством упаковки базовой системы цмс в php phar архим. Разворачивание сайт при этом свелось к копированию одного файла в директорию проекта. Обновление всей портальной системы свелось к замене одного единственного файла обновленной версией цмс.

Так как sqlite не требует авторизации конфигурационный файл не требуется. Вместе с двумя указанными файлами нам потребуется директория где хранятся все загруженные изобрадения сайта а также файл .htaccess который покажет веб верверу откуда начинать загрузку.

Все свелось к четырем файлам в папке проекта. Одному файлу бд где будут хранится файлы, одному файлу цмс, файлу .htaccess и директории с полным доступом для загрузки файлов.

При первом входе система попросит вас ввести логин и пароль администратора. Человек который ввел пароль становится администратором и получает пондый доступ ко всем разделам адмисистемы.

Создание страниц сводится к выбору адреса для с траницы. Войдя на адрес вновь создаваемой страницы администратору будет предложено одним кликом создать новую страницу. Посде создания для ее редактирования достаточно нажать на карандаш в верхней правой чати страницы для ее редактирования.

Файловая система сделана по мотивам файловой системы unionFS в которой система считает файловой системой сразу несколько уровней. Первым наиболее приоритетным является уровень файловой ситемы проекта. Размещенный в общей директории файл путь которого совпадает с системный будет являтся более приоритеным чем лежащий в phar архиве. Для изменения работы любого файла достаточно разсестить его измененную копию по такому же пути, что и в phar архиве. При этом он начитает работать сразу же. Подобным образом на сайт добавляются собственные шаблоны, собственные модели и даже основной файл ядра для изменения достаточно разместить index.php в директории проекта рядом с index.phar

Данное решение можно назвать самый простой установкой файловой системы их всех существующих. Для этого достаточно залить три файла в директорию хостинга.

Index.phar — cms
.htdb — файл бд (полный доступ)
.htaccess — файл перенаправление на исполняемый файл движка
/include/images Директория для заливаемый файлов (полный доступ)

Как то так должна выглядеть файловая система.

Адрес на github — github.com/mpak2/mpak.su

Зайти в админку можно тут http://phar.mpak.su/admin пользователь/пароль admin/admin

К сожалению в рамках комментарий не удается озвучить все интересующие темы. Контакты для общения сможете найти в вышестоящей ссылке.
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 242

    +25
    Решил значит изучить ваш «код» на пригодность и открыл точку входа… в ваше приложение/cms… после чего у меня волосы на заднице голове встали дыбом и я пошел мыть глаза с мылом…
    Если без эмоций — так программировали в 2001-2005 годах на php 4 — я не знаю в силу каких обстоятельств вас заставляют делать то же самое, когда за окном виден composer, mvc, psr-*, symfony, yii2, laravel и другие прекрасные вещи… Попробуйте добавить ваш проект в scrutinizer или другой CI и посмотрите на качество кода.
    • UFO just landed and posted this here
      • UFO just landed and posted this here
          +8

          Название "мрак" описывает само себя )

            +2
            А комментирующие «мракоборцы», значит
              –6
              Скрытый текст
                –9

                А за что минусы то? ) На фото мракоборцы из гп. Или тут гп не в почёте?

            +7
            Так часто бывает, например, когда человек живет в маленьком городке, вдали от комьюнити. Видимо среди своих знакомых-родственников-заказчиков он — гениальный программист-самоучка. Начал писать свою CMS до того как взялся изучать PHP. Вероятно не пользуется IDE и не слышал даже о вышеперечисленных прекрасных вещах.) Небыло конструктивной критики в нужное время — вот результат. Я уверен, мы тут все сумасшедшие для него, пишем какие-то странные вещи, издеваемся над ним. Не можем оценить проделанный им титанический труд).
              +2
              Я лет 10 назад так переходил из мира бейсика-ассемблера в мир ОПП.
              Реально на долго застрял в районе функцинальщины между паскалем и вижуалбейсиком.
              Вроде и Си был не пустым звуком, и теоретически классы, объекты, наследование — слышал. Но дошло лет через пять только.
              Велосипедов настроил… И да, все вокруг казались идиотами)
              Зато сейчас пишу с оглядкой на меня тогдашнего.
                +3
                я на этой волне на php в свое время написал парсер/транспилер highlight файлов от vim, для подсветки кода на форумах (он у меня уже даже сносно php, perl и sh подсвечивал). Было где то начало 2000 -ых. Повезло — раньше чем увяз в своем коде помер комп,  причем наглухо, исходники канули вместе с ним (там такие спагетти были, италия отдыхает). Зато на одном форсмажоре пришло и понимание бэкапов и систем версионного контроля и ООП чуть позже понял зачем нужен. А все вот так же — в собственном соку, без комьюнити, без волшебных пендалей и отеческих подзатыльников.
                  +3
                  Реально на долго застрял в районе функцинальщины между паскалем и вижуалбейсиком.

                  Это как? Процедурщины тогда уж.
              +3
              github.com/mpak2/mpak.su/blob/master/modules/chat/all.php#L3-L5
              На улице ведь 2016, я правильно ощущаю время?
                –2
                Вы нашли один из самых древних частей кода.

                https://github.com/mpak2/mpak.su/commits/master/modules/chat/all.php

                Экспериментов было много. Не все прижились, но следы от них все еще остаются.
                  +5
                  Увы, просто первые 5 секунд изучения репозитория вывели меня туда. Комментатор выше дал ссылку на точку входа, это первая секунда знакомства с проектом.

                  Я просто к чему это: если пишете код не модно, то не стоит публиковать это на всеобщее обозрение, иначе здесь вы не найдёте поддержки, а лишь отрицательные эмоции от критики (должен признать — по делу).
                    +7
                    если пишете код не модно

                    не модно

                      –5
                      Понятия «не современно» и «по-старому» очень растяжимы и не фиксируется во времени. Поэтому «не модно» отлично описывает реакцию сообщества на данный проект.
                    +1
                    А я прекрасно понимаю автора, сам был таким лет 10 назад… к слову и код был примерно такой же…
                    Но в своё оправдание могу сказать что и php 5 с переработанными функциями ООП только вышла…

                    кстати...
                    ах да… mysql_connect mysqli_connect
                • UFO just landed and posted this here
                    +4
                    Да, зашел в комментарии чтобы дать тот-же совет. Вот реально статью прочитать не смог, хотя велосипеды сам люблю.
                    Но никогда не поздно сделать это сейчас.
                      –15
                      Вы бы знали что мне пришлось сделать с собой чтобы вообще что то выдавить из себя. Как и любой другой технарь у меня проблема с попыткой что-то описать. Не смог изложить основную мысль. Но сам подобным велосипедом пользуюсь не один год, доволен как слон. А код потихоньку переписывается по мере того как в нем начинает что то сбоить или появляется необходимость дополнительного функционала.
                      • UFO just landed and posted this here
                          +11
                          Как и любой другой технарь у меня проблема с попыткой что-то описать.


                          Пожалуйста, не примазывайтесь. Что-то даже с этим предложением у вас не так.
                            –5
                            Это лишь доказывает мои слова.
                              +5

                              На самом деле, нет. Это доказывает, что проблемы у вас. У любого другого технаря таких проблем нет.


                              (заодно у вас проблемы с логикой)

                                +2
                                Кто ясно мыслит, тот ясно излагает.
                              +1
                              >> что мне пришлось сделать с собой чтобы вообще что то выдавить из себя

                              И что, оно того стоило? )
                                +2
                                Нет. Не высказывать своего мнения оказалось целесообразнее.
                                +4
                                Как и любой другой технарь у меня проблема с попыткой что-то описать
                                Ну вы там это, давайте без всякого, а то чот не оч и всё такое, да. Вот.
                            +6
                            http://demo.mpak.su/
                            Warning: array_key_exists() expects parameter 2 to be array, boolean given in /srv/www/vhosts/mpak.cms/include/mpfunc.php on line 1497
                              –20
                              Попробуйте лучше скопировать три файла и запустить на своем хостинге. Уверен вам понравится. Демка не работает уже пару лет как.
                                +9
                                По демке встречают…
                                  +8
                                  А какой тогда смысл в такой демке? Тем более если вы знаете о том, что оно не работает. Может, стоит ее починить? Не каждому хочется что-то копировать и запускать. Ну или удалите ссылку вовсе, чтобы не было ложных ожиданий.
                                    +7
                                    А может быть вам самим стоит скопировать три файла в демку? В статье сказано, что это очень просто сделать, и сайт обновится
                                      –6
                                      Есть особенность в ее работе. Демка без возможности изменение — бесполезна. А каждый второй наровит все поломать удалив нужные блоки или играясь с правами доступа к разделам. Систему с записью и постоянно работающую не получилось сделать. Так и стоит все время сломанная.
                                        +4
                                        Сделайте, чтобы в кроне раз в 10 минут разворачивалась свежая копия и тогда не будет проблем в том, что каждый норовит сломать.
                                          –4
                                          Так и делал. Наверно это маркетинговое решение и было бы востребовано при активном продвижении. А так как сайты делаются по работе, родственникам и знакомым то и в самой демке необходимости нет. Тут больше будет полезным описания возможностей и решений до которых все руки не доходят. Если не сольют планирую радовать сообщество своими шедеврами. :)
                                  –2
                                  развернуть у клиента..., бог мой, git clone или svn co уже давно решают. бд, sqllite -это выбор для пары мегабайт или 100 страниц, как я вижу вас? такие как вы делаете код только для того чтобы доить клиентов на поддержке вашего говна, для it сферы — вы инфекция, вы только тратите свое время и деньги клиентов
                                    –2
                                    То же самое пару лет назад мне говорили о mysql Однако как быстро меняется мир.
                                    Перенести из одной бд в другую дело 15 минут. Речь только о целесообразности каждого решения для конкретной ситуации.
                                    На большей части сайтов данные и занимают пару мегабайт. Вы же с экскаватором за червями не едите?
                                      +4
                                      Строго говоря только идея использовать sqllite и phar для простоты инсталяции в этом проекте и не вызывает критики :)
                                      Есть большой пласт задач где этого достаточно. Так что Вы не правы. Всё остальное тут да, привет из 90-х. С этим не поспоришь.
                                        0
                                        Вот тут соглашусь, SQLite не так прост, как многие могут подумать. Для чего-то простого и не часто изменяемого, но всё-таки не статического, может быть очень даже в тему. Ну а phar это ну почти что jar. Для чего-то небольшого может быть очень удобно. В том числе для file-based CMS, например.
                                          –2
                                          Повторюсь — куда кинул там и работает.
                                          Ситуация в которой вы можете просто закинуть файлы на хостинг и они будут работать не задумываясь о версии бд, хосте конфигах.
                                          Кстати никто не заметил а тем не менее эта система совсем без конфигов. Точнее они там есть, но для данной бд достаточно дефолтного конфига который будет искать бд прямо в корне сайта.

                                          https://github.com/mpak2/mpak.su/blob/master/include/config.php

                                          Он лежит прямо в index.phar и заменить его мы можем положив по тому же пути файл в фс сайта.
                                        +3
                                        Да тут просто полный набор антипаттернов… и транслитерация с русского в именах функций, и глобалки, отсутствие следования стандартам и много чего еще. В 21 веке так не делают.
                                        Я не поленился, клонировал репозиторий, открыл его в IDE. Надеялся найти там что-то интересное, но… нет, увольте. Когда открываешь файл, длиной в 1600+ строк, и видишь там столько много буков, что они закрывают 95% экрана, желание копаться дальше испаряется.
                                        А вот, кстати, и файлик, скрин из IDE со встроенным анализатором ошибок
                                        image
                                          +2
                                          Не совсем по теме поста, но про IDE и их проверки «по умолчанию»: как-то принимал проект на поддержку. Открываю самый толстый контроллер и IDE сообщает — есть ошибки. Использование не инициализированных переменных. Ну, думаю, если даже статический анализ такое показывает… то я в *опе… =) так и оказалось.
                                            –3
                                            php работает в режиме error_report(E_ALL) не представляю что вы там могли найти.
                                              0
                                              А вы прогоните свой код через любой статический анализатор кода и посмотрите. Хуже точно не будет
                                            –7
                                            Разворачивание сайт при этом свелось к копированию одного файла в директорию проекта.


                                            Это вы сейчас серьёзно? Мой бог но svn co и git clone знают все.

                                            Sqllite это для 2 мб и 100 страниц текста, дальше будут тупняки.

                                            Знаете как я вижу таких людей которые предлагают вот такие решения? Вы инфекция. Вы занимаетесь не своим делом. Все что вы делаете это тратите чужое время и деньги, внедряя тонны вот такого вот говна под видом отличной конфеты клиентам, которые не очень понимают в технологиях.

                                            Горите в аду
                                              –5
                                              Вы видели как меняется лицо клиента когда вы начинаете ему обьяснять почему надо использовать git или svn или какую нибудь еще непонятную абривиатуру? Значете что они при любой возможности вам говорят? «Зачем не вся эта хрень?» Я вас также сейчас спрашиваю. Зачем все это если можно обойтись без этого? Про https://ru.wikipedia.org/wiki/Бритва_Оккама слышали что нибудь?
                                                +6
                                                Если вы не можете объяснить клиенту зачем, так может быть просто вы сами не знаете для чего это?
                                                  –1
                                                  Где нужно это используется. Но остается львиная часть проектов где я не буду настраивать git так как он там просто не нужен. Зачем система контроля версий в директории состоящей из трех файлов?
                                                    +1
                                                    но если сделать хорошо будет не 3 файла. а больше и что вы там настраивать хотите не понятно.
                                                    • UFO just landed and posted this here
                                                        +2
                                                        Необходимость использования системы контроля версий не измеряется в количестве файлов. Есть люди, которые будут и один файл держать под версионным контролем, если это понадобится.
                                                          +1
                                                          Ну как минимум для
                                                          контроля версий
                                                            +1
                                                            Для контроля версий конечно да. Но тут спор начался о необходимости гит для _разворачивания проекта_. И тут надо признать логика у топикстартера имеется. При всем ужасе его кода и других ошибках — далеко не для каждого проекта уместно использовать гит для разворачивания. Если на хостинге нет доступа в консоль и гита, то это не повод отказываться от хостинга если у тебя сайт визитка…
                                                        +2
                                                        А зачем вы заказчику вообще про git рассказываете? Вы ожидаете, что он начнет пользоваться инструментарием разработчиков, чтобы разворачивать свои сайты? Для чего козе баян?
                                                        Ну и вообще — ваш способ «простого» обновления сайта ничем не отличается от набора команды git pull или composer update. Ну или на худой конец можно и всю CMS в архив запаковать — сложность обновления то будет та же самая.
                                                        Только вот в итоге вы через какое-то время наткнетесь на другие грабли, которые не дадут вам так просто обновлять CMS с помощью копирования phar архика, поверьте.
                                                          +1
                                                          Подождите еще немножко и вас начнут микросервисами пугать :)
                                                          А если серьезно, то хоть народ и немножко перегибает с гитом и т.п., и действительно в мире где самым популярным CMS является вордпресс странно слышать что «гит знают все», но вы должны их понять — то КАК вы пишете это сравнимо с тем чтобы кучер из 18-ого века учил бы пилота Формулы-1 правильной езде. НА ЛОШОДЯХ НЕ ЕЗДЯТ. ТАК НЕ ПИШУТ. Спортивные клубы и ипподромы в другой стороне, как и хаб «ненормальное программирование». Это пхп, это бреинфак. Почитайте азы. DRY, SOLID, почитайте банду четырех… посмотрите что в 21-веке в тренде. Лучше всего найдите себе наставника. И будет вам счастье. Просто напишите тут, мол «чуваки, кто научит писать, а то я чёт неграмотный малёха». Вас пошлют сначала грамматику исправить в тексте, а потом и в нужны тексты ткнут…
                                                        0
                                                        php, sqllite, phar, копируй то, создай сё. чем лучше то, такие же непонятные слова. И не надо объяснять ничего клиенту, если он не понимает вас, говорите на его языке, «мы все сделаем за X дней, за Y денег, если не срочно сделаем скидку, если срочно накинете 50%, подвинем других ради вас.»

                                                        И с лицом вашего заказчика будет все в порядке, будет улыбка. Потому что ему вообще насрать, что у сайтом под капотом если работает.

                                                        Но что действительно от вас ожидает любой человек, который даёт вам деньги за что угодно? Ответственность.
                                                        Вот если вы продаёте это говно клиентам, я думаю если им захочется что то поменять и они найдут хорошего профессионала и посмотрит на то что было ДО… он скажет, прискорбно вам сообщать, но в прошлый раз под видом конфеты вам продали кусок говна, и теперь надо бы еще раз вложится и сделать хорошо. Что подумает о вас ваш клиент.… ЧТо вы очень плохая компания, а вам ответить будет нечего, вы просто скажете, да чел мы тебя поимели. извини бро, но это биз.

                                                        И я лично видел как за подобное натурально били в лицо.
                                                          –1
                                                          Плохой тот заказчик которому насрать что делают с его сайтом. В худшем случае он спрашивает что вы там делаете а в лучшем хранит файловую систему файла на флешке и имеет инструкцию что с этим делать если вас вдруг собьет автомобиль. А профессионалов уже мы все насмотрелись которые вместо того чтобы сделать что то работающее проводят эксперименты с новомодной технологией а потом другие за них пытаются разобраться что они там сделали. Не раз приходилось переделывать за студентами их практическую работу про которую они забывают как только получают свой зачет.
                                                            +6
                                                            но ваша система и есть практическая работа студента, в которой никто кроме вас не разберется быстро, а когда разберется найдёт кучу багов, которые надо править, и вот он денежно-временной континнум клиента, которго поставят перед выбором, платить дальше и смириться с текущей системой или опять заплатить за новое решение.
                                                              +2
                                                              Хуже. Тут другая крайность — тут не эксперементальные технологии, которые случайно могут и выгореть и стать стандартом и т.п. Тут отставание от твердого стандарта лет на 10. И отставание с каждым днем будет еще больше. Так что тут намного хуже чем эксперементы с технологиями.)
                                                                –4
                                                                В свое (лет цать назад) я как и большая чатсть из нас писал подобие бд работая напрямую с файлами. Плох тот программист который не пытался это сделать. Если я вернусь к прямой работе с файлами это отставание от твердого стандарта? Пусть будет так. Повторюсь эксперименты давайте оставим студентам а работать будет со старыми зарекомендовавшимися технологиями. Для меня sqlite это старые добрые файлы теплые, ламповые. Давно мечтал работать с чем то подобным.
                                                                  +6
                                                                  ДА пожалуйста. Пусть будет sqlite3, почему бы и нет? (кстати обращаю внимание — я не зря указываю тройку)
                                                                  Вас ведь в основном не за это макают. А за методы «чуть» больше 20 строк. За отстутствие стандарта кодирования как класса (черт, я сам этим грешу, в проекте уже за сотню классов а всё никак не вычищу ляпы с именованием классов и т.п., но у вас каша которая коробит даже меня.
                                                                  Отсутствие внятной структуры, стиля, мешанина экспериментов, «ой, это у меня от прошлого десятилетия осталось», отстутствие тестов… да вообще отсутствие всего без чего выкладывать код стыдно. Черт, у меня намного лучше код, но я тупо стесняюсь его на публику выкладывать. А тут такая непосредственность)
                                                                  А потом еще и приправленная «ой, это демка, я ее сто лет не обновлял, это ерунда, пусть глючит», и «та пофиг на грамматические ошибки и опечатки в тексте, мне его вычитывать лень, пусть лучше сотня человек покоробится читая это, чем мне править..» и после этого вы такой «ой, меня за sqlite3 ругают»… да может половина бы и поругала за него, может и согласилась бы что ваше решение имеет право на жизнь, если бы это было основным спорным моментом… Но тут ВСЁ ужасно :)
                                                                    –5
                                                                    Убейте в себе перфикциониста. Перфекционизм — зло. Я выложил то, что работает а оно не всегда красиво. Как раз то, что годами не выгребается и есть то, что не глючит. То, что глючит первым делом выгребается. Что именно показалось вам особо ужасным? Синтаксис? Я тоже вроде не первый год пишу код и мне это кажется достаточно удобным и понятным. Извините если наши вкусы различаются.
                                                                      +3
                                                                      Вам однозначно нужен наставник. Если вы уже не первый год пишете такой код, и к Вам не приходит понимание того, что так делать нельзя, то что-то Вы делаете не так, ИМХО. И перфекционизм тут ни при чем.
                                                                        –8
                                                                        Есть хорошее высказывание умных людей по этому поводу. Насколько помню звучит оно примерно так.

                                                                        95% обратной связи — полная лажа. Но из за оставшихся 5% стоит ее читать.
                                                                        И есть еще одна 95 процентов людей идиоты. На данном ресурсе их меньше, но все равно процент достаточно велик.

                                                                        Не удивляюсь что не все понимают того о чем я написал.

                                                                        Мне нужны единомышленники. Я знаю что я делаю и для чего.
                                                                          +8
                                                                          Ок, я умываю руки из этой ветки, а то так на личности перейдем. Мне не о чем с Вами больше разговаривать, если Вы ставите свое мнение выше мнения других, более опытных коллег, и никак не пытаетесь прислушаться к нему. Вы не понимаете их, они не понимают Вас. Успехов Вам с поиском таких же, как Вы, их еще очень много… к сожалению.
                                                                            –1
                                                                            Не в коем случае. Скорее у нас разные опыт, методики, цели, решения, инструменты, жизненные позиции. Так уж повелось что люди разные. Для этого и разговариваем чтобы найти точки соприкосновения.
                                                                              +6
                                                                              А я всё же перейду на личности.

                                                                              Во первых, говнокод — не методика, не цель и не решение. Жизненная позиция — возможно.

                                                                              Людям с такими мыслями в голове, какие вы тут озвучиваете — просто нельзя давать писать код. От ваших действий страдают люди, понимаете?
                                                                              Мне недавно не повезло столкнуться с чем-то похожим на то, что вы тут представили. И совсем небольшие изменения вылились для заказчика большим счётом, а для меня нервами и временем ковыряния в г**. И так будет с каждым последующим изменением на том сайте.

                                                                              Не рассказывайте ничего про перфекционизм. Вам до него далеко. И вам никто ничего не говорит про «красоту» и «синтаксис». Речь про то, что если сайт «запускается» — это ещё не значит, что вы выполнили свою задачу, всё хорошо и всё остальное — лишнее.

                                                                              Вам действительно либо нужен наставник, либо я лично хотел бы вас попросить не делать работу для клиентов.
                                                                            0
                                                                            Блин, люди вам говорят правду, сравните код с код использования фреймворков. вы написали кучу сырых SQL запросов и хотите чтоб это было переносимо на другую базу, вы написали массу кода и хотите чтоб он был хорошо отлаживаемый. Надо писать модуль чтоб он был хорош для одной задачи и использовать и использовать его в дальнейшем. Если вас смущает влияние автолоадинга в пхп на производительность, то более чем 30 млсек мне не удавалось выиграть сливание всех файлов в один большой в случае например с ЗендФреймоворком версии 1.10.
                                                                          +5
                                                                          Это не вкусы. Это PSR-2.
                                                                          Я думаю сообщество мне простило бы то что у меня имена классов начинаются с маленькой буквы а открывающая скобка методов не с новой строки. Если бы общая идея показалась бы интересной, то думаю что простили бы и то, что в некоторых местах (в некоторых!) у меня методы доходят вплоть до 30 строк.
                                                                          Но я не буду выкладывать такое просто потому что например у меня нет описаний половины методов, а это уже непростительно. И описывая и подправляя какие-то другие вещи — заодно исправлю и меньшие ляпы.
                                                                          Ваш код нечитаем. Работать с ним невозможно. Нет, вру. Можно. Вчера партнеру объяснял почему мы отказываемся от заказов требующих опенкарт, хотя я и некоторые другие разрабы в команде его отлично знаем. Мой ответ был простой — задача которая на нормальном коде занимает 15 минут, там займет несколько часов. Если я сделаю это за 15 минут, то клиенту это будет стоить как 15 минут моего времени. Исполнитель под опенкарт сделает ту же задачу скажем за 5 часов. При цене часа в 5 раз ниже моего это будет в 4 раза дороже чем мои 15 минут.

                                                                          НО дело даже не в этом.
                                                                          В вашем коде наверняка есть куча ошибок. Как собственно и в моем и в любом другом.
                                                                          Но я могу дать почитать мой код коллегам. А вы не можете.
                                                                          Если мы оба выложим его в опенсорс, то мой код будут читать и присылать мне пулреквесты, а ваш не будут читать. Только использовать. Нет будут. Но только новички вроде вас.
                                                                          Эта проблема кумулятивно ухудшает код с каждым днем.
                                                                    –3
                                                                    Вызможно я пру против системы, но именно это работает. То, что не имеет узких мести где ломаться просто нечему. Платят за то, что работает а не за вечную разработку. Это работает уже долгие годы без сбоев. Тут нет слабых мест. В этом и мысль всего поста. В этих 269 строках кода я уверен больше чем в любой другой программулине. Знаю что кроме варнингов тут просто появиться нечему. А чтобы sqlite солмать надо очень сильно попотеть. В отличает от mysql который валится при любом не верно внесенном изменении в конфигурацию или недостаточных правах доступа к логам или еще сто пятьсот причин. Не подумайте не правильно большая часть у меня все еще стоит на mysql но при любой возможности я готов от него отказаться в угоду таких простых решений как sqlite
                                                                      +1

                                                                      Один простой вопрос: кто, кроме вас, сможет (и, что важно, захочет) это поддерживать?

                                                                        +8
                                                                        Это работает уже долгие годы без сбоев. Тут нет слабых мест.
                                                                        [...]
                                                                        А код потихоньку переписывается по мере того как в нем начинает что то сбоить

                                                                        Я считаю, это просто прекрасно.

                                                                          –4
                                                                          Как в свое время написал Линус Торвальдс в своих первых сообщениях о Линуксе:

                                                                          Я сомневаюсь что это когда до будет поддерживать что то кроме файловой системы.

                                                                          Я тоже сомневаюсь, что это кто то когда то будет поддерживать.
                                                                            +6
                                                                            Я тоже сомневаюсь, что это кто то когда то будет поддерживать.

                                                                            И при этом от сайта зависит миллионный бизнес? От сайта, который не может поддерживать никто, кроме одного человека?

                                                                              0
                                                                              А что? Не плохо! Сделай себя незаменимым)
                                                                                0

                                                                                Ну так, непрофессиональненько.

                                                                    –2
                                                                    Знаете когда заказчику насрать? Когда это ничего не стоит. Когда от сайта зависит миллионный бизнес вы даже чиха не сможете сделать с сайтом без дополнительного описания что вы там сделали, создания таска и согласования с парой прямых начальников. Когда от ваших действий, если вы что то сделаете не так с сотню человек в компании рискует остаться без входящих звонков и конверсия на пару недель свалиться на один процент вы невольно начнете задумываться что бы еще удалить с этого зоопарка технологий чтобы не дай бог что то не сбойнуло.
                                                                      +1
                                                                      Вряд ли вам придется создавать сайты для миллионного бизнеса вот на таком движке.
                                                                      «Зоопарк» технологий, как вы говорите, разводят не для того, чтобы систему намеренно усложнить, а как раз таки наоборот. Каждая технология в миллионном проекте предназначена для решения своей задачи
                                                                      И если кто-то бездумно ввел какую-то технологию в проект необоснованно, а потом не может с этой технологией справиться, то заказчик явно нанял неадекватного подрядчика, и ему нужен аудитор, который быстро такого исполнителя забракует
                                                                        0
                                                                        Это вы к тому, что на вашем решении держится миллионный бизнес?
                                                                          –6
                                                                          В рублях конечно, не в долларах. Хотя оборот уже наверно в долларах.
                                                                          Сайты уже точно исчисляются сотнями. Возможно за тысячу.

                                                                          Не на sqlite конечно. Его я еще буду какое то время тестировать перед внедрением.
                                                                            +4
                                                                            Можете ссылку дать на какие-нибудь сайты с этой смс?
                                                                      0
                                                                      Сопровождение и администрирование вносит огромные накладные расходы тем временем в подавляющем большенстве проектов функционал баз данных остается не востребованным. Как привлекательно совместить простоту работы с файлами, гибкость и функционал реляционных баз данных. Как хочется свести создание резервной копии базы данных к простому копированию одного единственного файла.

                                                                      Не хотите самостоятельно администрировать БД, купите разделяемый хостинг — стоит-то копейки, как одна булочка в месяц.

                                                                      А вообще вы ведь не настраиваете для своего сайта новую среду выполнения каждый день. Резервирование всех популярных серверов реляционных баз данных сегодня выполняется парой строчек в кроне.
                                                                        –2
                                                                        Вопрос наверно в выборе удобных для себя инструментов. Я уже надминистрировался и баз данных и юникс серверов, хочется что то попроще. Сложности хороши для тренировки ума. Для реально работающих проектов нужно что то простое и отказоустойчевое, с легким вхождением и удобным администрированием. Возможно вы еще не натренировались в этих кроссвордах вас все еще привлекают ситуации с созданием сложностей и успешным их преодолением. Тренеруйтесь, что можно сказать.
                                                                          0
                                                                          При всей «лёгкости вхождения» и «удобстве администрирования» SQLite не подходит для большинства сайтов размером больше дюжины-другой страниц.

                                                                          Причина простая: каждый раз, когда клиент обращается к вашему сайту, сервер приложений (если таковой имеется) должен отправить запрос к БД и получить из неё данные. Клиент-серверные СУБД справляются с этой задачей на ура, производя различные оптимизации и храня выбранные недавно данные (блоки, страницы) в памяти (кэш буферов).

                                                                          SQLite при каждом запросе к БД будет запускать новый процесс и читать одни и те же данные в память, — крайне накладно с точки зрения расходования ресурсов ЦП, ОЗУ, дисковой подсистемы — и со временем (по мере роста объёма данных в БД) вам потребуется либо вертикальное масштабирование произвести (покупка мощного ЦП, SSD и т. д.), влекущее дополнительные траты, либо задействовать кэширование (вроде memcached), что сильно усложнит приложение.

                                                                          Ваши конкуренты тем временем будут использовать MySQL или PostgreSQL и в ус не дуть длительное время, пока нагрузка действительно не станет большой (миллионы запросов в сутки).
                                                                            +1
                                                                            Строго говоря сайт с посещалкой в тысячу уников, с тысячей страниц, грамотной архитектурой и кешированием (да в ту же базу, просто чтобы не плодить много запросов за страницу), да такой где динамического контента нет, изменения в базу делает только админ, а пользователи только читают, инвалидаторы написаны грамотно — такой сайт будет прекрасно себя чувствовать на самом дешевом хостинге и с SQLite. Если бы мы увидели нормальную визитницу с MVC, PSR-2 и т.п., засунутую в phar и sqlite3 то я бы слова не сказал бы. Может даже на вооружение взял бы. Но под капотом то ад адовый. Неподдерживаемый код, в котором 90% что куча дыр которые никто не вскрыл просто потому что пока никому не нужно было… супер.
                                                                              0
                                                                              да такой где динамического контента нет, изменения в базу делает только админ

                                                                              Верный кандидат на реазиацию с использованием генератора статических сайтов (Jekyll, Sphynx, metalsmith и т. д.) — в БД вообще отпадает необходимость.
                                                                              –2
                                                                              Не забывайте речь идет о базе в несколько десятков мегобайт. Подобный размер бд давно уже влезет в оперативу без остатков не требуя не то что оптимизации а простого обращения к файловой системе. Речь об удобстве использования. Если появится хоть одна причина для переезда на другую бд это стоит сделать.
                                                                                0
                                                                                Вся база в десяток мб влезает в ОЗУ и поэтому мы ее сделаем файловой? Ой!
                                                                                При том что я тут один из немногих кто защищает вашу идею с sqlite3 — я даже не возьмусь объяснять всю прелесть вашей мысли)
                                                                                Хотя чего там — шаредхостинг, сотня юзеров онлайн…
                                                                                  –1
                                                                                  Любая бд файловая. Хранить данные в ДНК еще не научились. Вопрос в том, что мы ничего кроме файлов не пользуем. Выкидываем кучу ненужных промежуточных элементов таких как порты, права доступа, логи, пользователи, сервисы, демоны дам кучу всего. Концепция куда кинул там и работает. На 99 процентов хостингов закинул в директорию и все работает. Это ли не прекрасно?
                                                                                    0
                                                                                    Перед тем как привести несколько доводов против SQLite для динамических сайтов почитал про механизм резервного копирования на официальном сайте.
                                                                                    Whether or not the backup process is restarted as a result of writes to the source database mid-backup, the user can be sure that when the backup operation is completed the backup database contains a consistent and up-to-date snapshot of the original. However:

                                                                                    • Writes to an in-memory source database, or writes to a file-based source database by an external process or thread using a database connection other than pDb are significantly more expensive than writes made to a file-based source database using pDb (as the entire backup operation must be restarted in the former two cases).
                                                                                    • If the backup process is restarted frequently enough it may never run to completion and the backupDb() function may never return.

                                                                                    Т. е. чтобы не допустить ситуации, когда резервное копирование стартует снова и снова (потому что внешний процесс что-то захотел записать в БД) или вовсе не может завершиться, наше приложение не должно использовать больше одного соединения с базой SQLite. Т. о. если клиентов много, операция резервного копирования может заметно ухудшить производительность сайта или создать потенциальную угрозу выполнения атаки отказа в обслуживании даже при небольшом количестве одновременных запросов.

                                                                                    В других СУБД используется совершенно иная модель резервного копирования, в которой применяется журнал воспроизведения (журнал транзакций) — БД всегда доступна для записи и чтения, и выполнять резервное копирование можно в любое время без прерывания процесса.

                                                                                    А ещё в SQLite, похоже, нельзя делать инкрементальное резервное копирование — копировать только изменения, а не базу данных целиком.

                                                                                    Кроме того было бы интересно узнать, как топикстартер реализовал бы защиту данных, например. В MySQL, PostgreSQL, Oracle Database, SQL Server такое сделать несложно имеющимися средствами, и это работает надёжно.
                                                                                      –2
                                                                                      Уверен в sqlite куча недостатков. Но при приемлемом количестве плюсов и минусов сам sqlite может быть достаточно приемлемым для использования. Это как маяк к которому на мой субьективный взгляд должна стремиться вся it индустия. Не создавая монстров а делая что то простое и понятное. Давайте следить вместе за этим решением резко отрицаьельных отзывов я еще не встречал. При некоторых очевидных плюсах общее мнение о данной бд вполне положительное.
                                                                                        0
                                                                                        Речь не о том, плохая или хорошая SQLite. Речь, очевидно, о том, что этот инструмент подходит для встраиваемых систем, в которых отсутствует конкурентность, но для динамических веб-сайтов SQLite явно не подойдёт по большому ряду причин. Для встраиваемых систем, для небольших БД на клиентской стороне (в браузере, например) — отличное, гибкое, нетребовательное к ресурсам системы решение. Для динамических сайтов размером больше дюжины страниц и с большим количеством запросов SQLite не подходит хотя бы в силу отсутствия масштабируемости.
                                                                                          –2
                                                                                          Предлагаю все-таки приводить доводы основанные на опыте. Из того что я читал разработчики sqlite достаточно грамотно подходят к своему делу. Верю что можно сделать достаточно хорошее решение. А подходит или не подходит лучше утверждать на цифрах. При таком количестве решение приемлемо, при большем — не подходит. Границы приемлемости данного решения еще не понятны. Будем тестировать.
                                                                                            0
                                                                                            Предложите фейсбуку перейти на sqlite
                                                                                              –1
                                                                                              sqlite это такие же файлы с которыми и сейчас идет работа. Вопрос не в названии а насколько надежно и удобно это сумели реализовать разработчики. Если подходить строго — любая другая бд использует у же самую файловую систему. Так в чем разница? В том что у sqlite реализовал другой подход он выкинул часть элементов которые посчитал ненужными. Веб сервер баз данных, сокеты возможно что то еще.

                                                                                              Но мы ведь не раз сталкивались с ситуацией когда приходят ребята и применим новый подход упрощают старую устоявшуюся как казалось вещь и она работает лучше. Пример тот же git кто бы мог подумать до его появления что можно без сервера обойтись в системе контроля версий? Пришли сделали и у всех глаза открылись что сервер в SVN был слабым звеном оставшимся в качестве наследия от предыдущих поколений разработчиков. Или bitcoin который переворачивает финансы. Мир платежей делистя на две части до биткоина и после. Также и тут. Все ресурсы на которых работает sqlite те же что и у любой другой бд это оперативная память, файловая система и операционная система. В вот подходя у них разные. Так почему вы утверждаете что одно заведомо хуже другого? И кто сказал что в ближайшее время это не изменится?
                                                                                                +2
                                                                                                Если подходить строго — любая другая бд использует у же самую файловую систему. Так в чем разница?

                                                                                                Вы серьезно не понимаете, в чем разница между in-process БД (особенно в контексте веб-сервера, поднимающего процесс на каждый запрос), и БД в собственном процессе?


                                                                                                Пример тот же git кто бы мог подумать до его появления что можно без сервера обойтись в системе контроля версий?

                                                                                                То-то вы github используете.


                                                                                                Так почему вы утверждаете что одно заведомо хуже другого?

                                                                                                Потому что есть очевидные вещи, связанные с (а) кэшированием и (б) управлением конкурентным доступом, которые будут явно отличаться у самостоятельной СУБД и СУБД-в-запросе.

                                                                                                  +1
                                                                                                  В том что у sqlite реализовал другой подход он выкинул часть элементов которые посчитал ненужными

                                                                                                  Нет, разница в том, что SQLite писался под одни задачи, а, к примеру, PostgreSQL под другие. Тобишь авторы этого решения не взяли PostgreSQL, удалили из него все лишнее и получили SQLite. Они изначально знали, какими функциями и органичениями должна обладать их СУБД, и разрабатывали в этом контексте.
                                                                                                    +1
                                                                                                    Нечто новое… отбрасывающее старое… и противопоставляющее себя старому… делающее иначе… ведь так как все — никому не нужно. Так вы это видите да?
                                                                                                    А ведь я уже несколько раз вас носом мокнул в цифру 3. Мокну еще раз. Помимо sqlite3 есть еще sqlite4. Да ее стадия развития «немножко» другая. Но тем не менее. Не говорите за людей то чего они не говорили и не думали. Я серьезно считаю, что для бесплатных визиток и прочей мелочи — sqlite3 хороший выбор. Как и phar. Но вы несете такую ересь, что спорить с вашими оппонентами просто нет возможности)
                                                                                +1
                                                                                Размещенный в общей директории файл путь которого совпадает с системный будет являтся более приоритеным чем лежащий в phar архиве. Для изменения работы любого файла достаточно разсестить его измененную копию по такому же пути, что и в phar архиве. При этом он начитает работать сразу же. Подобным образом на сайт добавляются собственные шаблоны, собственные модели и даже основной файл ядра для изменения достаточно разместить index.php в директории проекта рядом с index.phar

                                                                                И что будет, если логика работы подменяемого файла изменится с выходом новой версии вашего движка?


                                                                                Аналогичный вопрос: а что будет, если вам надо изменить структуру БД?


                                                                                И да, что там у SQLite с параллельными обращениями? Например, если администратору захочется поменять десяток-другой страниц быстренько?

                                                                                  –2
                                                                                  Если надо менять структуру — она меняется. К примеру тут
                                                                                  https://github.com/mpak2/mpak.su/blob/master/index.php#L118

                                                                                  Логика работы уже не меняется лет пять. Не представляю ситуации чтобы она поменялась в дальнейшем.
                                                                                  С sqlite небольшой опыт работы. Все решения до этого момента были с mysql но в sqlite вижу определенные перспективы, поэтому решил попробовать. Будет положительный или отрицательный опыт обязательно поделюсь.
                                                                                    +3
                                                                                    Если надо менять структуру — она меняется. К примеру тут

                                                                                    А что в этот момент происходит с другими частями, которые используют эту таблицу?


                                                                                    Логика работы уже не меняется лет пять. Не представляю ситуации чтобы она поменялась в дальнейшем.

                                                                                    Это всего лишь значит, что вы пять лет никуда не развиваетесь. Тогда и обновляться незачем, чего уж.


                                                                                    С sqlite небольшой опыт работы.

                                                                                    А, то есть вы предлагаете решение, о работоспособности которого вы даже не знаете?

                                                                                      –1
                                                                                      Так как обновление идет одним файлов index.phar там уже идут все измененные части для новой структуры. А про пользовательские разделы система ничего не знает они расположены в файловой системе сайта и их система никогда не трогает. Их может поменять только сам разработчик. Это не совсем готовая цмс — скорее набор инструментов которыми можно реализовать практически любую логику. Создав новый модуль мы получаем новый раздел в админке со своей структурой бд, пространством имен и директорией со скриптами и шаблонами. По умолчанию устанавливаются только пять разделов от которых зависит работа самой системы.

                                                                                      Блоки, Модули, Пользователи, Настройки и СЕО раздел отвечающий за адресацию. То, что используется независимо от сайта. Дальше список функционала расширяется индивидуально исходя их требований сайта.
                                                                                        0
                                                                                        Так как обновление идет одним файлов index.phar там уже идут все измененные части для новой структуры. А про пользовательские разделы система ничего не знает они расположены в файловой системе сайта и их система никогда не трогает.

                                                                                        Я не про пользовательские разделы, я про описанное вами изменение работы системы.


                                                                                        Создав новый модуль мы получаем новый раздел в админке со своей структурой бд, пространством имен и директорией со скриптами и шаблонами.

                                                                                        … и как этот модуль поддерживать? На него же теперь не распространяется описанная вами простота-обновления-одним-файлом.


                                                                                        А что будет, если модуль использует функциональность, которую вы решили поменять?

                                                                                          0
                                                                                          Нет никакой функциональности. В адресе вы используете имя раздела и файла. А php файлы и шаблоны подключаются обычным инклюдом с небольшой обработкой. Все, что будут работать при обычном инклюде будет работать если положите это в директорию со своим модулем. Адресация тоже простая «http://имя-сайта.рф/имя-раздела: файл» есть еще адресация которая тоже подминяется, но на скрипты внутри раздела это никак не сказывается. Права доступа обрабатываются системой. Выдача 404 ошибки, динамическая генерация тайтлов и дескрипшнов все это система. Есть четкая грань между работой системы и скриптами раздела. Но эта грань очень четкая и никогда не пересекается. Модуль не берет на себя работу системы а система ничего не знает о том, что делает модуль.
                                                                                            +2
                                                                                            Нет никакой функциональности.

                                                                                            Тогда зачем нужна ваша система, если она не дает никакой функциональности?

                                                                                              0
                                                                                              А что будет, если модуль использует функциональность, которую вы решили поменять?

                                                                                              Нет функциональности которую можно было бы поменять. А функциональность самой системы я ниже описал.
                                                                                              Права доступа к скриптам, проверка стурктуры кодов, подсказка путей до шаблонов, учет посетителей история, Функциональность системы очень большая.
                                                                                                +1
                                                                                                Нет функциональности которую можно было бы поменять

                                                                                                То есть каждый модуль сам, как хочет, обращается в БД? Сам, как хочет, управляет своими правами? Использует свои и только свои способы отображения данных?

                                                                                  +2
                                                                                  А что умеет предлагаемая CMS?
                                                                                    –7
                                                                                    Легче сказать что она не умеет. Все задачи, которые ставятся мне в рамках разработки и продвижения решаются в рамках данной системы.
                                                                                    Я планирую время от времени подкидывать описания основных возможностей системы. Если меня конечно не сольют.
                                                                                    –1
                                                                                    Предлагаю хабросообществу тест. Есть сайт на котором я проводил последние изменения. Я изменил пароль администратора на admin admin в нутри в админке видно кто находится на сайте. Пишется каждоая сессия реферер, ip, заголовок браузера, количество посещенных страниц также все боты и метрики. Войти в админку можно здесь.

                                                                                    http://phar.mpak.su/admin

                                                                                    Список сессий можно посмотреть тут http://phar.mpak.su/sess:admin/r:mp_sess

                                                                                    Проверим сразу на хабронагрузке.
                                                                                      +2
                                                                                      на сайте Array посетителей

                                                                                      А говорите — нечему ломаться.

                                                                                        0
                                                                                        Я только что доделал этот блок. Его надо было добавить в админку. По умолчанию он там не стоит.
                                                                                          +1

                                                                                          Это много говорит о качестве того, что вы выкладываете — и как вы это делаете.

                                                                                            –6
                                                                                            У кода есть один существенный код — он работает.
                                                                                              +3

                                                                                              Ну, я своими глазами видел, что не работает. И ниже еще один замечательный скриншот.

                                                                                                +3
                                                                                                Блин, я вот прочитал все комментарии до этого момента и этот меня добил. Вы же реально не понимаете, что вам люди говорят…
                                                                                                Как можно говорить, что ваш код работает в ветке, где описан пример того, как он не работает… И, я уверен, это только один из огромного множества примеров.
                                                                                                То, что вы пока не столкнулись с серьёзными проблемами в вашем коде, не значит, что их там нет. Это лишь значит, что у вас, возможно, неадекватное определение серьёзности (ну array посетителей… и ладно, ничего страшного, не упало же ничего). Ну а отсутствие тестов вообще не позволяет вам делать никаких категоричных заявлений. Выше вот показали, что статический анализ IDE нашёл в вашем коде минимум 5 серьёзных ошибок.

                                                                                                И всё это не имеет никакого отношения к «играм» «студентов» с «новыми технологиями»…

                                                                                                Блин, вот зачем я всё это писал, я же видел, как вы на комментарии реагируете…
                                                                                                  +1
                                                                                                  можно еще примерчик работы и неломательности?
                                                                                                  joxi.ru/J2bNXagI4bXJ82
                                                                                                    0
                                                                                                    Что же вы на парня так все накинулись?) А вдруг он скоро напишет, например, убийцу Битрикса, которую все люто поносят, но от этого она не становится менее популятной и востребованой на рынке)
                                                                                                      –2
                                                                                                      Я утром уже написал убийцу Битрикса. Потом спустил воду…
                                                                                          +2

                                                                                          Не знаю, что я сделал, но как-то так. http://screencloud.net/v/oDo2
                                                                                          PS. Обновил скриншот.

                                                                                            0
                                                                                            http://joxi.ru/brREnpzUQDJboA
                                                                                            0
                                                                                            admin/admin не подходит. Но это ладно. Мне никаких сообщений не выводит.
                                                                                            Пустая форма тоже не показывает ошибок мол нет логина, неверный пароль и.тп.
                                                                                            +9

                                                                                            <irony>Однажды я написал в комментах, что Битрикс — это самое плохое, что могло случиться с миром PHP. Как же я был тогда наивен...</irony>


                                                                                            А если по теме, пока я ещё жив и не покончил жизнь самоунынием, напишу очередную и довольно тривиальную мысль:


                                                                                            Ваше бы шило (в хорошем смысле), да в нужное русло. Такое количество кода, причём зачастую совершенно бессмысленного (который заменяется одной встроенной в php функцией — https://github.com/mpak2/mpak.su/blob/master/include/utf-8.inc или строчкой в composer.json https://github.com/mpak2/mpak.su/blob/master/modules/sess/class/geo.php). В чём причина переписывать это?


                                                                                            Велосипеды — это конечно хорошо, но делать их надо в разумных пределах.

                                                                                              –4
                                                                                              Это не мой код. Я бы не стал писать ничего похожего. Код был взял с откуда то с форума.
                                                                                              И если посмотрите скрипт который собирает phar архив то данный кусок кода в него не входит

                                                                                              https://github.com/mpak2/mpak.su/blob/master/phar/mpak.php#L31
                                                                                                +2

                                                                                                Если этот код входит в ваше решение — то вы за него отвечаете, вне зависимости от того, откуда вы его взяли. Если не входит — что он делает в репозитории?

                                                                                                  –3
                                                                                                  Он входит в портальную систему, но не входит в фар архив. Я вам показал скрипт по которому он собирается. В репозитории есть несколько скриптов и файлов которые несут администраторскую функцию. Обязуюсь разобраться с этим скриптом в ближайшее время. И удалить его если он нигде не используется. Спасибо вам за бдительность.
                                                                                                    0

                                                                                                    О, то есть помимо решения из одного файла, которое вы предлагаете, есть еще и какая-то "портальная система" с "администраторской функцией"? И как это соотносится друг с другом?

                                                                                                      –3
                                                                                                      Там много чего есть. Быстрая установка это лишь конкретное решение. До этого все работало на mysql и без фара.
                                                                                                      Немного доработав получилось удачное решение для быстрой установки. Его описание и представил в статье.
                                                                                                        +2
                                                                                                        Там много чего есть. Быстрая установка это лишь конкретное решение. До этого все работало на mysql и без фара.

                                                                                                        То есть то решение, которое, по вашим словам, давно работает у ваших заказчиков — это не то же, которое вы здесь предлагаете?

                                                                                              –8
                                                                                              Зацените такую шткуту, является моей разработкой и ничего подобного я не видел в других системах

                                                                                              Если авторизоваться администратором, система показывает файл из которого выводится верстка

                                                                                              < !-- Начало: phar:///srv/www/vhosts/phar.mpak.su/index.phar/modules/pages/index.tpl — >
                                                                                              Бла бла какой то код шаблона
                                                                                              < !-- Окончание: phar:///srv/www/vhosts/phar.mpak.su/index.phar/modules/pages/index.tpl — >

                                                                                              Сделал специально для вертальщика, так как возникали сложности с поиском файлов верстки
                                                                                                +7

                                                                                                Laravel 5+:


                                                                                                // Provider. Подключаем код композера к любой вьюшке системы
                                                                                                $views->composer('*', PathShareComposer::class); 
                                                                                                
                                                                                                // PathShareComposer. Расшариваем переменную со значением пути
                                                                                                $view->with('path', $view->getPath());
                                                                                                
                                                                                                // Template. Выводим
                                                                                                {{ $path }}

                                                                                                3 строчки кода для реализации функционала. А ещё проще посмотреть в дебагбаре, который ставится двумя строчками.

                                                                                                  0

                                                                                                  В asp.net MVC это делается тривиально.

                                                                                                    0
                                                                                                    Возможно, я немного не понял вашу концепцию. Вы изобрели шаблонизирование?
                                                                                                      0
                                                                                                      Не совсем. Это попытка сделать мир проще.
                                                                                                      Концепция состоит в следующем. На любой хостинг в директорию вы закидываете три файла и все.
                                                                                                      Заходите на сайт и все работает. Это немного упрощает работу с установкой, резервным копированием и исправлением ошибки в случае поломки сайта. У вас нет конфигурационных файлов — они не нужны. Вы можете запустить сайт на хостинге в случае ограниченного количества mysql баз данных более того вам человеку разварачивающего сайт не требуется каких то специальных знаний о базах данных то, без чего сегодня вы не установите ни один сайт.

                                                                                                      Сайт превращается в аналог ексель документа который открть можно на любом компьютере. Требования к его инфраструктуре сокращаются на порядок.
                                                                                                        +1

                                                                                                        Вот прямо на любой хостинг?


                                                                                                        А вообще, в современном мире, внезапно, можно вообще ничего не "закидывать на хостинг", а просто открыть эккаунт на одном из десятков сайтоконструкторов и получить сайт.

                                                                                                          0

                                                                                                          Нет конечно, на 99% хостингах оно просто не заработает, напрмер из-за <? в качестве открывающего тега, вместо стандартного <?php.

                                                                                                            0
                                                                                                            На 99% таки заработает. Его специально отключать надо. В PSR оно запрещено из соображений что МОЖНО отключить. А <?= отключить УЖЕ нельзя, так что его приняли. Но замечание да, в тему.
                                                                                                              0

                                                                                                              И действительно:
                                                                                                              https://github.com/php/php-src/blob/master/php.ini-development#L202
                                                                                                              https://github.com/php/php-src/blob/master/php.ini-production#L202


                                                                                                              C другой стороны может вы и правы, кто знает этих хостеров. Я последний раз лет 5 назад встречал скрипты с шорт-тегами, которые запускал, так что в этом плане уверенно отстал от жизни.

                                                                                                                0
                                                                                                                Default Value: On

                                                                                                                И на практике на дюжине хостингов ни разу такие скрипты проблем не доставляли.
                                                                                                                Да, рекомендуют во избежание редких проблем запрещать, если оно реально не нужно.
                                                                                                                Но на практике чаще бывает что клиент использует шорты чем проблемы от шортов. А шаредхостинги стандартно под массового клиента заточены.
                                                                                                                Я реально пока с полгода назад на эту тему не подискутировал с SamDark где-то, был в твердом заблуждении что у этих шорт такая же судьба как у <?= и они уже везде стандартно есть и всё такое, и запрет на них анахронизм который приходится поддерживать ради совместимости со стандартами кодирования. СамДарк меня просвятил тогда что это не так, а благодаря Вашей ссылки я теперь знаю почему они так делают)
                                                                                                                  0

                                                                                                                  Default Value может быть какой угодно, но ниже написано что short_open_tag = Off


                                                                                                                  Практически пример: устанавливаете Debian stable, подключаете PHP… <? echo "Hi"; ?> уже не работает. То есть, чтобы заработало нужно явно дописывать конфиг.

                                                                                                                    0
                                                                                                                    Ок, с этим в принципе соглашусь, но в практическом смысле — везде работает.
                                                                                                                    Хостеры нарушают рекомендации потому что клиенты нарушают, а клиенты нарушают потому что «ну работает же, чего бы и не использовать?»
                                                                                                    –6
                                                                                                    Или вот еще. Система проверяет вложенность тегов друг в друга прямо на сайте
                                                                                                    И при нарушении вложенности тегов в друг друга выводится сообщение
                                                                                                    Показывает путь до файла с нарушенной версткой а также последний тег на котором найден сбой.

                                                                                                    http://phar.mpak.su/pages:test Учитывается вложенность php тегов друг в друга
                                                                                                      0
                                                                                                      haml спасёт этот мир.
                                                                                                      +8
                                                                                                      Ого, сколько комментов накатали. Пробегитесь глазами по комментам автора, это же просто троллинг.
                                                                                                        0
                                                                                                        На хабре сейчас неделя однофайловых фреймворков. Если бы он был один такой, я бы поверил что это троллинг. Но нет, он всерьез)
                                                                                                          0
                                                                                                          Возможно это то, что всех беспокоит. Боль которая ждет когда ее решат?
                                                                                                            0
                                                                                                            Нет.
                                                                                                              0
                                                                                                              Позволю себе процитировать чужие слова

                                                                                                              Людям нет никакого смысла иметь дома компьютер – Кен Олсон, президент, председатель и основатель Digital Equipment Corporation (DEC), в своей речи, данной на встрече общества World Future Society в 1977 году в Бостоне
                                                                                                                +4

                                                                                                                И — в отношении некоторых людей — он полностью прав.

                                                                                                                  0
                                                                                                                  Если бы вам задать тот же вопрос сегодня вы ответили бы также?
                                                                                                                  Время идет, а мнение некоторых людей на вещи не меняется. Может в этом проблема?
                                                                                                                    0
                                                                                                                    Если бы вам задать тот же вопрос сегодня вы ответили бы также?

                                                                                                                    А какой вопрос был задан?


                                                                                                                    Может в этом проблема?

                                                                                                                    Проблема обычно в том, что люди не хотят думать и развиваться.

                                                                                                        +2
                                                                                                        Осталось сделать Telegram бота, который будет создавать сайты.
                                                                                                        • UFO just landed and posted this here
                                                                                                            +7
                                                                                                            https://github.com/mpak2/mpak.su/blob/master/index.php, строка 119: }else{ pre(«Ошибка обработки ошибки», $error); };

                                                                                                            А что если возникнет ошибка обработки ошибки обработки ошибки? ;)
                                                                                                              +1
                                                                                                              Возможно стоит посоветовать www.phptherightway.com
                                                                                                              И книгу Head First Design Patterns.
                                                                                                                0

                                                                                                                Как показывает практика — большинство таких советов игнорируется в лоб, ну или отклоняется с аргументацией "Эти рекомендации никому не нужны, надо писать код, а не чистоту разводить", ну или "Мой код всё равно быстрее (<irony>на 0.00001</irony>) вашего работает", ну и так далее. Будет чудом, если эта ссылка действительно поможет автору выбраться из "зоны его комфорта".


                                                                                                                P.S. mpakep — по ссылке выше написаны действительно полезные вещи, крайне рекомендую всё же постараться ознакомиться. Если возникнут вопросы — с удовольствием готов ответить (и не только я) на Тостере.

                                                                                                              0
                                                                                                              https://github.com/mpak2/mpak.su/blob/master/index.php#L15 о великий Ктулху, что это?
                                                                                                              и это в ту же кучу
                                                                                                              Вообще обожаю упоротые посты про самописные cms, особенно когда люди вместо того, чтоб взять и установить большую часть через composer долго, упорно и коряво делают свою реализацию, при этом забивая болт на PSR и юнит-тесты, смешивая запросы к базе или обертки над этим с логикой, в особо запущенных случаях не используют неймспейсы, и свято веруют, что такой подход вознаградит хорошей скоростью, быстротой разработки и тем, что запустить можно будет везде.
                                                                                                                0
                                                                                                                Сколько коммитов :)
                                                                                                                Все реально
                                                                                                                  –3
                                                                                                                  Года три назад я работал в одной из студий. И там установил их разработку себе на четырехядерный комп. После первый минут работы заметил что система серьезно притормаживает, при этом приходилось после каждого изменения чистить кеш так как без кеширования одна страница в однопользовательском режиме отображалась еще дольше от 10 до 20-25 секунд. При попытке что то изменить главным аргументом было ты не придерживаешься концепции ООП у тебя не идеалогически правильный код.

                                                                                                                  А ведь все верно. И работает быстро, и запускается везде. И кеш нет необходимости использовать так как и без него все работает отлично и чистить не приходится после каждого изменнеия. Этот тот мир про который большая часть людей уже забыла. Обычной практикой стало под один сайт с одной цмс выделять отдельный сервер потому что иначе оно не работает, слишком много сжирают накладные расходы.

                                                                                                                  Наш разговор похож на беседу сектантов из разных сект.

                                                                                                                  — Ты должен прочитать первый том нашей книги тогда тебе откроется пусть праведный.
                                                                                                                  — Выбери себе наставника и пусть он тебе расскажет про наших богов.
                                                                                                                  — Больше посещай мероприятия где наши идеологи расскажут тебе о том кому надо покланаться.

                                                                                                                  Считайте меня старовером. Я поклоняюсь ветру и солнцу, деревьям и огню. Всему тому что вижу в своей повседневной жизни и что позволяет мне охотится и добывать себе еду. Многие сегодняшние «модные практики» уйдут как уже было не один десяток раз. А воздух с солнцем останется.

                                                                                                                  Между тест хаброэффектом прошел вполне себе удачно. За сутки то, что по утверждению многих тут даже работать не должно было посетил 601 посетитель

                                                                                                                  авторизованных: 73 — линукса, 146 — виднузов, 23 — мобьльных устройства и 1 — неопределен.
                                                                                                                  неавторизованных: 38 — линуксов, 129 — виндузов, 42 — мобильных и 1 — неопределен.
                                                                                                                  боты: 3 — Googlebot-Image/1.0, 7 — Mail.RU_Bot/2.0, 10 — Googlebot/2.1

                                                                                                                  http://phar.mpak.su/pages:img/null/screen.png
                                                                                                                    +1
                                                                                                                    От ваших выводов становится только смешней.

                                                                                                                    Ваша cms это ужасный и недокументированный код, который кое как работает.

                                                                                                                    600 человек в сутки))))))
                                                                                                                      +3
                                                                                                                      И работает быстро, и запускается везде.

                                                                                                                      Вот только вы не можете ответить на банальные вопросы "действительно ли везде работает", "насколько быстро быстро" и "сколько стоит это поддерживать".


                                                                                                                      Между тест хаброэффектом прошел вполне себе удачно. За сутки то, что по утверждению многих тут даже работать не должно было посетил 601 посетитель

                                                                                                                      Вы, кажется, не знаете, что такое хабраэффект.

                                                                                                                        0

                                                                                                                        (del)

                                                                                                                          0
                                                                                                                          Вы забыли про безглючность :)
                                                                                                                          То что при объемах меньше 10к в сутки смотрят только на колво трафика в тарифе, и ни о какой производительности речь не идет — это понятно. Самое веселое что человек ВСЕРЬЕЗ считает что оно «нагрузку» ВЫДЕРЖАЛО.
                                                                                                                            0

                                                                                                                            Для меня "безглючность" включена в "сколько стоит поддерживать".

                                                                                                                              –3
                                                                                                                              В том что оно запустилось и работает вы уже не сомневаетесь? Так смотришь и кто сопровождать будет найдется. Окно Овертона открывается…
                                                                                                                                0
                                                                                                                                В том что оно запустилось и работает вы уже не сомневаетесь?

                                                                                                                                Define "работает".

                                                                                                                                  +2
                                                                                                                                  Вы можете выложить ссылки на проекты, сделанные на вашем движке?
                                                                                                                                    0
                                                                                                                                    Первый нашел — http://специальный.рф/ )
                                                                                                                                      0

                                                                                                                                      … ну и я там, не напрягаясь, влетел в ошибку.

                                                                                                                                        0

                                                                                                                                        http://специальный.рф/admin


                                                                                                                                        Сайт в продакшне. С аутентификацией на формах. Без https.


                                                                                                                                        Ага.

                                                                                                                                          0
                                                                                                                                          Я правильно понимаю что это сплог/дорвей?
                                                                                                                                        0
                                                                                                                                        Я не сомневаюсь что оно НЕ работает.
                                                                                                                                        Эпл в качестве MVP использует металические/пластиковые болванки. Они тоже «работают».
                                                                                                                                        Но если я не смог авторизоваться и при этом не получил сообщений об ошибках, а люди увидели кучу ошибок пхп в браузере, то это не более чем пруф оф концепт. И да, lair лучше я возьму пауерпоинт чем такое :)
                                                                                                                                    0
                                                                                                                                    601 посетитель — это мелочи. Можно сказать, что трафа совсем и не было.
                                                                                                                                    Для сравнения: top.mail.ru/visits?id=152591 — проект «недвижимость» у мейлрушечки, написан на PHP с использование фрейворка (не собственного, а «нормального»), 100--200 тысяч визитов в сутки, а хитов от полумиллиона. И это не самый нагруженный сайт.
                                                                                                                                    (з.ы. я не работаю в этом проекте)

                                                                                                                                    Попробуйте, всё-таки, потестировать ab'шкой? Если ваш сайт выдержит хотя бы 1050 хитов за полчаса (50 тысяч в сутки) с конкурентностью не менее пяти, то признаю, что ваше решение годное.
                                                                                                                                      0
                                                                                                                                      Так он и 600 не выдержал. Критерий «выдержал» это отсутствие глюков.
                                                                                                                                        –1
                                                                                                                                        До полноценного годного решения этому еще далеко. Я выше писал что буду ставить на выборочные проекты в качестве теста. Мне интересна была сама возможность работы подобных систем.
                                                                                                                                          0
                                                                                                                                          До полноценного годного решения этому еще далеко

                                                                                                                                          Тогда на основании чего вы говорите, что оно "работает"?

                                                                                                                                            +1
                                                                                                                                            Я думаю обоснование простое:
                                                                                                                                            10 let РАБОТАЕТ = TRUE;
                                                                                                                                            20 if РАБОТАЕТ <> TRUE then goto 10;
                                                                                                                                            
                                                                                                                                              0
                                                                                                                                              Это на каком языке?
                                                                                                                                                0
                                                                                                                                                Basic
                                                                                                                                                  0
                                                                                                                                                  В Бейские нет завершения строки в виде точки с запятой, особенно в старье, требующем let и нумерации строк.
                                                                                                                                                  Я чисто из любопытства спросил — может, просто малоизвестный вариант.
                                                                                                                                                    0
                                                                                                                                                    Да, бейсик, бейсик. Скорее всего моя ошибка. Хотя может и было где-то.
                                                                                                                                      +1
                                                                                                                                      Может автор тролль всё же? Наткнулся на забавную репу и от лица автора здесь всех троллит. Предлагаю автору сделать коммит с текстом про хабрхабр, если коммита не будет, предлагаю считать автора троллем.
                                                                                                                                      0
                                                                                                                                      Чувствую, затравят автора. Чем дальше, тем больше пустой желчи и меньше дела.
                                                                                                                                        0
                                                                                                                                        Ну автор по делу тоже не особо отвечает.
                                                                                                                                          –1
                                                                                                                                          Травители… :)
                                                                                                                                            0
                                                                                                                                            Может вы чужое творчество себе присвоили и троллите здесь всех?
                                                                                                                                          0
                                                                                                                                          Кто то упорно пытается подобрать инжекцию

                                                                                                                                          sqlite> SELECT * FROM mp_pages_cat
                                                                                                                                          1|1||Категория
                                                                                                                                          2|2||
                                                                                                                                          3|1|fdgsfgdfg|fdgfgsdfgs
                                                                                                                                          6|1|это тег|тест
                                                                                                                                          11|1|ghgh|ghghgh
                                                                                                                                          15|2|Hey|Hey24|1|sdf|sdf
                                                                                                                                          29|||
                                                                                                                                            +1
                                                                                                                                            http://phar.mpak.su/pages:admin/r:mp_pages_cat/p:1

                                                                                                                                            нашли чем гордиться)
                                                                                                                                              0
                                                                                                                                              Чувак, я нашел твое призвание. Тебе нужно обфускатором работать.)
                                                                                                                                              А по теме «меня ломают» — XSRF вроде как. Правда могу ошибаться, там что-то страшное возле формы пряталось, я испугался и решил дальше не смотреть…
                                                                                                                                              –2
                                                                                                                                              Дайте я попробую задать вопрос. Вот к примеру выше собеседник поместил кусок кода в говнокод. Речь об этом http://govnokod.ru/19971

                                                                                                                                              Хотел бы спросить сколько людей из вас понимают что в нем делается. Реально интересно знать сколько таких. Напишите свои версии.
                                                                                                                                              • UFO just landed and posted this here
                                                                                                                                                  +1
                                                                                                                                                  Эм…
                                                                                                                                                  Походу тут нужно использовать «модную технологию» для расшифровки — гадание на картах Карно.
                                                                                                                                                  Иначе эту обфускацию не прочитать.
                                                                                                                                                    +4

                                                                                                                                                    А вы правда не понимаете, что то, что по коду нельзя понять, что в нем делается — это недостаток кода?


                                                                                                                                                    Я вот не понимаю, что делается в вашем коде. Нет, если мне понадобится, я разберусь, конечно — только зачем?

                                                                                                                                                      +1
                                                                                                                                                      В этом и вся проблема, что таких, кто бы разобрался в этом куске кода — единицы. Особенно ради интереса, а не по рабочей задаче. Именно поэтому столько людей писали о паттернах, psr и многом другом.

                                                                                                                                                      То, что Вы, автор, разбираетесь в том, что там написано, не говорит о Вас, как о профессионале своего дела — просто Вы потратили N часов на его разработку и M часов — на поддежрку. А новый человек в этом даже не захочет разбираться.
                                                                                                                                                        +1
                                                                                                                                                        Да! Ключевое слово — не захочет!
                                                                                                                                                        Есть простой способ понять говнокод — переписать его.
                                                                                                                                                        Разрезаем на кусочки, делаем вспомогательные методы и тп.
                                                                                                                                                        Говнокод сохраняется, но проявляется структура.
                                                                                                                                                        Вот только зачем?
                                                                                                                                                        +2
                                                                                                                                                        Вот что получилось — https://gist.github.com/pldin601/a441ffacaeec6c43e0ff3830c12bab77

                                                                                                                                                        Чтобы прочитать и понять Ваш код мне пришлось сделать его более линейным. Из того, что я понял за 30 минут, могу сказать, что в Вашем коде делаются очень разные вещи). Я тоже любитель писать свои велосипеды. Примерно так я начинал писать свои первые проекты. Но у меня небыло каких-то особых убеждений и я часто все переписывал с нуля поэтому с каждым разом код становился все проще и проще. У Вас, видимо, это первый крупный проект поэтому Вы им так гордитесь. Я когда-то в школе года 2 писал «убийцу WinAmp'а». Мне тогда казалось это гениальным. Что не функция то — шедевр))
                                                                                                                                                          –4
                                                                                                                                                          Каждый раз сообщая ошибку к примеру в строке 63 ваш код будет продолжать работать. А это не нужно чтобы происходило.
                                                                                                                                                          Выход тут тоже не уместен так как все работа скрипта должна дойти до конца. То, что вы сделали это не то что требовалось

                                                                                                                                                          На каждом увовне не зря стоит иф. Он проверяет условия для дальнейшей работы и при невыполнении выдает ошибку.

                                                                                                                                                          Сейчас вы не сделали его понятнее. Вы его испортили. Он не будет работать. Попробуете еще раз?
                                                                                                                                                            +1
                                                                                                                                                            То, что вы сделали это не то что требовалось

                                                                                                                                                            О, у нас началось обсуждение того, что "требовалось". А где требования? Или хотя бы тесты, по которым можно определить требования?

                                                                                                                                                              +2
                                                                                                                                                              В таком случае return после mpre. Я предположил что Ваша функция mpre использует исключения для выброса ошибок.

                                                                                                                                                              О каком конце идет речь? В Вашем коде здесь http://govnokod.ru/19971 после отработки крайнего блока else ничего нет.

                                                                                                                                                              Я же делал это не для того чтобы Вам угодить, а чтобы попытаться разобраться. Спортивный интерес.
                                                                                                                                                              Пробовать дальше не интересно :)
                                                                                                                                                                +1

                                                                                                                                                                Более того, мы же понимаем, что для имитации "нужного" поведения достаточно завернуть всю эту бороду в одну функцию и делать return из нее. Что там после нее вызывает скрипт — не наше дело.

                                                                                                                                                          –7
                                                                                                                                                          То есть небольшое отклонение от шаблонов и никто не способен понять что здесь написано.

                                                                                                                                                          Так кто находится в зоне комфорта? Кому надо выбраться из нее и попробовать разобраться в том, что не соответствует его шаблонам?
                                                                                                                                                          Ведь проще всего крикнуть что говно то, в чем я не разобрался. Если написано не по книжке которую я прочитал последней или используя другой подход не как тот к которому привык. Зачем мне разбираться? Я и без этого знаю что это все говнокод!

                                                                                                                                                          Судя по комментариям у людей проблема восприятия того, где больше трех ифов. С такими темпами мы придем к проблеме восприятия того, где больше двадцати строк. Вы действительно правы. Поддерживать у вас это не получится. Для этого надо приложить усилия и разобраться в том, что здесь написано. А это судя по всему неподъемная для некоторых задача.

                                                                                                                                                          Задумайтесь. Думающие люди в обществе пяти идиотов становятся изгоями. Идиоты просто лайкать будут только то, до чего дотягивается их умишко. Все что им не под силу будут отвергать как слишком сложное. Я не стану тратить N часов чтобы разобраться в этом. Патерн — оторвать бумажку, подтереться. Рулон закончился — разрыв патерна. Это к вопросу о 95 процентов населения. Извините что редко пишу. Нет возможности это делать чаще. Похоже для среднестатистического населения то, о чем говорю также трудно для восприятия как и код в котором вы так и не смогли разобраться.
                                                                                                                                                            0

                                                                                                                                                            Разобраться можно, только это рутина и требует довольно много времени. Другой вопрос — зачем так писать, чтобы в этом, для того, чтобы понять — требуется тратить столько времени? ;)


                                                                                                                                                            Для примера:


                                                                                                                                                            // Вместо
                                                                                                                                                            if ($a && $b === $c && $d !== $e || $f !== $a && $b !== $g) {
                                                                                                                                                                // ...
                                                                                                                                                            }
                                                                                                                                                            
                                                                                                                                                            // Писать
                                                                                                                                                            $isValidSome = $a && $b === $c && $d !== $e;
                                                                                                                                                            $isValidAny = $f !== $a && $b !== $g;
                                                                                                                                                            
                                                                                                                                                            if ($isValidSome || $isValidAny) {
                                                                                                                                                                // ...
                                                                                                                                                            }

                                                                                                                                                            Неужели вот такую "модную штуку" — сложнее написать ради того, чтобы сторонний читатель сразу понял что обозначают эти условия?

                                                                                                                                                              0

                                                                                                                                                              P.S. Избавление от переносов строк (некоторых, мы же не хотим лишать полностью код читаемости?) и пробелов во всём вашем коде — добавит элитарности, да такой, что в нём начнут разбираться и "выходить из зоны комфорта" ещё меньше людей. Как же вы раньше до этого не додумались? Смотрите как здорово! https://gist.github.com/SerafimArts/2bc70b28c086552057d1831ffb47bff6


                                                                                                                                                              Если вы не поняли что написано в файле "после", то у вас "проблемы восприятия кода, где больше трёх ифов (с)"

                                                                                                                                                                0
                                                                                                                                                                И в экран намного лучше помещается.
                                                                                                                                                              +2
                                                                                                                                                              Естественно это мы такие хилые программисты, что даже не можем понять вашего 11 лвлного вложения if'ов.
                                                                                                                                                                +3
                                                                                                                                                                Вынужден вас расстроить, если вы не троллите, но в зоне комфорта находитесь как раз к сожалению вы. И вызовы вы ищете не в том месте.
                                                                                                                                                                  +3
                                                                                                                                                                  Почитайте статью по ссылке. Как говорил дядюшка Фаулер, «Любой дурак может написать код, понятный компьютеру. Хорошие программисты пишут код, понятный людям.». Неужели вы, когда писали подобное, ни разу не подумали, что где-то повернули не туда и что можно было сделать проще или просто понятнее?
                                                                                                                                                                    +3
                                                                                                                                                                    Еще раз повторю, как для олигофренов:
                                                                                                                                                                    час моего времени стоит 25$.
                                                                                                                                                                    я присылаю свой код знакомому с ценой часа в 50$ с просьбой оценить.
                                                                                                                                                                    Он посмотрел код за 15 минут, подсказал ошибку и посоветовал оптимизацию.
                                                                                                                                                                    Ему не сложно, ведь вчера я ему подсказал репозиторий morozovsk чем сэкономил ему пару дней которые он бы писал сервер сам. Я сэкономило время ему потому, что можно за 15 минут вдумчиво изучить документацию и еще за 15 минут изучить код. И принять решение что в случае чего его можно поддерживать самому. После чего мой знакомый форкнул репу, и «завтра» сделает пару пулреквестов с теми фичами которых ему не хватало.
                                                                                                                                                                    «Послезавтра» мне тоже понадобится вебосет-сервер, тоже с теми фичами что сейчас понадобились моему знакомому, и я получу уже готовый код.
                                                                                                                                                                    Все в выигрыше. Это и есть современная мода которая вам так не нравится.

                                                                                                                                                                    А что предлагаете вы? Вы предлагаете потратить 5-10 часов на чтение кода который делает тоже самое что делал мой код который можно прочитать за 15 минут. При этом заранее известно что найденные после этого ошибки исправляться не будут, потому что ни одной названной вам здесь ошибки вы даже не признали, не то чтобы исправить. Вопрос — зачем?
                                                                                                                                                                    Нет, некоторые тут читают ваш говнокод из спортивного интереса. Некоторые чтобы показать другим, поржать. Другие чтобы тыкать носом в это Г. учеников, чтобы те поняли почему их заставляют писать грамотно…

                                                                                                                                                                    Черт, это же как нужно нас неуважать, чтобы самому лениться разбивать код по 20 строк и до трех уровней вложенности (большего от вас и не ждут), а ожидать что КАЖДЫЙ кто прочитал это — будет расшифровывать вашу лапшу…
                                                                                                                                                                      +1
                                                                                                                                                                      То есть небольшое отклонение от шаблонов и никто не способен понять что здесь написано.

                                                                                                                                                                      Не "не способен", а "не хочет тратить время".


                                                                                                                                                                      Так кто находится в зоне комфорта?

                                                                                                                                                                      Ну да, я нахожусь в зоне комфорта. И, что характерно, горжусь и доволен тем фактом, что я работаю в зоне комфорта. А что, должно быть иначе?


                                                                                                                                                                      Кому надо выбраться из нее и попробовать разобраться в том, что не соответствует его шаблонам?

                                                                                                                                                                      Да в том-то и дело, что не надо. Кому было настолько интересно — те пошли, посидели и разобрались, но никому это не надо — потому что, к счастью, практически никому не надо по работе иметь дело с таким кодом.


                                                                                                                                                                      Зачем мне разбираться?

                                                                                                                                                                      Именно. Зачем?


                                                                                                                                                                      Судя по комментариям у людей проблема восприятия того, где больше трех ифов.

                                                                                                                                                                      Ну да, объем воображаемого стека в голове у людей ограничен. Для вас это новость? У вас он тоже ограничен.


                                                                                                                                                                      Вы не понимаете простой вещи: любой хороший программист может написать код, подобный вашему. Не будет, потому что его учили (или он сам научился) так не делать, но может. Но вот можете ли вы написать хорошо структурированный и читаемый (в терминах МакКоннела) код?

                                                                                                                                                                        0
                                                                                                                                                                        вещи: любой хороший программист может написать код, подобный вашему

                                                                                                                                                                        Я видимо плохой программист. Я не могу писать такой влажный (wet) и нечитаемый код. Хотя гены говнокода во мне живут прочно, но мне не хватит усидчивости на ТАКОЕ количество абсолютно бесполезной работы.
                                                                                                                                                                        Вот реально не могу. Сейчас сижу и прокрастинирую тут, когда нужно заставить себя и писать подобный говнокод чтобы закончить очередной проект с адским легаси, и в очередной раз поклястся себе что «да больше никогда, и ни за какие деньги я таких заказов не возьму»… Ну да ладно, побольше воздуха в легкие, начинаю погружение в фекалии) Ушел работать…