Хотелось бы поделится собственным велосипедом.
Залогом успеха в любой профессии в наше время является максимальная оптимизация производственного процесса. Но есть вещи которые стали стандартом в определенной сфере. Работа с ними требует долгого изучения и продолжительной практики. Одной из таких слабых мест веб разработки является база данных. Сопровождение и администрирование вносит огромные накладные расходы тем временем в подавляющем большенстве проектов функционал баз данных остается не востребованным. Как привлекательно совместить простоту работы с файлами, гибкость и функционал реляционных баз данных. Как хочется свести создание резервной копии базы данных к простому копированию одного единственного файла.
В момент установки сайта время для него замирает. Большая часть сайтов никогда не обновится. Обновление программного обеспечения становится нетривиальным делом которое легче каждый раз откладывать, чем запустить обновление и неделю потратить на поиск ошибок обновления и обяснения заказчику причин простоя. Если код ядра или часть файлов были модифицированны в процессе работы обновление становится невозможным.
Простота установки, сопровождения и обновления сайта стала задачей нашей дальнейшей разработки. Сделать процесс запуска сайта простым даже для человека ничего не знающих о базах данных, портах подключения и паролей доступа. Свести обновление к копированию одного файла и созданию резервной копии до нажатиу кнопок копи паст.
Для решения поставленной задачи отлично подошли два решения. В качестве хранения данных была выбрана бд 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
К сожалению в рамках комментарий не удается озвучить все интересующие темы. Контакты для общения сможете найти в вышестоящей ссылке.
Залогом успеха в любой профессии в наше время является максимальная оптимизация производственного процесса. Но есть вещи которые стали стандартом в определенной сфере. Работа с ними требует долгого изучения и продолжительной практики. Одной из таких слабых мест веб разработки является база данных. Сопровождение и администрирование вносит огромные накладные расходы тем временем в подавляющем большенстве проектов функционал баз данных остается не востребованным. Как привлекательно совместить простоту работы с файлами, гибкость и функционал реляционных баз данных. Как хочется свести создание резервной копии базы данных к простому копированию одного единственного файла.
В момент установки сайта время для него замирает. Большая часть сайтов никогда не обновится. Обновление программного обеспечения становится нетривиальным делом которое легче каждый раз откладывать, чем запустить обновление и неделю потратить на поиск ошибок обновления и обяснения заказчику причин простоя. Если код ядра или часть файлов были модифицированны в процессе работы обновление становится невозможным.
Простота установки, сопровождения и обновления сайта стала задачей нашей дальнейшей разработки. Сделать процесс запуска сайта простым даже для человека ничего не знающих о базах данных, портах подключения и паролей доступа. Свести обновление к копированию одного файла и созданию резервной копии до нажатиу кнопок копи паст.
Для решения поставленной задачи отлично подошли два решения. В качестве хранения данных была выбрана бд 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
К сожалению в рамках комментарий не удается озвучить все интересующие темы. Контакты для общения сможете найти в вышестоящей ссылке.
Поделиться с друзьями
zenn
Решил значит изучить ваш «код» на пригодность и открыл точку входа… в ваше приложение/cms… после чего у меня волосы на
задницеголове встали дыбом и я пошел мыть глаза с мылом…Если без эмоций — так программировали в 2001-2005 годах на php 4 — я не знаю в силу каких обстоятельств вас заставляют делать то же самое, когда за окном виден composer, mvc, psr-*, symfony, yii2, laravel и другие прекрасные вещи… Попробуйте добавить ваш проект в scrutinizer или другой CI и посмотрите на качество кода.
Temirkhan
It was at this moment Nathan knew he f%#@ed up…
Я тоже опрометчиво открыл index.php
yara_73
Мне всегда казалось, что MVC и OOD довольно старая штука, а по коду: все весьма печально
SerDIDG
Название "мрак" описывает само себя )
mmjurov
А комментирующие «мракоборцы», значит
SerDIDG
SerDIDG
А за что минусы то? ) На фото мракоборцы из гп. Или тут гп не в почёте?
roman_gemini
Так часто бывает, например, когда человек живет в маленьком городке, вдали от комьюнити. Видимо среди своих знакомых-родственников-заказчиков он — гениальный программист-самоучка. Начал писать свою CMS до того как взялся изучать PHP. Вероятно не пользуется IDE и не слышал даже о вышеперечисленных прекрасных вещах.) Небыло конструктивной критики в нужное время — вот результат. Я уверен, мы тут все сумасшедшие для него, пишем какие-то странные вещи, издеваемся над ним. Не можем оценить проделанный им титанический труд).
Mendel
Я лет 10 назад так переходил из мира бейсика-ассемблера в мир ОПП.
Реально на долго застрял в районе функцинальщины между паскалем и вижуалбейсиком.
Вроде и Си был не пустым звуком, и теоретически классы, объекты, наследование — слышал. Но дошло лет через пять только.
Велосипедов настроил… И да, все вокруг казались идиотами)
Зато сейчас пишу с оглядкой на меня тогдашнего.
gearbox
я на этой волне на php в свое время написал парсер/транспилер highlight файлов от vim, для подсветки кода на форумах (он у меня уже даже сносно php, perl и sh подсвечивал). Было где то начало 2000 -ых. Повезло — раньше чем увяз в своем коде помер комп, причем наглухо, исходники канули вместе с ним (там такие спагетти были, италия отдыхает). Зато на одном форсмажоре пришло и понимание бэкапов и систем версионного контроля и ООП чуть позже понял зачем нужен. А все вот так же — в собственном соку, без комьюнити, без волшебных пендалей и отеческих подзатыльников.
MacIn
Это как? Процедурщины тогда уж.
ErickSkrauch
github.com/mpak2/mpak.su/blob/master/modules/chat/all.php#L3-L5
На улице ведь 2016, я правильно ощущаю время?
mpakep
Вы нашли один из самых древних частей кода.
https://github.com/mpak2/mpak.su/commits/master/modules/chat/all.php
Экспериментов было много. Не все прижились, но следы от них все еще остаются.
ErickSkrauch
Увы, просто первые 5 секунд изучения репозитория вывели меня туда. Комментатор выше дал ссылку на точку входа, это первая секунда знакомства с проектом.
Я просто к чему это: если пишете код не модно, то не стоит публиковать это на всеобщее обозрение, иначе здесь вы не найдёте поддержки, а лишь отрицательные эмоции от критики (должен признать — по делу).
mbait
ErickSkrauch
Понятия «не современно» и «по-старому» очень растяжимы и не фиксируется во времени. Поэтому «не модно» отлично описывает реакцию сообщества на данный проект.
funnybanana
А я прекрасно понимаю автора, сам был таким лет 10 назад… к слову и код был примерно такой же…
Но в своё оправдание могу сказать что и php 5 с переработанными функциями ООП только вышла…
mysql_connectmysqli_connectdeniskreshikhin
Я бы посоветовал прогонять текст статьи перед публикацией через спелчекер, любой.
Mendel
Да, зашел в комментарии чтобы дать тот-же совет. Вот реально статью прочитать не смог, хотя велосипеды сам люблю.
Но никогда не поздно сделать это сейчас.
mpakep
Вы бы знали что мне пришлось сделать с собой чтобы вообще что то выдавить из себя. Как и любой другой технарь у меня проблема с попыткой что-то описать. Не смог изложить основную мысль. Но сам подобным велосипедом пользуюсь не один год, доволен как слон. А код потихоньку переписывается по мере того как в нем начинает что то сбоить или появляется необходимость дополнительного функционала.
yara_73
ivlis
Пожалуйста, не примазывайтесь. Что-то даже с этим предложением у вас не так.
mpakep
Это лишь доказывает мои слова.
lair
На самом деле, нет. Это доказывает, что проблемы у вас. У любого другого технаря таких проблем нет.
(заодно у вас проблемы с логикой)
MacIn
Кто ясно мыслит, тот ясно излагает.
hudson
>> что мне пришлось сделать с собой чтобы вообще что то выдавить из себя
И что, оно того стоило? )
mpakep
Нет. Не высказывать своего мнения оказалось целесообразнее.
Ohar
korniltsev
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
mpakep
Попробуйте лучше скопировать три файла и запустить на своем хостинге. Уверен вам понравится. Демка не работает уже пару лет как.
hudson
По демке встречают…
valera5505
А какой тогда смысл в такой демке? Тем более если вы знаете о том, что оно не работает. Может, стоит ее починить? Не каждому хочется что-то копировать и запускать. Ну или удалите ссылку вовсе, чтобы не было ложных ожиданий.
mmjurov
А может быть вам самим стоит скопировать три файла в демку? В статье сказано, что это очень просто сделать, и сайт обновится
mpakep
Есть особенность в ее работе. Демка без возможности изменение — бесполезна. А каждый второй наровит все поломать удалив нужные блоки или играясь с правами доступа к разделам. Систему с записью и постоянно работающую не получилось сделать. Так и стоит все время сломанная.
Borro
Сделайте, чтобы в кроне раз в 10 минут разворачивалась свежая копия и тогда не будет проблем в том, что каждый норовит сломать.
mpakep
Так и делал. Наверно это маркетинговое решение и было бы востребовано при активном продвижении. А так как сайты делаются по работе, родственникам и знакомым то и в самой демке необходимости нет. Тут больше будет полезным описания возможностей и решений до которых все руки не доходят. Если не сольют планирую радовать сообщество своими шедеврами. :)
boodda
развернуть у клиента..., бог мой, git clone или svn co уже давно решают. бд, sqllite -это выбор для пары мегабайт или 100 страниц, как я вижу вас? такие как вы делаете код только для того чтобы доить клиентов на поддержке вашего говна, для it сферы — вы инфекция, вы только тратите свое время и деньги клиентов
mpakep
То же самое пару лет назад мне говорили о mysql Однако как быстро меняется мир.
Перенести из одной бд в другую дело 15 минут. Речь только о целесообразности каждого решения для конкретной ситуации.
На большей части сайтов данные и занимают пару мегабайт. Вы же с экскаватором за червями не едите?
Mendel
Строго говоря только идея использовать sqllite и phar для простоты инсталяции в этом проекте и не вызывает критики :)
Есть большой пласт задач где этого достаточно. Так что Вы не правы. Всё остальное тут да, привет из 90-х. С этим не поспоришь.
hudson
Вот тут соглашусь, SQLite не так прост, как многие могут подумать. Для чего-то простого и не часто изменяемого, но всё-таки не статического, может быть очень даже в тему. Ну а phar это ну почти что jar. Для чего-то небольшого может быть очень удобно. В том числе для file-based CMS, например.
mpakep
Повторюсь — куда кинул там и работает.
Ситуация в которой вы можете просто закинуть файлы на хостинг и они будут работать не задумываясь о версии бд, хосте конфигах.
Кстати никто не заметил а тем не менее эта система совсем без конфигов. Точнее они там есть, но для данной бд достаточно дефолтного конфига который будет искать бд прямо в корне сайта.
https://github.com/mpak2/mpak.su/blob/master/include/config.php
Он лежит прямо в index.phar и заменить его мы можем положив по тому же пути файл в фс сайта.
mmjurov
Да тут просто полный набор антипаттернов… и транслитерация с русского в именах функций, и глобалки, отсутствие следования стандартам и много чего еще. В 21 веке так не делают.
Я не поленился, клонировал репозиторий, открыл его в IDE. Надеялся найти там что-то интересное, но… нет, увольте. Когда открываешь файл, длиной в 1600+ строк, и видишь там столько много буков, что они закрывают 95% экрана, желание копаться дальше испаряется.
hudson
Не совсем по теме поста, но про IDE и их проверки «по умолчанию»: как-то принимал проект на поддержку. Открываю самый толстый контроллер и IDE сообщает — есть ошибки. Использование не инициализированных переменных. Ну, думаю, если даже статический анализ такое показывает… то я в *опе… =) так и оказалось.
mpakep
php работает в режиме error_report(E_ALL) не представляю что вы там могли найти.
mmjurov
А вы прогоните свой код через любой статический анализатор кода и посмотрите. Хуже точно не будет
boodda
Это вы сейчас серьёзно? Мой бог но svn co и git clone знают все.
Sqllite это для 2 мб и 100 страниц текста, дальше будут тупняки.
Знаете как я вижу таких людей которые предлагают вот такие решения? Вы инфекция. Вы занимаетесь не своим делом. Все что вы делаете это тратите чужое время и деньги, внедряя тонны вот такого вот говна под видом отличной конфеты клиентам, которые не очень понимают в технологиях.
Горите в аду
mpakep
Вы видели как меняется лицо клиента когда вы начинаете ему обьяснять почему надо использовать git или svn или какую нибудь еще непонятную абривиатуру? Значете что они при любой возможности вам говорят? «Зачем не вся эта хрень?» Я вас также сейчас спрашиваю. Зачем все это если можно обойтись без этого? Про https://ru.wikipedia.org/wiki/Бритва_Оккама слышали что нибудь?
KriMs
Если вы не можете объяснить клиенту зачем, так может быть просто вы сами не знаете для чего это?
mpakep
Где нужно это используется. Но остается львиная часть проектов где я не буду настраивать git так как он там просто не нужен. Зачем система контроля версий в директории состоящей из трех файлов?
boodda
но если сделать хорошо будет не 3 файла. а больше и что вы там настраивать хотите не понятно.
yara_73
Зря вы так, настройка git репозитория не так уж и много времени занимает, а иногда очень долго можно искать куда пропали изменения.
mmjurov
Необходимость использования системы контроля версий не измеряется в количестве файлов. Есть люди, которые будут и один файл держать под версионным контролем, если это понадобится.
IncorrecTSW
Ну как минимум для
Mendel
Для контроля версий конечно да. Но тут спор начался о необходимости гит для _разворачивания проекта_. И тут надо признать логика у топикстартера имеется. При всем ужасе его кода и других ошибках — далеко не для каждого проекта уместно использовать гит для разворачивания. Если на хостинге нет доступа в консоль и гита, то это не повод отказываться от хостинга если у тебя сайт визитка…
mmjurov
А зачем вы заказчику вообще про git рассказываете? Вы ожидаете, что он начнет пользоваться инструментарием разработчиков, чтобы разворачивать свои сайты? Для чего козе баян?
Ну и вообще — ваш способ «простого» обновления сайта ничем не отличается от набора команды git pull или composer update. Ну или на худой конец можно и всю CMS в архив запаковать — сложность обновления то будет та же самая.
Только вот в итоге вы через какое-то время наткнетесь на другие грабли, которые не дадут вам так просто обновлять CMS с помощью копирования phar архика, поверьте.
Mendel
Подождите еще немножко и вас начнут микросервисами пугать :)
А если серьезно, то хоть народ и немножко перегибает с гитом и т.п., и действительно в мире где самым популярным CMS является вордпресс странно слышать что «гит знают все», но вы должны их понять — то КАК вы пишете это сравнимо с тем чтобы кучер из 18-ого века учил бы пилота Формулы-1 правильной езде. НА ЛОШОДЯХ НЕ ЕЗДЯТ. ТАК НЕ ПИШУТ. Спортивные клубы и ипподромы в другой стороне, как и хаб «ненормальное программирование». Это пхп, это бреинфак. Почитайте азы. DRY, SOLID, почитайте банду четырех… посмотрите что в 21-веке в тренде. Лучше всего найдите себе наставника. И будет вам счастье. Просто напишите тут, мол «чуваки, кто научит писать, а то я чёт неграмотный малёха». Вас пошлют сначала грамматику исправить в тексте, а потом и в нужны тексты ткнут…
boodda
php, sqllite, phar, копируй то, создай сё. чем лучше то, такие же непонятные слова. И не надо объяснять ничего клиенту, если он не понимает вас, говорите на его языке, «мы все сделаем за X дней, за Y денег, если не срочно сделаем скидку, если срочно накинете 50%, подвинем других ради вас.»
И с лицом вашего заказчика будет все в порядке, будет улыбка. Потому что ему вообще насрать, что у сайтом под капотом если работает.
Но что действительно от вас ожидает любой человек, который даёт вам деньги за что угодно? Ответственность.
Вот если вы продаёте это говно клиентам, я думаю если им захочется что то поменять и они найдут хорошего профессионала и посмотрит на то что было ДО… он скажет, прискорбно вам сообщать, но в прошлый раз под видом конфеты вам продали кусок говна, и теперь надо бы еще раз вложится и сделать хорошо. Что подумает о вас ваш клиент.… ЧТо вы очень плохая компания, а вам ответить будет нечего, вы просто скажете, да чел мы тебя поимели. извини бро, но это биз.
И я лично видел как за подобное натурально били в лицо.
mpakep
Плохой тот заказчик которому насрать что делают с его сайтом. В худшем случае он спрашивает что вы там делаете а в лучшем хранит файловую систему файла на флешке и имеет инструкцию что с этим делать если вас вдруг собьет автомобиль. А профессионалов уже мы все насмотрелись которые вместо того чтобы сделать что то работающее проводят эксперименты с новомодной технологией а потом другие за них пытаются разобраться что они там сделали. Не раз приходилось переделывать за студентами их практическую работу про которую они забывают как только получают свой зачет.
boodda
но ваша система и есть практическая работа студента, в которой никто кроме вас не разберется быстро, а когда разберется найдёт кучу багов, которые надо править, и вот он денежно-временной континнум клиента, которго поставят перед выбором, платить дальше и смириться с текущей системой или опять заплатить за новое решение.
Mendel
Хуже. Тут другая крайность — тут не эксперементальные технологии, которые случайно могут и выгореть и стать стандартом и т.п. Тут отставание от твердого стандарта лет на 10. И отставание с каждым днем будет еще больше. Так что тут намного хуже чем эксперементы с технологиями.)
mpakep
В свое (лет цать назад) я как и большая чатсть из нас писал подобие бд работая напрямую с файлами. Плох тот программист который не пытался это сделать. Если я вернусь к прямой работе с файлами это отставание от твердого стандарта? Пусть будет так. Повторюсь эксперименты давайте оставим студентам а работать будет со старыми зарекомендовавшимися технологиями. Для меня sqlite это старые добрые файлы теплые, ламповые. Давно мечтал работать с чем то подобным.
Mendel
ДА пожалуйста. Пусть будет sqlite3, почему бы и нет? (кстати обращаю внимание — я не зря указываю тройку)
Вас ведь в основном не за это макают. А за методы «чуть» больше 20 строк. За отстутствие стандарта кодирования как класса (черт, я сам этим грешу, в проекте уже за сотню классов а всё никак не вычищу ляпы с именованием классов и т.п., но у вас каша которая коробит даже меня.
Отсутствие внятной структуры, стиля, мешанина экспериментов, «ой, это у меня от прошлого десятилетия осталось», отстутствие тестов… да вообще отсутствие всего без чего выкладывать код стыдно. Черт, у меня намного лучше код, но я тупо стесняюсь его на публику выкладывать. А тут такая непосредственность)
А потом еще и приправленная «ой, это демка, я ее сто лет не обновлял, это ерунда, пусть глючит», и «та пофиг на грамматические ошибки и опечатки в тексте, мне его вычитывать лень, пусть лучше сотня человек покоробится читая это, чем мне править..» и после этого вы такой «ой, меня за sqlite3 ругают»… да может половина бы и поругала за него, может и согласилась бы что ваше решение имеет право на жизнь, если бы это было основным спорным моментом… Но тут ВСЁ ужасно :)
mpakep
Убейте в себе перфикциониста. Перфекционизм — зло. Я выложил то, что работает а оно не всегда красиво. Как раз то, что годами не выгребается и есть то, что не глючит. То, что глючит первым делом выгребается. Что именно показалось вам особо ужасным? Синтаксис? Я тоже вроде не первый год пишу код и мне это кажется достаточно удобным и понятным. Извините если наши вкусы различаются.
mmjurov
Вам однозначно нужен наставник. Если вы уже не первый год пишете такой код, и к Вам не приходит понимание того, что так делать нельзя, то что-то Вы делаете не так, ИМХО. И перфекционизм тут ни при чем.
mpakep
Есть хорошее высказывание умных людей по этому поводу. Насколько помню звучит оно примерно так.
95% обратной связи — полная лажа. Но из за оставшихся 5% стоит ее читать.
И есть еще одна 95 процентов людей идиоты. На данном ресурсе их меньше, но все равно процент достаточно велик.
Не удивляюсь что не все понимают того о чем я написал.
Мне нужны единомышленники. Я знаю что я делаю и для чего.
mmjurov
Ок, я умываю руки из этой ветки, а то так на личности перейдем. Мне не о чем с Вами больше разговаривать, если Вы ставите свое мнение выше мнения других, более опытных коллег, и никак не пытаетесь прислушаться к нему. Вы не понимаете их, они не понимают Вас. Успехов Вам с поиском таких же, как Вы, их еще очень много… к сожалению.
mpakep
Не в коем случае. Скорее у нас разные опыт, методики, цели, решения, инструменты, жизненные позиции. Так уж повелось что люди разные. Для этого и разговариваем чтобы найти точки соприкосновения.
kolyaflash
А я всё же перейду на личности.
Во первых, говнокод — не методика, не цель и не решение. Жизненная позиция — возможно.
Людям с такими мыслями в голове, какие вы тут озвучиваете — просто нельзя давать писать код. От ваших действий страдают люди, понимаете?
Мне недавно не повезло столкнуться с чем-то похожим на то, что вы тут представили. И совсем небольшие изменения вылились для заказчика большим счётом, а для меня нервами и временем ковыряния в г**. И так будет с каждым последующим изменением на том сайте.
Не рассказывайте ничего про перфекционизм. Вам до него далеко. И вам никто ничего не говорит про «красоту» и «синтаксис». Речь про то, что если сайт «запускается» — это ещё не значит, что вы выполнили свою задачу, всё хорошо и всё остальное — лишнее.
Вам действительно либо нужен наставник, либо я лично хотел бы вас попросить не делать работу для клиентов.
saintbyte
Блин, люди вам говорят правду, сравните код с код использования фреймворков. вы написали кучу сырых SQL запросов и хотите чтоб это было переносимо на другую базу, вы написали массу кода и хотите чтоб он был хорошо отлаживаемый. Надо писать модуль чтоб он был хорош для одной задачи и использовать и использовать его в дальнейшем. Если вас смущает влияние автолоадинга в пхп на производительность, то более чем 30 млсек мне не удавалось выиграть сливание всех файлов в один большой в случае например с ЗендФреймоворком версии 1.10.
Mendel
Это не вкусы. Это PSR-2.
Я думаю сообщество мне простило бы то что у меня имена классов начинаются с маленькой буквы а открывающая скобка методов не с новой строки. Если бы общая идея показалась бы интересной, то думаю что простили бы и то, что в некоторых местах (в некоторых!) у меня методы доходят вплоть до 30 строк.
Но я не буду выкладывать такое просто потому что например у меня нет описаний половины методов, а это уже непростительно. И описывая и подправляя какие-то другие вещи — заодно исправлю и меньшие ляпы.
Ваш код нечитаем. Работать с ним невозможно. Нет, вру. Можно. Вчера партнеру объяснял почему мы отказываемся от заказов требующих опенкарт, хотя я и некоторые другие разрабы в команде его отлично знаем. Мой ответ был простой — задача которая на нормальном коде занимает 15 минут, там займет несколько часов. Если я сделаю это за 15 минут, то клиенту это будет стоить как 15 минут моего времени. Исполнитель под опенкарт сделает ту же задачу скажем за 5 часов. При цене часа в 5 раз ниже моего это будет в 4 раза дороже чем мои 15 минут.
НО дело даже не в этом.
В вашем коде наверняка есть куча ошибок. Как собственно и в моем и в любом другом.
Но я могу дать почитать мой код коллегам. А вы не можете.
Если мы оба выложим его в опенсорс, то мой код будут читать и присылать мне пулреквесты, а ваш не будут читать. Только использовать. Нет будут. Но только новички вроде вас.
Эта проблема кумулятивно ухудшает код с каждым днем.
mpakep
Вызможно я пру против системы, но именно это работает. То, что не имеет узких мести где ломаться просто нечему. Платят за то, что работает а не за вечную разработку. Это работает уже долгие годы без сбоев. Тут нет слабых мест. В этом и мысль всего поста. В этих 269 строках кода я уверен больше чем в любой другой программулине. Знаю что кроме варнингов тут просто появиться нечему. А чтобы sqlite солмать надо очень сильно попотеть. В отличает от mysql который валится при любом не верно внесенном изменении в конфигурацию или недостаточных правах доступа к логам или еще сто пятьсот причин. Не подумайте не правильно большая часть у меня все еще стоит на mysql но при любой возможности я готов от него отказаться в угоду таких простых решений как sqlite
lair
Один простой вопрос: кто, кроме вас, сможет (и, что важно, захочет) это поддерживать?
lair
Я считаю, это просто прекрасно.
mpakep
Как в свое время написал Линус Торвальдс в своих первых сообщениях о Линуксе:
Я сомневаюсь что это когда до будет поддерживать что то кроме файловой системы.
Я тоже сомневаюсь, что это кто то когда то будет поддерживать.
lair
И при этом от сайта зависит миллионный бизнес? От сайта, который не может поддерживать никто, кроме одного человека?
Janom
А что? Не плохо! Сделай себя незаменимым)
lair
Ну так, непрофессиональненько.
mpakep
Знаете когда заказчику насрать? Когда это ничего не стоит. Когда от сайта зависит миллионный бизнес вы даже чиха не сможете сделать с сайтом без дополнительного описания что вы там сделали, создания таска и согласования с парой прямых начальников. Когда от ваших действий, если вы что то сделаете не так с сотню человек в компании рискует остаться без входящих звонков и конверсия на пару недель свалиться на один процент вы невольно начнете задумываться что бы еще удалить с этого зоопарка технологий чтобы не дай бог что то не сбойнуло.
mmjurov
Вряд ли вам придется создавать сайты для миллионного бизнеса вот на таком движке.
«Зоопарк» технологий, как вы говорите, разводят не для того, чтобы систему намеренно усложнить, а как раз таки наоборот. Каждая технология в миллионном проекте предназначена для решения своей задачи
И если кто-то бездумно ввел какую-то технологию в проект необоснованно, а потом не может с этой технологией справиться, то заказчик явно нанял неадекватного подрядчика, и ему нужен аудитор, который быстро такого исполнителя забракует
Delphinum
Это вы к тому, что на вашем решении держится миллионный бизнес?
mpakep
В рублях конечно, не в долларах. Хотя оборот уже наверно в долларах.
Сайты уже точно исчисляются сотнями. Возможно за тысячу.
Не на sqlite конечно. Его я еще буду какое то время тестировать перед внедрением.
facha
Можете ссылку дать на какие-нибудь сайты с этой смс?
kingpin
Не хотите самостоятельно администрировать БД, купите разделяемый хостинг — стоит-то копейки, как одна булочка в месяц.
А вообще вы ведь не настраиваете для своего сайта новую среду выполнения каждый день. Резервирование всех популярных серверов реляционных баз данных сегодня выполняется парой строчек в кроне.
mpakep
Вопрос наверно в выборе удобных для себя инструментов. Я уже надминистрировался и баз данных и юникс серверов, хочется что то попроще. Сложности хороши для тренировки ума. Для реально работающих проектов нужно что то простое и отказоустойчевое, с легким вхождением и удобным администрированием. Возможно вы еще не натренировались в этих кроссвордах вас все еще привлекают ситуации с созданием сложностей и успешным их преодолением. Тренеруйтесь, что можно сказать.
kingpin
При всей «лёгкости вхождения» и «удобстве администрирования» SQLite не подходит для большинства сайтов размером больше дюжины-другой страниц.
Причина простая: каждый раз, когда клиент обращается к вашему сайту, сервер приложений (если таковой имеется) должен отправить запрос к БД и получить из неё данные. Клиент-серверные СУБД справляются с этой задачей на ура, производя различные оптимизации и храня выбранные недавно данные (блоки, страницы) в памяти (кэш буферов).
SQLite при каждом запросе к БД будет запускать новый процесс и читать одни и те же данные в память, — крайне накладно с точки зрения расходования ресурсов ЦП, ОЗУ, дисковой подсистемы — и со временем (по мере роста объёма данных в БД) вам потребуется либо вертикальное масштабирование произвести (покупка мощного ЦП, SSD и т. д.), влекущее дополнительные траты, либо задействовать кэширование (вроде memcached), что сильно усложнит приложение.
Ваши конкуренты тем временем будут использовать MySQL или PostgreSQL и в ус не дуть длительное время, пока нагрузка действительно не станет большой (миллионы запросов в сутки).
Mendel
Строго говоря сайт с посещалкой в тысячу уников, с тысячей страниц, грамотной архитектурой и кешированием (да в ту же базу, просто чтобы не плодить много запросов за страницу), да такой где динамического контента нет, изменения в базу делает только админ, а пользователи только читают, инвалидаторы написаны грамотно — такой сайт будет прекрасно себя чувствовать на самом дешевом хостинге и с SQLite. Если бы мы увидели нормальную визитницу с MVC, PSR-2 и т.п., засунутую в phar и sqlite3 то я бы слова не сказал бы. Может даже на вооружение взял бы. Но под капотом то ад адовый. Неподдерживаемый код, в котором 90% что куча дыр которые никто не вскрыл просто потому что пока никому не нужно было… супер.
kingpin
Верный кандидат на реазиацию с использованием генератора статических сайтов (Jekyll, Sphynx, metalsmith и т. д.) — в БД вообще отпадает необходимость.
mpakep
Не забывайте речь идет о базе в несколько десятков мегобайт. Подобный размер бд давно уже влезет в оперативу без остатков не требуя не то что оптимизации а простого обращения к файловой системе. Речь об удобстве использования. Если появится хоть одна причина для переезда на другую бд это стоит сделать.
Mendel
Вся база в десяток мб влезает в ОЗУ и поэтому мы ее сделаем файловой? Ой!
При том что я тут один из немногих кто защищает вашу идею с sqlite3 — я даже не возьмусь объяснять всю прелесть вашей мысли)
Хотя чего там — шаредхостинг, сотня юзеров онлайн…
mpakep
Любая бд файловая. Хранить данные в ДНК еще не научились. Вопрос в том, что мы ничего кроме файлов не пользуем. Выкидываем кучу ненужных промежуточных элементов таких как порты, права доступа, логи, пользователи, сервисы, демоны дам кучу всего. Концепция куда кинул там и работает. На 99 процентов хостингов закинул в директорию и все работает. Это ли не прекрасно?
kingpin
Перед тем как привести несколько доводов против SQLite для динамических сайтов почитал про механизм резервного копирования на официальном сайте.
Т. е. чтобы не допустить ситуации, когда резервное копирование стартует снова и снова (потому что внешний процесс что-то захотел записать в БД) или вовсе не может завершиться, наше приложение не должно использовать больше одного соединения с базой SQLite. Т. о. если клиентов много, операция резервного копирования может заметно ухудшить производительность сайта или создать потенциальную угрозу выполнения атаки отказа в обслуживании даже при небольшом количестве одновременных запросов.
В других СУБД используется совершенно иная модель резервного копирования, в которой применяется журнал воспроизведения (журнал транзакций) — БД всегда доступна для записи и чтения, и выполнять резервное копирование можно в любое время без прерывания процесса.
А ещё в SQLite, похоже, нельзя делать инкрементальное резервное копирование — копировать только изменения, а не базу данных целиком.
Кроме того было бы интересно узнать, как топикстартер реализовал бы защиту данных, например. В MySQL, PostgreSQL, Oracle Database, SQL Server такое сделать несложно имеющимися средствами, и это работает надёжно.
mpakep
Уверен в sqlite куча недостатков. Но при приемлемом количестве плюсов и минусов сам sqlite может быть достаточно приемлемым для использования. Это как маяк к которому на мой субьективный взгляд должна стремиться вся it индустия. Не создавая монстров а делая что то простое и понятное. Давайте следить вместе за этим решением резко отрицаьельных отзывов я еще не встречал. При некоторых очевидных плюсах общее мнение о данной бд вполне положительное.
kingpin
Речь не о том, плохая или хорошая SQLite. Речь, очевидно, о том, что этот инструмент подходит для встраиваемых систем, в которых отсутствует конкурентность, но для динамических веб-сайтов SQLite явно не подойдёт по большому ряду причин. Для встраиваемых систем, для небольших БД на клиентской стороне (в браузере, например) — отличное, гибкое, нетребовательное к ресурсам системы решение. Для динамических сайтов размером больше дюжины страниц и с большим количеством запросов SQLite не подходит хотя бы в силу отсутствия масштабируемости.
mpakep
Предлагаю все-таки приводить доводы основанные на опыте. Из того что я читал разработчики sqlite достаточно грамотно подходят к своему делу. Верю что можно сделать достаточно хорошее решение. А подходит или не подходит лучше утверждать на цифрах. При таком количестве решение приемлемо, при большем — не подходит. Границы приемлемости данного решения еще не понятны. Будем тестировать.
Fractalzombie
Предложите фейсбуку перейти на sqlite
mpakep
sqlite это такие же файлы с которыми и сейчас идет работа. Вопрос не в названии а насколько надежно и удобно это сумели реализовать разработчики. Если подходить строго — любая другая бд использует у же самую файловую систему. Так в чем разница? В том что у sqlite реализовал другой подход он выкинул часть элементов которые посчитал ненужными. Веб сервер баз данных, сокеты возможно что то еще.
Но мы ведь не раз сталкивались с ситуацией когда приходят ребята и применим новый подход упрощают старую устоявшуюся как казалось вещь и она работает лучше. Пример тот же git кто бы мог подумать до его появления что можно без сервера обойтись в системе контроля версий? Пришли сделали и у всех глаза открылись что сервер в SVN был слабым звеном оставшимся в качестве наследия от предыдущих поколений разработчиков. Или bitcoin который переворачивает финансы. Мир платежей делистя на две части до биткоина и после. Также и тут. Все ресурсы на которых работает sqlite те же что и у любой другой бд это оперативная память, файловая система и операционная система. В вот подходя у них разные. Так почему вы утверждаете что одно заведомо хуже другого? И кто сказал что в ближайшее время это не изменится?
lair
Вы серьезно не понимаете, в чем разница между in-process БД (особенно в контексте веб-сервера, поднимающего процесс на каждый запрос), и БД в собственном процессе?
То-то вы github используете.
Потому что есть очевидные вещи, связанные с (а) кэшированием и (б) управлением конкурентным доступом, которые будут явно отличаться у самостоятельной СУБД и СУБД-в-запросе.
Delphinum
Нет, разница в том, что SQLite писался под одни задачи, а, к примеру, PostgreSQL под другие. Тобишь авторы этого решения не взяли PostgreSQL, удалили из него все лишнее и получили SQLite. Они изначально знали, какими функциями и органичениями должна обладать их СУБД, и разрабатывали в этом контексте.
Mendel
Нечто новое… отбрасывающее старое… и противопоставляющее себя старому… делающее иначе… ведь так как все — никому не нужно. Так вы это видите да?
А ведь я уже несколько раз вас носом мокнул в цифру 3. Мокну еще раз. Помимо sqlite3 есть еще sqlite4. Да ее стадия развития «немножко» другая. Но тем не менее. Не говорите за людей то чего они не говорили и не думали. Я серьезно считаю, что для бесплатных визиток и прочей мелочи — sqlite3 хороший выбор. Как и phar. Но вы несете такую ересь, что спорить с вашими оппонентами просто нет возможности)
lair
И что будет, если логика работы подменяемого файла изменится с выходом новой версии вашего движка?
Аналогичный вопрос: а что будет, если вам надо изменить структуру БД?
И да, что там у SQLite с параллельными обращениями? Например, если администратору захочется поменять десяток-другой страниц быстренько?
mpakep
Если надо менять структуру — она меняется. К примеру тут
https://github.com/mpak2/mpak.su/blob/master/index.php#L118
Логика работы уже не меняется лет пять. Не представляю ситуации чтобы она поменялась в дальнейшем.
С sqlite небольшой опыт работы. Все решения до этого момента были с mysql но в sqlite вижу определенные перспективы, поэтому решил попробовать. Будет положительный или отрицательный опыт обязательно поделюсь.
lair
А что в этот момент происходит с другими частями, которые используют эту таблицу?
Это всего лишь значит, что вы пять лет никуда не развиваетесь. Тогда и обновляться незачем, чего уж.
А, то есть вы предлагаете решение, о работоспособности которого вы даже не знаете?
mpakep
Так как обновление идет одним файлов index.phar там уже идут все измененные части для новой структуры. А про пользовательские разделы система ничего не знает они расположены в файловой системе сайта и их система никогда не трогает. Их может поменять только сам разработчик. Это не совсем готовая цмс — скорее набор инструментов которыми можно реализовать практически любую логику. Создав новый модуль мы получаем новый раздел в админке со своей структурой бд, пространством имен и директорией со скриптами и шаблонами. По умолчанию устанавливаются только пять разделов от которых зависит работа самой системы.
Блоки, Модули, Пользователи, Настройки и СЕО раздел отвечающий за адресацию. То, что используется независимо от сайта. Дальше список функционала расширяется индивидуально исходя их требований сайта.
lair
Я не про пользовательские разделы, я про описанное вами изменение работы системы.
… и как этот модуль поддерживать? На него же теперь не распространяется описанная вами простота-обновления-одним-файлом.
А что будет, если модуль использует функциональность, которую вы решили поменять?
mpakep
Нет никакой функциональности. В адресе вы используете имя раздела и файла. А php файлы и шаблоны подключаются обычным инклюдом с небольшой обработкой. Все, что будут работать при обычном инклюде будет работать если положите это в директорию со своим модулем. Адресация тоже простая «http://имя-сайта.рф/имя-раздела: файл» есть еще адресация которая тоже подминяется, но на скрипты внутри раздела это никак не сказывается. Права доступа обрабатываются системой. Выдача 404 ошибки, динамическая генерация тайтлов и дескрипшнов все это система. Есть четкая грань между работой системы и скриптами раздела. Но эта грань очень четкая и никогда не пересекается. Модуль не берет на себя работу системы а система ничего не знает о том, что делает модуль.
lair
Тогда зачем нужна ваша система, если она не дает никакой функциональности?
mpakep
А что будет, если модуль использует функциональность, которую вы решили поменять?
Нет функциональности которую можно было бы поменять. А функциональность самой системы я ниже описал.
Права доступа к скриптам, проверка стурктуры кодов, подсказка путей до шаблонов, учет посетителей история, Функциональность системы очень большая.
lair
То есть каждый модуль сам, как хочет, обращается в БД? Сам, как хочет, управляет своими правами? Использует свои и только свои способы отображения данных?
Delphinum
А что умеет предлагаемая CMS?
mpakep
Легче сказать что она не умеет. Все задачи, которые ставятся мне в рамках разработки и продвижения решаются в рамках данной системы.
Я планирую время от времени подкидывать описания основных возможностей системы. Если меня конечно не сольют.
mpakep
Предлагаю хабросообществу тест. Есть сайт на котором я проводил последние изменения. Я изменил пароль администратора на admin admin в нутри в админке видно кто находится на сайте. Пишется каждоая сессия реферер, ip, заголовок браузера, количество посещенных страниц также все боты и метрики. Войти в админку можно здесь.
http://phar.mpak.su/admin
Список сессий можно посмотреть тут http://phar.mpak.su/sess:admin/r:mp_sess
Проверим сразу на хабронагрузке.
lair
А говорите — нечему ломаться.
mpakep
Я только что доделал этот блок. Его надо было добавить в админку. По умолчанию он там не стоит.
lair
Это много говорит о качестве того, что вы выкладываете — и как вы это делаете.
mpakep
У кода есть один существенный код — он работает.
lair
Ну, я своими глазами видел, что не работает. И ниже еще один замечательный скриншот.
koceg
Блин, я вот прочитал все комментарии до этого момента и этот меня добил. Вы же реально не понимаете, что вам люди говорят…
Как можно говорить, что ваш код работает в ветке, где описан пример того, как он не работает… И, я уверен, это только один из огромного множества примеров.
То, что вы пока не столкнулись с серьёзными проблемами в вашем коде, не значит, что их там нет. Это лишь значит, что у вас, возможно, неадекватное определение серьёзности (ну array посетителей… и ладно, ничего страшного, не упало же ничего). Ну а отсутствие тестов вообще не позволяет вам делать никаких категоричных заявлений. Выше вот показали, что статический анализ IDE нашёл в вашем коде минимум 5 серьёзных ошибок.
И всё это не имеет никакого отношения к «играм» «студентов» с «новыми технологиями»…
Блин, вот зачем я всё это писал, я же видел, как вы на комментарии реагируете…
otykh
можно еще примерчик работы и неломательности?
joxi.ru/J2bNXagI4bXJ82
roman_gemini
Что же вы на парня так все накинулись?) А вдруг он скоро напишет, например, убийцу Битрикса, которую все люто поносят, но от этого она не становится менее популятной и востребованой на рынке)
Delphinum
Я утром уже написал убийцу Битрикса. Потом спустил воду…
SerDIDG
Не знаю, что я сделал, но как-то так. http://screencloud.net/v/oDo2
PS. Обновил скриншот.
otykh
http://joxi.ru/brREnpzUQDJboA
Mendel
admin/admin не подходит. Но это ладно. Мне никаких сообщений не выводит.
Пустая форма тоже не показывает ошибок мол нет логина, неверный пароль и.тп.
SerafimArts
<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). В чём причина переписывать это?
Велосипеды — это конечно хорошо, но делать их надо в разумных пределах.
mpakep
Это не мой код. Я бы не стал писать ничего похожего. Код был взял с откуда то с форума.
И если посмотрите скрипт который собирает phar архив то данный кусок кода в него не входит
https://github.com/mpak2/mpak.su/blob/master/phar/mpak.php#L31
lair
Если этот код входит в ваше решение — то вы за него отвечаете, вне зависимости от того, откуда вы его взяли. Если не входит — что он делает в репозитории?
mpakep
Он входит в портальную систему, но не входит в фар архив. Я вам показал скрипт по которому он собирается. В репозитории есть несколько скриптов и файлов которые несут администраторскую функцию. Обязуюсь разобраться с этим скриптом в ближайшее время. И удалить его если он нигде не используется. Спасибо вам за бдительность.
lair
О, то есть помимо решения из одного файла, которое вы предлагаете, есть еще и какая-то "портальная система" с "администраторской функцией"? И как это соотносится друг с другом?
mpakep
Там много чего есть. Быстрая установка это лишь конкретное решение. До этого все работало на mysql и без фара.
Немного доработав получилось удачное решение для быстрой установки. Его описание и представил в статье.
lair
То есть то решение, которое, по вашим словам, давно работает у ваших заказчиков — это не то же, которое вы здесь предлагаете?
mpakep
Зацените такую шткуту, является моей разработкой и ничего подобного я не видел в других системах
Если авторизоваться администратором, система показывает файл из которого выводится верстка
< !-- Начало: 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 — >
Сделал специально для вертальщика, так как возникали сложности с поиском файлов верстки
SerafimArts
Laravel 5+:
3 строчки кода для реализации функционала. А ещё проще посмотреть в дебагбаре, который ставится двумя строчками.
lair
В asp.net MVC это делается тривиально.
valera5505
Возможно, я немного не понял вашу концепцию. Вы изобрели шаблонизирование?
mpakep
Не совсем. Это попытка сделать мир проще.
Концепция состоит в следующем. На любой хостинг в директорию вы закидываете три файла и все.
Заходите на сайт и все работает. Это немного упрощает работу с установкой, резервным копированием и исправлением ошибки в случае поломки сайта. У вас нет конфигурационных файлов — они не нужны. Вы можете запустить сайт на хостинге в случае ограниченного количества mysql баз данных более того вам человеку разварачивающего сайт не требуется каких то специальных знаний о базах данных то, без чего сегодня вы не установите ни один сайт.
Сайт превращается в аналог ексель документа который открть можно на любом компьютере. Требования к его инфраструктуре сокращаются на порядок.
lair
Вот прямо на любой хостинг?
А вообще, в современном мире, внезапно, можно вообще ничего не "закидывать на хостинг", а просто открыть эккаунт на одном из десятков сайтоконструкторов и получить сайт.
SerafimArts
Нет конечно, на 99% хостингах оно просто не заработает, напрмер из-за
<?
в качестве открывающего тега, вместо стандартного<?php
.Mendel
На 99% таки заработает. Его специально отключать надо. В PSR оно запрещено из соображений что МОЖНО отключить. А <?= отключить УЖЕ нельзя, так что его приняли. Но замечание да, в тему.
SerafimArts
И действительно:
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 назад встречал скрипты с шорт-тегами, которые запускал, так что в этом плане уверенно отстал от жизни.
Mendel
И на практике на дюжине хостингов ни разу такие скрипты проблем не доставляли.
Да, рекомендуют во избежание редких проблем запрещать, если оно реально не нужно.
Но на практике чаще бывает что клиент использует шорты чем проблемы от шортов. А шаредхостинги стандартно под массового клиента заточены.
Я реально пока с полгода назад на эту тему не подискутировал с SamDark где-то, был в твердом заблуждении что у этих шорт такая же судьба как у <?= и они уже везде стандартно есть и всё такое, и запрет на них анахронизм который приходится поддерживать ради совместимости со стандартами кодирования. СамДарк меня просвятил тогда что это не так, а благодаря Вашей ссылки я теперь знаю почему они так делают)
alexkbs
Default Value может быть какой угодно, но ниже написано что
short_open_tag = Off
Практически пример: устанавливаете Debian stable, подключаете PHP…
<? echo "Hi"; ?>
уже не работает. То есть, чтобы заработало нужно явно дописывать конфиг.Mendel
Ок, с этим в принципе соглашусь, но в практическом смысле — везде работает.
Хостеры нарушают рекомендации потому что клиенты нарушают, а клиенты нарушают потому что «ну работает же, чего бы и не использовать?»
mpakep
Или вот еще. Система проверяет вложенность тегов друг в друга прямо на сайте
И при нарушении вложенности тегов в друг друга выводится сообщение
Показывает путь до файла с нарушенной версткой а также последний тег на котором найден сбой.
http://phar.mpak.su/pages:test Учитывается вложенность php тегов друг в друга
Fedcomp
haml спасёт этот мир.
igor-petrov
Ого, сколько комментов накатали. Пробегитесь глазами по комментам автора, это же просто троллинг.
Mendel
На хабре сейчас неделя однофайловых фреймворков. Если бы он был один такой, я бы поверил что это троллинг. Но нет, он всерьез)
mpakep
Возможно это то, что всех беспокоит. Боль которая ждет когда ее решат?
kolyaflash
Нет.
mpakep
Позволю себе процитировать чужие слова
Людям нет никакого смысла иметь дома компьютер – Кен Олсон, президент, председатель и основатель Digital Equipment Corporation (DEC), в своей речи, данной на встрече общества World Future Society в 1977 году в Бостоне
lair
И — в отношении некоторых людей — он полностью прав.
mpakep
Если бы вам задать тот же вопрос сегодня вы ответили бы также?
Время идет, а мнение некоторых людей на вещи не меняется. Может в этом проблема?
lair
А какой вопрос был задан?
Проблема обычно в том, что люди не хотят думать и развиваться.
MatSkywalker
Осталось сделать Telegram бота, который будет создавать сайты.
DeLuxis
Каждый РНР программист должен написать свою СМS. :P
vlreshet
https://github.com/mpak2/mpak.su/blob/master/index.php, строка 119: }else{ pre(«Ошибка обработки ошибки», $error); };
А что если возникнет ошибка обработки ошибки обработки ошибки? ;)
Nicklasos
Возможно стоит посоветовать www.phptherightway.com
И книгу Head First Design Patterns.
SerafimArts
Как показывает практика — большинство таких советов игнорируется в лоб, ну или отклоняется с аргументацией "Эти рекомендации никому не нужны, надо писать код, а не чистоту разводить", ну или "Мой код всё равно быстрее (
<irony>на 0.00001</irony>
) вашего работает", ну и так далее. Будет чудом, если эта ссылка действительно поможет автору выбраться из "зоны его комфорта".P.S. mpakep — по ссылке выше написаны действительно полезные вещи, крайне рекомендую всё же постараться ознакомиться. Если возникнут вопросы — с удовольствием готов ответить (и не только я) на Тостере.
yara_73
Мне кажется это банальный хабра-суицид с элементами толстого троллинга, но если это все серьезно, тогда стоило бы переживать за будущее этого человека в IT.
SerafimArts
P.P.S Nicklasos Ванга мод: https://habrahabr.ru/post/283166/#comment_8890198 Отговорки почти те же, что я и перечислил.
MetaDone
https://github.com/mpak2/mpak.su/blob/master/index.php#L15 о великий Ктулху, что это?
и это в ту же кучу
Вообще обожаю упоротые посты про самописные cms, особенно когда люди вместо того, чтоб взять и установить большую часть через composer долго, упорно и коряво делают свою реализацию, при этом забивая болт на PSR и юнит-тесты, смешивая запросы к базе или обертки над этим с логикой, в особо запущенных случаях не используют неймспейсы, и свято веруют, что такой подход вознаградит хорошей скоростью, быстротой разработки и тем, что запустить можно будет везде.
OlegLustenko
Сколько коммитов :)
Все реально
mpakep
Года три назад я работал в одной из студий. И там установил их разработку себе на четырехядерный комп. После первый минут работы заметил что система серьезно притормаживает, при этом приходилось после каждого изменения чистить кеш так как без кеширования одна страница в однопользовательском режиме отображалась еще дольше от 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
ds_pro
От ваших выводов становится только смешней.
Ваша cms это ужасный и недокументированный код, который кое как работает.
600 человек в сутки))))))
lair
Вот только вы не можете ответить на банальные вопросы "действительно ли везде работает", "насколько быстро быстро" и "сколько стоит это поддерживать".
Вы, кажется, не знаете, что такое хабраэффект.
lair
(del)
Mendel
Вы забыли про безглючность :)
То что при объемах меньше 10к в сутки смотрят только на колво трафика в тарифе, и ни о какой производительности речь не идет — это понятно. Самое веселое что человек ВСЕРЬЕЗ считает что оно «нагрузку» ВЫДЕРЖАЛО.
lair
Для меня "безглючность" включена в "сколько стоит поддерживать".
mpakep
В том что оно запустилось и работает вы уже не сомневаетесь? Так смотришь и кто сопровождать будет найдется. Окно Овертона открывается…
lair
Define "работает".
roman_gemini
Вы можете выложить ссылки на проекты, сделанные на вашем движке?
roman_gemini
Первый нашел — http://специальный.рф/ )
lair
… ну и я там, не напрягаясь, влетел в ошибку.
lair
http://специальный.рф/admin
Сайт в продакшне. С аутентификацией на формах. Без https.
Ага.
Mendel
Я правильно понимаю что это сплог/дорвей?
Mendel
Я не сомневаюсь что оно НЕ работает.
Эпл в качестве MVP использует металические/пластиковые болванки. Они тоже «работают».
Но если я не смог авторизоваться и при этом не получил сообщений об ошибках, а люди увидели кучу ошибок пхп в браузере, то это не более чем пруф оф концепт. И да, lair лучше я возьму пауерпоинт чем такое :)
xotey83
601 посетитель — это мелочи. Можно сказать, что трафа совсем и не было.
Для сравнения: top.mail.ru/visits?id=152591 — проект «недвижимость» у мейлрушечки, написан на PHP с использование фрейворка (не собственного, а «нормального»), 100--200 тысяч визитов в сутки, а хитов от полумиллиона. И это не самый нагруженный сайт.
(з.ы. я не работаю в этом проекте)
Попробуйте, всё-таки, потестировать ab'шкой? Если ваш сайт выдержит хотя бы 1050 хитов за полчаса (50 тысяч в сутки) с конкурентностью не менее пяти, то признаю, что ваше решение годное.
Mendel
Так он и 600 не выдержал. Критерий «выдержал» это отсутствие глюков.
mpakep
До полноценного годного решения этому еще далеко. Я выше писал что буду ставить на выборочные проекты в качестве теста. Мне интересна была сама возможность работы подобных систем.
lair
Тогда на основании чего вы говорите, что оно "работает"?
Mendel
Я думаю обоснование простое:
MacIn
Это на каком языке?
xotey83
Basic
MacIn
В Бейские нет завершения строки в виде точки с запятой, особенно в старье, требующем let и нумерации строк.
Я чисто из любопытства спросил — может, просто малоизвестный вариант.
Mendel
Да, бейсик, бейсик. Скорее всего моя ошибка. Хотя может и было где-то.
Hayate
Может автор тролль всё же? Наткнулся на забавную репу и от лица автора здесь всех троллит. Предлагаю автору сделать коммит с текстом про хабрхабр, если коммита не будет, предлагаю считать автора троллем.
roman_gemini
Та не. Месседжы к коммитам зацени. Тот же стиль :)
MetaDone
кем бы ни был настоящий автор — его творения уже растащили
http://govnokod.ru/19969
http://govnokod.ru/19971
MacIn
Чувствую, затравят автора. Чем дальше, тем больше пустой желчи и меньше дела.
Hayate
Ну автор по делу тоже не особо отвечает.
mpakep
Травители… :)
Hayate
Может вы чужое творчество себе присвоили и троллите здесь всех?
mpakep
Кто то упорно пытается подобрать инжекцию
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|||
MetaDone
http://phar.mpak.su/pages:admin/r:mp_pages_cat/p:1
нашли чем гордиться)
Mendel
Чувак, я нашел твое призвание. Тебе нужно обфускатором работать.)
А по теме «меня ломают» — XSRF вроде как. Правда могу ошибаться, там что-то страшное возле формы пряталось, я испугался и решил дальше не смотреть…
mpakep
Дайте я попробую задать вопрос. Вот к примеру выше собеседник поместил кусок кода в говнокод. Речь об этом http://govnokod.ru/19971
Хотел бы спросить сколько людей из вас понимают что в нем делается. Реально интересно знать сколько таких. Напишите свои версии.
yara_73
Я бы уволился из компании с подобным кодом, да и видно, что неумение выразить свои мысли в письменной речи передается в код. Извините за грубость.
Mendel
Эм…
Походу тут нужно использовать «модную технологию» для расшифровки — гадание на картах Карно.
Иначе эту обфускацию не прочитать.
lair
А вы правда не понимаете, что то, что по коду нельзя понять, что в нем делается — это недостаток кода?
Я вот не понимаю, что делается в вашем коде. Нет, если мне понадобится, я разберусь, конечно — только зачем?
t_kanstantsin
В этом и вся проблема, что таких, кто бы разобрался в этом куске кода — единицы. Особенно ради интереса, а не по рабочей задаче. Именно поэтому столько людей писали о паттернах, psr и многом другом.
То, что Вы, автор, разбираетесь в том, что там написано, не говорит о Вас, как о профессионале своего дела — просто Вы потратили N часов на его разработку и M часов — на поддежрку. А новый человек в этом даже не захочет разбираться.
Mendel
Да! Ключевое слово — не захочет!
Есть простой способ понять говнокод — переписать его.
Разрезаем на кусочки, делаем вспомогательные методы и тп.
Говнокод сохраняется, но проявляется структура.
Вот только зачем?
roman_gemini
Вот что получилось — https://gist.github.com/pldin601/a441ffacaeec6c43e0ff3830c12bab77
Чтобы прочитать и понять Ваш код мне пришлось сделать его более линейным. Из того, что я понял за 30 минут, могу сказать, что в Вашем коде делаются очень разные вещи). Я тоже любитель писать свои велосипеды. Примерно так я начинал писать свои первые проекты. Но у меня небыло каких-то особых убеждений и я часто все переписывал с нуля поэтому с каждым разом код становился все проще и проще. У Вас, видимо, это первый крупный проект поэтому Вы им так гордитесь. Я когда-то в школе года 2 писал «убийцу WinAmp'а». Мне тогда казалось это гениальным. Что не функция то — шедевр))
mpakep
Каждый раз сообщая ошибку к примеру в строке 63 ваш код будет продолжать работать. А это не нужно чтобы происходило.
Выход тут тоже не уместен так как все работа скрипта должна дойти до конца. То, что вы сделали это не то что требовалось
На каждом увовне не зря стоит иф. Он проверяет условия для дальнейшей работы и при невыполнении выдает ошибку.
Сейчас вы не сделали его понятнее. Вы его испортили. Он не будет работать. Попробуете еще раз?
lair
О, у нас началось обсуждение того, что "требовалось". А где требования? Или хотя бы тесты, по которым можно определить требования?
roman_gemini
В таком случае return после mpre. Я предположил что Ваша функция mpre использует исключения для выброса ошибок.
О каком конце идет речь? В Вашем коде здесь http://govnokod.ru/19971 после отработки крайнего блока else ничего нет.
Я же делал это не для того чтобы Вам угодить, а чтобы попытаться разобраться. Спортивный интерес.
Пробовать дальше не интересно :)
lair
Более того, мы же понимаем, что для имитации "нужного" поведения достаточно завернуть всю эту бороду в одну функцию и делать
return
из нее. Что там после нее вызывает скрипт — не наше дело.mpakep
То есть небольшое отклонение от шаблонов и никто не способен понять что здесь написано.
Так кто находится в зоне комфорта? Кому надо выбраться из нее и попробовать разобраться в том, что не соответствует его шаблонам?
Ведь проще всего крикнуть что говно то, в чем я не разобрался. Если написано не по книжке которую я прочитал последней или используя другой подход не как тот к которому привык. Зачем мне разбираться? Я и без этого знаю что это все говнокод!
Судя по комментариям у людей проблема восприятия того, где больше трех ифов. С такими темпами мы придем к проблеме восприятия того, где больше двадцати строк. Вы действительно правы. Поддерживать у вас это не получится. Для этого надо приложить усилия и разобраться в том, что здесь написано. А это судя по всему неподъемная для некоторых задача.
Задумайтесь. Думающие люди в обществе пяти идиотов становятся изгоями. Идиоты просто лайкать будут только то, до чего дотягивается их умишко. Все что им не под силу будут отвергать как слишком сложное. Я не стану тратить N часов чтобы разобраться в этом. Патерн — оторвать бумажку, подтереться. Рулон закончился — разрыв патерна. Это к вопросу о 95 процентов населения. Извините что редко пишу. Нет возможности это делать чаще. Похоже для среднестатистического населения то, о чем говорю также трудно для восприятия как и код в котором вы так и не смогли разобраться.
SerafimArts
Разобраться можно, только это рутина и требует довольно много времени. Другой вопрос — зачем так писать, чтобы в этом, для того, чтобы понять — требуется тратить столько времени? ;)
Для примера:
Неужели вот такую "модную штуку" — сложнее написать ради того, чтобы сторонний читатель сразу понял что обозначают эти условия?
SerafimArts
P.S. Избавление от переносов строк (некоторых, мы же не хотим лишать полностью код читаемости?) и пробелов во всём вашем коде — добавит элитарности, да такой, что в нём начнут разбираться и "выходить из зоны комфорта" ещё меньше людей. Как же вы раньше до этого не додумались? Смотрите как здорово! https://gist.github.com/SerafimArts/2bc70b28c086552057d1831ffb47bff6
Если вы не поняли что написано в файле "после", то у вас "проблемы восприятия кода, где больше трёх ифов (с)"
Hayate
И в экран намного лучше помещается.
Delphinum
Естественно это мы такие хилые программисты, что даже не можем понять вашего 11 лвлного вложения if'ов.
Hayate
Вынужден вас расстроить, если вы не троллите, но в зоне комфорта находитесь как раз к сожалению вы. И вызовы вы ищете не в том месте.
MetaDone
Почитайте статью по ссылке. Как говорил дядюшка Фаулер, «Любой дурак может написать код, понятный компьютеру. Хорошие программисты пишут код, понятный людям.». Неужели вы, когда писали подобное, ни разу не подумали, что где-то повернули не туда и что можно было сделать проще или просто понятнее?
Mendel
Еще раз повторю, как для олигофренов:
час моего времени стоит 25$.
я присылаю свой код знакомому с ценой часа в 50$ с просьбой оценить.
Он посмотрел код за 15 минут, подсказал ошибку и посоветовал оптимизацию.
Ему не сложно, ведь вчера я ему подсказал репозиторий morozovsk чем сэкономил ему пару дней которые он бы писал сервер сам. Я сэкономило время ему потому, что можно за 15 минут вдумчиво изучить документацию и еще за 15 минут изучить код. И принять решение что в случае чего его можно поддерживать самому. После чего мой знакомый форкнул репу, и «завтра» сделает пару пулреквестов с теми фичами которых ему не хватало.
«Послезавтра» мне тоже понадобится вебосет-сервер, тоже с теми фичами что сейчас понадобились моему знакомому, и я получу уже готовый код.
Все в выигрыше. Это и есть современная мода которая вам так не нравится.
А что предлагаете вы? Вы предлагаете потратить 5-10 часов на чтение кода который делает тоже самое что делал мой код который можно прочитать за 15 минут. При этом заранее известно что найденные после этого ошибки исправляться не будут, потому что ни одной названной вам здесь ошибки вы даже не признали, не то чтобы исправить. Вопрос — зачем?
Нет, некоторые тут читают ваш говнокод из спортивного интереса. Некоторые чтобы показать другим, поржать. Другие чтобы тыкать носом в это Г. учеников, чтобы те поняли почему их заставляют писать грамотно…
Черт, это же как нужно нас неуважать, чтобы самому лениться разбивать код по 20 строк и до трех уровней вложенности (большего от вас и не ждут), а ожидать что КАЖДЫЙ кто прочитал это — будет расшифровывать вашу лапшу…
lair
Не "не способен", а "не хочет тратить время".
Ну да, я нахожусь в зоне комфорта. И, что характерно, горжусь и доволен тем фактом, что я работаю в зоне комфорта. А что, должно быть иначе?
Да в том-то и дело, что не надо. Кому было настолько интересно — те пошли, посидели и разобрались, но никому это не надо — потому что, к счастью, практически никому не надо по работе иметь дело с таким кодом.
Именно. Зачем?
Ну да, объем воображаемого стека в голове у людей ограничен. Для вас это новость? У вас он тоже ограничен.
Вы не понимаете простой вещи: любой хороший программист может написать код, подобный вашему. Не будет, потому что его учили (или он сам научился) так не делать, но может. Но вот можете ли вы написать хорошо структурированный и читаемый (в терминах МакКоннела) код?
Mendel
Я видимо плохой программист. Я не могу писать такой влажный (wet) и нечитаемый код. Хотя гены говнокода во мне живут прочно, но мне не хватит усидчивости на ТАКОЕ количество абсолютно бесполезной работы.
Вот реально не могу. Сейчас сижу и прокрастинирую тут, когда нужно заставить себя и писать подобный говнокод чтобы закончить очередной проект с адским легаси, и в очередной раз поклястся себе что «да больше никогда, и ни за какие деньги я таких заказов не возьму»… Ну да ладно, побольше воздуха в легкие, начинаю погружение в фекалии) Ушел работать…
lair
… это как раз называется "не хочу". Но это уже вопрос философский.
MacIn
Вы не поняли. Вам предъявили претензию, что ваш код — говнокод по форме, а не по содержанию. Про суть никто ничего не говорил, потому что до нее не добраться.
mpakep
Единственная претензия к коду в том, что у него больше трех иф подряд. Верно?
Как мы выяснили выше никто даже не пытался понять что в нем делается.
Каких то других требований тоже не прозвучало.
Для того чтобы назвать любой код говнокодом достаточно чтобы он был больше десяти строк. Это слишком сложно и разбираться что в нем происходит просто не обязательно. 95% людей не могут разобраться в коде и это достаточный повод для плевка в его сторону. Для себя я сделал вывод. Никто так и не смог даже предположить что там делается. А единственный кто попытался переделать не учел его функциональны особенности. Остальные считают выше своего достоинства разбираться в этом (или не могут так как относятся к 95% населения) скорее последнее.
lair
Нет, неверно.
mpakep
Главное не пытайтесь понять что он делает. Вам же это не нужно. Вы и без этого легко отличаете говнокод от кашерного. Дайте угадаю — вы ищите знакомые буквы. Если не находите — он слишком сложный. Если есть знакомые — все равно не читаете. Или считаете количество строк если знаете столько цифр нормально, нет — афтор что-то намудрил. Или лучше подкиньте монетку. Главное не читайте код. Вы выше этого.
Представьте — вы доказываете 223 комента что код говно и все это время один человек в него заглянул.
Это достижение. 223 коммента умничать не зная даже о чем говоришь.
Лайр, держитесь до последнего. Напишите еще пятьдесят комментов что мне нужно изменить в себе чтобы вы соизволили разобраться в предмете разговора. Извините, что я вывожу вас из зоны комфорта, заставляю разбираться в этом жутко большом количестве условий.
lair
Ну да, если по коду нельзя понять, что он делает — значит, скорее всего, это говнокод. Если код использует присвоения внутри
if
(и вообще присвоения внутри выражений) — то это тоже, скорее всего, говнокод. Если код использует глобальные переменные без необходимости — это говнокод. Можно продолжать, в принципе.Прекрасно, а теперь докажите это утверждение.
roman_gemini
Очень часто используется присвоения внутри выражений. Например:
while ($file = readdir($dir));
while ($row = $pdo->fetch());
Но как и везде — главное не злоупотреблять этим.
Mendel
В идеале не делать так вообще. Это и анализаторам усложнение и человеку сложнее.
Все мы регулярно плодим технический долг, и я не грамнаци, но я за то, чтобы человек четко понимал что это — технический долг. Не топикстартер конечно, это невозможно)
roman_gemini
А как бы Вы написали этот блок?
while ($row = $pdo->fetch()) {
doSomething($row)
}
Допустим, нужно обработать все записи в таблице, и известно, что записей несколько миллионов.
Mendel
Или я еще не проснулся, или
roman_gemini
Проверил — так и есть.
Mendel
Угу. Только в документации на пхп.нет все равно пишут с присвоением.
Правда там акцентируют внимание на другой ошибке, и просят не забывать делать так:
Но я всё равно считаю что это попахивает, поэтому завернул бы это в какой-то врапер и спрятал с глаз долой. А во врапере так бы и писал да. Выкручивать наизнанку было бы лень.
roman_gemini
Документация PHP — отдельный разговор. Отсюда наверное и появляются подобные велосипеды. :)
lair
Ну вот потому я и написал "скорее всего". Впрочем, если этого можно избежать, я препочту избежать.
Mendel
Ну избежать то всегда можно. Просто иногда это неоправданно усложняет код.
Как и любой технический долг — пользуйтесь, но осторожно.
MetaDone
Вы, кажется, даже не понимаете суть претензий к Вашему коду. Одно дело, когда код сложный из-за сложности предметной области того, что в этом коде реализовано, к примеру расчет какой-либо сложной траектории, расчета расстояния по широте и долготе и т.п… Но ваш код сложный не из-за заумных алгоритмов, не из-за того, что он специфичен для какой-то области, а из-за кривых рук его автора.
Можете привести пример того, как вписать в вашу систему вход через разные соцсети? Или bbcode? Вы говорите, что ваш код решает задачу, но как видно из скрина, что я присылал раньше, он и с ограниченными задачами не справляется.
Эффект Даннинга — Крюгера когда-нибудь пройдет.
Mendel
Общаясь с вами я медитирую…
Я смотрю на очередной ваш комментарий… когда вылажу из выгребной ямы кода написанного таким же талантом как ты. Вдохнуть свежего воздуха. Я читаю то что здесь написано… вдыхаю, выдыхаю. А потом все проклятия и маты которые звучат в моей голове, и уже были переправлены с автора говношедевра с которым я работаю на вас — мысленно провожу рефакторинг текста. Чтобы без мата. Без оскорблений.
Без эпитетов. И отправляю.
Там то я даже переписать почеловечески то что правлю не могу. VQMOD!
А в тюрьме ужин. Макароны.А рядом открыт другой проект. Который я в перекурах таки дописываю. Там нет дедлайна. Но нет и дерьма. И «внычку» от партнера и своей совести которые кричат «не трогай! добей это дерьмо, сдай, забудь, и всё!» — «внычку» я пишу то что было начато еще осенью. Ведь надо сдать. И вижу как в перерывах. В перекурах (ведь я не курю, а значит имею право потратить время в свое удовольствие, на нормальный код). Растет нормальный проект. Я трачу на него единицы процентов времени, в сравнении со вторым. Говнистым. Но функционал растет на порядок быстрее.А еще я делаю в перерывах то, что вам и не снилось — я делаю рефакторинг. Сокращаю размеры уже написанных и работающих методов. Исправляю и дополняю описания. Перемещаю куски кода в более подходящие классы. Это доставляет почти физическое удовольствие после копания в дерьме на подобии вашего кода…
roman_gemini
У меня сейчас один из проектов похож по описанию на ваш) Но после получения десятка новых задач по нему я понял что это практически невыполнимо. Хоть и сайт довольно простой по функционалу. Но это не сопоставимо с усилиями, которые надо было прилагать чтобы въехать в код и придумать решение на том же уровне. Но мне удалось убедить заказчика что нужно отрефакторить сайт весь.
Delphinum
Вы хотите чтоб у нас глаза вытекли? )
Идеи, заложенные в вашем коде слишком сложны для нас, простых сметрых. Я долго пытался постичь смысл этого кода http://govnokod.ru/19971 но мой друг, сказал что он похож на кулак ( С этими словами я решил закончить изучение, так как живот уже сводили судороги.
Hayate
Скорее на фак.
MacIn
Нет. Код написан так, что для его понимания нужно потратить слишком много времени. Именно поэтому его назвали говнокодом, как бы ни было вам обидно за это. У каждого человека есть определенное кол-во предметов, которое он может удержать в кратковременной памяти и оперировать ими всеми сразу. Это кол-во ограничено, у вас тоже. Другое дело, что поскольку вы написали этот код, некоторые части его выступают для вас одним целым, поэтому вы можете им оперировать. Человек со стороны — нет.
И не потому что он дурак, а вы умница. Потому что вы свой код уже знаете.
Проблема не только во вложенности; в длинных условиях, в том, что код в экран не вмещается по горизонтали, в расстановке фигурных скобок. Все это делает код плохо читаемым.
Нет. Код может быть замечательным и даже при 1000 строк, при правильном разбиении. Ваш — нет.
Нет, 95% не имеют мотивации, чтобы в нем разобраться. Потому что это трудно. Не сложно; трудно. Заплатите любому из этих 95% — почти наверняка, если сумма достаточна, он разберется. Но копаться в этом фарше просто так — не, спасибо.
Вы подводите людей к деревенскому сортиру и предлагаете посмотреть, какое сокровище лежит на дне. Притом, это может быть действительно сокровище, но это ясно только с ваших слов. Теперь любого, кто отказался нырять, вы называете неумехой, входящим в 95%. Именно из-за такого подхода и «упаковки» ваш код отнесли к говнокоду.
Люди не не могут, а не хотят.
roman_gemini
Мне интересно, а как Вы сами себе представляете ответ на этот впрос?
На вскидку,
Поиск пустых значений в массиве используя
array_diff_key
иarray_filter
— довольно оригинально…barker
Не, ну заканчивайте. Видно же, что автор просто угарает)
Наверное…
Mendel
Можно подумать что в начале 90-х вы писали более читабельный код чем у автора.
Но тогда не было гитхаба. Коммиты свежие, кода много. Так что говнокод аутентичный.
Версию о том, что может кто-то нашел чужой код и троллит тут рассматривали.
Бритва Оккама — если автор этого кода существует, то троль тут лишняя сущность.
Ники совпадают.
Автор делал какие-то правки на доменах совпадающих с ником, и читал оттуда логи…
Вероятность фейка конечно сохраняется, но она очень уж мизерна.
roman_gemini
https://www.youtube.com/watch?v=oRbtiySesfQ
Представляю как он про фреймворки рассказывает, паттерны и т.д)
Hayate
Это идеалити.
dozent
Что вы к нему пристали, пускай пишет человек как хочет, это же его личные проекты, ему в них разбираться. Единственная просьба к автору: не ходите в IT компании работать, поберегите нервы коллег [да вас и не возьмут]
P.S. все-таки надеюсь, что автор тролль и ловит просто тонны позитива, смотря на то, что делается в комментах