Предлагаю помериться... Человеко-часами

D
На сайте с 31.01.2017
Offline
15
#101

silicoid, вы не поняли, он обернут в ссылку и должен остаться как есть - ссылкой с текстом со скобочками.

Если это перенести на html код, то мы увидим такую <<<ссылку>>>. Ситуация не частая, но встречается. А ссылки по задаче трогать нельзя.

[Удален]
#102
mendel:
Это типа вот так?
Создать форму (в шаблоне):

<?=view('widget/form',$model);?>

Получить из POST и сразу проверить на валидность всех полей:

$model = s()->post->getModel('feedback');

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

if(!$model->isNew() AND $model->isValid()) {
$model->save();
redirect(['index:index']);
} else {
$page->model = $model;
$page->show();
}

9 строк, задача чуть пошире чем у вас.
3 минуты на написание, и что самое главное -задача уже решена. В стандартном контроллере. Нужно просто указать нужный контроллер. Ни одной строки.
А вот если нужно кастомизировать. Сделать красивый дизайн и т.п. Тут уже может и несколько часов возникнуть. особенно с выяснениями потребностей клиента).

заинтересовался. Жду ваше такое супер-мгновенное решение. Правда очень интересно.

Вот та самая форма:

jpg 2.jpg
[Удален]
#103
Aisamiery:
Тут уже совсем что то монстроузорное получается ))) Пойду в общем работать :)
Да надо было распарсивать теги а не просто их сносить)))

Это всё делалось под что-то совсем конкретное и сиюминутное.

- Сносим всё через жадность

- Оставляем тег а

- Оставляем тег /а

10 мин.

---------- Добавлено 18.02.2017 в 01:14 ----------

mendel:
Это типа вот так?
Создать форму (в шаблоне):

<?=view('widget/form',$model);?>

Получить из POST и сразу проверить на валидность всех полей:

$model = s()->post->getModel('feedback');

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

if(!$model->isNew() AND $model->isValid()) {
$model->save();
redirect(['index:index']);
} else {
$page->model = $model;
$page->show();
}

9 строк, задача чуть пошире чем у вас.
3 минуты на написание, и что самое главное -задача уже решена. В стандартном контроллере. Нужно просто указать нужный контроллер. Ни одной строки.
А вот если нужно кастомизировать. Сделать красивый дизайн и т.п. Тут уже может и несколько часов возникнуть. особенно с выяснениями потребностей клиента).

А может вам просто нравиться создавать формы? Тогда вот:

http://slushat-radio.ru/node/20

http://slushat-radio.ru/node/4

Делается быстро. Мышкой. Всё в базе и всё проверяется. Приходит письмо. В админке Можно посмотреть результаты.

Там ещё куча настроек.

[Удален]
#104
Sly32:
за 30 минут разверну на хостинге Debian, в нем php7, python3, nginx php-fpm uwsgi supervisor virtualenvrappwer mysql postrgesq, установлю, пару сайтов на laravel, wordpress, django, можно еще форум на Xenforo

Но за бакс в час я не работаю)

За рабочий день - 8 час.

могу сделать не менее 50 тыс. сайтов +

проставить ссылки на них.

Что превышает боевую скорострельность автомата

Калашникова очередями:

Скорострельность АК-74

выстрелов/мин: 40 (боевая одиночными)

100 (боевая очередями)

~600 (техническая)[2]

100 выстрелов в мин. х 60 мин. х 8 час. = 48000

Превысить техническую скорострельность АК тоже можно.

600 выстрелов в мин. х 60 мин. х 8 час. = 288000

300 тыс. сайтов тоже реально сделать за 8 час,

но это без перерыва на обед если, но с перекурами..🤪

mendel
На сайте с 06.03.2008
Offline
232
#105
miltorg:
заинтересовался. Жду ваше такое супер-мгновенное решение. Правда очень интересно.
Вот та самая форма:

Ну вот пример формы выдаваемой этим кодом.

Закладки, валидаторы, подсказки, загрузка/удаление картинок и прочих файлов, вставка их в редактор (редактор прилагается) или в поле картинки (тут картинка для заставки), в поле даты сразу календарик выпадает чтобы проще было (отображен на картинке). Названия полей и подсказки естественно в языковых файлах. Форма сразу с токеном от XSRF.

В принципе я конечно слегка слукавил. Чтобы форма работала нужны еще два файлика (или точнее две записи в двух файликах) - описание полей и их текстовые названия.

В данном случае это что-то вроде


'news' => [ '#parent' => 'defaultPage',
'rules' => [ 'default' => [ 'type' => ['string',['defaultSave','value'=>'news']],
'route' => ['string',['defaultSave','value'=>'news:view']],
'showDate' =>['virtual',['defaultCopy','field'=>'created']]
],
],
'blocks' => [ 'default' => [ 'default' => ['title','preview','article','thumb','folder','created'],
'seo' => ['metatitle','breadtitle','menutitle','metadesc','slug'],
'slider' => ['needslider','slidertitle','slidertext','sliderimg'],
'admin' => ['parent_id','updated'],
],
],
],

и


'model/news' => [ '#parent' =>'model/defaultPage',
'#self' => 'Новость',
],

Что тоже небольшое лукавство, ведь у меня уже есть базовые модельки страниц, описанные вот так:


'defaultPage' => [ '#parent' => 'basicPage',
'rules' => [ 'default' => [ 'folder' => ['hidden','randId'],
// 'archive' => ['boolean'],
'needmenu' => ['boolean'],
//
'title' => [['string', 'maxlen'=>120],'required',['unique','fields'=>['parent_id']]],
'metatitle' => [['string', 'maxlen'=>120],['defaultCopy','field'=>'title']],
'breadtitle' => [['string', 'maxlen'=>60],['defaultCopyStrict','field'=>'title', 'maxlen'=>60]],
'menutitle' => [['string', 'maxlen'=>60],['defaultCopyStrict','field'=>'title', 'maxlen'=>60]],
'article' => [['article', 'maxlen'=>60000]],
'preview' => [['text', 'maxlen'=>500],['defaultCopyStrict','field'=>'article', 'maxlen'=>500]],
'metadesc' => [['text', 'maxlen'=>250],['defaultCopyStrict','field'=>'article', 'maxlen'=>250]],
'thumb' => [['string', 'maxlen'=>120],'img',['defaultModelField','modelName'=>'skinReg@skinReg','fieldName'=>'defaultThumb']],
'style' => ['string'],
//
'needslider' => ['boolean'],
'slidertitle' => [['string', 'maxlen'=>120]],
'slidertext' => [['text', 'maxlen'=>500]],
'sliderimg' => [['string', 'maxlen'=>120],'img'],
],
],
],

ну и русские описания:


'model/defaultPage' => [ '#parent' =>'model/abstractFormModel',
'#self' => 'Default страница',
'seo#Tab'=>'SEO-поля',
'slider#Tab'=>'Слайдер',
'admin#Tab'=>'Системные поля (не трогать)',

'id' => '№',
'id#help' => 'ID записи',
'parent_id' => 'Родитель',
'parent_id#help' => 'Родитель',
'type' => 'Тип',
'type#help' => 'Тип (моделька страницы)',
'route' => 'Роут',
'created' => 'Дата создания',
'created#help' => 'Дата создания',
'updated' => 'Дата изменения',
'updated#help' => 'Дата изменения',
'thumb' => 'Картинка для заставки',
'thumb#help' => 'Картинка для заставки',
'slug' => 'ЧПУ',
'slug#help' => 'ЧПУ',
'title' => 'Заголовок',
'title#help' => 'Заголовок',
'metatitle' => 'Заголовок (meta)',
'metatitle#help' => 'Метатег title',
'breadtitle' => 'Хлебные крошки',
'breadtitle#help' => 'Хлебные крошки (заголвок в навигационном меню)',
'menutitle' => 'Заголовок меню',
'menutitle#help' => 'Заголовок меню',
'article' => 'Текст статьи',
'article#help' => 'Текст статьи',
'preview' => 'Краткое описание',
'preview#help' => 'Краткое описание',
'metadesc' => 'meta description',
'metadesc#help' => 'meta description',
'needmenu' => 'Выводить в меню',
'needmenu#help' => 'Выводить в меню',
'style'=>'Стиль',
'style#help'=>'Обычно класс стиля в админке, иногда что-то еще..',

'needslider' => 'Выводить на слайдере',
'needslider#help' => 'Выводить на слайдере',
'slidertitle' => 'Заголовок слайдера',
'slidertitle#help' => 'Заголовок слайдера',
'slidertext' => 'Текст слайдера',
'slidertext#help' => 'Текст слайдера',
'sliderimg' => 'Для слайдера',
'sliderimg#help' => 'Для слайдера',
],

Но лукавство действительно небольшое, ведь

а) всё это давно уже сделано и переиспользуется повторно, лишь в пару кликов меняется то что отличается.

б) в принципе это данные а не код, и да, могут создаваться кликами мышки, просто мне пока удобнее это писать в коде.

И да, код у меня 100% мой (за исключением фронт-энд библиотек вроде бутстрапа и сугубо частных случаев вроде PhpMailer-а), так что когда приведете код "той самой формы" которую делаете за 30 строк, то не хвастайтесь чужими фреймворками. Хотя если вы можете сделать тоже самое с помощью чужого фреймворка то вы молодец, и вырастете в моих глазах).

png miltorg.png
Шутку любишь над Фомой, так люби и над собой. (с) народ. Бесплатные списки читабельных(!) свободных доменов (http://burzhu.net/showthread.php?t=2976) (5L.com) Сайты, All inclusive. 5* (/ru/forum/962215)
mendel
На сайте с 06.03.2008
Offline
232
#106

Да, подумал вот.

Если уж меряться, то давайте более приближенную к реальности задачку.

Ну вот к примеру.

Тут говорят опять один движок взломали? Ну вот давайте по мотивам.

Сделаем "антивирус Милторга". Примитивненько.

Но условно-полезно.

30 строк на пхп5.6 (да, уже не поддерживается, только секьюритификсы, но большинство еще не переехали на пхп7), без инклюдов, библиотек, без подключений нестандартных модулей (тех которые надо подключать), т.е. только то, что работает по умолчанию типа SPL, fopen и т.п.

Одна строка - одна управляющая конструкция или функция, т.е.

$x = foo(

new StdClass,

bar($y,$z)

);

Присвоение в вызове или цикле - отдельная строка. Исключение for, если это что-то вроде $i++.

Комментарии, закрывающие скобки (круглые, фигурные квадратные) - за строку не считаются. Объявление класса и функции/метода - за строку не считаются поскольку их вызов в другом месте это уже строка, а стимулировать говнокод не хочется.

else - строка, да.

Каждое присвоение отдельная строка, т.е. $foo=$bar=0; не катит.

Инициализация переменных равно как объявление переменных класса, констант - строка.

Если что-то не учел - действуют следующие правила:

1 - если вопрос влияет на мой результат, то выбирается худший для меня вариант,

2 - если вопрос влияет на результат Милторга, то выбирается лучший для Милторга вариант,

3 - если вопрос не влияет на мой результат, то как считать решаю я,

4 - если возникло разночтение по счету строк, то вносится уточнение в правила подсчета сразу после обнаружения разночтения.

Код не должен содержать подавления вывода ошибок. Код не должен вызывать никаких ошибок, нотисов и т.п. включая депрекейтет и т.п.

Ну и задача. Для затравки.

===

В 30 строк написать класс или набор функций для проверки целостности файлов на сайте. Сообщаем некие настройки вроде пути что проверять, сообщаем где хранится информация о "эталонном" содержимом, возможно другие полезные данные, например сигнатуры эвристики (регулярки можно!), получаем изменившиеся, новые и/или подозрительные файлы.

Три основных функции - создать файл-эталон (инкрементарным предпочтение), быстрая проверка, медленная проверка.

ПС: сам еще не писал. 30 строк как ориентир, 31 или 9 строк тоже пойдут).

[Удален]
#107
mendel:
Ну вот пример формы выдаваемой этим кодом.
Закладки, валидаторы, подсказки, загрузка/удаление картинок и прочих файлов, вставка их в редактор (редактор прилагается) или в поле картинки (тут картинка для заставки), в поле даты сразу календарик выпадает чтобы проще было (отображен на картинке). Названия полей и подсказки естественно в языковых файлах. Форма сразу с токеном от XSRF.
В принципе я конечно слегка слукавил. Чтобы форма работала нужны еще два файлика (или

Дальнейшее общение с вами считаю не целесообразным.

mendel
На сайте с 06.03.2008
Offline
232
#108
miltorg:
Дальнейшее общение с вами считаю не целесообразным.

Слив засчитан.

А так то у меня вместо ваших 30 строк было девять.

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

Тут их побольше.

А так то все ждут ваш код на 30 строк для "той самой" формы. ;)

А так то оно понятно.

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

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

S
На сайте с 23.05.2004
Offline
315
#109

Вот у индусов, чем больше строк кода - тем больше зарплата. А вы тут себе на 1 евро в час насокращали. Даже голодный индус работать за такое не будет :)

Это просто подпись.
[Удален]
#110
Stek:
Вот у индусов, чем больше строк кода - тем больше зарплата. А вы тут себе на 1 евро в час насокращали. Даже голодный индус работать за такое не будет :)

http://gooper.ru/aziya/indiya

У индуса зарплата 500 баксов - 30 тысяч рублей

У нас - 20 тысяч. Я бы даже сказал что 15 тысяч.

Индусы знают английский. А меня учили в стране с "самым лучшем в мире образованием" - я английский не знаю.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий